[geographiclib] 01/05: Imported Upstream version 1.43

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Sat May 23 13:14:45 UTC 2015


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

sebastic pushed a commit to branch master
in repository geographiclib.

commit 820c926ff544df9aa72bb520c4f7fbb54351707b
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sat May 23 14:32:50 2015 +0200

    Imported Upstream version 1.43
---
 00README.txt                                       |     2 +-
 AUTHORS                                            |     2 +-
 CMakeLists.txt                                     |    34 +-
 NEWS                                               |    77 +-
 cmake/CMakeLists.txt                               |     2 +
 configure                                          |    28 +-
 configure.ac                                       |    10 +-
 doc/GeographicLib.dox.in                           |   394 +-
 doc/geodesic-c.dox                                 |    12 +-
 doc/geodesic-for.dox                               |    12 +-
 doc/scripts/GeographicLib/DMS.js                   |     1 -
 doc/scripts/GeographicLib/Geodesic.js              |   388 +-
 doc/scripts/GeographicLib/GeodesicLine.js          |    54 +-
 doc/scripts/GeographicLib/Interface.js             |    24 +-
 doc/scripts/GeographicLib/Math.js                  |    19 +
 doc/scripts/GeographicLib/PolygonArea.js           |     2 +-
 doc/scripts/geod-calc.html                         |     2 +-
 dotnet/NETGeographicLib/DMS.h                      |     5 +-
 dotnet/NETGeographicLib/Geodesic.h                 |    23 +-
 dotnet/NETGeographicLib/GeodesicExact.h            |    25 +-
 dotnet/NETGeographicLib/GeodesicLine.h             |    23 +-
 dotnet/NETGeographicLib/GeodesicLineExact.h        |    25 +-
 dotnet/NETGeographicLib/Rhumb.h                    |    48 +-
 examples/GeoidToGTX.cpp                            |     6 +-
 include/GeographicLib/Config.h                     |     4 +-
 include/GeographicLib/DMS.hpp                      |     8 +-
 include/GeographicLib/Geocentric.hpp               |     3 -
 include/GeographicLib/Geodesic.hpp                 |    29 +-
 include/GeographicLib/GeodesicExact.hpp            |    28 +-
 include/GeographicLib/GeodesicLine.hpp             |    25 +-
 include/GeographicLib/GeodesicLineExact.hpp        |    25 +-
 include/GeographicLib/Geoid.hpp                    |    13 +-
 include/GeographicLib/GravityModel.hpp             |     8 +-
 include/GeographicLib/MGRS.hpp                     |    28 +-
 include/GeographicLib/MagneticCircle.hpp           |    30 +-
 include/GeographicLib/MagneticModel.hpp            |    10 +-
 include/GeographicLib/Math.hpp                     |    24 +-
 include/GeographicLib/PolygonArea.hpp              |     2 +-
 include/GeographicLib/Rhumb.hpp                    |    65 +-
 include/GeographicLib/SphericalHarmonic.hpp        |    10 +-
 include/GeographicLib/SphericalHarmonic1.hpp       |     5 +-
 include/GeographicLib/SphericalHarmonic2.hpp       |     5 +-
 java/direct/pom.xml                                |     4 +-
 java/inverse/pom.xml                               |     4 +-
 java/planimeter/pom.xml                            |     4 +-
 java/pom.xml                                       |     2 +-
 .../main/java/net/sf/geographiclib/GeoMath.java    |    40 +
 .../main/java/net/sf/geographiclib/Geodesic.java   |   376 +-
 .../java/net/sf/geographiclib/GeodesicLine.java    |    42 +-
 .../java/net/sf/geographiclib/GeodesicMask.java    |    13 +-
 .../java/net/sf/geographiclib/PolygonArea.java     |     2 +-
 .../java/net/sf/geographiclib/package-info.java    |    27 +-
 legacy/C/geodesic.c                                |   378 +-
 legacy/C/geodesic.h                                |    44 +-
 legacy/Fortran/geodesic.for                        |   398 +-
 man/CartConvert.1                                  |     2 +-
 man/CartConvert.usage                              |     2 +-
 man/ConicProj.1                                    |     2 +-
 man/ConicProj.usage                                |     2 +-
 man/GeoConvert.1                                   |     2 +-
 man/GeoConvert.usage                               |     2 +-
 man/GeodSolve.1                                    |    11 +-
 man/GeodSolve.1.html                               |     8 +-
 man/GeodSolve.pod                                  |    10 +-
 man/GeodSolve.usage                                |    16 +-
 man/GeodesicProj.1                                 |     2 +-
 man/GeodesicProj.usage                             |     2 +-
 man/GeoidEval.1                                    |    19 +-
 man/GeoidEval.1.html                               |     8 +-
 man/GeoidEval.pod                                  |    17 +-
 man/GeoidEval.usage                                |    19 +-
 man/Gravity.1                                      |    11 +-
 man/Gravity.1.html                                 |     4 +-
 man/Gravity.pod                                    |     9 +-
 man/Gravity.usage                                  |     6 +-
 man/MagneticField.1                                |    19 +-
 man/MagneticField.1.html                           |    17 +-
 man/MagneticField.pod                              |    17 +-
 man/MagneticField.usage                            |    19 +-
 man/Planimeter.1                                   |     2 +-
 man/Planimeter.usage                               |     2 +-
 man/RhumbSolve.1                                   |     4 +-
 man/RhumbSolve.1.html                              |     2 +-
 man/RhumbSolve.pod                                 |     2 +-
 man/RhumbSolve.usage                               |    18 +-
 man/TransverseMercatorProj.1                       |     2 +-
 man/TransverseMercatorProj.usage                   |     2 +-
 matlab/geographiclib/Contents.m                    |     6 +-
 matlab/geographiclib/cassini_fwd.m                 |     4 +-
 matlab/geographiclib/cassini_inv.m                 |     4 +-
 matlab/geographiclib/eqdazim_fwd.m                 |     4 +-
 matlab/geographiclib/eqdazim_inv.m                 |     4 +-
 matlab/geographiclib/gedistance.m                  |     2 +-
 matlab/geographiclib/gedoc.m                       |     4 +-
 matlab/geographiclib/geocent_fwd.m                 |     3 +-
 matlab/geographiclib/geocent_inv.m                 |     3 +-
 matlab/geographiclib/geodarea.m                    |     4 +-
 matlab/geographiclib/geoddistance.m                |     4 +-
 matlab/geographiclib/geoddoc.m                     |     2 +-
 matlab/geographiclib/geodreckon.m                  |    33 +-
 matlab/geographiclib/geoid_height.m                |   114 +-
 matlab/geographiclib/geoid_load.m                  |    38 +-
 matlab/geographiclib/gereckon.m                    |    12 +-
 matlab/geographiclib/gnomonic_fwd.m                |     4 +-
 matlab/geographiclib/gnomonic_inv.m                |     4 +-
 matlab/geographiclib/loccart_fwd.m                 |     3 +-
 matlab/geographiclib/loccart_inv.m                 |     3 +-
 matlab/geographiclib/mgrs_fwd.m                    |    42 +-
 matlab/geographiclib/mgrs_inv.m                    |   109 +-
 matlab/geographiclib/polarst_fwd.m                 |     8 +-
 matlab/geographiclib/polarst_inv.m                 |     8 +-
 matlab/geographiclib/private/A1m1f.m               |     8 +-
 matlab/geographiclib/private/A2m1f.m               |     8 +-
 matlab/geographiclib/private/A3coeff.m             |    27 +-
 matlab/geographiclib/private/A3f.m                 |     6 +-
 matlab/geographiclib/private/AngRound.m            |     2 +-
 matlab/geographiclib/private/C1f.m                 |    31 +-
 matlab/geographiclib/private/C1pf.m                |    31 +-
 matlab/geographiclib/private/C2f.m                 |    31 +-
 matlab/geographiclib/private/C3coeff.m             |    49 +-
 matlab/geographiclib/private/C3f.m                 |    19 +-
 matlab/geographiclib/private/C4coeff.m             |    61 +-
 matlab/geographiclib/private/C4f.m                 |    19 +-
 matlab/geographiclib/private/G4coeff.m             |    61 +-
 matlab/geographiclib/private/GeoRotation.m         |     4 +-
 matlab/geographiclib/private/tauf.m                |     5 +-
 matlab/geographiclib/private/taupf.m               |     5 +-
 matlab/geographiclib/tranmerc_fwd.m                |    49 +-
 matlab/geographiclib/tranmerc_inv.m                |    48 +-
 maxima/geod.mac                                    |    23 +-
 maxima/geodC4.mac                                  |    58 -
 maxima/geodesic.mac                                |    19 +-
 maxima/polyprint.mac                               |   135 +
 maxima/rhumbarea.mac                               |     8 +-
 maxima/tmseries.mac                                |    11 +-
 pom.xml                                            |    31 +-
 python/geographiclib/geodesic.py                   |   372 +-
 python/geographiclib/geodesiccapability.py         |     7 +-
 python/geographiclib/geodesicline.py               |    79 +-
 python/geographiclib/geomath.py                    |    29 +
 python/geographiclib/polygonarea.py                |     2 +-
 python/setup.py                                    |     2 +-
 src/DMS.cpp                                        |     4 +-
 src/GeoCoords.cpp                                  |     3 +-
 src/Geocentric.cpp                                 |     1 -
 src/Geodesic.cpp                                   |  1588 ++-
 src/GeodesicExact.cpp                              |    41 +-
 src/GeodesicExactC4.cpp                            | 13894 ++++++++++---------
 src/GeodesicLine.cpp                               |    17 +-
 src/GeodesicLineExact.cpp                          |    15 +-
 src/GeographicLib.pro                              |     2 +-
 src/MGRS.cpp                                       |    85 +-
 src/MagneticCircle.cpp                             |    13 +-
 src/MagneticModel.cpp                              |    38 +-
 src/PolarStereographic.cpp                         |     2 +-
 src/Rhumb.cpp                                      |   201 +-
 src/TransverseMercator.cpp                         |   339 +-
 tools/CartConvert.cpp                              |     5 +-
 tools/ConicProj.cpp                                |     5 +-
 tools/GeoConvert.cpp                               |     7 +-
 tools/GeodSolve.cpp                                |    86 +-
 tools/GeodesicProj.cpp                             |     5 +-
 tools/GeoidEval.cpp                                |     5 +-
 tools/Gravity.cpp                                  |     5 +-
 tools/MagneticField.cpp                            |     5 +-
 tools/Planimeter.cpp                               |     5 +-
 tools/RhumbSolve.cpp                               |     5 +-
 tools/TransverseMercatorProj.cpp                   |     5 +-
 tools/geographiclib-get-magnetic.sh                |     2 +
 tools/tests.cmake                                  |   405 +-
 170 files changed, 11562 insertions(+), 10022 deletions(-)

diff --git a/00README.txt b/00README.txt
index a8b5685..ea3cec8 100644
--- a/00README.txt
+++ b/00README.txt
@@ -35,7 +35,7 @@ Files
       AzimuthalEquidistant.[ch]pp -- azimuthal equidistant projection
       Gnomonic.[ch]pp -- gnomonic projection
       CassiniSoldner.[ch]pp -- Cassini-Soldner equidistant projection
-      Geoid.[ch]pp -- geoid heights
+      Geoid.[ch]pp -- geoid heights above the ellipsoid
       Gravity{Model,Circle}.[ch]pp -- gravity models
       Magnetic{Model,Circle}.[ch]pp -- geomagentic models
       {Spherical,Circular}Engine.[ch]pp -- spherical harmonic sums
diff --git a/AUTHORS b/AUTHORS
index 5195a9e..179456e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -2,6 +2,6 @@ Charles Karney <charles at karney.com>
 Francesco Paolo Lovergine <frankie at debian.org> (autoconfiscation)
 Mathieu Peyréga <mathieu.peyrega at gmail.com> (help with gravity models)
 Andrew MacIntyre <Andrew.MacIntyre at acma.gov.au> (python/setup.py)
-Skip Breidbach <skip.breidbach at sri.com> (maven support for Java)
+Skip Breidbach <skip at waywally.com> (maven support for Java)
 Scott Heiman <mrmtdew2 at outlook.com> (.NET wrappers + C# examples)
 Chris Bennight <chris at bennight.com> (deploying Java library)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 720ab40..5e350a0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ project (GeographicLib)
 
 # Version information
 set (PROJECT_VERSION_MAJOR 1)
-set (PROJECT_VERSION_MINOR 42)
+set (PROJECT_VERSION_MINOR 43)
 set (PROJECT_VERSION_PATCH 0)
 set (PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
 if (PROJECT_VERSION_PATCH GREATER 0)
@@ -43,7 +43,7 @@ endif ()
 # The library version tracks the numbering given by libtool in the
 # autoconf set up.
 set (LIBVERSION_API 14)
-set (LIBVERSION_BUILD 14.0.3)
+set (LIBVERSION_BUILD 14.1.0)
 string (TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)
 string (TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPER)
 
@@ -241,21 +241,21 @@ if (MSVC)
   set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
 else ()
   set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
-  # check for C++11 support.  If available, the C++11 static_assert is
-  # used.  This flag is *not* propagated to clients that use
-  # GeographicLib.  However, this is of no consequence.  When the client
-  # code is being compiled (and the GeographicLib headers being
-  # included), a work-alike substitution is used.
+  # check for C++11 support.  This flag is *not* propagated to clients
+  # that use GeographicLib.  However, this is of no consequence.  When
+  # the client code is being compiled (and the GeographicLib headers
+  # being included), work-alike substitutions are used.
   include (CheckCXXCompilerFlag)
-  set (CXX11_FLAG "-std=c++11")
-  check_cxx_compiler_flag (${CXX11_FLAG} CXX11TEST)
-  if (NOT CXX11TEST)
-    set (CXX11_FLAG "-std=c++0x")
-    check_cxx_compiler_flag (${CXX11_FLAG} CXX11TEST)
-    if (NOT CXX11TEST)
-      unset (CXX11_FLAG)
+  # Not yet ready for C++14 (problem with MPFR C++)
+  foreach (_F 11 0x)
+    set (CXX11_FLAG "-std=c++${_F}")
+    set (_T CXX11TEST${_F})
+    check_cxx_compiler_flag (${CXX11_FLAG} ${_T})
+    if (${_T})
+      break ()
     endif ()
-  endif ()
+    unset (CXX11_FLAG)
+  endforeach ()
   if (CXX11_FLAG)
     set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_FLAG}")
   endif ()
@@ -284,7 +284,7 @@ endif ()
 # Check whether the C++11 static_assert macro is available.  This flag
 # is *not* propagated to clients that use GeographicLib.  However, this
 # is of no consequence.  When the client code is being compiled (and the
-# GeographicLib headers being included), a work-alike substitution are
+# GeographicLib headers being included), a work-alike substitution is
 # used.
 check_cxx_source_compiles (
   "#include <cmath>
@@ -464,7 +464,7 @@ add_subdirectory (doc)
 add_subdirectory (matlab)
 add_subdirectory (python/geographiclib)
 add_subdirectory (examples)
-if (BUILD_NETGEOGRAPHICLIB)
+if (MSVC AND BUILD_NETGEOGRAPHICLIB)
   if (GEOGRAPHICLIB_PRECISION EQUAL 2)
     set (NETGEOGRAPHICLIB_LIBRARIES NETGeographicLib)
     set (NETLIBNAME NETGeographic)
diff --git a/NEWS b/NEWS
index 8fac5e7..78f46e3 100644
--- a/NEWS
+++ b/NEWS
@@ -4,7 +4,76 @@ For more information, see
 
     http://geographiclib.sourceforge.net/
 
-The current version of the library is 1.42.
+The current version of the library is 1.43.
+
+Changes between 1.43 (released 2015-05-23) and 1.42 versions:
+
+  * Add the Enhanced Magnetic Model 2015, emm2015.  This is valid for
+    2000 thru the end of 2019.  This required some changes in the
+    MagneticModel and MagneticCircle classes; so this model cannot be
+    used with versions of GeographicLib prior to 1.43.
+
+  * Fix BLUNDER in PolarStereographic constructor introduced in version
+    1.42.  This affected UTMUPS conversions for UPS which could be
+    incorrect by up to 0.5 km.
+
+  * Changes in the LONG_NOWRAP option (added in version 1.39) in the
+    Geodesic and GeodesicLine classes:
+    + The option is now called LONG_UNROLL (a less negative sounding
+      term); the original name, LONG_NOWRAP, is retained for backwards
+      compatibility.
+    + There were two bad BUGS in the implementation of this capability:
+      (a) it gave incorrect results for west-going geodesics; (b) the
+      option was ignored if used directly via the GeodesicLine class.
+      The first bug affected the implementations in all languages.  The
+      second affected the implementation in C++ (GeodesicLine and
+      GeodesicLineExact), JavaScript, Java, C, Python.  These bugs have
+      now been FIXED.
+    + The GeodSolve utility now accepts a -u option, which turns on the
+      LONG_UNROLL treatment.  With this option lon1 is reported as
+      entered and lon2 is given such that lon2 - lon1 indicates how
+      often and in what sense the geodesic has encircled the earth.
+      (This option also affects the value of longitude reported when an
+      inverse calculation is run with the -f option.)
+    + The inverse calculation with the JavaScript and python libraries
+      similarly sets lon1 and lon2 in output dictionary respecting the
+      LONG_UNROLL flag.
+    + The online version of GeodSolve now offers an option to unroll the
+      longitude.
+    + To support these changes DMS::DecodeLatLon no longer reduces the
+      longitude to the range [-180deg, 180deg) and Math::AngRound now
+      coverts -0 to +0.
+
+  * Add Math::polyval (also to C, Java, JavaScript, Fortran, python
+    versions of the library; this is a built-in function for
+    MATLAB/Octave).  This evaluates a polynomial using Horner's method.
+    The Maxima-generated code fragments for the evaluation of series in
+    the Geodesic, TransverseMercator, and Rhumb classes and MATLAB
+    routines for great ellipses have been replaced by Maxima-generated
+    arrays of polynomial coefficients which are used as input to
+    Math::polyval.
+
+  * Add MGRS::Check() to verify that a, f, k_UTM, and k_UPS are
+    consistent with the assumptions in the UTMUPS and MGRS classes.
+    This is invoked with GeoConvert --version.  (This function was added
+    to document and check the assumptions used in the UTMUPS and MGRS
+    classes in case they are extended to deal with ellipsoids other than
+    WS84.)
+
+  * MATLAB function mgrs_inv now takes an optional center argument and
+    strips white space from both beginning and end of the string.
+
+  * Minor internal changes:
+    + GeodSolve sets the geodesic mask so that unnecessary calculations
+      are avoided;
+    + some routines have migrated into a math class for for python,
+      Java, JavaScript libraries.
+
+  * A reminder: because of changes in the installation directories for
+    non-Windows systems introduced in version 1.42, you should remove
+    the following directories from your system:
+    + ${CMAKE_INSTALL_PREFIX}/share/cmake/GeographicLib*
+    + ${CMAKE_INSTALL_PREFIX}/libexec/GeographicLib/matlab
 
 Changes between 1.42 (released 2015-04-28) and 1.41 versions:
 
@@ -45,7 +114,7 @@ Changes between 1.42 (released 2015-04-28) and 1.41 versions:
       MATLAB File Exchange package 39108, 2014-04-22).
 
   * artifactId for Java package changed from GeographicLib to
-    GeographicLib-Java and the package is now depolyed to Maven Central
+    GeographicLib-Java and the package is now deployed to Maven Central
     (thanks to Chris Bennight for help on this).
 
   * Fix autoconf mismatch of version numbers (which were inconsistent in
@@ -177,7 +246,7 @@ Changes between 1.38 (released 2014-10-02) and 1.37 versions:
   * In cmake builds under Windows, set the output directories so that
      binaries and shared libraries are together.
 
-  * Accept the minus sign as a synomym for - in DMS.{cpp,js}.
+  * Accept the minus sign as a synonym for - in DMS.{cpp,js}.
 
   * The cmake configuration file geographiclib-depends.cmake has been
      renamed to geographiclib-targets.cmake.
@@ -610,7 +679,7 @@ Changes between 1.20 (released 2012-03-23) and 1.19 versions:
     + 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
+  * Fix SphericalEngine to deal with aggressive iterator checking by
     Visual Studio.
 
   * Fix transcription BUG is Geodesic.js.
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index cfe582a..976de1e 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -21,6 +21,8 @@ export (TARGETS ${PROJECT_SHARED_LIBRARIES} ${PROJECT_STATIC_LIBRARIES} ${TOOLS}
 # path to the root from there.  (Note that the whole install tree can
 # be relocated.)
 if (COMMON_INSTALL_PATH)
+  # Install under lib${LIB_SUFFIX} so that 32-bit and 64-bit packages
+  # can be installed on a single machine.
   set (INSTALL_CMAKE_DIR "lib${LIB_SUFFIX}/cmake/${PROJECT_NAME}")
   set (PROJECT_ROOT_DIR "../../..")
 else ()
diff --git a/configure b/configure
index aba964f..b86f85b 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.69 for GeographicLib 1.42.
+# Generated by GNU Autoconf 2.69 for GeographicLib 1.43.
 #
 # Report bugs to <charles at karney.com>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='GeographicLib'
 PACKAGE_TARNAME='geographiclib'
-PACKAGE_VERSION='1.42'
-PACKAGE_STRING='GeographicLib 1.42'
+PACKAGE_VERSION='1.43'
+PACKAGE_STRING='GeographicLib 1.43'
 PACKAGE_BUGREPORT='charles at karney.com'
 PACKAGE_URL=''
 
@@ -1343,7 +1343,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.42 to adapt to many kinds of systems.
+\`configure' configures GeographicLib 1.43 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1414,7 +1414,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GeographicLib 1.42:";;
+     short | recursive ) echo "Configuration of GeographicLib 1.43:";;
    esac
   cat <<\_ACEOF
 
@@ -1525,7 +1525,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GeographicLib configure 1.42
+GeographicLib configure 1.43
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1966,7 +1966,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.42, which was
+It was created by GeographicLib $as_me 1.43, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2943,7 +2943,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='geographiclib'
- VERSION='1.42'
+ VERSION='1.43'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3037,7 +3037,7 @@ END
 fi
 
 GEOGRAPHICLIB_VERSION_MAJOR=1
-GEOGRAPHICLIB_VERSION_MINOR=42
+GEOGRAPHICLIB_VERSION_MINOR=43
 GEOGRAPHICLIB_VERSION_PATCH=0
 
 cat >>confdefs.h <<_ACEOF
@@ -3085,9 +3085,9 @@ fi
 ac_config_headers="$ac_config_headers include/GeographicLib/Config-ac.h"
 
 
-LT_CURRENT=14
-LT_REVISION=3
-LT_AGE=0
+LT_CURRENT=15
+LT_REVISION=0
+LT_AGE=1
 
 
 
@@ -16378,7 +16378,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.42, which was
+This file was extended by GeographicLib $as_me 1.43, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -16444,7 +16444,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.42
+GeographicLib config.status 1.43
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index e41f991..1fe599e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 dnl
 dnl Copyright (C) 2009, Francesco P. Lovergine <frankie at debian.org>
 
-AC_INIT([GeographicLib],[1.42],[charles at karney.com])
+AC_INIT([GeographicLib],[1.43],[charles at karney.com])
 AC_CANONICAL_SYSTEM
 AC_PREREQ(2.61)
 AC_CONFIG_SRCDIR(src/Geodesic.cpp)
@@ -9,7 +9,7 @@ AC_CONFIG_MACRO_DIR(m4)
 AM_INIT_AUTOMAKE
 
 GEOGRAPHICLIB_VERSION_MAJOR=1
-GEOGRAPHICLIB_VERSION_MINOR=42
+GEOGRAPHICLIB_VERSION_MINOR=43
 GEOGRAPHICLIB_VERSION_PATCH=0
 AC_DEFINE_UNQUOTED([GEOGRAPHICLIB_VERSION_MAJOR],
         [$GEOGRAPHICLIB_VERSION_MAJOR],[major version number])
@@ -34,9 +34,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=14
-LT_REVISION=3
-LT_AGE=0
+LT_CURRENT=15
+LT_REVISION=0
+LT_AGE=1
 AC_SUBST(LT_CURRENT)
 AC_SUBST(LT_REVISION)
 AC_SUBST(LT_AGE)
diff --git a/doc/GeographicLib.dox.in b/doc/GeographicLib.dox.in
index 1bd0b69..61e137c 100644
--- a/doc/GeographicLib.dox.in
+++ b/doc/GeographicLib.dox.in
@@ -12,7 +12,7 @@ namespace GeographicLib {
 \mainpage GeographicLib library
 \author Charles F. F. Karney (charles at karney.com)
 \version @PROJECT_VERSION@
-\date 2015-04-28
+\date 2015-05-23
 
 \section abstract Abstract
 
@@ -147,16 +147,16 @@ The section \ref transversemercator documents various properties of this
 projection.
 
 The bulk of the testing has used geographically relevant values of the
-flattening.  Thus, you can expect close to full accuracy for -0.01 ≤
-\e f ≤ 0.01 (but note that TransverseMercatorExact is
-restricted to \e f > 0).  However, reasonably accurate results can be
-expected if -0.1 ≤ \e f ≤ 0.1.  Outside this range, you should
-attempt to verify the accuracy of the routines independently.  Two types
-of problems may occur with larger values of <i>f</i>:
- - Some classes, specifically Geodesic,
-   GeodesicLine, and TransverseMercator,
-   use series expansions using \e f as a small parameter.  The accuracy
-   of these routines will degrade as \e f becomes large.
+flattening.  Thus, you can expect close to full accuracy for −0.01
+≤ \e f ≤ 0.01 (but note that TransverseMercatorExact is restricted
+to \e f > 0).  However, reasonably accurate results can be expected if
+−0.1 ≤ \e f ≤ 0.1.  Outside this range, you should attempt
+to verify the accuracy of the routines independently.  Two types of
+problems may occur with larger values of <i>f</i>:
+ - Some classes, specifically Geodesic, GeodesicLine, and
+   TransverseMercator, use series expansions using \e f as a small
+   parameter.  The accuracy of these routines will degrade as \e f
+   becomes large.
  - Even when exact formulas are used, many of the classes need to invert
    the exact formulas (e.g., to invert a projection), typically, using
    Newton's method.  This usually provides an essentially exact
@@ -216,7 +216,7 @@ 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
+make software maintenance 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
@@ -324,7 +324,7 @@ Here are the steps to compile and install GeographicLib:
   - <code>GEOGRAPHICLIB_LIB_TYPE</code> (allowed values: SHARED, STATIC, or
     BOTH), specifies the types of libraries build.  The default is
     STATIC for Windows and SHARED otherwise.  If building GeographicLib
-    for sytem-wide use, BOTH is recommended, because this provides users
+    for system-wide use, BOTH is recommended, because this provides users
     with the choice of which library to use.
   - <code>CMAKE_BUILD_TYPE</code> (default: Release).  This
     flags only affects non-IDE compile environments (like make + g++).
@@ -408,7 +408,7 @@ Here are the steps to compile and install GeographicLib:
 - 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,
+- Configure the software, specifying the path of the source directory,
   with \verbatim
   ../configure \endverbatim
 - By default GeographicLib will be installed under /usr/local.
@@ -528,9 +528,9 @@ Now links to GeographicLib are installed under /usr/local.
 
 \subsection binaryinstlin Linux
 
-Some Linux distributions, Debian and Ubuntu, offer GeographicLib as a
-standard package.  Typically these will be one or two verions behind the
-latest.
+Some Linux distributions, Fedora, Debian, and Ubuntu, offer
+GeographicLib as a standard package.  Typically these will be one or two
+versions behind the latest.
 
 \section qt Building the library for use with Qt
 
@@ -569,7 +569,7 @@ Check the code out of git with \verbatim
 \endverbatim
 Here the "master" branch is checked out.  There are three branches in
 the git repository:
-- <b>master</b>: the main branch for code maintainence.  Releases are
+- <b>master</b>: the main branch for code maintenance.  Releases are
   tagged on this branch as, e.g., v at PROJECT_VERSION@.
 - <b>devel</b>: the development branch; changes made here are merged
   into master.
@@ -958,34 +958,31 @@ Here is a brief description of the relationship between the various
 components of GeographicLib.  All of these are defined in the
 GeographicLib namespace.
 
-TransverseMercator, PolarStereographic,
-LambertConformalConic, and AlbersEqualArea
-provide the basic projections.  The constructors for these classes
-specify the ellipsoid and the forward and reverse projections are
-implemented as const member functions.  TransverseMercator uses
-Krüger's series which have been extended to sixth order in the
-square of the eccentricity.  PolarStereographic, LambertConformalConic,
-and AlbersEqualArea use the exact formulas for the projections (e.g.,
-from Snyder).
-
-TransverseMercator::UTM and
-PolarStereographic::UPS are const static instantiations
-specific for the WGS84 ellipsoid with the UTM and UPS scale factors.
-(These do \e not add the standard false eastings or false northings for
-UTM and UPS.)  Similarly LambertConformalConic::Mercator
-is a const static instantiation of this projection for a WGS84 ellipsoid
-and a standard parallel of 0 (which gives the Mercator projection).
-AlbersEqualArea::CylindricalEqualArea,
+TransverseMercator, PolarStereographic, LambertConformalConic, and
+AlbersEqualArea provide the basic projections.  The constructors for
+these classes specify the ellipsoid and the forward and reverse
+projections are implemented as const member functions.
+TransverseMercator uses Krüger's series which have been extended to
+sixth order in the square of the eccentricity.  PolarStereographic,
+LambertConformalConic, and AlbersEqualArea use the exact formulas for
+the projections (e.g., from Snyder).
+
+TransverseMercator::UTM and PolarStereographic::UPS are const static
+instantiations specific for the WGS84 ellipsoid with the UTM and UPS
+scale factors.  (These do \e not add the standard false eastings or
+false northings for UTM and UPS.)  Similarly
+LambertConformalConic::Mercator is a const static instantiation of this
+projection for a WGS84 ellipsoid and a standard parallel of 0 (which
+gives the Mercator projection).  AlbersEqualArea::CylindricalEqualArea,
 AzimuthalEqualAreaNorth, and AzimuthalEqualAreaSouth, likewise provide
 special cases of the equal area projection.
 
-UTMUPS 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 override the
-standard UTM/UPS choice and the UTM zone.
+UTMUPS 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 override the standard UTM/UPS choice and the UTM zone.
 
 MGRS transforms between UTM/UPS coordinates and MGRS.
 UPS coordinates are handled as UTM zone 0.  This class stores no
@@ -999,32 +996,29 @@ provide formatted representations of them.
 <a href="GeoConvert.1.html">GeoConvert</a> is a simple command line
 utility to provide access to the GeoCoords class.
 
-TransverseMercatorExact is a drop in replacement for
-TransverseMercator which uses the exact formulas, based on elliptic
-functions, for the projection as given by Lee.
+TransverseMercatorExact is a drop in replacement for TransverseMercator
+which uses the exact formulas, based on elliptic functions, for the
+projection as given by Lee.
 <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a
 simple command line utility to test to the TransverseMercator and
 TransverseMercatorExact.
 
-Geodesic and GeodesicLine perform geodesic
-calculations.  The constructor for Geodesic specifies the
-ellipsoid and the direct and inverse calculations are implemented as
-const member functions.  Geocentric::WGS84 is a const
-static instantiation of Geodesic specific for the WGS84 ellipsoid.  In
-order to perform a series of direct geodesic calculations on a single
-line, the GeodesicLine class can be used.  This packages
-all the information needed to specify a geodesic.  A const member
-function returns the coordinates a specified distance from the starting
-point.  <a href="GeodSolve.1.html">GeodSolve</a> is a simple command
-line utility to perform geodesic calculations.
-PolygonAreaT is a class which compute the area of geodesic
-polygons using the Geodesic class and
-<a href="Planimeter.1.html">Planimeter</a> is a command line utility for
-the same purpose.  AzimuthalEquidistant,
-CassiniSoldner, and Gnomonic are
-projections based on the Geodesic class.
-<a href="GeodesicProj.1.html">GeodesicProj</a> is a command line utility
-to exercise these projections.
+Geodesic and GeodesicLine perform geodesic calculations.  The
+constructor for Geodesic specifies the ellipsoid and the direct and
+inverse calculations are implemented as const member functions.
+Geocentric::WGS84 is a const static instantiation of Geodesic specific
+for the WGS84 ellipsoid.  In order to perform a series of direct
+geodesic calculations on a single line, the GeodesicLine class can be
+used.  This packages all the information needed to specify a geodesic.
+A const member function returns the coordinates a specified distance
+from the starting point.  <a href="GeodSolve.1.html">GeodSolve</a> is a
+simple command line utility to perform geodesic calculations.
+PolygonAreaT is a class which compute the area of geodesic polygons
+using the Geodesic class and <a href="Planimeter.1.html">Planimeter</a>
+is a command line utility for the same purpose.  AzimuthalEquidistant,
+CassiniSoldner, and Gnomonic are projections based on the Geodesic
+class.  <a href="GeodesicProj.1.html">GeodesicProj</a> is a command line
+utility to exercise these projections.
 
 GeodesicExact and GeodesicLineExact are drop in replacements for
 Geodesic and GeodesicLine in which the solution is given in terms of
@@ -1050,30 +1044,28 @@ geoidinst for details.
 Ellipsoid is a class which performs latitude
 conversions and returns various properties of the ellipsoid.
 
-GravityModel evaluates the earth's gravitational field
-using a particular gravity model.  Various member functions return the
+GravityModel evaluates the earth's gravitational field using a
+particular gravity model.  Various member functions return the
 gravitational field, the gravity disturbance, the gravity anomaly, and
 the geoid height <a href="Gravity.1.html">Gravity</a> is a simple
 command line utility to provide access to this class.  If the field
 several points on a circle of latitude are sought then use
-GravityModel::Circle to return a
-GravityCircle object whose member functions performs the
-calculations efficiently.  (This is particularly important for high
-degree models such as EGM2008.)  These classes requires installation of
-data files for the various gravity models; see \ref gravityinst for
-details.
-
-MagneticModel evaluates the earth's magnetic field using
-a particular magnetic model.  The field is provided by the operator()
-member function.  <a href="MagneticField.1.html">MagneticField</a> is a
-simple command line utility to provide access to this class.  If the
-field several points on a circle of latitude are sought then use
-MagneticModel::Circle to return a
-MagneticCircle object whose operator() member function
-performs the calculation efficiently.  (This is particularly important
-for high degree models such as emm2010.)  These classes requires
-installation of data files for the various magnetic models; see \ref
-magneticinst for details.
+GravityModel::Circle to return a GravityCircle object whose member
+functions performs the calculations efficiently.  (This is particularly
+important for high degree models such as EGM2008.)  These classes
+requires installation of data files for the various gravity models; see
+\ref gravityinst for details.
+
+MagneticModel evaluates the earth's magnetic field using a particular
+magnetic model.  The field is provided by the operator() member
+function.  <a href="MagneticField.1.html">MagneticField</a> is a simple
+command line utility to provide access to this class.  If the field
+several points on a circle of latitude are sought then use
+MagneticModel::Circle to return a MagneticCircle object whose operator()
+member function performs the calculation efficiently.  (This is
+particularly important for high degree models such as emm2010.)  These
+classes requires installation of data files for the various magnetic
+models; see \ref magneticinst for details.
 
 Constants, Math, Utility, DMS, are general utility class which are used
 internally by the library; in addition EllipticFunction is used by
@@ -1105,7 +1097,7 @@ 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.  (Similary "nan" is the equivalent invalid Geohash.)  NaNs allow
+string.  (Similarly "nan" is the equivalent invalid Geohash.)  NaNs allow
 the projection of polylines which are separated by NaNs; in this format
 they can be easily plotted in MATLAB.
 
@@ -1200,7 +1192,7 @@ dependency \verbatim
   <dependency>
     <groupId>net.sf.geographiclib</groupId>
     <artifactId>GeographicLib-Java</artifactId>
-    <version>1.42</version>
+    <version>1.43</version>
   </dependency>
   \endverbatim
 in your <code>pom.xml</code>.
@@ -1378,12 +1370,8 @@ packages
  - <a href="http://www.mathworks.com/matlabcentral/fileexchange/39108">
    Geodesics on an ellipsoid of revolution</a>,
    MATLAB File Exchange package 39108.
- - <a href="http://www.mathworks.com/matlabcentral/fileexchange/39366">
-   Geodesic projections for an ellipsoid</a>,
-   MATLAB File Exchange package 39366,
- - <a href="http://www.mathworks.com/matlabcentral/fileexchange/47898">
-   Great ellipses</a>,
-   MATLAB File Exchange package 47898.
+ - Geodesic projections for an ellipsoid,
+ - Great ellipses.
  .
 These packages have now all been incorporated into the
 <a href="http://www.mathworks.com/matlabcentral/fileexchange/50605">
@@ -1433,14 +1421,16 @@ fast; so the compiled interface will be removed at some point in 2016.
 
 Maxima is a free computer algebra system which can be downloaded from
 http://maxima.sf.net.  Maxima was used to generate the series used by
-TransverseMercator (<a href="tmseries.mac">
-tmseries.mac</a>) and Geodesic (<a href="geod.mac">
-geod.mac</a>) and to generate accurate data for testing
-(<a href="tm.mac"> tm.mac</a> and <a href="geodesic.mac">
-geodesic.mac</a>).  The latter uses Maxima's bigfloat arithmetic
-together with series extended to high order or solutions in terms of
-elliptic integrals (<a href="ellint.mac"> ellint.mac</a>).  These files
-contain brief instructions on how to use them.
+TransverseMercator (<a href="tmseries.mac"> tmseries.mac</a>), Geodesic
+(<a href="geod.mac"> geod.mac</a>), Rhumb (<a href="rhumbarea.mac">
+rhumbarea.mac</a>), \ref gearea (<a href="gearea.mac"> gearea.mac</a>),
+the relation between \ref auxlat (<a href="auxlat.mac"> auxlat.mac</a>),
+and to generate accurate data for testing (<a href="tm.mac"> tm.mac</a>
+and <a href="geodesic.mac"> geodesic.mac</a>).  The latter uses Maxima's
+bigfloat arithmetic together with series extended to high order or
+solutions in terms of elliptic integrals (<a href="ellint.mac">
+ellint.mac</a>).  These files contain brief instructions on how to use
+them.
 
 \section dotnet .NET wrapper
 
@@ -1479,15 +1469,17 @@ The models published by the NGA are:
 - <b>EGM2008</b>:
   http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008
 .
-Geoid offers a uniform way to handle all 3 geoids at a
-variety of grid resolutions.  (In contrast, the software tools that NGA
-offers are different for each geoid, and the interpolation programs are
-different for each grid resolution.  In addition these tools are written
-in Fortran with is nowadays difficult to integrate with other software.)
-
-The geoid height, \e N, can be used to convert a height above the
-ellipsoid, \e h, to the corresponding height above the geoid (roughly,
-the height above mean sea level), \e H, using the relations
+Geoid offers a uniform way to handle all 3 geoids at a variety of grid
+resolutions.  (In contrast, the software tools that NGA offers are
+different for each geoid, and the interpolation programs are different
+for each grid resolution.  In addition these tools are written in
+Fortran with is nowadays difficult to integrate with other software.)
+
+The height of the geoid above the ellipsoid, \e N, is sometimes called
+the geoid undulation.  It can be used to convert a height above the
+ellipsoid, \e h, to the corresponding height above the geoid (the
+orthometric height, roughly the height above mean sea level), \e H,
+using the relations
 
    \e h = \e N + \e H;   \e H = −\e N + \e h.
 
@@ -1746,9 +1738,9 @@ GeoTiff, e.g., with
    gdal_translate -ot Float32 -scale 0 65000 -108 87 egm96-5.pgm egm96-5.tif
 \endverbatim
 The arguments to -scale here are specific to the Offset and Scale
-parameters used in the pgm file (note 65000 * 0.003 - 108 = 87).  You
-can check these by running <a href="GeoidEval.1.html">GeoidEval</a> with
-the "-v" option.
+parameters used in the pgm file (note 65000 * 0.003 − 108 = 87).
+You can check these by running <a href="GeoidEval.1.html">GeoidEval</a>
+with the "-v" option.
 
 Here is a sample script which uses GDAL to create a 1-degree
 squared grid of geoid heights at 3" resolution (matching DTED1) by
@@ -1834,9 +1826,9 @@ boundaries.  The over-constrained cubic fit slightly reduces the
 quantization errors on average.
 
 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 Geoid; instead it is
-implemented as
+Multi-dimensional least-squares polynomial curve fitting, CACM 2, 29--30
+(1959).  This algorithm is not part of Geoid; instead it is implemented
+as
 <a href="https://en.wikipedia.org/wiki/Maxima_(software)">Maxima</a>
 code which is used to precompute the matrices to convert the function
 values on the stencil into the coefficients from the cubic polynomial.
@@ -2553,6 +2545,10 @@ The supported models are
    <a href="http://ngdc.noaa.gov/geomag/EMM/index.html"> Enhanced
    Magnetic Model 2010</a>, which approximates the main and crustal
    magnetic fields for the period 2010--2015.
+ - <b>emm2015</b>, the
+   <a href="http://ngdc.noaa.gov/geomag/EMM/index.html"> Enhanced
+   Magnetic Model 2015</a>, which approximates the main and crustal
+   magnetic fields for the period 2000--2020.
 
 Go to
  - \ref magneticinst
@@ -2643,6 +2639,20 @@ These magnetic models are available for download:
  <td><center>
  <a href="https://sf.net/projects/geographiclib/files/magnetic-distrib/emm2010.zip">
  link</a> (4100)</center>
+<tr>
+ <td>emm2015
+ <td><center>729</center>
+ <td><center>2000--2020</center>
+ <td><center>4300</center>
+ <td><center>
+ <a href="https://sf.net/projects/geographiclib/files/magnetic-distrib/emm2015.tar.bz2">
+ link</a> (660)</center>
+ <td><center>
+ <a href="https://sf.net/projects/geographiclib/files/magnetic-distrib/emm2015.exe">
+ link</a> (1000)</center>
+ <td><center>
+ <a href="https://sf.net/projects/geographiclib/files/magnetic-distrib/emm2015.zip">
+ link</a> (1100)</center>
 </table>
 </center>
 The "size" column is the size of the uncompressed data.
@@ -2652,7 +2662,7 @@ geographiclib-get-magnetic (typically installed in /usr/local/sbin)
 which automates the process of downloading and installing the magnetic
 models.  For example
 \verbatim
-   geographiclib-get-magnetic all  # install wmm2010, wmm2015, igrf11, igrf12, emm2010
+   geographiclib-get-magnetic all  # install wmm2010, wmm2015, igrf11, igrf12, emm2010, emm2015
    geographiclib-get-magnetic -h   # for help
 \endverbatim
 This script should be run as a user with write access to the
@@ -2707,7 +2717,7 @@ spherical harmonic sum.
 
 The first line of the .wmm file must consist of "WMMF-v" where WMMF
 stands for "World Magnetic Model Format" and v is the version number of
-the format (currently "1").
+the format (currently "2").
 
 The rest of the File is read a line at a time.  A # character and
 everything after it are discarded.  If the result is just white space it
@@ -2725,6 +2735,12 @@ keywords
      at 5 year intervals.  The time variation is given only for the last
      model to allow extrapolation beyond 2015.  For dates prior to 2015,
      linear interpolation is used.
+   - <b>NumConstants</b> (default 0), the number of time-independent
+     terms; this can be 0 or 1.  This keyword was introduced in format
+     version 2 (GeographicLib version 1.43) to support the EMM2015
+     model.  This model includes long wavelength time-varying
+     components of degree 15.  This is supplemented by a short
+     wavelength time-independent component with degree = 729.
    - <b>Epoch</b> (required), the time origin (in fractional years) for
      the first model.
    - <b>DeltaEpoch</b> (default 1), the interval between models in years
@@ -2878,7 +2894,7 @@ References:
  - F. W. Bessel,
    <a href="https://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);
+   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>.
  - F. R. Helmert,
@@ -3008,12 +3024,12 @@ elliptic integrals (similar to GeodesicExact).
 
 We give here the series expansions for the various geodesic integrals
 valid to order <i>f</i><sup>10</sup>.  In this release of the code, we
-use a 6th-order expansions.  This is sufficient to maintain accuracy
-for doubles for the SRMmax ellipsoid (\e a = 6400 km, \e f = 1/150).
-However, the preprocessor macro GEOGRAPHICLIB_GEODESIC_ORDER can be
-used to select any order up to 8.  (If using long doubles, with a
-64-bit fraction, the default order is 7.)  The series expanded to
-order <i>f</i><sup>30</sup> are given in <a href="geodseries30.html">
+use a 6th-order expansions.  This is sufficient to maintain accuracy for
+doubles for the SRMmax ellipsoid (\e a = 6400 km, \e f = 1/150).
+However, the preprocessor macro GEOGRAPHICLIB_GEODESIC_ORDER can be used
+to select an order from 3 thru 8.  (If using long doubles, with a 64-bit
+fraction, the default order is 7.)  The series expanded to order
+<i>f</i><sup>30</sup> are given in <a href="geodseries30.html">
 geodseries30.html</a>.
 
 In the formulas below ^ indicates exponentiation (<i>f</i>^3 =
@@ -3399,7 +3415,7 @@ distorted measure of distance from the equator with very eccentric
 ellipsoids and this introducing an irreducible representational error in
 the algorithms in this case.  It is therefore recommended to restrict
 the use of these classes to <i>b</i>/\e a ∈ [0.01, 100] or \e f
-∈ [-99, 0.99].  Note that GeodesicExact still uses a series
+∈ [−99, 0.99].  Note that GeodesicExact still uses a series
 expansion for the area \e S12.  However the series is taken out to 30th
 order and gives accurate results for <i>b</i>/\e a ∈ [1/2, 2]; the
 accuracy is about 8 decimal digits for <i>b</i>/\e a ∈ [1/4, 4].
@@ -4334,13 +4350,13 @@ geodesics</a>).
    non-umbilical point is found using the generalization of Clairaut's
    equation (given above) with \f$\gamma = 0\f$.
  - Treat the cases where the geodesic might follow a line of constant
-   \f$\beta\f$.  There are two such cases: (a) the points lie on the
-   ellipse \f$z = 0\f$ on a general ellipsoid and (b) the points lie on
-   an ellipse whose major axis is the \f$x\f$ axis on a prolate ellipsoid
-   (\f$a = b > c\f$).  Determine the reduced length \f$m_{12}\f$ for the
-   geodesic which is the shorter path along the ellipse.  If \f$m_{12}
-   \ge 0\f$, then this is the shortest path on the ellipsoid; otherwise
-   proceed to the general case (next).
+   \f$\beta\f$.  There are two such cases: (a) the points lie on
+   the ellipse \f$z = 0\f$ on a general ellipsoid and (b) the
+   points lie on an ellipse whose major axis is the \f$x\f$ axis on a
+   prolate ellipsoid (\f$a = b > c\f$).  Determine the reduced length
+   \f$m_{12}\f$ for the geodesic which is the shorter path along the
+   ellipse.  If \f$m_{12} \ge 0\f$, then this is the shortest path on
+   the ellipsoid; otherwise proceed to the general case (next).
  - Swap the points, if necessary, so that the first point is the one
    closest to a pole.  Estimate \f$\alpha_1\f$ (by some means) and solve
    the \e hybrid problem, i.e., determine the longitude \f$\omega_2\f$
@@ -4630,11 +4646,11 @@ F(\phi, 1) &= \mathop{\mathrm{gd}}\nolimits^{-1}\phi = \sinh^{-1}\tan\phi.
 \f]
 The spherical limit gives the projection found by É. Guyou in
  - <a href="https://books.google.com/books?id=saBDAQAAIAAJ&pg=PA308">
-   Sur un nouveau système de projection de la sphère</a>,
+   Sur un nouveau système de projection de la sphère</a>,
    Comptes Rendus 102(6), 308--310 (1886).
  - <a href="https://books.google.com/books?id=VjU8AQAAMAAJ&pg=PA16">
-   Nouveau système de projection de la sphère: généralisation de la
-   projection de Mercator</a>,
+   Nouveau système de projection de la sphère:
+   généralisation de la projection de Mercator</a>,
    Annales Hydrographiques (2nd series) 9, 16--35 (1887).
  .
 who apparently derived it without realizing that it is just a special
@@ -4730,7 +4746,7 @@ References:
  - F. W. Bessel,
    <a href="https://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);
+   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>.
  - V.A. Botnev, S.M. Ustinov,
@@ -4996,8 +5012,8 @@ divided differences (see the \ref divideddiffs "next section") and use
 Clenshaw summation to evaluate the sum (see the \ref dividedclenshaw
 "last section").
 
-Here is the series expansion accurate to 10th order, found by
-<a href="rhumbarea.mac">rhumbarea.mac</a>:
+Here is the series expansion accurate to 10th order, found by the Maxima
+script <a href="rhumbarea.mac">rhumbarea.mac</a>:
 
 \verbatim
 R[1] = - 1/3 * n
@@ -5146,7 +5162,7 @@ If we want to extend the method to arbitrary flattening we need to
 compute \f$\Delta[E](x,y;k)\f$.  The necessary relation is the "addition
 theorem" for the incomplete elliptic integral of the second kind given
 in http://dlmf.nist.gov/19.11.E2.  This can be converted in the
-followinging divided difference formula
+following divided difference formula
 \f[
 \Delta[E](x,y;k)
 =\begin{cases}
@@ -5295,7 +5311,7 @@ ellipses.  This is discussed in more detail in \ref gevsgeodesic.
 
 Solutions of the great ellipse problems implemented for MATLAB and
 Octave are provided by
- - gedoc: briefly descibe the routines
+ - gedoc: briefly describe the routines
  - gereckon: solve the direct great circle problem
  - gedistance: solve the inverse great circle problem
  .
@@ -5366,9 +5382,9 @@ combination of the two.
 
 One such combination (scaling by \f$a^2/b\f$ in the \f$\hat z\f$
 direction, following by a radial scaling to the sphere) preserves the
-geographical latitude \f$\phi\f$.  This enables an great ellipse to be
+geographical latitude \f$\phi\f$.  This enables a great ellipse to be
 plotted on a chart merely by determining way points on the corresponding
-great circle and tranferring them directly on the chart.  In this
+great circle and transferring them directly on the chart.  In this
 exercise the flattening of the ellipsoid can be <i>ignored</i>!
 
 Bowring (1984), Williams (1996), Earle (2000, 2008) and Pallikaris &
@@ -5401,7 +5417,7 @@ The full parametric mapping is:
    equator.  The great ellipse has semi-axes \f$a\f$ and
    \f$b'=a\sqrt{1-e^2\cos^2\gamma_0}\f$, where \f$\gamma_0\f$ is the
    great-circle azimuth at the northward equator crossing, and
-   \f$\sigma\f$ is the parametric angle on the ellipse.  [In constrast,
+   \f$\sigma\f$ is the parametric angle on the ellipse.  [In contrast,
    the ellipse giving distances on a geodesic has semi-axes
    \f$b\sqrt{1+e'^2\cos^2\alpha_0}\f$ and \f$b\f$.]
  .
@@ -5609,7 +5625,7 @@ al. given above:
  - "unnecessary consumption of computing power": The solution of the
    inverse geodesic problem takes 2.3 μs; multiple points on a
    geodesic can be computed at a rate of one point per 0.4 μs.
-   The actual power consumed in these calculations is miniscule compared
+   The actual power consumed in these calculations is minuscule compared
    to the power needed to drive the display of a navigational computer.
  - "formulas that are much too complex": There's no question that the
    solution of the geodesic problem is more complex than for great
@@ -6271,7 +6287,7 @@ out to 4th order in <i>n</i>:
 \f]
 
 Here are the remaining relations (including χ and ξ) carried out
-to 3th order in <i>n</i>:
+to 3rd order in <i>n</i>:
 \f[
 \begin{align}
 \chi-\phi&=\textstyle{}
@@ -6794,7 +6810,7 @@ The following steps needed to be taken
    - express all convergence criteria in terms of\code
      numeric_limits<double>::epsilon() \endcode
      etc., instead of using "magic constants", such as 1.0e-15;
-   - use <code>typedef double real;</code> and replace all occurences of
+   - use <code>typedef double real;</code> and replace all occurrences of
      <code>double</code> by <code>real</code>;
    - write all literals by, e.g., <code>real(0.5)</code>.  Some
      constants might need the L suffix, e.g., <code>real f =
@@ -6868,7 +6884,7 @@ The following steps needed to be taken
    - In Utility::readarray and Utility::writearray, arrays of reals were
      treated as plain old data.  This assumption now no longer holds and
      these functions needed special treatment.
-   - volatile declaraions don't apply.
+   - volatile declarations don't apply.
 
  - Phase 3, changes to support arbitrary precision which can be set at
    runtime.
@@ -6909,7 +6925,7 @@ The following steps needed to be taken
        "construct on first use idiom"</a>.  This is the most disruptive
        of the changes since it requires a different calling convention
        in user code.  However the old static initializations were
-       invoked everytime a code linking to GeographicLib was started,
+       invoked every time a code linking to GeographicLib was started,
        even if the objects were not subsequently used.  The new method
        only initializes the static objects if they are used.
      .
@@ -6938,7 +6954,7 @@ The following steps needed to be taken
        inordinately long (15 minutes) to compile using g++;
      - but Visual Studio 12 then complained (with an <a
        href="http://connect.microsoft.com/VisualStudio/feedback/details/920594">
-       internal compiler error</a> presumably due to overly agressive
+       internal compiler error</a> presumably due to overly aggressive
        whole-file optimization); fixed by splitting one function into a
        separate file.
 
@@ -6966,7 +6982,7 @@ https://sourceforge.net/projects/geographiclib/files/distrib/archive/</a>.
 
 The corresponding documentation for these versions is obtained by
 clicking on the “Version <i>m.nn</i>” links below.  Some of
-the links in the documentaion of older versions may be out of date (in
+the links in the documentation of older versions may be out of date (in
 particular the links for the source code will not work if the code has
 been migrated to the archive subdirectory).  All the releases are
 available as tags “r<i>m.nn</i>” in the the "release" branch
@@ -6974,6 +6990,72 @@ of the
 <a href="https://sourceforge.net/p/geographiclib/code/ci/release/tree/">
 git repository for GeographicLib</a>.
 
+ - <a href="http://geographiclib.sf.net/1.43">Version 1.43</a>
+   (released 2015-05-23)
+   - Add the Enhanced Magnetic Model 2015, emm2015.  This is valid for
+     2000 thru the end of 2019.  This required some changes in the
+     MagneticModel and MagneticCircle classes; so this model cannot be
+     used with versions of GeographicLib prior to 1.43.
+   - Fix BLUNDER in PolarStereographic constructor introduced in version
+     1.42.  This affected UTMUPS conversions for UPS which could be
+     incorrect by up to 0.5 km.
+   - Changes in the LONG_NOWRAP option (added in version 1.39) in the
+     Geodesic and GeodesicLine classes:
+     - The option is now called LONG_UNROLL (a less negative sounding
+       term); the original name, LONG_NOWRAP, is retained for backwards
+       compatibility.
+     - There were two bad BUGS in the implementation of this capability:
+       (a) it gave <i>incorrect</i> results for west-going
+       geodesics; (b) the option was <i>ignored</i> if used
+       directly via the GeodesicLine class.  The first bug affected the
+       implementations in all languages.  The second affected the
+       implementation in C++ (GeodesicLine and GeodesicLineExact),
+       JavaScript, Java, C, Python.  These bugs have now been FIXED.
+     - The <a href="GeodSolve.1.html">GeodSolve</a> utility now accepts
+       a -u option, which turns on the LONG_UNROLL treatment.  With this
+       option <code>lon1</code> is reported as entered and
+       <code>lon2</code> is given such that <code>lon2</code> −
+       <code>lon1</code> indicates how often and in what sense the
+       geodesic has encircled the earth.  (This option also affects the
+       value of longitude reported when an inverse calculation is run
+       with the -f option.)
+     - The inverse calculation with the JavaScript and python libraries
+       similarly sets <code>lon1</code> and <code>lon2</code> in output
+       dictionary respecting the LONG_UNROLL flag.
+     - The online version of
+       <a href="http://geographiclib.sf.net/cgi-bin/GeodSolve">GeodSolve</a>
+       now offers an option to unroll the longitude.
+     - To support these changes DMS::DecodeLatLon no longer reduces the
+       longitude to the range [−180°, 180°) and
+       Math::AngRound now coverts −0 to +0.
+   - Add Math::polyval (also to C, Java, JavaScript, Fortran, python
+     versions of the library; this is a built-in function for
+     MATLAB/Octave).  This evaluates a polynomial using Horner's method.
+     The Maxima-generated code fragments for the evaluation of series in
+     the Geodesic, TransverseMercator, and Rhumb classes and MATLAB
+     routines for great ellipses have been replaced by Maxima-generated
+     arrays of polynomial coefficients which are used as input to
+     Math::polyval.
+   - Add MGRS::Check() to verify that \e a, \e f,
+     <i>k</i><sub>UTM</sub>, and <i>k</i><sub>UPS</sub> are consistent
+     with the assumptions in the UTMUPS and MGRS classes.  This is
+     invoked with <code>GeoConvert \--version</code>.  (This function
+     was added to document and check the assumptions used in the UTMUPS
+     and MGRS classes in case they are extended to deal with ellipsoids
+     other than WS84.)
+   - MATLAB function mgrs_inv now takes an optional \e center argument
+     and strips white space from both beginning and end of the string.
+   - Minor internal changes:
+     - GeodSolve sets the geodesic mask so that unnecessary calculations
+       are avoided;
+     - some routines have migrated into a math class for for python,
+       Java, JavaScript libraries.
+   - A reminder: because of changes in the installation directories for
+     non-Windows systems introduced in version 1.42, you should remove
+     the following directories from your system:
+     - ${CMAKE_INSTALL_PREFIX}/share/cmake/GeographicLib*
+     - ${CMAKE_INSTALL_PREFIX}/libexec/GeographicLib/matlab
+
  - <a href="http://geographiclib.sf.net/1.42">Version 1.42</a>
    (released 2015-04-28)
    - DMS::Decode allows a single addition or subtraction operation,
@@ -7010,7 +7092,7 @@ git repository for GeographicLib</a>.
        encircle a pole multiple times (released as version 1.41.1 of
        MATLAB File Exchange package 39108, 2014-04-22).
    - artifactId for Java package changed from GeographicLib to
-     GeographicLib-Java and the package is now depolyed to
+     GeographicLib-Java and the package is now deployed to
      Maven Central (thanks to Chris Bennight for help on this).
    - Fix autoconf mismatch of version numbers (which were inconsistent
      in versions 1.40 and 1.41).
@@ -7071,7 +7153,7 @@ git repository for GeographicLib</a>.
      longitude "unwrapped".  So the following changes have been made:
      - add a LONG_NOWRAP flag to \e mask enums for the \e outmask
        arguments for Geodesic, GeodesicLine, Rhumb, and RhumbLine;
-     - similar changes have been made to the Python, Javascript, and
+     - similar changes have been made to the Python, JavaScript, and
        Java implementations of the geodesic routines;
      - for the C, Fortran, and MATLAB implementations the \e arcmode
        argument to the routines was generalized to allow a combination
@@ -7081,7 +7163,7 @@ git repository for GeographicLib</a>.
      These changes were necessary to fix the PolygonAreaT::AddEdge (see
      the next item).
    - Changes in area calculations:
-     - fix BUG in PolygonAreaT::AddEdge (also in C, Java, Javascript,
+     - fix BUG in PolygonAreaT::AddEdge (also in C, Java, JavaScript,
        and Python implementations) which sometimes causes the wrong area
        to be returned if the edge spanned more than 180°;
      - add area calculation to the Rhumb and RhumbLine classes and the
@@ -7121,7 +7203,7 @@ git repository for GeographicLib</a>.
    - On Mac OSX, GeographicLib can be installed using homebrew.
    - In cmake builds under Windows, set the output directories so that
      binaries and shared libraries are together.
-   - Accept the minus sign as a synomym for - in DMS.{cpp,js}.
+   - Accept the minus sign as a synonym for - in DMS.{cpp,js}.
    - The cmake configuration file geographiclib-depends.cmake has been
      renamed to geographiclib-targets.cmake.
    - MATLAB/Octave routines for great ellipses added; see \ref
@@ -7525,7 +7607,7 @@ git repository for GeographicLib</a>.
      - 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
+   - Fix SphericalEngine to deal with aggressive iterator
      checking by Visual Studio.
    - Fix transcription BUG is Geodesic.js.
 
diff --git a/doc/geodesic-c.dox b/doc/geodesic-c.dox
index a7f05c8..3416d80 100644
--- a/doc/geodesic-c.dox
+++ b/doc/geodesic-c.dox
@@ -11,7 +11,7 @@
 /**
 \mainpage Geodesic routines implemented in C
 \author Charles F. F. Karney (charles at karney.com)
-\version 1.42
+\version 1.43
 
 \section abstract-c Abstract
 
@@ -27,13 +27,13 @@ about any C compiler.
 \section download-c Downloading the source
 
 The C library is part of %GeographicLib which available for download at
-- <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.42.tar.gz">
-  GeographicLib-1.42.tar.gz</a>
-- <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.42.zip">
-  GeographicLib-1.42.zip</a>
+- <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.43.tar.gz">
+  GeographicLib-1.43.tar.gz</a>
+- <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.43.zip">
+  GeographicLib-1.43.zip</a>
 .
 as either a compressed tar file (tar.gz) or a zip file.  After unpacking
-the source, the C library can be found in GeographicLib-1.42/legacy/C.
+the source, the C library can be found in GeographicLib-1.43/legacy/C.
 The library consists of two files geodesic.c and geodesic.h.
 
 The library is also included as part of
diff --git a/doc/geodesic-for.dox b/doc/geodesic-for.dox
index 7d419d4..7845375 100644
--- a/doc/geodesic-for.dox
+++ b/doc/geodesic-for.dox
@@ -11,7 +11,7 @@
 /**
 \mainpage Geodesic routines implemented in Fortran
 \author Charles F. F. Karney (charles at karney.com)
-\version 1.42
+\version 1.43
 
 \section abstract-for Abstract
 
@@ -25,14 +25,14 @@ compile correctly with just about any Fortran compiler.
 \section download-for Downloading the source
 
 The Fortran library is part of %GeographicLib which available for download at
-- <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.42.tar.gz">
-  GeographicLib-1.42.tar.gz</a>
-- <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.42.zip">
-  GeographicLib-1.42.zip</a>
+- <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.43.tar.gz">
+  GeographicLib-1.43.tar.gz</a>
+- <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.43.zip">
+  GeographicLib-1.43.zip</a>
 .
 as either a compressed tar file (tar.gz) or a zip file.  After unpacking
 the source, the Fortran library can be found in
-GeographicLib-1.42/legacy/Fortran.  The library consists of the file
+GeographicLib-1.43/legacy/Fortran.  The library consists of the file
 geodesic.for.
 
 \section doc Library documentation
diff --git a/doc/scripts/GeographicLib/DMS.js b/doc/scripts/GeographicLib/DMS.js
index be4833a..7e312f1 100644
--- a/doc/scripts/GeographicLib/DMS.js
+++ b/doc/scripts/GeographicLib/DMS.js
@@ -262,7 +262,6 @@ GeographicLib.DMS = {};
       throw new Error("Latitude " + lat + "d not in [-90d, 90d]");
     if (lon < -540 || lon >= 540)
       throw new Error("Latitude " + lon + "d not in [-540d, 540d)");
-    lon = m.AngNormalize(lon);
     vals.lat = lat;
     vals.lon = lon;
     return vals;
diff --git a/doc/scripts/GeographicLib/Geodesic.js b/doc/scripts/GeographicLib/Geodesic.js
index 3fdbd43..322d1ae 100644
--- a/doc/scripts/GeographicLib/Geodesic.js
+++ b/doc/scripts/GeographicLib/Geodesic.js
@@ -56,7 +56,7 @@ GeographicLib.GeodesicLine = {};
   g.CAP_ALL  = 0x1F;
   g.CAP_MASK = g.CAP_ALL;
   g.OUT_ALL  = 0x7F80;
-  g.OUT_MASK = 0xFF80;          // Includes LONG_NOWRAP
+  g.OUT_MASK = 0xFF80;          // Includes LONG_UNROLL
   g.NONE          = 0;
   g.LATITUDE      = 1<<7  | g.CAP_NONE;
   g.LONGITUDE     = 1<<8  | g.CAP_C3;
@@ -66,16 +66,19 @@ GeographicLib.GeodesicLine = {};
   g.REDUCEDLENGTH = 1<<12 | g.CAP_C1 | g.CAP_C2;
   g.GEODESICSCALE = 1<<13 | g.CAP_C1 | g.CAP_C2;
   g.AREA          = 1<<14 | g.CAP_C4;
-  g.LONG_NOWRAP   = 1<<15;
+  g.LONG_UNROLL   = 1<<15;
+  g.LONG_NOWRAP   = g.LONG_UNROLL;
   g.ALL           = g.OUT_ALL| g.CAP_ALL;
 
-  g.SinCosSeries = function(sinp, sinx, cosx, c, n) {
+  g.SinCosSeries = function(sinp, sinx, cosx, c) {
     // 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)
     // 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 = c.length,               // Point to one beyond last element
+    n = k - (sinp ? 1 : 0);
     var
     ar = 2 * (cosx - sinx) * (cosx + sinx), // 2 * cos(2 * x)
     y0 = n & 1 ? c[--k] : 0, y1 = 0;        // accumulators for sum
@@ -90,18 +93,6 @@ GeographicLib.GeodesicLine = {};
             cosx * (y0 - y1));            // cos(x) * (y0 - y1)
   };
 
-  g.AngRound = function(x) {
-    // The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57
-    // for reals = 0.7 pm on the earth if x is an angle in degrees.  (This
-    // is about 1000 times more resolution than we get with angles around 90
-    // degrees.)  We use this to avoid having to deal with near singular
-    // cases when x is non-zero but tiny (e.g., 1.0e-200).
-    var z = 1/16;
-    var y = Math.abs(x);
-    // The compiler mustn't "simplify" z - (z - y) to y
-    y = y < z ? z - (z - y) : y;
-    return x < 0 ? -y : y;
-  };
   g.Astroid = function(x, y) {
     // Solve k^4+2*k^3-(x^2+y^2-1)*k^2-2*y^2*k-y^2 = 0 for positive
     // root k.  This solution is adapted from Geocentric::Reverse.
@@ -157,69 +148,110 @@ GeographicLib.GeodesicLine = {};
     return k;
   };
 
+  // The scale factor A1-1 = mean value of (d/dsigma)I1 - 1
   g.A1m1f = function(eps) {
-    var
-    eps2 = m.sq(eps),
-    t = eps2*(eps2*(eps2+4)+64)/256;
+    var coeff = [
+      // (1-eps)*A1-1, polynomial in eps2 of order 3
+      1, 4, 64, 0, 256,
+    ];
+    var p = Math.floor(g.nA1_/2);
+    var t = m.polyval(p, coeff, 0, m.sq(eps)) / coeff[p + 1];
     return (t + eps) / (1 - eps);
   };
 
+  // The coefficients C1[l] in the Fourier expansion of B1
   g.C1f = function(eps, c) {
+    var coeff = [
+      // C1[1]/eps^1, polynomial in eps2 of order 2
+        -1, 6, -16, 32,
+      // C1[2]/eps^2, polynomial in eps2 of order 2
+        -9, 64, -128, 2048,
+      // C1[3]/eps^3, polynomial in eps2 of order 1
+      9, -16, 768,
+      // C1[4]/eps^4, polynomial in eps2 of order 1
+      3, -5, 512,
+      // C1[5]/eps^5, polynomial in eps2 of order 0
+        -7, 1280,
+      // C1[6]/eps^6, polynomial in eps2 of order 0
+        -7, 2048,
+    ];
     var
     eps2 = m.sq(eps),
     d = eps;
-    c[1] = d*((6-eps2)*eps2-16)/32;
-    d *= eps;
-    c[2] = d*((64-9*eps2)*eps2-128)/2048;
-    d *= eps;
-    c[3] = d*(9*eps2-16)/768;
-    d *= eps;
-    c[4] = d*(3*eps2-5)/512;
-    d *= eps;
-    c[5] = -7*d/1280;
-    d *= eps;
-    c[6] = -7*d/2048;
+    var o = 0;
+    for (var l = 1; l <= g.nC1_; ++l) {     // l is index of C1p[l]
+      var p = Math.floor((g.nC1_ - l) / 2); // order of polynomial in eps^2
+      c[l] = d * m.polyval(p, coeff, o, eps2) / coeff[o + p + 1];
+      o += p + 2;
+      d *= eps;
+    }
   };
 
+  // The coefficients C1p[l] in the Fourier expansion of B1p
   g.C1pf = function(eps, c) {
+    var coeff = [
+      // C1p[1]/eps^1, polynomial in eps2 of order 2
+      205, -432, 768, 1536,
+      // C1p[2]/eps^2, polynomial in eps2 of order 2
+      4005, -4736, 3840, 12288,
+      // C1p[3]/eps^3, polynomial in eps2 of order 1
+        -225, 116, 384,
+      // C1p[4]/eps^4, polynomial in eps2 of order 1
+        -7173, 2695, 7680,
+      // C1p[5]/eps^5, polynomial in eps2 of order 0
+      3467, 7680,
+      // C1p[6]/eps^6, polynomial in eps2 of order 0
+      38081, 61440,
+    ];
     var
     eps2 = m.sq(eps),
     d = eps;
-    c[1] = d*(eps2*(205*eps2-432)+768)/1536;
-    d *= eps;
-    c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
-    d *= eps;
-    c[3] = d*(116-225*eps2)/384;
-    d *= eps;
-    c[4] = d*(2695-7173*eps2)/7680;
-    d *= eps;
-    c[5] = 3467*d/7680;
-    d *= eps;
-    c[6] = 38081*d/61440;
+    var o = 0;
+    for (var l = 1; l <= g.nC1p_; ++l) {     // l is index of C1p[l]
+      var p = Math.floor((g.nC1p_ - l) / 2); // order of polynomial in eps^2
+      c[l] = d * m.polyval(p, coeff, o, eps2) / coeff[o + p + 1];
+      o += p + 2;
+      d *= eps;
+    }
   };
 
+  // The scale factor A2-1 = mean value of (d/dsigma)I2 - 1
   g.A2m1f = function(eps) {
-    var
-    eps2 = m.sq(eps),
-    t = eps2*(eps2*(25*eps2+36)+64)/256;
+    var coeff = [
+      // A2/(1-eps)-1, polynomial in eps2 of order 3
+      25, 36, 64, 0, 256,
+    ];
+    var p = Math.floor(g.nA2_/2);
+    var t = m.polyval(p, coeff, 0, m.sq(eps)) / coeff[p + 1];
     return t * (1 - eps) - eps;
   };
 
+  // The coefficients C2[l] in the Fourier expansion of B2
   g.C2f = function(eps, c) {
+    var coeff = [
+      // C2[1]/eps^1, polynomial in eps2 of order 2
+      1, 2, 16, 32,
+      // C2[2]/eps^2, polynomial in eps2 of order 2
+      35, 64, 384, 2048,
+      // C2[3]/eps^3, polynomial in eps2 of order 1
+      15, 80, 768,
+      // C2[4]/eps^4, polynomial in eps2 of order 1
+      7, 35, 512,
+      // C2[5]/eps^5, polynomial in eps2 of order 0
+      63, 1280,
+      // C2[6]/eps^6, polynomial in eps2 of order 0
+      77, 2048,
+    ];
     var
     eps2 = m.sq(eps),
     d = eps;
-    c[1] = d*(eps2*(eps2+2)+16)/32;
-    d *= eps;
-    c[2] = d*(eps2*(35*eps2+64)+384)/2048;
-    d *= eps;
-    c[3] = d*(15*eps2+80)/768;
-    d *= eps;
-    c[4] = d*(7*eps2+35)/512;
-    d *= eps;
-    c[5] = 63*d/1280;
-    d *= eps;
-    c[6] = 77*d/2048;
+    var o = 0;
+    for (var l = 1; l <= g.nC2_; ++l) {     // l is index of C2[l]
+      var p = Math.floor((g.nC2_ - l) / 2); // order of polynomial in eps^2
+      c[l] = d * m.polyval(p, coeff, o, eps2) / coeff[o + p + 1];
+      o += p + 2;
+      d *= eps;
+    }
   };
 
   g.Geodesic = function(a, f) {
@@ -260,101 +292,157 @@ GeographicLib.GeodesicLine = {};
     this.C4coeff();
   };
 
+  // The scale factor A3 = mean value of (d/dsigma)I3
   g.Geodesic.prototype.A3coeff = function() {
-    var _n = this._n;
-    this._A3x[0] = 1;
-    this._A3x[1] = (_n-1)/2;
-    this._A3x[2] = (_n*(3*_n-1)-2)/8;
-    this._A3x[3] = ((-_n-3)*_n-1)/16;
-    this._A3x[4] = (-2*_n-3)/64;
-    this._A3x[5] = -3/128;
+    var coeff = [
+      // A3, coeff of eps^5, polynomial in n of order 0
+        -3, 128,
+      // A3, coeff of eps^4, polynomial in n of order 1
+        -2, -3, 64,
+      // A3, coeff of eps^3, polynomial in n of order 2
+        -1, -3, -1, 16,
+      // A3, coeff of eps^2, polynomial in n of order 2
+      3, -1, -2, 8,
+      // A3, coeff of eps^1, polynomial in n of order 1
+      1, -1, 2,
+      // A3, coeff of eps^0, polynomial in n of order 0
+      1, 1,
+    ];
+    var o = 0, k = 0;
+    for (var j = g.nA3_ - 1; j >= 0; --j) { // coeff of eps^j
+      var p = Math.min(g.nA3_ - j - 1, j);  // order of polynomial in n
+      this._A3x[k++] = m.polyval(p, coeff, o, this._n) / coeff[o + p + 1];
+      o += p + 2;
+    }
   };
 
+  // The coefficients C3[l] in the Fourier expansion of B3
   g.Geodesic.prototype.C3coeff = function() {
-    var _n = this._n;
-    this._C3x[0] = (1-_n)/4;
-    this._C3x[1] = (1-_n*_n)/8;
-    this._C3x[2] = ((3-_n)*_n+3)/64;
-    this._C3x[3] = (2*_n+5)/128;
-    this._C3x[4] = 3/128;
-    this._C3x[5] = ((_n-3)*_n+2)/32;
-    this._C3x[6] = ((-3*_n-2)*_n+3)/64;
-    this._C3x[7] = (_n+3)/128;
-    this._C3x[8] = 5/256;
-    this._C3x[9] = (_n*(5*_n-9)+5)/192;
-    this._C3x[10] = (9-10*_n)/384;
-    this._C3x[11] = 7/512;
-    this._C3x[12] = (7-14*_n)/512;
-    this._C3x[13] = 7/512;
-    this._C3x[14] = 21/2560;
+    var coeff = [
+      // C3[1], coeff of eps^5, polynomial in n of order 0
+      3, 128,
+      // C3[1], coeff of eps^4, polynomial in n of order 1
+      2, 5, 128,
+      // C3[1], coeff of eps^3, polynomial in n of order 2
+        -1, 3, 3, 64,
+      // C3[1], coeff of eps^2, polynomial in n of order 2
+        -1, 0, 1, 8,
+      // C3[1], coeff of eps^1, polynomial in n of order 1
+        -1, 1, 4,
+      // C3[2], coeff of eps^5, polynomial in n of order 0
+      5, 256,
+      // C3[2], coeff of eps^4, polynomial in n of order 1
+      1, 3, 128,
+      // C3[2], coeff of eps^3, polynomial in n of order 2
+        -3, -2, 3, 64,
+      // C3[2], coeff of eps^2, polynomial in n of order 2
+      1, -3, 2, 32,
+      // C3[3], coeff of eps^5, polynomial in n of order 0
+      7, 512,
+      // C3[3], coeff of eps^4, polynomial in n of order 1
+        -10, 9, 384,
+      // C3[3], coeff of eps^3, polynomial in n of order 2
+      5, -9, 5, 192,
+      // C3[4], coeff of eps^5, polynomial in n of order 0
+      7, 512,
+      // C3[4], coeff of eps^4, polynomial in n of order 1
+        -14, 7, 512,
+      // C3[5], coeff of eps^5, polynomial in n of order 0
+      21, 2560,
+    ];
+    var o = 0, k = 0;
+    for (var l = 1; l < g.nC3_; ++l) {        // l is index of C3[l]
+      for (var j = g.nC3_ - 1; j >= l; --j) { // coeff of eps^j
+        var p = Math.min(g.nC3_ - j - 1, j);  // order of polynomial in n
+        this._C3x[k++] = m.polyval(p, coeff, o, this._n) / coeff[o + p + 1];
+        o += p + 2;
+      }
+    }
   };
 
   g.Geodesic.prototype.C4coeff = function() {
-    var _n = this._n;
-    this._C4x[0] = (_n*(_n*(_n*(_n*(100*_n+208)+572)+3432)-12012)+30030)/45045;
-    this._C4x[1] = (_n*(_n*(_n*(64*_n+624)-4576)+6864)-3003)/15015;
-    this._C4x[2] = (_n*((14144-10656*_n)*_n-4576)-858)/45045;
-    this._C4x[3] = ((-224*_n-4784)*_n+1573)/45045;
-    this._C4x[4] = (1088*_n+156)/45045;
-    this._C4x[5] = 97/15015.0;
-    this._C4x[6] = (_n*(_n*((-64*_n-624)*_n+4576)-6864)+3003)/135135;
-    this._C4x[7] = (_n*(_n*(5952*_n-11648)+9152)-2574)/135135;
-    this._C4x[8] = (_n*(5792*_n+1040)-1287)/135135;
-    this._C4x[9] = (468-2944*_n)/135135;
-    this._C4x[10] = 1/9009.0;
-    this._C4x[11] = (_n*((4160-1440*_n)*_n-4576)+1716)/225225;
-    this._C4x[12] = ((4992-8448*_n)*_n-1144)/225225;
-    this._C4x[13] = (1856*_n-936)/225225;
-    this._C4x[14] = 8/10725.0;
-    this._C4x[15] = (_n*(3584*_n-3328)+1144)/315315;
-    this._C4x[16] = (1024*_n-208)/105105;
-    this._C4x[17] = -136/63063.0;
-    this._C4x[18] = (832-2560*_n)/405405;
-    this._C4x[19] = -128/135135.0;
-    this._C4x[20] = 128/99099.0;
+    var coeff = [
+      // C4[0], coeff of eps^5, polynomial in n of order 0
+      97, 15015,
+      // C4[0], coeff of eps^4, polynomial in n of order 1
+      1088, 156, 45045,
+      // C4[0], coeff of eps^3, polynomial in n of order 2
+        -224, -4784, 1573, 45045,
+      // C4[0], coeff of eps^2, polynomial in n of order 3
+        -10656, 14144, -4576, -858, 45045,
+      // C4[0], coeff of eps^1, polynomial in n of order 4
+      64, 624, -4576, 6864, -3003, 15015,
+      // C4[0], coeff of eps^0, polynomial in n of order 5
+      100, 208, 572, 3432, -12012, 30030, 45045,
+      // C4[1], coeff of eps^5, polynomial in n of order 0
+      1, 9009,
+      // C4[1], coeff of eps^4, polynomial in n of order 1
+        -2944, 468, 135135,
+      // C4[1], coeff of eps^3, polynomial in n of order 2
+      5792, 1040, -1287, 135135,
+      // C4[1], coeff of eps^2, polynomial in n of order 3
+      5952, -11648, 9152, -2574, 135135,
+      // C4[1], coeff of eps^1, polynomial in n of order 4
+        -64, -624, 4576, -6864, 3003, 135135,
+      // C4[2], coeff of eps^5, polynomial in n of order 0
+      8, 10725,
+      // C4[2], coeff of eps^4, polynomial in n of order 1
+      1856, -936, 225225,
+      // C4[2], coeff of eps^3, polynomial in n of order 2
+        -8448, 4992, -1144, 225225,
+      // C4[2], coeff of eps^2, polynomial in n of order 3
+        -1440, 4160, -4576, 1716, 225225,
+      // C4[3], coeff of eps^5, polynomial in n of order 0
+        -136, 63063,
+      // C4[3], coeff of eps^4, polynomial in n of order 1
+      1024, -208, 105105,
+      // C4[3], coeff of eps^3, polynomial in n of order 2
+      3584, -3328, 1144, 315315,
+      // C4[4], coeff of eps^5, polynomial in n of order 0
+        -128, 135135,
+      // C4[4], coeff of eps^4, polynomial in n of order 1
+        -2560, 832, 405405,
+      // C4[5], coeff of eps^5, polynomial in n of order 0
+      128, 99099,
+    ];
+    var o = 0, k = 0;
+    for (var l = 0; l < g.nC4_; ++l) {        // l is index of C4[l]
+      for (var j = g.nC4_ - 1; j >= l; --j) { // coeff of eps^j
+        var p = g.nC4_ - j - 1;               // order of polynomial in n
+        this._C4x[k++] = m.polyval(p, coeff, o, this._n) / coeff[o + p + 1];
+        o += p + 2;
+      }
+    }
   };
 
   g.Geodesic.prototype.A3f = function(eps) {
-    // Evaluate sum(_A3x[k] * eps^k, k, 0, nA3x_-1) by Horner's method
-    var v = 0;
-    for (var i = g.nA3x_; i; )
-      v = eps * v + this._A3x[--i];
-    return v;
+    // Evaluate A3
+    return m.polyval(g.nA3x_ - 1, this._A3x, 0, eps);
   };
 
   g.Geodesic.prototype.C3f = function(eps, c) {
-    // Evaluate C3 coeffs by Horner's method
+    // Evaluate C3 coeffs
     // Elements c[1] thru c[nC3_ - 1] are set
-    var j, k;
-    for (j = g.nC3x_, k = g.nC3_ - 1; k; ) {
-      var t = 0;
-      for (var i = g.nC3_ - k; i; --i)
-        t = eps * t + this._C3x[--j];
-      c[k--] = t;
-    }
-
     var mult = 1;
-    for (k = 1; k < g.nC3_; ) {
+    var o = 0;
+    for (var l = 1; l < g.nC3_; ++l) { // l is index of C3[l]
+      var p = g.nC3_ - l - 1;          // order of polynomial in eps
       mult *= eps;
-      c[k++] *= mult;
+      c[l] = mult * m.polyval(p, this._C3x, o, eps);
+      o += p + 1;
     }
   };
 
   g.Geodesic.prototype.C4f = function(eps, c) {
-    // Evaluate C4 coeffs by Horner's method
+    // Evaluate C4 coeffs
     // Elements c[0] thru c[nC4_ - 1] are set
-    var j, k;
-    for (j = g.nC4x_, k = g.nC4_; k; ) {
-      var t = 0;
-      for (var i = g.nC4_ - k + 1; i; --i)
-        t = eps * t + this._C4x[--j];
-      c[--k] = t;
-    }
-
     var mult = 1;
-    for (k = 1; k < g.nC4_; ) {
+    var o = 0;
+    for (var l = 0; l < g.nC4_; ++l) { // l is index of C4[l]
+      var p = g.nC4_ - l - 1;          // order of polynomial in eps
+      c[l] = mult * m.polyval(p, this._C4x, o, eps);
+      o += p + 1;
       mult *= eps;
-      c[k++] *= mult;
     }
   };
 
@@ -371,11 +459,11 @@ GeographicLib.GeodesicLine = {};
     g.C2f(eps, C2a);
     var
     A1m1 = g.A1m1f(eps),
-    AB1 = (1 + A1m1) * (g.SinCosSeries(true, ssig2, csig2, C1a, g.nC1_) -
-                        g.SinCosSeries(true, ssig1, csig1, C1a, g.nC1_)),
+    AB1 = (1 + A1m1) * (g.SinCosSeries(true, ssig2, csig2, C1a) -
+                        g.SinCosSeries(true, ssig1, csig1, C1a)),
     A2m1 = g.A2m1f(eps),
-    AB2 = (1 + A2m1) * (g.SinCosSeries(true, ssig2, csig2, C2a, g.nC2_) -
-                        g.SinCosSeries(true, ssig1, csig1, C2a, g.nC2_));
+    AB2 = (1 + A2m1) * (g.SinCosSeries(true, ssig2, csig2, C2a) -
+                        g.SinCosSeries(true, ssig1, csig1, C2a));
     vals.m0 = A1m1 - A2m1;
     var J12 = vals.m0 * sig12 + (AB1 - AB2);
     // Missing a factor of _b.
@@ -443,7 +531,7 @@ GeographicLib.GeodesicLine = {};
       vals.salp2 = cbet1 * somg12;
       vals.calp2 = sbet12 - cbet1 * sbet2 *
         (comg12 >= 0 ? m.sq(somg12) / (1 + comg12) : 1 - comg12);
-      // SinCosNorm(vals.salp2, vals.calp2);
+      // norm(vals.salp2, vals.calp2);
       t = m.hypot(vals.salp2, vals.calp2); vals.salp2 /= t; vals.calp2 /= t;
       // Set return value
       vals.sig12 = Math.atan2(ssig12, csig12);
@@ -545,7 +633,7 @@ GeographicLib.GeodesicLine = {};
     }
     // Sanity check on starting guess.  Backwards check allows NaN through.
     if (!(vals.salp1 <= 0)) {
-      // SinCosNorm(vals.salp1, vals.calp1);
+      // norm(vals.salp1, vals.calp1);
       t = m.hypot(vals.salp1, vals.calp1); vals.salp1 /= t; vals.calp1 /= t;
     } else {
       vals.salp1 = 1; vals.calp1 = 0;
@@ -574,9 +662,9 @@ GeographicLib.GeodesicLine = {};
     // tan(omg1) = sin(alp0) * tan(sig1) = tan(omg1)=tan(alp1)*sin(bet1)
     vals.ssig1 = sbet1; somg1 = salp0 * sbet1;
     vals.csig1 = comg1 = calp1 * cbet1;
-    // SinCosNorm(vals.ssig1, vals.csig1);
+    // norm(vals.ssig1, vals.csig1);
     t = m.hypot(vals.ssig1, vals.csig1); vals.ssig1 /= t; vals.csig1 /= t;
-    // SinCosNorm(somg1, comg1); -- don't need to normalize!
+    // norm(somg1, comg1); -- don't need to normalize!
 
     // Enforce symmetries in the case abs(bet2) = -bet1.  Need to be careful
     // about this case, since this can yield singularities in the Newton
@@ -596,9 +684,9 @@ GeographicLib.GeodesicLine = {};
     // tan(omg2) = sin(alp0) * tan(sig2).
     vals.ssig2 = sbet2; somg2 = salp0 * sbet2;
     vals.csig2 = comg2 = vals.calp2 * cbet2;
-    // SinCosNorm(vals.ssig2, vals.csig2);
+    // norm(vals.ssig2, vals.csig2);
     t = m.hypot(vals.ssig2, vals.csig2); vals.ssig2 /= t; vals.csig2 /= t;
-    // SinCosNorm(somg2, comg2); -- don't need to normalize!
+    // norm(somg2, comg2); -- don't need to normalize!
 
     // sig12 = sig2 - sig1, limit to [0, pi]
     vals.sig12 = Math.atan2(Math.max(vals.csig1 * vals.ssig2 -
@@ -612,8 +700,8 @@ GeographicLib.GeodesicLine = {};
     var k2 = m.sq(calp0) * this._ep2;
     vals.eps = k2 / (2 * (1 + Math.sqrt(1 + k2)) + k2);
     this.C3f(vals.eps, C3a);
-    B312 = (g.SinCosSeries(true, vals.ssig2, vals.csig2, C3a, g.nC3_-1) -
-            g.SinCosSeries(true, vals.ssig1, vals.csig1, C3a, g.nC3_-1));
+    B312 = (g.SinCosSeries(true, vals.ssig2, vals.csig2, C3a) -
+            g.SinCosSeries(true, vals.ssig1, vals.csig1, C3a));
     h0 = -this._f * this.A3f(vals.eps);
     vals.domg12 = salp0 * h0 * (vals.sig12 + B312);
     vals.lam12 = omg12 + vals.domg12;
@@ -642,13 +730,13 @@ GeographicLib.GeodesicLine = {};
     // east-going and meridional geodesics.
     var lon12 = m.AngDiff(m.AngNormalize(lon1), m.AngNormalize(lon2));
     // If very close to being on the same half-meridian, then make it so.
-    lon12 = g.AngRound(lon12);
+    lon12 = m.AngRound(lon12);
     // Make longitude difference positive.
     var lonsign = lon12 >= 0 ? 1 : -1;
     lon12 *= lonsign;
     // If really close to the equator, treat as on equator.
-    lat1 = g.AngRound(lat1);
-    lat2 = g.AngRound(lat2);
+    lat1 = m.AngRound(lat1);
+    lat2 = m.AngRound(lat2);
     // Swap points so that point with higher (abs) latitude is point 1
     var t, swapp = Math.abs(lat1) >= Math.abs(lat2) ? 1 : -1;
     if (swapp < 0) {
@@ -680,14 +768,14 @@ GeographicLib.GeodesicLine = {};
     // Ensure cbet1 = +epsilon at poles
     sbet1 = this._f1 * Math.sin(phi);
     cbet1 = lat1 === -90 ? g.tiny_ : Math.cos(phi);
-    // SinCosNorm(sbet1, cbet1);
+    // norm(sbet1, cbet1);
     t = m.hypot(sbet1, cbet1); sbet1 /= t; cbet1 /= t;
 
     phi = lat2 * m.degree;
     // Ensure cbet2 = +epsilon at poles
     sbet2 = this._f1 * Math.sin(phi);
     cbet2 = Math.abs(lat2) === 90 ? g.tiny_ : Math.cos(phi);
-    // SinCosNorm(sbet2, cbet2);
+    // norm(sbet2, cbet2);
     t = m.hypot(sbet2, cbet2); sbet2 /= t; cbet2 /= t;
 
     // If cbet1 < -sbet1, then cbet2 - cbet1 is a sensitive measure of the
@@ -861,7 +949,7 @@ GeographicLib.GeodesicLine = {};
             if (nsalp1 > 0 && Math.abs(dalp1) < Math.PI) {
               calp1 = calp1 * cdalp1 - salp1 * sdalp1;
               salp1 = Math.max(0, nsalp1);
-              // SinCosNorm(salp1, calp1);
+              // norm(salp1, calp1);
               t = m.hypot(salp1, calp1); salp1 /= t; calp1 /= t;
               // In some regimes we don't get quadratic convergence because
               // slope -> 0.  So use convergence conditions based on epsilon
@@ -880,7 +968,7 @@ GeographicLib.GeodesicLine = {};
           // WGS84 and random input: mean = 4.74, sd = 0.99
           salp1 = (salp1a + salp1b)/2;
           calp1 = (calp1a + calp1b)/2;
-          // SinCosNorm(salp1, calp1);
+          // norm(salp1, calp1);
           t = m.hypot(salp1, calp1); salp1 /= t; calp1 /= t;
           tripn = false;
           tripb = (Math.abs(salp1a - salp1) + (calp1a - calp1) < g.tolb_ ||
@@ -925,15 +1013,15 @@ GeographicLib.GeodesicLine = {};
         eps = k2 / (2 * (1 + Math.sqrt(1 + k2)) + k2);
         // Multiplier = a^2 * e^2 * cos(alpha0) * sin(alpha0).
         A4 = m.sq(this._a) * calp0 * salp0 * this._e2;
-        // SinCosNorm(ssig1, csig1);
+        // norm(ssig1, csig1);
         t = m.hypot(ssig1, csig1); ssig1 /= t; csig1 /= t;
-        // SinCosNorm(ssig2, csig2);
+        // norm(ssig2, csig2);
         t = m.hypot(ssig2, csig2); ssig2 /= t; csig2 /= t;
         var C4a = new Array(g.nC4_);
         this.C4f(eps, C4a);
         var
-        B41 = g.SinCosSeries(false, ssig1, csig1, C4a, g.nC4_),
-        B42 = g.SinCosSeries(false, ssig2, csig2, C4a, g.nC4_);
+        B41 = g.SinCosSeries(false, ssig1, csig1, C4a),
+        B42 = g.SinCosSeries(false, ssig2, csig2, C4a);
         vals.S12 = A4 * (B42 - B41);
       } else
         // Avoid problems with indeterminate sig1, sig2 on equator
diff --git a/doc/scripts/GeographicLib/GeodesicLine.js b/doc/scripts/GeographicLib/GeodesicLine.js
index 89d46aa..a084f8e 100644
--- a/doc/scripts/GeographicLib/GeodesicLine.js
+++ b/doc/scripts/GeographicLib/GeodesicLine.js
@@ -30,9 +30,10 @@
     this._b = geod._b;
     this._c2 = geod._c2;
     this._f1 = geod._f1;
-    this._caps = !caps ? g.ALL : (caps | g.LATITUDE | g.AZIMUTH);
+    this._caps = (!caps ? g.ALL : (caps | g.LATITUDE | g.AZIMUTH)) |
+      g.LONG_UNROLL;
 
-    azi1 = g.AngRound(m.AngNormalize(azi1));
+    azi1 = m.AngRound(m.AngNormalize(azi1));
     this._lat1 = lat1;
     this._lon1 = lon1;
     this._azi1 = azi1;
@@ -47,7 +48,7 @@
     // Ensure cbet1 = +epsilon at poles
     sbet1 = this._f1 * Math.sin(phi);
     cbet1 = Math.abs(lat1) === 90 ? g.tiny_ : Math.cos(phi);
-    // SinCosNorm(sbet1, cbet1);
+    // norm(sbet1, cbet1);
     var t = m.hypot(sbet1, cbet1); sbet1 /= t; cbet1 /= t;
     this._dn1 = Math.sqrt(1 + geod._ep2 * m.sq(sbet1));
 
@@ -68,10 +69,10 @@
     this._ssig1 = sbet1; this._somg1 = this._salp0 * sbet1;
     this._csig1 = this._comg1 =
       sbet1 !== 0 || this._calp1 !== 0 ? cbet1 * this._calp1 : 1;
-    // SinCosNorm(this._ssig1, this._csig1); // sig1 in (-pi, pi]
+    // norm(this._ssig1, this._csig1); // sig1 in (-pi, pi]
     t = m.hypot(this._ssig1, this._csig1);
     this._ssig1 /= t; this._csig1 /= t;
-    // SinCosNorm(this._somg1, this._comg1); -- don't need to normalize!
+    // norm(this._somg1, this._comg1); -- don't need to normalize!
 
     this._k2 = m.sq(this._calp0) * geod._ep2;
     var eps = this._k2 / (2 * (1 + Math.sqrt(1 + this._k2)) + this._k2);
@@ -80,14 +81,13 @@
       this._A1m1 = g.A1m1f(eps);
       this._C1a = new Array(g.nC1_ + 1);
       g.C1f(eps, this._C1a);
-      this._B11 = g.SinCosSeries(true, this._ssig1, this._csig1,
-                                 this._C1a, g.nC1_);
+      this._B11 = g.SinCosSeries(true, this._ssig1, this._csig1, this._C1a);
       var s = Math.sin(this._B11), c = Math.cos(this._B11);
       // tau1 = sig1 + B11
       this._stau1 = this._ssig1 * c + this._csig1 * s;
       this._ctau1 = this._csig1 * c - this._ssig1 * s;
       // Not necessary because C1pa reverts C1a
-      //    _B11 = -SinCosSeries(true, _stau1, _ctau1, _C1pa, nC1p_);
+      //    _B11 = -SinCosSeries(true, _stau1, _ctau1, _C1pa);
     }
 
     if (this._caps & g.CAP_C1p) {
@@ -99,16 +99,14 @@
       this._A2m1 = g.A2m1f(eps);
       this._C2a = new Array(g.nC2_ + 1);
       g.C2f(eps, this._C2a);
-      this._B21 = g.SinCosSeries(true, this._ssig1, this._csig1,
-                                 this._C2a, g.nC2_);
+      this._B21 = g.SinCosSeries(true, this._ssig1, this._csig1, this._C2a);
     }
 
     if (this._caps & g.CAP_C3) {
       this._C3a = new Array(g.nC3_);
       geod.C3f(eps, this._C3a);
       this._A3c = -this._f * this._salp0 * geod.A3f(eps);
-      this._B31 = g.SinCosSeries(true, this._ssig1, this._csig1,
-                                 this._C3a, g.nC3_-1);
+      this._B31 = g.SinCosSeries(true, this._ssig1, this._csig1, this._C3a);
     }
 
     if (this._caps & g.CAP_C4) {
@@ -116,8 +114,7 @@
       geod.C4f(eps, this._C4a);
       // Multiplier = a^2 * e^2 * cos(alpha0) * sin(alpha0)
       this._A4 = m.sq(this._a) * this._calp0 * this._salp0 * geod._e2;
-      this._B41 = g.SinCosSeries(false, this._ssig1, this._csig1,
-                                 this._C4a, g.nC4_);
+      this._B41 = g.SinCosSeries(false, this._ssig1, this._csig1, this._C4a);
     }
   };
 
@@ -151,7 +148,7 @@
       B12 = - g.SinCosSeries(true,
                              this._stau1 * c + this._ctau1 * s,
                              this._ctau1 * c - this._stau1 * s,
-                             this._C1pa, g.nC1p_);
+                             this._C1pa);
       sig12 = tau12 - (B12 - this._B11);
       ssig12 = Math.sin(sig12); csig12 = Math.cos(sig12);
       if (Math.abs(this._f) > 0.01) {
@@ -178,7 +175,7 @@
         //      1/5   157e6 3.8e9 280e6
         ssig2 = this._ssig1 * csig12 + this._csig1 * ssig12;
         csig2 = this._csig1 * csig12 - this._ssig1 * ssig12;
-        B12 = g.SinCosSeries(true, ssig2, csig2, this._C1a, g.nC1_);
+        B12 = g.SinCosSeries(true, ssig2, csig2, this._C1a);
         var serr = (1 + this._A1m1) * (sig12 + (B12 - this._B11)) -
           s12_a12 / this._b;
         sig12 = sig12 - serr / Math.sqrt(1 + this._k2 * m.sq(ssig2));
@@ -187,7 +184,7 @@
       }
     }
 
-    var omg12, lam12, lon12;
+    var omg12, lam12, lon12, E;
     var sbet2, cbet2, somg2, comg2, salp2, calp2;
     // sig2 = sig1 + sig12
     ssig2 = this._ssig1 * csig12 + this._csig1 * ssig12;
@@ -195,7 +192,7 @@
     var dn2 = Math.sqrt(1 + this._k2 * m.sq(ssig2));
     if (outmask & (g.DISTANCE | g.REDUCEDLENGTH | g.GEODESICSCALE)) {
       if (arcmode || Math.abs(this._f) > 0.01)
-        B12 = g.SinCosSeries(true, ssig2, csig2, this._C1a, g.nC1_);
+        B12 = g.SinCosSeries(true, ssig2, csig2, this._C1a);
       AB1 = (1 + this._A1m1) * (B12 - this._B11);
     }
     // sin(bet2) = cos(alp0) * sin(sig2)
@@ -214,19 +211,22 @@
     if (outmask & g.LONGITUDE) {
       // tan(omg2) = sin(alp0) * tan(sig2)
       somg2 = this._salp0 * ssig2; comg2 = csig2; // No need to normalize
+      E = this._salp0 < 0 ? -1 : 1;
       // omg12 = omg2 - omg1
-      omg12 = outmask & g.LONG_NOWRAP ? sig12 -
-        (Math.atan2(ssig2, csig2) - Math.atan2(this._ssig1, this._csig1)) +
-        (Math.atan2(somg2, comg2) - Math.atan2(this._somg1, this._comg1)) :
+      omg12 = outmask & g.LONG_UNROLL ?
+        E * (sig12 -
+             (Math.atan2(ssig2, csig2) -
+              Math.atan2(this._ssig1, this._csig1)) +
+             (Math.atan2(E * somg2, comg2) -
+              Math.atan2(E * this._somg1, this._comg1))) :
         Math.atan2(somg2 * this._comg1 - comg2 * this._somg1,
                      comg2 * this._comg1 + somg2 * this._somg1);
       lam12 = omg12 + this._A3c *
-        ( sig12 + (g.SinCosSeries(true, ssig2, csig2, this._C3a, g.nC3_-1) -
+        ( sig12 + (g.SinCosSeries(true, ssig2, csig2, this._C3a) -
                    this._B31));
       lon12 = lam12 / m.degree;
       // Use AngNormalize2 because longitude might have wrapped multiple times.
-      lon12 = m.AngNormalize2(lon12);
-      vals.lon2 = outmask & g.LONG_NOWRAP ? this._lon1 + lon12 :
+      vals.lon2 = outmask & g.LONG_UNROLL ? this._lon1 + lon12 :
         m.AngNormalize(m.AngNormalize(this._lon1) + m.AngNormalize2(lon12));
     }
 
@@ -239,7 +239,7 @@
 
     if (outmask & (g.REDUCEDLENGTH | g.GEODESICSCALE)) {
       var
-      B22 = g.SinCosSeries(true, ssig2, csig2, this._C2a, g.nC2_),
+      B22 = g.SinCosSeries(true, ssig2, csig2, this._C2a),
       AB2 = (1 + this._A2m1) * (B22 - this._B21),
       J12 = (this._A1m1 - this._A2m1) * sig12 + (AB1 - AB2);
       if (outmask & g.REDUCEDLENGTH)
@@ -258,10 +258,10 @@
 
     if (outmask & g.AREA) {
       var
-      B42 = g.SinCosSeries(false, ssig2, csig2, this._C4a, g.nC4_);
+      B42 = g.SinCosSeries(false, ssig2, csig2, this._C4a);
       var salp12, calp12;
       if (this._calp0 === 0 || this._salp0 === 0) {
-        // alp12 = alp2 - alp1, used in atan2 so no need to normalized
+        // alp12 = alp2 - alp1, used in atan2 so no need to normalize
         salp12 = salp2 * this._calp1 - calp2 * this._salp1;
         calp12 = calp2 * this._calp1 + salp2 * this._salp1;
         // The right thing appears to happen if alp1 = +/-180 and alp2 = 0, viz
diff --git a/doc/scripts/GeographicLib/Interface.js b/doc/scripts/GeographicLib/Interface.js
index f25a9e4..50257cf 100644
--- a/doc/scripts/GeographicLib/Interface.js
+++ b/doc/scripts/GeographicLib/Interface.js
@@ -51,6 +51,7 @@
  *   GeographicLib.Geodesic.REDUCEDLENGTH
  *   GeographicLib.Geodesic.GEODESICSCALE
  *   GeographicLib.Geodesic.AREA
+ *   GeographicLib.Geodesic.LONG_UNROLL
  *   GeographicLib.Geodesic.ALL
  *
  **********************************************************************
@@ -105,7 +106,6 @@
       throw new Error("latitude " + lat + " not in [-90, 90]");
     if (!(lon >= -540 && lon < 540))
       throw new Error("longitude " + lon + " not in [-540, 540)");
-    return m.AngNormalize(lon);
   };
 
   g.Geodesic.CheckAzimuth = function(azi) {
@@ -121,25 +121,33 @@
 
   g.Geodesic.prototype.Inverse = function(lat1, lon1, lat2, lon2, outmask) {
     if (!outmask) outmask = g.DISTANCE | g.AZIMUTH;
-    lon1 = g.Geodesic.CheckPosition(lat1, lon1);
-    lon2 = g.Geodesic.CheckPosition(lat2, lon2);
+    g.Geodesic.CheckPosition(lat1, lon1);
+    g.Geodesic.CheckPosition(lat2, lon2);
 
     var result = this.GenInverse(lat1, lon1, lat2, lon2, outmask);
-    result.lat1 = lat1; result.lon1 = lon1;
-    result.lat2 = lat2; result.lon2 = lon2;
+    lon2 = m.AngNormalize(lon2);
+    if (outmask & g.LONG_UNROLL) {
+      result.lon1 = lon1;
+      result.lon2 = lon1 + m.AngDiff(m.AngNormalize(lon1), lon2);
+    } else {
+      result.lon1 = m.AngNormalize(lon1);
+      result.lon2 = lon2;
+    }
+    result.lat1 = lat1;
+    result.lat2 = lat2;
 
     return result;
   };
 
   g.Geodesic.prototype.Direct = function(lat1, lon1, azi1, s12, outmask) {
     if (!outmask) outmask = g.LATITUDE | g.LONGITUDE | g.AZIMUTH;
-    lon1 = g.Geodesic.CheckPosition(lat1, lon1);
+    g.Geodesic.CheckPosition(lat1, lon1);
     azi1 = g.Geodesic.CheckAzimuth(azi1);
     g.Geodesic.CheckDistance(s12);
 
     var result = this.GenDirect(lat1, lon1, azi1, false, s12, outmask);
-    result.lat1 = lat1; result.lon1 = lon1;
-    result.azi1 = azi1; result.s12 = s12;
+    result.lon1 = (outmask & g.LONG_UNROLL) ? lon1 : m.AngNormalize(lon1)
+    result.lat1 = lat1; result.azi1 = azi1; result.s12 = s12;
 
     return result;
   };
diff --git a/doc/scripts/GeographicLib/Math.js b/doc/scripts/GeographicLib/Math.js
index b50d220..6c4f773 100644
--- a/doc/scripts/GeographicLib/Math.js
+++ b/doc/scripts/GeographicLib/Math.js
@@ -56,6 +56,25 @@ GeographicLib.Math.sum = function(u, v) {
   return {s: s, t: t};
 };
 
+GeographicLib.Math.polyval = function(N, p, s, x) {
+  var y = N < 0 ? 0 : p[s++];
+  while (--N >= 0) y = y * x + p[s++];
+  return y;
+}
+
+GeographicLib.Math.AngRound = function(x) {
+  // The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57 for
+  // reals = 0.7 pm on the earth if x is an angle in degrees.  (This is about
+  // 1000 times more resolution than we get with angles around 90 degrees.)  We
+  // use this to avoid having to deal with near singular cases when x is
+  // non-zero but tiny (e.g., 1.0e-200).  This also converts -0 to +0.
+  var z = 1/16;
+  var y = Math.abs(x);
+  // The compiler mustn't "simplify" z - (z - y) to y
+  y = y < z ? z - (z - y) : y;
+  return x < 0 ? 0 - y : y;
+};
+
 GeographicLib.Math.AngNormalize = function(x) {
   // Place angle in [-180, 180).  Assumes x is in [-540, 540).
   return x >= 180 ? x - 360 : (x < -180 ? x + 360 : x);
diff --git a/doc/scripts/GeographicLib/PolygonArea.js b/doc/scripts/GeographicLib/PolygonArea.js
index ae9d0a7..73e85e8 100644
--- a/doc/scripts/GeographicLib/PolygonArea.js
+++ b/doc/scripts/GeographicLib/PolygonArea.js
@@ -57,7 +57,7 @@ GeographicLib.PolygonArea = {};
     this._area0 = 4 * Math.PI * earth._c2;
     this._polyline = !polyline ? false : polyline;
     this._mask = g.LATITUDE | g.LONGITUDE | g.DISTANCE |
-          (this._polyline ? g.NONE : g.AREA | g.LONG_NOWRAP);
+          (this._polyline ? g.NONE : g.AREA | g.LONG_UNROLL);
     if (!this._polyline)
       this._areasum = new a.Accumulator(0);
     this._perimetersum = new a.Accumulator(0);
diff --git a/doc/scripts/geod-calc.html b/doc/scripts/geod-calc.html
index adb0481..40e3710 100644
--- a/doc/scripts/geod-calc.html
+++ b/doc/scripts/geod-calc.html
@@ -406,7 +406,7 @@ function GeodesicArea(input, polyline) {
 	is a little unfair, since Google Earth has no concept of
 	polygons which encircle a pole.)  If the <i>polyline</i> option
 	is selected then just the length of the line joining the points
-	is is returned.  To perform the calculation, press the
+	is returned.  To perform the calculation, press the
 	“COMPUTE” button.
       </p>
       <p>Enter points, one per line, as <i>“lat lon”</i>:</p>
diff --git a/dotnet/NETGeographicLib/DMS.h b/dotnet/NETGeographicLib/DMS.h
index a72e639..878e712 100644
--- a/dotnet/NETGeographicLib/DMS.h
+++ b/dotnet/NETGeographicLib/DMS.h
@@ -175,9 +175,8 @@ public:
      *
      * @param[in] dmsa first string.
      * @param[in] dmsb second string.
-     * @param[out] lat latitude.
-     * @param[out] lon longitude reduced to the range [−180°,
-     *   180°).
+     * @param[out] lat latitude (degrees).
+     * @param[out] lon longitude (degrees).
      * @param[in] swaplatlong if true assume longitude is given before latitude
      *   in the absence of hemisphere designators (default false).
      * @exception GeographicErr if \e dmsa or \e dmsb is malformed.
diff --git a/dotnet/NETGeographicLib/Geodesic.h b/dotnet/NETGeographicLib/Geodesic.h
index abb9a98..584d350 100644
--- a/dotnet/NETGeographicLib/Geodesic.h
+++ b/dotnet/NETGeographicLib/Geodesic.h
@@ -235,12 +235,14 @@ namespace NETGeographicLib
           **********************************************************************/
          AREA          = 1U<<14 | unsigned(captype::CAP_C4),
          /**
-          * Do not wrap the \e lon2 in the direct calculation.
+          * Unroll \e lon2 in the direct calculation.  (This flag used to be
+          * called LONG_NOWRAP.)
           * @hideinitializer
           **********************************************************************/
-         LONG_NOWRAP   = 1U<<15,
+         LONG_UNROLL   = 1U<<15,
+         LONG_NOWRAP   = LONG_UNROLL,
          /**
-          * All capabilities, calculate everything.  (LONG_NOWRAP is not
+          * All capabilities, calculate everything.  (LONG_UNROLL is not
           * included in this mask.)
           * @hideinitializer
           **********************************************************************/
@@ -513,8 +515,8 @@ namespace NETGeographicLib
          *   M12 and \e M21;
          * - \e outmask |= Geodesic::AREA for the area \e S12;
          * - \e outmask |= Geodesic::ALL for all of the above;
-         * - \e outmask |= Geodesic::LONG_NOWRAP stops the returned value of \e
-         *   lon2 being wrapped into the range [−180°, 180°).
+         * - \e outmask |= Geodesic::LONG_UNROLL to unroll \e lon2 instead of
+         *   wrapping it into the range [−180°, 180°).
          * .
          * The function value \e a12 is always computed and returned and this
          * equals \e s12_a12 is \e arcmode is true.  If \e outmask includes
@@ -522,11 +524,12 @@ namespace NETGeographicLib
          * It is not necessary to include Geodesic::DISTANCE_IN in \e outmask; this
          * is automatically included is \e arcmode is false.
          *
-         * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
-         * indicates how many times the geodesic wrapped around the ellipsoid.
-         * Because \e lon2 might be outside the normal allowed range for
-         * longitudes, [−540°, 540°), be sure to normalize it with
-         * Math::AngNormalize2 before using it in other GeographicLib calls.
+         * With the LONG_UNROLL bit set, the quantity \e lon2 − \e lon1
+         * indicates how many times and in what sense the geodesic encircles
+         * the ellipsoid.  Because \e lon2 might be outside the normal allowed
+         * range for longitudes, [−540°, 540°), be sure to
+         * normalize it with Math::AngNormalize2 before using it in other
+         * GeographicLib calls.
          **********************************************************************/
         double GenDirect(double lat1, double lon1, double azi1,
                         bool arcmode, double s12_a12,
diff --git a/dotnet/NETGeographicLib/GeodesicExact.h b/dotnet/NETGeographicLib/GeodesicExact.h
index ebc86ab..cb506d8 100644
--- a/dotnet/NETGeographicLib/GeodesicExact.h
+++ b/dotnet/NETGeographicLib/GeodesicExact.h
@@ -96,7 +96,7 @@ namespace NETGeographicLib
           CAP_ALL  = 0x1FU,
           CAP_MASK = CAP_ALL,
           OUT_ALL  = 0x7F80U,
-          OUT_MASK = 0xFF80U,       // Includes LONG_NOWRAP
+          OUT_MASK = 0xFF80U,       // Includes LONG_UNROLL
         };
         // pointer to the unmanaged GeographicLib::GeodesicExact.
         const GeographicLib::GeodesicExact* m_pGeodesicExact;
@@ -164,12 +164,14 @@ namespace NETGeographicLib
            **********************************************************************/
           AREA          = 1U<<14 | unsigned(captype::CAP_C4),
           /**
-           * Do not wrap the \e lon2 in the direct calculation.
+           * Unroll \e lon2 in the direct calculation.  (This flag used to be
+           * called LONG_NOWRAP.)
            * @hideinitializer
            **********************************************************************/
-          LONG_NOWRAP   = 1U<<15,
+          LONG_UNROLL   = 1U<<15,
+          LONG_NOWRAP   = LONG_UNROLL,
           /**
-           * All capabilities, calculate everything.  (LONG_NOWRAP is not
+           * All capabilities, calculate everything.  (LONG_UNROLL is not
            * included in this mask.)
            * @hideinitializer
            **********************************************************************/
@@ -444,8 +446,8 @@ namespace NETGeographicLib
          *   M12 and \e M21;
          * - \e outmask |= GeodesicExact::AREA for the area \e S12;
          * - \e outmask |= GeodesicExact::ALL for all of the above;
-         * - \e outmask |= GeodesicExact::LONG_NOWRAP stops the returned value of
-         *   \e lon2 being wrapped into the range [−180°, 180°).
+         * - \e outmask |= GeodesicExact::LONG_UNROLL to unroll \e lon2 instead of
+         *   wrapping it into the range [−180°, 180°).
          * .
          * The function value \e a12 is always computed and returned and this
          * equals \e s12_a12 is \e arcmode is true.  If \e outmask includes
@@ -453,11 +455,12 @@ namespace NETGeographicLib
          * s12_a12.  It is not necessary to include GeodesicExact::DISTANCE_IN in
          * \e outmask; this is automatically included is \e arcmode is false.
          *
-         * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
-         * indicates how many times the geodesic wrapped around the ellipsoid.
-         * Because \e lon2 might be outside the normal allowed range for
-         * longitudes, [−540°, 540°), be sure to normalize it with
-         * Math::AngNormalize2 before using it in other GeographicLib calls.
+         * With the LONG_UNROLL bit set, the quantity \e lon2 − \e lon1
+         * indicates how many times and in what sense the geodesic encircles
+         * the ellipsoid.  Because \e lon2 might be outside the normal allowed
+         * range for longitudes, [−540°, 540°), be sure to
+         * normalize it with Math::AngNormalize2 before using it in other
+         * GeographicLib calls.
          **********************************************************************/
         double GenDirect(double lat1, double lon1, double azi1,
                         bool arcmode, double s12_a12, GeodesicExact::mask outmask,
diff --git a/dotnet/NETGeographicLib/GeodesicLine.h b/dotnet/NETGeographicLib/GeodesicLine.h
index 6f492e0..5f18855 100644
--- a/dotnet/NETGeographicLib/GeodesicLine.h
+++ b/dotnet/NETGeographicLib/GeodesicLine.h
@@ -135,12 +135,14 @@ namespace NETGeographicLib
           **********************************************************************/
          AREA          = 1U<<14 | unsigned(captype::CAP_C4),
          /**
-          * Do not wrap the \e lon2 in the direct calculation.
+          * Unroll \e lon2 in the direct calculation.  (This flag used to be
+          * called LONG_NOWRAP.)
           * @hideinitializer
           **********************************************************************/
-         LONG_NOWRAP   = 1U<<15,
+         LONG_UNROLL   = 1U<<15,
+         LONG_NOWRAP   = LONG_UNROLL,
          /**
-          * All capabilities, calculate everything.  (LONG_NOWRAP is not
+          * All capabilities, calculate everything.  (LONG_UNROLL is not
           * included in this mask.)
           * @hideinitializer
           **********************************************************************/
@@ -462,19 +464,20 @@ namespace NETGeographicLib
          *   M12 and \e M21;
          * - \e outmask |= GeodesicLine::AREA for the area \e S12;
          * - \e outmask |= GeodesicLine::ALL for all of the above;
-         * - \e outmask |= GeodesicLine::LONG_NOWRAP stops the returned value of \e
-         *   lon2 being wrapped into the range [−180°, 180°).
+         * - \e outmask |= GeodesicLine::LONG_UNROLL to unroll \e lon2 instead of
+         *   wrapping it into the range [−180°, 180°).
          * .
          * Requesting a value which the GeodesicLine object is not capable of
          * computing is not an error; the corresponding argument will not be
          * altered.  Note, however, that the arc length is always computed and
          * returned as the function value.
          *
-         * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
-         * indicates how many times the geodesic wrapped around the ellipsoid.
-         * Because \e lon2 might be outside the normal allowed range for
-         * longitudes, [−540°, 540°), be sure to normalize it with
-         * Math::AngNormalize2 before using it in other GeographicLib calls.
+         * With the LONG_UNROLL bit set, the quantity \e lon2 − \e lon1
+         * indicates how many times and in what sense the geodesic encircles
+         * the ellipsoid.  Because \e lon2 might be outside the normal allowed
+         * range for longitudes, [−540°, 540°), be sure to
+         * normalize it with Math::AngNormalize2 before using it in other
+         * GeographicLib calls.
          **********************************************************************/
         double GenPosition(bool arcmode, double s12_a12,
                     GeodesicLine::mask outmask,
diff --git a/dotnet/NETGeographicLib/GeodesicLineExact.h b/dotnet/NETGeographicLib/GeodesicLineExact.h
index 27828d3..3b78998 100644
--- a/dotnet/NETGeographicLib/GeodesicLineExact.h
+++ b/dotnet/NETGeographicLib/GeodesicLineExact.h
@@ -56,7 +56,7 @@ namespace NETGeographicLib
           CAP_ALL  = 0x1FU,
           CAP_MASK = CAP_ALL,
           OUT_ALL  = 0x7F80U,
-          OUT_MASK = 0xFF80U,       // Includes LONG_NOWRAP
+          OUT_MASK = 0xFF80U,       // Includes LONG_UNROLL
         };
         // a pointer to the GeographicLib::GeodesicLineExact.
         const GeographicLib::GeodesicLineExact* m_pGeodesicLineExact;
@@ -124,12 +124,14 @@ namespace NETGeographicLib
            **********************************************************************/
           AREA          = 1U<<14 | unsigned(captype::CAP_C4),
           /**
-           * Do not wrap the \e lon2 in the direct calculation.
+           * Unroll \e lon2 in the direct calculation.  (This flag used to be
+           * called LONG_NOWRAP.)
            * @hideinitializer
            **********************************************************************/
-          LONG_NOWRAP   = 1U<<15,
+          LONG_UNROLL   = 1U<<15,
+          LONG_NOWRAP   = LONG_UNROLL,
           /**
-           * All capabilities, calculate everything.  (LONG_NOWRAP is not
+           * All capabilities, calculate everything.  (LONG_UNROLL is not
            * included in this mask.)
            * @hideinitializer
            **********************************************************************/
@@ -453,19 +455,20 @@ namespace NETGeographicLib
          *   \e M12 and \e M21;
          * - \e outmask |= GeodesicLineExact::AREA for the area \e S12;
          * - \e outmask |= GeodesicLineExact::ALL for all of the above;
-         * - \e outmask |= GeodesicLineExact::LONG_NOWRAP stops the returned value
-         *   of \e lon2 being wrapped into the range [−180°, 180°).
+         * - \e outmask |= GeodesicLineExact::LONG_UNROLL  to unroll \e lon2 instead
+         *   of wrapping it into the range [−180°, 180°).
          * .
          * Requesting a value which the GeodesicLineExact object is not capable of
          * computing is not an error; the corresponding argument will not be
          * altered.  Note, however, that the arc length is always computed and
          * returned as the function value.
          *
-         * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
-         * indicates how many times the geodesic wrapped around the ellipsoid.
-         * Because \e lon2 might be outside the normal allowed range for
-         * longitudes, [−540°, 540°), be sure to normalize it with
-         * Math::AngNormalize2 before using it in other GeographicLib calls.
+         * With the LONG_UNROLL bit set, the quantity \e lon2 − \e lon1
+         * indicates how many times and in what sense the geodesic encircles
+         * the ellipsoid.  Because \e lon2 might be outside the normal allowed
+         * range for longitudes, [−540°, 540°), be sure to
+         * normalize it with Math::AngNormalize2 before using it in other
+         * GeographicLib calls.
          **********************************************************************/
         double GenPosition(bool arcmode, double s12_a12,
                 GeodesicLineExact::mask outmask,
diff --git a/dotnet/NETGeographicLib/Rhumb.h b/dotnet/NETGeographicLib/Rhumb.h
index 84ee262..abdecf5 100644
--- a/dotnet/NETGeographicLib/Rhumb.h
+++ b/dotnet/NETGeographicLib/Rhumb.h
@@ -107,12 +107,14 @@ namespace NETGeographicLib {
        **********************************************************************/
       AREA          = 1U<<14,
       /**
-       * Do not wrap the \e lon2 in the direct calculation.
+       * Unroll \e lon2 in the direct calculation.  (This flag used to be
+       * called LONG_NOWRAP.)
        * @hideinitializer
        **********************************************************************/
-      LONG_NOWRAP   = 1U<<15,
+      LONG_UNROLL   = 1U<<15,
+      LONG_NOWRAP   = LONG_UNROLL,
       /**
-       * Calculate everything.  (LONG_NOWRAP is not included in this mask.)
+       * Calculate everything.  (LONG_UNROLL is not included in this mask.)
        * @hideinitializer
        **********************************************************************/
       ALL           = 0x7F80U,
@@ -215,10 +217,10 @@ namespace NETGeographicLib {
      * - \e outmask |= Rhumb.LONGITUDE for the latitude \e lon2;
      * - \e outmask |= Rhumb.AREA for the area \e S12;
      * - \e outmask |= Rhumb:.ALL for all of the above;
-     * - \e outmask |= Rhumb.LONG_NOWRAP stops the returned value of \e
-     *   lon2 being wrapped into the range [−180°, 180°).
+     * - \e outmask |= Rhumb.LONG_UNROLL to unroll \e lon2 instead of
+     *   wrapping it into the range [−180°, 180°).
      * .
-     * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
+     * With the LONG_UNROLL bit set, the quantity \e lon2 − \e lon1
      * indicates how many times the rhumb line wrapped around the ellipsoid.
      * Because \e lon2 might be outside the normal allowed range for
      * longitudes, [−540°, 540°), be sure to normalize it with
@@ -420,12 +422,14 @@ namespace NETGeographicLib {
        **********************************************************************/
       AREA          = 1U<<14, //Rhumb::AREA,
       /**
-       * Do wrap the \e lon2 in the direct calculation.
+       * Unroll \e lon2 in the direct calculation.  (This flag used to be
+       * called LONG_NOWRAP.)
        * @hideinitializer
        **********************************************************************/
-      LONG_NOWRAP   = 1U<<14, //Rhumb::LONG_NOWRAP,
+      LONG_UNROLL   = 1U<<15, //Rhumb::LONG_UNROLL,
+      LONG_NOWRAP   = LONG_UNROLL,
       /**
-       * Calculate everything.  (LONG_NOWRAP is not included in this mask.)
+       * Calculate everything.  (LONG_UNROLL is not included in this mask.)
        * @hideinitializer
        **********************************************************************/
       ALL           = 0x7F80U, //Rhumb::ALL,
@@ -490,25 +494,25 @@ namespace NETGeographicLib {
      *
      * @param[in] s12 distance between point 1 and point 2 (meters); it can be
      *   negative.
-     * @param[in] outmask a bitor'ed combination of Rhumb::mask values
+     * @param[in] outmask a bitor'ed combination of RhumbLine::mask values
      *   specifying which of the following parameters should be set.
      * @param[out] lat2 latitude of point 2 (degrees).
      * @param[out] lon2 longitude of point 2 (degrees).
      * @param[out] S12 area under the rhumb line (meters<sup>2</sup>).
      *
-     * The Rhumb::mask values possible for \e outmask are
-     * - \e outmask |= Rhumb::LATITUDE for the latitude \e lat2;
-     * - \e outmask |= Rhumb::LONGITUDE for the latitude \e lon2;
-     * - \e outmask |= Rhumb::AREA for the area \e S12;
-     * - \e outmask |= Rhumb::ALL for all of the above;
-     * - \e outmask |= Rhumb::LONG_NOWRAP stops the returned value of \e
-     *   lon2 being wrapped into the range [−180°, 180°).
+     * The RhumbLine::mask values possible for \e outmask are
+     * - \e outmask |= RhumbLine::LATITUDE for the latitude \e lat2;
+     * - \e outmask |= RhumbLine::LONGITUDE for the latitude \e lon2;
+     * - \e outmask |= RhumbLine::AREA for the area \e S12;
+     * - \e outmask |= RhumbLine::ALL for all of the above;
+     * - \e outmask |= RhumbLine::LONG_UNROLL to unroll \e lon2 instead of
+     *   wrapping it into the range [−180°, 180°).
      * .
-     * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
-     * indicates how many times the rhumb line wrapped around the ellipsoid.
-     * Because \e lon2 might be outside the normal allowed range for
-     * longitudes, [−540°, 540°), be sure to normalize it with
-     * Math::AngNormalize2 before using it in other GeographicLib calls.
+     * With the LONG_UNROLL bit set, the quantity \e lon2 − \e lon1
+     * indicates how many times and in what sense the rhumb line encircles the
+     * ellipsoid.  Because \e lon2 might be outside the normal allowed range
+     * for longitudes, [−540°, 540°), be sure to normalize it
+     * with Math::AngNormalize2 before using it in other GeographicLib calls.
      *
      * If \e s12 is large enough that the rhumb line crosses a pole, the
      * longitude of point 2 is indeterminate (a NaN is returned for \e lon2 and
diff --git a/examples/GeoidToGTX.cpp b/examples/GeoidToGTX.cpp
index 5e3866c..5d168eb 100644
--- a/examples/GeoidToGTX.cpp
+++ b/examples/GeoidToGTX.cpp
@@ -1,6 +1,6 @@
-// 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).
+// Write out a gtx file of geoid heights above the ellipsoid.  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
diff --git a/include/GeographicLib/Config.h b/include/GeographicLib/Config.h
index 8e23e71..7a6dfc7 100644
--- a/include/GeographicLib/Config.h
+++ b/include/GeographicLib/Config.h
@@ -1,8 +1,8 @@
 // This will be overwritten by ./configure
 
-#define GEOGRAPHICLIB_VERSION_STRING "1.42"
+#define GEOGRAPHICLIB_VERSION_STRING "1.43"
 #define GEOGRAPHICLIB_VERSION_MAJOR 1
-#define GEOGRAPHICLIB_VERSION_MINOR 42
+#define GEOGRAPHICLIB_VERSION_MINOR 43
 #define GEOGRAPHICLIB_VERSION_PATCH 0
 
 // Undefine HAVE_LONG_DOUBLE if this type is unknown to the compiler
diff --git a/include/GeographicLib/DMS.hpp b/include/GeographicLib/DMS.hpp
index 801421e..72ef801 100644
--- a/include/GeographicLib/DMS.hpp
+++ b/include/GeographicLib/DMS.hpp
@@ -243,9 +243,8 @@ namespace GeographicLib {
      *
      * @param[in] dmsa first string.
      * @param[in] dmsb second string.
-     * @param[out] lat latitude.
-     * @param[out] lon longitude reduced to the range [−180°,
-     *   180°).
+     * @param[out] lat latitude (degrees).
+     * @param[out] lon longitude (degrees).
      * @param[in] swaplatlong if true assume longitude is given before latitude
      *   in the absence of hemisphere designators (default false).
      * @exception GeographicErr if \e dmsa or \e dmsb is malformed.
@@ -265,7 +264,8 @@ namespace GeographicLib {
      * unchanged.
      **********************************************************************/
     static void DecodeLatLon(const std::string& dmsa, const std::string& dmsb,
-                             real& lat, real& lon, bool swaplatlong = false);
+                             real& lat, real& lon,
+                             bool swaplatlong = false);
 
     /**
      * Convert a string to an angle in degrees.
diff --git a/include/GeographicLib/Geocentric.hpp b/include/GeographicLib/Geocentric.hpp
index 44e69fa..a56e313 100644
--- a/include/GeographicLib/Geocentric.hpp
+++ b/include/GeographicLib/Geocentric.hpp
@@ -73,9 +73,6 @@ namespace GeographicLib {
     friend class GravityCircle;  // GravityCircle uses Rotation
     friend class GravityModel;   // GravityModel uses IntForward
     friend class NormalGravity;  // NormalGravity uses IntForward
-    friend class SphericalHarmonic;
-    friend class SphericalHarmonic1;
-    friend class SphericalHarmonic2;
     static const size_t dim_ = 3;
     static const size_t dim2_ = dim_ * dim_;
     real _a, _f, _e2, _e2m, _e2a, _e4a, _maxrad;
diff --git a/include/GeographicLib/Geodesic.hpp b/include/GeographicLib/Geodesic.hpp
index 2a297b9..41eaa57 100644
--- a/include/GeographicLib/Geodesic.hpp
+++ b/include/GeographicLib/Geodesic.hpp
@@ -15,7 +15,7 @@
 #if !defined(GEOGRAPHICLIB_GEODESIC_ORDER)
 /**
  * The order of the expansions used by Geodesic.
- * GEOGRAPHICLIB_GEODESIC_ORDER can be set to any integer in [0, 8].
+ * GEOGRAPHICLIB_GEODESIC_ORDER can be set to any integer in [3, 8].
  **********************************************************************/
 #  define GEOGRAPHICLIB_GEODESIC_ORDER \
   (GEOGRAPHICLIB_PRECISION == 2 ? 6 : \
@@ -197,7 +197,7 @@ namespace GeographicLib {
       CAP_ALL  = 0x1FU,
       CAP_MASK = CAP_ALL,
       OUT_ALL  = 0x7F80U,
-      OUT_MASK = 0xFF80U,       // Includes LONG_NOWRAP
+      OUT_MASK = 0xFF80U,       // Includes LONG_UNROLL
     };
 
     static real SinCosSeries(bool sinp,
@@ -305,12 +305,16 @@ namespace GeographicLib {
        **********************************************************************/
       AREA          = 1U<<14 | CAP_C4,
       /**
-       * Do not wrap the \e lon2 in the direct calculation.
+       * Unroll \e lon2 in the direct calculation.  (This flag used to be
+       * called LONG_NOWRAP.)
        * @hideinitializer
        **********************************************************************/
-      LONG_NOWRAP   = 1U<<15,
+      LONG_UNROLL   = 1U<<15,
+      /// \cond SKIP
+      LONG_NOWRAP   = LONG_UNROLL,
+      /// \endcond
       /**
-       * All capabilities, calculate everything.  (LONG_NOWRAP is not
+       * All capabilities, calculate everything.  (LONG_UNROLL is not
        * included in this mask.)
        * @hideinitializer
        **********************************************************************/
@@ -610,8 +614,8 @@ namespace GeographicLib {
      *   M12 and \e M21;
      * - \e outmask |= Geodesic::AREA for the area \e S12;
      * - \e outmask |= Geodesic::ALL for all of the above;
-     * - \e outmask |= Geodesic::LONG_NOWRAP stops the returned value of \e
-     *   lon2 being wrapped into the range [−180°, 180°).
+     * - \e outmask |= Geodesic::LONG_UNROLL to unroll \e lon2 instead of
+     *   wrapping it into the range [−180°, 180°).
      * .
      * The function value \e a12 is always computed and returned and this
      * equals \e s12_a12 is \e arcmode is true.  If \e outmask includes
@@ -619,11 +623,12 @@ namespace GeographicLib {
      * It is not necessary to include Geodesic::DISTANCE_IN in \e outmask; this
      * is automatically included is \e arcmode is false.
      *
-     * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
-     * indicates how many times the geodesic wrapped around the ellipsoid.
-     * Because \e lon2 might be outside the normal allowed range for
-     * longitudes, [−540°, 540°), be sure to normalize it with
-     * Math::AngNormalize2 before using it in other GeographicLib calls.
+     * With the Geodesic::LONG_UNROLL bit set, the quantity \e lon2 − \e
+     * lon1 indicates how many times and in what sense the geodesic encircles
+     * the ellipsoid.  Because \e lon2 might be outside the normal allowed
+     * range for longitudes, [−540°, 540°), be sure to normalize
+     * it with Math::AngNormalize2 before using it in other GeographicLib
+     * calls.
      **********************************************************************/
     Math::real GenDirect(real lat1, real lon1, real azi1,
                          bool arcmode, real s12_a12, unsigned outmask,
diff --git a/include/GeographicLib/GeodesicExact.hpp b/include/GeographicLib/GeodesicExact.hpp
index 472ce1d..420bd18 100644
--- a/include/GeographicLib/GeodesicExact.hpp
+++ b/include/GeographicLib/GeodesicExact.hpp
@@ -97,7 +97,7 @@ namespace GeographicLib {
       CAP_ALL  = 0x1FU,
       CAP_MASK = CAP_ALL,
       OUT_ALL  = 0x7F80U,
-      OUT_MASK = 0xFF80U,       // Includes LONG_NOWRAP
+      OUT_MASK = 0xFF80U,       // Includes LONG_UNROLL
     };
 
     static real CosSeries(real sinx, real cosx, const real c[], int n);
@@ -139,7 +139,6 @@ namespace GeographicLib {
       using std::ldexp;
       return ldexp(real(hi), 52) + lo;
     }
-    static const Math::real* rawC4coeff();
 
   public:
 
@@ -203,12 +202,16 @@ namespace GeographicLib {
        **********************************************************************/
       AREA          = 1U<<14 | CAP_C4,
       /**
-       * Do not wrap the \e lon2 in the direct calculation.
+       * Unroll \e lon2 in the direct calculation.  (This flag used to be
+       * called LONG_NOWRAP.)
        * @hideinitializer
        **********************************************************************/
-      LONG_NOWRAP   = 1U<<15,
+      LONG_UNROLL   = 1U<<15,
+      /// \cond SKIP
+      LONG_NOWRAP   = LONG_UNROLL,
+      /// \endcond
       /**
-       * All capabilities, calculate everything.  (LONG_NOWRAP is not
+       * All capabilities, calculate everything.  (LONG_UNROLL is not
        * included in this mask.)
        * @hideinitializer
        **********************************************************************/
@@ -508,8 +511,8 @@ namespace GeographicLib {
      *   M12 and \e M21;
      * - \e outmask |= GeodesicExact::AREA for the area \e S12;
      * - \e outmask |= GeodesicExact::ALL for all of the above;
-     * - \e outmask |= GeodesicExact::LONG_NOWRAP stops the returned value of
-     *   \e lon2 being wrapped into the range [−180°, 180°).
+     * - \e outmask |= GeodesicExact::LONG_UNROLL to unroll \e lon2 instead of
+     *   wrapping it into the range [−180°, 180°).
      * .
      * The function value \e a12 is always computed and returned and this
      * equals \e s12_a12 is \e arcmode is true.  If \e outmask includes
@@ -517,11 +520,12 @@ namespace GeographicLib {
      * s12_a12.  It is not necessary to include GeodesicExact::DISTANCE_IN in
      * \e outmask; this is automatically included is \e arcmode is false.
      *
-     * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
-     * indicates how many times the geodesic wrapped around the ellipsoid.
-     * Because \e lon2 might be outside the normal allowed range for
-     * longitudes, [−540°, 540°), be sure to normalize it with
-     * Math::AngNormalize2 before using it in other GeographicLib calls.
+     * With the GeodesicExact::LONG_UNROLL bit set, the quantity \e lon2
+     * − \e lon1 indicates how many times and in what sense the geodesic
+     * encircles the ellipsoid.  Because \e lon2 might be outside the normal
+     * allowed range for longitudes, [−540°, 540°), be sure to
+     * normalize it with Math::AngNormalize2 before using it in other
+     * GeographicLib calls.
      **********************************************************************/
     Math::real GenDirect(real lat1, real lon1, real azi1,
                          bool arcmode, real s12_a12, unsigned outmask,
diff --git a/include/GeographicLib/GeodesicLine.hpp b/include/GeographicLib/GeodesicLine.hpp
index 3d39587..7607fb6 100644
--- a/include/GeographicLib/GeodesicLine.hpp
+++ b/include/GeographicLib/GeodesicLine.hpp
@@ -147,12 +147,16 @@ namespace GeographicLib {
        **********************************************************************/
       AREA          = Geodesic::AREA,
       /**
-       * Do not wrap \e lon2 in the direct calculation.
+       * Unroll \e lon2 in the direct calculation.  (This flag used to be
+       * called LONG_NOWRAP.)
        * @hideinitializer
        **********************************************************************/
-      LONG_NOWRAP   = Geodesic::LONG_NOWRAP,
+      LONG_UNROLL   = Geodesic::LONG_UNROLL,
+      /// \cond SKIP
+      LONG_NOWRAP   = LONG_UNROLL,
+      /// \endcond
       /**
-       * All capabilities, calculate everything.  (LONG_NOWRAP is not
+       * All capabilities, calculate everything.  (LONG_UNROLL is not
        * included in this mask.)
        * @hideinitializer
        **********************************************************************/
@@ -502,19 +506,20 @@ namespace GeographicLib {
      *   M12 and \e M21;
      * - \e outmask |= GeodesicLine::AREA for the area \e S12;
      * - \e outmask |= GeodesicLine::ALL for all of the above;
-     * - \e outmask |= GeodesicLine::LONG_NOWRAP stops the returned value of \e
-     *   lon2 being wrapped into the range [−180°, 180°).
+     * - \e outmask |= GeodesicLine::LONG_UNROLL to unroll \e lon2 instead of
+     *   reducing it into the range [−180°, 180°).
      * .
      * Requesting a value which the GeodesicLine object is not capable of
      * computing is not an error; the corresponding argument will not be
      * altered.  Note, however, that the arc length is always computed and
      * returned as the function value.
      *
-     * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
-     * indicates how many times the geodesic wrapped around the ellipsoid.
-     * Because \e lon2 might be outside the normal allowed range for
-     * longitudes, [−540°, 540°), be sure to normalize it with
-     * Math::AngNormalize2 before using it in other GeographicLib calls.
+     * With the GeodesicLine::LONG_UNROLL bit set, the quantity \e lon2 −
+     * \e lon1 indicates how many times and in what sense the geodesic
+     * encircles the ellipsoid.  Because \e lon2 might be outside the normal
+     * allowed range for longitudes, [−540°, 540°), be sure to
+     * normalize it with Math::AngNormalize2 before using it in other
+     * GeographicLib calls.
      **********************************************************************/
     Math::real GenPosition(bool arcmode, real s12_a12, unsigned outmask,
                            real& lat2, real& lon2, real& azi2,
diff --git a/include/GeographicLib/GeodesicLineExact.hpp b/include/GeographicLib/GeodesicLineExact.hpp
index 26828f0..f65f592 100644
--- a/include/GeographicLib/GeodesicLineExact.hpp
+++ b/include/GeographicLib/GeodesicLineExact.hpp
@@ -119,12 +119,16 @@ namespace GeographicLib {
        **********************************************************************/
       AREA          = GeodesicExact::AREA,
       /**
-       * Do not wrap \e lon2 in the direct calculation.
+       * Unroll \e lon2 in the direct calculation.  (This flag used to be
+       * called LONG_NOWRAP.)
        * @hideinitializer
        **********************************************************************/
-      LONG_NOWRAP = GeodesicExact::LONG_NOWRAP,
+      LONG_UNROLL = GeodesicExact::LONG_UNROLL,
+      /// \cond SKIP
+      LONG_NOWRAP   = LONG_UNROLL,
+      /// \endcond
       /**
-       * All capabilities, calculate everything.  (LONG_NOWRAP is not
+       * All capabilities, calculate everything.  (LONG_UNROLL is not
        * included in this mask.)
        * @hideinitializer
        **********************************************************************/
@@ -476,19 +480,20 @@ namespace GeographicLib {
      *   \e M12 and \e M21;
      * - \e outmask |= GeodesicLineExact::AREA for the area \e S12;
      * - \e outmask |= GeodesicLineExact::ALL for all of the above;
-     * - \e outmask |= GeodesicLineExact::LONG_NOWRAP stops the returned value
-     *   of \e lon2 being wrapped into the range [−180°, 180°).
+     * - \e outmask |= GeodesicLineExact::LONG_UNROLL to unroll \e lon2 instead
+     *   of wrapping it into the range [−180°, 180°).
      * .
      * Requesting a value which the GeodesicLineExact object is not capable of
      * computing is not an error; the corresponding argument will not be
      * altered.  Note, however, that the arc length is always computed and
      * returned as the function value.
      *
-     * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
-     * indicates how many times the geodesic wrapped around the ellipsoid.
-     * Because \e lon2 might be outside the normal allowed range for
-     * longitudes, [−540°, 540°), be sure to normalize it with
-     * Math::AngNormalize2 before using it in other GeographicLib calls.
+     * With the GeodesicLineExact::LONG_UNROLL bit set, the quantity \e lon2
+     * − \e lon1 indicates how many times and in what sense the geodesic
+     * encircles the ellipsoid.  Because \e lon2 might be outside the normal
+     * allowed range for longitudes, [−540°, 540°), be sure to
+     * normalize it with Math::AngNormalize2 before using it in other
+     * GeographicLib calls.
      **********************************************************************/
     Math::real GenPosition(bool arcmode, real s12_a12, unsigned outmask,
                            real& lat2, real& lon2, real& azi2,
diff --git a/include/GeographicLib/Geoid.hpp b/include/GeographicLib/Geoid.hpp
index 87c4807..40e8eff 100644
--- a/include/GeographicLib/Geoid.hpp
+++ b/include/GeographicLib/Geoid.hpp
@@ -34,9 +34,9 @@
 namespace GeographicLib {
 
   /**
-   * \brief Looking up the height of the geoid
+   * \brief Looking up the height of the geoid above the ellipsoid
    *
-   * This class evaluated the height of one of the standard geoids, EGM84,
+   * This class evaluates the height of one of the standard geoids, EGM84,
    * EGM96, or EGM2008 by bilinear or cubic interpolation into a rectangular
    * grid of data.  These geoid models are documented in
    * - EGM84:
@@ -51,9 +51,10 @@ namespace GeographicLib {
    * this class evaluates the height by interpolation into a grid of
    * precomputed values.
    *
-   * The geoid height, \e N, can be used to convert a height above the
-   * ellipsoid, \e h, to the corresponding height above the geoid (roughly the
-   * height above mean sea level), \e H, using the relations
+   * The height of the geoid above the ellipsoid, \e N, is sometimes called the
+   * geoid undulation.  It can be used to convert a height above the ellipsoid,
+   * \e h, to the corresponding height above the geoid (the orthometric height,
+   * roughly the height above mean sea level), \e H, using the relations
    *
    *    \e h = \e N + \e H;
    *   \e H = −\e N + \e h.
@@ -289,7 +290,7 @@ namespace GeographicLib {
      * @param[in] lon longitude of the point (degrees).
      * @exception GeographicErr if there's a problem reading the data; this
      *   never happens if (\e lat, \e lon) is within a successfully cached area.
-     * @return geoid height (meters).
+     * @return the height of the geoid above the ellipsoid (meters).
      *
      * The latitude should be in [−90°, 90°] and
      * longitude should be in [−540°, 540°).
diff --git a/include/GeographicLib/GravityModel.hpp b/include/GeographicLib/GravityModel.hpp
index ab924cd..5a1662b 100644
--- a/include/GeographicLib/GravityModel.hpp
+++ b/include/GeographicLib/GravityModel.hpp
@@ -33,9 +33,9 @@ namespace GeographicLib {
    * earth.  When computing the field at points near (but above) the surface of
    * the earth a small correction can be applied to account for the mass of the
    * atomsphere above the point in question; see \ref gravityatmos.
-   * Determining the geoid height entails correcting for the mass of the earth
-   * above the geoid.  The egm96 and egm2008 include separate correction terms
-   * to account for this mass.
+   * Determining the height of the geoid above the ellipsoid entails correcting
+   * for the mass of the earth above the geoid.  The egm96 and egm2008 include
+   * separate correction terms to account for this mass.
    *
    * Definitions and terminology (from Heiskanen and Moritz, Sec 2-13):
    * - \e V = gravitational potential;
@@ -66,7 +66,7 @@ namespace GeographicLib {
    * - \e x, \e y, \e z, local cartesian coordinates used to denote the east,
    *   north and up directions.
    *
-   * See \ref gravity for details of how to install the gravity model and the
+   * See \ref gravity for details of how to install the gravity models and the
    * data format.
    *
    * References:
diff --git a/include/GeographicLib/MGRS.hpp b/include/GeographicLib/MGRS.hpp
index 936eb48..fc78992 100644
--- a/include/GeographicLib/MGRS.hpp
+++ b/include/GeographicLib/MGRS.hpp
@@ -2,7 +2,7 @@
  * \file MGRS.hpp
  * \brief Header for GeographicLib::MGRS class
  *
- * Copyright (c) Charles Karney (2008-2014) <charles at karney.com> and licensed
+ * Copyright (c) Charles Karney (2008-2015) <charles at karney.com> and licensed
  * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
@@ -293,18 +293,18 @@ namespace GeographicLib {
      * zones 1--9.)  In addition, MGRS coordinates with a neighboring
      * latitude band letter are permitted provided that some portion of the
      * 100 km block is within the given latitude band.  Thus
-     *   - 38VLS and 38WLS are allowed (latitude 64N intersects the square
-     *     38[VW]LS); but 38VMS is not permitted (all of 38VMS is north of 64N)
-     *   - 38MPE and 38NPF are permitted (they straddle the equator); but 38NPE
-     *     and 38MPF are not permitted (the equator does not intersect either
-     *     block).
-     *   - Similarly ZAB and YZB are permitted (they straddle the prime
-     *     meridian); but YAB and ZZB are not (the prime meridian does not
-     *     intersect either block).
+     * - 38VLS and 38WLS are allowed (latitude 64N intersects the square
+     *   38[VW]LS); but 38VMS is not permitted (all of 38WMS is north of 64N)
+     * - 38MPE and 38NPF are permitted (they straddle the equator); but 38NPE
+     *   and 38MPF are not permitted (the equator does not intersect either
+     *   block).
+     * - Similarly ZAB and YZB are permitted (they straddle the prime
+     *   meridian); but YAB and ZZB are not (the prime meridian does not
+     *   intersect either block).
      *
      * The UTM/UPS selection and the UTM zone is preserved in the conversion
      * from MGRS coordinate.  The conversion is exact for prec in [0, 5].  With
-     * centerp = true the conversion from MGRS to geographic and back is
+     * \e centerp = true, the conversion from MGRS to geographic and back is
      * stable.  This is not assured if \e centerp = false.
      *
      * If a "grid zone designation" (for example, 18T or A) is given, then some
@@ -343,6 +343,14 @@ namespace GeographicLib {
     static Math::real Flattening() { return UTMUPS::Flattening(); }
     ///@}
 
+    /**
+     * Perform some checks on the UTMUPS coordinates on this ellipsoid.  Throw
+     * an error if any of the assumptions made in the MGRS class is not true.
+     * This check needs to be carried out if the ellipsoid parameters (or the
+     * UTM/UPS scales) are ever changed.
+     **********************************************************************/
+    static void Check();
+
     /// \cond SKIP
     /**
      * <b>DEPRECATED</b>
diff --git a/include/GeographicLib/MagneticCircle.hpp b/include/GeographicLib/MagneticCircle.hpp
index 366c4de..dae5cb4 100644
--- a/include/GeographicLib/MagneticCircle.hpp
+++ b/include/GeographicLib/MagneticCircle.hpp
@@ -2,8 +2,8 @@
  * \file MagneticCircle.hpp
  * \brief Header for GeographicLib::MagneticCircle 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-2015) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
@@ -39,8 +39,8 @@ namespace GeographicLib {
     typedef Math::real real;
 
     real _a, _f, _lat, _h, _t, _cphi, _sphi, _t1, _dt0;
-    bool _interpolate;
-    CircularEngine _circ0, _circ1;
+    bool _interpolate, _constterm;
+    CircularEngine _circ0, _circ1, _circ2;
 
     MagneticCircle(real a, real f, real lat, real h, real t,
                    real cphi, real sphi, real t1, real dt0,
@@ -56,10 +56,32 @@ namespace GeographicLib {
       , _t1(t1)
       , _dt0(dt0)
       , _interpolate(interpolate)
+      , _constterm(false)
       , _circ0(circ0)
       , _circ1(circ1)
     {}
 
+    MagneticCircle(real a, real f, real lat, real h, real t,
+                   real cphi, real sphi, real t1, real dt0,
+                   bool interpolate,
+                   const CircularEngine& circ0, const CircularEngine& circ1,
+                   const CircularEngine& circ2)
+      : _a(a)
+      , _f(f)
+      , _lat(lat)
+      , _h(h)
+      , _t(t)
+      , _cphi(cphi)
+      , _sphi(sphi)
+      , _t1(t1)
+      , _dt0(dt0)
+      , _interpolate(interpolate)
+      , _constterm(true)
+      , _circ0(circ0)
+      , _circ1(circ1)
+      , _circ2(circ2)
+    {}
+
     void Field(real lon, bool diffp,
                real& Bx, real& By, real& Bz,
                real& Bxt, real& Byt, real& Bzt) const;
diff --git a/include/GeographicLib/MagneticModel.hpp b/include/GeographicLib/MagneticModel.hpp
index f27b4fe..6a631d4 100644
--- a/include/GeographicLib/MagneticModel.hpp
+++ b/include/GeographicLib/MagneticModel.hpp
@@ -2,8 +2,8 @@
  * \file MagneticModel.hpp
  * \brief Header for GeographicLib::MagneticModel 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-2015) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
@@ -33,8 +33,8 @@ namespace GeographicLib {
    * of currents in the ionosphere and magnetosphere which have daily and
    * annual variations.
    *
-   * See \ref magnetic for details of how to install the magnetic model and the
-   * data format.
+   * See \ref magnetic for details of how to install the magnetic models and
+   * the data format.
    *
    * See
    * - General information:
@@ -66,7 +66,7 @@ namespace GeographicLib {
     static const int idlength_ = 8;
     std::string _name, _dir, _description, _date, _filename, _id;
     real _t0, _dt0, _tmin, _tmax, _a, _hmin, _hmax;
-    int _Nmodels;
+    int _Nmodels, _Nconstants;
     SphericalHarmonic::normalization _norm;
     Geocentric _earth;
     std::vector< std::vector<real> > _G;
diff --git a/include/GeographicLib/Math.hpp b/include/GeographicLib/Math.hpp
index 22a82fc..cbe3f54 100644
--- a/include/GeographicLib/Math.hpp
+++ b/include/GeographicLib/Math.hpp
@@ -372,7 +372,7 @@ namespace GeographicLib {
      * @param[in] y
      * @param[in] z
      * @return <i>xy</i> + <i>z</i>, correctly rounded (on those platforms with
-     *   support for the fma instruction).
+     *   support for the <code>fma</code> instruction).
      **********************************************************************/
     template<typename T> static inline T fma(T x, T y, T z) {
 #if GEOGRAPHICLIB_CXX11_MATH
@@ -417,6 +417,23 @@ namespace GeographicLib {
     }
 
     /**
+     * Evaluate a polynomial.
+     *
+     * @tparam T the type of the arguments and returned value.
+     * @param[in] N the order of the polynomial.
+     * @param[in] p the coefficient array (of size \e N + 1).
+     * @param[in] x the variable.
+     * @return the value of the polynomial.
+     *
+     * Evaluate <i>y</i> = ∑<sub><i>n</i>=0..<i>N</i></sub>
+     * <i>p</i><sub><i>n</i></sub> <i>x</i><sup><i>N</i>−<i>n</i></sup>.
+     * Return 0 if \e N < 0.  Return <i>p</i><sub>0</sub>, if \e N = 0 (even
+     * if \e x is infinite or a nan).  The evaluation uses Horner's method.
+     **********************************************************************/
+    template<typename T> static inline T polyval(int N, const T p[], T x)
+    { T y = N < 0 ? 0 : *p++; while (--N >= 0) y = y * x + *p++; return y; }
+
+    /**
      * Normalize an angle (restricted input range).
      *
      * @tparam T the type of the argument and returned value.
@@ -476,7 +493,7 @@ namespace GeographicLib {
      * degrees.  (This is about 1000 times more resolution than we get with
      * angles around 90°.)  We use this to avoid having to deal with near
      * singular cases when \e x is non-zero but tiny (e.g.,
-     * 10<sup>−200</sup>).
+     * 10<sup>−200</sup>).  This also converts -0 to +0.
      **********************************************************************/
     template<typename T> static inline T AngRound(T x) {
       using std::abs;
@@ -484,7 +501,7 @@ namespace GeographicLib {
       GEOGRAPHICLIB_VOLATILE T y = abs(x);
       // The compiler mustn't "simplify" z - (z - y) to y
       y = y < z ? z - (z - y) : y;
-      return x < 0 ? -y : y;
+      return x < 0 ? 0 - y : y;
     }
 
     /**
@@ -533,6 +550,7 @@ namespace GeographicLib {
      **********************************************************************/
     template<typename T> static inline T atan2d(T y, T x) {
       using std::atan2;
+      // The "0 -" converts -0 to +0.
       return 0 - atan2(-y, x) / Math::degree();
     }
 
diff --git a/include/GeographicLib/PolygonArea.hpp b/include/GeographicLib/PolygonArea.hpp
index a7b351d..5fde947 100644
--- a/include/GeographicLib/PolygonArea.hpp
+++ b/include/GeographicLib/PolygonArea.hpp
@@ -111,7 +111,7 @@ namespace GeographicLib {
       , _polyline(polyline)
       , _mask(GeodType::LATITUDE | GeodType::LONGITUDE | GeodType::DISTANCE |
               (_polyline ? GeodType::NONE :
-               GeodType::AREA | GeodType::LONG_NOWRAP))
+               GeodType::AREA | GeodType::LONG_UNROLL))
     { Clear(); }
 
     /**
diff --git a/include/GeographicLib/Rhumb.hpp b/include/GeographicLib/Rhumb.hpp
index 24718e7..0e2bcb1 100644
--- a/include/GeographicLib/Rhumb.hpp
+++ b/include/GeographicLib/Rhumb.hpp
@@ -218,12 +218,16 @@ namespace GeographicLib {
        **********************************************************************/
       AREA          = 1U<<14,
       /**
-       * Do not wrap the \e lon2 in the direct calculation.
+       * Unroll \e lon2 in the direct calculation.  (This flag used to be
+       * called LONG_NOWRAP.)
        * @hideinitializer
        **********************************************************************/
-      LONG_NOWRAP   = 1U<<15,
+      LONG_UNROLL   = 1U<<15,
+      /// \cond SKIP
+      LONG_NOWRAP   = LONG_UNROLL,
+      /// \endcond
       /**
-       * Calculate everything.  (LONG_NOWRAP is not included in this mask.)
+       * Calculate everything.  (LONG_UNROLL is not included in this mask.)
        * @hideinitializer
        **********************************************************************/
       ALL           = 0x7F80U,
@@ -304,14 +308,15 @@ namespace GeographicLib {
      * - \e outmask |= Rhumb::LONGITUDE for the latitude \e lon2;
      * - \e outmask |= Rhumb::AREA for the area \e S12;
      * - \e outmask |= Rhumb::ALL for all of the above;
-     * - \e outmask |= Rhumb::LONG_NOWRAP stops the returned value of \e
-     *   lon2 being wrapped into the range [−180°, 180°).
+     * - \e outmask |= Rhumb::LONG_UNROLL to unroll \e lon2 instead of wrapping
+     *   it into the range [−180°, 180°).
      * .
-     * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
-     * indicates how many times the rhumb line wrapped around the ellipsoid.
-     * Because \e lon2 might be outside the normal allowed range for
-     * longitudes, [−540°, 540°), be sure to normalize it with
-     * Math::AngNormalize2 before using it in other GeographicLib calls.
+     * With the Rhumb::LONG_UNROLL bit set, the quantity \e lon2 −
+     * \e lon1 indicates how many times and in what sense the rhumb line
+     * encircles the ellipsoid.  Because \e lon2 might be outside the normal
+     * allowed range for longitudes, [−540°, 540°), be sure to
+     * normalize it with Math::AngNormalize2 before using it in other
+     * GeographicLib calls.
      **********************************************************************/
     void GenDirect(real lat1, real lon1, real azi12, real s12, unsigned outmask,
                    real& lat2, real& lon2, real& S12) const;
@@ -451,6 +456,9 @@ namespace GeographicLib {
               bool exact);
   public:
 
+    /**
+     * This is a duplication of Rhumb::mask.
+     **********************************************************************/
     enum mask {
       /**
        * No output.
@@ -483,12 +491,16 @@ namespace GeographicLib {
        **********************************************************************/
       AREA          = Rhumb::AREA,
       /**
-       * Do wrap the \e lon2 in the direct calculation.
+       * Unroll \e lon2 in the direct calculation.  (This flag used to be
+       * called LONG_NOWRAP.)
        * @hideinitializer
        **********************************************************************/
-      LONG_NOWRAP   = Rhumb::LONG_NOWRAP,
+      LONG_UNROLL   = Rhumb::LONG_UNROLL,
+      /// \cond SKIP
+      LONG_NOWRAP   = LONG_UNROLL,
+      /// \endcond
       /**
-       * Calculate everything.  (LONG_NOWRAP is not included in this mask.)
+       * Calculate everything.  (LONG_UNROLL is not included in this mask.)
        * @hideinitializer
        **********************************************************************/
       ALL           = Rhumb::ALL,
@@ -530,25 +542,26 @@ namespace GeographicLib {
      *
      * @param[in] s12 distance between point 1 and point 2 (meters); it can be
      *   negative.
-     * @param[in] outmask a bitor'ed combination of Rhumb::mask values
+     * @param[in] outmask a bitor'ed combination of RhumbLine::mask values
      *   specifying which of the following parameters should be set.
      * @param[out] lat2 latitude of point 2 (degrees).
      * @param[out] lon2 longitude of point 2 (degrees).
      * @param[out] S12 area under the rhumb line (meters<sup>2</sup>).
      *
-     * The Rhumb::mask values possible for \e outmask are
-     * - \e outmask |= Rhumb::LATITUDE for the latitude \e lat2;
-     * - \e outmask |= Rhumb::LONGITUDE for the latitude \e lon2;
-     * - \e outmask |= Rhumb::AREA for the area \e S12;
-     * - \e outmask |= Rhumb::ALL for all of the above;
-     * - \e outmask |= Rhumb::LONG_NOWRAP stops the returned value of \e
-     *   lon2 being wrapped into the range [−180°, 180°).
+     * The RhumbLine::mask values possible for \e outmask are
+     * - \e outmask |= RhumbLine::LATITUDE for the latitude \e lat2;
+     * - \e outmask |= RhumbLine::LONGITUDE for the latitude \e lon2;
+     * - \e outmask |= RhumbLine::AREA for the area \e S12;
+     * - \e outmask |= RhumbLine::ALL for all of the above;
+     * - \e outmask |= RhumbLine::LONG_UNROLL to unroll \e lon2 instead of
+     *   wrapping it into the range [−180°, 180°).
      * .
-     * With the LONG_NOWRAP bit set, the quantity \e lon2 − \e lon1
-     * indicates how many times the rhumb line wrapped around the ellipsoid.
-     * Because \e lon2 might be outside the normal allowed range for
-     * longitudes, [−540°, 540°), be sure to normalize it with
-     * Math::AngNormalize2 before using it in other GeographicLib calls.
+     * With the RhumbLine::LONG_UNROLL bit set, the quantity \e lon2 − \e
+     * lon1 indicates how many times and in what sense the rhumb line encircles
+     * the ellipsoid.  Because \e lon2 might be outside the normal allowed
+     * range for longitudes, [−540°, 540°), be sure to normalize
+     * it with Math::AngNormalize2 before using it in other GeographicLib
+     * calls.
      *
      * If \e s12 is large enough that the rhumb line crosses a pole, the
      * longitude of point 2 is indeterminate (a NaN is returned for \e lon2 and
diff --git a/include/GeographicLib/SphericalHarmonic.hpp b/include/GeographicLib/SphericalHarmonic.hpp
index 4077cf4..a084ea3 100644
--- a/include/GeographicLib/SphericalHarmonic.hpp
+++ b/include/GeographicLib/SphericalHarmonic.hpp
@@ -14,7 +14,6 @@
 #include <GeographicLib/Constants.hpp>
 #include <GeographicLib/SphericalEngine.hpp>
 #include <GeographicLib/CircularEngine.hpp>
-#include <GeographicLib/Geocentric.hpp>
 
 namespace GeographicLib {
 
@@ -135,8 +134,8 @@ namespace GeographicLib {
      * @param[in] a the reference radius appearing in the definition of the
      *   sum.
      * @param[in] norm the normalization for the associated Legendre
-     *   polynomials, either SphericalHarmonic::full (the default) or
-     *   SphericalHarmonic::schmidt.
+     *   polynomials, either SphericalHarmonic::FULL (the default) or
+     *   SphericalHarmonic::SCHMIDT.
      * @exception GeographicErr if \e N does not satisfy \e N ≥ −1.
      * @exception GeographicErr if \e C or \e S is not big enough to hold the
      *   coefficients.
@@ -285,8 +284,9 @@ namespace GeographicLib {
      * @return the CircularEngine object.
      *
      * SphericalHarmonic::operator()() exchanges the order of the sums in the
-     * definition, i.e., ∑<sub>n = 0..N</sub> ∑<sub>m = 0..n</sub>
-     * becomes ∑<sub>m = 0..N</sub> ∑<sub>n = m..N</sub>.
+     * definition, i.e., ∑<sub><i>n</i> = 0..<i>N</i></sub>
+     * ∑<sub><i>m</i> = 0..<i>n</i></sub> becomes ∑<sub><i>m</i> =
+     * 0..<i>N</i></sub> ∑<sub><i>n</i> = <i>m</i>..<i>N</i></sub>.
      * SphericalHarmonic::Circle performs the inner sum over degree \e n (which
      * entails about <i>N</i><sup>2</sup> operations).  Calling
      * CircularEngine::operator()() on the returned object performs the outer
diff --git a/include/GeographicLib/SphericalHarmonic1.hpp b/include/GeographicLib/SphericalHarmonic1.hpp
index e07ec15..0efd669 100644
--- a/include/GeographicLib/SphericalHarmonic1.hpp
+++ b/include/GeographicLib/SphericalHarmonic1.hpp
@@ -238,8 +238,9 @@ namespace GeographicLib {
      * @return the CircularEngine object.
      *
      * SphericalHarmonic1::operator()() exchanges the order of the sums in the
-     * definition, i.e., ∑<sub>n = 0..N</sub> ∑<sub>m = 0..n</sub>
-     * becomes ∑<sub>m = 0..N</sub> ∑<sub>n = m..N</sub>.
+     * definition, i.e., ∑<sub><i>n</i> = 0..<i>N</i></sub>
+     * ∑<sub><i>m</i> = 0..<i>n</i></sub> becomes ∑<sub><i>m</i> =
+     * 0..<i>N</i></sub> ∑<sub><i>n</i> = <i>m</i>..<i>N</i></sub>.
      * SphericalHarmonic1::Circle performs the inner sum over degree \e n
      * (which entails about <i>N</i><sup>2</sup> operations).  Calling
      * CircularEngine::operator()() on the returned object performs the outer
diff --git a/include/GeographicLib/SphericalHarmonic2.hpp b/include/GeographicLib/SphericalHarmonic2.hpp
index b4e5aaa..adc5c58 100644
--- a/include/GeographicLib/SphericalHarmonic2.hpp
+++ b/include/GeographicLib/SphericalHarmonic2.hpp
@@ -266,8 +266,9 @@ namespace GeographicLib {
      * @return the CircularEngine object.
      *
      * SphericalHarmonic2::operator()() exchanges the order of the sums in the
-     * definition, i.e., ∑<sub>n = 0..N</sub> ∑<sub>m = 0..n</sub>
-     * becomes ∑<sub>m = 0..N</sub> ∑<sub>n = m..N</sub>..
+     * definition, i.e., ∑<sub><i>n</i> = 0..<i>N</i></sub>
+     * ∑<sub><i>m</i> = 0..<i>n</i></sub> becomes ∑<sub><i>m</i> =
+     * 0..<i>N</i></sub> ∑<sub><i>n</i> = <i>m</i>..<i>N</i></sub>..
      * SphericalHarmonic2::Circle performs the inner sum over degree \e n
      * (which entails about <i>N</i><sup>2</sup> operations).  Calling
      * CircularEngine::operator()() on the returned object performs the outer
diff --git a/java/direct/pom.xml b/java/direct/pom.xml
index ae6d6de..be0fdb3 100644
--- a/java/direct/pom.xml
+++ b/java/direct/pom.xml
@@ -9,7 +9,7 @@
   <groupId>net.sf.geographiclib.example</groupId>
   <artifactId>Direct</artifactId>
   <name>Direct</name>
-  <version>1.42</version>
+  <version>1.43</version>
 
   <packaging>jar</packaging>
 
@@ -28,7 +28,7 @@
     <dependency>
       <groupId>net.sf.geographiclib</groupId>
       <artifactId>GeographicLib-Java</artifactId>
-      <version>1.42</version>
+      <version>1.43</version>
     </dependency>
   </dependencies>
 
diff --git a/java/inverse/pom.xml b/java/inverse/pom.xml
index c2ce244..b85e0f2 100644
--- a/java/inverse/pom.xml
+++ b/java/inverse/pom.xml
@@ -9,7 +9,7 @@
   <groupId>net.sf.geographiclib.example</groupId>
   <artifactId>Inverse</artifactId>
   <name>Inverse</name>
-  <version>1.42</version>
+  <version>1.43</version>
 
   <packaging>jar</packaging>
 
@@ -28,7 +28,7 @@
     <dependency>
       <groupId>net.sf.geographiclib</groupId>
       <artifactId>GeographicLib-Java</artifactId>
-      <version>1.42</version>
+      <version>1.43</version>
     </dependency>
   </dependencies>
 
diff --git a/java/planimeter/pom.xml b/java/planimeter/pom.xml
index 91222b7..dbc5847 100644
--- a/java/planimeter/pom.xml
+++ b/java/planimeter/pom.xml
@@ -9,7 +9,7 @@
   <groupId>net.sf.geographiclib.example</groupId>
   <artifactId>Planimeter</artifactId>
   <name>Planimeter</name>
-  <version>1.42</version>
+  <version>1.43</version>
 
   <packaging>jar</packaging>
 
@@ -28,7 +28,7 @@
     <dependency>
       <groupId>net.sf.geographiclib</groupId>
       <artifactId>GeographicLib-Java</artifactId>
-      <version>1.42</version>
+      <version>1.43</version>
     </dependency>
   </dependencies>
 
diff --git a/java/pom.xml b/java/pom.xml
index 4225825..dea78eb 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -8,7 +8,7 @@
 
   <groupId>net.sf.geographiclib</groupId>
   <artifactId>GeographicLib-Java</artifactId>
-  <version>1.42</version>
+  <version>1.43</version>
 
   <packaging>jar</packaging>
 
diff --git a/java/src/main/java/net/sf/geographiclib/GeoMath.java b/java/src/main/java/net/sf/geographiclib/GeoMath.java
index f3f6165..c7e0765 100644
--- a/java/src/main/java/net/sf/geographiclib/GeoMath.java
+++ b/java/src/main/java/net/sf/geographiclib/GeoMath.java
@@ -110,6 +110,11 @@ public class GeoMath {
     return x < 0 ? -y : y;
   }
 
+  public static Pair norm(double sinx, double cosx) {
+    double r = GeoMath.hypot(sinx, cosx);
+    return new Pair(sinx/r, cosx/r);
+  }
+
   /**
    * The error-free sum of two numbers.
    * <p>
@@ -133,6 +138,41 @@ public class GeoMath {
   }
 
   /**
+   * Evaluate a polynomial.
+   * <p>
+   * @param N the order of the polynomial.
+   * @param p the coefficient array (of size <i>N</i> + <i>s</i> + 1 or more).
+   * @param s starting index for the array.
+   * @param x the variable.
+   * @return the value of the polynomial.
+   *
+   * Evaluate <i>y</i> = ∑<sub><i>n</i>=0..<i>N</i></sub>
+   * <i>p</i><sub><i>s</i>+<i>n</i></sub>
+   * <i>x</i><sup><i>N</i>−<i>n</i></sup>.  Return 0 if <i>N</i> < 0.
+   * Return <i>p</i><sub><i>s</i></sub>, if <i>N</i> = 0 (even if <i>x</i> is
+   * infinite or a nan).  The evaluation uses Horner's method.
+   **********************************************************************/
+  public static double polyval(int N, double p[], int s, double x) {
+    double y = N < 0 ? 0 : p[s++];
+    while (--N >= 0) y = y * x + p[s++];
+    return y;
+  }
+
+  public static double AngRound(double x) {
+    // The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57
+    // for reals = 0.7 pm on the earth if x is an angle in degrees.  (This
+    // is about 1000 times more resolution than we get with angles around 90
+    // degrees.)  We use this to avoid having to deal with near singular
+    // cases when x is non-zero but tiny (e.g., 1.0e-200).  This also converts
+    // -0 to +0.
+    final double z = 1/16.0;
+    double y = Math.abs(x);
+    // The compiler mustn't "simplify" z - (z - y) to y
+    y = y < z ? z - (z - y) : y;
+    return x < 0 ? 0 - y : y;
+  }
+
+  /**
    * Normalize an angle (restricted input range).
    * <p>
    * @param x the angle in degrees.
diff --git a/java/src/main/java/net/sf/geographiclib/Geodesic.java b/java/src/main/java/net/sf/geographiclib/Geodesic.java
index 6b16651..0a19dad 100644
--- a/java/src/main/java/net/sf/geographiclib/Geodesic.java
+++ b/java/src/main/java/net/sf/geographiclib/Geodesic.java
@@ -234,24 +234,6 @@ public class Geodesic {
   private static final double tolb_ = tol0_ * tol2_;
   private static final double xthresh_ = 1000 * tol2_;
 
-  protected static double AngRound(double x) {
-    // The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57
-    // for reals = 0.7 pm on the earth if x is an angle in degrees.  (This
-    // is about 1000 times more resolution than we get with angles around 90
-    // degrees.)  We use this to avoid having to deal with near singular
-    // cases when x is non-zero but tiny (e.g., 1.0e-200).
-    final double z = 1/16.0;
-    double y = Math.abs(x);
-    // The compiler mustn't "simplify" z - (z - y) to y
-    y = y < z ? z - (z - y) : y;
-    return x < 0 ? -y : y;
-  }
-
-  protected static Pair SinCosNorm(double sinx, double cosx) {
-    double r = GeoMath.hypot(sinx, cosx);
-    return new Pair(sinx/r, cosx/r);
-  }
-
   protected double _a, _f, _f1, _e2, _ep2, _b, _c2;
   private double _n, _etol2;
   private double _A3x[], _C3x[], _C4x[];
@@ -354,7 +336,7 @@ public class Geodesic {
    * <i>lat1</i>, <i>lon1</i>, <i>azi1</i>, <i>s12</i>, and <i>a12</i> are
    * always included in the returned result.  The value of <i>lon2</i> returned
    * is in the range [−180°, 180°), unless the <i>outmask</i>
-   * includes the {@link GeodesicMask#LONG_NOWRAP} flag.
+   * includes the {@link GeodesicMask#LONG_UNROLL} flag.
    **********************************************************************/
   public GeodesicData Direct(double lat1, double lon1,
                              double azi1, double s12, int outmask) {
@@ -411,7 +393,7 @@ public class Geodesic {
    * <i>lat1</i>, <i>lon1</i>, <i>azi1</i>, and <i>a12</i> are always included
    * in the returned result.  The value of <i>lon2</i> returned is in the range
    * [−180°, 180°), unless the <i>outmask</i> includes the {@link
-   * GeodesicMask#LONG_NOWRAP} flag.
+   * GeodesicMask#LONG_UNROLL} flag.
    **********************************************************************/
   public GeodesicData ArcDirect(double lat1, double lon1,
                                 double azi1, double a12, int outmask) {
@@ -456,8 +438,8 @@ public class Geodesic {
    * <li>
    *   <i>outmask</i> |= GeodesicMask.ALL for all of the above;
    * <li>
-   *   <i>outmask</i> |= GeodesicMask.LONG_NOWRAP to stop <i>lon2</i> from
-   *   being reduced to the range [−180°, 180°).
+   *   <i>outmask</i> |= GeodesicMask.LONG_UNROLL to unroll <i>lon2</i>
+   *   (instead of reducing it to the range [−180°, 180°)).
    * </ul>
    * <p>
    * The function value <i>a12</i> is always computed and returned and this
@@ -553,13 +535,13 @@ public class Geodesic {
     // east-going and meridional geodesics.
     double lon12 = GeoMath.AngDiff(lon1, lon2);
     // If very close to being on the same half-meridian, then make it so.
-    lon12 = AngRound(lon12);
+    lon12 = GeoMath.AngRound(lon12);
     // Make longitude difference positive.
     int lonsign = lon12 >= 0 ? 1 : -1;
     lon12 *= lonsign;
     // If really close to the equator, treat as on equator.
-    lat1 = AngRound(lat1);
-    lat2 = AngRound(lat2);
+    lat1 = GeoMath.AngRound(lat1);
+    lat2 = GeoMath.AngRound(lat2);
     // Save input parameters post normalization
     r.lat1 = lat1; r.lon1 = lon1; r.lat2 = lat2; r.lon2 = lon2;
     // Swap points so that point with higher (abs) latitude is point 1
@@ -591,14 +573,14 @@ public class Geodesic {
     // Ensure cbet1 = +epsilon at poles
     sbet1 = _f1 * Math.sin(phi);
     cbet1 = lat1 == -90 ? tiny_ : Math.cos(phi);
-    { Pair p = SinCosNorm(sbet1, cbet1);
+    { Pair p = GeoMath.norm(sbet1, cbet1);
       sbet1 = p.first; cbet1 = p.second; }
 
     phi = lat2 * GeoMath.degree;
     // Ensure cbet2 = +epsilon at poles
     sbet2 = _f1 * Math.sin(phi);
     cbet2 = Math.abs(lat2) == 90 ? tiny_ : Math.cos(phi);
-    { Pair p = SinCosNorm(sbet2, cbet2);
+    { Pair p = GeoMath.norm(sbet2, cbet2);
       sbet2 = p.first; cbet2 = p.second; }
 
     // If cbet1 < -sbet1, then cbet2 - cbet1 is a sensitive measure of the
@@ -769,7 +751,7 @@ public class Geodesic {
             if (nsalp1 > 0 && Math.abs(dalp1) < Math.PI) {
               calp1 = calp1 * cdalp1 - salp1 * sdalp1;
               salp1 = nsalp1;
-              { Pair p = SinCosNorm(salp1, calp1);
+              { Pair p = GeoMath.norm(salp1, calp1);
                 salp1 = p.first; calp1 = p.second; }
               // In some regimes we don't get quadratic convergence because
               // slope -> 0.  So use convergence conditions based on epsilon
@@ -788,7 +770,7 @@ public class Geodesic {
           // WGS84 and random input: mean = 4.74, sd = 0.99
           salp1 = (salp1a + salp1b)/2;
           calp1 = (calp1a + calp1b)/2;
-          { Pair p = SinCosNorm(salp1, calp1);
+          { Pair p = GeoMath.norm(salp1, calp1);
             salp1 = p.first; calp1 = p.second; }
           tripn = false;
           tripb = (Math.abs(salp1a - salp1) + (calp1a - calp1) < tolb_ ||
@@ -832,9 +814,9 @@ public class Geodesic {
           eps = k2 / (2 * (1 + Math.sqrt(1 + k2)) + k2),
           // Multiplier = a^2 * e^2 * cos(alpha0) * sin(alpha0).
           A4 = GeoMath.sq(_a) * calp0 * salp0 * _e2;
-        { Pair p = SinCosNorm(ssig1, csig1);
+        { Pair p = GeoMath.norm(ssig1, csig1);
           ssig1 = p.first; csig1 = p.second; }
-        { Pair p = SinCosNorm(ssig2, csig2);
+        { Pair p = GeoMath.norm(ssig2, csig2);
           ssig2 = p.first; csig2 = p.second; }
         double C4a[] = new double[nC4_];
         C4f(eps, C4a);
@@ -991,7 +973,7 @@ public class Geodesic {
    * ellipsoid.
    **********************************************************************/
   public static final Geodesic WGS84 =
-      new Geodesic(Constants.WGS84_a, Constants.WGS84_f);
+    new Geodesic(Constants.WGS84_a, Constants.WGS84_f);
 
   // This is a reformulation of the geodesic problem.  The notation is as
   // follows:
@@ -1020,7 +1002,9 @@ public class Geodesic {
     //            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
-    int k = c.length, n = k - (sinp ? 1 : 0);
+    int
+      k = c.length,             // Point to one beyond last element
+      n = k - (sinp ? 1 : 0);
     double
       ar = 2 * (cosx - sinx) * (cosx + sinx), // 2 * cos(2 * x)
       y0 = (n & 1) != 0 ? c[--k] : 0, y1 = 0;        // accumulators for sum
@@ -1187,7 +1171,7 @@ public class Geodesic {
       w.salp2 = cbet1 * somg12;
       w.calp2 = sbet12 - cbet1 * sbet2 *
         (comg12 >= 0 ? GeoMath.sq(somg12) / (1 + comg12) : 1 - comg12);
-      { Pair p = SinCosNorm(w.salp2, w.calp2);
+      { Pair p = GeoMath.norm(w.salp2, w.calp2);
         w.salp2 = p.first; w.calp2 = p.second; }
       // Set return value
       w.sig12 = Math.atan2(ssig12, csig12);
@@ -1291,7 +1275,7 @@ public class Geodesic {
     }
     // Sanity check on starting guess.  Backwards check allows NaN through.
     if (!(w.salp1 <= 0))
-      { Pair p = SinCosNorm(w.salp1, w.calp1);
+      { Pair p = GeoMath.norm(w.salp1, w.calp1);
         w.salp1 = p.first; w.calp1 = p.second; }
     else {
       w.salp1 = 1; w.calp1 = 0;
@@ -1334,9 +1318,9 @@ public class Geodesic {
     // tan(omg1) = sin(alp0) * tan(sig1) = tan(omg1)=tan(alp1)*sin(bet1)
     w.ssig1 = sbet1; somg1 = salp0 * sbet1;
     w.csig1 = comg1 = calp1 * cbet1;
-    { Pair p = SinCosNorm(w.ssig1, w.csig1);
+    { Pair p = GeoMath.norm(w.ssig1, w.csig1);
       w.ssig1 = p.first; w.csig1 = p.second; }
-    // SinCosNorm(somg1, comg1); -- don't need to normalize!
+    // GeoMath.norm(somg1, comg1); -- don't need to normalize!
 
     // Enforce symmetries in the case abs(bet2) = -bet1.  Need to be careful
     // about this case, since this can yield singularities in the Newton
@@ -1357,9 +1341,9 @@ public class Geodesic {
     // tan(omg2) = sin(alp0) * tan(sig2).
     w.ssig2 = sbet2; somg2 = salp0 * sbet2;
     w.csig2 = comg2 = w.calp2 * cbet2;
-    { Pair p = SinCosNorm(w.ssig2, w.csig2);
+    { Pair p = GeoMath.norm(w.ssig2, w.csig2);
       w.ssig2 = p.first; w.csig2 = p.second; }
-    // SinCosNorm(somg2, comg2); -- don't need to normalize!
+    // GeoMath.norm(somg2, comg2); -- don't need to normalize!
 
     // sig12 = sig2 - sig1, limit to [0, pi]
     w.sig12 = Math.atan2(Math.max(w.csig1 * w.ssig2 - w.ssig1 * w.csig2, 0.0),
@@ -1395,174 +1379,262 @@ public class Geodesic {
   }
 
   protected double A3f(double eps) {
-    // Evaluate sum(_A3x[k] * eps^k, k, 0, nA3x_-1) by Horner's method
-    double v = 0;
-    for (int i = nA3x_; i > 0; )
-      v = eps * v + _A3x[--i];
-    return v;
+    // Evaluate A3
+    return GeoMath.polyval(nA3_ - 1, _A3x, 0, eps);
   }
 
   protected void C3f(double eps, double c[]) {
-    // Evaluate C3 coeffs by Horner's method
+    // Evaluate C3 coeffs
     // Elements c[1] thru c[nC3_ - 1] are set
-    for (int j = nC3x_, k = nC3_ - 1; k > 0; ) {
-      double t = 0;
-      for (int i = nC3_ - k; i > 0; --i)
-        t = eps * t + _C3x[--j];
-      c[k--] = t;
-    }
-
     double mult = 1;
-    for (int k = 1; k < nC3_; ) {
+    int o = 0;
+    for (int l = 1; l < nC3_; ++l) { // l is index of C3[l]
+      int m = nC3_ - l - 1;          // order of polynomial in eps
       mult *= eps;
-      c[k++] *= mult;
+      c[l] = mult * GeoMath.polyval(m, _C3x, o, eps);
+      o += m + 1;
     }
   }
 
   protected void C4f(double eps, double c[]) {
-    // Evaluate C4 coeffs by Horner's method
+    // Evaluate C4 coeffs
     // Elements c[0] thru c[nC4_ - 1] are set
-    for (int j = nC4x_, k = nC4_; k > 0; ) {
-      double t = 0;
-      for (int i = nC4_ - k + 1; i > 0; --i)
-        t = eps * t + _C4x[--j];
-      c[--k] = t;
-    }
-
     double mult = 1;
-    for (int k = 1; k < nC4_; ) {
+    int o = 0;
+    for (int l = 0; l < nC4_; ++l) { // l is index of C4[l]
+      int m = nC4_ - l - 1;          // order of polynomial in eps
+      c[l] = mult * GeoMath.polyval(m, _C4x, o, eps);
+      o += m + 1;
       mult *= eps;
-      c[k++] *= mult;
     }
   }
 
-  // Generated by Maxima on 2010-09-04 10:26:17-04:00
-
   // The scale factor A1-1 = mean value of (d/dsigma)I1 - 1
   protected static double A1m1f(double eps) {
-    double
-      eps2 = GeoMath.sq(eps),
-      t;
-    t = eps2*(eps2*(eps2+4)+64)/256;
+    final double coeff[] = {
+      // (1-eps)*A1-1, polynomial in eps2 of order 3
+      1, 4, 64, 0, 256,
+    };
+    int m = nA1_/2;
+    double t = GeoMath.polyval(m, coeff, 0, GeoMath.sq(eps)) / coeff[m + 1];
     return (t + eps) / (1 - eps);
   }
 
   // The coefficients C1[l] in the Fourier expansion of B1
   protected static void C1f(double eps, double c[]) {
+    final double coeff[] = {
+      // C1[1]/eps^1, polynomial in eps2 of order 2
+      -1, 6, -16, 32,
+      // C1[2]/eps^2, polynomial in eps2 of order 2
+      -9, 64, -128, 2048,
+      // C1[3]/eps^3, polynomial in eps2 of order 1
+      9, -16, 768,
+      // C1[4]/eps^4, polynomial in eps2 of order 1
+      3, -5, 512,
+      // C1[5]/eps^5, polynomial in eps2 of order 0
+      -7, 1280,
+      // C1[6]/eps^6, polynomial in eps2 of order 0
+      -7, 2048,
+    };
     double
       eps2 = GeoMath.sq(eps),
       d = eps;
-    c[1] = d*((6-eps2)*eps2-16)/32;
-    d *= eps;
-    c[2] = d*((64-9*eps2)*eps2-128)/2048;
-    d *= eps;
-    c[3] = d*(9*eps2-16)/768;
-    d *= eps;
-    c[4] = d*(3*eps2-5)/512;
-    d *= eps;
-    c[5] = -7*d/1280;
-    d *= eps;
-    c[6] = -7*d/2048;
+    int o = 0;
+    for (int l = 1; l <= nC1_; ++l) { // l is index of C1p[l]
+      int m = (nC1_ - l) / 2;         // order of polynomial in eps^2
+      c[l] = d * GeoMath.polyval(m, coeff, o, eps2) / coeff[o + m + 1];
+      o += m + 2;
+      d *= eps;
+    }
   }
 
   // The coefficients C1p[l] in the Fourier expansion of B1p
   protected static void C1pf(double eps, double c[]) {
+    final double coeff[] = {
+      // C1p[1]/eps^1, polynomial in eps2 of order 2
+      205, -432, 768, 1536,
+      // C1p[2]/eps^2, polynomial in eps2 of order 2
+      4005, -4736, 3840, 12288,
+      // C1p[3]/eps^3, polynomial in eps2 of order 1
+      -225, 116, 384,
+      // C1p[4]/eps^4, polynomial in eps2 of order 1
+      -7173, 2695, 7680,
+      // C1p[5]/eps^5, polynomial in eps2 of order 0
+      3467, 7680,
+      // C1p[6]/eps^6, polynomial in eps2 of order 0
+      38081, 61440,
+    };
     double
       eps2 = GeoMath.sq(eps),
       d = eps;
-    c[1] = d*(eps2*(205*eps2-432)+768)/1536;
-    d *= eps;
-    c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
-    d *= eps;
-    c[3] = d*(116-225*eps2)/384;
-    d *= eps;
-    c[4] = d*(2695-7173*eps2)/7680;
-    d *= eps;
-    c[5] = 3467*d/7680;
-    d *= eps;
-    c[6] = 38081*d/61440;
+    int o = 0;
+    for (int l = 1; l <= nC1p_; ++l) { // l is index of C1p[l]
+      int m = (nC1p_ - l) / 2;         // order of polynomial in eps^2
+      c[l] = d * GeoMath.polyval(m, coeff, o, eps2) / coeff[o + m + 1];
+      o += m + 2;
+      d *= eps;
+    }
   }
 
   // The scale factor A2-1 = mean value of (d/dsigma)I2 - 1
   protected static double A2m1f(double eps) {
-    double
-      eps2 = GeoMath.sq(eps),
-      t;
-    t = eps2*(eps2*(25*eps2+36)+64)/256;
+    final double coeff[] = {
+      // A2/(1-eps)-1, polynomial in eps2 of order 3
+      25, 36, 64, 0, 256,
+    };
+    int m = nA2_/2;
+    double t = GeoMath.polyval(m, coeff, 0, GeoMath.sq(eps)) / coeff[m + 1];
     return t * (1 - eps) - eps;
   }
 
   // The coefficients C2[l] in the Fourier expansion of B2
   protected static void C2f(double eps, double c[]) {
+    final double coeff[] = {
+      // C2[1]/eps^1, polynomial in eps2 of order 2
+      1, 2, 16, 32,
+      // C2[2]/eps^2, polynomial in eps2 of order 2
+      35, 64, 384, 2048,
+      // C2[3]/eps^3, polynomial in eps2 of order 1
+      15, 80, 768,
+      // C2[4]/eps^4, polynomial in eps2 of order 1
+      7, 35, 512,
+      // C2[5]/eps^5, polynomial in eps2 of order 0
+      63, 1280,
+      // C2[6]/eps^6, polynomial in eps2 of order 0
+      77, 2048,
+    };
     double
       eps2 = GeoMath.sq(eps),
       d = eps;
-    c[1] = d*(eps2*(eps2+2)+16)/32;
-    d *= eps;
-    c[2] = d*(eps2*(35*eps2+64)+384)/2048;
-    d *= eps;
-    c[3] = d*(15*eps2+80)/768;
-    d *= eps;
-    c[4] = d*(7*eps2+35)/512;
-    d *= eps;
-    c[5] = 63*d/1280;
-    d *= eps;
-    c[6] = 77*d/2048;
+    int o = 0;
+    for (int l = 1; l <= nC2_; ++l) { // l is index of C2[l]
+      int m = (nC2_ - l) / 2;         // order of polynomial in eps^2
+      c[l] = d * GeoMath.polyval(m, coeff, o, eps2) / coeff[o + m + 1];
+      o += m + 2;
+      d *= eps;
+    }
   }
 
   // The scale factor A3 = mean value of (d/dsigma)I3
   protected void A3coeff() {
-    _A3x[0] = 1;
-    _A3x[1] = (_n-1)/2;
-    _A3x[2] = (_n*(3*_n-1)-2)/8;
-    _A3x[3] = ((-_n-3)*_n-1)/16;
-    _A3x[4] = (-2*_n-3)/64;
-    _A3x[5] = -3/128.0;
+    final double coeff[] = {
+      // A3, coeff of eps^5, polynomial in n of order 0
+      -3, 128,
+      // A3, coeff of eps^4, polynomial in n of order 1
+      -2, -3, 64,
+      // A3, coeff of eps^3, polynomial in n of order 2
+      -1, -3, -1, 16,
+      // A3, coeff of eps^2, polynomial in n of order 2
+      3, -1, -2, 8,
+      // A3, coeff of eps^1, polynomial in n of order 1
+      1, -1, 2,
+      // A3, coeff of eps^0, polynomial in n of order 0
+      1, 1,
+    };
+    int o = 0, k = 0;
+    for (int j = nA3_ - 1; j >= 0; --j) { // coeff of eps^j
+      int m = Math.min(nA3_ - j - 1, j);  // order of polynomial in n
+      _A3x[k++] = GeoMath.polyval(m, coeff, o, _n) / coeff[o + m + 1];
+      o += m + 2;
+    }
   }
 
   // The coefficients C3[l] in the Fourier expansion of B3
   protected void C3coeff() {
-    _C3x[0] = (1-_n)/4;
-    _C3x[1] = (1-_n*_n)/8;
-    _C3x[2] = ((3-_n)*_n+3)/64;
-    _C3x[3] = (2*_n+5)/128;
-    _C3x[4] = 3/128.0;
-    _C3x[5] = ((_n-3)*_n+2)/32;
-    _C3x[6] = ((-3*_n-2)*_n+3)/64;
-    _C3x[7] = (_n+3)/128;
-    _C3x[8] = 5/256.0;
-    _C3x[9] = (_n*(5*_n-9)+5)/192;
-    _C3x[10] = (9-10*_n)/384;
-    _C3x[11] = 7/512.0;
-    _C3x[12] = (7-14*_n)/512;
-    _C3x[13] = 7/512.0;
-    _C3x[14] = 21/2560.0;
+    final double coeff[] = {
+      // C3[1], coeff of eps^5, polynomial in n of order 0
+      3, 128,
+      // C3[1], coeff of eps^4, polynomial in n of order 1
+      2, 5, 128,
+      // C3[1], coeff of eps^3, polynomial in n of order 2
+      -1, 3, 3, 64,
+      // C3[1], coeff of eps^2, polynomial in n of order 2
+      -1, 0, 1, 8,
+      // C3[1], coeff of eps^1, polynomial in n of order 1
+      -1, 1, 4,
+      // C3[2], coeff of eps^5, polynomial in n of order 0
+      5, 256,
+      // C3[2], coeff of eps^4, polynomial in n of order 1
+      1, 3, 128,
+      // C3[2], coeff of eps^3, polynomial in n of order 2
+      -3, -2, 3, 64,
+      // C3[2], coeff of eps^2, polynomial in n of order 2
+      1, -3, 2, 32,
+      // C3[3], coeff of eps^5, polynomial in n of order 0
+      7, 512,
+      // C3[3], coeff of eps^4, polynomial in n of order 1
+      -10, 9, 384,
+      // C3[3], coeff of eps^3, polynomial in n of order 2
+      5, -9, 5, 192,
+      // C3[4], coeff of eps^5, polynomial in n of order 0
+      7, 512,
+      // C3[4], coeff of eps^4, polynomial in n of order 1
+      -14, 7, 512,
+      // C3[5], coeff of eps^5, polynomial in n of order 0
+      21, 2560,
+    };
+    int o = 0, k = 0;
+    for (int l = 1; l < nC3_; ++l) {        // l is index of C3[l]
+      for (int j = nC3_ - 1; j >= l; --j) { // coeff of eps^j
+        int m = Math.min(nC3_ - j - 1, j);  // order of polynomial in n
+        _C3x[k++] = GeoMath.polyval(m, coeff, o, _n) / coeff[o + m + 1];
+        o += m + 2;
+      }
+    }
   }
 
-  // Generated by Maxima on 2012-10-19 08:02:34-04:00
-
-  // The coefficients C4[l] in the Fourier expansion of I4
   protected void C4coeff() {
-    _C4x[0] = (_n*(_n*(_n*(_n*(100*_n+208)+572)+3432)-12012)+30030)/45045;
-    _C4x[1] = (_n*(_n*(_n*(64*_n+624)-4576)+6864)-3003)/15015;
-    _C4x[2] = (_n*((14144-10656*_n)*_n-4576)-858)/45045;
-    _C4x[3] = ((-224*_n-4784)*_n+1573)/45045;
-    _C4x[4] = (1088*_n+156)/45045;
-    _C4x[5] = 97/15015.0;
-    _C4x[6] = (_n*(_n*((-64*_n-624)*_n+4576)-6864)+3003)/135135;
-    _C4x[7] = (_n*(_n*(5952*_n-11648)+9152)-2574)/135135;
-    _C4x[8] = (_n*(5792*_n+1040)-1287)/135135;
-    _C4x[9] = (468-2944*_n)/135135;
-    _C4x[10] = 1/9009.0;
-    _C4x[11] = (_n*((4160-1440*_n)*_n-4576)+1716)/225225;
-    _C4x[12] = ((4992-8448*_n)*_n-1144)/225225;
-    _C4x[13] = (1856*_n-936)/225225;
-    _C4x[14] = 8/10725.0;
-    _C4x[15] = (_n*(3584*_n-3328)+1144)/315315;
-    _C4x[16] = (1024*_n-208)/105105;
-    _C4x[17] = -136/63063.0;
-    _C4x[18] = (832-2560*_n)/405405;
-    _C4x[19] = -128/135135.0;
-    _C4x[20] = 128/99099.0;
+    final double coeff[] = {
+      // C4[0], coeff of eps^5, polynomial in n of order 0
+      97, 15015,
+      // C4[0], coeff of eps^4, polynomial in n of order 1
+      1088, 156, 45045,
+      // C4[0], coeff of eps^3, polynomial in n of order 2
+      -224, -4784, 1573, 45045,
+      // C4[0], coeff of eps^2, polynomial in n of order 3
+      -10656, 14144, -4576, -858, 45045,
+      // C4[0], coeff of eps^1, polynomial in n of order 4
+      64, 624, -4576, 6864, -3003, 15015,
+      // C4[0], coeff of eps^0, polynomial in n of order 5
+      100, 208, 572, 3432, -12012, 30030, 45045,
+      // C4[1], coeff of eps^5, polynomial in n of order 0
+      1, 9009,
+      // C4[1], coeff of eps^4, polynomial in n of order 1
+      -2944, 468, 135135,
+      // C4[1], coeff of eps^3, polynomial in n of order 2
+      5792, 1040, -1287, 135135,
+      // C4[1], coeff of eps^2, polynomial in n of order 3
+      5952, -11648, 9152, -2574, 135135,
+      // C4[1], coeff of eps^1, polynomial in n of order 4
+      -64, -624, 4576, -6864, 3003, 135135,
+      // C4[2], coeff of eps^5, polynomial in n of order 0
+      8, 10725,
+      // C4[2], coeff of eps^4, polynomial in n of order 1
+      1856, -936, 225225,
+      // C4[2], coeff of eps^3, polynomial in n of order 2
+      -8448, 4992, -1144, 225225,
+      // C4[2], coeff of eps^2, polynomial in n of order 3
+      -1440, 4160, -4576, 1716, 225225,
+      // C4[3], coeff of eps^5, polynomial in n of order 0
+      -136, 63063,
+      // C4[3], coeff of eps^4, polynomial in n of order 1
+      1024, -208, 105105,
+      // C4[3], coeff of eps^3, polynomial in n of order 2
+      3584, -3328, 1144, 315315,
+      // C4[4], coeff of eps^5, polynomial in n of order 0
+      -128, 135135,
+      // C4[4], coeff of eps^4, polynomial in n of order 1
+      -2560, 832, 405405,
+      // C4[5], coeff of eps^5, polynomial in n of order 0
+      128, 99099,
+    };
+    int o = 0, k = 0;
+    for (int l = 0; l < nC4_; ++l) {        // l is index of C4[l]
+      for (int j = nC4_ - 1; j >= l; --j) { // coeff of eps^j
+        int m = nC4_ - j - 1;               // order of polynomial in n
+        _C4x[k++] = GeoMath.polyval(m, coeff, o, _n) / coeff[o + m + 1];
+        o += m + 2;
+      }
+    }
   }
 }
diff --git a/java/src/main/java/net/sf/geographiclib/GeodesicLine.java b/java/src/main/java/net/sf/geographiclib/GeodesicLine.java
index 6bcc23f..5dd9a73 100644
--- a/java/src/main/java/net/sf/geographiclib/GeodesicLine.java
+++ b/java/src/main/java/net/sf/geographiclib/GeodesicLine.java
@@ -166,11 +166,12 @@ public class GeodesicLine {
     _b = g._b;
     _c2 = g._c2;
     _f1 = g._f1;
-    // Always allow latitude and azimuth
-    _caps = caps | GeodesicMask.LATITUDE | GeodesicMask.AZIMUTH;
+    // Always allow latitude and azimuth and unrolling the longitude
+    _caps = caps | GeodesicMask.LATITUDE | GeodesicMask.AZIMUTH |
+      GeodesicMask.LONG_UNROLL;
 
     // Guard against underflow in salp0
-    azi1 = Geodesic.AngRound(GeoMath.AngNormalize(azi1));
+    azi1 = GeoMath.AngRound(GeoMath.AngNormalize(azi1));
     _lat1 = lat1;
     _lon1 = lon1;
     _azi1 = azi1;
@@ -185,7 +186,7 @@ public class GeodesicLine {
     // Ensure cbet1 = +epsilon at poles
     sbet1 = _f1 * Math.sin(phi);
     cbet1 = Math.abs(lat1) == 90 ? Geodesic.tiny_ : Math.cos(phi);
-    { Pair p = Geodesic.SinCosNorm(sbet1, cbet1);
+    { Pair p = GeoMath.norm(sbet1, cbet1);
       sbet1 = p.first; cbet1 = p.second; }
     _dn1 = Math.sqrt(1 + g._ep2 * GeoMath.sq(sbet1));
 
@@ -205,9 +206,9 @@ public class GeodesicLine {
     // With alp0 = 0, omg1 = 0 for alp1 = 0, omg1 = pi for alp1 = pi.
     _ssig1 = sbet1; _somg1 = _salp0 * sbet1;
     _csig1 = _comg1 = sbet1 != 0 || _calp1 != 0 ? cbet1 * _calp1 : 1;
-    { Pair p = Geodesic.SinCosNorm(_ssig1, _csig1);
+    { Pair p = GeoMath.norm(_ssig1, _csig1);
       _ssig1 = p.first; _csig1 = p.second; } // sig1 in (-pi, pi]
-    // Geodesic.SinCosNorm(_somg1, _comg1); -- don't need to normalize!
+    // GeoMath.norm(_somg1, _comg1); -- don't need to normalize!
 
     _k2 = GeoMath.sq(_calp0) * g._ep2;
     double eps = _k2 / (2 * (1 + Math.sqrt(1 + _k2)) + _k2);
@@ -299,8 +300,11 @@ public class GeodesicLine {
    * |= {@link GeodesicMask#DISTANCE_IN}; otherwise no parameters are set.
    * Requesting a value which the GeodesicLine object is not capable of
    * computing is not an error (no parameters will be set).  The value of
-   * <i>lon2</i> returned is in the range [−180°, 180°), unless
-   * the <i>outmask</i> includes the {@link GeodesicMask#LONG_NOWRAP} flag.
+   * <i>lon2</i> returned is normally in the range [−180°, 180°);
+   * however if the <i>outmask</i> includes the
+   * {@link GeodesicMask#LONG_UNROLL} flag, the longitude is "unrolled" so that
+   * the quantity <i>lon2</i> − <i>lon1</i> indicates how many times and
+   * in what sense the geodesic encircles the ellipsoid.
    **********************************************************************/
   public GeodesicData Position(double s12, int outmask) {
     return Position(false, s12, outmask);
@@ -344,7 +348,7 @@ public class GeodesicLine {
    * Requesting a value which the GeodesicLine object is not capable of
    * computing is not an error (no parameters will be set).  The value of
    * <i>lon2</i> returned is in the range [−180°, 180°), unless
-   * the <i>outmask</i> includes the {@link GeodesicMask#LONG_NOWRAP} flag.
+   * the <i>outmask</i> includes the {@link GeodesicMask#LONG_UNROLL} flag.
    **********************************************************************/
   public GeodesicData ArcPosition(double a12, int outmask) {
     return Position(true, a12, outmask);
@@ -384,8 +388,8 @@ public class GeodesicLine {
    * <li>
    *   <i>outmask</i> |= GeodesicMask.ALL for all of the above;
    * <li>
-   *   <i>outmask</i> |= GeodesicMask.LONG_NOWRAP to stop <i>lon2</i> from
-   *   being reduced to the range [−180°, 180°).
+   *   <i>outmask</i> |= GeodesicMask.LONG_UNROLL to unroll <i>lon2</i>
+   *   (instead of reducing it to the range [−180°, 180°)).
    * </ul>
    * <p>
    * Requesting a value which the GeodesicLine object is not capable of
@@ -401,7 +405,7 @@ public class GeodesicLine {
       // Uninitialized or impossible distance calculation requested
       return r;
     r.lat1 = _lat1; r.azi1 = _azi1;
-    r.lon1 = ((outmask & GeodesicMask.LONG_NOWRAP) != 0) ? _lon1 :
+    r.lon1 = ((outmask & GeodesicMask.LONG_UNROLL) != 0) ? _lon1 :
       GeoMath.AngNormalize(_lon1);
 
     // Avoid warning about uninitialized B12.
@@ -427,7 +431,6 @@ public class GeodesicLine {
                                     _ctau1 * c - _stau1 * s,
                                     _C1pa);
       sig12 = tau12 - (B12 - _B11);
-      r.a12 = sig12 / GeoMath.degree;
       ssig12 = Math.sin(sig12); csig12 = Math.cos(sig12);
       if (Math.abs(_f) > 0.01) {
         // Reverted distance series is inaccurate for |f| > 1/100, so correct
@@ -460,6 +463,7 @@ public class GeodesicLine {
         ssig12 = Math.sin(sig12); csig12 = Math.cos(sig12);
         // Update B12 below
       }
+      r.a12 = sig12 / GeoMath.degree;
     }
 
     double omg12, lam12, lon12;
@@ -490,10 +494,12 @@ public class GeodesicLine {
     if ((outmask & GeodesicMask.LONGITUDE) != 0) {
       // tan(omg2) = sin(alp0) * tan(sig2)
       somg2 = _salp0 * ssig2; comg2 = csig2;  // No need to normalize
+      int E =  _salp0 < 0 ? -1 : 1;           // east or west going?
       // omg12 = omg2 - omg1
-      omg12 = ((outmask & GeodesicMask.LONG_NOWRAP) != 0) ? sig12
-        - (Math.atan2(ssig2, csig2) - Math.atan2(_ssig1, _csig1))
-        + (Math.atan2(somg2, comg2) - Math.atan2(_somg1, _comg1))
+      omg12 = ((outmask & GeodesicMask.LONG_UNROLL) != 0)
+        ? E * (sig12
+               - (Math.atan2(  ssig2, csig2) - Math.atan2(  _ssig1, _csig1))
+               + (Math.atan2(E*somg2, comg2) - Math.atan2(E*_somg1, _comg1)))
         : Math.atan2(somg2 * _comg1 - comg2 * _somg1,
                      comg2 * _comg1 + somg2 * _somg1);
       lam12 = omg12 + _A3c *
@@ -502,7 +508,7 @@ public class GeodesicLine {
       lon12 = lam12 / GeoMath.degree;
       // Use GeoMath.AngNormalize2 because longitude might have wrapped
       // multiple times.
-      r.lon2 = ((outmask & GeodesicMask.LONG_NOWRAP) != 0) ? _lon1 + lon12 :
+      r.lon2 = ((outmask & GeodesicMask.LONG_UNROLL) != 0) ? _lon1 + lon12 :
         GeoMath.AngNormalize(r.lon1 + GeoMath.AngNormalize2(lon12));
     }
 
@@ -536,7 +542,7 @@ public class GeodesicLine {
         B42 = Geodesic.SinCosSeries(false, ssig2, csig2, _C4a);
       double salp12, calp12;
       if (_calp0 == 0 || _salp0 == 0) {
-        // alp12 = alp2 - alp1, used in atan2 so no need to normalized
+        // alp12 = alp2 - alp1, used in atan2 so no need to normalize
         salp12 = salp2 * _calp1 - calp2 * _salp1;
         calp12 = calp2 * _calp1 + salp2 * _salp1;
         // The right thing appears to happen if alp1 = +/-180 and alp2 = 0, viz
diff --git a/java/src/main/java/net/sf/geographiclib/GeodesicMask.java b/java/src/main/java/net/sf/geographiclib/GeodesicMask.java
index 19066ed..02c9369 100644
--- a/java/src/main/java/net/sf/geographiclib/GeodesicMask.java
+++ b/java/src/main/java/net/sf/geographiclib/GeodesicMask.java
@@ -30,7 +30,7 @@ public class GeodesicMask {
   protected static final int CAP_ALL  = 0x1F;
   protected static final int CAP_MASK = CAP_ALL;
   protected static final int OUT_ALL  = 0x7F80;
-  protected static final int OUT_MASK = 0xFF80; // Include LONG_NOWRAP
+  protected static final int OUT_MASK = 0xFF80; // Include LONG_UNROLL
 
   /**
    * No capabilities, no output.
@@ -73,11 +73,16 @@ public class GeodesicMask {
    **********************************************************************/
   public static final int AREA          = 1<<14 | CAP_C4;
   /**
-   * Do not wrap <i>lon2</i>.
+   * Unroll <i>lon2</i>.
    **********************************************************************/
-  public static final int LONG_NOWRAP   = 1<<15;
+  public static final int LONG_UNROLL   = 1<<15;
   /**
-   * All capabilities, calculate everything.
+   * For backward compatibility only; use LONG_UNROLL instead.
+   **********************************************************************/
+  public static final int LONG_NOWRAP   = LONG_UNROLL;
+  /**
+   * All capabilities, calculate everything.  (LONG_UNROLL is not included in
+   * this mask.)
    **********************************************************************/
   public static final int ALL           = OUT_ALL| CAP_ALL;
 }
diff --git a/java/src/main/java/net/sf/geographiclib/PolygonArea.java b/java/src/main/java/net/sf/geographiclib/PolygonArea.java
index 018035b..d1a7f58 100644
--- a/java/src/main/java/net/sf/geographiclib/PolygonArea.java
+++ b/java/src/main/java/net/sf/geographiclib/PolygonArea.java
@@ -104,7 +104,7 @@ public class PolygonArea {
      _mask = GeodesicMask.LATITUDE | GeodesicMask.LONGITUDE |
        GeodesicMask.DISTANCE |
        (_polyline ? GeodesicMask.NONE :
-        GeodesicMask.AREA | GeodesicMask.LONG_NOWRAP);
+        GeodesicMask.AREA | GeodesicMask.LONG_UNROLL);
      _perimetersum = new Accumulator(0);
      if (!_polyline)
        _areasum = new Accumulator(0);
diff --git a/java/src/main/java/net/sf/geographiclib/package-info.java b/java/src/main/java/net/sf/geographiclib/package-info.java
index a36ebf9..6691850 100644
--- a/java/src/main/java/net/sf/geographiclib/package-info.java
+++ b/java/src/main/java/net/sf/geographiclib/package-info.java
@@ -1,7 +1,7 @@
 /**
  * <h1>Geodesic routines from GeographicLib implemented in Java</h1>
  * @author Charles F. F. Karney (charles at karney.com)
- * @version 1.42
+ * @version 1.43
  *
  * <h2>Abstract</h2>
  * <p>
@@ -19,15 +19,15 @@
  * GeographicLib-Java is part of GeographicLib which available for download at
  * <ul>
  * <li>
- *   <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.42.tar.gz">
- *   GeographicLib-1.42.tar.gz</a>
+ *   <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.43.tar.gz">
+ *   GeographicLib-1.43.tar.gz</a>
  * <li>
- *   <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.42.zip">
- *   GeographicLib-1.42.zip</a>
+ *   <a href="https://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.43.zip">
+ *   GeographicLib-1.43.zip</a>
  * </ul>
  * <p>
  * as either a compressed tar file (tar.gz) or a zip file.  After unpacking
- * the source, the Java library can be found in GeographicLib-1.42/java.  (This
+ * the source, the Java library can be found in GeographicLib-1.43/java.  (This
  * library is completely independent from the rest of GeodegraphicLib.)  The
  * library consists of the files in the src/main/java/net/sf/geographiclib
  * subdirectory.
@@ -40,7 +40,7 @@
  *   <dependency>
  *     <groupId>net.sf.geographiclib</groupId>
  *     <artifactId>GeographicLib-Java</artifactId>
- *     <version>1.42</version>
+ *     <version>1.43</version>
  *   </dependency> }</pre>
  * in your {@code pom.xml}.
  *
@@ -105,14 +105,17 @@
  * some additional packages to your local repository.)  Then compile and run
  * Inverse.java with <pre>
  * cd inverse/src/main/java
- * javac -cp .:../../../../target/GeographicLib-1.42.jar Inverse.java
+ * javac -cp .:../../../../target/GeographicLib-Java-1.43.jar Inverse.java
  * echo -30 0 29.5 179.5 |
- *   java -cp .:../../../../target/GeographicLib-1.42.jar Inverse </pre>
+ *   java -cp .:../../../../target/GeographicLib-Java-1.43.jar Inverse </pre>
  *
  * <h3>Using maven to build and run {@code Inverse.java}</h3>
- * The sample code includes a {@code pom.xml} which downloads the pre-built
- * artifact for GeographicLib-Java from Maven Central.  So you can compile and
- * run Inverse.java with <pre>
+ * The sample code includes a {@code pom.xml} which specifies
+ * GeographicLib-Jave as a dependency.  You can build and install this
+ * dependency by running (in the main java directory) <pre>
+ * mvn install </pre>
+ * Alternatively, you can let maven download it from Maven Central.  You can
+ * compile and run Inverse.java with <pre>
  * cd inverse
  * mvn compile
  * echo -30 0 29.5 179.5 | mvn -q exec:java </pre>
diff --git a/legacy/C/geodesic.c b/legacy/C/geodesic.c
index dd88662..9a8f043 100644
--- a/legacy/C/geodesic.c
+++ b/legacy/C/geodesic.c
@@ -18,7 +18,7 @@
  *
  * See the comments in geodesic.h for documentation.
  *
- * Copyright (c) Charles Karney (2012-2014) <charles at karney.com> and licensed
+ * Copyright (c) Charles Karney (2012-2015) <charles at karney.com> and licensed
  * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  */
@@ -27,8 +27,10 @@
 #include <math.h>
 
 #define GEOGRAPHICLIB_GEODESIC_ORDER 6
+#define nA1   GEOGRAPHICLIB_GEODESIC_ORDER
 #define nC1   GEOGRAPHICLIB_GEODESIC_ORDER
 #define nC1p  GEOGRAPHICLIB_GEODESIC_ORDER
+#define nA2   GEOGRAPHICLIB_GEODESIC_ORDER
 #define nC2   GEOGRAPHICLIB_GEODESIC_ORDER
 #define nA3   GEOGRAPHICLIB_GEODESIC_ORDER
 #define nA3x  nA3
@@ -137,6 +139,12 @@ static real sumx(real u, real v, real* t) {
   return s;
 }
 
+static real polyval(int N, const real p[], real x) {
+  real y = N < 0 ? 0 : *p++;
+  while (--N >= 0) y = y * x + *p++;
+  return y;
+}
+
 static real minx(real x, real y)
 { return x < y ? x : y; }
 
@@ -146,7 +154,7 @@ static real maxx(real x, real y)
 static void swapx(real* x, real* y)
 { real t = *x; *x = *y; *y = t; }
 
-static void SinCosNorm(real* sinx, real* cosx) {
+static void norm2(real* sinx, real* cosx) {
   real r = hypotx(*sinx, *cosx);
   *sinx /= r;
   *cosx /= r;
@@ -171,7 +179,7 @@ static real AngRound(real x) {
   volatile real y = fabs(x);
   /* The compiler mustn't "simplify" z - (z - y) to y */
   y = y < z ? z - (z - y) : y;
-  return x < 0 ? -y : y;
+  return x < 0 ? 0 - y : y;
 }
 
 static void A3coeff(struct geod_geodesic* g);
@@ -270,7 +278,8 @@ void geod_lineinit(struct geod_geodesicline* l,
   l->f1 = g->f1;
   /* If caps is 0 assume the standard direct calculation */
   l->caps = (caps ? caps : GEOD_DISTANCE_IN | GEOD_LONGITUDE) |
-    GEOD_LATITUDE | GEOD_AZIMUTH; /* Always allow latitude and azimuth */
+    /* always allow latitude and azimuth and unrolling of longitude */
+    GEOD_LATITUDE | GEOD_AZIMUTH | GEOD_LONG_UNROLL;
 
   l->lat1 = lat1;
   l->lon1 = lon1;
@@ -286,7 +295,7 @@ void geod_lineinit(struct geod_geodesicline* l,
   /* Ensure cbet1 = +epsilon at poles */
   sbet1 = l->f1 * sin(phi);
   cbet1 = fabs(lat1) == 90 ? tiny : cos(phi);
-  SinCosNorm(&sbet1, &cbet1);
+  norm2(&sbet1, &cbet1);
   l->dn1 = sqrt(1 + g->ep2 * sq(sbet1));
 
   /* Evaluate alp0 from sin(alp1) * cos(bet1) = sin(alp0), */
@@ -305,8 +314,8 @@ void geod_lineinit(struct geod_geodesicline* l,
    * With alp0 = 0, omg1 = 0 for alp1 = 0, omg1 = pi for alp1 = pi. */
   l->ssig1 = sbet1; l->somg1 = l->salp0 * sbet1;
   l->csig1 = l->comg1 = sbet1 != 0 || l->calp1 != 0 ? cbet1 * l->calp1 : 1;
-  SinCosNorm(&l->ssig1, &l->csig1); /* sig1 in (-pi, pi] */
-  /* SinCosNorm(somg1, comg1); -- don't need to normalize! */
+  norm2(&l->ssig1, &l->csig1); /* sig1 in (-pi, pi] */
+  /* norm2(somg1, comg1); -- don't need to normalize! */
 
   l->k2 = sq(l->calp0) * g->ep2;
   eps = l->k2 / (2 * (1 + sqrt(1 + l->k2)) + l->k2);
@@ -452,12 +461,14 @@ real geod_genposition(const struct geod_geodesicline* l,
     s12 = flags & GEOD_ARCMODE ? l->b * ((1 + l->A1m1) * sig12 + AB1) : s12_a12;
 
   if (outmask & GEOD_LONGITUDE) {
+    int E = l->salp0 < 0 ? -1 : 1; /* east or west going? */
     /* tan(omg2) = sin(alp0) * tan(sig2) */
     somg2 = l->salp0 * ssig2; comg2 = csig2;  /* No need to normalize */
     /* omg12 = omg2 - omg1 */
-    omg12 = flags & GEOD_LONG_NOWRAP ? sig12
-      - (atan2(ssig2, csig2) - atan2(l->ssig1, l->csig1))
-      + (atan2(somg2, comg2) - atan2(l->somg1, l->comg1))
+    omg12 = flags & GEOD_LONG_UNROLL
+      ? E * (sig12
+             - (atan2(    ssig2, csig2) - atan2(    l->ssig1, l->csig1))
+             + (atan2(E * somg2, comg2) - atan2(E * l->somg1, l->comg1)))
       : atan2(somg2 * l->comg1 - comg2 * l->somg1,
               comg2 * l->comg1 + somg2 * l->somg1);
     lam12 = omg12 + l->A3c *
@@ -466,7 +477,7 @@ real geod_genposition(const struct geod_geodesicline* l,
     lon12 = lam12 / degree;
     /* Use AngNormalize2 because longitude might have wrapped multiple
      * times. */
-    lon2 = flags & GEOD_LONG_NOWRAP ? l->lon1 + lon12 :
+    lon2 = flags & GEOD_LONG_UNROLL ? l->lon1 + lon12 :
       AngNormalize(AngNormalize(l->lon1) + AngNormalize2(lon12));
   }
 
@@ -499,7 +510,7 @@ real geod_genposition(const struct geod_geodesicline* l,
       B42 = SinCosSeries(FALSE, ssig2, csig2, l->C4a, nC4);
     real salp12, calp12;
     if (l->calp0 == 0 || l->salp0 == 0) {
-      /* alp12 = alp2 - alp1, used in atan2 so no need to normalized */
+      /* alp12 = alp2 - alp1, used in atan2 so no need to normalize */
       salp12 = salp2 * l->calp1 - calp2 * l->salp1;
       calp12 = calp2 * l->calp1 + salp2 * l->salp1;
       /* The right thing appears to happen if alp1 = +/-180 and alp2 = 0, viz
@@ -645,13 +656,13 @@ real geod_geninverse(const struct geod_geodesic* g,
   /* Ensure cbet1 = +epsilon at poles */
   sbet1 = g->f1 * sin(phi);
   cbet1 = lat1 == -90 ? tiny : cos(phi);
-  SinCosNorm(&sbet1, &cbet1);
+  norm2(&sbet1, &cbet1);
 
   phi = lat2 * degree;
   /* Ensure cbet2 = +epsilon at poles */
   sbet2 = g->f1 * sin(phi);
   cbet2 = fabs(lat2) == 90 ? tiny : cos(phi);
-  SinCosNorm(&sbet2, &cbet2);
+  norm2(&sbet2, &cbet2);
 
   /* If cbet1 < -sbet1, then cbet2 - cbet1 is a sensitive measure of the
    * |bet1| - |bet2|.  Alternatively (cbet1 >= -sbet1), abs(sbet2) + sbet1 is
@@ -793,7 +804,7 @@ real geod_geninverse(const struct geod_geodesic* g,
           if (nsalp1 > 0 && fabs(dalp1) < pi) {
             calp1 = calp1 * cdalp1 - salp1 * sdalp1;
             salp1 = nsalp1;
-            SinCosNorm(&salp1, &calp1);
+            norm2(&salp1, &calp1);
             /* In some regimes we don't get quadratic convergence because
              * slope -> 0.  So use convergence conditions based on epsilon
              * instead of sqrt(epsilon). */
@@ -811,7 +822,7 @@ real geod_geninverse(const struct geod_geodesic* g,
          * WGS84 and random input: mean = 4.74, sd = 0.99 */
         salp1 = (salp1a + salp1b)/2;
         calp1 = (calp1a + calp1b)/2;
-        SinCosNorm(&salp1, &calp1);
+        norm2(&salp1, &calp1);
         tripn = FALSE;
         tripb = (fabs(salp1a - salp1) + (calp1a - calp1) < tolb ||
                  fabs(salp1 - salp1b) + (calp1 - calp1b) < tolb);
@@ -852,8 +863,8 @@ real geod_geninverse(const struct geod_geodesic* g,
         A4 = sq(g->a) * calp0 * salp0 * g->e2;
       real C4a[nC4];
       real B41, B42;
-      SinCosNorm(&ssig1, &csig1);
-      SinCosNorm(&ssig2, &csig2);
+      norm2(&ssig1, &csig1);
+      norm2(&ssig2, &csig2);
       C4f(g, eps, C4a);
       B41 = SinCosSeries(FALSE, ssig1, csig1, C4a, nC4);
       B42 = SinCosSeries(FALSE, ssig2, csig2, C4a, nC4);
@@ -1119,7 +1130,7 @@ real InverseStart(const struct geod_geodesic* g,
     salp2 = cbet1 * somg12;
     calp2 = sbet12 - cbet1 * sbet2 *
       (comg12 >= 0 ? sq(somg12) / (1 + comg12) : 1 - comg12);
-    SinCosNorm(&salp2, &calp2);
+    norm2(&salp2, &calp2);
     /* Set return value */
     sig12 = atan2(ssig12, csig12);
   } else if (fabs(g->n) > (real)(0.1) || /* No astroid calc if too eccentric */
@@ -1219,7 +1230,7 @@ real InverseStart(const struct geod_geodesic* g,
   }
   /* Sanity check on starting guess.  Backwards check allows NaN through. */
   if (!(salp1 <= 0))
-    SinCosNorm(&salp1, &calp1);
+    norm2(&salp1, &calp1);
   else {
     salp1 = 1; calp1 = 0;
   }
@@ -1266,8 +1277,8 @@ real Lambda12(const struct geod_geodesic* g,
    * tan(omg1) = sin(alp0) * tan(sig1) = tan(omg1)=tan(alp1)*sin(bet1) */
   ssig1 = sbet1; somg1 = salp0 * sbet1;
   csig1 = comg1 = calp1 * cbet1;
-  SinCosNorm(&ssig1, &csig1);
-  /* SinCosNorm(&somg1, &comg1); -- don't need to normalize! */
+  norm2(&ssig1, &csig1);
+  /* norm2(&somg1, &comg1); -- don't need to normalize! */
 
   /* Enforce symmetries in the case abs(bet2) = -bet1.  Need to be careful
    * about this case, since this can yield singularities in the Newton
@@ -1288,8 +1299,8 @@ real Lambda12(const struct geod_geodesic* g,
    * tan(omg2) = sin(alp0) * tan(sig2). */
   ssig2 = sbet2; somg2 = salp0 * sbet2;
   csig2 = comg2 = calp2 * cbet2;
-  SinCosNorm(&ssig2, &csig2);
-  /* SinCosNorm(&somg2, &comg2); -- don't need to normalize! */
+  norm2(&ssig2, &csig2);
+  /* norm2(&somg2, &comg2); -- don't need to normalize! */
 
   /* sig12 = sig2 - sig1, limit to [0, pi] */
   sig12 = atan2(maxx(csig1 * ssig2 - ssig1 * csig2, (real)(0)),
@@ -1335,177 +1346,264 @@ real Lambda12(const struct geod_geodesic* g,
 }
 
 real A3f(const struct geod_geodesic* g, real eps) {
-  /* Evaluate sum(A3x[k] * eps^k, k, 0, nA3x-1) by Horner's method */
-  real v = 0;
-  int i;
-  for (i = nA3x; i; )
-    v = eps * v + g->A3x[--i];
-  return v;
+  /* Evaluate A3 */
+  return polyval(nA3 - 1, g->A3x, eps);
 }
 
 void C3f(const struct geod_geodesic* g, real eps, real c[]) {
-  /* Evaluate C3 coeffs by Horner's method
+  /* Evaluate C3 coeffs
    * Elements c[1] thru c[nC3 - 1] are set */
-  int i, j, k;
   real mult = 1;
-  for (j = nC3x, k = nC3 - 1; k; ) {
-    real t = 0;
-    for (i = nC3 - k; i; --i)
-      t = eps * t + g->C3x[--j];
-    c[k--] = t;
-  }
-
-  for (k = 1; k < nC3; ) {
+  int o = 0, l;
+  for (l = 1; l < nC3; ++l) {   /* l is index of C3[l] */
+    int m = nC3 - l - 1;        /* order of polynomial in eps */
     mult *= eps;
-    c[k++] *= mult;
+    c[l] = mult * polyval(m, g->C3x + o, eps);
+    o += m + 1;
   }
 }
 
 void C4f(const struct geod_geodesic* g, real eps, real c[]) {
-  /* Evaluate C4 coeffs by Horner's method
+  /* Evaluate C4 coeffs
    * Elements c[0] thru c[nC4 - 1] are set */
-  int i, j, k;
   real mult = 1;
-  for (j = nC4x, k = nC4; k; ) {
-    real t = 0;
-    for (i = nC4 - k + 1; i; --i)
-      t = eps * t + g->C4x[--j];
-    c[--k] = t;
-  }
-
-  for (k = 1; k < nC4; ) {
+  int o = 0, l;
+  for (l = 0; l < nC4; ++l) {   /* l is index of C4[l] */
+    int m = nC4 - l - 1;        /* order of polynomial in eps */
+    c[l] = mult * polyval(m, g->C4x + o, eps);
+    o += m + 1;
     mult *= eps;
-    c[k++] *= mult;
   }
 }
 
-/* Generated by Maxima on 2010-09-04 10:26:17-04:00 */
-
 /* The scale factor A1-1 = mean value of (d/dsigma)I1 - 1 */
 real A1m1f(real eps)  {
-  real
-    eps2 = sq(eps),
-    t = eps2*(eps2*(eps2+4)+64)/256;
+  static const real coeff[] = {
+    /* (1-eps)*A1-1, polynomial in eps2 of order 3 */
+    1, 4, 64, 0, 256,
+  };
+  int m = nA1/2;
+  real t = polyval(m, coeff, sq(eps)) / coeff[m + 1];
   return (t + eps) / (1 - eps);
 }
 
 /* The coefficients C1[l] in the Fourier expansion of B1 */
 void C1f(real eps, real c[])  {
+  static const real coeff[] = {
+    /* C1[1]/eps^1, polynomial in eps2 of order 2 */
+    -1, 6, -16, 32,
+    /* C1[2]/eps^2, polynomial in eps2 of order 2 */
+    -9, 64, -128, 2048,
+    /* C1[3]/eps^3, polynomial in eps2 of order 1 */
+    9, -16, 768,
+    /* C1[4]/eps^4, polynomial in eps2 of order 1 */
+    3, -5, 512,
+    /* C1[5]/eps^5, polynomial in eps2 of order 0 */
+    -7, 1280,
+    /* C1[6]/eps^6, polynomial in eps2 of order 0 */
+    -7, 2048,
+  };
   real
     eps2 = sq(eps),
     d = eps;
-  c[1] = d*((6-eps2)*eps2-16)/32;
-  d *= eps;
-  c[2] = d*((64-9*eps2)*eps2-128)/2048;
-  d *= eps;
-  c[3] = d*(9*eps2-16)/768;
-  d *= eps;
-  c[4] = d*(3*eps2-5)/512;
-  d *= eps;
-  c[5] = -7*d/1280;
-  d *= eps;
-  c[6] = -7*d/2048;
+  int o = 0, l;
+  for (l = 1; l <= nC1; ++l) {  /* l is index of C1p[l] */
+    int m = (nC1 - l) / 2;      /* order of polynomial in eps^2 */
+    c[l] = d * polyval(m, coeff + o, eps2) / coeff[o + m + 1];
+    o += m + 2;
+    d *= eps;
+  }
 }
 
 /* The coefficients C1p[l] in the Fourier expansion of B1p */
 void C1pf(real eps, real c[])  {
+  static const real coeff[] = {
+    /* C1p[1]/eps^1, polynomial in eps2 of order 2 */
+    205, -432, 768, 1536,
+    /* C1p[2]/eps^2, polynomial in eps2 of order 2 */
+    4005, -4736, 3840, 12288,
+    /* C1p[3]/eps^3, polynomial in eps2 of order 1 */
+    -225, 116, 384,
+    /* C1p[4]/eps^4, polynomial in eps2 of order 1 */
+    -7173, 2695, 7680,
+    /* C1p[5]/eps^5, polynomial in eps2 of order 0 */
+    3467, 7680,
+    /* C1p[6]/eps^6, polynomial in eps2 of order 0 */
+    38081, 61440,
+  };
   real
     eps2 = sq(eps),
     d = eps;
-  c[1] = d*(eps2*(205*eps2-432)+768)/1536;
-  d *= eps;
-  c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
-  d *= eps;
-  c[3] = d*(116-225*eps2)/384;
-  d *= eps;
-  c[4] = d*(2695-7173*eps2)/7680;
-  d *= eps;
-  c[5] = 3467*d/7680;
-  d *= eps;
-  c[6] = 38081*d/61440;
+  int o = 0, l;
+  for (l = 1; l <= nC1p; ++l) { /* l is index of C1p[l] */
+    int m = (nC1p - l) / 2;     /* order of polynomial in eps^2 */
+    c[l] = d * polyval(m, coeff + o, eps2) / coeff[o + m + 1];
+    o += m + 2;
+    d *= eps;
+  }
 }
 
 /* The scale factor A2-1 = mean value of (d/dsigma)I2 - 1 */
 real A2m1f(real eps)  {
-  real
-    eps2 = sq(eps),
-    t = eps2*(eps2*(25*eps2+36)+64)/256;
+  static const real coeff[] = {
+    /* A2/(1-eps)-1, polynomial in eps2 of order 3 */
+    25, 36, 64, 0, 256,
+  };
+  int m = nA2/2;
+  real t = polyval(m, coeff, sq(eps)) / coeff[m + 1];
   return t * (1 - eps) - eps;
 }
 
 /* The coefficients C2[l] in the Fourier expansion of B2 */
 void C2f(real eps, real c[])  {
+  static const real coeff[] = {
+    /* C2[1]/eps^1, polynomial in eps2 of order 2 */
+    1, 2, 16, 32,
+    /* C2[2]/eps^2, polynomial in eps2 of order 2 */
+    35, 64, 384, 2048,
+    /* C2[3]/eps^3, polynomial in eps2 of order 1 */
+    15, 80, 768,
+    /* C2[4]/eps^4, polynomial in eps2 of order 1 */
+    7, 35, 512,
+    /* C2[5]/eps^5, polynomial in eps2 of order 0 */
+    63, 1280,
+    /* C2[6]/eps^6, polynomial in eps2 of order 0 */
+    77, 2048,
+  };
   real
     eps2 = sq(eps),
     d = eps;
-  c[1] = d*(eps2*(eps2+2)+16)/32;
-  d *= eps;
-  c[2] = d*(eps2*(35*eps2+64)+384)/2048;
-  d *= eps;
-  c[3] = d*(15*eps2+80)/768;
-  d *= eps;
-  c[4] = d*(7*eps2+35)/512;
-  d *= eps;
-  c[5] = 63*d/1280;
-  d *= eps;
-  c[6] = 77*d/2048;
+  int o = 0, l;
+  for (l = 1; l <= nC2; ++l) { /* l is index of C2[l] */
+    int m = (nC2 - l) / 2;     /* order of polynomial in eps^2 */
+    c[l] = d * polyval(m, coeff + o, eps2) / coeff[o + m + 1];
+    o += m + 2;
+    d *= eps;
+  }
 }
 
 /* The scale factor A3 = mean value of (d/dsigma)I3 */
 void A3coeff(struct geod_geodesic* g) {
-  g->A3x[0] = 1;
-  g->A3x[1] = (g->n-1)/2;
-  g->A3x[2] = (g->n*(3*g->n-1)-2)/8;
-  g->A3x[3] = ((-g->n-3)*g->n-1)/16;
-  g->A3x[4] = (-2*g->n-3)/64;
-  g->A3x[5] = -3/(real)(128);
+  static const real coeff[] = {
+    /* A3, coeff of eps^5, polynomial in n of order 0 */
+    -3, 128,
+    /* A3, coeff of eps^4, polynomial in n of order 1 */
+    -2, -3, 64,
+    /* A3, coeff of eps^3, polynomial in n of order 2 */
+    -1, -3, -1, 16,
+    /* A3, coeff of eps^2, polynomial in n of order 2 */
+    3, -1, -2, 8,
+    /* A3, coeff of eps^1, polynomial in n of order 1 */
+    1, -1, 2,
+    /* A3, coeff of eps^0, polynomial in n of order 0 */
+    1, 1,
+  };
+  int o = 0, k = 0, j;
+  for (j = nA3 - 1; j >= 0; --j) {             /* coeff of eps^j */
+    int m = nA3 - j - 1 < j ? nA3 - j - 1 : j; /* order of polynomial in n */
+    g->A3x[k++] = polyval(m, coeff + o, g->n) / coeff[o + m + 1];
+    o += m + 2;
+  }
 }
 
 /* The coefficients C3[l] in the Fourier expansion of B3 */
 void C3coeff(struct geod_geodesic* g) {
-  g->C3x[0] = (1-g->n)/4;
-  g->C3x[1] = (1-g->n*g->n)/8;
-  g->C3x[2] = ((3-g->n)*g->n+3)/64;
-  g->C3x[3] = (2*g->n+5)/128;
-  g->C3x[4] = 3/(real)(128);
-  g->C3x[5] = ((g->n-3)*g->n+2)/32;
-  g->C3x[6] = ((-3*g->n-2)*g->n+3)/64;
-  g->C3x[7] = (g->n+3)/128;
-  g->C3x[8] = 5/(real)(256);
-  g->C3x[9] = (g->n*(5*g->n-9)+5)/192;
-  g->C3x[10] = (9-10*g->n)/384;
-  g->C3x[11] = 7/(real)(512);
-  g->C3x[12] = (7-14*g->n)/512;
-  g->C3x[13] = 7/(real)(512);
-  g->C3x[14] = 21/(real)(2560);
+  static const real coeff[] = {
+    /* C3[1], coeff of eps^5, polynomial in n of order 0 */
+    3, 128,
+    /* C3[1], coeff of eps^4, polynomial in n of order 1 */
+    2, 5, 128,
+    /* C3[1], coeff of eps^3, polynomial in n of order 2 */
+    -1, 3, 3, 64,
+    /* C3[1], coeff of eps^2, polynomial in n of order 2 */
+    -1, 0, 1, 8,
+    /* C3[1], coeff of eps^1, polynomial in n of order 1 */
+    -1, 1, 4,
+    /* C3[2], coeff of eps^5, polynomial in n of order 0 */
+    5, 256,
+    /* C3[2], coeff of eps^4, polynomial in n of order 1 */
+    1, 3, 128,
+    /* C3[2], coeff of eps^3, polynomial in n of order 2 */
+    -3, -2, 3, 64,
+    /* C3[2], coeff of eps^2, polynomial in n of order 2 */
+    1, -3, 2, 32,
+    /* C3[3], coeff of eps^5, polynomial in n of order 0 */
+    7, 512,
+    /* C3[3], coeff of eps^4, polynomial in n of order 1 */
+    -10, 9, 384,
+    /* C3[3], coeff of eps^3, polynomial in n of order 2 */
+    5, -9, 5, 192,
+    /* C3[4], coeff of eps^5, polynomial in n of order 0 */
+    7, 512,
+    /* C3[4], coeff of eps^4, polynomial in n of order 1 */
+    -14, 7, 512,
+    /* C3[5], coeff of eps^5, polynomial in n of order 0 */
+    21, 2560,
+  };
+  int o = 0, k = 0, l, j;
+  for (l = 1; l < nC3; ++l) {                    /* l is index of C3[l] */
+    for (j = nC3 - 1; j >= l; --j) {             /* coeff of eps^j */
+      int m = nC3 - j - 1 < j ? nC3 - j - 1 : j; /* order of polynomial in n */
+      g->C3x[k++] = polyval(m, coeff + o, g->n) / coeff[o + m + 1];
+      o += m + 2;
+    }
+  }
 }
 
-/* Generated by Maxima on 2012-10-19 08:02:34-04:00 */
-
 /* The coefficients C4[l] in the Fourier expansion of I4 */
 void C4coeff(struct geod_geodesic* g) {
-  g->C4x[0] = (g->n*(g->n*(g->n*(g->n*(100*g->n+208)+572)+3432)-12012)+30030)/
-    45045;
-  g->C4x[1] = (g->n*(g->n*(g->n*(64*g->n+624)-4576)+6864)-3003)/15015;
-  g->C4x[2] = (g->n*((14144-10656*g->n)*g->n-4576)-858)/45045;
-  g->C4x[3] = ((-224*g->n-4784)*g->n+1573)/45045;
-  g->C4x[4] = (1088*g->n+156)/45045;
-  g->C4x[5] = 97/(real)(15015);
-  g->C4x[6] = (g->n*(g->n*((-64*g->n-624)*g->n+4576)-6864)+3003)/135135;
-  g->C4x[7] = (g->n*(g->n*(5952*g->n-11648)+9152)-2574)/135135;
-  g->C4x[8] = (g->n*(5792*g->n+1040)-1287)/135135;
-  g->C4x[9] = (468-2944*g->n)/135135;
-  g->C4x[10] = 1/(real)(9009);
-  g->C4x[11] = (g->n*((4160-1440*g->n)*g->n-4576)+1716)/225225;
-  g->C4x[12] = ((4992-8448*g->n)*g->n-1144)/225225;
-  g->C4x[13] = (1856*g->n-936)/225225;
-  g->C4x[14] = 8/(real)(10725);
-  g->C4x[15] = (g->n*(3584*g->n-3328)+1144)/315315;
-  g->C4x[16] = (1024*g->n-208)/105105;
-  g->C4x[17] = -136/(real)(63063);
-  g->C4x[18] = (832-2560*g->n)/405405;
-  g->C4x[19] = -128/(real)(135135);
-  g->C4x[20] = 128/(real)(99099);
+  static const real coeff[] = {
+    /* C4[0], coeff of eps^5, polynomial in n of order 0 */
+    97, 15015,
+    /* C4[0], coeff of eps^4, polynomial in n of order 1 */
+    1088, 156, 45045,
+    /* C4[0], coeff of eps^3, polynomial in n of order 2 */
+    -224, -4784, 1573, 45045,
+    /* C4[0], coeff of eps^2, polynomial in n of order 3 */
+    -10656, 14144, -4576, -858, 45045,
+    /* C4[0], coeff of eps^1, polynomial in n of order 4 */
+    64, 624, -4576, 6864, -3003, 15015,
+    /* C4[0], coeff of eps^0, polynomial in n of order 5 */
+    100, 208, 572, 3432, -12012, 30030, 45045,
+    /* C4[1], coeff of eps^5, polynomial in n of order 0 */
+    1, 9009,
+    /* C4[1], coeff of eps^4, polynomial in n of order 1 */
+    -2944, 468, 135135,
+    /* C4[1], coeff of eps^3, polynomial in n of order 2 */
+    5792, 1040, -1287, 135135,
+    /* C4[1], coeff of eps^2, polynomial in n of order 3 */
+    5952, -11648, 9152, -2574, 135135,
+    /* C4[1], coeff of eps^1, polynomial in n of order 4 */
+    -64, -624, 4576, -6864, 3003, 135135,
+    /* C4[2], coeff of eps^5, polynomial in n of order 0 */
+    8, 10725,
+    /* C4[2], coeff of eps^4, polynomial in n of order 1 */
+    1856, -936, 225225,
+    /* C4[2], coeff of eps^3, polynomial in n of order 2 */
+    -8448, 4992, -1144, 225225,
+    /* C4[2], coeff of eps^2, polynomial in n of order 3 */
+    -1440, 4160, -4576, 1716, 225225,
+    /* C4[3], coeff of eps^5, polynomial in n of order 0 */
+    -136, 63063,
+    /* C4[3], coeff of eps^4, polynomial in n of order 1 */
+    1024, -208, 105105,
+    /* C4[3], coeff of eps^3, polynomial in n of order 2 */
+    3584, -3328, 1144, 315315,
+    /* C4[4], coeff of eps^5, polynomial in n of order 0 */
+    -128, 135135,
+    /* C4[4], coeff of eps^4, polynomial in n of order 1 */
+    -2560, 832, 405405,
+    /* C4[5], coeff of eps^5, polynomial in n of order 0 */
+    128, 99099,
+  };
+  int o = 0, k = 0, l, j;
+  for (l = 0; l < nC4; ++l) {        /* l is index of C4[l] */
+    for (j = nC4 - 1; j >= l; --j) { /* coeff of eps^j */
+      int m = nC4 - j - 1;           /* order of polynomial in n */
+      g->C4x[k++] = polyval(m, coeff + o, g->n) / coeff[o + m + 1];
+      o += m + 2;
+    }
+  }
 }
 
 int transit(real lon1, real lon2) {
@@ -1594,7 +1692,7 @@ void geod_polygon_addedge(const struct geod_geodesic* g,
                           real azi, real s) {
   if (p->num) {                 /* Do nothing is num is zero */
     real lat, lon, S12;
-    geod_gendirect(g, p->lat, p->lon, azi, GEOD_LONG_NOWRAP, s,
+    geod_gendirect(g, p->lat, p->lon, azi, GEOD_LONG_UNROLL, s,
                    &lat, &lon, 0,
                    0, 0, 0, 0, p->polyline ? 0 : &S12);
     accadd(p->P, s);
@@ -1731,7 +1829,7 @@ unsigned geod_polygon_testedge(const struct geod_geodesic* g,
   crossings = p->crossings;
   {
     real lat, lon, s12, S12;
-    geod_gendirect(g, p->lat, p->lon, azi, GEOD_LONG_NOWRAP, s,
+    geod_gendirect(g, p->lat, p->lon, azi, GEOD_LONG_UNROLL, s,
                    &lat, &lon, 0,
                    0, 0, 0, 0, &S12);
     tempsum += S12;
diff --git a/legacy/C/geodesic.h b/legacy/C/geodesic.h
index 2be5aec..1a1892a 100644
--- a/legacy/C/geodesic.h
+++ b/legacy/C/geodesic.h
@@ -108,12 +108,12 @@
  * twice about restructuring the internals of the C code since this may make
  * porting fixes from the C++ code more difficult.
  *
- * Copyright (c) Charles Karney (2012-2014) <charles at karney.com> and licensed
+ * Copyright (c) Charles Karney (2012-2015) <charles at karney.com> and licensed
  * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * This library was distributed with
- * <a href="../index.html">GeographicLib</a> 1.42.
+ * <a href="../index.html">GeographicLib</a> 1.43.
  **********************************************************************/
 
 #if !defined(GEODESIC_H)
@@ -128,7 +128,7 @@
  * The minor version of the geodesic library.  (This tracks the version of
  * GeographicLib.)
  **********************************************************************/
-#define GEODESIC_VERSION_MINOR 42
+#define GEODESIC_VERSION_MINOR 43
 /**
  * The patch level of the geodesic library.  (This tracks the version of
  * GeographicLib.)
@@ -406,8 +406,7 @@ extern "C" {
    * @param[in] azi1 azimuth at point 1 (degrees).
    * @param[in] flags bitor'ed combination of geod_flags(); \e flags &
    *   GEOD_ARCMODE determines the meaning of \e s12_a12 and \e flags &
-   *   GEOD_LONG_NOWRAP prevents the value of \e lon2 being wrapped into
-   *   the range [−180°, 180°).
+   *   GEOD_LONG_UNROLL "unrolls" \e lon2.
    * @param[in] s12_a12 if \e flags & GEOD_ARCMODE is 0, this is the distance
    *   between point 1 and point 2 (meters); otherwise it is the arc length
    *   between point 1 and point 2 (degrees); it can be negative.
@@ -432,12 +431,12 @@ extern "C" {
    * "return" arguments \e plat2, etc., may be replaced by 0, if you do not
    * need some quantities computed.
    *
-   * With \e flags & GEOD_LONG_NOWRAP bit set, the quantity \e lon2 −
-   * \e lon1 indicates how many times the geodesic wrapped around the
-   * ellipsoid.  Because \e lon2 might be outside the normal allowed range
-   * for longitudes, [−540°, 540°), be sure to normalize it,
-   * e.g., with fmod(\e lon2, 360.0) before using it in subsequent
-   * calculations
+   * With \e flags & GEOD_LONG_UNROLL bit set, the longitude is "unrolled" so
+   * that the quantity \e lon2 − \e lon1 indicates how many times and in
+   * what sense the geodesic encircles the ellipsoid.  Because \e lon2 might be
+   * outside the normal allowed range for longitudes, [−540°,
+   * 540°), be sure to normalize it, e.g., with fmod(\e lon2, 360.0) before
+   * using it in subsequent calculations
    **********************************************************************/
   double geod_gendirect(const struct geod_geodesic* g,
                         double lat1, double lon1, double azi1,
@@ -487,10 +486,8 @@ extern "C" {
    *   geodesic line.
    * @param[in] flags bitor'ed combination of geod_flags(); \e flags &
    *   GEOD_ARCMODE determines the meaning of \e s12_a12 and \e flags &
-   *   GEOD_LONG_NOWRAP prevents the value of \e lon2 being wrapped into
-   *   the range [−180°, 180°); if \e flags & GEOD_ARCMODE is
-   *   0, then \e l must have been initialized with \e caps |=
-   *   GEOD_DISTANCE_IN.
+   *   GEOD_LONG_UNROLL "unrolls" \e lon2; if \e flags & GEOD_ARCMODE is 0,
+   *   then \e l must have been initialized with \e caps |= GEOD_DISTANCE_IN.
    * @param[in] s12_a12 if \e flags & GEOD_ARCMODE is 0, this is the
    *   distance between point 1 and point 2 (meters); otherwise it is the
    *   arc length between point 1 and point 2 (degrees); it can be
@@ -522,12 +519,12 @@ extern "C" {
    * computed.  Requesting a value which \e l is not capable of computing
    * is not an error; the corresponding argument will not be altered.
    *
-   * With \e flags & GEOD_LONG_NOWRAP bit set, the quantity \e lon2 −
-   * \e lon1 indicates how many times the geodesic wrapped around the
-   * ellipsoid.  Because \e lon2 might be outside the normal allowed range
-   * for longitudes, [−540°, 540°), be sure to normalize it,
-   * e.g., with fmod(\e lon2, 360.0) before using it in subsequent
-   * calculations
+   * With \e flags & GEOD_LONG_UNROLL bit set, the longitude is "unrolled" so
+   * that the quantity \e lon2 − \e lon1 indicates how many times and in
+   * what sense the geodesic encircles the ellipsoid.  Because \e lon2 might be
+   * outside the normal allowed range for longitudes, [−540°,
+   * 540°), be sure to normalize it, e.g., with fmod(\e lon2, 360.0) before
+   * using it in subsequent calculations
    *
    * Example, compute way points between JFK and Singapore Changi Airport
    * using geod_genposition().  In this example, the points are evenly space in
@@ -794,7 +791,10 @@ extern "C" {
   enum geod_flags {
     GEOD_NOFLAGS      = 0U,     /**< No flags */
     GEOD_ARCMODE      = 1U<<0,  /**< Position given in terms of arc distance */
-    GEOD_LONG_NOWRAP  = 1U<<15  /**< Don't wrap longitude */
+    GEOD_LONG_UNROLL  = 1U<<15, /**< Unroll the longitude */
+    /**< @cond SKIP */
+    GEOD_LONG_NOWRAP  = GEOD_LONG_UNROLL /* For backward compatibility only */
+    /**< @endcond */
   };
 
 #if defined(__cplusplus)
diff --git a/legacy/Fortran/geodesic.for b/legacy/Fortran/geodesic.for
index 0c12324..0b12b36 100644
--- a/legacy/Fortran/geodesic.for
+++ b/legacy/Fortran/geodesic.for
@@ -112,12 +112,12 @@
 *! restructuring the internals of the Fortran code since this may make
 *! porting fixes from the C++ code more difficult.
 *!
-*! Copyright (c) Charles Karney (2012-2014) <charles at karney.com> and
+*! Copyright (c) Charles Karney (2012-2015) <charles at karney.com> and
 *! licensed under the MIT/X11 License.  For more information, see
 *! http://geographiclib.sourceforge.net/
 *!
 *! This library was distributed with
-*! <a href="../index.html">GeographicLib</a> 1.42.
+*! <a href="../index.html">GeographicLib</a> 1.43.
 
 *> Solve the direct geodesic problem
 *!
@@ -131,7 +131,7 @@
 *!   between point 1 and point 2 (meters); otherwise it is the arc
 *!   length between point 1 and point 2 (degrees); it can be negative.
 *! @param[in] flags a bitor'ed combination of the \e arcmode and \e
-*!   nowrap flags.
+*!   unroll flags.
 *! @param[out] lat2 latitude of point 2 (degrees).
 *! @param[out] lon2 longitude of point 2 (degrees).
 *! @param[out] azi2 (forward) azimuth at point 2 (degrees).
@@ -150,16 +150,17 @@
 *! \e flags is an integer in [0, 4) whose binary bits are interpreted
 *! as follows
 *! - 1 the \e arcmode flag
-*! - 2 the \e nowrap flag
+*! - 2 the \e unroll flag
 *! .
 *! If \e arcmode is not set, \e s12a12 is \e s12 and \e a12s12 is \e
 *! a12; otherwise, \e s12a12 is \e a12 and \e a12s12 is \e s12.  It \e
-*! nowrap is not set, the value \e lon2 returned is in the range
-*! [−180°, 180°); otherwise \e lon2 &minus \e lon1
-*! indicates how many times the geodesic wrapped around the ellipsoid.
-*! Because \e lon2 might be outside the normal allowed range for
-*! longitudes, [−540°, 540°), be sure to reduces its range
-*! with mod(\e lon2, 360d0) before using it in other calls.
+*! unroll is not set, the value \e lon2 returned is in the range
+*! [−180°, 180°); if unroll is set, the longitude variable
+*! is "unrolled" so that \e lon2 &minus \e lon1 indicates how many times
+*! and in what sense the geodesic encircles the ellipsoid.  Because \e
+*! lon2 might be outside the normal allowed range for longitudes,
+*! [−540°, 540°), be sure to reduces its range with mod(\e
+*! lon2, 360d0) before using it in other calls.
 *!
 *! \e omask is an integer in [0, 16) whose binary bits are interpreted
 *! as follows
@@ -200,13 +201,13 @@
 
       double precision csmgt, atanhx, hypotx,
      +    AngNm, AngNm2, AngRnd, TrgSum, A1m1f, A2m1f, A3f
-      logical arcmod, nowrap, arcp, redlp, scalp, areap
+      logical arcmod, unroll, arcp, redlp, scalp, areap
       double precision e2, f1, ep2, n, b, c2,
      +    lon1x, azi1x, phi, alp1, salp0, calp0, k2, eps,
      +    salp1, calp1, ssig1, csig1, cbet1, sbet1, dn1, somg1, comg1,
      +    salp2, calp2, ssig2, csig2, sbet2, cbet2, dn2, somg2, comg2,
      +    ssig12, csig12, salp12, calp12, omg12, lam12, lon12,
-     +    sig12, stau1, ctau1, tau12, s12a, t, s, c, serr,
+     +    sig12, stau1, ctau1, tau12, s12a, t, s, c, serr, E,
      +    A1m1, A2m1, A3c, A4, AB1, AB2,
      +    B11, B12, B21, B22, B31, B41, B42, J12
 
@@ -227,7 +228,7 @@
       c2 = 0
 
       arcmod = mod(flags/1, 2) == 1
-      nowrap = mod(flags/2, 2) == 1
+      unroll = mod(flags/2, 2) == 1
 
       arcp = mod(omask/1, 2) == 1
       redlp = mod(omask/2, 2) == 1
@@ -263,7 +264,7 @@
 * Ensure cbet1 = +dbleps at poles
       sbet1 = f1 * sin(phi)
       cbet1 = csmgt(tiny, cos(phi), abs(lat1) .eq. 90)
-      call Norm(sbet1, cbet1)
+      call norm2(sbet1, cbet1)
       dn1 = sqrt(1 + ep2 * sbet1**2)
 
 * Evaluate alp0 from sin(alp1) * cos(bet1) = sin(alp0),
@@ -286,8 +287,8 @@
       csig1 = csmgt(cbet1 * calp1, 1d0, sbet1 .ne. 0 .or. calp1 .ne. 0)
       comg1 = csig1
 * sig1 in (-pi, pi]
-      call Norm(ssig1, csig1)
-* Geodesic::Norm(somg1, comg1); -- don't need to normalize!
+      call norm2(ssig1, csig1)
+* norm2(somg1, comg1); -- don't need to normalize!
 
       k2 = calp0**2 * ep2
       eps = k2 / (2 * (1 + sqrt(1 + k2)) + k2)
@@ -408,13 +409,15 @@
 * No need to normalize
       salp2 = salp0
       calp2 = calp0 * csig2
+* East or west going?
+      E = sign(1d0, salp0)
 * omg12 = omg2 - omg1
-      omg12 = csmgt(sig12
-     +    - (atan2(ssig2, csig2) - atan2(ssig1, csig1))
-     +    + (atan2(somg2, comg2) - atan2(somg1, comg1)),
+      omg12 = csmgt(E * (sig12
+     +    - (atan2(    ssig2, csig2) - atan2(    ssig1, csig1))
+     +    + (atan2(E * somg2, comg2) - atan2(E * somg1, comg1))),
      +    atan2(somg2 * comg1 - comg2 * somg1,
      +    comg2 * comg1 + somg2 * somg1),
-     +    nowrap)
+     +    unroll)
 
       lam12 = omg12 + A3c *
      +    ( sig12 + (TrgSum(.true., ssig2, csig2, C3a, nC3-1)
@@ -422,7 +425,7 @@
       lon12 = lam12 / degree
 * Use Math::AngNm2 because longitude might have wrapped multiple
 * times.
-      lon2 = csmgt(lon1 + lon12, AngNm(lon1x + AngNm2(lon12)), nowrap)
+      lon2 = csmgt(lon1 + lon12, AngNm(lon1x + AngNm2(lon12)), unroll)
       lat2 = atan2(sbet2, f1 * cbet2) / degree
 * minus signs give range [-180, 180). 0- converts -0 to +0.
       azi2 = 0 - atan2(-salp2, calp2) / degree
@@ -445,7 +448,7 @@
       if (areap) then
         B42 = TrgSum(.false., ssig2, csig2, C4a, nC4)
         if (calp0 .eq. 0 .or. salp0 .eq. 0) then
-* alp12 = alp2 - alp1, used in atan2 so no need to normalized
+* alp12 = alp2 - alp1, used in atan2 so no need to normalize
           salp12 = salp2 * calp1 - calp2 * salp1
           calp12 = calp2 * calp1 + salp2 * salp1
 * The right thing appears to happen if alp1 = +/-180 and alp2 = 0, viz
@@ -639,13 +642,13 @@
 * Ensure cbet1 = +dbleps at poles
       sbet1 = f1 * sin(phi)
       cbet1 = csmgt(tiny, cos(phi), lat1x .eq. -90)
-      call Norm(sbet1, cbet1)
+      call norm2(sbet1, cbet1)
 
       phi = lat2x * degree
 * Ensure cbet2 = +dbleps at poles
       sbet2 = f1 * sin(phi)
       cbet2 = csmgt(tiny, cos(phi), abs(lat2x) .eq. 90)
-      call Norm(sbet2, cbet2)
+      call norm2(sbet2, cbet2)
 
 * If cbet1 < -sbet1, then cbet2 - cbet1 is a sensitive measure of the
 * |bet1| - |bet2|.  Alternatively (cbet1 >= -sbet1), abs(sbet2) + sbet1
@@ -805,7 +808,7 @@
               if (nsalp1 .gt. 0 .and. abs(dalp1) .lt. pi) then
                 calp1 = calp1 * cdalp1 - salp1 * sdalp1
                 salp1 = nsalp1
-                call Norm(salp1, calp1)
+                call norm2(salp1, calp1)
 * In some regimes we don't get quadratic convergence because
 * slope -> 0.  So use convergence conditions based on dbleps
 * instead of sqrt(dbleps).
@@ -823,7 +826,7 @@
 * WGS84 and random input: mean = 4.74, sd = 0.99
             salp1 = (salp1a + salp1b)/2
             calp1 = (calp1a + calp1b)/2
-            call Norm(salp1, calp1)
+            call norm2(salp1, calp1)
             tripn = .false.
             tripb = abs(salp1a - salp1) + (calp1a - calp1) .lt. tolb
      +          .or. abs(salp1 - salp1b) + (calp1 - calp1b) .lt. tolb
@@ -857,8 +860,8 @@
           eps = k2 / (2 * (1 + sqrt(1 + k2)) + k2)
 * Multiplier = a^2 * e^2 * cos(alpha0) * sin(alpha0).
           A4 = a**2 * calp0 * salp0 * e2
-          call Norm(ssig1, csig1)
-          call Norm(ssig2, csig2)
+          call norm2(ssig1, csig1)
+          call norm2(ssig2, csig2)
           call C4f(eps, C4x, C4a)
           B41 = TrgSum(.false., ssig1, csig1, C4a, nC4)
           B42 = TrgSum(.false., ssig2, csig2, C4a, nC4)
@@ -1021,7 +1024,7 @@
       dblmin = 0.5d0**1022
       dbleps = 0.5d0**(digits-1)
 
-      pi = atan2(0.0d0, -1.0d0)
+      pi = atan2(0d0, -1d0)
       degree = pi/180
       tiny = sqrt(dblmin)
       tol0 = dbleps
@@ -1238,7 +1241,7 @@
         salp2 = cbet1 * somg12
         calp2 = sbet12 - cbet1 * sbet2 *
      +      csmgt(somg12**2 / (1 + comg12), 1 - comg12, comg12 .ge. 0)
-        call Norm(salp2, calp2)
+        call norm2(salp2, calp2)
 * Set return value
         sig12 = atan2(ssig12, csig12)
       else if (abs(n) .gt. 0.1d0 .or. csig12 .ge. 0 .or.
@@ -1329,7 +1332,7 @@
       end if
 * Sanity check on starting guess.  Backwards check allows NaN through.
       if (.not. (salp1 .le. 0)) then
-        call Norm(salp1, calp1)
+        call norm2(salp1, calp1)
       else
         salp1 = 1
         calp1 = 0
@@ -1388,8 +1391,8 @@
       somg1 = salp0 * sbet1
       csig1 = calp1 * cbet1
       comg1 = csig1
-      call Norm(ssig1, csig1)
-* Norm(somg1, comg1); -- don't need to normalize!
+      call norm2(ssig1, csig1)
+* norm2(somg1, comg1); -- don't need to normalize!
 
 * Enforce symmetries in the case abs(bet2) = -bet1.  Need to be careful
 * about this case, since this can yield singularities in the Newton
@@ -1411,8 +1414,8 @@
       somg2 = salp0 * sbet2
       csig2 = calp2 * cbet2
       comg2 = csig2
-      call Norm(ssig2, csig2)
-* Norm(somg2, comg2); -- don't need to normalize!
+      call norm2(ssig2, csig2)
+* norm2(somg2, comg2); -- don't need to normalize!
 
 * sig12 = sig2 - sig1, limit to [0, pi]
       sig12 = atan2(max(csig1 * ssig2 - ssig1 * csig2, 0d0),
@@ -1446,7 +1449,7 @@
       end
 
       double precision function A3f(eps, A3x)
-* Evaluate sum(A3x[k] * eps^k, k, 0, nA3x-1) by Horner's method
+* Evaluate A3
       integer ord, nA3, nA3x
       parameter (ord = 6, nA3 = ord, nA3x = nA3)
 
@@ -1455,17 +1458,14 @@
 * output
       double precision A3x(0: nA3x-1)
 
-      integer i
-      A3f = 0
-      do 10 i = nA3x-1, 0, -1
-        A3f = eps * A3f + A3x(i)
- 10   continue
+      double precision polval
+      A3f = polval(nA3 - 1, A3x, eps)
 
       return
       end
 
       subroutine C3f(eps, C3x, c)
-* Evaluate C3 coeffs by Horner's method
+* Evaluate C3 coeffs
 * Elements c[1] thru c[nC3-1] are set
       integer ord, nC3, nC3x
       parameter (ord = 6, nC3 = ord, nC3x = (nC3 * (nC3 - 1)) / 2)
@@ -1475,30 +1475,23 @@
 * output
       double precision c(nC3-1)
 
-      integer i, j, k
-      double precision t, mult
-
-      j = nC3x
-      do 20 k = nC3-1, 1 , -1
-        t = 0
-        do 10 i = nC3 - k, 1, -1
-          j = j - 1
-          t = eps * t + C3x(j)
- 10     continue
-        c(k) = t
- 20   continue
+      integer o, m, l
+      double precision mult, polval
 
       mult = 1
-      do 30 k = 1, nC3-1
+      o = 0
+      do 10 l = 1, nC3 - 1
+        m = nC3 - l - 1
         mult = mult * eps
-        c(k) = c(k) * mult
- 30   continue
+        c(l) = mult * polval(m, C3x(o), eps)
+        o = o + m + 1
+ 10   continue
 
       return
       end
 
       subroutine C4f(eps, C4x, c)
-* Evaluate C4 coeffs by Horner's method
+* Evaluate C4
 * Elements c[0] thru c[nC4-1] are set
       integer ord, nC4, nC4x
       parameter (ord = 6, nC4 = ord, nC4x = (nC4 * (nC4 + 1)) / 2)
@@ -1508,39 +1501,35 @@
 *output
       double precision c(0:nC4-1)
 
-      integer i, j, k
-      double precision t, mult
-
-      j = nC4x
-      do 20 k = nC4-1, 0, -1
-         t = 0
-         do 10 i = nC4 - k, 1, -1
-            j = j - 1
-            t = eps * t + C4x(j)
- 10      continue
-         c(k) = t
- 20   continue
+      integer o, m, l
+      double precision mult, polval
 
       mult = 1
-      do 30 k = 1, nC4-1
-         mult = mult * eps
-         c(k) = c(k) * mult
- 30   continue
+      o = 0
+      do 10 l = 0, nC4 - 1
+        m = nC4 - l - 1
+        c(l) = mult * polval(m, C4x(o), eps)
+        o = o + m + 1
+        mult = mult * eps
+ 10   continue
 
       return
       end
 
-* Generated by Maxima on 2010-09-04 10:26:17-04:00
-
       double precision function A1m1f(eps)
 * The scale factor A1-1 = mean value of (d/dsigma)I1 - 1
 * input
       double precision eps
 
-      double precision eps2, t
-
-      eps2 = eps**2
-      t = eps2*(eps2*(eps2+4)+64)/256
+      double precision t
+      integer ord, nA1, o, m
+      parameter (ord = 6, nA1 = ord)
+      double precision polval, coeff(nA1/2 + 2)
+      data coeff /1, 4, 64, 0, 256/
+
+      o = 1
+      m = nA1/2
+      t = polval(m, coeff(o), eps**2) / coeff(o + m + 1)
       A1m1f = (t + eps) / (1 - eps)
 
       return
@@ -1557,20 +1546,25 @@
       double precision c(nC1)
 
       double precision eps2, d
+      integer o, m, l
+      double precision polval, coeff((nC1**2 + 7*nC1 - 2*(nC1/2))/4)
+      data coeff /
+     +    -1, 6, -16, 32,
+     +    -9, 64, -128, 2048,
+     +    9, -16, 768,
+     +    3, -5, 512,
+     +    -7, 1280,
+     +    -7, 2048/
 
       eps2 = eps**2
       d = eps
-      c(1) = d*((6-eps2)*eps2-16)/32
-      d = d * eps
-      c(2) = d*((64-9*eps2)*eps2-128)/2048
-      d = d * eps
-      c(3) = d*(9*eps2-16)/768
-      d = d * eps
-      c(4) = d*(3*eps2-5)/512
-      d = d * eps
-      c(5) = -7*d/1280
-      d = d * eps
-      c(6) = -7*d/2048
+      o = 1
+      do 10 l = 1, nC1
+        m = (nC1 - l) / 2
+        c(l) = d * polval(m, coeff(o), eps2) / coeff(o + m + 1)
+        o = o + m + 2
+        d = d * eps
+ 10   continue
 
       return
       end
@@ -1586,20 +1580,25 @@
       double precision c(nC1p)
 
       double precision eps2, d
+      integer o, m, l
+      double precision polval, coeff((nC1p**2 + 7*nC1p - 2*(nC1p/2))/4)
+      data coeff /
+     +    205, -432, 768, 1536,
+     +    4005, -4736, 3840, 12288,
+     +    -225, 116, 384,
+     +    -7173, 2695, 7680,
+     +    3467, 7680,
+     +    38081, 61440/
 
       eps2 = eps**2
       d = eps
-      c(1) = d*(eps2*(205*eps2-432)+768)/1536
-      d = d * eps
-      c(2) = d*(eps2*(4005*eps2-4736)+3840)/12288
-      d = d * eps
-      c(3) = d*(116-225*eps2)/384
-      d = d * eps
-      c(4) = d*(2695-7173*eps2)/7680
-      d = d * eps
-      c(5) = 3467*d/7680
-      d = d * eps
-      c(6) = 38081*d/61440
+      o = 1
+      do 10 l = 1, nC1p
+        m = (nC1p - l) / 2
+        c(l) = d * polval(m, coeff(o), eps2) / coeff(o + m + 1)
+        o = o + m + 2
+        d = d * eps
+ 10   continue
 
       return
       end
@@ -1609,10 +1608,15 @@
 * input
       double precision eps
 
-      double precision eps2, t
-
-      eps2 = eps**2
-      t = eps2*(eps2*(25*eps2+36)+64)/256
+      double precision t
+      integer ord, nA2, o, m
+      parameter (ord = 6, nA2 = ord)
+      double precision polval, coeff(nA2/2 + 2)
+      data coeff /25, 36, 64, 0, 256/
+
+      o = 1
+      m = nA2/2
+      t = polval(m, coeff(o), eps**2) / coeff(o + m + 1)
       A2m1f = t * (1 - eps) - eps
 
       return
@@ -1629,20 +1633,25 @@
       double precision c(nC2)
 
       double precision eps2, d
+      integer o, m, l
+      double precision polval, coeff((nC2**2 + 7*nC2 - 2*(nC2/2))/4)
+      data coeff /
+     +    1, 2, 16, 32,
+     +    35, 64, 384, 2048,
+     +    15, 80, 768,
+     +    7, 35, 512,
+     +    63, 1280,
+     +    77, 2048/
 
       eps2 = eps**2
       d = eps
-      c(1) = d*(eps2*(eps2+2)+16)/32
-      d = d * eps
-      c(2) = d*(eps2*(35*eps2+64)+384)/2048
-      d = d * eps
-      c(3) = d*(15*eps2+80)/768
-      d = d * eps
-      c(4) = d*(7*eps2+35)/512
-      d = d * eps
-      c(5) = 63*d/1280
-      d = d * eps
-      c(6) = 77*d/2048
+      o = 1
+      do 10 l = 1, nC2
+        m = (nC2 - l) / 2
+        c(l) = d * polval(m, coeff(o), eps2) / coeff(o + m + 1)
+        o = o + m + 2
+        d = d * eps
+ 10   continue
 
       return
       end
@@ -1657,12 +1666,24 @@
 * output
       double precision A3x(0:nA3x-1)
 
-      A3x(0) = 1
-      A3x(1) = (n-1)/2
-      A3x(2) = (n*(3*n-1)-2)/8
-      A3x(3) = ((-n-3)*n-1)/16
-      A3x(4) = (-2*n-3)/64
-      A3x(5) = -3/128d0
+      integer o, m, k, j
+      double precision polval, coeff((nA3**2 + 7*nA3 - 2*(nA3/2))/4)
+      data coeff /
+     +    -3, 128,
+     +    -2, -3, 64,
+     +    -1, -3, -1, 16,
+     +    3, -1, -2, 8,
+     +    1, -1, 2,
+     +    1, 1/
+
+      o = 1
+      k = 0
+      do 10 j = nA3 - 1, 0, -1
+        m = min(nA3 - j - 1, j)
+        A3x(k) = polval(m, coeff(o), n) / coeff(o + m + 1)
+        k = k + 1
+        o = o + m + 2
+ 10   continue
 
       return
       end
@@ -1677,27 +1698,40 @@
 * output
       double precision C3x(0:nC3x-1)
 
-      C3x(0) = (1-n)/4
-      C3x(1) = (1-n*n)/8
-      C3x(2) = ((3-n)*n+3)/64
-      C3x(3) = (2*n+5)/128
-      C3x(4) = 3/128d0
-      C3x(5) = ((n-3)*n+2)/32
-      C3x(6) = ((-3*n-2)*n+3)/64
-      C3x(7) = (n+3)/128
-      C3x(8) = 5/256d0
-      C3x(9) = (n*(5*n-9)+5)/192
-      C3x(10) = (9-10*n)/384
-      C3x(11) = 7/512d0
-      C3x(12) = (7-14*n)/512
-      C3x(13) = 7/512d0
-      C3x(14) = 21/2560d0
+      integer o, m, l, j, k
+      double precision polval,
+     +    coeff(((nC3-1)*(nC3**2 + 7*nC3 - 2*(nC3/2)))/8)
+      data coeff /
+     +    3, 128,
+     +    2, 5, 128,
+     +    -1, 3, 3, 64,
+     +    -1, 0, 1, 8,
+     +    -1, 1, 4,
+     +    5, 256,
+     +    1, 3, 128,
+     +    -3, -2, 3, 64,
+     +    1, -3, 2, 32,
+     +    7, 512,
+     +    -10, 9, 384,
+     +    5, -9, 5, 192,
+     +    7, 512,
+     +    -14, 7, 512,
+     +    21, 2560/
+
+      o = 1
+      k = 0
+      do 20 l = 1, nC3 - 1
+        do 10 j = nC3 - 1, l, -1
+          m = min(nC3 - j - 1, j)
+          C3x(k) = polval(m, coeff(o), n) / coeff(o + m + 1)
+          k = k + 1
+          o = o + m + 2
+ 10     continue
+ 20   continue
 
       return
       end
 
-* Generated by Maxima on 2012-10-19 08:02:34-04:00
-
       subroutine C4cof(n, C4x)
 * The coefficients C4[l] in the Fourier expansion of I4
       integer ord, nC4, nC4x
@@ -1708,27 +1742,32 @@
 * output
       double precision C4x(0:nC4x-1)
 
-      C4x(0) = (n*(n*(n*(n*(100*n+208)+572)+3432)-12012)+30030)/45045
-      C4x(1) = (n*(n*(n*(64*n+624)-4576)+6864)-3003)/15015
-      C4x(2) = (n*((14144-10656*n)*n-4576)-858)/45045
-      C4x(3) = ((-224*n-4784)*n+1573)/45045
-      C4x(4) = (1088*n+156)/45045
-      C4x(5) = 97/15015d0
-      C4x(6) = (n*(n*((-64*n-624)*n+4576)-6864)+3003)/135135
-      C4x(7) = (n*(n*(5952*n-11648)+9152)-2574)/135135
-      C4x(8) = (n*(5792*n+1040)-1287)/135135
-      C4x(9) = (468-2944*n)/135135
-      C4x(10) = 1/9009d0
-      C4x(11) = (n*((4160-1440*n)*n-4576)+1716)/225225
-      C4x(12) = ((4992-8448*n)*n-1144)/225225
-      C4x(13) = (1856*n-936)/225225
-      C4x(14) = 8/10725d0
-      C4x(15) = (n*(3584*n-3328)+1144)/315315
-      C4x(16) = (1024*n-208)/105105
-      C4x(17) = -136/63063d0
-      C4x(18) = (832-2560*n)/405405
-      C4x(19) = -128/135135d0
-      C4x(20) = 128/99099d0
+      integer o, m, l, j, k
+      double precision polval, coeff((nC4 * (nC4 + 1) * (nC4 + 5)) / 6)
+      data coeff /
+     +    97, 15015,   1088, 156, 45045,   -224, -4784, 1573, 45045,
+     +    -10656, 14144, -4576, -858, 45045,
+     +    64, 624, -4576, 6864, -3003, 15015,
+     +    100, 208, 572, 3432, -12012, 30030, 45045,
+     +    1, 9009,   -2944, 468, 135135,   5792, 1040, -1287, 135135,
+     +    5952, -11648, 9152, -2574, 135135,
+     +    -64, -624, 4576, -6864, 3003, 135135,
+     +    8, 10725,   1856, -936, 225225,   -8448, 4992, -1144, 225225,
+     +    -1440, 4160, -4576, 1716, 225225,
+     +    -136, 63063,   1024, -208, 105105,
+     +    3584, -3328, 1144, 315315,
+     +    -128, 135135,   -2560, 832, 405405,   128, 99099/
+
+      o = 1
+      k = 0
+      do 20 l = 0, nC4 - 1
+        do 10 j = nC4 - 1, l, -1
+          m = nC4 - j - 1
+          C4x(k) = polval(m, coeff(o), n) / coeff(o + m + 1)
+          k = k + 1
+          o = o + m + 2
+ 10     continue
+ 20   continue
 
       return
       end
@@ -1798,10 +1837,11 @@
 
       double precision function AngRnd(x)
 * The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57
-* for reals = 0.7 pm on the earth if x is an angle in degrees.  (This
-* is about 1000 times more resolution than we get with angles around 90
+* for reals = 0.7 pm on the earth if x is an angle in degrees.  (This is
+* about 1000 times more resolution than we get with angles around 90
 * degrees.)  We use this to avoid having to deal with near singular
-* cases when x is non-zero but tiny (e.g., 1.0e-200).
+* cases when x is non-zero but tiny (e.g., 1.0e-200).  This also
+* converts -0 to +0.
 * input
       double precision x
 
@@ -1810,7 +1850,7 @@
       y = abs(x)
 * The compiler mustn't "simplify" z - (z - y) to y
       if (y .lt. z) y = z - (z - y)
-      AngRnd = sign(y, x)
+      AngRnd = 0 + sign(y, x)
 
       return
       end
@@ -1836,7 +1876,7 @@
       return
       end
 
-      subroutine Norm(sinx, cosx)
+      subroutine norm2(sinx, cosx)
 * input/output
       double precision sinx, cosx
 
@@ -1985,7 +2025,26 @@
       return
       end
 
-* Table of name abbreviations to conform to the 6-char limit
+      double precision function polval(N, p, x)
+* input
+      integer N
+      double precision p(0:N), x
+
+      integer i
+      if (N .lt. 0) then
+        polval = 0
+      else
+        polval = p(0)
+      endif
+      do 10 i = 1, N
+        polval = polval * x + p(i)
+ 10   continue
+
+      return
+      end
+
+* Table of name abbreviations to conform to the 6-char limit and
+* potential name conflicts.
 *    A3coeff       A3cof
 *    C3coeff       C3cof
 *    C4coeff       C4cof
@@ -2011,9 +2070,10 @@
 *    meridian      merid
 *    outmask       omask
 *    shortline     shortp
-*    SinCosNorm    Norm
+*    norm          norm2
 *    SinCosSeries  TrgSum
 *    xthresh       xthrsh
 *    transit       trnsit
-*    LONG_NOWRAP   nowrap
+*    polyval       polval
+*    LONG_UNROLL   unroll
 *> @endcond SKIP
diff --git a/man/CartConvert.1 b/man/CartConvert.1
index d1815e7..7eda5e6 100644
--- a/man/CartConvert.1
+++ b/man/CartConvert.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CARTCONVERT 1"
-.TH CARTCONVERT 1 "2015-04-28" "GeographicLib 1.42" "GeographicLib Utilities"
+.TH CARTCONVERT 1 "2015-05-22" "GeographicLib 1.43" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/man/CartConvert.usage b/man/CartConvert.usage
index 6b2758d..e75d66b 100644
--- a/man/CartConvert.usage
+++ b/man/CartConvert.usage
@@ -9,7 +9,7 @@ int usage(int retval, bool brief) {
 "For full documentation type:\n"
 "    CartConvert --help\n"
 "or visit:\n"
-"    http://geographiclib.sf.net/1.42/CartConvert.1.html\n";
+"    http://geographiclib.sf.net/1.43/CartConvert.1.html\n";
   else
     ( retval ? std::cerr : std::cout ) << "Man page:\n"
 "NAME\n"
diff --git a/man/ConicProj.1 b/man/ConicProj.1
index 15593fe..56f498c 100644
--- a/man/ConicProj.1
+++ b/man/ConicProj.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "CONICPROJ 1"
-.TH CONICPROJ 1 "2015-04-28" "GeographicLib 1.42" "GeographicLib Utilities"
+.TH CONICPROJ 1 "2015-05-22" "GeographicLib 1.43" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/man/ConicProj.usage b/man/ConicProj.usage
index 8c0b2a7..e8edee6 100644
--- a/man/ConicProj.usage
+++ b/man/ConicProj.usage
@@ -9,7 +9,7 @@ int usage(int retval, bool brief) {
 "For full documentation type:\n"
 "    ConicProj --help\n"
 "or visit:\n"
-"    http://geographiclib.sf.net/1.42/ConicProj.1.html\n";
+"    http://geographiclib.sf.net/1.43/ConicProj.1.html\n";
   else
     ( retval ? std::cerr : std::cout ) << "Man page:\n"
 "NAME\n"
diff --git a/man/GeoConvert.1 b/man/GeoConvert.1
index 9143c17..abce2d8 100644
--- a/man/GeoConvert.1
+++ b/man/GeoConvert.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GEOCONVERT 1"
-.TH GEOCONVERT 1 "2015-04-28" "GeographicLib 1.42" "GeographicLib Utilities"
+.TH GEOCONVERT 1 "2015-05-22" "GeographicLib 1.43" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/man/GeoConvert.usage b/man/GeoConvert.usage
index c86577e..c317e79 100644
--- a/man/GeoConvert.usage
+++ b/man/GeoConvert.usage
@@ -9,7 +9,7 @@ int usage(int retval, bool brief) {
 "For full documentation type:\n"
 "    GeoConvert --help\n"
 "or visit:\n"
-"    http://geographiclib.sf.net/1.42/GeoConvert.1.html\n";
+"    http://geographiclib.sf.net/1.43/GeoConvert.1.html\n";
   else
     ( retval ? std::cerr : std::cout ) << "Man page:\n"
 "NAME\n"
diff --git a/man/GeodSolve.1 b/man/GeodSolve.1
index f9de88d..667eb95 100644
--- a/man/GeodSolve.1
+++ b/man/GeodSolve.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GEODSOLVE 1"
-.TH GEODSOLVE 1 "2015-04-28" "GeographicLib 1.42" "GeographicLib Utilities"
+.TH GEODSOLVE 1 "2015-05-22" "GeographicLib 1.43" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -143,7 +143,7 @@ GeodSolve \-\- perform geodesic calculations
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
 \&\fBGeodSolve\fR [ \fB\-i\fR | \fB\-l\fR \fIlat1\fR \fIlon1\fR \fIazi1\fR ] [ \fB\-a\fR ]
-[ \fB\-e\fR \fIa\fR \fIf\fR ]
+[ \fB\-e\fR \fIa\fR \fIf\fR ] \fB\-u\fR ]
 [ \fB\-d\fR | \fB\-:\fR ] [ \fB\-b\fR ] [ \fB\-f\fR ] [ \fB\-p\fR \fIprec\fR ] [ \fB\-E\fR ]
 [ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
 [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
@@ -192,6 +192,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\-u\fR" 4
+.IX Item "-u"
+unroll the longitude.  On input longitudes must lie in [\-540deg,540deg)
+and, normally, on output longitudes are reduced to lie in
+[\-180deg,180deg).  However with this option, the returned longitude
+\&\fIlon2\fR is \*(L"unrolled\*(R" so that \fIlon2\fR \- \fIlon1\fR indicates how often and
+in what sense the geodesic has encircled the earth.
 .IP "\fB\-d\fR" 4
 .IX Item "-d"
 output angles as degrees, minutes, seconds instead of decimal degrees.
diff --git a/man/GeodSolve.1.html b/man/GeodSolve.1.html
index fd7c440..e148468 100644
--- a/man/GeodSolve.1.html
+++ b/man/GeodSolve.1.html
@@ -17,7 +17,7 @@
 
 <h1 id="SYNOPSIS">SYNOPSIS</h1>
 
-<p><b>GeodSolve</b> [ <b>-i</b> | <b>-l</b> <i>lat1</i> <i>lon1</i> <i>azi1</i> ] [ <b>-a</b> ] [ <b>-e</b> <i>a</i> <i>f</i> ] [ <b>-d</b> | <b>-:</b> ] [ <b>-b</b> ] [ <b>-f</b> ] [ <b>-p</b> <i>prec</i> ] [ <b>-E</b> ] [ <b>--comment-delimiter</b> <i>commentdelim</i> ] [ <b>--version</b> | <b>-h</b> | <b>--help</b> ] [ <b>--input-file</b> <i>infile</i> | <b>--input-string</b> <i>instring</i> ] [ <b>--line-separator</b> <i>linesep</i> ] [ <b>--output-file</b> <i>outfile</i> ]</p>
+<p><b>GeodSolve</b> [ <b>-i</b> | <b>-l</b> <i>lat1</i> <i>lon1</i> <i>azi1</i> ] [ <b>-a</b> ] [ <b>-e</b> <i>a</i> <i>f</i> ] <b>-u</b> ] [ <b>-d</b> | <b>-:</b> ] [ <b>-b</b> ] [ <b>-f</b> ] [ <b>-p</b> <i>prec</i> ] [ <b>-E</b> ] [ <b>--comment-delimiter</b> <i>commentdelim</i> ] [ <b>--version</b> | <b>-h</b> | <b>--help</b> ] [ <b>--input-file</b> <i>infile</i> | <b>--input-string</b> <i>instring</i> ] [ <b>--line-separator</b> <i>linesep</i> ] [ <b>--output-file</b> <i>outfile</i> ]</p>
 
 <h1 id="DESCRIPTION">DESCRIPTION</h1>
 
@@ -66,6 +66,12 @@
 <p>specify the ellipsoid via <i>a</i> <i>f</i>; the equatorial radius is <i>a</i> and the flattening is <i>f</i>. Setting <i>f</i> = 0 results in a sphere. Specify <i>f</i> < 0 for a prolate ellipsoid. A simple fraction, e.g., 1/297, is allowed for <i>f</i>. (Also, if <i>f</i> > 1, the flattening is set to 1/<i>f</i>.) By default, the WGS84 ellipsoid is used, <i>a</i> = 6378137 m, <i>f</i> = 1/298.257223563.</p>
 
 </dd>
+<dt id="u"><b>-u</b></dt>
+<dd>
+
+<p>unroll the longitude. On input longitudes must lie in [-540deg,540deg) and, normally, on output longitudes are reduced to lie in [-180deg,180deg). However with this option, the returned longitude <i>lon2</i> is "unrolled" so that <i>lon2</i> - <i>lon1</i> indicates how often and in what sense the geodesic has encircled the earth.</p>
+
+</dd>
 <dt id="d"><b>-d</b></dt>
 <dd>
 
diff --git a/man/GeodSolve.pod b/man/GeodSolve.pod
index edf0342..87b9d5a 100644
--- a/man/GeodSolve.pod
+++ b/man/GeodSolve.pod
@@ -5,7 +5,7 @@ GeodSolve -- perform geodesic calculations
 =head1 SYNOPSIS
 
 B<GeodSolve> [ B<-i> | B<-l> I<lat1> I<lon1> I<azi1> ] [ B<-a> ]
-[ B<-e> I<a> I<f> ]
+[ B<-e> I<a> I<f> ] B<-u> ]
 [ B<-d> | B<-:> ] [ B<-b> ] [ B<-f> ] [ B<-p> I<prec> ] [ B<-E> ]
 [ B<--comment-delimiter> I<commentdelim> ]
 [ B<--version> | B<-h> | B<--help> ]
@@ -72,6 +72,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<-u>
+
+unroll the longitude.  On input longitudes must lie in [-540deg,540deg)
+and, normally, on output longitudes are reduced to lie in
+[-180deg,180deg).  However with this option, the returned longitude
+I<lon2> is "unrolled" so that I<lon2> - I<lon1> indicates how often and
+in what sense the geodesic has encircled the earth.
+
 =item B<-d>
 
 output angles as degrees, minutes, seconds instead of decimal degrees.
diff --git a/man/GeodSolve.usage b/man/GeodSolve.usage
index 1bb9dc1..161f8d0 100644
--- a/man/GeodSolve.usage
+++ b/man/GeodSolve.usage
@@ -1,23 +1,23 @@
 int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
-"    GeodSolve [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] [ -d | -: ] [ -b\n"
-"    ] [ -f ] [ -p prec ] [ -E ] [ --comment-delimiter commentdelim ] [\n"
+"    GeodSolve [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] -u ] [ -d | -: ]\n"
+"    [ -b ] [ -f ] [ -p prec ] [ -E ] [ --comment-delimiter commentdelim ] [\n"
 "    --version | -h | --help ] [ --input-file infile | --input-string\n"
 "    instring ] [ --line-separator linesep ] [ --output-file outfile ]\n"
 "\n"
 "For full documentation type:\n"
 "    GeodSolve --help\n"
 "or visit:\n"
-"    http://geographiclib.sf.net/1.42/GeodSolve.1.html\n";
+"    http://geographiclib.sf.net/1.43/GeodSolve.1.html\n";
   else
     ( retval ? std::cerr : std::cout ) << "Man page:\n"
 "NAME\n"
 "       GeodSolve -- perform geodesic calculations\n"
 "\n"
 "SYNOPSIS\n"
-"       GeodSolve [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] [ -d | -: ] [ -b\n"
-"       ] [ -f ] [ -p prec ] [ -E ] [ --comment-delimiter commentdelim ] [\n"
+"       GeodSolve [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] -u ] [ -d | -: ]\n"
+"       [ -b ] [ -f ] [ -p prec ] [ -E ] [ --comment-delimiter commentdelim ] [\n"
 "       --version | -h | --help ] [ --input-file infile | --input-string\n"
 "       instring ] [ --line-separator linesep ] [ --output-file outfile ]\n"
 "\n"
@@ -58,6 +58,12 @@ int usage(int retval, bool brief) {
 "           default, the WGS84 ellipsoid is used, a = 6378137 m, f =\n"
 "           1/298.257223563.\n"
 "\n"
+"       -u  unroll the longitude.  On input longitudes must lie in\n"
+"           [-540deg,540deg) and, normally, on output longitudes are reduced to\n"
+"           lie in [-180deg,180deg).  However with this option, the returned\n"
+"           longitude lon2 is \"unrolled\" so that lon2 - lon1 indicates how\n"
+"           often and in what sense the geodesic has encircled the earth.\n"
+"\n"
 "       -d  output angles as degrees, minutes, seconds instead of decimal\n"
 "           degrees.\n"
 "\n"
diff --git a/man/GeodesicProj.1 b/man/GeodesicProj.1
index f3ff4dd..523e268 100644
--- a/man/GeodesicProj.1
+++ b/man/GeodesicProj.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GEODESICPROJ 1"
-.TH GEODESICPROJ 1 "2015-04-28" "GeographicLib 1.42" "GeographicLib Utilities"
+.TH GEODESICPROJ 1 "2015-05-22" "GeographicLib 1.43" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/man/GeodesicProj.usage b/man/GeodesicProj.usage
index df12ab1..a6a3457 100644
--- a/man/GeodesicProj.usage
+++ b/man/GeodesicProj.usage
@@ -9,7 +9,7 @@ int usage(int retval, bool brief) {
 "For full documentation type:\n"
 "    GeodesicProj --help\n"
 "or visit:\n"
-"    http://geographiclib.sf.net/1.42/GeodesicProj.1.html\n";
+"    http://geographiclib.sf.net/1.43/GeodesicProj.1.html\n";
   else
     ( retval ? std::cerr : std::cout ) << "Man page:\n"
 "NAME\n"
diff --git a/man/GeoidEval.1 b/man/GeoidEval.1
index a38bb15..f15a12e 100644
--- a/man/GeoidEval.1
+++ b/man/GeoidEval.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GEOIDEVAL 1"
-.TH GEOIDEVAL 1 "2015-04-28" "GeographicLib 1.42" "GeographicLib Utilities"
+.TH GEOIDEVAL 1 "2015-05-22" "GeographicLib 1.43" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -154,8 +154,8 @@ GeoidEval \-\- look up geoid heights
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 \&\fBGeoidEval\fR reads in positions on standard input and prints out the
-corresponding geoid heights on standard output.  Optionally, it also
-prints the northerly and easterly gradients of the geoid height.
+corresponding heights of the geoid above the \s-1WGS84\s0 ellipsoid on standard
+output.
 .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
@@ -167,9 +167,11 @@ eastings and northings in a single zone to be used as standard input.
 More accurate results for the geoid height are provided by \fIGravity\fR\|(1).
 This utility can also compute the direction of gravity accurately.
 .PP
-The geoid height, \fIN\fR, can be used to convert a height above the
-ellipsoid, \fIh\fR, to the corresponding height above the geoid (roughly
-the height above mean sea level), \fIH\fR, using the relations
+The height of the geoid above the ellipsoid, \fIN\fR, is sometimes called
+the geoid undulation.  It can be used to convert a height above the
+ellipsoid, \fIh\fR, to the corresponding height above the geoid (the
+orthometric height, roughly the height above mean sea level), \fIH\fR,
+using the relations
 .Sp
 .RS 4
 \&\fIh\fR = \fIN\fR + \fIH\fR, \ \ \fIH\fR = \-\fIN\fR + \fIh\fR.
@@ -310,8 +312,7 @@ interpolation is based on a least-squares fit of a cubic polynomial to a
 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.
+in the returned height on cell boundaries.
 .SH "CACHE"
 .IX Header "CACHE"
 By default, the data file is randomly read to compute the geoid heights
@@ -403,7 +404,7 @@ Convert a point in \s-1UTM\s0 zone 18n from \s-1MSL\s0 to \s-1HAE\s0
 .Ve
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fIGeoConvert\fR\|(1), \fIGravity\fR\|(1).
+\&\fIGeoConvert\fR\|(1), \fIGravity\fR\|(1), \fIgeographiclib\-get\-geoids\fR\|(8).
 .PP
 An online version of this utility is availbable at
 <http://geographiclib.sourceforge.net/cgi\-bin/GeoidEval>.
diff --git a/man/GeoidEval.1.html b/man/GeoidEval.1.html
index 36c5f9d..2331824 100644
--- a/man/GeoidEval.1.html
+++ b/man/GeoidEval.1.html
@@ -21,13 +21,13 @@
 
 <h1 id="DESCRIPTION">DESCRIPTION</h1>
 
-<p><b>GeoidEval</b> reads in positions on standard input and prints out the corresponding geoid heights on standard output. Optionally, it also prints the northerly and easterly gradients of the geoid height.</p>
+<p><b>GeoidEval</b> reads in positions on standard input and prints out the corresponding heights of the geoid above the WGS84 ellipsoid on standard output.</p>
 
 <p>Positions are given as latitude and longitude, UTM/UPS, or MGRS, in any of the formats accepted by GeoConvert(1). (MGRS coordinates signify the <i>center</i> of the corresponding MGRS square.) If the <b>-z</b> option is specified then the specified zone is prepended to each line of input (which must be in UTM/UPS coordinates). This allows a file with UTM eastings and northings in a single zone to be used as standard input.</p>
 
 <p>More accurate results for the geoid height are provided by Gravity(1). This utility can also compute the direction of gravity accurately.</p>
 
-<p>The geoid height, <i>N</i>, can be used to convert a height above the ellipsoid, <i>h</i>, to the corresponding height above the geoid (roughly the height above mean sea level), <i>H</i>, using the relations</p>
+<p>The height of the geoid above the ellipsoid, <i>N</i>, is sometimes called the geoid undulation. It can be used to convert a height above the ellipsoid, <i>h</i>, to the corresponding height above the geoid (the orthometric height, roughly the height above mean sea level), <i>H</i>, using the relations</p>
 
 <ul>
 
@@ -180,7 +180,7 @@
    1 2 2 1
    . 1 1 .</code></pre>
 
-<p>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.</p>
+<p>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.</p>
 
 <h1 id="CACHE">CACHE</h1>
 
@@ -276,7 +276,7 @@
 
 <h1 id="SEE-ALSO">SEE ALSO</h1>
 
-<p>GeoConvert(1), Gravity(1).</p>
+<p>GeoConvert(1), Gravity(1), geographiclib-get-geoids(8).</p>
 
 <p>An online version of this utility is availbable at <a href="http://geographiclib.sourceforge.net/cgi-bin/GeoidEval">http://geographiclib.sourceforge.net/cgi-bin/GeoidEval</a>.</p>
 
diff --git a/man/GeoidEval.pod b/man/GeoidEval.pod
index 5aa3b30..8af5a22 100644
--- a/man/GeoidEval.pod
+++ b/man/GeoidEval.pod
@@ -17,8 +17,8 @@ B<GeoidEval> [ B<-n> I<name> ] [ B<-d> I<dir> ] [ B<-l> ]
 =head1 DESCRIPTION
 
 B<GeoidEval> reads in positions on standard input and prints out the
-corresponding geoid heights on standard output.  Optionally, it also
-prints the northerly and easterly gradients of the geoid height.
+corresponding heights of the geoid above the WGS84 ellipsoid on standard
+output.
 
 Positions are given as latitude and longitude, UTM/UPS, or MGRS, in any
 of the formats accepted by GeoConvert(1).  (MGRS coordinates signify the
@@ -30,9 +30,11 @@ eastings and northings in a single zone to be used as standard input.
 More accurate results for the geoid height are provided by Gravity(1).
 This utility can also compute the direction of gravity accurately.
 
-The geoid height, I<N>, can be used to convert a height above the
-ellipsoid, I<h>, to the corresponding height above the geoid (roughly
-the height above mean sea level), I<H>, using the relations
+The height of the geoid above the ellipsoid, I<N>, is sometimes called
+the geoid undulation.  It can be used to convert a height above the
+ellipsoid, I<h>, to the corresponding height above the geoid (the
+orthometric height, roughly the height above mean sea level), I<H>,
+using the relations
 
 =over
 
@@ -195,8 +197,7 @@ interpolation is based on a least-squares fit of a cubic polynomial to a
 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.
+in the returned height on cell boundaries.
 
 =head1 CACHE
 
@@ -306,7 +307,7 @@ Convert a point in UTM zone 18n from MSL to HAE
 
 =head1 SEE ALSO
 
-GeoConvert(1), Gravity(1).
+GeoConvert(1), Gravity(1), geographiclib-get-geoids(8).
 
 An online version of this utility is availbable at
 L<http://geographiclib.sourceforge.net/cgi-bin/GeoidEval>.
diff --git a/man/GeoidEval.usage b/man/GeoidEval.usage
index 3273425..9a23d3c 100644
--- a/man/GeoidEval.usage
+++ b/man/GeoidEval.usage
@@ -10,7 +10,7 @@ int usage(int retval, bool brief) {
 "For full documentation type:\n"
 "    GeoidEval --help\n"
 "or visit:\n"
-"    http://geographiclib.sf.net/1.42/GeoidEval.1.html\n";
+"    http://geographiclib.sf.net/1.43/GeoidEval.1.html\n";
   else
     ( retval ? std::cerr : std::cout ) << "Man page:\n"
 "NAME\n"
@@ -25,8 +25,8 @@ int usage(int retval, bool brief) {
 "\n"
 "DESCRIPTION\n"
 "       GeoidEval reads in positions on standard input and prints out the\n"
-"       corresponding geoid heights on standard output.  Optionally, it also\n"
-"       prints the northerly and easterly gradients of the geoid height.\n"
+"       corresponding heights of the geoid above the WGS84 ellipsoid on\n"
+"       standard output.\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"
@@ -38,9 +38,11 @@ int usage(int retval, bool brief) {
 "       More accurate results for the geoid height are provided by Gravity(1).\n"
 "       This utility can also compute the direction of gravity accurately.\n"
 "\n"
-"       The geoid height, N, can be used to convert a height above the\n"
-"       ellipsoid, h, to the corresponding height above the geoid (roughly the\n"
-"       height above mean sea level), H, using the relations\n"
+"       The height of the geoid above the ellipsoid, N, is sometimes called the\n"
+"       geoid undulation.  It can be used to convert a height above the\n"
+"       ellipsoid, h, to the corresponding height above the geoid (the\n"
+"       orthometric height, roughly the height above mean sea level), H, using\n"
+"       the relations\n"
 "\n"
 "           h = N + H,   H = -N + h.\n"
 "\n"
@@ -164,8 +166,7 @@ int usage(int retval, bool brief) {
 "       The cubic is constrained to be independent of longitude when evaluating\n"
 "       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.\n"
+"       discontinuities in the returned height on cell boundaries.\n"
 "\n"
 "CACHE\n"
 "       By default, the data file is randomly read to compute the geoid heights\n"
@@ -249,7 +250,7 @@ int usage(int retval, bool brief) {
 "          => 531595 4468135 -10.842\n"
 "\n"
 "SEE ALSO\n"
-"       GeoConvert(1), Gravity(1).\n"
+"       GeoConvert(1), Gravity(1), geographiclib-get-geoids(8).\n"
 "\n"
 "       An online version of this utility is availbable at\n"
 "       <http://geographiclib.sourceforge.net/cgi-bin/GeoidEval>.\n"
diff --git a/man/Gravity.1 b/man/Gravity.1
index dcc245c..83d2154 100644
--- a/man/Gravity.1
+++ b/man/Gravity.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GRAVITY 1"
-.TH GRAVITY 1 "2015-04-28" "GeographicLib 1.42" "GeographicLib Utilities"
+.TH GRAVITY 1 "2015-05-22" "GeographicLib 1.43" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -275,7 +275,7 @@ file name of \*(L"\-\*(R" stands for standard output.
 \&      http://earth\-info.nga.mil/GandG/wgs84/gravitymod/egm2008
 \&    wgs84, world geodetic system 1984.  This returns the normal
 \&      gravity for the WGS84 ellipsoid.
-\&    GRS80, geodetic reference system 1980.  This returns the normal
+\&    grs80, geodetic reference system 1980.  This returns the normal
 \&      gravity for the GRS80 ellipsoid.
 .Ve
 .PP
@@ -291,9 +291,8 @@ time.  This may changed by setting the environment variables
 name.  Use the \fB\-v\fR option to ascertain the full path name of the data
 file.
 .PP
-Instructions for downloading and installing gravity models are
-available at
-<http://geographiclib.sf.net/html/gravity.html#gravityinst>.
+Instructions for downloading and installing gravity models are available
+at <http://geographiclib.sf.net/html/gravity.html#gravityinst>.
 .SH "ENVIRONMENT"
 .IX Header "ENVIRONMENT"
 .IP "\fB\s-1GEOGRAPHICLIB_GRAVITY_NAME\s0\fR" 4
@@ -331,7 +330,7 @@ The gravity field from \s-1EGM2008\s0 at the top of Mount Everest
 .Ve
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fIGeoConvert\fR\|(1), \fIGeoidEval\fR\|(1).
+\&\fIGeoConvert\fR\|(1), \fIGeoidEval\fR\|(1), \fIgeographiclib\-get\-gravity\fR\|(8).
 .SH "AUTHOR"
 .IX Header "AUTHOR"
 \&\fBGravity\fR was written by Charles Karney.
diff --git a/man/Gravity.1.html b/man/Gravity.1.html
index e2020c5..aaac062 100644
--- a/man/Gravity.1.html
+++ b/man/Gravity.1.html
@@ -147,7 +147,7 @@
       http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008
     wgs84, world geodetic system 1984.  This returns the normal
       gravity for the WGS84 ellipsoid.
-    GRS80, geodetic reference system 1980.  This returns the normal
+    grs80, geodetic reference system 1980.  This returns the normal
       gravity for the GRS80 ellipsoid.</code></pre>
 
 <p>These models approximate the gravitation field above the surface of the earth. By default, the <code>egm96</code> gravity model is used. This may changed by setting the environment variable <code>GEOGRAPHICLIB_GRAVITY_NAME</code> or with the <b>-n</b> option.</p>
@@ -193,7 +193,7 @@
 
 <h1 id="SEE-ALSO">SEE ALSO</h1>
 
-<p>GeoConvert(1), GeoidEval(1).</p>
+<p>GeoConvert(1), GeoidEval(1), geographiclib-get-gravity(8).</p>
 
 <h1 id="AUTHOR">AUTHOR</h1>
 
diff --git a/man/Gravity.pod b/man/Gravity.pod
index ee8c011..b2d71da 100644
--- a/man/Gravity.pod
+++ b/man/Gravity.pod
@@ -159,7 +159,7 @@ B<Gravity> computes the gravity field using one of the following models
       http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008
     wgs84, world geodetic system 1984.  This returns the normal
       gravity for the WGS84 ellipsoid.
-    GRS80, geodetic reference system 1980.  This returns the normal
+    grs80, geodetic reference system 1980.  This returns the normal
       gravity for the GRS80 ellipsoid.
 
 These models approximate the gravitation field above the surface of the
@@ -174,9 +174,8 @@ B<-d> option.  The B<-h> option prints the default gravity path and
 name.  Use the B<-v> option to ascertain the full path name of the data
 file.
 
-Instructions for downloading and installing gravity models are
-available at
-L<http://geographiclib.sf.net/html/gravity.html#gravityinst>.
+Instructions for downloading and installing gravity models are available
+at L<http://geographiclib.sf.net/html/gravity.html#gravityinst>.
 
 =head1 ENVIRONMENT
 
@@ -222,7 +221,7 @@ The gravity field from EGM2008 at the top of Mount Everest
 
 =head1 SEE ALSO
 
-GeoConvert(1), GeoidEval(1).
+GeoConvert(1), GeoidEval(1), geographiclib-get-gravity(8).
 
 =head1 AUTHOR
 
diff --git a/man/Gravity.usage b/man/Gravity.usage
index 53cc8ca..cc706a2 100644
--- a/man/Gravity.usage
+++ b/man/Gravity.usage
@@ -9,7 +9,7 @@ int usage(int retval, bool brief) {
 "For full documentation type:\n"
 "    Gravity --help\n"
 "or visit:\n"
-"    http://geographiclib.sf.net/1.42/Gravity.1.html\n";
+"    http://geographiclib.sf.net/1.43/Gravity.1.html\n";
   else
     ( retval ? std::cerr : std::cout ) << "Man page:\n"
 "NAME\n"
@@ -132,7 +132,7 @@ int usage(int retval, bool brief) {
 "             http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008\n"
 "           wgs84, world geodetic system 1984.  This returns the normal\n"
 "             gravity for the WGS84 ellipsoid.\n"
-"           GRS80, geodetic reference system 1980.  This returns the normal\n"
+"           grs80, geodetic reference system 1980.  This returns the normal\n"
 "             gravity for the GRS80 ellipsoid.\n"
 "\n"
 "       These models approximate the gravitation field above the surface of the\n"
@@ -183,7 +183,7 @@ int usage(int retval, bool brief) {
 "           => -0.00001 0.00103 -9.76782\n"
 "\n"
 "SEE ALSO\n"
-"       GeoConvert(1), GeoidEval(1).\n"
+"       GeoConvert(1), GeoidEval(1), geographiclib-get-gravity(8).\n"
 "\n"
 "AUTHOR\n"
 "       Gravity was written by Charles Karney.\n"
diff --git a/man/MagneticField.1 b/man/MagneticField.1
index 0131039..7196da5 100644
--- a/man/MagneticField.1
+++ b/man/MagneticField.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "MAGNETICFIELD 1"
-.TH MAGNETICFIELD 1 "2015-04-28" "GeographicLib 1.42" "GeographicLib Utilities"
+.TH MAGNETICFIELD 1 "2015-05-22" "GeographicLib 1.43" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -273,12 +273,19 @@ following models
 \&      main magnetic field for the period 2015\-2020.  See
 \&      http://ngdc.noaa.gov/geomag/WMM/DoDWMM.shtml
 \&    igrf11, the International Geomagnetic Reference Field (11th
-\&      generation) which approximates the main magnetic field for
+\&      generation), which approximates the main magnetic field for
 \&      the period 1900\-2015.  See
 \&      http://ngdc.noaa.gov/IAGA/vmod/igrf.html
-\&    emm2010, the Enhanced Magnetic Model 2010, which approximates the
-\&      main and crustal magnetic fields for the period 2010\-2015.  See
-\&      http://ngdc.noaa.gov/geomag/EMM/index.html
+\&    igrf12, the International Geomagnetic Reference Field (12th
+\&      generation), which approximates the main magnetic field for
+\&      the period 1900\-2020.  See
+\&      http://ngdc.noaa.gov/IAGA/vmod/igrf.html
+\&    emm2010, the Enhanced Magnetic Model 2010, which approximates
+\&      the main and crustal magnetic fields for the period 2010\-2015.
+\&      See http://ngdc.noaa.gov/geomag/EMM/index.html
+\&    emm2015, the Enhanced Magnetic Model 2015, which approximates
+\&      the main and crustal magnetic fields for the period 2000\-2020.
+\&      See http://ngdc.noaa.gov/geomag/EMM/index.html
 .Ve
 .PP
 These models approximate the magnetic field due to the earth's core and
@@ -345,7 +352,7 @@ The first two numbers returned are the declination and inclination of
 the field.  The second line gives the annual change.
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fIGeoConvert\fR\|(1).
+\&\fIGeoConvert\fR\|(1), \fIgeographiclib\-get\-magnetic\fR\|(8).
 .SH "AUTHOR"
 .IX Header "AUTHOR"
 \&\fBMagneticField\fR was written by Charles Karney.
diff --git a/man/MagneticField.1.html b/man/MagneticField.1.html
index 200dbb1..9f3bb6d 100644
--- a/man/MagneticField.1.html
+++ b/man/MagneticField.1.html
@@ -160,12 +160,19 @@
       main magnetic field for the period 2015-2020.  See
       http://ngdc.noaa.gov/geomag/WMM/DoDWMM.shtml
     igrf11, the International Geomagnetic Reference Field (11th
-      generation) which approximates the main magnetic field for
+      generation), which approximates the main magnetic field for
       the period 1900-2015.  See
       http://ngdc.noaa.gov/IAGA/vmod/igrf.html
-    emm2010, the Enhanced Magnetic Model 2010, which approximates the
-      main and crustal magnetic fields for the period 2010-2015.  See
-      http://ngdc.noaa.gov/geomag/EMM/index.html</code></pre>
+    igrf12, the International Geomagnetic Reference Field (12th
+      generation), which approximates the main magnetic field for
+      the period 1900-2020.  See
+      http://ngdc.noaa.gov/IAGA/vmod/igrf.html
+    emm2010, the Enhanced Magnetic Model 2010, which approximates
+      the main and crustal magnetic fields for the period 2010-2015.
+      See http://ngdc.noaa.gov/geomag/EMM/index.html
+    emm2015, the Enhanced Magnetic Model 2015, which approximates
+      the main and crustal magnetic fields for the period 2000-2020.
+      See http://ngdc.noaa.gov/geomag/EMM/index.html</code></pre>
 
 <p>These models approximate the magnetic field due to the earth's core and (in the case of emm2010) its crust. They neglect magnetic fields due to the ionosphere, the magnetosphere, nearby magnetized materials, electrical machinery, etc.</p>
 
@@ -215,7 +222,7 @@
 
 <h1 id="SEE-ALSO">SEE ALSO</h1>
 
-<p>GeoConvert(1).</p>
+<p>GeoConvert(1), geographiclib-get-magnetic(8).</p>
 
 <h1 id="AUTHOR">AUTHOR</h1>
 
diff --git a/man/MagneticField.pod b/man/MagneticField.pod
index 369a0ac..9af0d85 100644
--- a/man/MagneticField.pod
+++ b/man/MagneticField.pod
@@ -155,12 +155,19 @@ following models
       main magnetic field for the period 2015-2020.  See
       http://ngdc.noaa.gov/geomag/WMM/DoDWMM.shtml
     igrf11, the International Geomagnetic Reference Field (11th
-      generation) which approximates the main magnetic field for
+      generation), which approximates the main magnetic field for
       the period 1900-2015.  See
       http://ngdc.noaa.gov/IAGA/vmod/igrf.html
-    emm2010, the Enhanced Magnetic Model 2010, which approximates the
-      main and crustal magnetic fields for the period 2010-2015.  See
-      http://ngdc.noaa.gov/geomag/EMM/index.html
+    igrf12, the International Geomagnetic Reference Field (12th
+      generation), which approximates the main magnetic field for
+      the period 1900-2020.  See
+      http://ngdc.noaa.gov/IAGA/vmod/igrf.html
+    emm2010, the Enhanced Magnetic Model 2010, which approximates
+      the main and crustal magnetic fields for the period 2010-2015.
+      See http://ngdc.noaa.gov/geomag/EMM/index.html
+    emm2015, the Enhanced Magnetic Model 2015, which approximates
+      the main and crustal magnetic fields for the period 2000-2020.
+      See http://ngdc.noaa.gov/geomag/EMM/index.html
 
 These models approximate the magnetic field due to the earth's core and
 (in the case of emm2010) its crust.  They neglect magnetic fields due to
@@ -234,7 +241,7 @@ the field.  The second line gives the annual change.
 
 =head1 SEE ALSO
 
-GeoConvert(1).
+GeoConvert(1), geographiclib-get-magnetic(8).
 
 =head1 AUTHOR
 
diff --git a/man/MagneticField.usage b/man/MagneticField.usage
index 212afcd..2eaa1c7 100644
--- a/man/MagneticField.usage
+++ b/man/MagneticField.usage
@@ -10,7 +10,7 @@ int usage(int retval, bool brief) {
 "For full documentation type:\n"
 "    MagneticField --help\n"
 "or visit:\n"
-"    http://geographiclib.sf.net/1.42/MagneticField.1.html\n";
+"    http://geographiclib.sf.net/1.43/MagneticField.1.html\n";
   else
     ( retval ? std::cerr : std::cout ) << "Man page:\n"
 "NAME\n"
@@ -131,12 +131,19 @@ int usage(int retval, bool brief) {
 "             main magnetic field for the period 2015-2020.  See\n"
 "             http://ngdc.noaa.gov/geomag/WMM/DoDWMM.shtml\n"
 "           igrf11, the International Geomagnetic Reference Field (11th\n"
-"             generation) which approximates the main magnetic field for\n"
+"             generation), which approximates the main magnetic field for\n"
 "             the period 1900-2015.  See\n"
 "             http://ngdc.noaa.gov/IAGA/vmod/igrf.html\n"
-"           emm2010, the Enhanced Magnetic Model 2010, which approximates the\n"
-"             main and crustal magnetic fields for the period 2010-2015.  See\n"
-"             http://ngdc.noaa.gov/geomag/EMM/index.html\n"
+"           igrf12, the International Geomagnetic Reference Field (12th\n"
+"             generation), which approximates the main magnetic field for\n"
+"             the period 1900-2020.  See\n"
+"             http://ngdc.noaa.gov/IAGA/vmod/igrf.html\n"
+"           emm2010, the Enhanced Magnetic Model 2010, which approximates\n"
+"             the main and crustal magnetic fields for the period 2010-2015.\n"
+"             See http://ngdc.noaa.gov/geomag/EMM/index.html\n"
+"           emm2015, the Enhanced Magnetic Model 2015, which approximates\n"
+"             the main and crustal magnetic fields for the period 2000-2020.\n"
+"             See http://ngdc.noaa.gov/geomag/EMM/index.html\n"
 "\n"
 "       These models approximate the magnetic field due to the earth's core and\n"
 "       (in the case of emm2010) its crust.  They neglect magnetic fields due\n"
@@ -197,7 +204,7 @@ int usage(int retval, bool brief) {
 "       the field.  The second line gives the annual change.\n"
 "\n"
 "SEE ALSO\n"
-"       GeoConvert(1).\n"
+"       GeoConvert(1), geographiclib-get-magnetic(8).\n"
 "\n"
 "AUTHOR\n"
 "       MagneticField was written by Charles Karney.\n"
diff --git a/man/Planimeter.1 b/man/Planimeter.1
index 9a997d0..9b8b209 100644
--- a/man/Planimeter.1
+++ b/man/Planimeter.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "PLANIMETER 1"
-.TH PLANIMETER 1 "2015-04-28" "GeographicLib 1.42" "GeographicLib Utilities"
+.TH PLANIMETER 1 "2015-05-22" "GeographicLib 1.43" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/man/Planimeter.usage b/man/Planimeter.usage
index 0944934..2422ee0 100644
--- a/man/Planimeter.usage
+++ b/man/Planimeter.usage
@@ -9,7 +9,7 @@ int usage(int retval, bool brief) {
 "For full documentation type:\n"
 "    Planimeter --help\n"
 "or visit:\n"
-"    http://geographiclib.sf.net/1.42/Planimeter.1.html\n";
+"    http://geographiclib.sf.net/1.43/Planimeter.1.html\n";
   else
     ( retval ? std::cerr : std::cout ) << "Man page:\n"
 "NAME\n"
diff --git a/man/RhumbSolve.1 b/man/RhumbSolve.1
index de1062b..e4bbd8c 100644
--- a/man/RhumbSolve.1
+++ b/man/RhumbSolve.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "RHUMBSOLVE 1"
-.TH RHUMBSOLVE 1 "2015-04-28" "GeographicLib 1.42" "GeographicLib Utilities"
+.TH RHUMBSOLVE 1 "2015-05-22" "GeographicLib 1.43" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -144,7 +144,7 @@ RhumbSolve \-\- perform rhumb line calculations
 .IX Header "SYNOPSIS"
 \&\fBRhumbSolve\fR [ \fB\-i\fR | \fB\-l\fR \fIlat1\fR \fIlon1\fR \fIazi12\fR ]
 [ \fB\-e\fR \fIa\fR \fIf\fR ]
-[ \fB\-d\fR | \fB\-:\fR ] [ \fB\-f\fR ] [ \fB\-p\fR \fIprec\fR ] [ \fB\-s\fR ]
+[ \fB\-d\fR | \fB\-:\fR ] [ \fB\-p\fR \fIprec\fR ] [ \fB\-s\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 ]
diff --git a/man/RhumbSolve.1.html b/man/RhumbSolve.1.html
index abb1c3f..9f5be90 100644
--- a/man/RhumbSolve.1.html
+++ b/man/RhumbSolve.1.html
@@ -17,7 +17,7 @@
 
 <h1 id="SYNOPSIS">SYNOPSIS</h1>
 
-<p><b>RhumbSolve</b> [ <b>-i</b> | <b>-l</b> <i>lat1</i> <i>lon1</i> <i>azi12</i> ] [ <b>-e</b> <i>a</i> <i>f</i> ] [ <b>-d</b> | <b>-:</b> ] [ <b>-f</b> ] [ <b>-p</b> <i>prec</i> ] [ <b>-s</b> ] [ <b>--comment-delimiter</b> <i>commentdelim</i> ] [ <b>--version</b> | <b>-h</b> | <b>--help</b> ] [ <b>--input-file</b> <i>infile</i> | <b>--input-string</b> <i>instring</i> ] [ <b>--line-separator</b> <i>linesep</i> ] [ <b>--output-file</b> <i>outfile</i> ]</p>
+<p><b>RhumbSolve</b> [ <b>-i</b> | <b>-l</b> <i>lat1</i> <i>lon1</i> <i>azi12</i> ] [ <b>-e</b> <i>a</i> <i>f</i> ] [ <b>-d</b> | <b>-:</b> ] [ <b>-p</b> <i>prec</i> ] [ <b>-s</b> ] [ <b>--comment-delimiter</b> <i>commentdelim</i> ] [ <b>--version</b> | <b>-h</b> | <b>--help</b> ] [ <b>--input-file</b> <i>infile</i> | <b>--input-string</b> <i>instring</i> ] [ <b>--line-separator</b> <i>linesep</i> ] [ <b>--output-file</b> <i>outfile</i> ]</p>
 
 <h1 id="DESCRIPTION">DESCRIPTION</h1>
 
diff --git a/man/RhumbSolve.pod b/man/RhumbSolve.pod
index 1f28045..b74c2e8 100644
--- a/man/RhumbSolve.pod
+++ b/man/RhumbSolve.pod
@@ -6,7 +6,7 @@ RhumbSolve -- perform rhumb line calculations
 
 B<RhumbSolve> [ B<-i> | B<-l> I<lat1> I<lon1> I<azi12> ]
 [ B<-e> I<a> I<f> ]
-[ B<-d> | B<-:> ] [ B<-f> ] [ B<-p> I<prec> ] [ B<-s> ]
+[ B<-d> | B<-:> ] [ B<-p> I<prec> ] [ B<-s> ]
 [ B<--comment-delimiter> I<commentdelim> ]
 [ B<--version> | B<-h> | B<--help> ]
 [ B<--input-file> I<infile> | B<--input-string> I<instring> ]
diff --git a/man/RhumbSolve.usage b/man/RhumbSolve.usage
index 45d63a2..19aa99d 100644
--- a/man/RhumbSolve.usage
+++ b/man/RhumbSolve.usage
@@ -1,25 +1,25 @@
 int usage(int retval, bool brief) {
   if (brief)
     ( retval ? std::cerr : std::cout ) << "Usage:\n"
-"    RhumbSolve [ -i | -l lat1 lon1 azi12 ] [ -e a f ] [ -d | -: ] [ -f ] [\n"
-"    -p prec ] [ -s ] [ --comment-delimiter commentdelim ] [ --version | -h\n"
-"    | --help ] [ --input-file infile | --input-string instring ] [\n"
-"    --line-separator linesep ] [ --output-file outfile ]\n"
+"    RhumbSolve [ -i | -l lat1 lon1 azi12 ] [ -e a f ] [ -d | -: ] [ -p prec\n"
+"    ] [ -s ] [ --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"
 "    RhumbSolve --help\n"
 "or visit:\n"
-"    http://geographiclib.sf.net/1.42/RhumbSolve.1.html\n";
+"    http://geographiclib.sf.net/1.43/RhumbSolve.1.html\n";
   else
     ( retval ? std::cerr : std::cout ) << "Man page:\n"
 "NAME\n"
 "       RhumbSolve -- perform rhumb line calculations\n"
 "\n"
 "SYNOPSIS\n"
-"       RhumbSolve [ -i | -l lat1 lon1 azi12 ] [ -e a f ] [ -d | -: ] [ -f ] [\n"
-"       -p prec ] [ -s ] [ --comment-delimiter commentdelim ] [ --version | -h\n"
-"       | --help ] [ --input-file infile | --input-string instring ] [\n"
-"       --line-separator linesep ] [ --output-file outfile ]\n"
+"       RhumbSolve [ -i | -l lat1 lon1 azi12 ] [ -e a f ] [ -d | -: ] [ -p prec\n"
+"       ] [ -s ] [ --comment-delimiter commentdelim ] [ --version | -h | --help\n"
+"       ] [ --input-file infile | --input-string instring ] [ --line-separator\n"
+"       linesep ] [ --output-file outfile ]\n"
 "\n"
 "DESCRIPTION\n"
 "       The path with constant heading between two points on the ellipsoid at\n"
diff --git a/man/TransverseMercatorProj.1 b/man/TransverseMercatorProj.1
index db8b28e..f95c49b 100644
--- a/man/TransverseMercatorProj.1
+++ b/man/TransverseMercatorProj.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "TRANSVERSEMERCATORPROJ 1"
-.TH TRANSVERSEMERCATORPROJ 1 "2015-04-28" "GeographicLib 1.42" "GeographicLib Utilities"
+.TH TRANSVERSEMERCATORPROJ 1 "2015-05-22" "GeographicLib 1.43" "GeographicLib Utilities"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/man/TransverseMercatorProj.usage b/man/TransverseMercatorProj.usage
index 125d877..07c0690 100644
--- a/man/TransverseMercatorProj.usage
+++ b/man/TransverseMercatorProj.usage
@@ -9,7 +9,7 @@ int usage(int retval, bool brief) {
 "For full documentation type:\n"
 "    TransverseMercatorProj --help\n"
 "or visit:\n"
-"    http://geographiclib.sf.net/1.42/TransverseMercatorProj.1.html\n";
+"    http://geographiclib.sf.net/1.43/TransverseMercatorProj.1.html\n";
   else
     ( retval ? std::cerr : std::cout ) << "Man page:\n"
 "NAME\n"
diff --git a/matlab/geographiclib/Contents.m b/matlab/geographiclib/Contents.m
index beabc8a..26c5af8 100644
--- a/matlab/geographiclib/Contents.m
+++ b/matlab/geographiclib/Contents.m
@@ -1,5 +1,5 @@
 % GeographicLib toolbox
-% Version 1.42 2015-04-27
+% Version 1.43 2015-05-23
 %
 %   This toolbox provides native MATLAB implementations of a subset of the
 %   C++ library, GeographicLib.  Key components of this toolbox are
@@ -67,7 +67,7 @@
 %   mgrs_inv         - Convert MGRS to UTM/UPS coordinates
 %
 % Geoid lookup
-%   geoid_height     - Compute the height of the geoid
+%   geoid_height     - Compute the height of the geoid above the ellipsoid
 %   geoid_load       - Load a geoid model
 %
 % Geometric transformations
@@ -92,4 +92,4 @@
 
 % Copyright (c) Charles Karney (2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
diff --git a/matlab/geographiclib/cassini_fwd.m b/matlab/geographiclib/cassini_fwd.m
index 6e841bb..f4bf3e4 100644
--- a/matlab/geographiclib/cassini_fwd.m
+++ b/matlab/geographiclib/cassini_fwd.m
@@ -9,7 +9,7 @@ function [x, y, azi, rk] = cassini_fwd(lat0, lon0, lat, lon, ellipsoid)
 %   arguments can be scalars or arrays of equal size.  The ellipsoid vector
 %   is of the form [a, e], where a is the equatorial radius in meters, e is
 %   the eccentricity.  If ellipsoid is omitted, the WGS84 ellipsoid (more
-%   precisely, the value returned by defaultellipsoid) is used.  geodproj
+%   precisely, the value returned by defaultellipsoid) is used.  projdoc
 %   defines the projection and gives the restrictions on the allowed ranges
 %   of the arguments.  The inverse projection is given by cassini_inv.
 %
@@ -21,7 +21,7 @@ function [x, y, azi, rk] = cassini_fwd(lat0, lon0, lat, lon, ellipsoid)
 %   y are in meters (more precisely the units used for the equatorial
 %   radius).  rk is dimensionless.
 %
-%   See also GEODPROJ, CASSINI_INV, GEODDISTANCE, DEFAULTELLIPSOID.
+%   See also PROJDOC, CASSINI_INV, GEODDISTANCE, DEFAULTELLIPSOID.
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
diff --git a/matlab/geographiclib/cassini_inv.m b/matlab/geographiclib/cassini_inv.m
index ecb35e3..e54f6d9 100644
--- a/matlab/geographiclib/cassini_inv.m
+++ b/matlab/geographiclib/cassini_inv.m
@@ -9,7 +9,7 @@ function [lat, lon, azi, rk] = cassini_inv(lat0, lon0, x, y, ellipsoid)
 %   arguments can be scalars or arrays of equal size.  The ellipsoid vector
 %   is of the form [a, e], where a is the equatorial radius in meters, e is
 %   the eccentricity.  If ellipsoid is omitted, the WGS84 ellipsoid (more
-%   precisely, the value returned by defaultellipsoid) is used.  geodproj
+%   precisely, the value returned by defaultellipsoid) is used.  projdoc
 %   defines the projection and gives the restrictions on the allowed ranges
 %   of the arguments.  The forward projection is given by cassini_fwd.
 %
@@ -21,7 +21,7 @@ function [lat, lon, azi, rk] = cassini_inv(lat0, lon0, x, y, ellipsoid)
 %   y are in meters (more precisely the units used for the equatorial
 %   radius).  rk is dimensionless.
 %
-%   See also GEODPROJ, CASSINI_FWD, GEODRECKON, DEFAULTELLIPSOID.
+%   See also PROJDOC, CASSINI_FWD, GEODRECKON, DEFAULTELLIPSOID.
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
diff --git a/matlab/geographiclib/eqdazim_fwd.m b/matlab/geographiclib/eqdazim_fwd.m
index 257daab..730c389 100644
--- a/matlab/geographiclib/eqdazim_fwd.m
+++ b/matlab/geographiclib/eqdazim_fwd.m
@@ -10,7 +10,7 @@ function [x, y, azi, rk] = eqdazim_fwd(lat0, lon0, lat, lon, ellipsoid)
 %   ellipsoid vector is of the form [a, e], where a is the equatorial
 %   radius in meters, e is the eccentricity.  If ellipsoid is omitted, the
 %   WGS84 ellipsoid (more precisely, the value returned by
-%   defaultellipsoid) is used.  geodproj defines the projection and gives
+%   defaultellipsoid) is used.  projdoc defines the projection and gives
 %   the restrictions on the allowed ranges of the arguments.  The inverse
 %   projection is given by eqdazim_inv.
 %
@@ -32,7 +32,7 @@ function [x, y, azi, rk] = eqdazim_fwd(lat0, lon0, lat, lon, ellipsoid)
 %   describes how to use this projection in the determination of maritime
 %   boundaries (finding the median line).
 %
-%   See also GEODPROJ, EQDAZIM_INV, GEODDISTANCE, DEFAULTELLIPSOID.
+%   See also PROJDOC, EQDAZIM_INV, GEODDISTANCE, DEFAULTELLIPSOID.
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
diff --git a/matlab/geographiclib/eqdazim_inv.m b/matlab/geographiclib/eqdazim_inv.m
index 03f779d..e96f3d9 100644
--- a/matlab/geographiclib/eqdazim_inv.m
+++ b/matlab/geographiclib/eqdazim_inv.m
@@ -10,7 +10,7 @@ function [lat, lon, azi, rk] = eqdazim_inv(lat0, lon0, x, y, ellipsoid)
 %   vector is of the form [a, e], where a is the equatorial radius in
 %   meters, e is the eccentricity.  If ellipsoid is omitted, the WGS84
 %   ellipsoid (more precisely, the value returned by defaultellipsoid) is
-%   used.  geodproj defines the projection and gives the restrictions on
+%   used.  projdoc defines the projection and gives the restrictions on
 %   the allowed ranges of the arguments.  The forward projection is given
 %   by eqdazim_fwd.
 %
@@ -32,7 +32,7 @@ function [lat, lon, azi, rk] = eqdazim_inv(lat0, lon0, x, y, ellipsoid)
 %   describes how to use this projection in the determination of maritime
 %   boundaries (finding the median line).
 %
-%   See also GEODPROJ, EQDAZIM_FWD, GEODRECKON, DEFAULTELLIPSOID.
+%   See also PROJDOC, EQDAZIM_FWD, GEODRECKON, DEFAULTELLIPSOID.
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
diff --git a/matlab/geographiclib/gedistance.m b/matlab/geographiclib/gedistance.m
index 551b893..99a405d 100644
--- a/matlab/geographiclib/gedistance.m
+++ b/matlab/geographiclib/gedistance.m
@@ -28,7 +28,7 @@ function [s12, azi1, azi2, S12] = gedistance(lat1, lon1, lat2, lon2, ellipsoid)
 
 % Copyright (c) Charles Karney (2014-2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
 
   narginchk(4, 5)
   if nargin < 5, ellipsoid = defaultellipsoid; end
diff --git a/matlab/geographiclib/gedoc.m b/matlab/geographiclib/gedoc.m
index ca4245c..edb9b09 100644
--- a/matlab/geographiclib/gedoc.m
+++ b/matlab/geographiclib/gedoc.m
@@ -67,9 +67,7 @@ function gedoc
 %   Restrictions on the inputs:
 %     * All latitudes must lie in [-90, 90].
 %     * All longitudes and azimuths must lie in [-540, 540).  On output,
-%       these quantities lie in [-180, 180).  It is however possible to
-%       prevent this normalization of the longitude in geodreckon by
-%       setting the long_nowrap bit in the optional flags argument.
+%       these quantities lie in [-180, 180).
 %     * The distance s12 is unrestricted.  This allows great ellipses to
 %       wrap around the ellipsoid.
 %     * The equatorial radius, a, must be positive.
diff --git a/matlab/geographiclib/geocent_fwd.m b/matlab/geographiclib/geocent_fwd.m
index d0b8d23..252e68f 100644
--- a/matlab/geographiclib/geocent_fwd.m
+++ b/matlab/geographiclib/geocent_fwd.m
@@ -11,7 +11,8 @@ function [X, Y, Z, M] = geocent_fwd(lat, lon, h, ellipsoid)
 %   meters.  The ellipsoid vector is of the form [a, e], where a is the
 %   equatorial radius in meters, e is the eccentricity.  If ellipsoid is
 %   omitted, the WGS84 ellipsoid (more precisely, the value returned by
-%   defaultellipsoid) is used.
+%   defaultellipsoid) is used.  The inverse operation is given by
+%   geocent_inv.
 %
 %   M is the 3 x 3 rotation matrix for the conversion.  Pre-multiplying a
 %   unit vector in local cartesian coordinates (east, north, up) by M
diff --git a/matlab/geographiclib/geocent_inv.m b/matlab/geographiclib/geocent_inv.m
index bb82961..38f28d2 100644
--- a/matlab/geographiclib/geocent_inv.m
+++ b/matlab/geographiclib/geocent_inv.m
@@ -9,7 +9,8 @@ function [lat, lon, h, M] = geocent_inv(X, Y, Z, ellipsoid)
 %   and h are in meters.  lat and lon are in degrees.  The ellipsoid vector
 %   is of the form [a, e], where a is the equatorial radius in meters, e is
 %   the eccentricity.  If ellipsoid is omitted, the WGS84 ellipsoid (more
-%   precisely, the value returned by defaultellipsoid) is used.
+%   precisely, the value returned by defaultellipsoid) is used.  The
+%   forward operation is given by geocent_fwd.
 %
 %   M is the 3 x 3 rotation matrix for the conversion.  Pre-multiplying a
 %   unit vector in geocentric coordinates by the transpose of M transforms
diff --git a/matlab/geographiclib/geodarea.m b/matlab/geographiclib/geodarea.m
index 3e57647..7c96ee0 100644
--- a/matlab/geographiclib/geodarea.m
+++ b/matlab/geographiclib/geodarea.m
@@ -16,7 +16,7 @@ function [A, P, N] = geodarea(lats, lons, ellipsoid)
 %   Counter-clockwise traversal counts as a positive area.  Only simple
 %   polygons (which do not intersect themselves) are supported.  Also
 %   returned are the perimeters of the polygons in P (meters) and the
-%   numbers of vertices in N.  GEODDOC gives the restrictions on the
+%   numbers of vertices in N.  geoddoc gives the restrictions on the
 %   allowed ranges of the arguments.
 %
 %   GEODAREA loosely duplicates the functionality of the areaint function
@@ -35,7 +35,7 @@ function [A, P, N] = geodarea(lats, lons, ellipsoid)
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
 
   narginchk(2, 3)
   if nargin < 3, ellipsoid = defaultellipsoid; end
diff --git a/matlab/geographiclib/geoddistance.m b/matlab/geographiclib/geoddistance.m
index 284f693..6ff9648 100644
--- a/matlab/geographiclib/geoddistance.m
+++ b/matlab/geographiclib/geoddistance.m
@@ -44,7 +44,7 @@ function [s12, azi1, azi2, S12, m12, M12, M21, a12] = geoddistance ...
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
 %
 % This is a straightforward transcription of the C++ implementation in
 % GeographicLib and the C++ source should be consulted for additional
@@ -513,6 +513,6 @@ function [s12b, m12b, m0, M12, M21] = ...
     M12 = csig12 + (t .* ssig2 - csig2 .* J12) .* ssig1 ./ dn1;
     M21 = csig12 - (t .* ssig1 - csig1 .* J12) .* ssig2 ./ dn2;
   else
-    M12 = sig12 + NaN; M21 = M12;
+    M12 = sig12; M21 = M12;             % assign arbitrary values
   end
 end
diff --git a/matlab/geographiclib/geoddoc.m b/matlab/geographiclib/geoddoc.m
index 478f338..c29cd0f 100644
--- a/matlab/geographiclib/geoddoc.m
+++ b/matlab/geographiclib/geoddoc.m
@@ -170,7 +170,7 @@ function geoddoc
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
 
   help geoddoc
 end
diff --git a/matlab/geographiclib/geodreckon.m b/matlab/geographiclib/geodreckon.m
index e30470f..0d169e9 100644
--- a/matlab/geographiclib/geodreckon.m
+++ b/matlab/geographiclib/geodreckon.m
@@ -20,7 +20,7 @@ function [lat2, lon2, azi2, S12, m12, M12, M21, a12_s12] = geodreckon ...
 %
 %   flags (default 0) is a combination of 2 flags:
 %      arcmode = bitand(flags, 1)
-%      long_nowrap = bitand(flags, 2)
+%      long_unroll = bitand(flags, 2)
 %
 %   If arcmode is unset (the default), then, in the long form of the call,
 %   the input argument s12_a12 is the distance s12 (in meters) and the
@@ -30,23 +30,23 @@ function [lat2, lon2, azi2, S12, m12, M12, M21, a12_s12] = geodreckon ...
 %   auxiliary sphere a12 (in degrees) and the corresponding distance s12 is
 %   returned in the final output variable a12_s12 (in meters).
 %
-%   If long_nowrap is unset (the default), then the value lon2 is in the
-%   range [-180,180).  If long_nowrap is set, the quantity lon2 - lon1
-%   indicates how many times the geodesic wrapped around the ellipsoid.
-%   Because lon2 might be outside the normal allowed range for longitudes,
-%   [-540, 540), be sure to normalize it with rem(lon2, 360) before using
-%   it in other calls.
+%   If long_unroll is unset (the default), then the value lon2 is in the
+%   range [-180,180).  If long_unroll is set, the longitude is "unrolled"
+%   so that the quantity lon2 - lon1 indicates how many times and in what
+%   sense the geodesic encircles the ellipsoid.  Because lon2 might be
+%   outside the normal allowed range for longitudes, [-540, 540), be sure
+%   to normalize it with rem(lon2, 360) before using it in other calls.
 %
 %   The two optional arguments, ellipsoid and flags, may be given in any
 %   order and either or both may be omitted.
 %
 %   When given a combination of scalar and array inputs, GEODRECKON behaves
 %   as though the inputs were expanded to match the size of the arrays.
-%   However, in the particular case where LAT1 and AZI1 are the same for
+%   However, in the particular case where lat1 and azi1 are the same for
 %   all the input points, they should be specified as scalars since this
 %   will considerably speed up the calculations.  (In particular a series
 %   of points along a single geodesic is efficiently computed by specifying
-%   an array for S12 only.)
+%   an array for s12 only.)
 %
 %   This is an implementation of the algorithm given in
 %
@@ -71,7 +71,7 @@ function [lat2, lon2, azi2, S12, m12, M12, M21, a12_s12] = geodreckon ...
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
 %
 % This is a straightforward transcription of the C++ implementation in
 % GeographicLib and the C++ source should be consulted for additional
@@ -110,7 +110,7 @@ function [lat2, lon2, azi2, S12, m12, M12, M21, a12_s12] = geodreckon ...
     error('flags must be a scalar')
   end
   arcmode = bitand(flags, 1);
-  long_nowrap = bitand(flags, 2);
+  long_unroll = bitand(flags, 2);
 
   degree = pi/180;
   tiny = sqrt(realmin);
@@ -201,10 +201,11 @@ function [lat2, lon2, azi2, S12, m12, M12, M21, a12_s12] = geodreckon ...
   cbet2(cbet2 == 0) = tiny;
   somg2 = salp0 .* ssig2; comg2 = csig2;
   salp2 = salp0; calp2 = calp0 .* csig2;
-  if long_nowrap
-    omg12 = sig12 ...
-            - (atan2(ssig2, csig2) - atan2(ssig1, csig1)) ...
-            + (atan2(somg2, comg2) - atan2(somg1, comg1));
+  if long_unroll
+    E = 1 - 2*(salp0 < 0);
+    omg12 = E .* (sig12 ...
+                  - (atan2(   ssig2, csig2) - atan2(   ssig1, csig1)) ...
+                  + (atan2(E.*somg2, comg2) - atan2(E.*somg1, comg1)));
   else
     omg12 = atan2(somg2 .* comg1 - comg2 .* somg1, ...
                   comg2 .* comg1 + somg2 .* somg1);
@@ -212,7 +213,7 @@ function [lat2, lon2, azi2, S12, m12, M12, M21, a12_s12] = geodreckon ...
   lam12 = omg12 + ...
           A3c .* ( sig12 + (SinCosSeries(true, ssig2, csig2, C3a) - B31));
   lon12 = lam12 / degree;
-  if long_nowrap
+  if long_unroll
     lon2 = lon1 + lon12;
   else
     lon12 = AngNormalize2(lon12);
diff --git a/matlab/geographiclib/geoid_height.m b/matlab/geographiclib/geoid_height.m
index 10d5b86..495e066 100644
--- a/matlab/geographiclib/geoid_height.m
+++ b/matlab/geographiclib/geoid_height.m
@@ -1,22 +1,33 @@
-function h = geoid_height(lat, lon, geoidname, geoiddir)
-%GEOID_HEIGHT  Compute the height of the geoid
+function N = geoid_height(lat, lon, geoidname, geoiddir)
+%GEOID_HEIGHT  Compute the height of the geoid above the ellipsoid
 %
-%   height = GEOID_HEIGHT(lat, lon)
-%   height = GEOID_HEIGHT(lat, lon, geoidname)
-%   height = GEOID_HEIGHT(lat, lon, geoidname, geoiddir)
-%            GEOID_HEIGHT([])
-%   height = GEOID_HEIGHT(lat, lon, geoid)
+%   N = GEOID_HEIGHT(lat, lon)
+%   N = GEOID_HEIGHT(lat, lon, geoidname)
+%   N = GEOID_HEIGHT(lat, lon, geoidname, geoiddir)
+%       GEOID_HEIGHT([])
+%   N = GEOID_HEIGHT(lat, lon, geoid)
 %
-%   computes the height of the geoid in meters.  lat and lon are the
-%   latitude and longitude in degrees.  These can be scalars or arrays of
-%   the same size.  The possible geoids are
+%   computes the height, N, of the geoid above the WGS84 ellipsoid.  lat
+%   and lon are the latitude and longitude in degrees; these can be scalars
+%   or arrays of the same size.  N is in meters.
+%
+%   The height of the geoid above the ellipsoid, N, is sometimes called the
+%   geoid undulation.  It can be used to convert a height above the
+%   ellipsoid, h, to the corresponding height above the geoid (the
+%   orthometric height, roughly the height above mean sea level), H, using
+%   the relations
+%
+%       h = N + H;   H = -N + h.
+%
+%   The possible geoids are
 %
 %       egm84-30  egm84-15
 %       egm96-15  egm96-5
 %       egm2008-5 egm2008-2_5 egm2008-1
 %
 %   The first part of the name is the geoid model.  The second part gives
-%   the resolution of the gridded data (in arc-seconds).
+%   the resolution of the gridded data (in arc-seconds).  Thus egm2008-2_5
+%   is the egm2008 geoid model at a resolution of 2.5".
 %
 %   By default the egm96-5 geoid is used.  This can be overridden by
 %   specifying geoidname.  The geoiddir argument overrides the default
@@ -50,7 +61,7 @@ function h = geoid_height(lat, lon, geoidname, geoiddir)
 
 % Copyright (c) Charles Karney (2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
 
   persistent saved_geoid
   if nargin == 1 && isempty(lat)
@@ -59,7 +70,7 @@ function h = geoid_height(lat, lon, geoidname, geoiddir)
   end
   narginchk(2, 4)
   if nargin == 3 && isstruct(geoidname)
-    h = geoid_height_int(lat, lon, geoidname);
+    N = geoid_height_int(lat, lon, geoidname);
   else
     if nargin < 3
       geoidname = '';
@@ -71,40 +82,13 @@ function h = geoid_height(lat, lon, geoidname, geoiddir)
     if ~(isstruct(saved_geoid) && strcmp(saved_geoid.file, geoidfile))
       saved_geoid = geoid_load_file(geoidfile);
     end
-    h = geoid_height_int(lat, lon, saved_geoid);
+    N = geoid_height_int(lat, lon, saved_geoid);
   end
 end
 
-function height = geoid_height_int(lat, lon, geoid, cubic)
-  if nargin < 4, cubic = true; end
-  try
-    s = size(lat + lon);
-  catch
-    error('lat, lon have incompatible sizes')
-  end
-  num = prod(s); Z = zeros(num,1);
-  lat = lat(:) + Z; lon = lon(:) + Z;
-  h = geoid.h; w = geoid.w;
-  % lat is in [0, h]
-  flat = min(max((90 - lat) * (h - 1) / 180, 0), (h - 1));
-  % lon is in [0, w)
-  flon = mod(lon * w / 360, w);
-  flon(isnan(flon)) = 0;
-  ilat = min(floor(flat), h - 2);
-  ilon = floor(flon);
-  flat = flat - ilat; flon = flon - ilon;
-  if ~cubic
-    ind = imgind(ilon + [0,0,1,1], ilat + [0,1,0,1], w, h);
-    hf = double(geoid.im(ind));
-    height = (1 - flon) .* ((1 - flat) .* hf(:,1) + flat .* hf(:,2)) + ...
-             flon       .* ((1 - flat) .* hf(:,3) + flat .* hf(:,4));
-  else
-    ind = imgind(repmat(ilon, 1, 12) + ...
-                 repmat([ 0, 1,-1, 0, 1, 2,-1, 0, 1, 2, 0, 1], num, 1), ...
-                 repmat(ilat, 1, 12) + ...
-                 repmat([-1,-1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2], num, 1), ...
-                 w, h);
-    hf = double(geoid.im(ind));
+function N = geoid_height_int(lat, lon, geoid, cubic)
+  persistent c0 c3 c0n c3n c0s c3s
+  if isempty(c3s)
     c0 = 240;
     c3 = [ 9, -18, -88,    0,  96,   90,   0,   0, -60, -20;...
           -9,  18,   8,    0, -96,   30,   0,   0,  60, -20;...
@@ -144,16 +128,46 @@ function height = geoid_height_int(lat, lon, geoid, cubic)
              0,    0,   62,   0,    0,   31, 0,   0,    0, -31;...
            -18,   36,  -64,   0,   66,   51, 0,   0, -102,  31;...
             18,  -36,    2,   0,  -66,  -51, 0,   0,  102,  31];
+  end
+  if nargin < 4, cubic = true; end
+  try
+    s = size(lat + lon);
+  catch
+    error('lat, lon have incompatible sizes')
+  end
+  num = prod(s); Z = zeros(num,1);
+  lat = lat(:) + Z; lon = lon(:) + Z;
+  h = geoid.h; w = geoid.w;
+  % lat is in [0, h]
+  flat = min(max((90 - lat) * (h - 1) / 180, 0), (h - 1));
+  % lon is in [0, w)
+  flon = mod(lon * w / 360, w);
+  flon(isnan(flon)) = 0;
+  ilat = min(floor(flat), h - 2);
+  ilon = floor(flon);
+  flat = flat - ilat; flon = flon - ilon;
+  if ~cubic
+    ind = imgind(ilon + [0,0,1,1], ilat + [0,1,0,1], w, h);
+    hf = double(geoid.im(ind));
+    N = (1 - flon) .* ((1 - flat) .* hf(:,1) + flat .* hf(:,2)) + ...
+        flon       .* ((1 - flat) .* hf(:,3) + flat .* hf(:,4));
+  else
+    ind = imgind(repmat(ilon, 1, 12) + ...
+                 repmat([ 0, 1,-1, 0, 1, 2,-1, 0, 1, 2, 0, 1], num, 1), ...
+                 repmat(ilat, 1, 12) + ...
+                 repmat([-1,-1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2], num, 1), ...
+                 w, h);
+    hf = double(geoid.im(ind));
     hfx = hf * c3 / c0;
     hfx(ilat ==   0,:) = hf(ilat ==   0,:) * c3n / c0n;
     hfx(ilat == h-2,:) = hf(ilat == h-2,:) * c3s / c0s;
-    height = sum(hfx .* [Z+1, flon, flat, flon.^2, flon.*flat, flat.^2, ...
-                        flon.^3, flon.^2.*flat, flon.*flat.^2, flat.^3], ...
-                 2);
+    N = sum(hfx .* [Z+1, flon, flat, flon.^2, flon.*flat, flat.^2, ...
+                    flon.^3, flon.^2.*flat, flon.*flat.^2, flat.^3], ...
+            2);
   end
-  height = geoid.offset + geoid.scale * height;
-  height(~(abs(lat) <= 90 & abs(lon) <= 540)) = nan;
-  height = reshape(height, s);
+  N = geoid.offset + geoid.scale * N;
+  N(~(abs(lat) <= 90 & abs(lon) <= 540)) = nan;
+  N = reshape(N, s);
 end
 
 function ind = imgind(ix, iy, w, h)
diff --git a/matlab/geographiclib/geoid_load.m b/matlab/geographiclib/geoid_load.m
index 347a55b..a8eb6a8 100644
--- a/matlab/geographiclib/geoid_load.m
+++ b/matlab/geographiclib/geoid_load.m
@@ -5,31 +5,45 @@ function geoid = geoid_load(name, dir)
 %   geoid = GEOID_LOAD(geoidname)
 %   geoid = GEOID_LOAD(geoidname, geoiddir)
 %
-%   Loads geoid data into the workspace.  The possible geoids are
+%   Loads geoid data into the workspace.  geoid_height uses this function
+%   to load the geoid data it needs.  The possible geoids are
 %
 %       egm84-30  egm84-15
 %       egm96-15  egm96-5
 %       egm2008-5 egm2008-2_5 egm2008-1
 %
 %   The first part of the name is the geoid model.  The second part gives
-%   the resolution of the gridded data (in arc-seconds).
+%   the resolution of the gridded data (in arc-seconds).  Thus egm2008-2_5
+%   is the egm2008 geoid model at a resolution of 2.5".
 %
 %   If geoidname is not specified (or is empty), the environment variable
 %   GEOGRAPHICLIB_GEOID_NAME is used; if this is not defined then egm96-5
-%   is used.  geoid_height looks in the directory geoiddir for the geoid
-%   data; if this is not specified (or is empty), it uses the environment
-%   variable GEOGRAPHICLIB_GEOID_PATH; if this is not defined, it appends
-%   "/geoids" to the environment variable GEOGRAPHICLIB_DATA; finally, if
-%   GEOGRAPHICLIB_DATA is not defined, it tries the default directory names
-%   /usr/local/share/GeographicLib/geoids (for non-Windows systems) or
-%   C:/ProgramData/GeographicLib/geoids (for Windows systems).
+%   is used.
+%
+%   GEOID_LOAD determines the directory with the geoid data as follows
+%   (here an empty string is the same as undefined):
+%
+%      * if geoiddir is specified, then look there; otherwise ...
+%      * if the environment variable GEOGRAPHICLIB_GEOID_PATH is defined,
+%        look there; otherwise ...
+%      * if the environment variable GEOGRAPHICLIB_DATA is defined, look in
+%        [GEOGRAPHICLIB_DATA '/geoids']; otherwise ...
+%      * look in /usr/local/share/GeographicLib/geoids (for non-Windows
+%        systems) or C:/ProgramData/GeographicLib/geoids (for Windows
+%        systems).
+%
+%   If your geoid models are installed in /usr/share/GeographicLib/geoids,
+%   for example, you can avoid the need to supply the geoiddir argument
+%   with
+%
+%       setenv GEOGRAPHICLIB_DATA /usr/share/GeographicLib
 %
 %   The geoid data is loaded from the image file obtained by concatenating
 %   the components to give geoiddir/geoidname.pgm.  These files store a
-%   grid of geoid height encoded as 16-bit integers.
+%   grid of geoid heights above the ellipsoid encoded as 16-bit integers.
 %
 %   The returned geoid can be passed to geoid_height to determine the
-%   height of the geoid.
+%   height of the geoid above the ellipsoid.
 %
 %   Information on downloading and installing the data for the supported
 %   geoid models is available at
@@ -40,7 +54,7 @@ function geoid = geoid_load(name, dir)
 
 % Copyright (c) Charles Karney (2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
 
   if nargin < 1
     file = geoid_file;
diff --git a/matlab/geographiclib/gereckon.m b/matlab/geographiclib/gereckon.m
index 8376ce0..1fce932 100644
--- a/matlab/geographiclib/gereckon.m
+++ b/matlab/geographiclib/gereckon.m
@@ -10,20 +10,20 @@ function [lat2, lon2, azi2, S12] = gereckon(lat1, lon1, s12, azi1, ellipsoid)
 %   azi1 are given in degrees and s12 in meters.  The ellipsoid vector is
 %   of the form [a, e], where a is the equatorial radius in meters, e is
 %   the eccentricity.  If ellipsoid is omitted, the WGS84 ellipsoid (more
-%   precisely, the value returned by DEFAULTELLIPSOID) is used.  lat2,
+%   precisely, the value returned by defaultellipsoid) is used.  lat2,
 %   lon2, and azi2 give the position and forward azimuths at the end point
 %   in degrees.  The optional output S12 is the area between the great
-%   ellipse and the equator (in meters^2).  GEDOC gives an example and
-%   provides additional background information.  GEDOC also gives the
+%   ellipse and the equator (in meters^2).  gedoc gives an example and
+%   provides additional background information.  gedoc also gives the
 %   restrictions on the allowed ranges of the arguments.
 %
 %   When given a combination of scalar and array inputs, GERECKON behaves
 %   as though the inputs were expanded to match the size of the arrays.
-%   However, in the particular case where LAT1 and AZI1 are the same for
+%   However, in the particular case where lat1 and azi1 are the same for
 %   all the input points, they should be specified as scalars since this
 %   will considerably speed up the calculations.  (In particular a series
 %   of points along a single geodesic is efficiently computed by specifying
-%   an array for S12 only.)
+%   an array for s12 only.)
 %
 %   geodreckon solves the equivalent geodesic problem and usually this is
 %   preferable to using GERECKON.
@@ -32,7 +32,7 @@ function [lat2, lon2, azi2, S12] = gereckon(lat1, lon1, s12, azi1, ellipsoid)
 
 % Copyright (c) Charles Karney (2014-2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
 
   narginchk(4, 5)
   if nargin < 5, ellipsoid = defaultellipsoid; end
diff --git a/matlab/geographiclib/gnomonic_fwd.m b/matlab/geographiclib/gnomonic_fwd.m
index eef9b59..efb5efc 100644
--- a/matlab/geographiclib/gnomonic_fwd.m
+++ b/matlab/geographiclib/gnomonic_fwd.m
@@ -10,7 +10,7 @@ function [x, y, azi, rk] = gnomonic_fwd(lat0, lon0, lat, lon, ellipsoid)
 %   ellipsoid vector is of the form [a, e], where a is the equatorial
 %   radius in meters, e is the eccentricity.  If ellipsoid is omitted, the
 %   WGS84 ellipsoid (more precisely, the value returned by
-%   defaultellipsoid) is used.  geodproj defines the projection and gives
+%   defaultellipsoid) is used.  projdoc defines the projection and gives
 %   the restrictions on the allowed ranges of the arguments.  The inverse
 %   projection is given by gnomonic_inv.
 %
@@ -40,7 +40,7 @@ function [x, y, azi, rk] = gnomonic_fwd(lat0, lon0, lat, lon, ellipsoid)
 %   which also includes methods for solving the "intersection" and
 %   "interception" problems using the gnomonic projection.
 %
-%   See also GEODPROJ, GNOMONIC_INV, GEODDISTANCE, DEFAULTELLIPSOID.
+%   See also PROJDOC, GNOMONIC_INV, GEODDISTANCE, DEFAULTELLIPSOID.
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
diff --git a/matlab/geographiclib/gnomonic_inv.m b/matlab/geographiclib/gnomonic_inv.m
index 522b309..100877d 100644
--- a/matlab/geographiclib/gnomonic_inv.m
+++ b/matlab/geographiclib/gnomonic_inv.m
@@ -9,7 +9,7 @@ function [lat, lon, azi, rk] = gnomonic_inv(lat0, lon0, x, y, ellipsoid)
 %   arguments can be scalars or arrays of equal size.  The ellipsoid vector
 %   is of the form [a, e], where a is the equatorial radius in meters, e is
 %   the eccentricity.  If ellipsoid is omitted, the WGS84 ellipsoid (more
-%   precisely, the value returned by defaultellipsoid) is used.  geodproj
+%   precisely, the value returned by defaultellipsoid) is used.  projdoc
 %   defines the projection and gives the restrictions on the allowed ranges
 %   of the arguments.  The forward projection is given by gnomonic_fwd.
 %
@@ -41,7 +41,7 @@ function [lat, lon, azi, rk] = gnomonic_inv(lat0, lon0, x, y, ellipsoid)
 %   which also includes methods for solving the "intersection" and
 %   "interception" problems using the gnomonic projection.
 %
-%   See also GEODPROJ, GNOMONIC_FWD, GEODRECKON, DEFAULTELLIPSOID.
+%   See also PROJDOC, GNOMONIC_FWD, GEODRECKON, DEFAULTELLIPSOID.
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
diff --git a/matlab/geographiclib/loccart_fwd.m b/matlab/geographiclib/loccart_fwd.m
index 0531c6b..adcc519 100644
--- a/matlab/geographiclib/loccart_fwd.m
+++ b/matlab/geographiclib/loccart_fwd.m
@@ -12,7 +12,8 @@ function [x, y, z, M] = loccart_fwd(lat0, lon0, h0, lat, lon, h, ellipsoid)
 %   must be scalars.  The ellipsoid vector is of the form [a, e], where a
 %   is the equatorial radius in meters, e is the eccentricity.  If
 %   ellipsoid is omitted, the WGS84 ellipsoid (more precisely, the value
-%   returned by defaultellipsoid) is used.
+%   returned by defaultellipsoid) is used.  The inverse operation is given
+%   by loccart_inv.
 %
 %   M is the 3 x 3 rotation matrix for the conversion.  Pre-multiplying a
 %   unit vector in local cartesian coordinates at (lat, lon, h) by M
diff --git a/matlab/geographiclib/loccart_inv.m b/matlab/geographiclib/loccart_inv.m
index f57c6ff..a88ec5d 100644
--- a/matlab/geographiclib/loccart_inv.m
+++ b/matlab/geographiclib/loccart_inv.m
@@ -11,7 +11,8 @@ function [lat, lon, h, M] = loccart_inv(lat0, lon0, h0, x, y, z, ellipsoid)
 %   The ellipsoid vector is of the form [a, e], where a is the equatorial
 %   radius in meters, e is the eccentricity.  If ellipsoid is omitted, the
 %   WGS84 ellipsoid (more precisely, the value returned by
-%   defaultellipsoid) is used.
+%   defaultellipsoid) is used.  The forward operation is given by
+%   loccart_fwd.
 %
 %   M is the 3 x 3 rotation matrix for the conversion.  Pre-multiplying a
 %   unit vector in local cartesian coordinates at (lat0, lon0, h0) by the
diff --git a/matlab/geographiclib/mgrs_fwd.m b/matlab/geographiclib/mgrs_fwd.m
index 376c021..84858f4 100644
--- a/matlab/geographiclib/mgrs_fwd.m
+++ b/matlab/geographiclib/mgrs_fwd.m
@@ -8,13 +8,14 @@ function mgrs = mgrs_fwd(x, y, zone, isnorth, prec)
 %   northing (in meters); zone is the UTM zone, in [1,60], or 0 for UPS;
 %   isnorth is 1 (0) for the northern (southern) hemisphere.  prec in
 %   [-1,11] gives the precision of the grid reference; the default is 5
-%   giving 1 m precision.  prec = 0 corresponds to 100 km precision.  A
-%   value of -1 means that only the grid zone is returned.  The maximum
-%   allowed value of prec is 11 (denoting 1 um precision).  The MGRS
-%   references are returned in a cell array of strings.  x, y, zone,
-%   isnorth, prec can be scalars or arrays of the same size.  Values that
-%   can't be converted to MGRS return the "invalid" string, "INV".  The
-%   inverse operation is performed by mgrs_inv.
+%   giving 1 m precision.  For example, prec = 2 corresponding to 1 km
+%   precision, returns a string such as 38SMB4488.  A value of -1 means
+%   that only the grid zone, e.g., 38S, is returned.  The maximum allowed
+%   value of prec is 11 (denoting 1 um precision).  The MGRS references are
+%   returned in a cell array of strings.  x, y, zone, isnorth, prec can be
+%   scalars or arrays of the same size.  Values that can't be converted to
+%   MGRS return the "invalid" string, INV.  The inverse operation is
+%   performed by mgrs_inv.
 %
 %   The allowed values of (x,y) are
 %        UTM: x in [100 km, 900 km]
@@ -88,6 +89,12 @@ function mgrs = mgrs_fwd_p(x, y, zone, northp, prec)
 end
 
 function mgrs = mgrs_fwd_utm(x, y, zone, prec)
+  persistent latband utmcols utmrow
+  if isempty(utmrow)
+    latband = 'CDEFGHJKLMNPQRSTUVWX';
+    utmcols = ['ABCDEFGH', 'JKLMNPQR', 'STUVWXYZ'];
+    utmrow = 'ABCDEFGHJKLMNPQRSTUV';
+  end
   mgrs = char(zeros(length(x), 5 + 2 * prec) + ' ');
   if isempty(x), return, end
   mgrs(:,1) = '0' + floor(zone / 10);
@@ -101,12 +108,9 @@ function mgrs = mgrs_fwd_utm(x, y, zone, prec)
   bande =  LatitudeBand(late);
   c = band ~= bande;
   band(c) = LatitudeBand(utmups_inv(x(c), y(c), zone(c), 1));
-  latband = 'CDEFGHJKLMNPQRSTUVWX';
   mgrs(:,3) = latband(band + 11);
   if prec < 0, return, end
   xh = floor(x / 1e5); yh = floor(y / 1e5);
-  utmcols = ['ABCDEFGH', 'JKLMNPQR', 'STUVWXYZ'];
-  utmrow = 'ABCDEFGHJKLMNPQRSTUV';
   mgrs(:,4) = utmcols(mod(zone - 1, 3) * 8 + xh);
   mgrs(:,5) = utmrow(mod(yh + mod(zone - 1, 2) * 5, 20) + 1);
   if prec == 0, return, end
@@ -116,16 +120,19 @@ function mgrs = mgrs_fwd_utm(x, y, zone, prec)
 end
 
 function mgrs = mgrs_fwd_upsn(x, y, prec)
+  persistent upsband upscols upsrow
+  if isempty(upsrow)
+    upsband = 'YZ';
+    upscols = ['RSTUXYZ', 'ABCFGHJ'];
+    upsrow = 'ABCDEFGHJKLMNP';
+  end
   mgrs = char(zeros(length(x), 3 + 2 * prec) + ' ');
   if isempty(x), return, end
-  upsband = 'YZ';
   xh = floor(x / 1e5);
   eastp = xh >= 20;
   mgrs(:,1) = upsband(eastp + 1);
   if prec < 0, return, end
   yh = floor(y / 1e5);
-  upscols = ['RSTUXYZ', 'ABCFGHJ'];
-  upsrow = 'ABCDEFGHJKLMNP';
   mgrs(:,2) = upscols(eastp * 7 + xh - cvmgt(20, 13, eastp) + 1);
   mgrs(:,3) = upsrow(yh - 13 + 1);
   if prec == 0, return, end
@@ -135,16 +142,19 @@ function mgrs = mgrs_fwd_upsn(x, y, prec)
 end
 
 function mgrs = mgrs_fwd_upss(x, y, prec)
+  persistent upsband upscols upsrow
+  if isempty(upsrow)
+    upsband = 'AB';
+    upscols = ['JKLPQRSTUXYZ', 'ABCFGHJKLPQR'];
+    upsrow = 'ABCDEFGHJKLMNPQRSTUVWXYZ';
+  end
   mgrs = char(zeros(length(x), 3 + 2 * prec) + ' ');
   if isempty(x), return, end
-  upsband = 'AB';
   xh = floor(x / 1e5);
   eastp = xh >= 20;
   mgrs(:,1) = upsband(eastp + 1);
   if prec < 0, return, end
   yh = floor(y / 1e5);
-  upscols = ['JKLPQRSTUXYZ', 'ABCFGHJKLPQR'];
-  upsrow = 'ABCDEFGHJKLMNPQRSTUVWXYZ';
   mgrs(:,2) = upscols(eastp * 12 + xh - cvmgt(20, 8, eastp) + 1);
   mgrs(:,3) = upsrow(yh - 8 + 1);
   if prec == 0, return, end
diff --git a/matlab/geographiclib/mgrs_inv.m b/matlab/geographiclib/mgrs_inv.m
index 809a7d8..4547101 100644
--- a/matlab/geographiclib/mgrs_inv.m
+++ b/matlab/geographiclib/mgrs_inv.m
@@ -1,37 +1,49 @@
-function [x, y, zone, isnorth, prec] = mgrs_inv(mgrs)
+function [x, y, zone, isnorth, prec] = mgrs_inv(mgrs, center)
 %MGRS_INV  Convert MGRS to UTM/UPS coordinates
 %
 %   [x, y, zone, isnorth] = MGRS_INV(mgrs)
-%   [x, y, zone, isnorth, prec] = MGRS_INV(mgrs)
+%   [x, y, zone, isnorth, prec] = MGRS_INV(mgrs, center)
 %
 %   converts MGRS grid references to the UTM/UPS system.  mgrs is either a
-%   2d character array of MGRS grid references (optionally padded on the
-%   right with spaces) or a cell array of character strings.  (x,y) are the
+%   2d character array of MGRS grid references or a cell array of character
+%   strings; leading and trailing white space is ignored.  (x,y) are the
 %   easting and northing (in meters); zone is the UTM zone in [1,60] or 0
 %   for UPS; isnorth is 1 (0) for the northern (southern) hemisphere.  prec
-%   is the precision of the grid reference.  For prec >= 0, the position of
-%   the center of the grid square is returned.  To obtain the SW corner
-%   subtract 0.5 * 10^(5-prec) from the easting and northing.  prec = -1
-%   means that the grid reference consists of a grid zone only; in this
-%   case some representative position in the grid zone is returned.
+%   is the precision of the grid reference, i.e., 1/2 the number of
+%   trailing digits; for example 38SMB4488 has prec = 2 (denoting a 1 km
+%   square).  If center = 1 (the default), then for prec >= 0, the position
+%   of the center of the grid square is returned; to obtain the SW corner
+%   subtract 0.5 * 10^(5-prec) from the easting and northing.  If center =
+%   0, then the SW corner is returned.  center must be a scalar.  prec = -1
+%   means that the grid reference consists of a grid zone, e.g., 38S, only;
+%   in this case some representative position in the grid zone is returned.
 %   Illegal MGRS references result in x = y = NaN, zone = -4, isnorth = 0,
-%   prec = -2.  The inverse operation is performed by mgrs_fwd.
+%   prec = -2.  The forward operation is performed by mgrs_fwd.
 %
 %   See also MGRS_FWD, UTMUPS_INV.
 
 % Copyright (c) Charles Karney (2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
 
+  narginchk(1, 2)
+  if nargin < 2
+    center = true;
+  else
+    center = logical(center);
+  end
   if ischar(mgrs)
     mgrs = cellstr(mgrs);
   end
   if iscell(mgrs)
     s = size(mgrs);
-    mgrs = char(deblank(mgrs));
+    mgrs = char(strtrim(mgrs));
   else
     error('mgrs must be cell array of strings or 2d char array')
   end
+  if ~isscalar(center)
+    error('center must if a scalar logical')
+  end
   mgrs = upper(mgrs);
   num = size(mgrs, 1);
   x = nan(num, 1); y = x; prec = -2 * ones(num, 1);
@@ -48,36 +60,42 @@ function [x, y, zone, isnorth, prec] = mgrs_inv(mgrs)
   upss = (mgrs(:,1) == 'A' | mgrs(:,1) == 'B') & contig;
   upsn = (mgrs(:,1) == 'Y' | mgrs(:,1) == 'Z') & contig;
   [x(utm), y(utm), zone(utm), isnorth(utm), prec(utm)] = ...
-      mgrs_inv_utm(mgrs(utm,:));
+      mgrs_inv_utm(mgrs(utm,:), center);
   [x(upsn), y(upsn), zone(upsn), isnorth(upsn), prec(upsn)] = ...
-      mgrs_inv_upsn(mgrs(upsn,:));
+      mgrs_inv_upsn(mgrs(upsn,:), center);
   [x(upss), y(upss), zone(upss), isnorth(upss), prec(upss)] = ...
-      mgrs_inv_upss(mgrs(upss,:));
+      mgrs_inv_upss(mgrs(upss,:), center);
   x = reshape(x, s); y = reshape(y, s); prec = reshape(prec, s);
   isnorth = reshape(isnorth, s); zone = reshape(zone, s);
 end
 
-function [x, y, zone, northp, prec] = mgrs_inv_utm(mgrs)
+function [x, y, zone, northp, prec] = mgrs_inv_utm(mgrs, center)
+  persistent latband utmcols utmrow
+  if isempty(utmrow)
+    latband = 'CDEFGHJKLMNPQRSTUVWX';
+    utmcols = ['ABCDEFGH', 'JKLMNPQR', 'STUVWXYZ'];
+    utmrow = 'ABCDEFGHJKLMNPQRSTUV';
+  end
   zone = (mgrs(:,1) - '0') * 10 + (mgrs(:,2) - '0');
   ok = zone > 0 & zone <= 60;
-  band = lookup('CDEFGHJKLMNPQRSTUVWX', mgrs(:,3));
+  band = lookup(latband, mgrs(:,3));
   ok = ok & band >= 0;
   band = band - 10;
   northp = band >= 0;
-  colind = lookup(['ABCDEFGH', 'JKLMNPQR', 'STUVWXYZ'], mgrs(:, 4)) - ...
+  colind = lookup(utmcols, mgrs(:, 4)) - ...
            mod(zone - 1, 3) * 8;
   % good values in [0,8), bad values = -1
   colind(colind >= 8) = -1;
-  rowind = lookup('ABCDEFGHJKLMNPQRSTUV', mgrs(:, 5));
+  rowind = lookup(utmrow, mgrs(:, 5));
   even = mod(zone, 2) == 0;
   bad = rowind < 0;
   rowind(even) = mod(rowind(even) - 5, 20);
   % good values in [0,20), bad values = -1
   rowind(bad) = -1;
-  [x, y, prec] = decodexy(mgrs(:, 6:end));
+  [x, y, prec] = decodexy(mgrs(:, 6:end), center);
   prec(mgrs(:,4) == ' ') = -1;
   ok = ok & (prec == -1 | (colind >= 0 & rowind >= 0));
-  rowind = utmrow(band, colind, rowind);
+  rowind = fixutmrow(band, colind, rowind);
   colind = colind + 1;
   x = colind * 1e5 + x;
   y = rowind * 1e5 + y + (1-northp) * 100e5;
@@ -93,16 +111,22 @@ function [x, y, zone, northp, prec] = mgrs_inv_utm(mgrs)
   prec(~ok) = -2;
 end
 
-function [x, y, zone, northp, prec] = mgrs_inv_upsn(mgrs)
+function [x, y, zone, northp, prec] = mgrs_inv_upsn(mgrs, center)
+  persistent upsband upscols upsrow
+  if isempty(upsrow)
+    upsband = 'YZ';
+    upscols = ['RSTUXYZ', 'ABCFGHJ'];
+    upsrow = 'ABCDEFGHJKLMNP';
+  end
   zone = zeros(size(mgrs,1),1);
   ok = zone == 0;
   northp = ok;
-  eastp = lookup('YZ', mgrs(:,1));
+  eastp = lookup(upsband, mgrs(:,1));
   ok = ok & eastp >= 0;
-  colind = lookup(['RSTUXYZ', 'ABCFGHJ'], mgrs(:, 2));
+  colind = lookup(upscols, mgrs(:, 2));
   ok = ok & (colind < 0 | mod(floor(colind / 7) + eastp, 2) == 0);
-  rowind = lookup('ABCDEFGHJKLMNP', mgrs(:, 3));
-  [x, y, prec] = decodexy(mgrs(:, 4:end));
+  rowind = lookup(upsrow, mgrs(:, 3));
+  [x, y, prec] = decodexy(mgrs(:, 4:end), center);
   prec(mgrs(:,2) == ' ') = -1;
   ok = ok & (prec == -1 | (colind >= 0 & rowind >= 0));
   x = (colind + 13) * 1e5 + x;
@@ -117,19 +141,26 @@ function [x, y, zone, northp, prec] = mgrs_inv_upsn(mgrs)
   prec(~ok) = -2;
 end
 
-function [x, y, zone, northp, prec] = mgrs_inv_upss(mgrs)
+function [x, y, zone, northp, prec] = mgrs_inv_upss(mgrs, center)
+  persistent upsband upscolA upscolB upsrow
+  if isempty(upsrow)
+    upsband = 'AB';
+    upscolA = 'JKLPQRSTUXYZ';
+    upscolB = 'ABCFGHJKLPQR';
+    upsrow = 'ABCDEFGHJKLMNPQRSTUVWXYZ';
+  end
   zone = zeros(size(mgrs,1),1);
   ok = zone == 0;
   northp = ~ok;
-  eastp = lookup('AB', mgrs(:,1));
+  eastp = lookup(upsband, mgrs(:,1));
   ok = ok & eastp >= 0;
   eastp = eastp > 0;
-  colind = lookup('JKLPQRSTUXYZ', mgrs(:, 2));
-  colind(eastp) = lookup('ABCFGHJKLPQR', mgrs(eastp, 2)) + 12;
+  colind = lookup(upscolA, mgrs(:, 2));
+  colind(eastp) = lookup(upscolB, mgrs(eastp, 2)) + 12;
   colind(eastp & colind < 12) = -1;
   ok = ok & (colind < 0 | mod(floor(colind / 12) + eastp, 2) == 0);
-  rowind = lookup('ABCDEFGHJKLMNPQRSTUVWXYZ', mgrs(:, 3));
-  [x, y, prec] = decodexy(mgrs(:, 4:end));
+  rowind = lookup(upsrow, mgrs(:, 3));
+  [x, y, prec] = decodexy(mgrs(:, 4:end), center);
   prec(mgrs(:,2) == ' ') = -1;
   ok = ok & (prec == -1 | (colind >= 0 & rowind >= 0));
   x = (colind + 8) * 1e5 + x;
@@ -143,7 +174,7 @@ function [x, y, zone, northp, prec] = mgrs_inv_upss(mgrs)
   prec(~ok) = -2;
 end
 
-function [x, y, prec] = decodexy(xy)
+function [x, y, prec] = decodexy(xy, center)
   num = size(xy, 1);
   x = nan(num, 1); y = x;
   len = strlen(xy);
@@ -156,12 +187,13 @@ function [x, y, prec] = decodexy(xy)
   minprec = max(1,min(prec(ok))); maxprec = max(prec(ok));
   for p = minprec:maxprec
     m = 1e5 / 10^p;
-    x(prec == p) = str2double(cellstr(xy(prec == p, 0+(1:p)))) * m + m/2;
-    y(prec == p) = str2double(cellstr(xy(prec == p, p+(1:p)))) * m + m/2;
+    cent = center * m/2;
+    x(prec == p) = str2double(cellstr(xy(prec == p, 0+(1:p)))) * m + cent;
+    y(prec == p) = str2double(cellstr(xy(prec == p, p+(1:p)))) * m + cent;
   end
 end
 
-function irow = utmrow(iband, icol, irow)
+function irow = fixutmrow(iband, icol, irow)
 % Input is MGRS (periodic) row index and output is true row index.  Band
 % index is in [-10, 10) (as returned by LatitudeBand).  Column index
 % origin is easting = 100km.  Returns 100  if irow and iband are
@@ -175,7 +207,7 @@ function irow = utmrow(iband, icol, irow)
   maxrow = cvmgt(floor(c + 4.4 - 0.1 * northp),  94, iband <   9);
   baserow = floor((minrow + maxrow) / 2) - 10;
   irow = mod(irow - baserow, 20) + baserow;
-  fix = irow < minrow | irow > maxrow;
+  fix = ~(irow >= minrow & irow <= maxrow);
   if ~any(fix), return, end
   % Northing = 71*100km and 80*100km intersect band boundaries
   % The following deals with these special cases.
@@ -204,7 +236,8 @@ function len = strlen(strings)
 end
 
 function ind = lookup(str, test)
-% str is uppercase row string to look up in. test is col array to lookup
+% str is uppercase row string to look up in. test is col array to
+% lookup.  Result is zero-based index or -1 if not found.
   q = str - 'A' + 1;
   t = zeros(27,1);
   t(q) = cumsum(ones(length(q),1));
diff --git a/matlab/geographiclib/polarst_fwd.m b/matlab/geographiclib/polarst_fwd.m
index 49ccc1a..48fa39c 100644
--- a/matlab/geographiclib/polarst_fwd.m
+++ b/matlab/geographiclib/polarst_fwd.m
@@ -10,8 +10,9 @@ function [x, y, gam, k] = polarst_fwd(isnorth, lat, lon, ellipsoid)
 %   arrays of equal size.  The ellipsoid vector is of the form [a, e],
 %   where a is the equatorial radius in meters, e is the eccentricity.  If
 %   ellipsoid is omitted, the WGS84 ellipsoid (more precisely, the value
-%   returned by defaultellipsoid) is used.  The inverse projection is given
-%   by polarst_inv.
+%   returned by defaultellipsoid) is used.  projdoc defines the projection
+%   and gives the restrictions on the allowed ranges of the arguments.  The
+%   inverse projection is given by polarst_inv.
 %
 %   gam and k give metric properties of the projection at (lat,lon); gam is
 %   the meridian convergence at the point and k is the scale.
@@ -20,7 +21,8 @@ function [x, y, gam, k] = polarst_fwd(isnorth, lat, lon, ellipsoid)
 %   meters (more precisely the units used for the equatorial radius).  k is
 %   dimensionless.
 %
-%   See also POLARST_INV, UTMUPS_FWD, UTMUPS_INV, DEFAULTELLIPSOID.
+%   See also PROJDOC, POLARST_INV, UTMUPS_FWD, UTMUPS_INV,
+%     DEFAULTELLIPSOID.
 
 % Copyright (c) Charles Karney (2015) <charles at karney.com>.
 %
diff --git a/matlab/geographiclib/polarst_inv.m b/matlab/geographiclib/polarst_inv.m
index f8f1263..e8b5f01 100644
--- a/matlab/geographiclib/polarst_inv.m
+++ b/matlab/geographiclib/polarst_inv.m
@@ -10,8 +10,9 @@ function [lat, lon, gam, k] = polarst_inv(isnorth, x, y, ellipsoid)
 %   arrays of equal size.  The ellipsoid vector is of the form [a, e],
 %   where a is the equatorial radius in meters, e is the eccentricity.  If
 %   ellipsoid is omitted, the WGS84 ellipsoid (more precisely, the value
-%   returned by defaultellipsoid) is used.  The forward projection is given
-%   by polarst_fwd.
+%   returned by defaultellipsoid) is used.  projdoc defines the projection
+%   and gives the restrictions on the allowed ranges of the arguments.  The
+%   forward projection is given by polarst_fwd.
 %
 %   gam and k give metric properties of the projection at (lat,lon); gam is
 %   the meridian convergence at the point and k is the scale.
@@ -20,7 +21,8 @@ function [lat, lon, gam, k] = polarst_inv(isnorth, x, y, ellipsoid)
 %   meters (more precisely the units used for the equatorial radius).  k is
 %   dimensionless.
 %
-%   See also POLARST_FWD, UTMUPS_FWD, UTMUPS_INV, DEFAULTELLIPSOID.
+%   See also PROJDOC, POLARST_FWD, UTMUPS_FWD, UTMUPS_INV,
+%     DEFAULTELLIPSOID.
 
 % Copyright (c) Charles Karney (2015) <charles at karney.com>.
 %
diff --git a/matlab/geographiclib/private/A1m1f.m b/matlab/geographiclib/private/A1m1f.m
index 4522820..512af63 100644
--- a/matlab/geographiclib/private/A1m1f.m
+++ b/matlab/geographiclib/private/A1m1f.m
@@ -4,7 +4,13 @@ function A1m1 = A1m1f(epsi)
 %   A1m1 = A1M1F(epsi) evaluates A_1 - 1 using Eq. (17).  epsi and A1m1 are
 %   K x 1 arrays.
 
+  persistent coeff
+  if isempty(coeff)
+    coeff = [ ...
+        1, 4, 64, 0, 256, ...
+            ];
+  end
   eps2 = epsi.^2;
-  t = eps2.*(eps2.*(eps2+4)+64)/256;
+  t = polyval(coeff(1 : end - 1), eps2) / coeff(end);
   A1m1 = (t + epsi) ./ (1 - epsi);
 end
diff --git a/matlab/geographiclib/private/A2m1f.m b/matlab/geographiclib/private/A2m1f.m
index 3d6179e..dff4099 100644
--- a/matlab/geographiclib/private/A2m1f.m
+++ b/matlab/geographiclib/private/A2m1f.m
@@ -4,7 +4,13 @@ function A2m1 = A2m1f(epsi)
 %   A2m1 = A2M1F(epsi) evaluates A_2 - 1 using Eq. (42).  epsi and A2m1 are
 %   K x 1 arrays.
 
+  persistent coeff
+  if isempty(coeff)
+    coeff = [ ...
+        25, 36, 64, 0, 256, ...
+            ];
+  end
   eps2 = epsi.^2;
-  t = eps2.*(eps2.*(25*eps2+36)+64)/256;
+  t = polyval(coeff(1 : end - 1), eps2) / coeff(end);
   A2m1 = t .* (1 - epsi) - epsi;
 end
diff --git a/matlab/geographiclib/private/A3coeff.m b/matlab/geographiclib/private/A3coeff.m
index 99f66b5..6c6540f 100644
--- a/matlab/geographiclib/private/A3coeff.m
+++ b/matlab/geographiclib/private/A3coeff.m
@@ -4,12 +4,25 @@ function A3x = A3coeff(n)
 %   A3x = A3COEFF(n) evaluates the coefficients of epsilon^l in Eq. (24).
 %   n is a scalar.  A3x is a 1 x 6 array.
 
-  nA3 = 6;
+  persistent coeff nA3
+  if isempty(coeff)
+    nA3 = 6;
+    coeff = [ ...
+        -3, 128, ...
+        -2, -3, 64, ...
+        -1, -3, -1, 16, ...
+        3, -1, -2, 8, ...
+        1, -1, 2, ...
+        1, 1, ...
+            ];
+  end
   A3x = zeros(1, nA3);
-  A3x(0+1) = 1;
-  A3x(1+1) = (n-1)/2;
-  A3x(2+1) = (n*(3*n-1)-2)/8;
-  A3x(3+1) = ((-n-3)*n-1)/16;
-  A3x(4+1) = (-2*n-3)/64;
-  A3x(5+1) = -3/128;
+  o = 1;
+  k = 1;
+  for j = nA3 - 1 : -1 : 0
+    m = min(nA3 - j - 1, j);
+    A3x(k) = polyval(coeff(o : o + m), n) / coeff(o + m + 1);
+    k = k + 1;
+    o = o + m + 2;
+  end
 end
diff --git a/matlab/geographiclib/private/A3f.m b/matlab/geographiclib/private/A3f.m
index be9fed9..de69801 100644
--- a/matlab/geographiclib/private/A3f.m
+++ b/matlab/geographiclib/private/A3f.m
@@ -4,9 +4,5 @@ function A3 = A3f(epsi, A3x)
 %   A3 = A3F(epsi, A3x) evaluates A_3 using Eq. (24) and the coefficient
 %   vector A3x.  epsi and A3 are K x 1 arrays.  A3x is a 1 x 6 array.
 
-  nA3 = 6;
-  A3 = zeros(length(epsi), 1);
-  for i = nA3 : -1 : 1
-    A3 = epsi .* A3 + A3x(i);
-  end
+  A3 = polyval(A3x, epsi);
 end
diff --git a/matlab/geographiclib/private/AngRound.m b/matlab/geographiclib/private/AngRound.m
index 7e5623c..4ce7aa3 100644
--- a/matlab/geographiclib/private/AngRound.m
+++ b/matlab/geographiclib/private/AngRound.m
@@ -7,5 +7,5 @@ function y = AngRound(x)
   z = 1/16;
   y = abs(x);
   y(y < z) = z - (z - y(y < z));
-  y(x < 0) = -y(x < 0);
+  y(x < 0) = 0 - y(x < 0);
 end
diff --git a/matlab/geographiclib/private/C1f.m b/matlab/geographiclib/private/C1f.m
index d0e5cb1..d5e298d 100644
--- a/matlab/geographiclib/private/C1f.m
+++ b/matlab/geographiclib/private/C1f.m
@@ -4,19 +4,26 @@ function C1 = C1f(epsi)
 %   C1 = C1F(epsi) evaluates C_{1,l} using Eq. (18).  epsi is a K x 1
 %   array and C1 is a K x 6 array.
 
-  nC1 = 6;
+  persistent coeff nC1
+  if isempty(coeff)
+    nC1 = 6;
+    coeff = [ ...
+        -1, 6, -16, 32, ...
+        -9, 64, -128, 2048, ...
+        9, -16, 768, ...
+        3, -5, 512, ...
+        -7, 1280, ...
+        -7, 2048, ...
+            ];
+  end
   C1 = zeros(length(epsi), nC1);
   eps2 = epsi.^2;
   d = epsi;
-  C1(:,1) = d.*((6-eps2).*eps2-16)/32;
-  d = d.*epsi;
-  C1(:,2) = d.*((64-9*eps2).*eps2-128)/2048;
-  d = d.*epsi;
-  C1(:,3) = d.*(9*eps2-16)/768;
-  d = d.*epsi;
-  C1(:,4) = d.*(3*eps2-5)/512;
-  d = d.*epsi;
-  C1(:,5) = -7*d/1280;
-  d = d.*epsi;
-  C1(:,6) = -7*d/2048;
+  o = 1;
+  for  l = 1 : nC1
+    m = floor((nC1 - l) / 2);
+    C1(:,l) = d .* polyval(coeff(o : o + m), eps2) / coeff(o + m + 1);
+    o = o + m + 2;
+    d = d .* epsi;
+  end
 end
diff --git a/matlab/geographiclib/private/C1pf.m b/matlab/geographiclib/private/C1pf.m
index 221e9bf..0f1b4d7 100644
--- a/matlab/geographiclib/private/C1pf.m
+++ b/matlab/geographiclib/private/C1pf.m
@@ -4,19 +4,26 @@ function C1p = C1pf(epsi)
 %   C1p = C1PF(epsi) evaluates C'_{1,l} using Eq. (21).  epsi is an
 %   K x 1 array and C1 is a K x 6 array.
 
-  nC1p = 6;
+  persistent coeff nC1p
+  if isempty(coeff)
+    nC1p = 6;
+    coeff = [ ...
+        205, -432, 768, 1536, ...
+        4005, -4736, 3840, 12288, ...
+        -225, 116, 384, ...
+        -7173, 2695, 7680, ...
+        3467, 7680, ...
+        38081, 61440, ...
+            ];
+  end
   C1p = zeros(length(epsi), nC1p);
   eps2 = epsi.^2;
   d = epsi;
-  C1p(:,1) = d.*(eps2.*(205*eps2-432)+768)/1536;
-  d = d.*epsi;
-  C1p(:,2) = d.*(eps2.*(4005*eps2-4736)+3840)/12288;
-  d = d.*epsi;
-  C1p(:,3) = d.*(116-225*eps2)/384;
-  d = d.*epsi;
-  C1p(:,4) = d.*(2695-7173*eps2)/7680;
-  d = d.*epsi;
-  C1p(:,5) = 3467*d/7680;
-  d = d.*epsi;
-  C1p(:,6) = 38081*d/61440;
+  o = 1;
+  for  l = 1 : nC1p
+    m = floor((nC1p - l) / 2);
+    C1p(:,l) = d .* polyval(coeff(o : o + m), eps2) / coeff(o + m + 1);
+    o = o + m + 2;
+    d = d .* epsi;
+  end
 end
diff --git a/matlab/geographiclib/private/C2f.m b/matlab/geographiclib/private/C2f.m
index 9678e60..bc62f8d 100644
--- a/matlab/geographiclib/private/C2f.m
+++ b/matlab/geographiclib/private/C2f.m
@@ -4,19 +4,26 @@ function C2 = C2f(epsi)
 %   C2 = C2F(epsi) evaluates C_{2,l} using Eq. (43).  epsi is an
 %   K x 1 array and C2 is a K x 6 array.
 
-  nC2 = 6;
+  persistent coeff nC2
+  if isempty(coeff)
+    nC2 = 6;
+    coeff = [ ...
+        1, 2, 16, 32, ...
+        35, 64, 384, 2048, ...
+        15, 80, 768, ...
+        7, 35, 512, ...
+        63, 1280, ...
+        77, 2048, ...
+            ];
+  end
   C2 = zeros(length(epsi), nC2);
   eps2 = epsi.^2;
   d = epsi;
-  C2(:,1) = d.*(eps2.*(eps2+2)+16)/32;
-  d = d.*epsi;
-  C2(:,2) = d.*(eps2.*(35*eps2+64)+384)/2048;
-  d = d.*epsi;
-  C2(:,3) = d.*(15*eps2+80)/768;
-  d = d.*epsi;
-  C2(:,4) = d.*(7*eps2+35)/512;
-  d = d.*epsi;
-  C2(:,5) = 63*d/1280;
-  d = d.*epsi;
-  C2(:,6) = 77*d/2048;
+  o = 1;
+  for l = 1 : nC2
+    m = floor((nC2 - l) / 2);
+    C2(:, l) = d .* polyval(coeff(o : o + m), eps2) / coeff(o + m + 1);
+    o = o + m + 2;
+    d = d .* epsi;
+  end
 end
diff --git a/matlab/geographiclib/private/C3coeff.m b/matlab/geographiclib/private/C3coeff.m
index 6361e70..75472bc 100644
--- a/matlab/geographiclib/private/C3coeff.m
+++ b/matlab/geographiclib/private/C3coeff.m
@@ -4,22 +4,37 @@ function C3x = C3coeff(n)
 %   C3x = C3COEFF(n) evaluates the coefficients of epsilon^l in Eq. (25).
 %   n is a scalar.  C3x is a 1 x 15 array.
 
-  nC3 = 6;
-  nC3x = (nC3 * (nC3 - 1)) / 2;
+  persistent coeff nC3 nC3x
+  if isempty(coeff)
+    nC3 = 6;
+    nC3x = (nC3 * (nC3 - 1)) / 2;
+    coeff = [ ...
+        3, 128, ...
+        2, 5, 128, ...
+        -1, 3, 3, 64, ...
+        -1, 0, 1, 8, ...
+        -1, 1, 4, ...
+        5, 256, ...
+        1, 3, 128, ...
+        -3, -2, 3, 64, ...
+        1, -3, 2, 32, ...
+        7, 512, ...
+        -10, 9, 384, ...
+        5, -9, 5, 192, ...
+        7, 512, ...
+        -14, 7, 512, ...
+        21, 2560, ...
+            ];
+  end
   C3x = zeros(1, nC3x);
-  C3x(0+1) = (1-n)/4;
-  C3x(1+1) = (1-n*n)/8;
-  C3x(2+1) = ((3-n)*n+3)/64;
-  C3x(3+1) = (2*n+5)/128;
-  C3x(4+1) = 3/128;
-  C3x(5+1) = ((n-3)*n+2)/32;
-  C3x(6+1) = ((-3*n-2)*n+3)/64;
-  C3x(7+1) = (n+3)/128;
-  C3x(8+1) = 5/256;
-  C3x(9+1) = (n*(5*n-9)+5)/192;
-  C3x(10+1) = (9-10*n)/384;
-  C3x(11+1) = 7/512;
-  C3x(12+1) = (7-14*n)/512;
-  C3x(13+1) = 7/512;
-  C3x(14+1) = 21/2560;
+  o = 1;
+  k = 1;
+  for l = 1 : nC3 - 1
+    for j = nC3 - 1 : -1 : l
+      m = min(nC3 - j - 1, j);
+      C3x(k) = polyval(coeff(o : o + m), n) / coeff(o + m + 1);
+      k = k + 1;
+      o = o + m + 2;
+    end
+  end
 end
diff --git a/matlab/geographiclib/private/C3f.m b/matlab/geographiclib/private/C3f.m
index 11bf1b2..b83b458 100644
--- a/matlab/geographiclib/private/C3f.m
+++ b/matlab/geographiclib/private/C3f.m
@@ -6,20 +6,13 @@ function C3 = C3f(epsi, C3x)
 %   C3 is a K x 5 array.
 
   nC3 = 6;
-  nC3x = size(C3x, 2);
-  j = nC3x;
   C3 = zeros(length(epsi), nC3 - 1);
-  for k = nC3 - 1 : -1 : 1
-    t = C3(:, k);
-    for i = nC3 - k : -1 : 1
-      t = epsi .* t + C3x(j);
-      j = j - 1;
-    end
-    C3(:, k) = t;
-  end
-  mult = ones(length(epsi), 1);
-  for k = 1 : nC3 - 1
+  mult = 1;
+  o = 1;
+  for l = 1 : nC3 - 1
+    m = nC3 - l - 1;
     mult = mult .* epsi;
-    C3(:, k) = C3(:, k) .* mult;
+    C3(:, l) = mult .* polyval(C3x(o : o + m), epsi);
+    o = o + m + 1;
   end
 end
diff --git a/matlab/geographiclib/private/C4coeff.m b/matlab/geographiclib/private/C4coeff.m
index 812618e..e97641d 100644
--- a/matlab/geographiclib/private/C4coeff.m
+++ b/matlab/geographiclib/private/C4coeff.m
@@ -5,28 +5,43 @@ function C4x = C4coeff(n)
 %   of the area (Eq. (65) expressed in terms of n and epsi).  n is a
 %   scalar.  C4x is a 1 x 21 array.
 
-  nC4 = 6;
-  nC4x = (nC4 * (nC4 + 1)) / 2;
+  persistent coeff nC4 nC4x
+  if isempty(coeff)
+    nC4 = 6;
+    nC4x = (nC4 * (nC4 + 1)) / 2;
+    coeff = [ ...
+        97, 15015, ...
+        1088, 156, 45045, ...
+        -224, -4784, 1573, 45045, ...
+        -10656, 14144, -4576, -858, 45045, ...
+        64, 624, -4576, 6864, -3003, 15015, ...
+        100, 208, 572, 3432, -12012, 30030, 45045, ...
+        1, 9009, ...
+        -2944, 468, 135135, ...
+        5792, 1040, -1287, 135135, ...
+        5952, -11648, 9152, -2574, 135135, ...
+        -64, -624, 4576, -6864, 3003, 135135, ...
+        8, 10725, ...
+        1856, -936, 225225, ...
+        -8448, 4992, -1144, 225225, ...
+        -1440, 4160, -4576, 1716, 225225, ...
+        -136, 63063, ...
+        1024, -208, 105105, ...
+        3584, -3328, 1144, 315315, ...
+        -128, 135135, ...
+        -2560, 832, 405405, ...
+        128, 99099, ...
+            ];
+  end
   C4x = zeros(1, nC4x);
-  C4x(0+1) = (n*(n*(n*(n*(100*n+208)+572)+3432)-12012)+30030)/45045;
-  C4x(1+1) = (n*(n*(n*(64*n+624)-4576)+6864)-3003)/15015;
-  C4x(2+1) = (n*((14144-10656*n)*n-4576)-858)/45045;
-  C4x(3+1) = ((-224*n-4784)*n+1573)/45045;
-  C4x(4+1) = (1088*n+156)/45045;
-  C4x(5+1) = 97/15015;
-  C4x(6+1) = (n*(n*((-64*n-624)*n+4576)-6864)+3003)/135135;
-  C4x(7+1) = (n*(n*(5952*n-11648)+9152)-2574)/135135;
-  C4x(8+1) = (n*(5792*n+1040)-1287)/135135;
-  C4x(9+1) = (468-2944*n)/135135;
-  C4x(10+1) = 1/9009;
-  C4x(11+1) = (n*((4160-1440*n)*n-4576)+1716)/225225;
-  C4x(12+1) = ((4992-8448*n)*n-1144)/225225;
-  C4x(13+1) = (1856*n-936)/225225;
-  C4x(14+1) = 8/10725;
-  C4x(15+1) = (n*(3584*n-3328)+1144)/315315;
-  C4x(16+1) = (1024*n-208)/105105;
-  C4x(17+1) = -136/63063;
-  C4x(18+1) = (832-2560*n)/405405;
-  C4x(19+1) = -128/135135;
-  C4x(20+1) = 128/99099;
+  o = 1;
+  k = 1;
+  for l = 0 : nC4 - 1
+    for j = nC4 - 1 : -1 : l
+      m = nC4 - j - 1;
+      C4x(k) = polyval(coeff(o : o + m), n) / coeff(o + m + 1);
+      k = k + 1;
+      o = o + m + 2;
+    end
+  end
 end
diff --git a/matlab/geographiclib/private/C4f.m b/matlab/geographiclib/private/C4f.m
index dde7a8e..a8500df 100644
--- a/matlab/geographiclib/private/C4f.m
+++ b/matlab/geographiclib/private/C4f.m
@@ -7,20 +7,13 @@ function C4 = C4f(epsi, C4x)
 %   K x 6 array.
 
   nC4 = 6;
-  nC4x = size(C4x, 2);
-  j = nC4x;
   C4 = zeros(length(epsi), nC4);
-  for k = nC4 : -1 : 1
-    t = C4(:, k);
-    for i = nC4 - k : -1 : 0
-      t = epsi .* t + C4x(j);
-      j = j - 1;
-    end
-    C4(:, k) = t;
-  end
-  mult = ones(length(epsi), 1);
-  for k = 2 : nC4
+  mult = 1;
+  o = 1;
+  for l = 0 : nC4 - 1
+    m = nC4 - l - 1;
+    C4(:, l+1) = mult .* polyval(C4x(o : o + m), epsi);
+    o = o + m + 1;
     mult = mult .* epsi;
-    C4(:, k) = C4(:, k) .* mult;
   end
 end
diff --git a/matlab/geographiclib/private/G4coeff.m b/matlab/geographiclib/private/G4coeff.m
index 970c900..9a1fe51 100644
--- a/matlab/geographiclib/private/G4coeff.m
+++ b/matlab/geographiclib/private/G4coeff.m
@@ -5,28 +5,43 @@ function G4x = G4coeff(n)
 %   of the greate ellipse area (expressed in terms of n and epsi).  n is a
 %   scalar.  G4x is a 1 x 21 array.
 
-  nG4 = 6;
-  nG4x = (nG4 * (nG4 + 1)) / 2;
+  persistent coeff nG4 nG4x
+  if isempty(coeff)
+    nG4 = 6;
+    nG4x = (nG4 * (nG4 + 1)) / 2;
+    coeff = [ ...
+        -13200233, 1537536, ...
+        138833443, 13938873, 5765760, ...
+        -135037988, -32774196, -4232371, 5765760, ...
+        6417449, 3013374, 1012583, 172458, 720720, ...
+        -117944, -110552, -84227, -41184, -9009, 120120, ...
+        200, 416, 1144, 6864, 21021, 15015, 90090, ...
+        2625577, 1537536, ...
+        -39452953, -3753828, 8648640, ...
+        71379996, 16424252, 1987557, 17297280, ...
+        -5975241, -2676466, -847847, -136422, 4324320, ...
+        117944, 110552, 84227, 41184, 9009, 1081080, ...
+        -5512967, 15375360, ...
+        2443153, 208182, 2882880, ...
+        -3634676, -741988, -76219, 5765760, ...
+        203633, 80106, 20735, 2574, 1441440, ...
+        22397, 439296, ...
+        -71477, -5317, 768768, ...
+        48020, 8372, 715, 1153152, ...
+        -5453, 1317888, ...
+        1407, 91, 329472, ...
+        21, 146432, ...
+            ];
+  end
   G4x = zeros(1, nG4x);
-  G4x(0+1) = (n*(n*(n*(n*(200*n+416)+1144)+6864)+21021)+15015)/90090;
-  G4x(1+1) = (n*(n*((-117944*n-110552)*n-84227)-41184)-9009)/120120;
-  G4x(2+1) = (n*(n*(6417449*n+3013374)+1012583)+172458)/720720;
-  G4x(3+1) = ((-135037988*n-32774196)*n-4232371)/5765760;
-  G4x(4+1) = (138833443*n+13938873)/5765760;
-  G4x(5+1) = -13200233/1537536;
-  G4x(6+1) = (n*(n*(n*(117944*n+110552)+84227)+41184)+9009)/1081080;
-  G4x(7+1) = (n*((-5975241*n-2676466)*n-847847)-136422)/4324320;
-  G4x(8+1) = (n*(71379996*n+16424252)+1987557)/17297280;
-  G4x(9+1) = (-39452953*n-3753828)/8648640;
-  G4x(10+1) = 2625577/1537536;
-  G4x(11+1) = (n*(n*(203633*n+80106)+20735)+2574)/1441440;
-  G4x(12+1) = ((-3634676*n-741988)*n-76219)/5765760;
-  G4x(13+1) = (2443153*n+208182)/2882880;
-  G4x(14+1) = -5512967/15375360;
-  G4x(15+1) = (n*(48020*n+8372)+715)/1153152;
-  G4x(16+1) = (-71477*n-5317)/768768;
-  G4x(17+1) = 22397/439296;
-  G4x(18+1) = (1407*n+91)/329472;
-  G4x(19+1) = -5453/1317888;
-  G4x(20+1) = 21/146432;
+  o = 1;
+  k = 1;
+  for l = 0 : nG4 - 1
+    for j = nG4 - 1 : -1 : l
+      m = nG4 - j - 1;
+      G4x(k) = polyval(coeff(o : o + m), n) / coeff(o + m + 1);
+      k = k + 1;
+      o = o + m + 2;
+    end
+  end
 end
diff --git a/matlab/geographiclib/private/GeoRotation.m b/matlab/geographiclib/private/GeoRotation.m
index 056192e..744e096 100644
--- a/matlab/geographiclib/private/GeoRotation.m
+++ b/matlab/geographiclib/private/GeoRotation.m
@@ -3,8 +3,8 @@ function M = GeoRotation(sphi, cphi, slam, clam)
 %
 %   M = GeoRotation(sphi, cphi, slam, clam)
 %
-%   sphi, cphi, slam, clam must all have the same shape, S.  M has the shape
-%   [3, 3, S].
+%   sphi, cphi, slam, clam must all have the same shape, S.  M has the
+%   shape [3, 3, S].
 
 % This rotation matrix is given by the following quaternion operations
 % qrot(lam, [0,0,1]) * qrot(phi, [0,-1,0]) * [1,1,1,1]/2
diff --git a/matlab/geographiclib/private/tauf.m b/matlab/geographiclib/private/tauf.m
index b408047..b1e4a7e 100644
--- a/matlab/geographiclib/private/tauf.m
+++ b/matlab/geographiclib/private/tauf.m
@@ -1,8 +1,9 @@
 function tau = tauf(taup, e2)
 %TAUF   tan(phi)
 %
-%   TAUF(taup, e2) returns tangent of phi in terms of taup the tangent of chi.
-%   e2, the square of the eccentricity, is a scalar; taup can be any shape.
+%   TAUF(taup, e2) returns tangent of phi in terms of taup the tangent of
+%   chi.  e2, the square of the eccentricity, is a scalar; taup can be any
+%   shape.
 
   numit = 5;
   e2m = 1 - e2;
diff --git a/matlab/geographiclib/private/taupf.m b/matlab/geographiclib/private/taupf.m
index 9d08571..726f310 100644
--- a/matlab/geographiclib/private/taupf.m
+++ b/matlab/geographiclib/private/taupf.m
@@ -1,8 +1,9 @@
 function taup = taupf(tau, e2)
 %TAUPF   tan(chi)
 %
-%   TAUPF(tau, e2) returns tangent of chi in terms of tau the tangent of phi.
-%   e2, the square of the eccentricity, is a scalar; taup can be any shape.
+%   TAUPF(tau, e2) returns tangent of chi in terms of tau the tangent of
+%   phi.  e2, the square of the eccentricity, is a scalar; taup can be any
+%   shape.
 
   tau1 = hypot(1, tau);
   sig = sinh( eatanhe( tau ./ tau1, e2 ) );
diff --git a/matlab/geographiclib/tranmerc_fwd.m b/matlab/geographiclib/tranmerc_fwd.m
index ac42614..28b2de7 100644
--- a/matlab/geographiclib/tranmerc_fwd.m
+++ b/matlab/geographiclib/tranmerc_fwd.m
@@ -9,9 +9,11 @@ function [x, y, gam, k] = tranmerc_fwd(lat0, lon0, lat, lon, ellipsoid)
 %   arguments can be scalars or arrays of equal size.  The ellipsoid vector
 %   is of the form [a, e], where a is the equatorial radius in meters, e is
 %   the eccentricity.  If ellipsoid is omitted, the WGS84 ellipsoid (more
-%   precisely, the value returned by defaultellipsoid) is used.  geodproj
-%   defines the projection and gives the restrictions on the allowed ranges
-%   of the arguments.  The inverse projection is given by tranmerc_inv.
+%   precisely, the value returned by defaultellipsoid) is used.  The common
+%   case of lat0 = 0 is treated efficiently provided that lat0 is specified
+%   as a scalar.  projdoc defines the projection and gives the restrictions
+%   on the allowed ranges of the arguments.  The inverse projection is
+%   given by tranmerc_inv.
 %
 %   gam and k give metric properties of the projection at (lat,lon); gam is
 %   the meridian convergence at the point and k is the scale.
@@ -34,11 +36,12 @@ function [x, y, gam, k] = tranmerc_fwd(lat0, lon0, lat, lon, ellipsoid)
 %   less than 1 mm within 7600 km of the central meridian).  The mapping
 %   can be continued accurately over the poles to the opposite meridian.
 %
-%   See also TRANMERC_INV, UTMUPS_FWD, UTMUPS_INV, DEFAULTELLIPSOID.
+%   See also PROJDOC, TRANMERC_INV, UTMUPS_FWD, UTMUPS_INV,
+%     DEFAULTELLIPSOID.
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
 
   narginchk(4, 5)
   if nargin < 5, ellipsoid = defaultellipsoid; end
@@ -137,19 +140,25 @@ function [x, y, gam, k] = tranmerc_fwd(lat0, lon0, lat, lon, ellipsoid)
 end
 
 function alp = alpf(n)
-  alp = zeros(1,6);
-  nx = n^2;
-
-  alp(1) = n*(n*(n*(n*(n*(31564*n-66675)+34440)+47250)-100800)+ ...
-              75600)/151200;
-  alp(2) = nx*(n*(n*((863232-1983433*n)*n+748608)-1161216)+524160)/ ...
-           1935360;
-  nx = nx * n;
-  alp(3) = nx*(n*(n*(670412*n+406647)-533952)+184464)/725760;
-  nx = nx * n;
-  alp(4) = nx*(n*(6601661*n-7732800)+2230245)/7257600;
-  nx = nx * n;
-  alp(5) = (3438171-13675556*n)*nx/7983360;
-  nx = nx * n;
-  alp(6) = 212378941*nx/319334400;
+  persistent alpcoeff
+  if isempty(alpcoeff)
+    alpcoeff = [ ...
+        31564, -66675, 34440, 47250, -100800, 75600, 151200, ...
+        -1983433, 863232, 748608, -1161216, 524160, 1935360, ...
+        670412, 406647, -533952, 184464, 725760, ...
+        6601661, -7732800, 2230245, 7257600, ...
+        -13675556, 3438171, 7983360, ...
+        212378941, 319334400, ...
+               ];
+  end
+  maxpow = 6;
+  alp = zeros(1, maxpow);
+  o = 1;
+  d = n;
+  for l = 1 : maxpow
+    m = maxpow - l;
+    alp(l) = d * polyval(alpcoeff(o : o + m), n) / alpcoeff(o + m + 1);
+    o = o + m + 2;
+    d = d * n;
+  end
 end
diff --git a/matlab/geographiclib/tranmerc_inv.m b/matlab/geographiclib/tranmerc_inv.m
index 68b81e1..23fd620 100644
--- a/matlab/geographiclib/tranmerc_inv.m
+++ b/matlab/geographiclib/tranmerc_inv.m
@@ -9,9 +9,11 @@ function [lat, lon, gam, k] = tranmerc_inv(lat0, lon0, x, y, ellipsoid)
 %   arguments can be scalars or arrays of equal size.  The ellipsoid vector
 %   is of the form [a, e], where a is the equatorial radius in meters, e is
 %   the eccentricity.  If ellipsoid is omitted, the WGS84 ellipsoid (more
-%   precisely, the value returned by defaultellipsoid) is used.  geodproj
-%   defines the projection and gives the restrictions on the allowed ranges
-%   of the arguments.  The forward projection is given by tranmerc_fwd.
+%   precisely, the value returned by defaultellipsoid) is used.  The common
+%   case of lat0 = 0 is treated efficiently provided that lat0 is specified
+%   as a scalar.  projdoc defines the projection and gives the restrictions
+%   on the allowed ranges of the arguments.  The forward projection is
+%   given by tranmerc_fwd.
 %
 %   gam and K give metric properties of the projection at (lat,lon); gam is
 %   the meridian convergence at the point and k is the scale.
@@ -34,11 +36,12 @@ function [lat, lon, gam, k] = tranmerc_inv(lat0, lon0, x, y, ellipsoid)
 %   less than 1 mm within 7600 km of the central meridian).  The mapping
 %   can be continued accurately over the poles to the opposite meridian.
 %
-%   See also, TRANMERC_FWD, UTMUPS_FWD, UTMUPS_INV, DEFAULTELLIPSOID.
+%   See also PROJDOC, TRANMERC_FWD, UTMUPS_FWD, UTMUPS_INV,
+%     DEFAULTELLIPSOID.
 
 % Copyright (c) Charles Karney (2012-2015) <charles at karney.com>.
 %
-% This file was distributed with GeographicLib 1.42.
+% This file was distributed with GeographicLib 1.43.
 
   narginchk(4, 5)
   if nargin < 5, ellipsoid = defaultellipsoid; end
@@ -140,18 +143,25 @@ function [lat, lon, gam, k] = tranmerc_inv(lat0, lon0, x, y, ellipsoid)
 end
 
 function bet = betf(n)
-  bet = zeros(1,6);
-  nx = n^2;
-  bet(1) = n*(n*(n*(n*(n*(384796*n-382725)-6720)+932400)-1612800)+ ...
-              1209600)/2419200;
-  bet(2) = nx*(n*(n*((1695744-1118711*n)*n-1174656)+258048)+80640)/ ...
-           3870720;
-  nx = nx * n;
-  bet(3) = nx*(n*(n*(22276*n-16929)-15984)+12852)/362880;
-  nx = nx * n;
-  bet(4) = nx*((-830251*n-158400)*n+197865)/7257600;
-  nx = nx * n;
-  bet(5) = (453717-435388*n)*nx/15966720;
-  nx = nx * n;
-  bet(6) = 20648693*nx/638668800;
+  persistent betcoeff
+  if isempty(betcoeff)
+    betcoeff = [
+        384796, -382725, -6720, 932400, -1612800, 1209600, 2419200, ...
+        -1118711, 1695744, -1174656, 258048, 80640, 3870720, ...
+        22276, -16929, -15984, 12852, 362880, ...
+        -830251, -158400, 197865, 7257600, ...
+        -435388, 453717, 15966720, ...
+        20648693, 638668800, ...
+               ];
+  end
+  maxpow = 6;
+  bet = zeros(1, maxpow);
+  o = 1;
+  d = n;
+  for l = 1 : maxpow
+    m = maxpow - l;
+    bet(l) = d * polyval(betcoeff(o : o + m), n) / betcoeff(o + m + 1);
+    o = o + m + 2;
+    d = d * n;
+  end
 end
diff --git a/maxima/geod.mac b/maxima/geod.mac
index 929a5d3..1bb8f9d 100644
--- a/maxima/geod.mac
+++ b/maxima/geod.mac
@@ -577,8 +577,27 @@ dispseries():=(
   */
 maxpow:8$
 computeall()$
-printcode()$
+/* printcode()$ */
 dispseries()$
+/* Coefficients of I1 - I2 */
+A12:ratdisrep(taylor(A1-A2,eps,0,maxpow))$
+for j:1 thru maxpow do
+  C12[j]:ratdisrep(taylor((A1*C1[j]-A2*C2[j])/A12,eps,0,maxpow-1))$
+
+load("polyprint.mac")$
+printgeod():= block([macro:if simplenum then "GEOGRAPHICLIB_GEODESIC_ORDER"
+  else "GEOGRAPHICLIB_GEODESICEXACT_ORDER"],
+  value1('(A1*(1-eps)-1),'eps,2,0),
+  array1('C1,'eps,2,0),
+  array1('C1p,'eps,2,0),
+  value1('(A2/(1-eps)-1),'eps,2,0),
+  array1('C2,eps,2,0),
+  value2('A3,'n,'eps,1),
+  array2('C3,'n,'eps,1),
+  array2('C4,'n,'eps,1),
+  value1('A12,'eps,1,0),
+  array1('C12,'eps,1,1))$
+printgeod()$
 /* Save the values needed for geodesic.mac  This is commented out
 here to avoid accidentally overwriting files in a user's directory. */
-/* save(concat("geod",maxpow,".lsp"), values, arrays)$ */
+/* (file:concat("geod",maxpow,".lsp"), save(file, values, arrays))$ */
diff --git a/maxima/geodC4.mac b/maxima/geodC4.mac
deleted file mode 100644
index 51ba995..0000000
--- a/maxima/geodC4.mac
+++ /dev/null
@@ -1,58 +0,0 @@
-load("geod30.lsp")$
-taylordepth:5$
-jtaylor(expr,var1,var2,ord):=expand(subst([zz=1],
-    ratdisrep(taylor(subst([var1=zz*var1,var2=zz*var2],expr),zz,0,ord))))$
-h(x):=if x=0 then 0 else block([n:0],while integerp(x/16) do (x:x/16,n:n+1),n);
-formatnum(x):=block([n:h(x)],
-  if n>4 then (x:x/16^n,n:concat("<<",4*n)) else n:"",
-  concat(if x=0 then "0"
-  else if abs(x)<1000000 then string(x)
-  else concat(if x<0 then "-" else "",
-    "0x",block([obase:16,s],
-      s:sdowncase(string(abs(x))),
-      if substring(s,1,2) = "0" then s:substring(s,2),
-      s)),"LL",n))$
-formatnumx(x):=if abs(x)<2^63
-then concat("real(",formatnum(x),")") else
-concat("reale(",formatnum(floor(x/2^52)),",",
-  formatnum(x-floor(x/2^52)*2^52),")")$
-printterm(x,line):=block([lx:slength(x)+1,lline:slength(line)],
-  x:concat(x,","),
-  if lline=0 then line:concat("      ",x)
-  else (if lx+lline<80 then line:concat(line,x)
-    else (print(line),line:concat("      ",x))),
-  line)$
-flushline(line):=(if slength(line)>0 then (print(line),line:""),line)$
-codeC4():=block([tab2:"    ",tab3:"      ",linel:90],
-  print(concat("  // Generated by Maxima on ",timedate())),
-  print("  // The coefficients n^k in C4[l] in the Fourier expansion of I4
-  const Math::real* GeodesicExact::rawC4coeff() {"),
-  for nn:0 thru maxpow do block([c],
-    if nn = 0 then
-    print(concat("#if GEOGRAPHICLIB_GEODESICEXACT_ORDER == ",nn))
-    else
-    print(concat("#elif GEOGRAPHICLIB_GEODESICEXACT_ORDER == ",nn)),
-    print(concat(tab2,"static const real coeff[] = {")),
-    c:0,
-    for m:0 thru nn-1 do block(
-      [q:jtaylor(subst([n=_n],C4[m]),_n,eps,nn-1),line:""],
-      for j:m thru nn-1 do block(
-        [p:ratsimp(coeff(q,eps,j)),den],
-        d:abs(denom(p)),
-        p:expand(d*p),
-        line:flushline(line),
-        print(concat(tab3,"// _C4x[",c,"]")),
-        for k:nn-1-j step -1 thru 0 do block(
-          [t:coeff(p,_n,k)],
-          line:printterm(formatnumx(t),line)),
-        line:printterm(formatnumx(d),line),
-        c:c+1),
-      line:flushline(line)),
-    print(concat(tab2,"};"))),
-  print("#else
-#error \"Bad value for GEOGRAPHICLIB_GEODESICEXACT_ORDER\"
-#endif
-    return coeff;
-  }
-"),
-'done)$
diff --git a/maxima/geodesic.mac b/maxima/geodesic.mac
index e1c078c..fbd42f6 100644
--- a/maxima/geodesic.mac
+++ b/maxima/geodesic.mac
@@ -217,7 +217,7 @@ AngDiff(x, y) := block([t,d,r:sumx(-x,y)],
 
 AngRound(x) := block([z:1/16b0, y:abs(x)],
   y : if y < z then z - (z - y) else y,
-  if x < 0b0 then -y else y)$
+  if x < 0b0 then 0b0-y else y)$
 
 /* Indices in geodesic struct */
 block([i:0], g_a:(i:i+1), g_f:(i:i+1), g_f1:(i:i+1), g_e2:(i:i+1),
@@ -381,7 +381,7 @@ geod_genposition(l, arcmode,  s12_a12):=block(
   /* Avoid warning about uninitialized B12. */
   sig12, ssig12, csig12, B12 : 0, E2 : 0, AB1 : 0,
   omg12, lam12, lon12,
-  ssig2, csig2, sbet2, cbet2, somg2, comg2, salp2, calp2, dn2],
+  ssig2, csig2, sbet2, cbet2, somg2, comg2, salp2, calp2, dn2, E],
   s12_a12 : bfloat(s12_a12),
   if (arcmode) then block([s12a],
     /* Interpret s12_a12 as spherical arc length */
@@ -459,11 +459,12 @@ geod_genposition(l, arcmode,  s12_a12):=block(
     somg2 : l[l_salp0] * ssig2, comg2 : csig2),  /* No need to normalize */
   /* tan(alp0) = cos(sig2)*tan(alp2) */
   salp2 : l[l_salp0], calp2 : l[l_calp0] * csig2, /* No need to normalize */
+  E = if l[l_salp0] < 0b0 then -1 else 1,
   if not exact then
   /* omg12 = omg2 - omg1 */
-  omg12 : sig12
-  - (atan2x(ssig2, csig2) - atan2x(l[l_ssig1], l[l_csig1]))
-  + (atan2x(somg2, comg2) - atan2x(l[l_somg1], l[l_comg1])),
+  omg12 : E * (sig12
+    - (atan2x(  ssig2, csig2) - atan2x(  l[l_ssig1], l[l_csig1]))
+    + (atan2x(E*somg2, comg2) - atan2x(E*l[l_somg1], l[l_comg1]))),
   s12 : if arcmode then l[l_b] *
   ((if exact then l[l_E0] else (1 + l[l_A1m1])) * sig12 + AB1) else s12_a12,
   if exact then block([somg2:l[l_salp0] * ssig2,
@@ -471,9 +472,9 @@ geod_genposition(l, arcmode,  s12_a12):=block(
     cchi2],
     /* Without normalization we have schi2 = somg2. */
     cchi2 : l[l_f1] * dn2 *  comg2,
-    lam12 : (sig12
-      - (atan2x(ssig2, csig2) - atan2x(l[l_ssig1], l[l_csig1]))
-      + (atan2x(somg2, cchi2) - atan2x(l[l_somg1], l[l_cchi1]))) -
+    lam12 : E * (sig12
+      - (atan2x(  ssig2, csig2) - atan2x(  l[l_ssig1], l[l_csig1]))
+      + (atan2x(E*somg2, cchi2) - atan2x(E*l[l_somg1], l[l_cchi1]))) -
     l[l_e2]/l[l_f1] * l[l_salp0] * l[l_H0] *
     (sig12 + deltah(ssig2, csig2, dn2,
         l[l_E][e_k2], l[l_E][e_alpha2], l[l_E][e_hc]) - l[l_H1] ) )
@@ -502,7 +503,7 @@ geod_genposition(l, arcmode,  s12_a12):=block(
       M21 : csig12 - (t * l[l_ssig1] - l[l_csig1] * J12) *  ssig2 /  dn2)),
   block([ B42 : SinCosSeries(false, ssig2, csig2, l[l_C4a]), salp12, calp12],
     if l[l_calp0] = 0b0 or l[l_salp0] = 0b0 then (
-      /* alp12 = alp2 - alp1, used in atan2 so no need to normalized */
+      /* alp12 = alp2 - alp1, used in atan2 so no need to normalize */
       salp12 : salp2 * l[l_calp1] - calp2 * l[l_salp1],
       calp12 : calp2 * l[l_calp1] + salp2 * l[l_salp1],
       /* The right thing appears to happen if alp1 = +/-180 and alp2 = 0, viz
diff --git a/maxima/polyprint.mac b/maxima/polyprint.mac
new file mode 100644
index 0000000..2ea4385
--- /dev/null
+++ b/maxima/polyprint.mac
@@ -0,0 +1,135 @@
+/* Print out the coefficients for the geodesic series in a format that
+allows Math::polyval to be used. */
+taylordepth:5$
+simplenum:true$
+count:0$
+jtaylor(expr,var1,var2,ord):=expand(subst([zz=1],
+    ratdisrep(taylor(subst([var1=zz*var1,var2=zz*var2],expr),zz,0,ord))))$
+h(x):=if x=0 then 0 else block([n:0],while integerp(x/16) do (x:x/16,n:n+1),n);
+formatnum(x):=block([n:h(x)],
+  if n>4 then (x:x/16^n,n:concat("<<",4*n)) else n:"",
+  concat(if x=0 then "0"
+  else if abs(x)<1000000 then string(x)
+  else concat(if x<0 then "-" else "",
+    "0x",block([obase:16,s],
+      s:sdowncase(string(abs(x))),
+      if substring(s,1,2) = "0" then s:substring(s,2),
+      s)),"LL",n))$
+formatnumx(x):=if simplenum then
+concat(string(x),if abs(x) < 2^31 then "" else "LL") else
+if abs(x)<2^63
+then concat("real(",formatnum(x),")") else
+concat("reale(",formatnum(floor(x/2^52)),",",
+  formatnum(x-floor(x/2^52)*2^52),")")$
+printterm(x,line):=block([lx:slength(x)+1,lline:slength(line)],
+  count:count+1,
+  x:concat(x,if simplenum then ", " else ","),
+  if lline=0 then line:concat("      ",x)
+  else (if lx+lline<80 then line:concat(line,x)
+    else (print(line),line:concat("      ",x))),
+  line)$
+flushline(line):=(if slength(line)>0 then (print(line),line:""),line)$
+polyprint(p, var, title):=block([linel:90,d,line:"",h],
+  p:ratsimp(p),
+  d:abs(denom(p)),
+  p:expand(d*p),
+  h:hipow(p,var),
+  print(concat("      // ", title, ", polynomial in ", var, " of order ",h)),
+  for k:h step -1 thru 0 do
+  line:printterm(formatnumx(coeff(p,var,k)),line),
+  line:printterm(formatnumx(d),line),
+  flushline(line),
+  done)$
+
+value1(val,var,pow,dord):=block([tab2:"    ",linel:90,div],
+  print(concat(tab2,"// Generated by Maxima on ",timedate())),
+  div:if pow = 1 then "" else concat("/",pow),
+  for nn:0 step pow thru maxpow do block([c],
+    if nn = 0 then
+    print(concat("#if ", macro, div, " == ",nn/pow))
+    else
+    print(concat("#elif ", macro, div, " == ",nn/pow)),
+    count:0,
+    print(concat(tab2,"static const real coeff[] = {")),
+    block(
+      [q:ratdisrep(taylor(ev(val),var,0,nn-dord)),line:""],
+      if pow = 2 then (
+        q:subst(var=sqrt(concat(var,2)),expand(q)),
+        polyprint(q,concat(var,2),string(val)))
+      else (polyprint(q,var,string(val))),
+      line:flushline(line)),
+    print(concat(tab2,"};  // count = ",count))),
+  print("#else
+#error", concat("\"Bad value for ", macro, "\""), "
+#endif
+"),
+'done)$
+
+array1(array,var,pow,dord):=block([tab2:"    ",linel:90],
+  print(concat(tab2,"// Generated by Maxima on ",timedate())),
+  for nn:0 thru maxpow do block([c],
+    if nn = 0 then
+    print(concat("#if ", macro, " == ",nn))
+    else
+    print(concat("#elif ", macro, " == ",nn)),
+    count:0,
+    print(concat(tab2,"static const real coeff[] = {")),
+    for m:0 thru nn do if part(arrayapply(array,[m]),0) # array then block(
+      [q:ratdisrep(taylor(arrayapply(array,[m]),var,0,nn-dord)),line:""],
+      if pow = 2 then (
+        q:subst(var=sqrt(concat(var,2)),expand(q/var^(m-dord))),
+        polyprint(q,concat(var,2),concat(array, "[", m, "]/",var,"^",m-dord)))
+      else (
+        q:expand(q/var^(m-dord)),
+        polyprint(q,var,concat(array, "[", m, "]/",var,"^",m-dord))),
+      line:flushline(line)),
+    print(concat(tab2,"};  // count = ",count))),
+  print("#else
+#error", concat("\"Bad value for ", macro, "\""), "
+#endif
+"),
+'done)$
+
+value2(val,var1,var2,dord):=block([tab2:"    ",linel:90],
+  print(concat(tab2,"// Generated by Maxima on ",timedate())),
+  for nn:0 thru maxpow do block([c],
+    if nn = 0 then
+    print(concat("#if ", macro, " == ",nn))
+    else
+    print(concat("#elif ", macro, " == ",nn)),
+    count:0,
+    print(concat(tab2,"static const real coeff[] = {")),
+    block(
+      [q:jtaylor(ev(val),n,eps,nn-dord),line:""],
+      for j:nn-dord step -1 thru 0 do block(
+        [p:coeff(q,var2,j)],
+        polyprint(p,var1,concat(val, ", coeff of eps^",j))),
+      line:flushline(line)),
+    print(concat(tab2,"};  // count = ",count))),
+  print("#else
+#error", concat("\"Bad value for ", macro, "\""), "
+#endif
+"),
+'done)$
+
+array2(array,var1,var2,dord):=block([tab2:"    ",linel:90],
+  print(concat(tab2,"// Generated by Maxima on ",timedate())),
+  for nn:0 thru maxpow do block([c],
+    if nn = 0 then
+    print(concat("#if ", macro, " == ",nn))
+    else
+    print(concat("#elif ", macro, " == ",nn)),
+    count:0,
+    print(concat(tab2,"static const real coeff[] = {")),
+    for m:0 thru nn-1 do if part(arrayapply(array,[m]),0) # array then block(
+      [q:jtaylor(arrayapply(array,[m]),n,eps,nn-dord),line:""],
+      for j:nn-dord step -1 thru m do block(
+        [p:coeff(q,var2,j)],
+        polyprint(p,var1,concat(array, "[", m ,"], coeff of eps^",j))),
+      line:flushline(line)),
+    print(concat(tab2,"};  // count = ",count))),
+  print("#else
+#error", concat("\"Bad value for ", macro, "\""), "
+#endif
+"),
+'done)$
diff --git a/maxima/rhumbarea.mac b/maxima/rhumbarea.mac
index 0272a10..c19f0b1 100644
--- a/maxima/rhumbarea.mac
+++ b/maxima/rhumbarea.mac
@@ -192,7 +192,11 @@ codeR(minpow,maxpow):=block([tab2:"    ",tab3:"      "],
   print("    }"),
 'done)$
 
-maxpow:6$
+maxpow:8$
 computeR(maxpow)$
 dispR(maxpow)$
-codeR(4,maxpow)$
+/* codeR(4,maxpow)$ */
+load("polyprint.mac")$
+printrhumb():=block([macro:GEOGRAPHICLIB_RHUMBAREA_ORDER],
+  array1('R,'n,1,0))$
+printrhumb()$
diff --git a/maxima/tmseries.mac b/maxima/tmseries.mac
index f39378c..3cf4edc 100644
--- a/maxima/tmseries.mac
+++ b/maxima/tmseries.mac
@@ -66,7 +66,7 @@ tested out to maxpow = 30; but this takes a long time (see below).
    30  13535s = 226m
 */
 
-maxpow:6$ /* Max power for forward and reverse projections */
+maxpow:8$ /* Max power for forward and reverse projections */
 /* Notation
 
    e = eccentricity
@@ -205,6 +205,15 @@ defarrayfuns():=block([aa:a1*(1+n),alpha:zeta_zetap,beta:zetap_zeta,t],
       1+sum(coeff(t,cos(2*k*zeta))*cos(2*k*z),k,1,i))))$
 
 printseries()$
+(b1:a1,
+  for i:1 thru maxpow do (alp[i]:coeff(zeta_zetap,sin(2*i*zetap)),
+    bet[i]:coeff(expand(-zetap_zeta),sin(2*i*zeta))))$
+load("polyprint.mac")$
+printtm():=block([macro:GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER],
+  value1('(b1*(1+n)),'n,2,0),
+  array1('alp,'n,1,0),
+  array1('bet,'n,1,0))$
+printtm()$
 /*
 defarrayfuns()$
 save("tmseries.lsp",maxpow,arrays)$
diff --git a/pom.xml b/pom.xml
index 6b6561b..c546646 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,35 +13,10 @@
 
   <groupId>com.sri.vt</groupId>
   <artifactId>geographiclib</artifactId>
-  <version>1.42-SNAPSHOT</version>
+  <version>1.43-SNAPSHOT</version>
   <packaging>majic-cmake</packaging>
   <name>GeographicLib</name>
 
-  <profiles>
-    <profile>
-      <id>os-windows</id>
-      <activation>
-        <os>
-          <family>Windows</family>
-        </os>
-      </activation>
-      <properties>
-        <build.netgeographiclib>ON</build.netgeographiclib>
-      </properties>
-    </profile>
-    <profile>
-      <id>os-linux</id>
-      <activation>
-        <os>
-          <family>Linux</family>
-        </os>
-      </activation>
-      <properties>
-        <build.netgeographiclib>OFF</build.netgeographiclib>
-      </properties>
-    </profile>
-  </profiles>
-
   <build>
     <plugins>
       <plugin>
@@ -54,9 +29,7 @@
               <options>
                 <GEOGRAPHICLIB_LIB_TYPE>BOTH</GEOGRAPHICLIB_LIB_TYPE>
                 <GEOGRAPHICLIB_DOCUMENTATION>OFF</GEOGRAPHICLIB_DOCUMENTATION>
-                <BUILD_NETGEOGRAPHICLIB>
-                  ${build.netgeographiclib}
-                </BUILD_NETGEOGRAPHICLIB>
+                <BUILD_NETGEOGRAPHICLIB>OFF</BUILD_NETGEOGRAPHICLIB>
               </options>
             </configuration>
           </execution>
diff --git a/python/geographiclib/geodesic.py b/python/geographiclib/geodesic.py
index 23ccd1c..a525168 100644
--- a/python/geographiclib/geodesic.py
+++ b/python/geographiclib/geodesic.py
@@ -56,8 +56,9 @@ class Geodesic(object):
     help(Geodesic.Area)
 
   All angles (latitudes, longitudes, azimuths, spherical arc lengths)
-  are measured in degrees.  All lengths (distance, reduced length) are
-  measured in meters.  All areas are measures in square meters.
+  are measured in degrees.  Latitudes must lie in [-90,90]; longitudes
+  and azimuths must lie in [-540,540).  All lengths (distance, reduced
+  length) are measured in meters.  Areas are measures in square meters.
 
   """
 
@@ -102,17 +103,19 @@ class Geodesic(object):
   REDUCEDLENGTH = GeodesicCapability.REDUCEDLENGTH
   GEODESICSCALE = GeodesicCapability.GEODESICSCALE
   AREA          = GeodesicCapability.AREA
-  LONG_NOWRAP   = GeodesicCapability.LONG_NOWRAP
+  LONG_UNROLL   = GeodesicCapability.LONG_UNROLL
+  LONG_NOWRAP   = GeodesicCapability.LONG_UNROLL
   ALL           = GeodesicCapability.ALL
 
-  def SinCosSeries(sinp, sinx, cosx, c, n):
+  def SinCosSeries(sinp, sinx, cosx, c):
     """Private: Evaluate a trig series using Clenshaw summation."""
     # 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)
     # using Clenshaw summation.  N.B. c[0] is unused for sin series
     # Approx operation count = (n + 5) mult and (2 * n + 2) add
-    k = (n + sinp)             # Point to one beyond last element
+    k = len(c)                  # Point to one beyond last element
+    n = k - sinp
     ar = 2 * (cosx - sinx) * (cosx + sinx) # 2 * cos(2 * x)
     y1 = 0                                 # accumulators for sum
     if n & 1:
@@ -130,26 +133,6 @@ class Geodesic(object):
              else cosx * (y0 - y1) )      # cos(x) * (y0 - y1)
   SinCosSeries = staticmethod(SinCosSeries)
 
-  def AngRound(x):
-    """Private: Round an angle so that small values underflow to zero."""
-    # The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57
-    # for reals = 0.7 pm on the earth if x is an angle in degrees.  (This
-    # is about 1000 times more resolution than we get with angles around 90
-    # degrees.)  We use this to avoid having to deal with near singular
-    # cases when x is non-zero but tiny (e.g., 1.0e-200).
-    z = 1/16.0
-    y = abs(x)
-    # The compiler mustn't "simplify" z - (z - y) to y
-    if y < z: y = z - (z - y)
-    return -y if x < 0 else y
-  AngRound = staticmethod(AngRound)
-
-  def SinCosNorm(sinx, cosx):
-    """Private: Normalize sin and cos."""
-    r = math.hypot(sinx, cosx)
-    return sinx/r, cosx/r
-  SinCosNorm = staticmethod(SinCosNorm)
-
   def Astroid(x, y):
     """Private: solve astroid equation."""
     # Solve k^4+2*k^3-(x^2+y^2-1)*k^2-2*y^2*k-y^2 = 0 for positive root k.
@@ -199,67 +182,82 @@ class Geodesic(object):
 
   def A1m1f(eps):
     """Private: return A1-1."""
-    eps2 = Math.sq(eps)
-    t = eps2*(eps2*(eps2+4)+64)/256
+    coeff = [
+      1, 4, 64, 0, 256,
+    ]
+    m = Geodesic.nA1_//2
+    t = Math.polyval(m, coeff, 0, Math.sq(eps)) / coeff[m + 1]
     return (t + eps) / (1 - eps)
   A1m1f = staticmethod(A1m1f)
 
   def C1f(eps, c):
     """Private: return C1."""
+    coeff = [
+      -1, 6, -16, 32,
+      -9, 64, -128, 2048,
+      9, -16, 768,
+      3, -5, 512,
+      -7, 1280,
+      -7, 2048,
+    ]
     eps2 = Math.sq(eps)
     d = eps
-    c[1] = d*((6-eps2)*eps2-16)/32
-    d *= eps
-    c[2] = d*((64-9*eps2)*eps2-128)/2048
-    d *= eps
-    c[3] = d*(9*eps2-16)/768
-    d *= eps
-    c[4] = d*(3*eps2-5)/512
-    d *= eps
-    c[5] = -7*d/1280
-    d *= eps
-    c[6] = -7*d/2048
+    o = 0
+    for l in range(1, Geodesic.nC1_ + 1): # l is index of C1p[l]
+      m = (Geodesic.nC1_ - l) // 2        # order of polynomial in eps^2
+      c[l] = d * Math.polyval(m, coeff, o, eps2) / coeff[o + m + 1]
+      o += m + 2
+      d *= eps
   C1f = staticmethod(C1f)
 
   def C1pf(eps, c):
     """Private: return C1'"""
+    coeff = [
+      205, -432, 768, 1536,
+      4005, -4736, 3840, 12288,
+      -225, 116, 384,
+      -7173, 2695, 7680,
+      3467, 7680,
+      38081, 61440,
+    ]
     eps2 = Math.sq(eps)
     d = eps
-    c[1] = d*(eps2*(205*eps2-432)+768)/1536
-    d *= eps
-    c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288
-    d *= eps
-    c[3] = d*(116-225*eps2)/384
-    d *= eps
-    c[4] = d*(2695-7173*eps2)/7680
-    d *= eps
-    c[5] = 3467*d/7680
-    d *= eps
-    c[6] = 38081*d/61440
+    o = 0
+    for l in range(1, Geodesic.nC1p_ + 1): # l is index of C1p[l]
+      m = (Geodesic.nC1p_ - l) // 2 # order of polynomial in eps^2
+      c[l] = d * Math.polyval(m, coeff, o, eps2) / coeff[o + m + 1]
+      o += m + 2
+      d *= eps
   C1pf = staticmethod(C1pf)
 
   def A2m1f(eps):
     """Private: return A2-1"""
-    eps2 = Math.sq(eps)
-    t = eps2*(eps2*(25*eps2+36)+64)/256
+    coeff = [
+      25, 36, 64, 0, 256,
+    ]
+    m = Geodesic.nA2_//2
+    t = Math.polyval(m, coeff, 0, Math.sq(eps)) / coeff[m + 1]
     return t * (1 - eps) - eps
   A2m1f = staticmethod(A2m1f)
 
   def C2f(eps, c):
     """Private: return C2"""
+    coeff = [
+      1, 2, 16, 32,
+      35, 64, 384, 2048,
+      15, 80, 768,
+      7, 35, 512,
+      63, 1280,
+      77, 2048,
+    ]
     eps2 = Math.sq(eps)
     d = eps
-    c[1] = d*(eps2*(eps2+2)+16)/32
-    d *= eps
-    c[2] = d*(eps2*(35*eps2+64)+384)/2048
-    d *= eps
-    c[3] = d*(15*eps2+80)/768
-    d *= eps
-    c[4] = d*(7*eps2+35)/512
-    d *= eps
-    c[5] = 63*d/1280
-    d *= eps
-    c[6] = 77*d/2048
+    o = 0
+    for l in range(1, Geodesic.nC2_ + 1): # l is index of C2[l]
+      m = (Geodesic.nC2_ - l) // 2        # order of polynomial in eps^2
+      c[l] = d * Math.polyval(m, coeff, o, eps2) / coeff[o + m + 1]
+      o += m + 2
+      d *= eps
   C2f = staticmethod(C2f)
 
   def __init__(self, a, f):
@@ -305,101 +303,109 @@ class Geodesic(object):
 
   def A3coeff(self):
     """Private: return coefficients for A3"""
-    _n = self._n
-    self._A3x[0] = 1
-    self._A3x[1] = (_n-1)/2
-    self._A3x[2] = (_n*(3*_n-1)-2)/8
-    self._A3x[3] = ((-_n-3)*_n-1)/16
-    self._A3x[4] = (-2*_n-3)/64
-    self._A3x[5] = -3/128.0
+    coeff = [
+      -3, 128,
+      -2, -3, 64,
+      -1, -3, -1, 16,
+      3, -1, -2, 8,
+      1, -1, 2,
+      1, 1,
+    ]
+    o = 0; k = 0
+    for j in range(Geodesic.nA3_ - 1, -1, -1): # coeff of eps^j
+      m = min(Geodesic.nA3_ - j - 1, j) # order of polynomial in n
+      self._A3x[k] = Math.polyval(m, coeff, o, self._n) / coeff[o + m + 1]
+      k += 1
+      o += m + 2
 
   def C3coeff(self):
     """Private: return coefficients for C3"""
-    _n = self._n
-    self._C3x[0] = (1-_n)/4
-    self._C3x[1] = (1-_n*_n)/8
-    self._C3x[2] = ((3-_n)*_n+3)/64
-    self._C3x[3] = (2*_n+5)/128
-    self._C3x[4] = 3/128.0
-    self._C3x[5] = ((_n-3)*_n+2)/32
-    self._C3x[6] = ((-3*_n-2)*_n+3)/64
-    self._C3x[7] = (_n+3)/128
-    self._C3x[8] = 5/256.0
-    self._C3x[9] = (_n*(5*_n-9)+5)/192
-    self._C3x[10] = (9-10*_n)/384
-    self._C3x[11] = 7/512.0
-    self._C3x[12] = (7-14*_n)/512
-    self._C3x[13] = 7/512.0
-    self._C3x[14] = 21/2560.0
+    coeff = [
+      3, 128,
+      2, 5, 128,
+      -1, 3, 3, 64,
+      -1, 0, 1, 8,
+      -1, 1, 4,
+      5, 256,
+      1, 3, 128,
+      -3, -2, 3, 64,
+      1, -3, 2, 32,
+      7, 512,
+      -10, 9, 384,
+      5, -9, 5, 192,
+      7, 512,
+      -14, 7, 512,
+      21, 2560,
+    ]
+    o = 0; k = 0
+    for l in range(1, Geodesic.nC3_): # l is index of C3[l]
+      for j in range(Geodesic.nC3_ - 1, l - 1, -1): # coeff of eps^j
+        m = min(Geodesic.nC3_ - j - 1, j) # order of polynomial in n
+        self._C3x[k] = Math.polyval(m, coeff, o, self._n) / coeff[o + m + 1]
+        k += 1
+        o += m + 2
 
   def C4coeff(self):
     """Private: return coefficients for C4"""
-    _n = self._n
-    self._C4x[0] = (_n*(_n*(_n*(_n*(100*_n+208)+572)+3432)-12012)+30030)/45045
-    self._C4x[1] = (_n*(_n*(_n*(64*_n+624)-4576)+6864)-3003)/15015
-    self._C4x[2] = (_n*((14144-10656*_n)*_n-4576)-858)/45045
-    self._C4x[3] = ((-224*_n-4784)*_n+1573)/45045
-    self._C4x[4] = (1088*_n+156)/45045
-    self._C4x[5] = 97/15015.0
-    self._C4x[6] = (_n*(_n*((-64*_n-624)*_n+4576)-6864)+3003)/135135
-    self._C4x[7] = (_n*(_n*(5952*_n-11648)+9152)-2574)/135135
-    self._C4x[8] = (_n*(5792*_n+1040)-1287)/135135
-    self._C4x[9] = (468-2944*_n)/135135
-    self._C4x[10] = 1/9009.0
-    self._C4x[11] = (_n*((4160-1440*_n)*_n-4576)+1716)/225225
-    self._C4x[12] = ((4992-8448*_n)*_n-1144)/225225
-    self._C4x[13] = (1856*_n-936)/225225
-    self._C4x[14] = 8/10725.0
-    self._C4x[15] = (_n*(3584*_n-3328)+1144)/315315
-    self._C4x[16] = (1024*_n-208)/105105
-    self._C4x[17] = -136/63063.0
-    self._C4x[18] = (832-2560*_n)/405405
-    self._C4x[19] = -128/135135.0
-    self._C4x[20] = 128/99099.0
+    coeff = [
+      97, 15015,
+      1088, 156, 45045,
+      -224, -4784, 1573, 45045,
+      -10656, 14144, -4576, -858, 45045,
+      64, 624, -4576, 6864, -3003, 15015,
+      100, 208, 572, 3432, -12012, 30030, 45045,
+      1, 9009,
+      -2944, 468, 135135,
+      5792, 1040, -1287, 135135,
+      5952, -11648, 9152, -2574, 135135,
+      -64, -624, 4576, -6864, 3003, 135135,
+      8, 10725,
+      1856, -936, 225225,
+      -8448, 4992, -1144, 225225,
+      -1440, 4160, -4576, 1716, 225225,
+      -136, 63063,
+      1024, -208, 105105,
+      3584, -3328, 1144, 315315,
+      -128, 135135,
+      -2560, 832, 405405,
+      128, 99099,
+    ]
+    o = 0; k = 0
+    for l in range(Geodesic.nC4_): # l is index of C4[l]
+      for j in range(Geodesic.nC4_ - 1, l - 1, -1): # coeff of eps^j
+        m = Geodesic.nC4_ - j - 1 # order of polynomial in n
+        self._C4x[k] = Math.polyval(m, coeff, o, self._n) / coeff[o + m + 1]
+        k += 1
+        o += m + 2
 
   def A3f(self, eps):
     """Private: return A3"""
-    # Evaluate sum(_A3x[k] * eps^k, k, 0, nA3x_-1) by Horner's method
-    v = 0
-    for i in range(Geodesic.nA3x_-1, -1, -1):
-      v = eps * v + self._A3x[i]
-    return v
+    # Evaluate A3
+    return Math.polyval(Geodesic.nA3_ - 1, self._A3x, 0, eps)
 
   def C3f(self, eps, c):
     """Private: return C3"""
-    # Evaluate C3 coeffs by Horner's method
+    # Evaluate C3
     # Elements c[1] thru c[nC3_ - 1] are set
-    j = Geodesic.nC3x_; k = Geodesic.nC3_ - 1
-    while k:
-      t = 0
-      for _ in range(Geodesic.nC3_ - k):
-        j -= 1
-        t = eps * t + self._C3x[j]
-      c[k] = t
-      k -= 1
-
     mult = 1
-    for k in range(1, Geodesic.nC3_):
+    o = 0
+    for l in range(1, Geodesic.nC3_): # l is index of C3[l]
+      m = Geodesic.nC3_ - l - 1       # order of polynomial in eps
       mult *= eps
-      c[k] *= mult
+      c[l] = mult * Math.polyval(m, self._C3x, o, eps)
+      o += m + 1
 
   def C4f(self, eps, c):
     """Private: return C4"""
     # Evaluate C4 coeffs by Horner's method
     # Elements c[0] thru c[nC4_ - 1] are set
-    j = Geodesic.nC4x_; k = Geodesic.nC4_
-    while k:
-      t = 0
-      for _ in range(Geodesic.nC4_ - k + 1):
-        j -= 1
-        t = eps * t + self._C4x[j]
-      k -= 1
-      c[k] = t
-
     mult = 1
-    for k in range(1, Geodesic.nC4_):
+    o = 0
+    for l in range(Geodesic.nC4_): # l is index of C4[l]
+      m = Geodesic.nC4_ - l - 1    # order of polynomial in eps
+      c[l] = mult * Math.polyval(m, self._C4x, o, eps)
+      o += m + 1
       mult *= eps
-      c[k] *= mult
 
   # return s12b, m12b, m0, M12, M21
   def Lengths(self, eps, sig12,
@@ -413,12 +419,12 @@ class Geodesic(object):
     Geodesic.C2f(eps, C2a)
     A1m1 = Geodesic.A1m1f(eps)
     AB1 = (1 + A1m1) * (
-      Geodesic.SinCosSeries(True, ssig2, csig2, C1a, Geodesic.nC1_) -
-      Geodesic.SinCosSeries(True, ssig1, csig1, C1a, Geodesic.nC1_))
+      Geodesic.SinCosSeries(True, ssig2, csig2, C1a) -
+      Geodesic.SinCosSeries(True, ssig1, csig1, C1a))
     A2m1 = Geodesic.A2m1f(eps)
     AB2 = (1 + A2m1) * (
-      Geodesic.SinCosSeries(True, ssig2, csig2, C2a, Geodesic.nC2_) -
-      Geodesic.SinCosSeries(True, ssig1, csig1, C2a, Geodesic.nC2_))
+      Geodesic.SinCosSeries(True, ssig2, csig2, C2a) -
+      Geodesic.SinCosSeries(True, ssig1, csig1, C2a))
     m0 = A1m1 - A2m1
     J12 = m0 * sig12 + (AB1 - AB2)
     # Missing a factor of _b.
@@ -480,7 +486,7 @@ class Geodesic(object):
       salp2 = cbet1 * somg12
       calp2 = sbet12 - cbet1 * sbet2 * (Math.sq(somg12) / (1 + comg12)
                                         if comg12 >= 0 else 1 - comg12)
-      salp2, calp2 = Geodesic.SinCosNorm(salp2, calp2)
+      salp2, calp2 = Math.norm(salp2, calp2)
       # Set return value
       sig12 = math.atan2(ssig12, csig12)
     elif (abs(self._n) >= 0.1 or # Skip astroid calc if too eccentric
@@ -571,7 +577,7 @@ class Geodesic(object):
         calp1 = sbet12a - cbet2 * sbet1 * Math.sq(somg12) / (1 - comg12)
     # Sanity check on starting guess.  Backwards check allows NaN through.
     if not (salp1 <= 0):
-      salp1, calp1 = Geodesic.SinCosNorm(salp1, calp1)
+      salp1, calp1 = Math.norm(salp1, calp1)
     else:
       salp1 = 1; calp1 = 0
     return sig12, salp1, calp1, salp2, calp2, dnm
@@ -596,8 +602,8 @@ class Geodesic(object):
     # tan(omg1) = sin(alp0) * tan(sig1) = tan(omg1)=tan(alp1)*sin(bet1)
     ssig1 = sbet1; somg1 = salp0 * sbet1
     csig1 = comg1 = calp1 * cbet1
-    ssig1, csig1 = Geodesic.SinCosNorm(ssig1, csig1)
-    # SinCosNorm(somg1, comg1); -- don't need to normalize!
+    ssig1, csig1 = Math.norm(ssig1, csig1)
+    # Math.norm(somg1, comg1); -- don't need to normalize!
 
     # Enforce symmetries in the case abs(bet2) = -bet1.  Need to be careful
     # about this case, since this can yield singularities in the Newton
@@ -616,8 +622,8 @@ class Geodesic(object):
     # tan(omg2) = sin(alp0) * tan(sig2).
     ssig2 = sbet2; somg2 = salp0 * sbet2
     csig2 = comg2 = calp2 * cbet2
-    ssig2, csig2 = Geodesic.SinCosNorm(ssig2, csig2)
-    # SinCosNorm(somg2, comg2); -- don't need to normalize!
+    ssig2, csig2 = Math.norm(ssig2, csig2)
+    # Math.norm(somg2, comg2); -- don't need to normalize!
 
     # sig12 = sig2 - sig1, limit to [0, pi]
     sig12 = math.atan2(max(csig1 * ssig2 - ssig1 * csig2, 0.0),
@@ -630,8 +636,8 @@ class Geodesic(object):
     k2 = Math.sq(calp0) * self._ep2
     eps = k2 / (2 * (1 + math.sqrt(1 + k2)) + k2)
     self.C3f(eps, C3a)
-    B312 = (Geodesic.SinCosSeries(True, ssig2, csig2, C3a, Geodesic.nC3_-1) -
-            Geodesic.SinCosSeries(True, ssig1, csig1, C3a, Geodesic.nC3_-1))
+    B312 = (Geodesic.SinCosSeries(True, ssig2, csig2, C3a) -
+            Geodesic.SinCosSeries(True, ssig1, csig1, C3a))
     h0 = -self._f * self.A3f(eps)
     domg12 = salp0 * h0 * (sig12 + B312)
     lam12 = omg12 + domg12
@@ -661,13 +667,13 @@ class Geodesic(object):
     # east-going and meridional geodesics.
     lon12 = Math.AngDiff(Math.AngNormalize(lon1), Math.AngNormalize(lon2))
     # If very close to being on the same half-meridian, then make it so.
-    lon12 = Geodesic.AngRound(lon12)
+    lon12 = Math.AngRound(lon12)
     # Make longitude difference positive.
     lonsign = 1 if lon12 >= 0 else -1
     lon12 *= lonsign
     # If really close to the equator, treat as on equator.
-    lat1 = Geodesic.AngRound(lat1)
-    lat2 = Geodesic.AngRound(lat2)
+    lat1 = Math.AngRound(lat1)
+    lat2 = Math.AngRound(lat2)
     # Swap points so that point with higher (abs) latitude is point 1
     swapp = 1 if abs(lat1) >= abs(lat2) else -1
     if swapp < 0:
@@ -695,13 +701,13 @@ class Geodesic(object):
     # Ensure cbet1 = +epsilon at poles
     sbet1 = self._f1 * math.sin(phi)
     cbet1 = Geodesic.tiny_ if lat1 == -90 else math.cos(phi)
-    sbet1, cbet1 = Geodesic.SinCosNorm(sbet1, cbet1)
+    sbet1, cbet1 = Math.norm(sbet1, cbet1)
 
     phi = lat2 * Math.degree
     # Ensure cbet2 = +epsilon at poles
     sbet2 = self._f1 * math.sin(phi)
     cbet2 = Geodesic.tiny_ if abs(lat2) == 90 else math.cos(phi)
-    sbet2, cbet2 = Geodesic.SinCosNorm(sbet2, cbet2)
+    sbet2, cbet2 = Math.norm(sbet2, cbet2)
 
     # If cbet1 < -sbet1, then cbet2 - cbet1 is a sensitive measure of the
     # |bet1| - |bet2|.  Alternatively (cbet1 >= -sbet1), abs(sbet2) + sbet1 is
@@ -849,7 +855,7 @@ class Geodesic(object):
             if nsalp1 > 0 and abs(dalp1) < math.pi:
               calp1 = calp1 * cdalp1 - salp1 * sdalp1
               salp1 = nsalp1
-              salp1, calp1 = Geodesic.SinCosNorm(salp1, calp1)
+              salp1, calp1 = Math.norm(salp1, calp1)
               # In some regimes we don't get quadratic convergence because
               # slope -> 0.  So use convergence conditions based on epsilon
               # instead of sqrt(epsilon).
@@ -864,7 +870,7 @@ class Geodesic(object):
           # WGS84 and random input: mean = 4.74, sd = 0.99
           salp1 = (salp1a + salp1b)/2
           calp1 = (calp1a + calp1b)/2
-          salp1, calp1 = Geodesic.SinCosNorm(salp1, calp1)
+          salp1, calp1 = Math.norm(salp1, calp1)
           tripn = False
           tripb = (abs(salp1a - salp1) + (calp1a - calp1) < Geodesic.tolb_ or
                    abs(salp1 - salp1b) + (calp1 - calp1b) < Geodesic.tolb_)
@@ -898,12 +904,12 @@ class Geodesic(object):
         eps = k2 / (2 * (1 + math.sqrt(1 + k2)) + k2)
         # Multiplier = a^2 * e^2 * cos(alpha0) * sin(alpha0).
         A4 = Math.sq(self._a) * calp0 * salp0 * self._e2
-        ssig1, csig1 = Geodesic.SinCosNorm(ssig1, csig1)
-        ssig2, csig2 = Geodesic.SinCosNorm(ssig2, csig2)
+        ssig1, csig1 = Math.norm(ssig1, csig1)
+        ssig2, csig2 = Math.norm(ssig2, csig2)
         C4a = list(range(Geodesic.nC4_))
         self.C4f(eps, C4a)
-        B41 = Geodesic.SinCosSeries(False, ssig1, csig1, C4a, Geodesic.nC4_)
-        B42 = Geodesic.SinCosSeries(False, ssig2, csig2, C4a, Geodesic.nC4_)
+        B41 = Geodesic.SinCosSeries(False, ssig1, csig1, C4a)
+        B42 = Geodesic.SinCosSeries(False, ssig2, csig2, C4a)
         S12 = A4 * (B42 - B41)
       else:
         # Avoid problems with indeterminate sig1, sig2 on equator
@@ -1002,16 +1008,25 @@ class Geodesic(object):
       Geodesic.REDUCEDLENGTH
       Geodesic.GEODESICSCALE
       Geodesic.AREA
-      Geodesic.ALL
+      Geodesic.ALL (all of the above)
+      Geodesic.LONG_UNROLL
+
+    If Geodesic.LONG_UNROLL is set, then lon1 is unchanged and lon2 -
+    lon1 indicates whether the geodesic is east going or west going.
+    Otherwise lon1 and lon2 are both reduced to the range [-180,180).
 
     """
 
-    lon1 = Geodesic.CheckPosition(lat1, lon1)
-    lon2 = Geodesic.CheckPosition(lat2, lon2)
+    lon1a = Geodesic.CheckPosition(lat1, lon1)
+    lon2a = Geodesic.CheckPosition(lat2, lon2)
+    if outmask & Geodesic.LONG_UNROLL:
+      lon2 = lon1 + Math.AngDiff(lon1a, lon2a)
+    else:
+      lon1 = lon1a; lon2 = lon2a
 
     result = {'lat1': lat1, 'lon1': lon1, 'lat2': lat2, 'lon2': lon2}
     a12, s12, azi1, azi2, m12, M12, M21, S12 = self.GenInverse(
-      lat1, lon1, lat2, lon2, outmask)
+      lat1, lon1a, lat2, lon2a, outmask)
     outmask &= Geodesic.OUT_MASK
     result['a12'] = a12
     if outmask & Geodesic.DISTANCE: result['s12'] = s12
@@ -1053,10 +1068,8 @@ class Geodesic(object):
       S12 area between geodesic and equator
 
     outmask determines which fields get included and if outmask is
-    omitted, then only the basic geodesic fields are computed.  The
-    LONG_NOWRAP bit prevents the longitudes being reduced to the range
-    [-180,180).  The mask is an or'ed combination of the following
-    values
+    omitted, then only the basic geodesic fields are computed.  The mask
+    is an or'ed combination of the following values
 
       Geodesic.LATITUDE
       Geodesic.LONGITUDE
@@ -1064,12 +1077,19 @@ class Geodesic(object):
       Geodesic.REDUCEDLENGTH
       Geodesic.GEODESICSCALE
       Geodesic.AREA
-      Geodesic.ALL
-      Geodesic.LONG_NOWRAP
+      Geodesic.ALL (all of the above)
+      Geodesic.LONG_UNROLL
+
+    The LONG_UNROLL bit unrolls the longitudes (instead of reducing them
+    to the range [-180,180)); the quantity lon2 - lon1 then indicates
+    how many times and in what sense the geodesic encircles the
+    ellipsoid.  Because lon2 might be outside the normal allowed range
+    for longitudes, [-540,540), be sure to normalize it with
+    math.fmod(lon2,360) before using it in other calls.
 
     """
 
-    if outmask & Geodesic.LONG_NOWRAP:
+    if outmask & Geodesic.LONG_UNROLL:
       Geodesic.CheckPosition(lat1, lon1)
     else:
       lon1 = Geodesic.CheckPosition(lat1, lon1)
@@ -1111,9 +1131,9 @@ class Geodesic(object):
 
     outmask determines which fields get included and if outmask is
     omitted, then only the basic geodesic fields are computed.  The
-    LONG_NOWRAP bit prevents the longitudes being reduced to the range
-    [-180,180).  The mask is an or'ed combination of the following
-    values
+    LONG_UNROLL bit unrolls the longitudes (instead of reducing them to
+    the range [-180,180)).  The mask is an or'ed combination of the
+    following values
 
       Geodesic.LATITUDE
       Geodesic.LONGITUDE
@@ -1122,12 +1142,12 @@ class Geodesic(object):
       Geodesic.REDUCEDLENGTH
       Geodesic.GEODESICSCALE
       Geodesic.AREA
-      Geodesic.ALL
-      Geodesic.LONG_NOWRAP
+      Geodesic.ALL (all of the above)
+      Geodesic.LONG_UNROLL
 
     """
 
-    if outmask & Geodesic.LONG_NOWRAP:
+    if outmask & Geodesic.LONG_UNROLL:
       Geodesic.CheckPosition(lat1, lon1)
     else:
       lon1 = Geodesic.CheckPosition(lat1, lon1)
@@ -1162,7 +1182,7 @@ class Geodesic(object):
       Geodesic.GEODESICSCALE
       Geodesic.AREA
       Geodesic.DISTANCE_IN
-      Geodesic.ALL
+      Geodesic.ALL (all of the above)
 
     """
 
diff --git a/python/geographiclib/geodesiccapability.py b/python/geographiclib/geodesiccapability.py
index 5dda33d..235568e 100644
--- a/python/geographiclib/geodesiccapability.py
+++ b/python/geographiclib/geodesiccapability.py
@@ -26,7 +26,7 @@ class GeodesicCapability(object):
   CAP_ALL  = 0x1F
   CAP_MASK = CAP_ALL
   OUT_ALL  = 0x7F80
-  OUT_MASK = 0xFF80             # Includes LONG_NOWRAP
+  OUT_MASK = 0xFF80             # Includes LONG_UNROLL
   EMPTY         = 0
   LATITUDE      = 1 << 7  | CAP_NONE
   LONGITUDE     = 1 << 8  | CAP_C3
@@ -36,5 +36,6 @@ class GeodesicCapability(object):
   REDUCEDLENGTH = 1 << 12 | CAP_C1 | CAP_C2
   GEODESICSCALE = 1 << 13 | CAP_C1 | CAP_C2
   AREA          = 1 << 14 | CAP_C4
-  LONG_NOWRAP   = 1 << 15
-  ALL           = OUT_ALL | CAP_ALL # Does not include LONG_NOWRAP
+  LONG_UNROLL   = 1 << 15
+  LONG_NOWRAP   = LONG_UNROLL       # For backwards compatibility only
+  ALL           = OUT_ALL | CAP_ALL # Does not include LONG_UNROLL
diff --git a/python/geographiclib/geodesicline.py b/python/geographiclib/geodesicline.py
index 1d1dce8..098be5a 100644
--- a/python/geographiclib/geodesicline.py
+++ b/python/geographiclib/geodesicline.py
@@ -32,10 +32,11 @@ class GeodesicLine(object):
     self._b = geod._b
     self._c2 = geod._c2
     self._f1 = geod._f1
-    self._caps = caps | Geodesic.LATITUDE | Geodesic.AZIMUTH
+    self._caps = (caps | Geodesic.LATITUDE | Geodesic.AZIMUTH |
+                  Geodesic.LONG_UNROLL)
 
     # Guard against underflow in salp0
-    azi1 = Geodesic.AngRound(Math.AngNormalize(azi1))
+    azi1 = Math.AngRound(Math.AngNormalize(azi1))
     self._lat1 = lat1
     self._lon1 = lon1
     self._azi1 = azi1
@@ -50,7 +51,7 @@ class GeodesicLine(object):
     # Ensure cbet1 = +epsilon at poles
     sbet1 = self._f1 * math.sin(phi)
     cbet1 = Geodesic.tiny_ if abs(lat1) == 90 else math.cos(phi)
-    sbet1, cbet1 = Geodesic.SinCosNorm(sbet1, cbet1)
+    sbet1, cbet1 = Math.norm(sbet1, cbet1)
     self._dn1 = math.sqrt(1 + geod._ep2 * Math.sq(sbet1))
 
     # Evaluate alp0 from sin(alp1) * cos(bet1) = sin(alp0),
@@ -71,9 +72,9 @@ class GeodesicLine(object):
     self._csig1 = self._comg1 = (cbet1 * self._calp1
                                  if sbet1 != 0 or self._calp1 != 0 else 1)
     # sig1 in (-pi, pi]
-    self._ssig1, self._csig1 = Geodesic.SinCosNorm(self._ssig1, self._csig1)
+    self._ssig1, self._csig1 = Math.norm(self._ssig1, self._csig1)
     # No need to normalize
-    # self._somg1, self._comg1 = Geodesic.SinCosNorm(self._somg1, self._comg1)
+    # self._somg1, self._comg1 = Math.norm(self._somg1, self._comg1)
 
     self._k2 = Math.sq(self._calp0) * geod._ep2
     eps = self._k2 / (2 * (1 + math.sqrt(1 + self._k2)) + self._k2)
@@ -83,13 +84,13 @@ class GeodesicLine(object):
       self._C1a = list(range(Geodesic.nC1_ + 1))
       Geodesic.C1f(eps, self._C1a)
       self._B11 = Geodesic.SinCosSeries(
-        True, self._ssig1, self._csig1, self._C1a, Geodesic.nC1_)
+        True, self._ssig1, self._csig1, self._C1a)
       s = math.sin(self._B11); c = math.cos(self._B11)
       # tau1 = sig1 + B11
       self._stau1 = self._ssig1 * c + self._csig1 * s
       self._ctau1 = self._csig1 * c - self._ssig1 * s
       # Not necessary because C1pa reverts C1a
-      #    _B11 = -SinCosSeries(true, _stau1, _ctau1, _C1pa, nC1p_)
+      #    _B11 = -SinCosSeries(true, _stau1, _ctau1, _C1pa)
 
     if self._caps & Geodesic.CAP_C1p:
       self._C1pa = list(range(Geodesic.nC1p_ + 1))
@@ -100,14 +101,14 @@ class GeodesicLine(object):
       self._C2a = list(range(Geodesic.nC2_ + 1))
       Geodesic.C2f(eps, self._C2a)
       self._B21 = Geodesic.SinCosSeries(
-        True, self._ssig1, self._csig1, self._C2a, Geodesic.nC2_)
+        True, self._ssig1, self._csig1, self._C2a)
 
     if self._caps & Geodesic.CAP_C3:
       self._C3a = list(range(Geodesic.nC3_))
       geod.C3f(eps, self._C3a)
       self._A3c = -self._f * self._salp0 * geod.A3f(eps)
       self._B31 = Geodesic.SinCosSeries(
-        True, self._ssig1, self._csig1, self._C3a, Geodesic.nC3_-1)
+        True, self._ssig1, self._csig1, self._C3a)
 
     if self._caps & Geodesic.CAP_C4:
       self._C4a = list(range(Geodesic.nC4_))
@@ -115,7 +116,7 @@ class GeodesicLine(object):
       # Multiplier = a^2 * e^2 * cos(alpha0) * sin(alpha0)
       self._A4 = Math.sq(self._a) * self._calp0 * self._salp0 * geod._e2
       self._B41 = Geodesic.SinCosSeries(
-        False, self._ssig1, self._csig1, self._C4a, Geodesic.nC4_)
+        False, self._ssig1, self._csig1, self._C4a)
 
   # return a12, lat2, lon2, azi2, s12, m12, M12, M21, S12
   def GenPosition(self, arcmode, s12_a12, outmask):
@@ -145,7 +146,7 @@ class GeodesicLine(object):
       B12 = - Geodesic.SinCosSeries(True,
                                     self._stau1 * c + self._ctau1 * s,
                                     self._ctau1 * c - self._stau1 * s,
-                                    self._C1pa, Geodesic.nC1p_)
+                                    self._C1pa)
       sig12 = tau12 - (B12 - self._B11)
       ssig12 = math.sin(sig12); csig12 = math.cos(sig12)
       if abs(self._f) > 0.01:
@@ -172,8 +173,7 @@ class GeodesicLine(object):
         #      1/5   157e6 3.8e9 280e6
         ssig2 = self._ssig1 * csig12 + self._csig1 * ssig12
         csig2 = self._csig1 * csig12 - self._ssig1 * ssig12
-        B12 = Geodesic.SinCosSeries(True, ssig2, csig2,
-                                    self._C1a, Geodesic.nC1_)
+        B12 = Geodesic.SinCosSeries(True, ssig2, csig2, self._C1a)
         serr = ((1 + self._A1m1) * (sig12 + (B12 - self._B11)) -
                 s12_a12 / self._b)
         sig12 = sig12 - serr / math.sqrt(1 + self._k2 * Math.sq(ssig2))
@@ -189,8 +189,7 @@ class GeodesicLine(object):
     if outmask & (
       Geodesic.DISTANCE | Geodesic.REDUCEDLENGTH | Geodesic.GEODESICSCALE):
       if arcmode or abs(self._f) > 0.01:
-        B12 = Geodesic.SinCosSeries(True, ssig2, csig2,
-                                    self._C1a, Geodesic.nC1_)
+        B12 = Geodesic.SinCosSeries(True, ssig2, csig2, self._C1a)
       AB1 = (1 + self._A1m1) * (B12 - self._B11)
     # sin(bet2) = cos(alp0) * sin(sig2)
     sbet2 = self._calp0 * ssig2
@@ -208,23 +207,23 @@ class GeodesicLine(object):
     if outmask & Geodesic.LONGITUDE:
       # tan(omg2) = sin(alp0) * tan(sig2)
       somg2 = self._salp0 * ssig2; comg2 = csig2 # No need to normalize
+      E = -1 if self._salp0 < 0 else 1           # East or west going?
       # omg12 = omg2 - omg1
-      omg12 = (sig12
-               - (math.atan2(ssig2, csig2) -
-                  math.atan2(self._ssig1, self._csig1))
-               + (math.atan2(somg2, comg2) -
-                  math.atan2(self._somg1, self._comg1))
-               if outmask & Geodesic.LONG_NOWRAP
+      omg12 = (E * (sig12
+                    - (math.atan2(          ssig2,       csig2) -
+                       math.atan2(    self._ssig1, self._csig1))
+                    + (math.atan2(E *       somg2,       comg2) -
+                       math.atan2(E * self._somg1, self._comg1)))
+               if outmask & Geodesic.LONG_UNROLL
                else math.atan2(somg2 * self._comg1 - comg2 * self._somg1,
                                comg2 * self._comg1 + somg2 * self._somg1))
       lam12 = omg12 + self._A3c * (
-        sig12 + (Geodesic.SinCosSeries(True, ssig2, csig2,
-                                       self._C3a, Geodesic.nC3_-1)
+        sig12 + (Geodesic.SinCosSeries(True, ssig2, csig2, self._C3a)
                  - self._B31))
       lon12 = lam12 / Math.degree
       # Use Math.AngNormalize2 because longitude might have wrapped
       # multiple times.
-      lon2 = (self._lon1 + lon12 if outmask & Geodesic.LONG_NOWRAP else
+      lon2 = (self._lon1 + lon12 if outmask & Geodesic.LONG_UNROLL else
               Math.AngNormalize(Math.AngNormalize(self._lon1) +
                                 Math.AngNormalize2(lon12)))
 
@@ -236,7 +235,7 @@ class GeodesicLine(object):
       azi2 = 0 - math.atan2(-salp2, calp2) / Math.degree
 
     if outmask & (Geodesic.REDUCEDLENGTH | Geodesic.GEODESICSCALE):
-      B22 = Geodesic.SinCosSeries(True, ssig2, csig2, self._C2a, Geodesic.nC2_)
+      B22 = Geodesic.SinCosSeries(True, ssig2, csig2, self._C2a)
       AB2 = (1 + self._A2m1) * (B22 - self._B21)
       J12 = (self._A1m1 - self._A2m1) * sig12 + (AB1 - AB2)
       if outmask & Geodesic.REDUCEDLENGTH:
@@ -252,11 +251,10 @@ class GeodesicLine(object):
         M21 = csig12 - (t * self._ssig1 - self._csig1 * J12) * ssig2 / dn2
 
     if outmask & Geodesic.AREA:
-      B42 = Geodesic.SinCosSeries(False,
-                                  ssig2, csig2, self._C4a, Geodesic.nC4_)
+      B42 = Geodesic.SinCosSeries(False, ssig2, csig2, self._C4a)
       # real salp12, calp12
       if self._calp0 == 0 or self._salp0 == 0:
-        # alp12 = alp2 - alp1, used in atan2 so no need to normalized
+        # alp12 = alp2 - alp1, used in atan2 so no need to normalize
         salp12 = salp2 * self._calp1 - calp2 * self._salp1
         calp12 = calp2 * self._calp1 + salp2 * self._salp1
         # The right thing appears to happen if alp1 = +/-180 and alp2 = 0, viz
@@ -306,9 +304,10 @@ class GeodesicLine(object):
 
     outmask determines which fields get included and if outmask is
     omitted, then only the basic geodesic fields are computed.  The
-    LONG_NOWRAP bit prevents the longitudes being reduced to the range
-    [-180,180).  The mask is an or'ed combination of the following
-    values
+    LONG_UNROLL bit unrolls the longitudes (instead of reducing them to
+    the range [-180,180)), so that lon2 - lon1 indicates how many times
+    and in what sense the geodesic encircles the ellipsoid.  The mask is
+    an or'ed combination of the following values
 
       Geodesic.LATITUDE
       Geodesic.LONGITUDE
@@ -316,15 +315,15 @@ class GeodesicLine(object):
       Geodesic.REDUCEDLENGTH
       Geodesic.GEODESICSCALE
       Geodesic.AREA
-      Geodesic.ALL
-      Geodesic.LONG_NOWRAP
+      Geodesic.ALL (all of the above)
+      Geodesic.LONG_UNROLL
 
     """
 
     from geographiclib.geodesic import Geodesic
     Geodesic.CheckDistance(s12)
     result = {'lat1': self._lat1,
-              'lon1': self._lon1 if outmask & Geodesic.LONG_NOWRAP else
+              'lon1': self._lon1 if outmask & Geodesic.LONG_UNROLL else
               Math.AngNormalize(self._lon1),
               'azi1': self._azi1, 's12': s12}
     a12, lat2, lon2, azi2, s12, m12, M12, M21, S12 = self.GenPosition(
@@ -362,9 +361,9 @@ class GeodesicLine(object):
 
     outmask determines which fields get included and if outmask is
     omitted, then only the basic geodesic fields are computed.  The
-    LONG_NOWRAP bit prevents the longitudes being reduced to the range
-    [-180,180).  The mask is an or'ed combination of the following
-    values
+    LONG_UNROLL bit unrolls the longitudes (instead of reducing them to
+    the range [-180,180)).  The mask is an or'ed combination of the
+    following values
 
       Geodesic.LATITUDE
       Geodesic.LONGITUDE
@@ -373,15 +372,15 @@ class GeodesicLine(object):
       Geodesic.REDUCEDLENGTH
       Geodesic.GEODESICSCALE
       Geodesic.AREA
-      Geodesic.ALL
-      Geodesic.LONG_NOWRAP
+      Geodesic.ALL (all of the above)
+      Geodesic.LONG_UNROLL
 
     """
 
     from geographiclib.geodesic import Geodesic
     Geodesic.CheckDistance(a12)
     result = {'lat1': self._lat1,
-              'lon1': self._lon1 if outmask & Geodesic.LONG_NOWRAP else
+              'lon1': self._lon1 if outmask & Geodesic.LONG_UNROLL else
               Math.AngNormalize(self._lon1),
               'azi1': self._azi1, 'a12': a12}
     a12, lat2, lon2, azi2, s12, m12, M12, M21, S12 = self.GenPosition(
diff --git a/python/geographiclib/geomath.py b/python/geographiclib/geomath.py
index 0b3a19e..e136101 100644
--- a/python/geographiclib/geomath.py
+++ b/python/geographiclib/geomath.py
@@ -75,6 +75,12 @@ class Math(object):
     return -y if x < 0 else y
   atanh = staticmethod(atanh)
 
+  def norm(x, y):
+    """Private: Normalize a two-vector."""
+    r = math.hypot(x, y)
+    return x/r, y/r
+  norm = staticmethod(norm)
+
   def sum(u, v):
     """Error free transformation of a sum."""
     # Error free transformation of a sum.  Note that t can be the same as one
@@ -90,6 +96,29 @@ class Math(object):
     return s, t
   sum = staticmethod(sum)
 
+  def polyval(N, p, s, x):
+    """Evaluate a polynomial."""
+    y = float(0 if N < 0 else p[s]) # make sure the returned value is a float
+    while N > 0:
+      N -= 1; s += 1
+      y = y * x + p[s]
+    return y
+  polyval = staticmethod(polyval)
+
+  def AngRound(x):
+    """Private: Round an angle so that small values underflow to zero."""
+    # The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57
+    # for reals = 0.7 pm on the earth if x is an angle in degrees.  (This
+    # is about 1000 times more resolution than we get with angles around 90
+    # degrees.)  We use this to avoid having to deal with near singular
+    # cases when x is non-zero but tiny (e.g., 1.0e-200).
+    z = 1/16.0
+    y = abs(x)
+    # The compiler mustn't "simplify" z - (z - y) to y
+    if y < z: y = z - (z - y)
+    return 0 - y if x < 0 else y
+  AngRound = staticmethod(AngRound)
+
   def AngNormalize(x):
     """reduce angle in [-540,540) to [-180,180)"""
 
diff --git a/python/geographiclib/polygonarea.py b/python/geographiclib/polygonarea.py
index 533e36c..30e3f91 100644
--- a/python/geographiclib/polygonarea.py
+++ b/python/geographiclib/polygonarea.py
@@ -57,7 +57,7 @@ class PolygonArea(object):
     self._mask = (Geodesic.LATITUDE | Geodesic.LONGITUDE |
                   Geodesic.DISTANCE |
                   (Geodesic.EMPTY if self._polyline else
-                   Geodesic.AREA | Geodesic.LONG_NOWRAP))
+                   Geodesic.AREA | Geodesic.LONG_UNROLL))
     if not self._polyline: self._areasum = Accumulator()
     self._perimetersum = Accumulator()
     self.Clear()
diff --git a/python/setup.py b/python/setup.py
index 8cdad36..93306a1 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -15,7 +15,7 @@
 from distutils.core import setup
 
 setup(name="geographiclib",
-      version="1.40",
+      version="1.43",
       description=
         "A translation of the GeographicLib::Geodesic class to Python",
       author="Charles Karney",
diff --git a/src/DMS.cpp b/src/DMS.cpp
index 07a5e2a..233e4d0 100644
--- a/src/DMS.cpp
+++ b/src/DMS.cpp
@@ -244,7 +244,8 @@ namespace GeographicLib {
   }
 
   void DMS::DecodeLatLon(const std::string& stra, const std::string& strb,
-                         real& lat, real& lon, bool swaplatlong) {
+                         real& lat, real& lon,
+                         bool swaplatlong) {
     real a, b;
     flag ia, ib;
     a = Decode(stra, ia);
@@ -270,7 +271,6 @@ namespace GeographicLib {
     if (lon1 < -540 || lon1 >= 540)
       throw GeographicErr("Longitude " + Utility::str(lon1)
                           + "d not in [-540d, 540d)");
-    lon1 = Math::AngNormalize(lon1);
     lat = lat1;
     lon = lon1;
   }
diff --git a/src/GeoCoords.cpp b/src/GeoCoords.cpp
index e0ce6f8..5a937e3 100644
--- a/src/GeoCoords.cpp
+++ b/src/GeoCoords.cpp
@@ -2,7 +2,7 @@
  * \file GeoCoords.cpp
  * \brief Implementation for GeographicLib::GeoCoords class
  *
- * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * Copyright (c) Charles Karney (2008-2015) <charles at karney.com> and licensed
  * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
@@ -33,6 +33,7 @@ namespace GeographicLib {
                       _lat, _long, _gamma, _k);
     } else if (sa.size() == 2) {
       DMS::DecodeLatLon(sa[0], sa[1], _lat, _long, swaplatlong);
+      _long = Math::AngNormalize(_long);
       UTMUPS::Forward( _lat, _long,
                        _zone, _northp, _easting, _northing, _gamma, _k);
     } else if (sa.size() == 3) {
diff --git a/src/Geocentric.cpp b/src/Geocentric.cpp
index 5120b4f..e3f670f 100644
--- a/src/Geocentric.cpp
+++ b/src/Geocentric.cpp
@@ -152,7 +152,6 @@ namespace GeographicLib {
       }
     }
     lat = atan2(sphi, cphi) / Math::degree();
-    // Negative signs return lon in [-180, 180).  0- converts -0 to +0.
     lon = Math::atan2d(slam, clam);
     if (M)
       Rotation(sphi, cphi, slam, clam, M);
diff --git a/src/Geodesic.cpp b/src/Geodesic.cpp
index 0a0bcf9..557a400 100644
--- a/src/Geodesic.cpp
+++ b/src/Geodesic.cpp
@@ -452,7 +452,6 @@ namespace GeographicLib {
     salp2 *= swapp * lonsign; calp2 *= swapp * latsign;
 
     if (outmask & AZIMUTH) {
-      // minus signs give range [-180, 180). 0- converts -0 to +0.
       azi1 = Math::atan2d(salp1, calp1);
       azi2 = Math::atan2d(salp2, calp2);
     }
@@ -803,711 +802,1020 @@ namespace GeographicLib {
   }
 
   Math::real Geodesic::A3f(real eps) const {
-    // Evaluate sum(_A3x[k] * eps^k, k, 0, nA3x_-1) by Horner's method
-    real v = 0;
-    for (int i = nA3x_; i > 0; )
-      v = eps * v + _A3x[--i];
-    return v;
+    // Evaluate A3
+    return Math::polyval(nA3_ - 1, _A3x, eps);
   }
 
   void Geodesic::C3f(real eps, real c[]) const {
-    // Evaluate C3 coeffs by Horner's method
+    // Evaluate C3 coeffs
     // Elements c[1] thru c[nC3_ - 1] are set
-    for (int j = nC3x_, k = nC3_ - 1; k > 0; ) {
-      real t = 0;
-      for (int i = nC3_ - k; i > 0; --i) {
-        t = eps * t + _C3x[--j];
-      }
-      c[k--] = t;
-    }
-
     real mult = 1;
-    for (int k = 1; k < nC3_; ) {
+    int o = 0;
+    for (int l = 1; l < nC3_; ++l) { // l is index of C3[l]
+      int m = nC3_ - l - 1;          // order of polynomial in eps
       mult *= eps;
-      c[k++] *= mult;
+      c[l] = mult * Math::polyval(m, _C3x + o, eps);
+      o += m + 1;
     }
+    // Post condition: o == nC3x_
   }
 
   void Geodesic::C4f(real eps, real c[]) const {
-    // Evaluate C4 coeffs by Horner's method
+    // Evaluate C4 coeffs
     // Elements c[0] thru c[nC4_ - 1] are set
-    for (int j = nC4x_, k = nC4_; k > 0; ) {
-      real t = 0;
-      for (int i = nC4_ - k + 1; i > 0; --i)
-        t = eps * t + _C4x[--j];
-      c[--k] = t;
-    }
-
     real mult = 1;
-    for (int k = 1; k < nC4_; ) {
+    int o = 0;
+    for (int l = 0; l < nC4_; ++l) { // l is index of C4[l]
+      int m = nC4_ - l - 1;          // order of polynomial in eps
+      c[l] = mult * Math::polyval(m, _C4x + o, eps);
+      o += m + 1;
       mult *= eps;
-      c[k++] *= mult;
     }
+    // Post condition: o == nC4x_
   }
 
-  // Generated by Maxima on 2010-09-04 10:26:17-04:00
+  // The static const coefficient arrays in the following functions are
+  // generated by Maxima and give the coefficients of the Taylor expansions for
+  // the geodesics.  The convention on the order of these coefficients is as
+  // follows:
+  //
+  //   ascending order in the trigonometric expansion,
+  //   then powers of eps in descending order,
+  //   finally powers of n in descending order.
+  //
+  // (For some expansions, only a subset of levels occur.)  For each polynomial
+  // of order n at the lowest level, the (n+1) coefficients of the polynomial
+  // are followed by a divisor which is applied to the whole polynomial.  In
+  // this way, the coefficients are expressible with no round off error.  The
+  // sizes of the coefficient arrays are:
+  //
+  //   A1m1f, A2m1f            = floor(N/2) + 2
+  //   C1f, C1pf, C2f, A3coeff = (N^2 + 7*N - 2*floor(N/2)) / 4
+  //   C3coeff       = (N - 1) * (N^2 + 7*N - 2*floor(N/2)) / 8
+  //   C4coeff       = N * (N + 1) * (N + 5) / 6
+  //
+  // where N = GEOGRAPHICLIB_GEODESIC_ORDER
+  //         = nA1 = nA2 = nC1 = nC1p = nA3 = nC4
 
   // The scale factor A1-1 = mean value of (d/dsigma)I1 - 1
   Math::real Geodesic::A1m1f(real eps) {
-    real
-      eps2 = Math::sq(eps),
-      t;
-    switch (nA1_/2) {
-    case 0:
-      t = 0;
-      break;
-    case 1:
-      t = eps2/4;
-      break;
-    case 2:
-      t = eps2*(eps2+16)/64;
-      break;
-    case 3:
-      t = eps2*(eps2*(eps2+4)+64)/256;
-      break;
-    case 4:
-      t = eps2*(eps2*(eps2*(25*eps2+64)+256)+4096)/16384;
-      break;
-    default:
-      GEOGRAPHICLIB_STATIC_ASSERT(nA1_ >= 0 && nA1_ <= 8, "Bad value of nA1_");
-      t = 0;
-    }
+    // Generated by Maxima on 2015-05-05 18:08:12-04:00
+#if GEOGRAPHICLIB_GEODESIC_ORDER/2 == 1
+    static const real coeff[] = {
+      // (1-eps)*A1-1, polynomial in eps2 of order 1
+      1, 0, 4,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER/2 == 2
+    static const real coeff[] = {
+      // (1-eps)*A1-1, polynomial in eps2 of order 2
+      1, 16, 0, 64,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER/2 == 3
+    static const real coeff[] = {
+      // (1-eps)*A1-1, polynomial in eps2 of order 3
+      1, 4, 64, 0, 256,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER/2 == 4
+    static const real coeff[] = {
+      // (1-eps)*A1-1, polynomial in eps2 of order 4
+      25, 64, 256, 4096, 0, 16384,
+    };
+#else
+#error "Bad value for GEOGRAPHICLIB_GEODESIC_ORDER"
+#endif
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(coeff) / sizeof(real) == nA1_/2 + 2,
+                                "Coefficient array size mismatch in A1m1f");
+    int m = nA1_/2;
+    real t = Math::polyval(m, coeff, Math::sq(eps)) / coeff[m + 1];
     return (t + eps) / (1 - eps);
   }
 
   // The coefficients C1[l] in the Fourier expansion of B1
   void Geodesic::C1f(real eps, real c[]) {
+    // Generated by Maxima on 2015-05-05 18:08:12-04:00
+#if GEOGRAPHICLIB_GEODESIC_ORDER == 3
+    static const real coeff[] = {
+      // C1[1]/eps^1, polynomial in eps2 of order 1
+      3, -8, 16,
+      // C1[2]/eps^2, polynomial in eps2 of order 0
+      -1, 16,
+      // C1[3]/eps^3, polynomial in eps2 of order 0
+      -1, 48,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 4
+    static const real coeff[] = {
+      // C1[1]/eps^1, polynomial in eps2 of order 1
+      3, -8, 16,
+      // C1[2]/eps^2, polynomial in eps2 of order 1
+      1, -2, 32,
+      // C1[3]/eps^3, polynomial in eps2 of order 0
+      -1, 48,
+      // C1[4]/eps^4, polynomial in eps2 of order 0
+      -5, 512,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 5
+    static const real coeff[] = {
+      // C1[1]/eps^1, polynomial in eps2 of order 2
+      -1, 6, -16, 32,
+      // C1[2]/eps^2, polynomial in eps2 of order 1
+      1, -2, 32,
+      // C1[3]/eps^3, polynomial in eps2 of order 1
+      9, -16, 768,
+      // C1[4]/eps^4, polynomial in eps2 of order 0
+      -5, 512,
+      // C1[5]/eps^5, polynomial in eps2 of order 0
+      -7, 1280,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 6
+    static const real coeff[] = {
+      // C1[1]/eps^1, polynomial in eps2 of order 2
+      -1, 6, -16, 32,
+      // C1[2]/eps^2, polynomial in eps2 of order 2
+      -9, 64, -128, 2048,
+      // C1[3]/eps^3, polynomial in eps2 of order 1
+      9, -16, 768,
+      // C1[4]/eps^4, polynomial in eps2 of order 1
+      3, -5, 512,
+      // C1[5]/eps^5, polynomial in eps2 of order 0
+      -7, 1280,
+      // C1[6]/eps^6, polynomial in eps2 of order 0
+      -7, 2048,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 7
+    static const real coeff[] = {
+      // C1[1]/eps^1, polynomial in eps2 of order 3
+      19, -64, 384, -1024, 2048,
+      // C1[2]/eps^2, polynomial in eps2 of order 2
+      -9, 64, -128, 2048,
+      // C1[3]/eps^3, polynomial in eps2 of order 2
+      -9, 72, -128, 6144,
+      // C1[4]/eps^4, polynomial in eps2 of order 1
+      3, -5, 512,
+      // C1[5]/eps^5, polynomial in eps2 of order 1
+      35, -56, 10240,
+      // C1[6]/eps^6, polynomial in eps2 of order 0
+      -7, 2048,
+      // C1[7]/eps^7, polynomial in eps2 of order 0
+      -33, 14336,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 8
+    static const real coeff[] = {
+      // C1[1]/eps^1, polynomial in eps2 of order 3
+      19, -64, 384, -1024, 2048,
+      // C1[2]/eps^2, polynomial in eps2 of order 3
+      7, -18, 128, -256, 4096,
+      // C1[3]/eps^3, polynomial in eps2 of order 2
+      -9, 72, -128, 6144,
+      // C1[4]/eps^4, polynomial in eps2 of order 2
+      -11, 96, -160, 16384,
+      // C1[5]/eps^5, polynomial in eps2 of order 1
+      35, -56, 10240,
+      // C1[6]/eps^6, polynomial in eps2 of order 1
+      9, -14, 4096,
+      // C1[7]/eps^7, polynomial in eps2 of order 0
+      -33, 14336,
+      // C1[8]/eps^8, polynomial in eps2 of order 0
+      -429, 262144,
+    };
+#else
+#error "Bad value for GEOGRAPHICLIB_GEODESIC_ORDER"
+#endif
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(coeff) / sizeof(real) ==
+                                (nC1_*nC1_ + 7*nC1_ - 2*(nC1_/2)) / 4,
+                                "Coefficient array size mismatch in C1f");
     real
       eps2 = Math::sq(eps),
       d = eps;
-    switch (nC1_) {
-    case 0:
-      break;
-    case 1:
-      c[1] = -d/2;
-      break;
-    case 2:
-      c[1] = -d/2;
-      d *= eps;
-      c[2] = -d/16;
-      break;
-    case 3:
-      c[1] = d*(3*eps2-8)/16;
-      d *= eps;
-      c[2] = -d/16;
-      d *= eps;
-      c[3] = -d/48;
-      break;
-    case 4:
-      c[1] = d*(3*eps2-8)/16;
-      d *= eps;
-      c[2] = d*(eps2-2)/32;
-      d *= eps;
-      c[3] = -d/48;
-      d *= eps;
-      c[4] = -5*d/512;
-      break;
-    case 5:
-      c[1] = d*((6-eps2)*eps2-16)/32;
-      d *= eps;
-      c[2] = d*(eps2-2)/32;
-      d *= eps;
-      c[3] = d*(9*eps2-16)/768;
-      d *= eps;
-      c[4] = -5*d/512;
-      d *= eps;
-      c[5] = -7*d/1280;
-      break;
-    case 6:
-      c[1] = d*((6-eps2)*eps2-16)/32;
-      d *= eps;
-      c[2] = d*((64-9*eps2)*eps2-128)/2048;
-      d *= eps;
-      c[3] = d*(9*eps2-16)/768;
-      d *= eps;
-      c[4] = d*(3*eps2-5)/512;
-      d *= eps;
-      c[5] = -7*d/1280;
-      d *= eps;
-      c[6] = -7*d/2048;
-      break;
-    case 7:
-      c[1] = d*(eps2*(eps2*(19*eps2-64)+384)-1024)/2048;
-      d *= eps;
-      c[2] = d*((64-9*eps2)*eps2-128)/2048;
+    int o = 0;
+    for (int l = 1; l <= nC1_; ++l) { // l is index of C1p[l]
+      int m = (nC1_ - l) / 2;         // order of polynomial in eps^2
+      c[l] = d * Math::polyval(m, coeff + o, eps2) / coeff[o + m + 1];
+      o += m + 2;
       d *= eps;
-      c[3] = d*((72-9*eps2)*eps2-128)/6144;
-      d *= eps;
-      c[4] = d*(3*eps2-5)/512;
-      d *= eps;
-      c[5] = d*(35*eps2-56)/10240;
-      d *= eps;
-      c[6] = -7*d/2048;
-      d *= eps;
-      c[7] = -33*d/14336;
-      break;
-    case 8:
-      c[1] = d*(eps2*(eps2*(19*eps2-64)+384)-1024)/2048;
-      d *= eps;
-      c[2] = d*(eps2*(eps2*(7*eps2-18)+128)-256)/4096;
-      d *= eps;
-      c[3] = d*((72-9*eps2)*eps2-128)/6144;
-      d *= eps;
-      c[4] = d*((96-11*eps2)*eps2-160)/16384;
-      d *= eps;
-      c[5] = d*(35*eps2-56)/10240;
-      d *= eps;
-      c[6] = d*(9*eps2-14)/4096;
-      d *= eps;
-      c[7] = -33*d/14336;
-      d *= eps;
-      c[8] = -429*d/262144;
-      break;
-    default:
-      GEOGRAPHICLIB_STATIC_ASSERT(nC1_ >= 0 && nC1_ <= 8, "Bad value of nC1_");
     }
+    // Post condition: o == sizeof(coeff) / sizeof(real)
   }
 
   // The coefficients C1p[l] in the Fourier expansion of B1p
   void Geodesic::C1pf(real eps, real c[]) {
+    // Generated by Maxima on 2015-05-05 18:08:12-04:00
+#if GEOGRAPHICLIB_GEODESIC_ORDER == 3
+    static const real coeff[] = {
+      // C1p[1]/eps^1, polynomial in eps2 of order 1
+      -9, 16, 32,
+      // C1p[2]/eps^2, polynomial in eps2 of order 0
+      5, 16,
+      // C1p[3]/eps^3, polynomial in eps2 of order 0
+      29, 96,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 4
+    static const real coeff[] = {
+      // C1p[1]/eps^1, polynomial in eps2 of order 1
+      -9, 16, 32,
+      // C1p[2]/eps^2, polynomial in eps2 of order 1
+      -37, 30, 96,
+      // C1p[3]/eps^3, polynomial in eps2 of order 0
+      29, 96,
+      // C1p[4]/eps^4, polynomial in eps2 of order 0
+      539, 1536,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 5
+    static const real coeff[] = {
+      // C1p[1]/eps^1, polynomial in eps2 of order 2
+      205, -432, 768, 1536,
+      // C1p[2]/eps^2, polynomial in eps2 of order 1
+      -37, 30, 96,
+      // C1p[3]/eps^3, polynomial in eps2 of order 1
+      -225, 116, 384,
+      // C1p[4]/eps^4, polynomial in eps2 of order 0
+      539, 1536,
+      // C1p[5]/eps^5, polynomial in eps2 of order 0
+      3467, 7680,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 6
+    static const real coeff[] = {
+      // C1p[1]/eps^1, polynomial in eps2 of order 2
+      205, -432, 768, 1536,
+      // C1p[2]/eps^2, polynomial in eps2 of order 2
+      4005, -4736, 3840, 12288,
+      // C1p[3]/eps^3, polynomial in eps2 of order 1
+      -225, 116, 384,
+      // C1p[4]/eps^4, polynomial in eps2 of order 1
+      -7173, 2695, 7680,
+      // C1p[5]/eps^5, polynomial in eps2 of order 0
+      3467, 7680,
+      // C1p[6]/eps^6, polynomial in eps2 of order 0
+      38081, 61440,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 7
+    static const real coeff[] = {
+      // C1p[1]/eps^1, polynomial in eps2 of order 3
+      -4879, 9840, -20736, 36864, 73728,
+      // C1p[2]/eps^2, polynomial in eps2 of order 2
+      4005, -4736, 3840, 12288,
+      // C1p[3]/eps^3, polynomial in eps2 of order 2
+      8703, -7200, 3712, 12288,
+      // C1p[4]/eps^4, polynomial in eps2 of order 1
+      -7173, 2695, 7680,
+      // C1p[5]/eps^5, polynomial in eps2 of order 1
+      -141115, 41604, 92160,
+      // C1p[6]/eps^6, polynomial in eps2 of order 0
+      38081, 61440,
+      // C1p[7]/eps^7, polynomial in eps2 of order 0
+      459485, 516096,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 8
+    static const real coeff[] = {
+      // C1p[1]/eps^1, polynomial in eps2 of order 3
+      -4879, 9840, -20736, 36864, 73728,
+      // C1p[2]/eps^2, polynomial in eps2 of order 3
+      -86171, 120150, -142080, 115200, 368640,
+      // C1p[3]/eps^3, polynomial in eps2 of order 2
+      8703, -7200, 3712, 12288,
+      // C1p[4]/eps^4, polynomial in eps2 of order 2
+      1082857, -688608, 258720, 737280,
+      // C1p[5]/eps^5, polynomial in eps2 of order 1
+      -141115, 41604, 92160,
+      // C1p[6]/eps^6, polynomial in eps2 of order 1
+      -2200311, 533134, 860160,
+      // C1p[7]/eps^7, polynomial in eps2 of order 0
+      459485, 516096,
+      // C1p[8]/eps^8, polynomial in eps2 of order 0
+      109167851, 82575360,
+    };
+#else
+#error "Bad value for GEOGRAPHICLIB_GEODESIC_ORDER"
+#endif
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(coeff) / sizeof(real) ==
+                                (nC1p_*nC1p_ + 7*nC1p_ - 2*(nC1p_/2)) / 4,
+                                "Coefficient array size mismatch in C1pf");
     real
       eps2 = Math::sq(eps),
       d = eps;
-    switch (nC1p_) {
-    case 0:
-      break;
-    case 1:
-      c[1] = d/2;
-      break;
-    case 2:
-      c[1] = d/2;
-      d *= eps;
-      c[2] = 5*d/16;
-      break;
-    case 3:
-      c[1] = d*(16-9*eps2)/32;
-      d *= eps;
-      c[2] = 5*d/16;
-      d *= eps;
-      c[3] = 29*d/96;
-      break;
-    case 4:
-      c[1] = d*(16-9*eps2)/32;
-      d *= eps;
-      c[2] = d*(30-37*eps2)/96;
-      d *= eps;
-      c[3] = 29*d/96;
-      d *= eps;
-      c[4] = 539*d/1536;
-      break;
-    case 5:
-      c[1] = d*(eps2*(205*eps2-432)+768)/1536;
-      d *= eps;
-      c[2] = d*(30-37*eps2)/96;
-      d *= eps;
-      c[3] = d*(116-225*eps2)/384;
-      d *= eps;
-      c[4] = 539*d/1536;
-      d *= eps;
-      c[5] = 3467*d/7680;
-      break;
-    case 6:
-      c[1] = d*(eps2*(205*eps2-432)+768)/1536;
-      d *= eps;
-      c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
-      d *= eps;
-      c[3] = d*(116-225*eps2)/384;
-      d *= eps;
-      c[4] = d*(2695-7173*eps2)/7680;
-      d *= eps;
-      c[5] = 3467*d/7680;
-      d *= eps;
-      c[6] = 38081*d/61440;
-      break;
-    case 7:
-      c[1] = d*(eps2*((9840-4879*eps2)*eps2-20736)+36864)/73728;
+    int o = 0;
+    for (int l = 1; l <= nC1p_; ++l) { // l is index of C1p[l]
+      int m = (nC1p_ - l) / 2;         // order of polynomial in eps^2
+      c[l] = d * Math::polyval(m, coeff + o, eps2) / coeff[o + m + 1];
+      o += m + 2;
       d *= eps;
-      c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
-      d *= eps;
-      c[3] = d*(eps2*(8703*eps2-7200)+3712)/12288;
-      d *= eps;
-      c[4] = d*(2695-7173*eps2)/7680;
-      d *= eps;
-      c[5] = d*(41604-141115*eps2)/92160;
-      d *= eps;
-      c[6] = 38081*d/61440;
-      d *= eps;
-      c[7] = 459485*d/516096;
-      break;
-    case 8:
-      c[1] = d*(eps2*((9840-4879*eps2)*eps2-20736)+36864)/73728;
-      d *= eps;
-      c[2] = d*(eps2*((120150-86171*eps2)*eps2-142080)+115200)/368640;
-      d *= eps;
-      c[3] = d*(eps2*(8703*eps2-7200)+3712)/12288;
-      d *= eps;
-      c[4] = d*(eps2*(1082857*eps2-688608)+258720)/737280;
-      d *= eps;
-      c[5] = d*(41604-141115*eps2)/92160;
-      d *= eps;
-      c[6] = d*(533134-2200311*eps2)/860160;
-      d *= eps;
-      c[7] = 459485*d/516096;
-      d *= eps;
-      c[8] = 109167851*d/82575360;
-      break;
-    default:
-      GEOGRAPHICLIB_STATIC_ASSERT(nC1p_ >= 0 && nC1p_ <= 8,
-                                  "Bad value of nC1p_");
     }
+    // Post condition: o == sizeof(coeff) / sizeof(real)
   }
 
   // The scale factor A2-1 = mean value of (d/dsigma)I2 - 1
   Math::real Geodesic::A2m1f(real eps) {
-    real
-      eps2 = Math::sq(eps),
-      t;
-    switch (nA2_/2) {
-    case 0:
-      t = 0;
-      break;
-    case 1:
-      t = eps2/4;
-      break;
-    case 2:
-      t = eps2*(9*eps2+16)/64;
-      break;
-    case 3:
-      t = eps2*(eps2*(25*eps2+36)+64)/256;
-      break;
-    case 4:
-      t = eps2*(eps2*(eps2*(1225*eps2+1600)+2304)+4096)/16384;
-      break;
-    default:
-      GEOGRAPHICLIB_STATIC_ASSERT(nA2_ >= 0 && nA2_ <= 8, "Bad value of nA2_");
-      t = 0;
-    }
+    // Generated by Maxima on 2015-05-05 18:08:12-04:00
+#if GEOGRAPHICLIB_GEODESIC_ORDER/2 == 1
+    static const real coeff[] = {
+      // A2/(1-eps)-1, polynomial in eps2 of order 1
+      1, 0, 4,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER/2 == 2
+    static const real coeff[] = {
+      // A2/(1-eps)-1, polynomial in eps2 of order 2
+      9, 16, 0, 64,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER/2 == 3
+    static const real coeff[] = {
+      // A2/(1-eps)-1, polynomial in eps2 of order 3
+      25, 36, 64, 0, 256,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER/2 == 4
+    static const real coeff[] = {
+      // A2/(1-eps)-1, polynomial in eps2 of order 4
+      1225, 1600, 2304, 4096, 0, 16384,
+    };
+#else
+#error "Bad value for GEOGRAPHICLIB_GEODESIC_ORDER"
+#endif
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(coeff) / sizeof(real) == nA2_/2 + 2,
+                                "Coefficient array size mismatch in A2m1f");
+    int m = nA2_/2;
+    real t = Math::polyval(m, coeff, Math::sq(eps)) / coeff[m + 1];
     return t * (1 - eps) - eps;
   }
 
   // The coefficients C2[l] in the Fourier expansion of B2
   void Geodesic::C2f(real eps, real c[]) {
+    // Generated by Maxima on 2015-05-05 18:08:12-04:00
+#if GEOGRAPHICLIB_GEODESIC_ORDER == 3
+    static const real coeff[] = {
+      // C2[1]/eps^1, polynomial in eps2 of order 1
+      1, 8, 16,
+      // C2[2]/eps^2, polynomial in eps2 of order 0
+      3, 16,
+      // C2[3]/eps^3, polynomial in eps2 of order 0
+      5, 48,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 4
+    static const real coeff[] = {
+      // C2[1]/eps^1, polynomial in eps2 of order 1
+      1, 8, 16,
+      // C2[2]/eps^2, polynomial in eps2 of order 1
+      1, 6, 32,
+      // C2[3]/eps^3, polynomial in eps2 of order 0
+      5, 48,
+      // C2[4]/eps^4, polynomial in eps2 of order 0
+      35, 512,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 5
+    static const real coeff[] = {
+      // C2[1]/eps^1, polynomial in eps2 of order 2
+      1, 2, 16, 32,
+      // C2[2]/eps^2, polynomial in eps2 of order 1
+      1, 6, 32,
+      // C2[3]/eps^3, polynomial in eps2 of order 1
+      15, 80, 768,
+      // C2[4]/eps^4, polynomial in eps2 of order 0
+      35, 512,
+      // C2[5]/eps^5, polynomial in eps2 of order 0
+      63, 1280,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 6
+    static const real coeff[] = {
+      // C2[1]/eps^1, polynomial in eps2 of order 2
+      1, 2, 16, 32,
+      // C2[2]/eps^2, polynomial in eps2 of order 2
+      35, 64, 384, 2048,
+      // C2[3]/eps^3, polynomial in eps2 of order 1
+      15, 80, 768,
+      // C2[4]/eps^4, polynomial in eps2 of order 1
+      7, 35, 512,
+      // C2[5]/eps^5, polynomial in eps2 of order 0
+      63, 1280,
+      // C2[6]/eps^6, polynomial in eps2 of order 0
+      77, 2048,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 7
+    static const real coeff[] = {
+      // C2[1]/eps^1, polynomial in eps2 of order 3
+      41, 64, 128, 1024, 2048,
+      // C2[2]/eps^2, polynomial in eps2 of order 2
+      35, 64, 384, 2048,
+      // C2[3]/eps^3, polynomial in eps2 of order 2
+      69, 120, 640, 6144,
+      // C2[4]/eps^4, polynomial in eps2 of order 1
+      7, 35, 512,
+      // C2[5]/eps^5, polynomial in eps2 of order 1
+      105, 504, 10240,
+      // C2[6]/eps^6, polynomial in eps2 of order 0
+      77, 2048,
+      // C2[7]/eps^7, polynomial in eps2 of order 0
+      429, 14336,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 8
+    static const real coeff[] = {
+      // C2[1]/eps^1, polynomial in eps2 of order 3
+      41, 64, 128, 1024, 2048,
+      // C2[2]/eps^2, polynomial in eps2 of order 3
+      47, 70, 128, 768, 4096,
+      // C2[3]/eps^3, polynomial in eps2 of order 2
+      69, 120, 640, 6144,
+      // C2[4]/eps^4, polynomial in eps2 of order 2
+      133, 224, 1120, 16384,
+      // C2[5]/eps^5, polynomial in eps2 of order 1
+      105, 504, 10240,
+      // C2[6]/eps^6, polynomial in eps2 of order 1
+      33, 154, 4096,
+      // C2[7]/eps^7, polynomial in eps2 of order 0
+      429, 14336,
+      // C2[8]/eps^8, polynomial in eps2 of order 0
+      6435, 262144,
+    };
+#else
+#error "Bad value for GEOGRAPHICLIB_GEODESIC_ORDER"
+#endif
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(coeff) / sizeof(real) ==
+                                (nC2_*nC2_ + 7*nC2_ - 2*(nC2_/2)) / 4,
+                                "Coefficient array size mismatch in C2f");
     real
       eps2 = Math::sq(eps),
       d = eps;
-    switch (nC2_) {
-    case 0:
-      break;
-    case 1:
-      c[1] = d/2;
-      break;
-    case 2:
-      c[1] = d/2;
-      d *= eps;
-      c[2] = 3*d/16;
-      break;
-    case 3:
-      c[1] = d*(eps2+8)/16;
-      d *= eps;
-      c[2] = 3*d/16;
-      d *= eps;
-      c[3] = 5*d/48;
-      break;
-    case 4:
-      c[1] = d*(eps2+8)/16;
-      d *= eps;
-      c[2] = d*(eps2+6)/32;
-      d *= eps;
-      c[3] = 5*d/48;
-      d *= eps;
-      c[4] = 35*d/512;
-      break;
-    case 5:
-      c[1] = d*(eps2*(eps2+2)+16)/32;
-      d *= eps;
-      c[2] = d*(eps2+6)/32;
-      d *= eps;
-      c[3] = d*(15*eps2+80)/768;
-      d *= eps;
-      c[4] = 35*d/512;
+    int o = 0;
+    for (int l = 1; l <= nC2_; ++l) { // l is index of C2[l]
+      int m = (nC2_ - l) / 2;         // order of polynomial in eps^2
+      c[l] = d * Math::polyval(m, coeff + o, eps2) / coeff[o + m + 1];
+      o += m + 2;
       d *= eps;
-      c[5] = 63*d/1280;
-      break;
-    case 6:
-      c[1] = d*(eps2*(eps2+2)+16)/32;
-      d *= eps;
-      c[2] = d*(eps2*(35*eps2+64)+384)/2048;
-      d *= eps;
-      c[3] = d*(15*eps2+80)/768;
-      d *= eps;
-      c[4] = d*(7*eps2+35)/512;
-      d *= eps;
-      c[5] = 63*d/1280;
-      d *= eps;
-      c[6] = 77*d/2048;
-      break;
-    case 7:
-      c[1] = d*(eps2*(eps2*(41*eps2+64)+128)+1024)/2048;
-      d *= eps;
-      c[2] = d*(eps2*(35*eps2+64)+384)/2048;
-      d *= eps;
-      c[3] = d*(eps2*(69*eps2+120)+640)/6144;
-      d *= eps;
-      c[4] = d*(7*eps2+35)/512;
-      d *= eps;
-      c[5] = d*(105*eps2+504)/10240;
-      d *= eps;
-      c[6] = 77*d/2048;
-      d *= eps;
-      c[7] = 429*d/14336;
-      break;
-    case 8:
-      c[1] = d*(eps2*(eps2*(41*eps2+64)+128)+1024)/2048;
-      d *= eps;
-      c[2] = d*(eps2*(eps2*(47*eps2+70)+128)+768)/4096;
-      d *= eps;
-      c[3] = d*(eps2*(69*eps2+120)+640)/6144;
-      d *= eps;
-      c[4] = d*(eps2*(133*eps2+224)+1120)/16384;
-      d *= eps;
-      c[5] = d*(105*eps2+504)/10240;
-      d *= eps;
-      c[6] = d*(33*eps2+154)/4096;
-      d *= eps;
-      c[7] = 429*d/14336;
-      d *= eps;
-      c[8] = 6435*d/262144;
-      break;
-    default:
-      GEOGRAPHICLIB_STATIC_ASSERT(nC2_ >= 0 && nC2_ <= 8, "Bad value of nC2_");
     }
+    // Post condition: o == sizeof(coeff) / sizeof(real)
   }
 
   // The scale factor A3 = mean value of (d/dsigma)I3
   void Geodesic::A3coeff() {
-    switch (nA3_) {
-    case 0:
-      break;
-    case 1:
-      _A3x[0] = 1;
-      break;
-    case 2:
-      _A3x[0] = 1;
-      _A3x[1] = -1/real(2);
-      break;
-    case 3:
-      _A3x[0] = 1;
-      _A3x[1] = (_n-1)/2;
-      _A3x[2] = -1/real(4);
-      break;
-    case 4:
-      _A3x[0] = 1;
-      _A3x[1] = (_n-1)/2;
-      _A3x[2] = (-_n-2)/8;
-      _A3x[3] = -1/real(16);
-      break;
-    case 5:
-      _A3x[0] = 1;
-      _A3x[1] = (_n-1)/2;
-      _A3x[2] = (_n*(3*_n-1)-2)/8;
-      _A3x[3] = (-3*_n-1)/16;
-      _A3x[4] = -3/real(64);
-      break;
-    case 6:
-      _A3x[0] = 1;
-      _A3x[1] = (_n-1)/2;
-      _A3x[2] = (_n*(3*_n-1)-2)/8;
-      _A3x[3] = ((-_n-3)*_n-1)/16;
-      _A3x[4] = (-2*_n-3)/64;
-      _A3x[5] = -3/real(128);
-      break;
-    case 7:
-      _A3x[0] = 1;
-      _A3x[1] = (_n-1)/2;
-      _A3x[2] = (_n*(3*_n-1)-2)/8;
-      _A3x[3] = (_n*(_n*(5*_n-1)-3)-1)/16;
-      _A3x[4] = ((-10*_n-2)*_n-3)/64;
-      _A3x[5] = (-5*_n-3)/128;
-      _A3x[6] = -5/real(256);
-      break;
-    case 8:
-      _A3x[0] = 1;
-      _A3x[1] = (_n-1)/2;
-      _A3x[2] = (_n*(3*_n-1)-2)/8;
-      _A3x[3] = (_n*(_n*(5*_n-1)-3)-1)/16;
-      _A3x[4] = (_n*((-5*_n-20)*_n-4)-6)/128;
-      _A3x[5] = ((-5*_n-10)*_n-6)/256;
-      _A3x[6] = (-15*_n-20)/1024;
-      _A3x[7] = -25/real(2048);
-      break;
-    default:
-      GEOGRAPHICLIB_STATIC_ASSERT(nA3_ >= 0 && nA3_ <= 8, "Bad value of nA3_");
+    // Generated by Maxima on 2015-05-05 18:08:13-04:00
+#if GEOGRAPHICLIB_GEODESIC_ORDER == 3
+    static const real coeff[] = {
+      // A3, coeff of eps^2, polynomial in n of order 0
+      -1, 4,
+      // A3, coeff of eps^1, polynomial in n of order 1
+      1, -1, 2,
+      // A3, coeff of eps^0, polynomial in n of order 0
+      1, 1,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 4
+    static const real coeff[] = {
+      // A3, coeff of eps^3, polynomial in n of order 0
+      -1, 16,
+      // A3, coeff of eps^2, polynomial in n of order 1
+      -1, -2, 8,
+      // A3, coeff of eps^1, polynomial in n of order 1
+      1, -1, 2,
+      // A3, coeff of eps^0, polynomial in n of order 0
+      1, 1,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 5
+    static const real coeff[] = {
+      // A3, coeff of eps^4, polynomial in n of order 0
+      -3, 64,
+      // A3, coeff of eps^3, polynomial in n of order 1
+      -3, -1, 16,
+      // A3, coeff of eps^2, polynomial in n of order 2
+      3, -1, -2, 8,
+      // A3, coeff of eps^1, polynomial in n of order 1
+      1, -1, 2,
+      // A3, coeff of eps^0, polynomial in n of order 0
+      1, 1,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 6
+    static const real coeff[] = {
+      // A3, coeff of eps^5, polynomial in n of order 0
+      -3, 128,
+      // A3, coeff of eps^4, polynomial in n of order 1
+      -2, -3, 64,
+      // A3, coeff of eps^3, polynomial in n of order 2
+      -1, -3, -1, 16,
+      // A3, coeff of eps^2, polynomial in n of order 2
+      3, -1, -2, 8,
+      // A3, coeff of eps^1, polynomial in n of order 1
+      1, -1, 2,
+      // A3, coeff of eps^0, polynomial in n of order 0
+      1, 1,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 7
+    static const real coeff[] = {
+      // A3, coeff of eps^6, polynomial in n of order 0
+      -5, 256,
+      // A3, coeff of eps^5, polynomial in n of order 1
+      -5, -3, 128,
+      // A3, coeff of eps^4, polynomial in n of order 2
+      -10, -2, -3, 64,
+      // A3, coeff of eps^3, polynomial in n of order 3
+      5, -1, -3, -1, 16,
+      // A3, coeff of eps^2, polynomial in n of order 2
+      3, -1, -2, 8,
+      // A3, coeff of eps^1, polynomial in n of order 1
+      1, -1, 2,
+      // A3, coeff of eps^0, polynomial in n of order 0
+      1, 1,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 8
+    static const real coeff[] = {
+      // A3, coeff of eps^7, polynomial in n of order 0
+      -25, 2048,
+      // A3, coeff of eps^6, polynomial in n of order 1
+      -15, -20, 1024,
+      // A3, coeff of eps^5, polynomial in n of order 2
+      -5, -10, -6, 256,
+      // A3, coeff of eps^4, polynomial in n of order 3
+      -5, -20, -4, -6, 128,
+      // A3, coeff of eps^3, polynomial in n of order 3
+      5, -1, -3, -1, 16,
+      // A3, coeff of eps^2, polynomial in n of order 2
+      3, -1, -2, 8,
+      // A3, coeff of eps^1, polynomial in n of order 1
+      1, -1, 2,
+      // A3, coeff of eps^0, polynomial in n of order 0
+      1, 1,
+    };
+#else
+#error "Bad value for GEOGRAPHICLIB_GEODESIC_ORDER"
+#endif
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(coeff) / sizeof(real) ==
+                                (nA3_*nA3_ + 7*nA3_ - 2*(nA3_/2)) / 4,
+                                "Coefficient array size mismatch in A3f");
+    int o = 0, k = 0;
+    for (int j = nA3_ - 1; j >= 0; --j) { // coeff of eps^j
+      int m = min(nA3_ - j - 1, j);       // order of polynomial in n
+      _A3x[k++] = Math::polyval(m, coeff + o, _n) / coeff[o + m + 1];
+      o += m + 2;
     }
+    // Post condition: o == sizeof(coeff) / sizeof(real) && k == nA3x_
   }
 
   // The coefficients C3[l] in the Fourier expansion of B3
   void Geodesic::C3coeff() {
-    switch (nC3_) {
-    case 0:
-      break;
-    case 1:
-      break;
-    case 2:
-      _C3x[0] = 1/real(4);
-      break;
-    case 3:
-      _C3x[0] = (1-_n)/4;
-      _C3x[1] = 1/real(8);
-      _C3x[2] = 1/real(16);
-      break;
-    case 4:
-      _C3x[0] = (1-_n)/4;
-      _C3x[1] = 1/real(8);
-      _C3x[2] = 3/real(64);
-      _C3x[3] = (2-3*_n)/32;
-      _C3x[4] = 3/real(64);
-      _C3x[5] = 5/real(192);
-      break;
-    case 5:
-      _C3x[0] = (1-_n)/4;
-      _C3x[1] = (1-_n*_n)/8;
-      _C3x[2] = (3*_n+3)/64;
-      _C3x[3] = 5/real(128);
-      _C3x[4] = ((_n-3)*_n+2)/32;
-      _C3x[5] = (3-2*_n)/64;
-      _C3x[6] = 3/real(128);
-      _C3x[7] = (5-9*_n)/192;
-      _C3x[8] = 3/real(128);
-      _C3x[9] = 7/real(512);
-      break;
-    case 6:
-      _C3x[0] = (1-_n)/4;
-      _C3x[1] = (1-_n*_n)/8;
-      _C3x[2] = ((3-_n)*_n+3)/64;
-      _C3x[3] = (2*_n+5)/128;
-      _C3x[4] = 3/real(128);
-      _C3x[5] = ((_n-3)*_n+2)/32;
-      _C3x[6] = ((-3*_n-2)*_n+3)/64;
-      _C3x[7] = (_n+3)/128;
-      _C3x[8] = 5/real(256);
-      _C3x[9] = (_n*(5*_n-9)+5)/192;
-      _C3x[10] = (9-10*_n)/384;
-      _C3x[11] = 7/real(512);
-      _C3x[12] = (7-14*_n)/512;
-      _C3x[13] = 7/real(512);
-      _C3x[14] = 21/real(2560);
-      break;
-    case 7:
-      _C3x[0] = (1-_n)/4;
-      _C3x[1] = (1-_n*_n)/8;
-      _C3x[2] = (_n*((-5*_n-1)*_n+3)+3)/64;
-      _C3x[3] = (_n*(2*_n+2)+5)/128;
-      _C3x[4] = (11*_n+12)/512;
-      _C3x[5] = 21/real(1024);
-      _C3x[6] = ((_n-3)*_n+2)/32;
-      _C3x[7] = (_n*(_n*(2*_n-3)-2)+3)/64;
-      _C3x[8] = ((2-9*_n)*_n+6)/256;
-      _C3x[9] = (_n+5)/256;
-      _C3x[10] = 27/real(2048);
-      _C3x[11] = (_n*((5-_n)*_n-9)+5)/192;
-      _C3x[12] = ((-6*_n-10)*_n+9)/384;
-      _C3x[13] = (21-4*_n)/1536;
-      _C3x[14] = 3/real(256);
-      _C3x[15] = (_n*(10*_n-14)+7)/512;
-      _C3x[16] = (7-10*_n)/512;
-      _C3x[17] = 9/real(1024);
-      _C3x[18] = (21-45*_n)/2560;
-      _C3x[19] = 9/real(1024);
-      _C3x[20] = 11/real(2048);
-      break;
-    case 8:
-      _C3x[0] = (1-_n)/4;
-      _C3x[1] = (1-_n*_n)/8;
-      _C3x[2] = (_n*((-5*_n-1)*_n+3)+3)/64;
-      _C3x[3] = (_n*((2-2*_n)*_n+2)+5)/128;
-      _C3x[4] = (_n*(3*_n+11)+12)/512;
-      _C3x[5] = (10*_n+21)/1024;
-      _C3x[6] = 243/real(16384);
-      _C3x[7] = ((_n-3)*_n+2)/32;
-      _C3x[8] = (_n*(_n*(2*_n-3)-2)+3)/64;
-      _C3x[9] = (_n*((-6*_n-9)*_n+2)+6)/256;
-      _C3x[10] = ((1-2*_n)*_n+5)/256;
-      _C3x[11] = (69*_n+108)/8192;
-      _C3x[12] = 187/real(16384);
-      _C3x[13] = (_n*((5-_n)*_n-9)+5)/192;
-      _C3x[14] = (_n*(_n*(10*_n-6)-10)+9)/384;
-      _C3x[15] = ((-77*_n-8)*_n+42)/3072;
-      _C3x[16] = (12-_n)/1024;
-      _C3x[17] = 139/real(16384);
-      _C3x[18] = (_n*((20-7*_n)*_n-28)+14)/1024;
-      _C3x[19] = ((-7*_n-40)*_n+28)/2048;
-      _C3x[20] = (72-43*_n)/8192;
-      _C3x[21] = 127/real(16384);
-      _C3x[22] = (_n*(75*_n-90)+42)/5120;
-      _C3x[23] = (9-15*_n)/1024;
-      _C3x[24] = 99/real(16384);
-      _C3x[25] = (44-99*_n)/8192;
-      _C3x[26] = 99/real(16384);
-      _C3x[27] = 429/real(114688);
-      break;
-    default:
-      GEOGRAPHICLIB_STATIC_ASSERT(nC3_ >= 0 && nC3_ <= 8, "Bad value of nC3_");
+    // Generated by Maxima on 2015-05-05 18:08:13-04:00
+#if GEOGRAPHICLIB_GEODESIC_ORDER == 3
+    static const real coeff[] = {
+    // C3[1], coeff of eps^2, polynomial in n of order 0
+    1, 8,
+    // C3[1], coeff of eps^1, polynomial in n of order 1
+    -1, 1, 4,
+    // C3[2], coeff of eps^2, polynomial in n of order 0
+    1, 16,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 4
+    static const real coeff[] = {
+    // C3[1], coeff of eps^3, polynomial in n of order 0
+    3, 64,
+    // C3[1], coeff of eps^2, polynomial in n of order 1
+    // This is a case where a leading 0 term has been inserted to maintain the
+    // pattern in the orders of the polynomials.
+    0, 1, 8,
+    // C3[1], coeff of eps^1, polynomial in n of order 1
+    -1, 1, 4,
+    // C3[2], coeff of eps^3, polynomial in n of order 0
+    3, 64,
+    // C3[2], coeff of eps^2, polynomial in n of order 1
+    -3, 2, 32,
+    // C3[3], coeff of eps^3, polynomial in n of order 0
+    5, 192,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 5
+    static const real coeff[] = {
+    // C3[1], coeff of eps^4, polynomial in n of order 0
+    5, 128,
+    // C3[1], coeff of eps^3, polynomial in n of order 1
+    3, 3, 64,
+    // C3[1], coeff of eps^2, polynomial in n of order 2
+    -1, 0, 1, 8,
+    // C3[1], coeff of eps^1, polynomial in n of order 1
+    -1, 1, 4,
+    // C3[2], coeff of eps^4, polynomial in n of order 0
+    3, 128,
+    // C3[2], coeff of eps^3, polynomial in n of order 1
+    -2, 3, 64,
+    // C3[2], coeff of eps^2, polynomial in n of order 2
+    1, -3, 2, 32,
+    // C3[3], coeff of eps^4, polynomial in n of order 0
+    3, 128,
+    // C3[3], coeff of eps^3, polynomial in n of order 1
+    -9, 5, 192,
+    // C3[4], coeff of eps^4, polynomial in n of order 0
+    7, 512,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 6
+    static const real coeff[] = {
+    // C3[1], coeff of eps^5, polynomial in n of order 0
+    3, 128,
+    // C3[1], coeff of eps^4, polynomial in n of order 1
+    2, 5, 128,
+    // C3[1], coeff of eps^3, polynomial in n of order 2
+    -1, 3, 3, 64,
+    // C3[1], coeff of eps^2, polynomial in n of order 2
+    -1, 0, 1, 8,
+    // C3[1], coeff of eps^1, polynomial in n of order 1
+    -1, 1, 4,
+    // C3[2], coeff of eps^5, polynomial in n of order 0
+    5, 256,
+    // C3[2], coeff of eps^4, polynomial in n of order 1
+    1, 3, 128,
+    // C3[2], coeff of eps^3, polynomial in n of order 2
+    -3, -2, 3, 64,
+    // C3[2], coeff of eps^2, polynomial in n of order 2
+    1, -3, 2, 32,
+    // C3[3], coeff of eps^5, polynomial in n of order 0
+    7, 512,
+    // C3[3], coeff of eps^4, polynomial in n of order 1
+    -10, 9, 384,
+    // C3[3], coeff of eps^3, polynomial in n of order 2
+    5, -9, 5, 192,
+    // C3[4], coeff of eps^5, polynomial in n of order 0
+    7, 512,
+    // C3[4], coeff of eps^4, polynomial in n of order 1
+    -14, 7, 512,
+    // C3[5], coeff of eps^5, polynomial in n of order 0
+    21, 2560,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 7
+    static const real coeff[] = {
+    // C3[1], coeff of eps^6, polynomial in n of order 0
+    21, 1024,
+    // C3[1], coeff of eps^5, polynomial in n of order 1
+    11, 12, 512,
+    // C3[1], coeff of eps^4, polynomial in n of order 2
+    2, 2, 5, 128,
+    // C3[1], coeff of eps^3, polynomial in n of order 3
+    -5, -1, 3, 3, 64,
+    // C3[1], coeff of eps^2, polynomial in n of order 2
+    -1, 0, 1, 8,
+    // C3[1], coeff of eps^1, polynomial in n of order 1
+    -1, 1, 4,
+    // C3[2], coeff of eps^6, polynomial in n of order 0
+    27, 2048,
+    // C3[2], coeff of eps^5, polynomial in n of order 1
+    1, 5, 256,
+    // C3[2], coeff of eps^4, polynomial in n of order 2
+    -9, 2, 6, 256,
+    // C3[2], coeff of eps^3, polynomial in n of order 3
+    2, -3, -2, 3, 64,
+    // C3[2], coeff of eps^2, polynomial in n of order 2
+    1, -3, 2, 32,
+    // C3[3], coeff of eps^6, polynomial in n of order 0
+    3, 256,
+    // C3[3], coeff of eps^5, polynomial in n of order 1
+    -4, 21, 1536,
+    // C3[3], coeff of eps^4, polynomial in n of order 2
+    -6, -10, 9, 384,
+    // C3[3], coeff of eps^3, polynomial in n of order 3
+    -1, 5, -9, 5, 192,
+    // C3[4], coeff of eps^6, polynomial in n of order 0
+    9, 1024,
+    // C3[4], coeff of eps^5, polynomial in n of order 1
+    -10, 7, 512,
+    // C3[4], coeff of eps^4, polynomial in n of order 2
+    10, -14, 7, 512,
+    // C3[5], coeff of eps^6, polynomial in n of order 0
+    9, 1024,
+    // C3[5], coeff of eps^5, polynomial in n of order 1
+    -45, 21, 2560,
+    // C3[6], coeff of eps^6, polynomial in n of order 0
+    11, 2048,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 8
+    static const real coeff[] = {
+    // C3[1], coeff of eps^7, polynomial in n of order 0
+    243, 16384,
+    // C3[1], coeff of eps^6, polynomial in n of order 1
+    10, 21, 1024,
+    // C3[1], coeff of eps^5, polynomial in n of order 2
+    3, 11, 12, 512,
+    // C3[1], coeff of eps^4, polynomial in n of order 3
+    -2, 2, 2, 5, 128,
+    // C3[1], coeff of eps^3, polynomial in n of order 3
+    -5, -1, 3, 3, 64,
+    // C3[1], coeff of eps^2, polynomial in n of order 2
+    -1, 0, 1, 8,
+    // C3[1], coeff of eps^1, polynomial in n of order 1
+    -1, 1, 4,
+    // C3[2], coeff of eps^7, polynomial in n of order 0
+    187, 16384,
+    // C3[2], coeff of eps^6, polynomial in n of order 1
+    69, 108, 8192,
+    // C3[2], coeff of eps^5, polynomial in n of order 2
+    -2, 1, 5, 256,
+    // C3[2], coeff of eps^4, polynomial in n of order 3
+    -6, -9, 2, 6, 256,
+    // C3[2], coeff of eps^3, polynomial in n of order 3
+    2, -3, -2, 3, 64,
+    // C3[2], coeff of eps^2, polynomial in n of order 2
+    1, -3, 2, 32,
+    // C3[3], coeff of eps^7, polynomial in n of order 0
+    139, 16384,
+    // C3[3], coeff of eps^6, polynomial in n of order 1
+    -1, 12, 1024,
+    // C3[3], coeff of eps^5, polynomial in n of order 2
+    -77, -8, 42, 3072,
+    // C3[3], coeff of eps^4, polynomial in n of order 3
+    10, -6, -10, 9, 384,
+    // C3[3], coeff of eps^3, polynomial in n of order 3
+    -1, 5, -9, 5, 192,
+    // C3[4], coeff of eps^7, polynomial in n of order 0
+    127, 16384,
+    // C3[4], coeff of eps^6, polynomial in n of order 1
+    -43, 72, 8192,
+    // C3[4], coeff of eps^5, polynomial in n of order 2
+    -7, -40, 28, 2048,
+    // C3[4], coeff of eps^4, polynomial in n of order 3
+    -7, 20, -28, 14, 1024,
+    // C3[5], coeff of eps^7, polynomial in n of order 0
+    99, 16384,
+    // C3[5], coeff of eps^6, polynomial in n of order 1
+    -15, 9, 1024,
+    // C3[5], coeff of eps^5, polynomial in n of order 2
+    75, -90, 42, 5120,
+    // C3[6], coeff of eps^7, polynomial in n of order 0
+    99, 16384,
+    // C3[6], coeff of eps^6, polynomial in n of order 1
+    -99, 44, 8192,
+    // C3[7], coeff of eps^7, polynomial in n of order 0
+    429, 114688,
+    };
+#else
+#error "Bad value for GEOGRAPHICLIB_GEODESIC_ORDER"
+#endif
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(coeff) / sizeof(real) ==
+                                ((nC3_-1)*(nC3_*nC3_ + 7*nC3_ - 2*(nC3_/2)))/8,
+                                "Coefficient array size mismatch in C3coeff");
+    int o = 0, k = 0;
+    for (int l = 1; l < nC3_; ++l) {        // l is index of C3[l]
+      for (int j = nC3_ - 1; j >= l; --j) { // coeff of eps^j
+        int m = min(nC3_ - j - 1, j);       // order of polynomial in n
+        _C3x[k++] = Math::polyval(m, coeff + o, _n) / coeff[o + m + 1];
+        o += m + 2;
+      }
     }
+    // Post condition: o == sizeof(coeff) / sizeof(real) && k == nC3x_
   }
 
-  // Generated by Maxima on 2012-10-19 08:02:34-04:00
-
-  // The coefficients C4[l] in the Fourier expansion of I4
   void Geodesic::C4coeff() {
-    switch (nC4_) {
-    case 0:
-      break;
-    case 1:
-      _C4x[0] = 2/real(3);
-      break;
-    case 2:
-      _C4x[0] = (10-4*_n)/15;
-      _C4x[1] = -1/real(5);
-      _C4x[2] = 1/real(45);
-      break;
-    case 3:
-      _C4x[0] = (_n*(8*_n-28)+70)/105;
-      _C4x[1] = (16*_n-7)/35;
-      _C4x[2] = -2/real(105);
-      _C4x[3] = (7-16*_n)/315;
-      _C4x[4] = -2/real(105);
-      _C4x[5] = 4/real(525);
-      break;
-    case 4:
-      _C4x[0] = (_n*(_n*(4*_n+24)-84)+210)/315;
-      _C4x[1] = ((48-32*_n)*_n-21)/105;
-      _C4x[2] = (-32*_n-6)/315;
-      _C4x[3] = 11/real(315);
-      _C4x[4] = (_n*(32*_n-48)+21)/945;
-      _C4x[5] = (64*_n-18)/945;
-      _C4x[6] = -1/real(105);
-      _C4x[7] = (12-32*_n)/1575;
-      _C4x[8] = -8/real(1575);
-      _C4x[9] = 8/real(2205);
-      break;
-    case 5:
-      _C4x[0] = (_n*(_n*(_n*(16*_n+44)+264)-924)+2310)/3465;
-      _C4x[1] = (_n*(_n*(48*_n-352)+528)-231)/1155;
-      _C4x[2] = (_n*(1088*_n-352)-66)/3465;
-      _C4x[3] = (121-368*_n)/3465;
-      _C4x[4] = 4/real(1155);
-      _C4x[5] = (_n*((352-48*_n)*_n-528)+231)/10395;
-      _C4x[6] = ((704-896*_n)*_n-198)/10395;
-      _C4x[7] = (80*_n-99)/10395;
-      _C4x[8] = 4/real(1155);
-      _C4x[9] = (_n*(320*_n-352)+132)/17325;
-      _C4x[10] = (384*_n-88)/17325;
-      _C4x[11] = -8/real(1925);
-      _C4x[12] = (88-256*_n)/24255;
-      _C4x[13] = -16/real(8085);
-      _C4x[14] = 64/real(31185);
-      break;
-    case 6:
-      _C4x[0] = (_n*(_n*(_n*(_n*(100*_n+208)+572)+3432)-12012)+30030)/45045;
-      _C4x[1] = (_n*(_n*(_n*(64*_n+624)-4576)+6864)-3003)/15015;
-      _C4x[2] = (_n*((14144-10656*_n)*_n-4576)-858)/45045;
-      _C4x[3] = ((-224*_n-4784)*_n+1573)/45045;
-      _C4x[4] = (1088*_n+156)/45045;
-      _C4x[5] = 97/real(15015);
-      _C4x[6] = (_n*(_n*((-64*_n-624)*_n+4576)-6864)+3003)/135135;
-      _C4x[7] = (_n*(_n*(5952*_n-11648)+9152)-2574)/135135;
-      _C4x[8] = (_n*(5792*_n+1040)-1287)/135135;
-      _C4x[9] = (468-2944*_n)/135135;
-      _C4x[10] = 1/real(9009);
-      _C4x[11] = (_n*((4160-1440*_n)*_n-4576)+1716)/225225;
-      _C4x[12] = ((4992-8448*_n)*_n-1144)/225225;
-      _C4x[13] = (1856*_n-936)/225225;
-      _C4x[14] = 8/real(10725);
-      _C4x[15] = (_n*(3584*_n-3328)+1144)/315315;
-      _C4x[16] = (1024*_n-208)/105105;
-      _C4x[17] = -136/real(63063);
-      _C4x[18] = (832-2560*_n)/405405;
-      _C4x[19] = -128/real(135135);
-      _C4x[20] = 128/real(99099);
-      break;
-    case 7:
-      _C4x[0] = (_n*(_n*(_n*(_n*(_n*(56*_n+100)+208)+572)+3432)-12012)+30030)/
-        45045;
-      _C4x[1] = (_n*(_n*(_n*(_n*(16*_n+64)+624)-4576)+6864)-3003)/15015;
-      _C4x[2] = (_n*(_n*(_n*(1664*_n-10656)+14144)-4576)-858)/45045;
-      _C4x[3] = (_n*(_n*(10736*_n-224)-4784)+1573)/45045;
-      _C4x[4] = ((1088-4480*_n)*_n+156)/45045;
-      _C4x[5] = (291-464*_n)/45045;
-      _C4x[6] = 10/real(9009);
-      _C4x[7] = (_n*(_n*(_n*((-16*_n-64)*_n-624)+4576)-6864)+3003)/135135;
-      _C4x[8] = (_n*(_n*((5952-768*_n)*_n-11648)+9152)-2574)/135135;
-      _C4x[9] = (_n*((5792-10704*_n)*_n+1040)-1287)/135135;
-      _C4x[10] = (_n*(3840*_n-2944)+468)/135135;
-      _C4x[11] = (112*_n+15)/135135;
-      _C4x[12] = 10/real(9009);
-      _C4x[13] = (_n*(_n*(_n*(128*_n-1440)+4160)-4576)+1716)/225225;
-      _C4x[14] = (_n*(_n*(6784*_n-8448)+4992)-1144)/225225;
-      _C4x[15] = (_n*(1664*_n+1856)-936)/225225;
-      _C4x[16] = (168-1664*_n)/225225;
-      _C4x[17] = -4/real(25025);
-      _C4x[18] = (_n*((3584-1792*_n)*_n-3328)+1144)/315315;
-      _C4x[19] = ((1024-2048*_n)*_n-208)/105105;
-      _C4x[20] = (1792*_n-680)/315315;
-      _C4x[21] = 64/real(315315);
-      _C4x[22] = (_n*(3072*_n-2560)+832)/405405;
-      _C4x[23] = (2048*_n-384)/405405;
-      _C4x[24] = -512/real(405405);
-      _C4x[25] = (640-2048*_n)/495495;
-      _C4x[26] = -256/real(495495);
-      _C4x[27] = 512/real(585585);
-      break;
-    case 8:
-      _C4x[0] = (_n*(_n*(_n*(_n*(_n*(_n*(588*_n+952)+1700)+3536)+9724)+58344)-
-        204204)+510510)/765765;
-      _C4x[1] = (_n*(_n*(_n*(_n*(_n*(96*_n+272)+1088)+10608)-77792)+116688)-
-        51051)/255255;
-      _C4x[2] = (_n*(_n*(_n*(_n*(3232*_n+28288)-181152)+240448)-77792)-14586)/
-        765765;
-      _C4x[3] = (_n*(_n*((182512-154048*_n)*_n-3808)-81328)+26741)/765765;
-      _C4x[4] = (_n*(_n*(12480*_n-76160)+18496)+2652)/765765;
-      _C4x[5] = (_n*(20960*_n-7888)+4947)/765765;
-      _C4x[6] = (4192*_n+850)/765765;
-      _C4x[7] = 193/real(85085);
-      _C4x[8] = (_n*(_n*(_n*(_n*((-96*_n-272)*_n-1088)-10608)+77792)-116688)+
-        51051)/2297295;
-      _C4x[9] = (_n*(_n*(_n*((-1344*_n-13056)*_n+101184)-198016)+155584)-43758)/
-        2297295;
-      _C4x[10] = (_n*(_n*(_n*(103744*_n-181968)+98464)+17680)-21879)/2297295;
-      _C4x[11] = (_n*(_n*(52608*_n+65280)-50048)+7956)/2297295;
-      _C4x[12] = ((1904-39840*_n)*_n+255)/2297295;
-      _C4x[13] = (510-1472*_n)/459459;
-      _C4x[14] = 349/real(2297295);
-      _C4x[15] = (_n*(_n*(_n*(_n*(160*_n+2176)-24480)+70720)-77792)+29172)/
-        3828825;
-      _C4x[16] = (_n*(_n*((115328-41472*_n)*_n-143616)+84864)-19448)/3828825;
-      _C4x[17] = (_n*((28288-126528*_n)*_n+31552)-15912)/3828825;
-      _C4x[18] = (_n*(64256*_n-28288)+2856)/3828825;
-      _C4x[19] = (-928*_n-612)/3828825;
-      _C4x[20] = 464/real(1276275);
-      _C4x[21] = (_n*(_n*(_n*(7168*_n-30464)+60928)-56576)+19448)/5360355;
-      _C4x[22] = (_n*(_n*(35840*_n-34816)+17408)-3536)/1786785;
-      _C4x[23] = ((30464-2560*_n)*_n-11560)/5360355;
-      _C4x[24] = (1088-16384*_n)/5360355;
-      _C4x[25] = -16/real(97461);
-      _C4x[26] = (_n*((52224-32256*_n)*_n-43520)+14144)/6891885;
-      _C4x[27] = ((34816-77824*_n)*_n-6528)/6891885;
-      _C4x[28] = (26624*_n-8704)/6891885;
-      _C4x[29] = 128/real(2297295);
-      _C4x[30] = (_n*(45056*_n-34816)+10880)/8423415;
-      _C4x[31] = (24576*_n-4352)/8423415;
-      _C4x[32] = -6784/real(8423415);
-      _C4x[33] = (8704-28672*_n)/9954945;
-      _C4x[34] = -1024/real(3318315);
-      _C4x[35] = 1024/real(1640925);
-      break;
-    default:
-      GEOGRAPHICLIB_STATIC_ASSERT(nC4_ >= 0 && nC4_ <= 8, "Bad value of nC4_");
+    // Generated by Maxima on 2015-05-05 18:08:13-04:00
+#if GEOGRAPHICLIB_GEODESIC_ORDER == 3
+    static const real coeff[] = {
+      // C4[0], coeff of eps^2, polynomial in n of order 0
+      -2, 105,
+      // C4[0], coeff of eps^1, polynomial in n of order 1
+      16, -7, 35,
+      // C4[0], coeff of eps^0, polynomial in n of order 2
+      8, -28, 70, 105,
+      // C4[1], coeff of eps^2, polynomial in n of order 0
+      -2, 105,
+      // C4[1], coeff of eps^1, polynomial in n of order 1
+      -16, 7, 315,
+      // C4[2], coeff of eps^2, polynomial in n of order 0
+      4, 525,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 4
+    static const real coeff[] = {
+      // C4[0], coeff of eps^3, polynomial in n of order 0
+      11, 315,
+      // C4[0], coeff of eps^2, polynomial in n of order 1
+      -32, -6, 315,
+      // C4[0], coeff of eps^1, polynomial in n of order 2
+      -32, 48, -21, 105,
+      // C4[0], coeff of eps^0, polynomial in n of order 3
+      4, 24, -84, 210, 315,
+      // C4[1], coeff of eps^3, polynomial in n of order 0
+      -1, 105,
+      // C4[1], coeff of eps^2, polynomial in n of order 1
+      64, -18, 945,
+      // C4[1], coeff of eps^1, polynomial in n of order 2
+      32, -48, 21, 945,
+      // C4[2], coeff of eps^3, polynomial in n of order 0
+      -8, 1575,
+      // C4[2], coeff of eps^2, polynomial in n of order 1
+      -32, 12, 1575,
+      // C4[3], coeff of eps^3, polynomial in n of order 0
+      8, 2205,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 5
+    static const real coeff[] = {
+      // C4[0], coeff of eps^4, polynomial in n of order 0
+      4, 1155,
+      // C4[0], coeff of eps^3, polynomial in n of order 1
+      -368, 121, 3465,
+      // C4[0], coeff of eps^2, polynomial in n of order 2
+      1088, -352, -66, 3465,
+      // C4[0], coeff of eps^1, polynomial in n of order 3
+      48, -352, 528, -231, 1155,
+      // C4[0], coeff of eps^0, polynomial in n of order 4
+      16, 44, 264, -924, 2310, 3465,
+      // C4[1], coeff of eps^4, polynomial in n of order 0
+      4, 1155,
+      // C4[1], coeff of eps^3, polynomial in n of order 1
+      80, -99, 10395,
+      // C4[1], coeff of eps^2, polynomial in n of order 2
+      -896, 704, -198, 10395,
+      // C4[1], coeff of eps^1, polynomial in n of order 3
+      -48, 352, -528, 231, 10395,
+      // C4[2], coeff of eps^4, polynomial in n of order 0
+      -8, 1925,
+      // C4[2], coeff of eps^3, polynomial in n of order 1
+      384, -88, 17325,
+      // C4[2], coeff of eps^2, polynomial in n of order 2
+      320, -352, 132, 17325,
+      // C4[3], coeff of eps^4, polynomial in n of order 0
+      -16, 8085,
+      // C4[3], coeff of eps^3, polynomial in n of order 1
+      -256, 88, 24255,
+      // C4[4], coeff of eps^4, polynomial in n of order 0
+      64, 31185,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 6
+    static const real coeff[] = {
+      // C4[0], coeff of eps^5, polynomial in n of order 0
+      97, 15015,
+      // C4[0], coeff of eps^4, polynomial in n of order 1
+      1088, 156, 45045,
+      // C4[0], coeff of eps^3, polynomial in n of order 2
+      -224, -4784, 1573, 45045,
+      // C4[0], coeff of eps^2, polynomial in n of order 3
+      -10656, 14144, -4576, -858, 45045,
+      // C4[0], coeff of eps^1, polynomial in n of order 4
+      64, 624, -4576, 6864, -3003, 15015,
+      // C4[0], coeff of eps^0, polynomial in n of order 5
+      100, 208, 572, 3432, -12012, 30030, 45045,
+      // C4[1], coeff of eps^5, polynomial in n of order 0
+      1, 9009,
+      // C4[1], coeff of eps^4, polynomial in n of order 1
+      -2944, 468, 135135,
+      // C4[1], coeff of eps^3, polynomial in n of order 2
+      5792, 1040, -1287, 135135,
+      // C4[1], coeff of eps^2, polynomial in n of order 3
+      5952, -11648, 9152, -2574, 135135,
+      // C4[1], coeff of eps^1, polynomial in n of order 4
+      -64, -624, 4576, -6864, 3003, 135135,
+      // C4[2], coeff of eps^5, polynomial in n of order 0
+      8, 10725,
+      // C4[2], coeff of eps^4, polynomial in n of order 1
+      1856, -936, 225225,
+      // C4[2], coeff of eps^3, polynomial in n of order 2
+      -8448, 4992, -1144, 225225,
+      // C4[2], coeff of eps^2, polynomial in n of order 3
+      -1440, 4160, -4576, 1716, 225225,
+      // C4[3], coeff of eps^5, polynomial in n of order 0
+      -136, 63063,
+      // C4[3], coeff of eps^4, polynomial in n of order 1
+      1024, -208, 105105,
+      // C4[3], coeff of eps^3, polynomial in n of order 2
+      3584, -3328, 1144, 315315,
+      // C4[4], coeff of eps^5, polynomial in n of order 0
+      -128, 135135,
+      // C4[4], coeff of eps^4, polynomial in n of order 1
+      -2560, 832, 405405,
+      // C4[5], coeff of eps^5, polynomial in n of order 0
+      128, 99099,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 7
+    static const real coeff[] = {
+      // C4[0], coeff of eps^6, polynomial in n of order 0
+      10, 9009,
+      // C4[0], coeff of eps^5, polynomial in n of order 1
+      -464, 291, 45045,
+      // C4[0], coeff of eps^4, polynomial in n of order 2
+      -4480, 1088, 156, 45045,
+      // C4[0], coeff of eps^3, polynomial in n of order 3
+      10736, -224, -4784, 1573, 45045,
+      // C4[0], coeff of eps^2, polynomial in n of order 4
+      1664, -10656, 14144, -4576, -858, 45045,
+      // C4[0], coeff of eps^1, polynomial in n of order 5
+      16, 64, 624, -4576, 6864, -3003, 15015,
+      // C4[0], coeff of eps^0, polynomial in n of order 6
+      56, 100, 208, 572, 3432, -12012, 30030, 45045,
+      // C4[1], coeff of eps^6, polynomial in n of order 0
+      10, 9009,
+      // C4[1], coeff of eps^5, polynomial in n of order 1
+      112, 15, 135135,
+      // C4[1], coeff of eps^4, polynomial in n of order 2
+      3840, -2944, 468, 135135,
+      // C4[1], coeff of eps^3, polynomial in n of order 3
+      -10704, 5792, 1040, -1287, 135135,
+      // C4[1], coeff of eps^2, polynomial in n of order 4
+      -768, 5952, -11648, 9152, -2574, 135135,
+      // C4[1], coeff of eps^1, polynomial in n of order 5
+      -16, -64, -624, 4576, -6864, 3003, 135135,
+      // C4[2], coeff of eps^6, polynomial in n of order 0
+      -4, 25025,
+      // C4[2], coeff of eps^5, polynomial in n of order 1
+      -1664, 168, 225225,
+      // C4[2], coeff of eps^4, polynomial in n of order 2
+      1664, 1856, -936, 225225,
+      // C4[2], coeff of eps^3, polynomial in n of order 3
+      6784, -8448, 4992, -1144, 225225,
+      // C4[2], coeff of eps^2, polynomial in n of order 4
+      128, -1440, 4160, -4576, 1716, 225225,
+      // C4[3], coeff of eps^6, polynomial in n of order 0
+      64, 315315,
+      // C4[3], coeff of eps^5, polynomial in n of order 1
+      1792, -680, 315315,
+      // C4[3], coeff of eps^4, polynomial in n of order 2
+      -2048, 1024, -208, 105105,
+      // C4[3], coeff of eps^3, polynomial in n of order 3
+      -1792, 3584, -3328, 1144, 315315,
+      // C4[4], coeff of eps^6, polynomial in n of order 0
+      -512, 405405,
+      // C4[4], coeff of eps^5, polynomial in n of order 1
+      2048, -384, 405405,
+      // C4[4], coeff of eps^4, polynomial in n of order 2
+      3072, -2560, 832, 405405,
+      // C4[5], coeff of eps^6, polynomial in n of order 0
+      -256, 495495,
+      // C4[5], coeff of eps^5, polynomial in n of order 1
+      -2048, 640, 495495,
+      // C4[6], coeff of eps^6, polynomial in n of order 0
+      512, 585585,
+    };
+#elif GEOGRAPHICLIB_GEODESIC_ORDER == 8
+    static const real coeff[] = {
+      // C4[0], coeff of eps^7, polynomial in n of order 0
+      193, 85085,
+      // C4[0], coeff of eps^6, polynomial in n of order 1
+      4192, 850, 765765,
+      // C4[0], coeff of eps^5, polynomial in n of order 2
+      20960, -7888, 4947, 765765,
+      // C4[0], coeff of eps^4, polynomial in n of order 3
+      12480, -76160, 18496, 2652, 765765,
+      // C4[0], coeff of eps^3, polynomial in n of order 4
+      -154048, 182512, -3808, -81328, 26741, 765765,
+      // C4[0], coeff of eps^2, polynomial in n of order 5
+      3232, 28288, -181152, 240448, -77792, -14586, 765765,
+      // C4[0], coeff of eps^1, polynomial in n of order 6
+      96, 272, 1088, 10608, -77792, 116688, -51051, 255255,
+      // C4[0], coeff of eps^0, polynomial in n of order 7
+      588, 952, 1700, 3536, 9724, 58344, -204204, 510510, 765765,
+      // C4[1], coeff of eps^7, polynomial in n of order 0
+      349, 2297295,
+      // C4[1], coeff of eps^6, polynomial in n of order 1
+      -1472, 510, 459459,
+      // C4[1], coeff of eps^5, polynomial in n of order 2
+      -39840, 1904, 255, 2297295,
+      // C4[1], coeff of eps^4, polynomial in n of order 3
+      52608, 65280, -50048, 7956, 2297295,
+      // C4[1], coeff of eps^3, polynomial in n of order 4
+      103744, -181968, 98464, 17680, -21879, 2297295,
+      // C4[1], coeff of eps^2, polynomial in n of order 5
+      -1344, -13056, 101184, -198016, 155584, -43758, 2297295,
+      // C4[1], coeff of eps^1, polynomial in n of order 6
+      -96, -272, -1088, -10608, 77792, -116688, 51051, 2297295,
+      // C4[2], coeff of eps^7, polynomial in n of order 0
+      464, 1276275,
+      // C4[2], coeff of eps^6, polynomial in n of order 1
+      -928, -612, 3828825,
+      // C4[2], coeff of eps^5, polynomial in n of order 2
+      64256, -28288, 2856, 3828825,
+      // C4[2], coeff of eps^4, polynomial in n of order 3
+      -126528, 28288, 31552, -15912, 3828825,
+      // C4[2], coeff of eps^3, polynomial in n of order 4
+      -41472, 115328, -143616, 84864, -19448, 3828825,
+      // C4[2], coeff of eps^2, polynomial in n of order 5
+      160, 2176, -24480, 70720, -77792, 29172, 3828825,
+      // C4[3], coeff of eps^7, polynomial in n of order 0
+      -16, 97461,
+      // C4[3], coeff of eps^6, polynomial in n of order 1
+      -16384, 1088, 5360355,
+      // C4[3], coeff of eps^5, polynomial in n of order 2
+      -2560, 30464, -11560, 5360355,
+      // C4[3], coeff of eps^4, polynomial in n of order 3
+      35840, -34816, 17408, -3536, 1786785,
+      // C4[3], coeff of eps^3, polynomial in n of order 4
+      7168, -30464, 60928, -56576, 19448, 5360355,
+      // C4[4], coeff of eps^7, polynomial in n of order 0
+      128, 2297295,
+      // C4[4], coeff of eps^6, polynomial in n of order 1
+      26624, -8704, 6891885,
+      // C4[4], coeff of eps^5, polynomial in n of order 2
+      -77824, 34816, -6528, 6891885,
+      // C4[4], coeff of eps^4, polynomial in n of order 3
+      -32256, 52224, -43520, 14144, 6891885,
+      // C4[5], coeff of eps^7, polynomial in n of order 0
+      -6784, 8423415,
+      // C4[5], coeff of eps^6, polynomial in n of order 1
+      24576, -4352, 8423415,
+      // C4[5], coeff of eps^5, polynomial in n of order 2
+      45056, -34816, 10880, 8423415,
+      // C4[6], coeff of eps^7, polynomial in n of order 0
+      -1024, 3318315,
+      // C4[6], coeff of eps^6, polynomial in n of order 1
+      -28672, 8704, 9954945,
+      // C4[7], coeff of eps^7, polynomial in n of order 0
+      1024, 1640925,
+    };
+#else
+#error "Bad value for GEOGRAPHICLIB_GEODESIC_ORDER"
+#endif
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(coeff) / sizeof(real) ==
+                                (nC4_ * (nC4_ + 1) * (nC4_ + 5)) / 6,
+                                "Coefficient array size mismatch in C4coeff");
+    int o = 0, k = 0;
+    for (int l = 0; l < nC4_; ++l) {        // l is index of C4[l]
+      for (int j = nC4_ - 1; j >= l; --j) { // coeff of eps^j
+        int m = nC4_ - j - 1;               // order of polynomial in n
+        _C4x[k++] = Math::polyval(m, coeff + o, _n) / coeff[o + m + 1];
+        o += m + 2;
+      }
     }
+    // Post condition: o == sizeof(coeff) / sizeof(real) && k == nC4x_
   }
 
 } // namespace GeographicLib
diff --git a/src/GeodesicExact.cpp b/src/GeodesicExact.cpp
index 213911c..c677d2f 100644
--- a/src/GeodesicExact.cpp
+++ b/src/GeodesicExact.cpp
@@ -476,7 +476,6 @@ namespace GeographicLib {
     salp2 *= swapp * lonsign; calp2 *= swapp * latsign;
 
     if (outmask & AZIMUTH) {
-      // minus signs give range [-180, 180). 0- converts -0 to +0.
       azi1 = Math::atan2d(salp1, calp1);
       azi2 = Math::atan2d(salp2, calp2);
     }
@@ -825,41 +824,19 @@ namespace GeographicLib {
   }
 
   void GeodesicExact::C4f(real eps, real c[]) const {
-    // Evaluate C4 coeffs by Horner's method
+    // Evaluate C4 coeffs
     // Elements c[0] thru c[nC4_ - 1] are set
-    for (int j = nC4x_, k = nC4_; k; ) {
-      real t = 0;
-      for (int i = nC4_ - k + 1; i; --i)
-        t = eps * t + _C4x[--j];
-      c[--k] = t;
-    }
-
     real mult = 1;
-    for (int k = 1; k < nC4_; ) {
+    int o = 0;
+    for (int l = 0; l < nC4_; ++l) { // l is index of C4[l]
+      int m = nC4_ - l - 1;          // order of polynomial in eps
+      c[l] = mult * Math::polyval(m, _C4x + o, eps);
+      o += m + 1;
       mult *= eps;
-      c[k++] *= mult;
-    }
-  }
-
-  // Geodesic.cpp contains explicit expressions for _C4x[l].  However this
-  // results in extraordinarily long compiler times with real = quad (7 mins)
-  // or mpreal (15 mins).  So instead we evaluate _C4x[l] by using the Horner
-  // recursion with the coefficient stored in an array by rawC4coeff.
-
-  void GeodesicExact::C4coeff() {
-    const real* cc = rawC4coeff();
-    // Coefficients for C[4,m]
-    for (int m = 0, k = 0, h = 0; m < nC4_; ++m) {
-      // eps^j coefficient
-      for (int j = m; j < nC4_; ++j) {
-        real t = 0;
-        // n^l coefficient
-        for (int l = nC4_ - j; l--;)
-          t = _n * t + cc[h++];
-        _C4x[k++] = t/cc[h++];
-      }
     }
-    return;
+    // Post condition: o == nC4x_
+    if  (!(o == nC4x_))
+      throw GeographicErr("C4 misalignment");
   }
 
 } // namespace GeographicLib
diff --git a/src/GeodesicExactC4.cpp b/src/GeodesicExactC4.cpp
index 298d20b..7978c69 100644
--- a/src/GeodesicExactC4.cpp
+++ b/src/GeodesicExactC4.cpp
@@ -2,8 +2,8 @@
  * \file GeodesicExactC4.cpp
  * \brief Implementation for GeographicLib::GeodesicExact::rawC4coeff
  *
- * Copyright (c) Charles Karney (2014) <charles at karney.com> and licensed under
- * the MIT/X11 License.  For more information, see
+ * Copyright (c) Charles Karney (2014-2015) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
  * This function is split from the rest of the implementation of
@@ -26,97 +26,94 @@ namespace GeographicLib {
   // doubles; then the computation of the full double coefficient involves only
   // a single rounding operation.
 
-  // Generated by Maxima on 2014-07-22 08:10:46-04:00
-  // The coefficients n^k in C4[l] in the Fourier expansion of I4
-  const Math::real* GeodesicExact::rawC4coeff() {
+  void GeodesicExact::C4coeff() {
+    // Generated by Maxima on 2015-05-05 17:18:06-04:00
 #if GEOGRAPHICLIB_GEODESICEXACT_ORDER == 24
     static const real coeff[] = {
-      // _C4x[0]
-      real(0x71a68037fdf14LL),real(0x81ebac5d53b48LL),real(0x957440e8ac5fcLL),
-      real(0xad1ce56088670LL),real(0xca0c260c189e4LL),real(0xedd10e292f598LL),
-      real(0x11a912af9e18ccLL),real(0x1534f4af92bec0LL),
-      real(0x19c5b078ed00b4LL),real(0x1fc05a701dd7e8LL),
-      real(0x27bd1031afaf9cLL),real(0x32a7dc61183710LL),
-      real(0x41fc58560eb384LL),real(0x583759590a1238LL),
-      real(0x79bd058a3bfa6cLL),real(0xaecdc650561f60LL),
-      real(0x108312ea2251254LL),real(0x1abbd57b12fd488LL),
-      real(0x2fbd21c97d5693cLL),real(0x634bf45b6b1a7b0LL),
-      real(0x11110dffb6688d24LL),real(0x666653fe46734ed8LL),
-      reale(-5735LL,0x9da06096c6c0cLL),reale(14335LL,0xf5ef0e870f1e2LL),
+      // C4[0], coeff of eps^23, polynomial in n of order 0
+      real(2113LL),real(0x209510dLL),
+      // C4[0], coeff of eps^22, polynomial in n of order 1
+      real(0x4f2fa0LL),real(0x13852eLL),real(0xcb8314033LL),
+      // C4[0], coeff of eps^21, polynomial in n of order 2
+      real(0x1285360LL),real(-0x92a110LL),real(0x6d084fLL),
+      real(0x147638f7f9LL),
+      // C4[0], coeff of eps^20, polynomial in n of order 3
+      real(0x33fcdea140LL),real(-0x21fe753a80LL),real(0x10cd7f3dc0LL),
+      real(0x421366044LL),real(0x205dc0bcbd6d7LL),
+      // C4[0], coeff of eps^19, polynomial in n of order 4
+      real(0x4114538e4c0LL),real(-0x2f55bac3db0LL),real(0x1ee26e63c60LL),
+      real(-0xf3f108c690LL),real(0xb50b862ee7LL),real(0x19244124e56e27LL),
+      // C4[0], coeff of eps^18, polynomial in n of order 5
+      real(0x303f35e1bc93a0LL),real(-0x24e1f056b1d580LL),
+      real(0x1ab9fe0d1d4d60LL),real(-0x1164c583e996c0LL),
+      real(0x892da1e80cb20LL),real(0x2194519fdb596LL),
+      reale(3071LL,0xfdd7cc41833d5LL),
+      // C4[0], coeff of eps^17, polynomial in n of order 6
+      real(0x4aad22c875ed20LL),real(-0x3a4801a1c6bad0LL),
+      real(0x2c487fb318d4c0LL),real(-0x1ff24d7cfd75b0LL),
+      real(0x14ba39245f1460LL),real(-0xa32e190328e90LL),
+      real(0x78c93074dfcffLL),reale(3071LL,0xfdd7cc41833d5LL),
+      // C4[0], coeff of eps^16, polynomial in n of order 7
+      real(0x33d84b92096e100LL),real(-0x286d35d824ffe00LL),
+      real(0x1f3d33e2e951300LL),real(-0x178f58435181400LL),
+      real(0x10e7992a3756500LL),real(-0xaed7fa8609aa00LL),
+      real(0x55d8ac87b09700LL),real(0x14e51e43945a10LL),
       reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[1]
-      real(0xd0da1980ba0LL),real(0x10803fb20d70LL),real(0x151a70ced0c0LL),
-      real(0x1b569dc61a10LL),real(0x23ecd2ce6de0LL),real(0x2ff80cba60b0LL),
-      real(0x413672596700LL),real(0x5a7b8b75a550LL),real(0x8082f2984020LL),
-      real(0xbb859b75abf0LL),real(0x11a6bf1637d40LL),real(0x1b9a143813890LL),
-      real(0x2d2aacb8da260LL),real(0x4e2c5253a0f30LL),real(0x914a9e2ed3380LL),
-      real(0x128a302f4ef3d0LL),real(0x2b2226f5e6b4a0LL),
-      real(0x7a36190e0daa70LL),real(0x1e8d8643836a9c0LL),
-      real(0x129e3dd12414f710LL),reale(-2185LL,0x790024cbb96e0LL),
-      reale(3276LL,0xca7fc8ce69db0LL),real(-0x5999897e7da4e4fdLL),
-      reale(7167LL,0xfaf78743878f1LL),
-      // _C4x[2]
-      real(0x65e46db33460LL),real(0x82b39a7b3380LL),real(0xa9e8c6cf36a0LL),
-      real(0xe0317d0fa0c0LL),real(0x12cd0399df4e0LL),real(0x19b576ed17600LL),
-      real(0x23ecb07d1c720LL),real(0x33785d3e48b40LL),real(0x4bedad56b0560LL),
-      real(0x73f4d1eccb880LL),real(0xb8a5a1bdc07a0LL),real(0x1359aad161d5c0LL),
-      real(0x22a518d96d25e0LL),real(0x43a50f3643bb00LL),
-      real(0x95133a4d60b820LL),real(0x18b02de0f4e4040LL),
-      real(0x5ac287501571660LL),real(0x31a5fa2db58d3d80LL),
-      reale(-5088LL,0xf42d1707298a0LL),reale(6752LL,0x2ce8487308ac0LL),
-      reale(-2185LL,0x790024cbb96e0LL),real(-0x199994ff919cd3b6LL),
+      // C4[0], coeff of eps^15, polynomial in n of order 8
+      real(0x577cdb6aaee0d80LL),real(-0x4283c1e96325470LL),
+      real(0x32feef20b794020LL),real(-0x26ea2e388de1a50LL),
+      real(0x1d13f6131e5d6c0LL),real(-0x14b9aa66e270230LL),
+      real(0xd5657196ac0560LL),real(-0x6880b0118a9810LL),
+      real(0x4d0f1755168ee7LL),reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[0], coeff of eps^14, polynomial in n of order 9
+      real(0xa82410caed14920LL),real(-0x774e0539d2de300LL),
+      real(0x57ddc01c62bc8e0LL),real(-0x41de50dfff43e40LL),
+      real(0x31742450a1bdca0LL),real(-0x248524531975180LL),
+      real(0x19d013c6e35ec60LL),real(-0x1084c003a0434c0LL),
+      real(0x8103758ad86020LL),real(0x1f2409edf5e286LL),
       reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[3]
-      real(0x1d8a60744340LL),real(0x26a12f47d0f0LL),real(0x3353c9ffe420LL),
-      real(0x4570fd193850LL),real(0x5fe8194aa900LL),real(0x87a7057de1b0LL),
-      real(0xc54ab4558de0LL),real(0x12897a64b8910LL),real(0x1d013b7f18ec0LL),
-      real(0x2fb033b96ea70LL),real(0x5384f3e45a7a0LL),real(0x9f10eb531c1d0LL),
-      real(0x154d17c994d480LL),real(0x36ab828088cb30LL),
-      real(0xc1d47f99841160LL),real(0x65b5717bb21c290LL),
-      real(-0x269fd1ef6edfa5c0LL),real(0x2dc2d3f3f9f963f0LL),
-      real(-0xf46c321c1b54e0LL),real(-0x14642b52c5fe94b0LL),
-      real(0x6b46a122c3b5c05LL),reale(3071LL,0xfdd7cc41833d5LL),
-      // _C4x[4]
-      real(0x3804d31f10c0LL),real(0x4b2ec20ad280LL),real(0x66f0ea418040LL),
-      real(0x903f2204b400LL),real(0xcfad72d447c0LL),real(0x134cb9fa41580LL),
-      real(0x1dd70e331b740LL),real(0x306dd8a084700LL),real(0x53a0a0b201ec0LL),
-      real(0x9cd7c33c89880LL),real(0x14a7b599a9ce40LL),
-      real(0x340e256f2c5a00LL),real(0xb4e7d2cf7515c0LL),
-      real(0x5cc8e678862db80LL),real(-0x22304c48df63bac0LL),
-      real(0x25f7d3a888bb6d00LL),real(0x3210c8a6905acc0LL),
-      real(-0x131873ea3222a180LL),real(0x4a33217f63b9c40LL),
-      real(0xaa39109cb79b1cLL),reale(3071LL,0xfdd7cc41833d5LL),
-      // _C4x[5]
-      real(0x6a525328e6e0LL),real(0x93f17033fb30LL),real(0xd36a04706f00LL),
-      real(0x137db4aaadad0LL),real(0x1de17febed720LL),real(0x300ece09a4c70LL),
-      real(0x5230537724340LL),real(0x98911a7bab410LL),real(0x13df6f0042d760LL),
-      real(0x317f809c6f75b0LL),real(0xa9d28ba9acb780LL),
-      real(0x55d121ad9d8f550LL),real(-0x1efee1555125f860LL),
-      real(0x21073529064696f0LL),real(0x486394f46ccebc0LL),
-      real(-0x11777145e6374170LL),real(0x54159fc268987e0LL),
-      real(-0x1fa4dd5835d2fd0LL),real(0x13d87fc86cca643LL),
+      // C4[0], coeff of eps^13, polynomial in n of order 10
+      real(0x1c6d2d6120015ca0LL),real(-0x104cedef383403b0LL),
+      real(0xab9dd58c3e3d880LL),real(-0x78a4e83e5604750LL),
+      real(0x57aa7cf5406e460LL),real(-0x4067a93ceeb2cf0LL),
+      real(0x2ed62190d975c40LL),real(-0x20c076adcb21890LL),
+      real(0x14cfa9cb9e01c20LL),real(-0xa1e25734956e30LL),
+      real(0x76afbfe4ae6c4dLL),reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[0], coeff of eps^12, polynomial in n of order 11
+      real(0x500e39e18e75c40LL),real(-0xb866fe4aaa63680LL),
+      real(0x4337db32e526ac0LL),real(-0x264cce8c21af200LL),
+      real(0x18fb7ba247a4140LL),real(-0x115709558576d80LL),
+      real(0xc5be96cd3dcfc0LL),real(-0x8cdca1395db900LL),
+      real(0x611fe1a7e00640LL),real(-0x3d26e46827e480LL),
+      real(0x1d93970a8fd4c0LL),real(0x70bf87cc17354LL),
       reale(3071LL,0xfdd7cc41833d5LL),
-      // _C4x[6]
-      real(0x5c9c64c833ea0LL),real(0x87cba49bc6200LL),real(0xcee016a8ff560LL),
-      real(0x14a860e941a1c0LL),real(0x231567934bf020LL),
-      real(0x40a648fc642980LL),real(0x85b2123b2c36e0LL),
-      real(0x14a4159e5b98140LL),real(0x462d226dee7d1a0LL),
-      real(0x2316888f6f2f3100LL),reale(-3199LL,0xcb6e58663c860LL),
-      reale(3311LL,0xbf8f265e6c0c0LL),real(0x2372de10575f2320LL),
-      real(-0x70af5543c56e4780LL),real(0x24bbd6e6395ee9e0LL),
-      real(-0x116009bab4325fc0LL),real(0x75b7dfa9c5a24a0LL),
-      real(0x17de90e4beab49eLL),reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[7]
-      real(0xcb641c2517300LL),real(0x1435342f6c1790LL),
-      real(0x2223c168d902a0LL),real(0x3e90a70fac72b0LL),
-      real(0x80a310c4f84640LL),real(0x13bcb7c20d40bd0LL),
-      real(0x42a5540b0e391e0LL),real(0x210e40977bd376f0LL),
-      reale(-2981LL,0x6b26210e33980LL),reale(3022LL,0x503caf61c4810LL),
-      real(0x24d397da2b859120LL),real(-0x68d822cc2f04ecd0LL),
-      real(0x23a043b28810ecc0LL),real(-0x125159fafe6e93b0LL),
-      real(0x9e1bc8a31f5a060LL),real(-0x46aed7b45d01890LL),
-      real(0x30c71f0f146542fLL),reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[8]
+      // C4[0], coeff of eps^11, polynomial in n of order 12
+      real(-0x158a522ca96a9f40LL),real(0x14d4e49882e048f0LL),
+      real(0x51a6258bc6026a0LL),real(-0xc07af3677bdc6b0LL),
+      real(0x45ac09bc3b66080LL),real(-0x275e4ef59a8b450LL),
+      real(0x195f928e5402a60LL),real(-0x114aa7eeb31a3f0LL),
+      real(0xbf706c784da040LL),real(-0x817ec7d97ab990LL),
+      real(0x508b8ca80cde20LL),real(-0x26b120ea091930LL),
+      real(0x1c1ab3faf18ecdLL),reale(3071LL,0xfdd7cc41833d5LL),
+      // C4[0], coeff of eps^10, polynomial in n of order 13
+      real(0x85cd94c7a43620LL),real(0x41534458719f180LL),
+      real(-0x1688b497e3eabf20LL),real(0x15fa3ad6bcd8bd40LL),
+      real(0x531c27984875fa0LL),real(-0xc9b33381ee39f00LL),
+      real(0x485a2b8a7ad1a60LL),real(-0x286be979df41b40LL),
+      real(0x199b6e19072f920LL),real(-0x10f769bc7a1af80LL),
+      real(0xb2b30e0b2b83e0LL),real(-0x6d4c30bc0953c0LL),
+      real(0x3405b9397b42a0LL),real(0xc1ffd0ada51beLL),
+      reale(3071LL,0xfdd7cc41833d5LL),
+      // C4[0], coeff of eps^9, polynomial in n of order 14
+      real(0x77c3b2fb788360LL),real(0x12370e8b6ebba50LL),
+      real(0x3ce89570a2d35c0LL),real(0x1ddd463aa5801f30LL),
+      reale(-2653LL,0xf49e89f0f6020LL),reale(2613LL,0x24df88b461210LL),
+      real(0x24dea39341926e80LL),real(-0x5ce704fae2f44110LL),
+      real(0x20ecef343dc3cce0LL),real(-0x121947a4ab4bae30LL),
+      real(0xb2a76f84c78e740LL),real(-0x70dd3a5c9a20950LL),
+      real(0x43604f2667d29a0LL),real(-0x1fa7f2abdd82670LL),
+      real(0x169d55eb03244c1LL),reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[0], coeff of eps^8, polynomial in n of order 15
       real(0x21331eec152c80LL),real(0x3c94fa87392d00LL),
       real(0x7bff534019c580LL),real(0x12eee208e5fe200LL),
       real(0x3f965ae4945ee80LL),real(0x1f56cb06e4e85700LL),
@@ -126,158 +123,185 @@ namespace GeographicLib {
       real(0xad7256a98d1b280LL),real(-0x63bd65ce944d500LL),
       real(0x2df89c0cd0d4b80LL),real(0xa46618fc50ff08LL),
       reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[9]
-      real(0x77c3b2fb788360LL),real(0x12370e8b6ebba50LL),
-      real(0x3ce89570a2d35c0LL),real(0x1ddd463aa5801f30LL),
-      reale(-2653LL,0xf49e89f0f6020LL),reale(2613LL,0x24df88b461210LL),
-      real(0x24dea39341926e80LL),real(-0x5ce704fae2f44110LL),
-      real(0x20ecef343dc3cce0LL),real(-0x121947a4ab4bae30LL),
-      real(0xb2a76f84c78e740LL),real(-0x70dd3a5c9a20950LL),
-      real(0x43604f2667d29a0LL),real(-0x1fa7f2abdd82670LL),
-      real(0x169d55eb03244c1LL),reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[10]
-      real(0x85cd94c7a43620LL),real(0x41534458719f180LL),
-      real(-0x1688b497e3eabf20LL),real(0x15fa3ad6bcd8bd40LL),
-      real(0x531c27984875fa0LL),real(-0xc9b33381ee39f00LL),
-      real(0x485a2b8a7ad1a60LL),real(-0x286be979df41b40LL),
-      real(0x199b6e19072f920LL),real(-0x10f769bc7a1af80LL),
-      real(0xb2b30e0b2b83e0LL),real(-0x6d4c30bc0953c0LL),
-      real(0x3405b9397b42a0LL),real(0xc1ffd0ada51beLL),
-      reale(3071LL,0xfdd7cc41833d5LL),
-      // _C4x[11]
-      real(-0x158a522ca96a9f40LL),real(0x14d4e49882e048f0LL),
-      real(0x51a6258bc6026a0LL),real(-0xc07af3677bdc6b0LL),
-      real(0x45ac09bc3b66080LL),real(-0x275e4ef59a8b450LL),
-      real(0x195f928e5402a60LL),real(-0x114aa7eeb31a3f0LL),
-      real(0xbf706c784da040LL),real(-0x817ec7d97ab990LL),
-      real(0x508b8ca80cde20LL),real(-0x26b120ea091930LL),
-      real(0x1c1ab3faf18ecdLL),reale(3071LL,0xfdd7cc41833d5LL),
-      // _C4x[12]
-      real(0x500e39e18e75c40LL),real(-0xb866fe4aaa63680LL),
-      real(0x4337db32e526ac0LL),real(-0x264cce8c21af200LL),
-      real(0x18fb7ba247a4140LL),real(-0x115709558576d80LL),
-      real(0xc5be96cd3dcfc0LL),real(-0x8cdca1395db900LL),
-      real(0x611fe1a7e00640LL),real(-0x3d26e46827e480LL),
-      real(0x1d93970a8fd4c0LL),real(0x70bf87cc17354LL),
+      // C4[0], coeff of eps^7, polynomial in n of order 16
+      real(0xcb641c2517300LL),real(0x1435342f6c1790LL),
+      real(0x2223c168d902a0LL),real(0x3e90a70fac72b0LL),
+      real(0x80a310c4f84640LL),real(0x13bcb7c20d40bd0LL),
+      real(0x42a5540b0e391e0LL),real(0x210e40977bd376f0LL),
+      reale(-2981LL,0x6b26210e33980LL),reale(3022LL,0x503caf61c4810LL),
+      real(0x24d397da2b859120LL),real(-0x68d822cc2f04ecd0LL),
+      real(0x23a043b28810ecc0LL),real(-0x125159fafe6e93b0LL),
+      real(0x9e1bc8a31f5a060LL),real(-0x46aed7b45d01890LL),
+      real(0x30c71f0f146542fLL),reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[0], coeff of eps^6, polynomial in n of order 17
+      real(0x5c9c64c833ea0LL),real(0x87cba49bc6200LL),real(0xcee016a8ff560LL),
+      real(0x14a860e941a1c0LL),real(0x231567934bf020LL),
+      real(0x40a648fc642980LL),real(0x85b2123b2c36e0LL),
+      real(0x14a4159e5b98140LL),real(0x462d226dee7d1a0LL),
+      real(0x2316888f6f2f3100LL),reale(-3199LL,0xcb6e58663c860LL),
+      reale(3311LL,0xbf8f265e6c0c0LL),real(0x2372de10575f2320LL),
+      real(-0x70af5543c56e4780LL),real(0x24bbd6e6395ee9e0LL),
+      real(-0x116009bab4325fc0LL),real(0x75b7dfa9c5a24a0LL),
+      real(0x17de90e4beab49eLL),reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[0], coeff of eps^5, polynomial in n of order 18
+      real(0x6a525328e6e0LL),real(0x93f17033fb30LL),real(0xd36a04706f00LL),
+      real(0x137db4aaadad0LL),real(0x1de17febed720LL),real(0x300ece09a4c70LL),
+      real(0x5230537724340LL),real(0x98911a7bab410LL),real(0x13df6f0042d760LL),
+      real(0x317f809c6f75b0LL),real(0xa9d28ba9acb780LL),
+      real(0x55d121ad9d8f550LL),real(-0x1efee1555125f860LL),
+      real(0x21073529064696f0LL),real(0x486394f46ccebc0LL),
+      real(-0x11777145e6374170LL),real(0x54159fc268987e0LL),
+      real(-0x1fa4dd5835d2fd0LL),real(0x13d87fc86cca643LL),
       reale(3071LL,0xfdd7cc41833d5LL),
-      // _C4x[13]
-      real(0x1c6d2d6120015ca0LL),real(-0x104cedef383403b0LL),
-      real(0xab9dd58c3e3d880LL),real(-0x78a4e83e5604750LL),
-      real(0x57aa7cf5406e460LL),real(-0x4067a93ceeb2cf0LL),
-      real(0x2ed62190d975c40LL),real(-0x20c076adcb21890LL),
-      real(0x14cfa9cb9e01c20LL),real(-0xa1e25734956e30LL),
-      real(0x76afbfe4ae6c4dLL),reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[14]
-      real(0xa82410caed14920LL),real(-0x774e0539d2de300LL),
-      real(0x57ddc01c62bc8e0LL),real(-0x41de50dfff43e40LL),
-      real(0x31742450a1bdca0LL),real(-0x248524531975180LL),
-      real(0x19d013c6e35ec60LL),real(-0x1084c003a0434c0LL),
-      real(0x8103758ad86020LL),real(0x1f2409edf5e286LL),
-      reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[15]
-      real(0x577cdb6aaee0d80LL),real(-0x4283c1e96325470LL),
-      real(0x32feef20b794020LL),real(-0x26ea2e388de1a50LL),
-      real(0x1d13f6131e5d6c0LL),real(-0x14b9aa66e270230LL),
-      real(0xd5657196ac0560LL),real(-0x6880b0118a9810LL),
-      real(0x4d0f1755168ee7LL),reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[16]
-      real(0x33d84b92096e100LL),real(-0x286d35d824ffe00LL),
-      real(0x1f3d33e2e951300LL),real(-0x178f58435181400LL),
-      real(0x10e7992a3756500LL),real(-0xaed7fa8609aa00LL),
-      real(0x55d8ac87b09700LL),real(0x14e51e43945a10LL),
+      // C4[0], coeff of eps^4, polynomial in n of order 19
+      real(0x3804d31f10c0LL),real(0x4b2ec20ad280LL),real(0x66f0ea418040LL),
+      real(0x903f2204b400LL),real(0xcfad72d447c0LL),real(0x134cb9fa41580LL),
+      real(0x1dd70e331b740LL),real(0x306dd8a084700LL),real(0x53a0a0b201ec0LL),
+      real(0x9cd7c33c89880LL),real(0x14a7b599a9ce40LL),
+      real(0x340e256f2c5a00LL),real(0xb4e7d2cf7515c0LL),
+      real(0x5cc8e678862db80LL),real(-0x22304c48df63bac0LL),
+      real(0x25f7d3a888bb6d00LL),real(0x3210c8a6905acc0LL),
+      real(-0x131873ea3222a180LL),real(0x4a33217f63b9c40LL),
+      real(0xaa39109cb79b1cLL),reale(3071LL,0xfdd7cc41833d5LL),
+      // C4[0], coeff of eps^3, polynomial in n of order 20
+      real(0x1d8a60744340LL),real(0x26a12f47d0f0LL),real(0x3353c9ffe420LL),
+      real(0x4570fd193850LL),real(0x5fe8194aa900LL),real(0x87a7057de1b0LL),
+      real(0xc54ab4558de0LL),real(0x12897a64b8910LL),real(0x1d013b7f18ec0LL),
+      real(0x2fb033b96ea70LL),real(0x5384f3e45a7a0LL),real(0x9f10eb531c1d0LL),
+      real(0x154d17c994d480LL),real(0x36ab828088cb30LL),
+      real(0xc1d47f99841160LL),real(0x65b5717bb21c290LL),
+      real(-0x269fd1ef6edfa5c0LL),real(0x2dc2d3f3f9f963f0LL),
+      real(-0xf46c321c1b54e0LL),real(-0x14642b52c5fe94b0LL),
+      real(0x6b46a122c3b5c05LL),reale(3071LL,0xfdd7cc41833d5LL),
+      // C4[0], coeff of eps^2, polynomial in n of order 21
+      real(0x65e46db33460LL),real(0x82b39a7b3380LL),real(0xa9e8c6cf36a0LL),
+      real(0xe0317d0fa0c0LL),real(0x12cd0399df4e0LL),real(0x19b576ed17600LL),
+      real(0x23ecb07d1c720LL),real(0x33785d3e48b40LL),real(0x4bedad56b0560LL),
+      real(0x73f4d1eccb880LL),real(0xb8a5a1bdc07a0LL),real(0x1359aad161d5c0LL),
+      real(0x22a518d96d25e0LL),real(0x43a50f3643bb00LL),
+      real(0x95133a4d60b820LL),real(0x18b02de0f4e4040LL),
+      real(0x5ac287501571660LL),real(0x31a5fa2db58d3d80LL),
+      reale(-5088LL,0xf42d1707298a0LL),reale(6752LL,0x2ce8487308ac0LL),
+      reale(-2185LL,0x790024cbb96e0LL),real(-0x199994ff919cd3b6LL),
       reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[17]
-      real(0x4aad22c875ed20LL),real(-0x3a4801a1c6bad0LL),
-      real(0x2c487fb318d4c0LL),real(-0x1ff24d7cfd75b0LL),
-      real(0x14ba39245f1460LL),real(-0xa32e190328e90LL),
-      real(0x78c93074dfcffLL),reale(3071LL,0xfdd7cc41833d5LL),
-      // _C4x[18]
-      real(0x303f35e1bc93a0LL),real(-0x24e1f056b1d580LL),
-      real(0x1ab9fe0d1d4d60LL),real(-0x1164c583e996c0LL),
-      real(0x892da1e80cb20LL),real(0x2194519fdb596LL),
-      reale(3071LL,0xfdd7cc41833d5LL),
-      // _C4x[19]
-      real(0x4114538e4c0LL),real(-0x2f55bac3db0LL),real(0x1ee26e63c60LL),
-      real(-0xf3f108c690LL),real(0xb50b862ee7LL),real(0x19244124e56e27LL),
-      // _C4x[20]
-      real(0x33fcdea140LL),real(-0x21fe753a80LL),real(0x10cd7f3dc0LL),
-      real(0x421366044LL),real(0x205dc0bcbd6d7LL),
-      // _C4x[21]
-      real(0x1285360LL),real(-0x92a110LL),real(0x6d084fLL),
-      real(0x147638f7f9LL),
-      // _C4x[22]
-      real(0x4f2fa0LL),real(0x13852eLL),real(0xcb8314033LL),
-      // _C4x[23]
-      real(2113LL),real(0x209510dLL),
-      // _C4x[24]
-      real(-0xd0da1980ba0LL),real(-0x10803fb20d70LL),real(-0x151a70ced0c0LL),
-      real(-0x1b569dc61a10LL),real(-0x23ecd2ce6de0LL),real(-0x2ff80cba60b0LL),
-      real(-0x413672596700LL),real(-0x5a7b8b75a550LL),real(-0x8082f2984020LL),
-      real(-0xbb859b75abf0LL),real(-0x11a6bf1637d40LL),
-      real(-0x1b9a143813890LL),real(-0x2d2aacb8da260LL),
-      real(-0x4e2c5253a0f30LL),real(-0x914a9e2ed3380LL),
-      real(-0x128a302f4ef3d0LL),real(-0x2b2226f5e6b4a0LL),
-      real(-0x7a36190e0daa70LL),real(-0x1e8d8643836a9c0LL),
-      real(-0x129e3dd12414f710LL),reale(2184LL,0x86ffdb3446920LL),
-      reale(-3277LL,0x3580373196250LL),real(0x5999897e7da4e4fdLL),
-      reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[25]
-      real(-0x2271f7278cc0LL),real(-0x2c3f5c6ec900LL),real(-0x399dc5a18140LL),
-      real(-0x4c2bebb96280LL),real(-0x6670101499c0LL),real(-0x8c75450f5400LL),
-      real(-0xc4e9f8733e40LL),real(-0x11b3ff75a0580LL),
-      real(-0x1a3e7cf3fd6c0LL),real(-0x2853a9e02df00LL),
-      real(-0x40b8bca6ccb40LL),real(-0x6da2a9d234880LL),
-      real(-0xc6fc7477c83c0LL),real(-0x18bdddb834aa00LL),
-      real(-0x37ff6cf7616840LL),real(-0x9a5f4811c06b80LL),
-      real(-0x25bde21729de0c0LL),real(-0x16ea24b2a28ff500LL),
-      reale(2841LL,0x69c686bdbaac0LL),reale(-5561LL,0x628c009235180LL),
-      reale(4369LL,0xdffb6688d240LL),real(-0x4cccbefeb4d67b22LL),
+      // C4[0], coeff of eps^1, polynomial in n of order 22
+      real(0xd0da1980ba0LL),real(0x10803fb20d70LL),real(0x151a70ced0c0LL),
+      real(0x1b569dc61a10LL),real(0x23ecd2ce6de0LL),real(0x2ff80cba60b0LL),
+      real(0x413672596700LL),real(0x5a7b8b75a550LL),real(0x8082f2984020LL),
+      real(0xbb859b75abf0LL),real(0x11a6bf1637d40LL),real(0x1b9a143813890LL),
+      real(0x2d2aacb8da260LL),real(0x4e2c5253a0f30LL),real(0x914a9e2ed3380LL),
+      real(0x128a302f4ef3d0LL),real(0x2b2226f5e6b4a0LL),
+      real(0x7a36190e0daa70LL),real(0x1e8d8643836a9c0LL),
+      real(0x129e3dd12414f710LL),reale(-2185LL,0x790024cbb96e0LL),
+      reale(3276LL,0xca7fc8ce69db0LL),real(-0x5999897e7da4e4fdLL),
+      reale(7167LL,0xfaf78743878f1LL),
+      // C4[0], coeff of eps^0, polynomial in n of order 23
+      real(0x71a68037fdf14LL),real(0x81ebac5d53b48LL),real(0x957440e8ac5fcLL),
+      real(0xad1ce56088670LL),real(0xca0c260c189e4LL),real(0xedd10e292f598LL),
+      real(0x11a912af9e18ccLL),real(0x1534f4af92bec0LL),
+      real(0x19c5b078ed00b4LL),real(0x1fc05a701dd7e8LL),
+      real(0x27bd1031afaf9cLL),real(0x32a7dc61183710LL),
+      real(0x41fc58560eb384LL),real(0x583759590a1238LL),
+      real(0x79bd058a3bfa6cLL),real(0xaecdc650561f60LL),
+      real(0x108312ea2251254LL),real(0x1abbd57b12fd488LL),
+      real(0x2fbd21c97d5693cLL),real(0x634bf45b6b1a7b0LL),
+      real(0x11110dffb6688d24LL),real(0x666653fe46734ed8LL),
+      reale(-5735LL,0x9da06096c6c0cLL),reale(14335LL,0xf5ef0e870f1e2LL),
+      reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[1], coeff of eps^23, polynomial in n of order 0
+      real(3401LL),real(0x1e8bbfc3LL),
+      // C4[1], coeff of eps^22, polynomial in n of order 1
+      real(-0x539b40LL),real(0x3a8f8aLL),real(0x262893c099LL),
+      // C4[1], coeff of eps^21, polynomial in n of order 2
+      real(-0x4ca72060LL),real(0x220f8a90LL),real(0x87f8721LL),
+      real(0xef8343fb2e1LL),
+      // C4[1], coeff of eps^20, polynomial in n of order 3
+      real(-0x3769db6980LL),real(0x203de5a900LL),real(-0x11f0163080LL),
+      real(0xc63a320ccLL),real(0x6119423638485LL),
+      // C4[1], coeff of eps^19, polynomial in n of order 4
+      real(-0x2066cb6031fc0LL),real(0x14c85e7394470LL),real(-0xf6b8f35571e0LL),
+      real(0x6ad3f08040d0LL),real(0x1aa3b2832565LL),real(0x230f8ed873f29c63LL),
+      // C4[1], coeff of eps^18, polynomial in n of order 5
+      real(-0x33e9644cad5b40LL),real(0x22b6849ca6a500LL),
+      real(-0x1ce364ad2a4ec0LL),real(0x104aaed8cf4680LL),
+      real(-0x949f0f8a89e40LL),real(0x64bcf4df920c2LL),
+      reale(9215LL,0xf98764c489b7fLL),
+      // C4[1], coeff of eps^17, polynomial in n of order 6
+      real(-0x50a85b2e2e4060LL),real(0x36bb9aa442c6f0LL),
+      real(-0x3029aafbbe0440LL),real(0x1dc29c0bd6ce90LL),
+      real(-0x16a422844d9020LL),real(0x9763b8d8ca030LL),
+      real(0x25b8d7edff7ebLL),reale(9215LL,0xf98764c489b7fLL),
+      // C4[1], coeff of eps^16, polynomial in n of order 7
+      real(-0x3822c174e5c7e00LL),real(0x25fbaf973d78c00LL),
+      real(-0x222a860fbdb7a00LL),real(0x15dabd7a0984800LL),
+      real(-0x129f00215535600LL),real(0xa0e9e0ae9b8400LL),
+      real(-0x5ee97a6d2d5200LL),real(0x3eaf5acabd0e30LL),
       reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[26]
-      real(-0xa4172dfa1c0LL),real(-0xd77fb109ed0LL),real(-0x11fc3eda7860LL),
-      real(-0x1879b9235cf0LL),real(-0x2209eb95db00LL),real(-0x308bcfa5f110LL),
-      real(-0x47510fa29da0LL),real(-0x6c88ffcf6f30LL),real(-0xac6dd3019440LL),
-      real(-0x120fcca63eb50LL),real(-0x206b8121592e0LL),
-      real(-0x3fc3a9ace7970LL),real(-0x8ea4f3b556d80LL),
-      real(-0x18488ccc5b2d90LL),real(-0x5db9d9787df820LL),
-      real(-0x37d6c7544511bb0LL),real(0x1a02f9f8abfbf940LL),
-      real(-0x2d9fe91163ac57d0LL),real(0x18b01234447992a0LL),
-      real(0x46ed1c414c80a10LL),real(-0x57c56c90ceabfa7LL),
+      // C4[1], coeff of eps^15, polynomial in n of order 8
+      real(-0x5ec1dcd7666b480LL),real(0x3ed4935a3fd8cd0LL),
+      real(-0x38014f5e5d79960LL),real(0x240af6a53256570LL),
+      real(-0x2049d0fb0404a40LL),real(0x12efbc065d3f410LL),
+      real(-0xee9d804d5d8320LL),real(0x5ed209adebbcb0LL),
+      real(0x1798ea7fdd6773LL),reale(64511LL,0xd2b3c15fc4079LL),
+      // C4[1], coeff of eps^14, polynomial in n of order 9
+      real(-0x19f69929deb8bc0LL),real(0x1054723730b1600LL),
+      real(-0xdce6aeb616e040LL),real(0x8c0069813d6480LL),
+      real(-0x7e59f70027c8c0LL),real(0x4bea01551feb00LL),
+      real(-0x42bb28790cad40LL),real(0x21dd61f97d4180LL),
+      real(-0x14f93d4343f5c0LL),real(0xd58968a8df35eLL),
       reale(9215LL,0xf98764c489b7fLL),
-      // _C4x[27]
-      real(-0x14469ef39280LL),real(-0x1b74a6d65900LL),real(-0x25fc6724f380LL),
-      real(-0x35e25bf6c800LL),real(-0x4eb76c6a3c80LL),real(-0x771a92ddb700LL),
-      real(-0xbc1644489d80LL),real(-0x13946cde25600LL),
-      real(-0x22eaf36054680LL),real(-0x44349dbbbd500LL),
-      real(-0x976a625a56780LL),real(-0x1989ef99e16400LL),
-      real(-0x6150e2c16e3080LL),real(-0x38c68feccea3300LL),
-      real(0x1963a1a8e71b2e80LL),real(-0x2849f713f5ed7200LL),
-      real(0xd30bac57bb18580LL),real(0x105e1a36741daf00LL),
-      real(-0xc8c696e03b05b80LL),real(0x1feab31d626d154LL),
+      // C4[1], coeff of eps^13, polynomial in n of order 10
+      real(-0x1ecd4a3794400de0LL),real(0x101df33ec1bb0110LL),
+      real(-0xbc64ec7794b2980LL),real(0x71d5f4e2a637ff0LL),
+      real(-0x625888ecafc7520LL),real(0x3aa6879742ff4d0LL),
+      real(-0x3585f7f60d164c0LL),real(0x1d18174ef21abb0LL),
+      real(-0x18117eb39416c60LL),real(0x8df7a42ab2f090LL),
+      real(0x23413de9276581LL),reale(64511LL,0xd2b3c15fc4079LL),
+      // C4[1], coeff of eps^12, polynomial in n of order 11
+      real(-0x113775cb09582880LL),real(0x5790112bb17c4700LL),
+      real(-0x204e01ed2b929d80LL),real(0x1063af9e8d99cc00LL),
+      real(-0xc3ef805036ada80LL),real(0x701a56aa2d31100LL),
+      real(-0x63910631abdcf80LL),real(0x368e0c562512600LL),
+      real(-0x31ed34307286c80LL),real(0x170e89cb9dd1b00LL),
+      real(-0xf5f0efdd07a180LL),real(0x93fb623bde75e4LL),
+      reale(64511LL,0xd2b3c15fc4079LL),
+      // C4[1], coeff of eps^11, polynomial in n of order 12
+      real(0x13635f7860ae69c0LL),real(-0x169d904d9d4691d0LL),
+      real(-0x2254277308cd9e0LL),real(0xd20446e8d8a9710LL),
+      real(-0x4df2aedeefd1980LL),real(0x25e2aff2baec9f0LL),
+      real(-0x1d3856fa2b08920LL),real(0xf7cadc640f92d0LL),
+      real(-0xe3d2f6c9ad5cc0LL),real(0x6e412eaf297db0LL),
+      real(-0x62000ef613c860LL),real(0x201266fb021690LL),
+      real(0x7ee4c480c21e1LL),reale(9215LL,0xf98764c489b7fLL),
+      // C4[1], coeff of eps^10, polynomial in n of order 13
+      real(-0x5fe482817c4c40LL),real(-0x3373730b4b79d00LL),
+      real(0x140f919171472640LL),real(-0x17f10e5417ef9980LL),
+      real(-0x1b454cf244cf340LL),real(0xdd42319af5c0200LL),
+      real(-0x530205145e450c0LL),real(0x25eec00584a7d80LL),
+      real(-0x1e9e562555aaa40LL),real(0xe85806d73b2100LL),
+      real(-0xde44387c5bb7c0LL),real(0x581f06023d3480LL),
+      real(-0x421ccd71c33140LL),real(0x245ff7208ef53aLL),
       reale(9215LL,0xf98764c489b7fLL),
-      // _C4x[28]
-      real(-0x11dc9e54dea60LL),real(-0x193ec5647cdf0LL),
-      real(-0x24bda460ceb00LL),real(-0x3760182d9a010LL),
-      real(-0x5717ea0e54ba0LL),real(-0x907095ecddc30LL),
-      real(-0x10063188dee040LL),real(-0x1f228e862f9650LL),
-      real(-0x44adcde9a37ce0LL),real(-0xb7cbf8f2d0e270LL),
-      real(-0x2b3f803c770f580LL),real(-0x18c05d008644d490LL),
-      reale(2737LL,0x3ce4b1d74e1e0LL),reale(-4018LL,0x2086131467f50LL),
-      real(0x30ac41edd5123540LL),real(0x7e3ade121a8e0530LL),
-      real(-0x45ec5d28a0fecf60LL),real(0x3577aaf625fa910LL),
-      real(0x7292b77d2ccfc9LL),reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[29]
-      real(-0x2678d0ed9f140LL),real(-0x39d0dbe263c00LL),
-      real(-0x5aa623a5216c0LL),real(-0x95d2f30c44880LL),
-      real(-0x108ea4db631840LL),real(-0x2005d27e0acd00LL),
-      real(-0x463ad5e0e22dc0LL),real(-0xba80ab02c40180LL),
-      real(-0x2b67c47d5d48f40LL),real(-0x186d6a49f7da1e00LL),
-      reale(2625LL,0x9832921f08b40LL),reale(-3628LL,0xf58d11b98a580LL),
-      real(0x17be252bac67e9c0LL),real(0x7a8f5366d9ba1100LL),
-      real(-0x38a15d77b043abc0LL),real(0x9cd4e0bf35fec80LL),
-      real(-0xceae5004f176d40LL),real(0x479bb2ae3c01ddaLL),
+      // C4[1], coeff of eps^9, polynomial in n of order 14
+      real(-0x47f3709eaa4320LL),real(-0xbb640bc2e1ae70LL),
+      real(-0x2a7854a3ead7b40LL),real(-0x1701de8d91314210LL),
+      reale(2329LL,0x5f8472b9624a0LL),reale(-2856LL,0x183ee7d78d050LL),
+      real(-0x785bf95be998780LL),real(0x66690260b30024b0LL),
+      real(-0x272595745774a3a0LL),real(0x104f772bee315710LL),
+      real(-0xe11ad02f34b53c0LL),real(0x5a192e055800370LL),
+      real(-0x58d8bfb781fbbe0LL),real(0x17a156426e4c5d0LL),
+      real(0x5c88907e67c575LL),reale(64511LL,0xd2b3c15fc4079LL),
+      // C4[1], coeff of eps^8, polynomial in n of order 15
+      real(-0x1138d3e7324700LL),real(-0x210a1008a4f200LL),
+      real(-0x47b7d2285e8500LL),real(-0xbbe3dba17a1400LL),
+      real(-0x2aeb63e9e4cb300LL),real(-0x1781d8a9c80b7600LL),
+      reale(2419LL,0xe4212c9be8f00LL),reale(-3064LL,0x283dcf5264800LL),
+      real(-0x116171a56015f00LL),real(0x6cc31b4079da8600LL),
+      real(-0x2af22cc657d11d00LL),real(0xf75e4ec12d0a400LL),
+      real(-0xeb60cc0dd754b00LL),real(0x472a49a74880200LL),
+      real(-0x4174f343c328900LL),real(0x1ed324af4f2fd18LL),
       reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[30]
+      // C4[1], coeff of eps^7, polynomial in n of order 16
       real(-0xd56426d4f700LL),real(-0x15fa65017d450LL),
       real(-0x26ba18ad11e20LL),real(-0x4a9605f1a58f0LL),
       real(-0xa2b494aee2940LL),real(-0x1ad07f38fd2390LL),
@@ -287,177 +311,141 @@ namespace GeographicLib {
       real(-0x6e8a4c27dbf8dc0LL),real(0x1f02cd8f1f8a5f0LL),
       real(-0x2216230a1ac48e0LL),real(0x5f13c815b08150LL),
       real(0x1666b06ca8f56dLL),reale(9215LL,0xf98764c489b7fLL),
-      // _C4x[31]
-      real(-0x1138d3e7324700LL),real(-0x210a1008a4f200LL),
-      real(-0x47b7d2285e8500LL),real(-0xbbe3dba17a1400LL),
-      real(-0x2aeb63e9e4cb300LL),real(-0x1781d8a9c80b7600LL),
-      reale(2419LL,0xe4212c9be8f00LL),reale(-3064LL,0x283dcf5264800LL),
-      real(-0x116171a56015f00LL),real(0x6cc31b4079da8600LL),
-      real(-0x2af22cc657d11d00LL),real(0xf75e4ec12d0a400LL),
-      real(-0xeb60cc0dd754b00LL),real(0x472a49a74880200LL),
-      real(-0x4174f343c328900LL),real(0x1ed324af4f2fd18LL),
+      // C4[1], coeff of eps^6, polynomial in n of order 17
+      real(-0x2678d0ed9f140LL),real(-0x39d0dbe263c00LL),
+      real(-0x5aa623a5216c0LL),real(-0x95d2f30c44880LL),
+      real(-0x108ea4db631840LL),real(-0x2005d27e0acd00LL),
+      real(-0x463ad5e0e22dc0LL),real(-0xba80ab02c40180LL),
+      real(-0x2b67c47d5d48f40LL),real(-0x186d6a49f7da1e00LL),
+      reale(2625LL,0x9832921f08b40LL),reale(-3628LL,0xf58d11b98a580LL),
+      real(0x17be252bac67e9c0LL),real(0x7a8f5366d9ba1100LL),
+      real(-0x38a15d77b043abc0LL),real(0x9cd4e0bf35fec80LL),
+      real(-0xceae5004f176d40LL),real(0x479bb2ae3c01ddaLL),
       reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[32]
-      real(-0x47f3709eaa4320LL),real(-0xbb640bc2e1ae70LL),
-      real(-0x2a7854a3ead7b40LL),real(-0x1701de8d91314210LL),
-      reale(2329LL,0x5f8472b9624a0LL),reale(-2856LL,0x183ee7d78d050LL),
-      real(-0x785bf95be998780LL),real(0x66690260b30024b0LL),
-      real(-0x272595745774a3a0LL),real(0x104f772bee315710LL),
-      real(-0xe11ad02f34b53c0LL),real(0x5a192e055800370LL),
-      real(-0x58d8bfb781fbbe0LL),real(0x17a156426e4c5d0LL),
-      real(0x5c88907e67c575LL),reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[33]
-      real(-0x5fe482817c4c40LL),real(-0x3373730b4b79d00LL),
-      real(0x140f919171472640LL),real(-0x17f10e5417ef9980LL),
-      real(-0x1b454cf244cf340LL),real(0xdd42319af5c0200LL),
-      real(-0x530205145e450c0LL),real(0x25eec00584a7d80LL),
-      real(-0x1e9e562555aaa40LL),real(0xe85806d73b2100LL),
-      real(-0xde44387c5bb7c0LL),real(0x581f06023d3480LL),
-      real(-0x421ccd71c33140LL),real(0x245ff7208ef53aLL),
+      // C4[1], coeff of eps^5, polynomial in n of order 18
+      real(-0x11dc9e54dea60LL),real(-0x193ec5647cdf0LL),
+      real(-0x24bda460ceb00LL),real(-0x3760182d9a010LL),
+      real(-0x5717ea0e54ba0LL),real(-0x907095ecddc30LL),
+      real(-0x10063188dee040LL),real(-0x1f228e862f9650LL),
+      real(-0x44adcde9a37ce0LL),real(-0xb7cbf8f2d0e270LL),
+      real(-0x2b3f803c770f580LL),real(-0x18c05d008644d490LL),
+      reale(2737LL,0x3ce4b1d74e1e0LL),reale(-4018LL,0x2086131467f50LL),
+      real(0x30ac41edd5123540LL),real(0x7e3ade121a8e0530LL),
+      real(-0x45ec5d28a0fecf60LL),real(0x3577aaf625fa910LL),
+      real(0x7292b77d2ccfc9LL),reale(64511LL,0xd2b3c15fc4079LL),
+      // C4[1], coeff of eps^4, polynomial in n of order 19
+      real(-0x14469ef39280LL),real(-0x1b74a6d65900LL),real(-0x25fc6724f380LL),
+      real(-0x35e25bf6c800LL),real(-0x4eb76c6a3c80LL),real(-0x771a92ddb700LL),
+      real(-0xbc1644489d80LL),real(-0x13946cde25600LL),
+      real(-0x22eaf36054680LL),real(-0x44349dbbbd500LL),
+      real(-0x976a625a56780LL),real(-0x1989ef99e16400LL),
+      real(-0x6150e2c16e3080LL),real(-0x38c68feccea3300LL),
+      real(0x1963a1a8e71b2e80LL),real(-0x2849f713f5ed7200LL),
+      real(0xd30bac57bb18580LL),real(0x105e1a36741daf00LL),
+      real(-0xc8c696e03b05b80LL),real(0x1feab31d626d154LL),
       reale(9215LL,0xf98764c489b7fLL),
-      // _C4x[34]
-      real(0x13635f7860ae69c0LL),real(-0x169d904d9d4691d0LL),
-      real(-0x2254277308cd9e0LL),real(0xd20446e8d8a9710LL),
-      real(-0x4df2aedeefd1980LL),real(0x25e2aff2baec9f0LL),
-      real(-0x1d3856fa2b08920LL),real(0xf7cadc640f92d0LL),
-      real(-0xe3d2f6c9ad5cc0LL),real(0x6e412eaf297db0LL),
-      real(-0x62000ef613c860LL),real(0x201266fb021690LL),
-      real(0x7ee4c480c21e1LL),reale(9215LL,0xf98764c489b7fLL),
-      // _C4x[35]
-      real(-0x113775cb09582880LL),real(0x5790112bb17c4700LL),
-      real(-0x204e01ed2b929d80LL),real(0x1063af9e8d99cc00LL),
-      real(-0xc3ef805036ada80LL),real(0x701a56aa2d31100LL),
-      real(-0x63910631abdcf80LL),real(0x368e0c562512600LL),
-      real(-0x31ed34307286c80LL),real(0x170e89cb9dd1b00LL),
-      real(-0xf5f0efdd07a180LL),real(0x93fb623bde75e4LL),
-      reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[36]
-      real(-0x1ecd4a3794400de0LL),real(0x101df33ec1bb0110LL),
-      real(-0xbc64ec7794b2980LL),real(0x71d5f4e2a637ff0LL),
-      real(-0x625888ecafc7520LL),real(0x3aa6879742ff4d0LL),
-      real(-0x3585f7f60d164c0LL),real(0x1d18174ef21abb0LL),
-      real(-0x18117eb39416c60LL),real(0x8df7a42ab2f090LL),
-      real(0x23413de9276581LL),reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[37]
-      real(-0x19f69929deb8bc0LL),real(0x1054723730b1600LL),
-      real(-0xdce6aeb616e040LL),real(0x8c0069813d6480LL),
-      real(-0x7e59f70027c8c0LL),real(0x4bea01551feb00LL),
-      real(-0x42bb28790cad40LL),real(0x21dd61f97d4180LL),
-      real(-0x14f93d4343f5c0LL),real(0xd58968a8df35eLL),
+      // C4[1], coeff of eps^3, polynomial in n of order 20
+      real(-0xa4172dfa1c0LL),real(-0xd77fb109ed0LL),real(-0x11fc3eda7860LL),
+      real(-0x1879b9235cf0LL),real(-0x2209eb95db00LL),real(-0x308bcfa5f110LL),
+      real(-0x47510fa29da0LL),real(-0x6c88ffcf6f30LL),real(-0xac6dd3019440LL),
+      real(-0x120fcca63eb50LL),real(-0x206b8121592e0LL),
+      real(-0x3fc3a9ace7970LL),real(-0x8ea4f3b556d80LL),
+      real(-0x18488ccc5b2d90LL),real(-0x5db9d9787df820LL),
+      real(-0x37d6c7544511bb0LL),real(0x1a02f9f8abfbf940LL),
+      real(-0x2d9fe91163ac57d0LL),real(0x18b01234447992a0LL),
+      real(0x46ed1c414c80a10LL),real(-0x57c56c90ceabfa7LL),
       reale(9215LL,0xf98764c489b7fLL),
-      // _C4x[38]
-      real(-0x5ec1dcd7666b480LL),real(0x3ed4935a3fd8cd0LL),
-      real(-0x38014f5e5d79960LL),real(0x240af6a53256570LL),
-      real(-0x2049d0fb0404a40LL),real(0x12efbc065d3f410LL),
-      real(-0xee9d804d5d8320LL),real(0x5ed209adebbcb0LL),
-      real(0x1798ea7fdd6773LL),reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[39]
-      real(-0x3822c174e5c7e00LL),real(0x25fbaf973d78c00LL),
-      real(-0x222a860fbdb7a00LL),real(0x15dabd7a0984800LL),
-      real(-0x129f00215535600LL),real(0xa0e9e0ae9b8400LL),
-      real(-0x5ee97a6d2d5200LL),real(0x3eaf5acabd0e30LL),
-      reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[40]
-      real(-0x50a85b2e2e4060LL),real(0x36bb9aa442c6f0LL),
-      real(-0x3029aafbbe0440LL),real(0x1dc29c0bd6ce90LL),
-      real(-0x16a422844d9020LL),real(0x9763b8d8ca030LL),
-      real(0x25b8d7edff7ebLL),reale(9215LL,0xf98764c489b7fLL),
-      // _C4x[41]
-      real(-0x33e9644cad5b40LL),real(0x22b6849ca6a500LL),
-      real(-0x1ce364ad2a4ec0LL),real(0x104aaed8cf4680LL),
-      real(-0x949f0f8a89e40LL),real(0x64bcf4df920c2LL),
-      reale(9215LL,0xf98764c489b7fLL),
-      // _C4x[42]
-      real(-0x2066cb6031fc0LL),real(0x14c85e7394470LL),real(-0xf6b8f35571e0LL),
-      real(0x6ad3f08040d0LL),real(0x1aa3b2832565LL),real(0x230f8ed873f29c63LL),
-      // _C4x[43]
-      real(-0x3769db6980LL),real(0x203de5a900LL),real(-0x11f0163080LL),
-      real(0xc63a320ccLL),real(0x6119423638485LL),
-      // _C4x[44]
-      real(-0x4ca72060LL),real(0x220f8a90LL),real(0x87f8721LL),
-      real(0xef8343fb2e1LL),
-      // _C4x[45]
-      real(-0x539b40LL),real(0x3a8f8aLL),real(0x262893c099LL),
-      // _C4x[46]
-      real(3401LL),real(0x1e8bbfc3LL),
-      // _C4x[47]
-      real(0x49e4c0b060LL),real(0x687ef6a180LL),real(0x96820442a0LL),
-      real(0xdd4138e7c0LL),real(0x14ccaecc4e0LL),real(0x201acdf4e00LL),
-      real(0x33093819720LL),real(0x53ed06eb440LL),real(0x8f8eb441960LL),
-      real(0x1013bf0bfa80LL),real(0x1e750d7baba0LL),real(0x3dc4346800c0LL),
-      real(0x88729901ade0LL),real(0x150e863aba700LL),real(0x3c89c1e8d8020LL),
-      real(0xd9efed463cd40LL),real(0x47e39644808260LL),
-      real(0x3d1b0c8706d5380LL),real(-0x2af704cef0cdeb60LL),
-      real(0x7c1ef17245e119c0LL),reale(-2185LL,0x790024cbb96e0LL),
-      real(0x333329ff2339a76cLL),reale(107519LL,0xb480ecf4f161fLL),
-      // _C4x[48]
-      real(0x3f9079b600LL),real(0x5c3030c280LL),real(0x88a1097700LL),
-      real(0xcf80e01b80LL),real(0x1440886f800LL),real(0x20a73015480LL),
-      real(0x36a4a027900LL),real(0x5f8b4acad80LL),real(0xb01798c3a00LL),
-      real(0x15a2eb8a6680LL),real(0x2e235b147b00LL),real(0x6d6a30f2bf80LL),
-      real(0x12c54474b7c00LL),real(0x40129870df880LL),real(0x13e41ecc817d00LL),
-      real(0xfcf67c8cf45180LL),real(-0xa65f288fe794200LL),
-      real(0x1cea83a477ce0a80LL),real(-0x240239aaff748100LL),
-      real(0x1547221396f36380LL),real(-0x4e04d247d427178LL),
-      reale(15359LL,0xf536fd4790329LL),
-      // _C4x[49]
-      real(0x6f3f0983c40LL),real(0xa6cf9192980LL),real(0x100e50e166c0LL),
-      real(0x197f658cec00LL),real(0x29f706a6f140LL),real(0x480b7a0eae80LL),
-      real(0x821ecd9c1bc0LL),real(0xfa1d1da0b100LL),real(0x2081a78802640LL),
-      real(0x4aefd4add3380LL),real(0xc730805b650c0LL),real(0x28f491e04e7600LL),
-      real(0xc2d07512dddb40LL),real(0x92e539684c6b880LL),
-      real(-0x5a2096cfc695fa40LL),reale(3598LL,0x9cd1e91b83b00LL),
-      reale(-3554LL,0xe2b69fe3a1040LL),real(0x31a5fa2db58d3d80LL),
-      real(0x3760835a5e313ac0LL),real(-0x1bed5cb9b61f7298LL),
+      // C4[1], coeff of eps^2, polynomial in n of order 21
+      real(-0x2271f7278cc0LL),real(-0x2c3f5c6ec900LL),real(-0x399dc5a18140LL),
+      real(-0x4c2bebb96280LL),real(-0x6670101499c0LL),real(-0x8c75450f5400LL),
+      real(-0xc4e9f8733e40LL),real(-0x11b3ff75a0580LL),
+      real(-0x1a3e7cf3fd6c0LL),real(-0x2853a9e02df00LL),
+      real(-0x40b8bca6ccb40LL),real(-0x6da2a9d234880LL),
+      real(-0xc6fc7477c83c0LL),real(-0x18bdddb834aa00LL),
+      real(-0x37ff6cf7616840LL),real(-0x9a5f4811c06b80LL),
+      real(-0x25bde21729de0c0LL),real(-0x16ea24b2a28ff500LL),
+      reale(2841LL,0x69c686bdbaac0LL),reale(-5561LL,0x628c009235180LL),
+      reale(4369LL,0xdffb6688d240LL),real(-0x4cccbefeb4d67b22LL),
+      reale(64511LL,0xd2b3c15fc4079LL),
+      // C4[1], coeff of eps^1, polynomial in n of order 22
+      real(-0xd0da1980ba0LL),real(-0x10803fb20d70LL),real(-0x151a70ced0c0LL),
+      real(-0x1b569dc61a10LL),real(-0x23ecd2ce6de0LL),real(-0x2ff80cba60b0LL),
+      real(-0x413672596700LL),real(-0x5a7b8b75a550LL),real(-0x8082f2984020LL),
+      real(-0xbb859b75abf0LL),real(-0x11a6bf1637d40LL),
+      real(-0x1b9a143813890LL),real(-0x2d2aacb8da260LL),
+      real(-0x4e2c5253a0f30LL),real(-0x914a9e2ed3380LL),
+      real(-0x128a302f4ef3d0LL),real(-0x2b2226f5e6b4a0LL),
+      real(-0x7a36190e0daa70LL),real(-0x1e8d8643836a9c0LL),
+      real(-0x129e3dd12414f710LL),reale(2184LL,0x86ffdb3446920LL),
+      reale(-3277LL,0x3580373196250LL),real(0x5999897e7da4e4fdLL),
+      reale(64511LL,0xd2b3c15fc4079LL),
+      // C4[2], coeff of eps^23, polynomial in n of order 0
+      real(10384LL),real(0x32e8ea45LL),
+      // C4[2], coeff of eps^22, polynomial in n of order 1
+      real(0x3a924a0LL),real(0xefc484LL),real(0x35f1be97217LL),
+      // C4[2], coeff of eps^21, polynomial in n of order 2
+      real(0x3ecd5100LL),real(-0x2a455b80LL),real(0x1a0aa978LL),
+      real(0x18f301bf7f77LL),
+      // C4[2], coeff of eps^20, polynomial in n of order 3
+      real(0x45823cb069c0LL),real(-0x3dc56cd10180LL),real(0x15b4532d4340LL),
+      real(0x5946b207ad8LL),real(0xf72bf6e15a9abe5LL),
+      // C4[2], coeff of eps^19, polynomial in n of order 4
+      real(0x1b1b08a8c6e00LL),real(-0x1a1dea5249180LL),real(0xc1b857255700LL),
+      real(-0x8a94db95d080LL),real(0x5209b9749ec8LL),
+      real(0x3a6f4368c13f04a5LL),
+      // C4[2], coeff of eps^18, polynomial in n of order 5
+      real(0x13c972f90d64d60LL),real(-0x12d8369dbbbb080LL),
+      real(0xa013fa80d7c1a0LL),real(-0x95d1a2bb4de840LL),
+      real(0x30a495fb9aa5e0LL),real(0xc95efc891d64cLL),
       reale(107519LL,0xb480ecf4f161fLL),
-      // _C4x[50]
-      real(0x181437e05500LL),real(0x25c7b1fe6a80LL),real(0x3d5ebd606800LL),
-      real(0x67dd27f0e580LL),real(0xb8ac7d2a7b00LL),real(0x15ce71e5cc080LL),
-      real(0x2c7c6a3654e00LL),real(0x6460c05d0bb80LL),real(0x1046637cd7a100LL),
-      real(0x340d46956b9680LL),real(0xef5f1bde883400LL),
-      real(0xacec6aed73c1180LL),real(-0x63ea680d7ea23900LL),
-      reale(3605LL,0xecc3861a0ec80LL),reale(-2760LL,0x37fb593bf1a00LL),
-      real(-0x212a787bd0571880LL),real(0x70c6a0884332ed00LL),
-      real(-0x31a5fa2db58d3d80LL),real(0x5033807138f7d98LL),
+      // C4[2], coeff of eps^17, polynomial in n of order 6
+      real(0x4b31e4eff4bc00LL),real(-0x4190c8b5d5de00LL),
+      real(0x27770ac0842800LL),real(-0x270a0d33995200LL),
+      real(0x10c9f01b859400LL),real(-0xd056352974600LL),
+      real(0x74f9dc1f6f260LL),reale(15359LL,0xf536fd4790329LL),
+      // C4[2], coeff of eps^16, polynomial in n of order 7
+      real(0x39908ef33285d00LL),real(-0x2a7d467835cbe00LL),
+      real(0x1e0505551ade700LL),real(-0x1bf3204cf26d400LL),
+      real(0xe195527d96f100LL),real(-0xe0af5ccd52ea00LL),
+      real(0x41681113e87b00LL),real(0x1112b429bab2a0LL),
       reale(107519LL,0xb480ecf4f161fLL),
-      // _C4x[51]
-      real(0x511612baa2a0LL),real(0x87a79de92a00LL),real(0xee2dd20af160LL),
-      real(0x1bbcfaf32f4c0LL),real(0x37ba524fb5020LL),real(0x7b9b8f2a45f80LL),
-      real(0x13a76fcf6fdee0LL),real(0x3d717a0fbe0a40LL),
-      real(0x112dc752f02bda0LL),real(0xbfa002cc4689500LL),
-      real(-0x694405622017f3a0LL),reale(3484LL,0x979f3cbb89fc0LL),
-      reale(-2089LL,0xb01dfba51eb20LL),real(-0x49f87439584d3580LL),
-      real(0x6c3e90c1455479e0LL),real(-0x1afff07538f04ac0LL),
-      real(-0x1a0f4cdf3b62760LL),real(-0x112f9b85f9ebf7cLL),
+      // C4[2], coeff of eps^15, polynomial in n of order 8
+      real(0xf8fa0142055000LL),real(-0x8f8aa7832e8a00LL),
+      real(0x7d6f3ddfb47c00LL),real(-0x62d1e182b7be00LL),
+      real(0x3bb149eddea800LL),real(-0x3be3b3e26a7200LL),
+      real(0x175d0d17dad400LL),real(-0x14371cfc4fa600LL),
+      real(0xa8f8f5855a060LL),reale(15359LL,0xf536fd4790329LL),
+      // C4[2], coeff of eps^14, polynomial in n of order 9
+      real(0x21490cd145715e0LL),real(-0xe087822f191900LL),
+      real(0xf91f2bb3d29820LL),real(-0x949428c90dc2c0LL),
+      real(0x7371ad50b34a60LL),real(-0x63c52e9a850c80LL),
+      real(0x301579a22c8ca0LL),real(-0x33552a69ca1640LL),
+      real(0xcc2c8c733bee0LL),real(0x35f5f30acfbecLL),
+      reale(15359LL,0xf536fd4790329LL),
+      // C4[2], coeff of eps^13, polynomial in n of order 10
+      real(0x29bb6acaa073ef00LL),real(-0xc930d526d728e80LL),
+      real(0xf55c2b3103d0c00LL),real(-0x63b9281a5449980LL),
+      real(0x6acdfd5dbb92900LL),real(-0x441c8fce3be0480LL),
+      real(0x2be797a45cb8600LL),real(-0x2aec3395f438f80LL),
+      real(0xec70ff5d376300LL),real(-0xedc27143c9fa80LL),
+      real(0x7039bcd0124e68LL),reale(107519LL,0xb480ecf4f161fLL),
+      // C4[2], coeff of eps^12, polynomial in n of order 11
+      real(-0x17ce935fc610ad40LL),real(-0x5d5bbde81a902580LL),
+      real(0x2dcc12fb45c89240LL),real(-0xc1c61e98a479e00LL),
+      real(0x10183633a5ddf1c0LL),real(-0x672de318faa1680LL),
+      real(0x64ee85310393140LL),real(-0x481cf983db0cf00LL),
+      real(0x2299f24f52810c0LL),real(-0x271fc56086d0780LL),
+      real(0x79dac155045040LL),real(0x20c44d35dada38LL),
       reale(107519LL,0xb480ecf4f161fLL),
-      // _C4x[52]
-      real(0x2957d7da1000LL),real(0x4c28ba8a3700LL),real(0x9714a6610e00LL),
-      real(0x14a5ff52a4500LL),real(0x33af2f78d8c00LL),real(0x9e87298409300LL),
-      real(0x2b4e15dbd10a00LL),real(0x1d4c6da210ea100LL),
-      real(-0xf6c4a6847e2f800LL),real(0x1da98c51a6b5ef00LL),
-      real(-0xe1270d810dcfa00LL),real(-0xd23a021f3080300LL),
-      real(0xd3b280b26948400LL),real(-0x22fd890d309b500LL),
-      real(0x119ef453c630200LL),real(-0x1959af9980da700LL),
-      real(0x5959078fa70870LL),reale(15359LL,0xf536fd4790329LL),
-      // _C4x[53]
-      real(0xacc0646b5180LL),real(0x1753663f74b00LL),real(0x3994d0061e480LL),
-      real(0xadc1fbdd72e00LL),real(0x2e87a44adab780LL),
-      real(0x1eaeb3451821100LL),real(-0xf937e414930b580LL),
-      real(0x1c27d8b21df37400LL),real(-0xaa5908f76fee280LL),
-      real(-0xe1c8d327ee92900LL),real(0xb2675f22d49b080LL),
-      real(-0x19e66cd66684600LL),real(0x1f3a47aa5ea8380LL),
-      real(-0x18da246c74e6300LL),real(0x10dd3b80dd1680LL),
-      real(0x3f21f272d2a30LL),reale(15359LL,0xf536fd4790329LL),
-      // _C4x[54]
-      real(0x1b709db1871200LL),real(0x51a2a024c26b00LL),
-      real(0x157c554050bb400LL),real(0xddb41f944653d00LL),
-      real(-0x6d182f563006aa00LL),reale(2991LL,0xf7eb0ae304f00LL),
-      real(-0x387b65599c618800LL),real(-0x64242336a83ddf00LL),
-      real(0x4282c6eaa3899a00LL),real(-0xa8fc3afb1e6cd00LL),
-      real(0x1040dddbf0493c00LL),real(-0x9184bc07b2bfb00LL),
-      real(0x281ea22622bde00LL),real(-0x3dc59bc648ee900LL),
-      real(0x13fb78815b4ca90LL),reale(107519LL,0xb480ecf4f161fLL),
-      // _C4x[55]
+      // C4[2], coeff of eps^11, polynomial in n of order 12
+      real(-0x6b8bdbaa2666e600LL),reale(2706LL,0x6d4e4332c7e80LL),
+      real(-0x201eb2939ffc7500LL),real(-0x605f6d97c740b880LL),
+      real(0x32fb1ca66ccebc00LL),real(-0xb85f2dd585e0f80LL),
+      real(0x10b7dbe9dec0ed00LL),real(-0x6e454f6a0fd4680LL),
+      real(0x594f6f139205e00LL),real(-0x4c204810d601d80LL),
+      real(0x16a875347934f00LL),real(-0x1be72589c185480LL),
+      real(0xb5a396e2ccd788LL),reale(107519LL,0xb480ecf4f161fLL),
+      // C4[2], coeff of eps^10, polynomial in n of order 13
       real(0x332d666e095e20LL),real(0x205e97ebfb32780LL),
       real(-0xf80bf36cd359f20LL),real(0x19615ff8d71e0640LL),
       real(-0x61aef235a414c60LL),real(-0xe1fda0393083b00LL),
@@ -466,140 +454,150 @@ namespace GeographicLib {
       real(0x9ec708de66cbe0LL),real(-0xaee5994e9b7ec0LL),
       real(0x1626e135e59ea0LL),real(0x610ef2b6b35c4LL),
       reale(15359LL,0xf536fd4790329LL),
-      // _C4x[56]
-      real(-0x6b8bdbaa2666e600LL),reale(2706LL,0x6d4e4332c7e80LL),
-      real(-0x201eb2939ffc7500LL),real(-0x605f6d97c740b880LL),
-      real(0x32fb1ca66ccebc00LL),real(-0xb85f2dd585e0f80LL),
-      real(0x10b7dbe9dec0ed00LL),real(-0x6e454f6a0fd4680LL),
-      real(0x594f6f139205e00LL),real(-0x4c204810d601d80LL),
-      real(0x16a875347934f00LL),real(-0x1be72589c185480LL),
-      real(0xb5a396e2ccd788LL),reale(107519LL,0xb480ecf4f161fLL),
-      // _C4x[57]
-      real(-0x17ce935fc610ad40LL),real(-0x5d5bbde81a902580LL),
-      real(0x2dcc12fb45c89240LL),real(-0xc1c61e98a479e00LL),
-      real(0x10183633a5ddf1c0LL),real(-0x672de318faa1680LL),
-      real(0x64ee85310393140LL),real(-0x481cf983db0cf00LL),
-      real(0x2299f24f52810c0LL),real(-0x271fc56086d0780LL),
-      real(0x79dac155045040LL),real(0x20c44d35dada38LL),
+      // C4[2], coeff of eps^9, polynomial in n of order 14
+      real(0x1b709db1871200LL),real(0x51a2a024c26b00LL),
+      real(0x157c554050bb400LL),real(0xddb41f944653d00LL),
+      real(-0x6d182f563006aa00LL),reale(2991LL,0xf7eb0ae304f00LL),
+      real(-0x387b65599c618800LL),real(-0x64242336a83ddf00LL),
+      real(0x4282c6eaa3899a00LL),real(-0xa8fc3afb1e6cd00LL),
+      real(0x1040dddbf0493c00LL),real(-0x9184bc07b2bfb00LL),
+      real(0x281ea22622bde00LL),real(-0x3dc59bc648ee900LL),
+      real(0x13fb78815b4ca90LL),reale(107519LL,0xb480ecf4f161fLL),
+      // C4[2], coeff of eps^8, polynomial in n of order 15
+      real(0xacc0646b5180LL),real(0x1753663f74b00LL),real(0x3994d0061e480LL),
+      real(0xadc1fbdd72e00LL),real(0x2e87a44adab780LL),
+      real(0x1eaeb3451821100LL),real(-0xf937e414930b580LL),
+      real(0x1c27d8b21df37400LL),real(-0xaa5908f76fee280LL),
+      real(-0xe1c8d327ee92900LL),real(0xb2675f22d49b080LL),
+      real(-0x19e66cd66684600LL),real(0x1f3a47aa5ea8380LL),
+      real(-0x18da246c74e6300LL),real(0x10dd3b80dd1680LL),
+      real(0x3f21f272d2a30LL),reale(15359LL,0xf536fd4790329LL),
+      // C4[2], coeff of eps^7, polynomial in n of order 16
+      real(0x2957d7da1000LL),real(0x4c28ba8a3700LL),real(0x9714a6610e00LL),
+      real(0x14a5ff52a4500LL),real(0x33af2f78d8c00LL),real(0x9e87298409300LL),
+      real(0x2b4e15dbd10a00LL),real(0x1d4c6da210ea100LL),
+      real(-0xf6c4a6847e2f800LL),real(0x1da98c51a6b5ef00LL),
+      real(-0xe1270d810dcfa00LL),real(-0xd23a021f3080300LL),
+      real(0xd3b280b26948400LL),real(-0x22fd890d309b500LL),
+      real(0x119ef453c630200LL),real(-0x1959af9980da700LL),
+      real(0x5959078fa70870LL),reale(15359LL,0xf536fd4790329LL),
+      // C4[2], coeff of eps^6, polynomial in n of order 17
+      real(0x511612baa2a0LL),real(0x87a79de92a00LL),real(0xee2dd20af160LL),
+      real(0x1bbcfaf32f4c0LL),real(0x37ba524fb5020LL),real(0x7b9b8f2a45f80LL),
+      real(0x13a76fcf6fdee0LL),real(0x3d717a0fbe0a40LL),
+      real(0x112dc752f02bda0LL),real(0xbfa002cc4689500LL),
+      real(-0x694405622017f3a0LL),reale(3484LL,0x979f3cbb89fc0LL),
+      reale(-2089LL,0xb01dfba51eb20LL),real(-0x49f87439584d3580LL),
+      real(0x6c3e90c1455479e0LL),real(-0x1afff07538f04ac0LL),
+      real(-0x1a0f4cdf3b62760LL),real(-0x112f9b85f9ebf7cLL),
       reale(107519LL,0xb480ecf4f161fLL),
-      // _C4x[58]
-      real(0x29bb6acaa073ef00LL),real(-0xc930d526d728e80LL),
-      real(0xf55c2b3103d0c00LL),real(-0x63b9281a5449980LL),
-      real(0x6acdfd5dbb92900LL),real(-0x441c8fce3be0480LL),
-      real(0x2be797a45cb8600LL),real(-0x2aec3395f438f80LL),
-      real(0xec70ff5d376300LL),real(-0xedc27143c9fa80LL),
-      real(0x7039bcd0124e68LL),reale(107519LL,0xb480ecf4f161fLL),
-      // _C4x[59]
-      real(0x21490cd145715e0LL),real(-0xe087822f191900LL),
-      real(0xf91f2bb3d29820LL),real(-0x949428c90dc2c0LL),
-      real(0x7371ad50b34a60LL),real(-0x63c52e9a850c80LL),
-      real(0x301579a22c8ca0LL),real(-0x33552a69ca1640LL),
-      real(0xcc2c8c733bee0LL),real(0x35f5f30acfbecLL),
-      reale(15359LL,0xf536fd4790329LL),
-      // _C4x[60]
-      real(0xf8fa0142055000LL),real(-0x8f8aa7832e8a00LL),
-      real(0x7d6f3ddfb47c00LL),real(-0x62d1e182b7be00LL),
-      real(0x3bb149eddea800LL),real(-0x3be3b3e26a7200LL),
-      real(0x175d0d17dad400LL),real(-0x14371cfc4fa600LL),
-      real(0xa8f8f5855a060LL),reale(15359LL,0xf536fd4790329LL),
-      // _C4x[61]
-      real(0x39908ef33285d00LL),real(-0x2a7d467835cbe00LL),
-      real(0x1e0505551ade700LL),real(-0x1bf3204cf26d400LL),
-      real(0xe195527d96f100LL),real(-0xe0af5ccd52ea00LL),
-      real(0x41681113e87b00LL),real(0x1112b429bab2a0LL),
+      // C4[2], coeff of eps^5, polynomial in n of order 18
+      real(0x181437e05500LL),real(0x25c7b1fe6a80LL),real(0x3d5ebd606800LL),
+      real(0x67dd27f0e580LL),real(0xb8ac7d2a7b00LL),real(0x15ce71e5cc080LL),
+      real(0x2c7c6a3654e00LL),real(0x6460c05d0bb80LL),real(0x1046637cd7a100LL),
+      real(0x340d46956b9680LL),real(0xef5f1bde883400LL),
+      real(0xacec6aed73c1180LL),real(-0x63ea680d7ea23900LL),
+      reale(3605LL,0xecc3861a0ec80LL),reale(-2760LL,0x37fb593bf1a00LL),
+      real(-0x212a787bd0571880LL),real(0x70c6a0884332ed00LL),
+      real(-0x31a5fa2db58d3d80LL),real(0x5033807138f7d98LL),
       reale(107519LL,0xb480ecf4f161fLL),
-      // _C4x[62]
-      real(0x4b31e4eff4bc00LL),real(-0x4190c8b5d5de00LL),
-      real(0x27770ac0842800LL),real(-0x270a0d33995200LL),
-      real(0x10c9f01b859400LL),real(-0xd056352974600LL),
-      real(0x74f9dc1f6f260LL),reale(15359LL,0xf536fd4790329LL),
-      // _C4x[63]
-      real(0x13c972f90d64d60LL),real(-0x12d8369dbbbb080LL),
-      real(0xa013fa80d7c1a0LL),real(-0x95d1a2bb4de840LL),
-      real(0x30a495fb9aa5e0LL),real(0xc95efc891d64cLL),
+      // C4[2], coeff of eps^4, polynomial in n of order 19
+      real(0x6f3f0983c40LL),real(0xa6cf9192980LL),real(0x100e50e166c0LL),
+      real(0x197f658cec00LL),real(0x29f706a6f140LL),real(0x480b7a0eae80LL),
+      real(0x821ecd9c1bc0LL),real(0xfa1d1da0b100LL),real(0x2081a78802640LL),
+      real(0x4aefd4add3380LL),real(0xc730805b650c0LL),real(0x28f491e04e7600LL),
+      real(0xc2d07512dddb40LL),real(0x92e539684c6b880LL),
+      real(-0x5a2096cfc695fa40LL),reale(3598LL,0x9cd1e91b83b00LL),
+      reale(-3554LL,0xe2b69fe3a1040LL),real(0x31a5fa2db58d3d80LL),
+      real(0x3760835a5e313ac0LL),real(-0x1bed5cb9b61f7298LL),
       reale(107519LL,0xb480ecf4f161fLL),
-      // _C4x[64]
-      real(0x1b1b08a8c6e00LL),real(-0x1a1dea5249180LL),real(0xc1b857255700LL),
-      real(-0x8a94db95d080LL),real(0x5209b9749ec8LL),
-      real(0x3a6f4368c13f04a5LL),
-      // _C4x[65]
-      real(0x45823cb069c0LL),real(-0x3dc56cd10180LL),real(0x15b4532d4340LL),
-      real(0x5946b207ad8LL),real(0xf72bf6e15a9abe5LL),
-      // _C4x[66]
-      real(0x3ecd5100LL),real(-0x2a455b80LL),real(0x1a0aa978LL),
-      real(0x18f301bf7f77LL),
-      // _C4x[67]
-      real(0x3a924a0LL),real(0xefc484LL),real(0x35f1be97217LL),
-      // _C4x[68]
-      real(10384LL),real(0x32e8ea45LL),
-      // _C4x[69]
-      real(-0x3da35ec00LL),real(-0x62f09c100LL),real(-0xa329fce00LL),
-      real(-0x11560fab00LL),real(-0x1e812bf000LL),real(-0x37d592b500LL),
-      real(-0x6af77a1200LL),real(-0xd82e3c9f00LL),real(-0x1d19ea9f400LL),
-      real(-0x43b761f2900LL),real(-0xad7cf6b5600LL),real(-0x1f71d9841300LL),
-      real(-0x6bcf7c0df800LL),real(-0x1d7abbebd1d00LL),
-      real(-0xc1b8d2e919a00LL),real(-0xd3e226aef40700LL),
-      real(0xc94a0b2634a0400LL),real(-0x3577aaf625fa9100LL),
-      real(0x6aef55ec4bf52200LL),real(-0x634bf45b6b1a7b00LL),
-      real(0x22221bff6cd11a48LL),reale(150527LL,0x964e188a1ebc5LL),
-      // _C4x[70]
-      real(-0xda1252c00LL),real(-0x16bd22f800LL),real(-0x2731e0a400LL),
-      real(-0x46214fc000LL),real(-0x830545dc00LL),real(-0x1017e988800LL),
-      real(-0x21987b95400LL),real(-0x4b78a99d000LL),real(-0xb9ccd9f8c00LL),
-      real(-0x202de3701800LL),real(-0x68b6655d0400LL),real(-0x1af3df037e000LL),
-      real(-0xa515b5f563c00LL),real(-0xa65924698da800LL),
-      real(0x8fc72c890104c00LL),real(-0x226e597c6e0df000LL),
-      real(0x3ee7237bf0721400LL),real(-0x3d1b0c8706d53800LL),
-      real(0x1e8d8643836a9c00LL),real(-0x634bf45b6b1a7b0LL),
-      reale(50175LL,0xdcc4b2d8b4e97LL),
-      // _C4x[71]
-      real(-0x1136c8f5600LL),real(-0x1e3b013df00LL),real(-0x37550c23000LL),
-      real(-0x6a508e10100LL),real(-0xd872daf0a00LL),real(-0x1d8dd6618300LL),
-      real(-0x468422b6a400LL),real(-0xbc9d06f02500LL),real(-0x24d784d09be00LL),
-      real(-0x90d122dffa700LL),real(-0x347ca809f91800LL),
-      real(-0x31861ec3b2ac900LL),real(0x276d051382ba8e00LL),
-      reale(-2164LL,0xaacb805bbb500LL),reale(3319LL,0x8d7da907400LL),
-      reale(-2192LL,0x2451a99991300LL),real(-0x47e396448082600LL),
-      real(0x3577aaf625fa9100LL),real(-0x1449fb28d544cb98LL),
+      // C4[2], coeff of eps^3, polynomial in n of order 20
+      real(0x3f9079b600LL),real(0x5c3030c280LL),real(0x88a1097700LL),
+      real(0xcf80e01b80LL),real(0x1440886f800LL),real(0x20a73015480LL),
+      real(0x36a4a027900LL),real(0x5f8b4acad80LL),real(0xb01798c3a00LL),
+      real(0x15a2eb8a6680LL),real(0x2e235b147b00LL),real(0x6d6a30f2bf80LL),
+      real(0x12c54474b7c00LL),real(0x40129870df880LL),real(0x13e41ecc817d00LL),
+      real(0xfcf67c8cf45180LL),real(-0xa65f288fe794200LL),
+      real(0x1cea83a477ce0a80LL),real(-0x240239aaff748100LL),
+      real(0x1547221396f36380LL),real(-0x4e04d247d427178LL),
+      reale(15359LL,0xf536fd4790329LL),
+      // C4[2], coeff of eps^2, polynomial in n of order 21
+      real(0x49e4c0b060LL),real(0x687ef6a180LL),real(0x96820442a0LL),
+      real(0xdd4138e7c0LL),real(0x14ccaecc4e0LL),real(0x201acdf4e00LL),
+      real(0x33093819720LL),real(0x53ed06eb440LL),real(0x8f8eb441960LL),
+      real(0x1013bf0bfa80LL),real(0x1e750d7baba0LL),real(0x3dc4346800c0LL),
+      real(0x88729901ade0LL),real(0x150e863aba700LL),real(0x3c89c1e8d8020LL),
+      real(0xd9efed463cd40LL),real(0x47e39644808260LL),
+      real(0x3d1b0c8706d5380LL),real(-0x2af704cef0cdeb60LL),
+      real(0x7c1ef17245e119c0LL),reale(-2185LL,0x790024cbb96e0LL),
+      real(0x333329ff2339a76cLL),reale(107519LL,0xb480ecf4f161fLL),
+      // C4[3], coeff of eps^23, polynomial in n of order 0
+      real(70576LL),real(0x6cd1db26bLL),
+      // C4[3], coeff of eps^22, polynomial in n of order 1
+      real(-0x1dbc000LL),real(0x10088c0LL),real(0x192c8c2464fLL),
+      // C4[3], coeff of eps^21, polynomial in n of order 2
+      real(-0x1fa8df9600LL),real(0x89ebf7900LL),real(0x24e4f9128LL),
+      real(0xb98f5d0044051LL),
+      // C4[3], coeff of eps^20, polynomial in n of order 3
+      real(-0x30f8b0f5c00LL),real(0x12d79f66800LL),real(-0x115c7023400LL),
+      real(0x8d25cb7890LL),real(0xa7c6f527b4f7c7LL),
+      // C4[3], coeff of eps^19, polynomial in n of order 4
+      real(-0x3317d68847dc00LL),real(0x19fc69dd236700LL),
+      real(-0x1c6d14df7ace00LL),real(0x6cfe4fac52d00LL),
+      real(0x1d99f24357808LL),reale(30105LL,0x847604e86c8c1LL),
+      // C4[3], coeff of eps^18, polynomial in n of order 5
+      real(-0x15b0eba45ef8000LL),real(0xf79bdd24a10000LL),
+      real(-0xf32a8559288000LL),real(0x563281b24a8000LL),
+      real(-0x5920796c2f8000LL),real(0x29f7b73471c480LL),
       reale(150527LL,0x964e188a1ebc5LL),
-      // _C4x[72]
-      real(-0x62d694dc000LL),real(-0xba60f7a0000LL),real(-0x173b38f24000LL),
-      real(-0x319b0ca1c000LL),real(-0x7361a893c000LL),real(-0x12be5bef38000LL),
-      real(-0x38b3402cc4000LL),real(-0xd6a4403694000LL),
-      real(-0x4a69cc1535c000LL),real(-0x42816c266fd0000LL),
-      real(0x315cb6a39d95c000LL),reale(-2450LL,0x306e3c9574000LL),
-      reale(3143LL,0x2391393fc4000LL),real(-0x466890d45f668000LL),
-      real(-0x50368754849c4000LL),real(0x594b313771cfc000LL),
-      real(-0x1cc16f4e99cdc000LL),real(0x1e8d8643836a9c0LL),
+      // C4[3], coeff of eps^17, polynomial in n of order 6
+      real(-0x1c02d0336ef1800LL),real(0x1d91ba24525dc00LL),
+      real(-0x163d203e4811000LL),real(0xb8e8b252aa8400LL),
+      real(-0xd2485de6110800LL),real(0x2a40e341b4ac00LL),
+      real(0xbb70f2cbcf360LL),reale(150527LL,0x964e188a1ebc5LL),
+      // C4[3], coeff of eps^16, polynomial in n of order 7
+      real(-0x58b4aa16ae3000LL),real(0x7fa0a14380e000LL),
+      real(-0x429ab6e3829000LL),real(0x383428ed0d4000LL),
+      real(-0x32e93ebd99f000LL),real(0x108fe88bbda000LL),
+      real(-0x13ba86ffa65000LL),real(0x868b4ab8e3340LL),
+      reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[3], coeff of eps^15, polynomial in n of order 8
+      real(-0xaedfc7febee000LL),real(0xe403ca9386ec00LL),
+      real(-0x5568aa53f7a800LL),real(0x76f3d9af940400LL),
+      real(-0x475f28b7bb7000LL),real(0x29018461d69c00LL),
+      real(-0x2ed89591f13800LL),real(0x74380445fb400LL),
+      real(0x21274712bcba0LL),reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[3], coeff of eps^14, polynomial in n of order 9
+      real(-0x231ca125e5c8000LL),real(0x15ea7d5f05e0000LL),
+      real(-0x97f88531f38000LL),real(0xee839ade908000LL),
+      real(-0x572a9cdd748000LL),real(0x65a05d4f5f0000LL),
+      real(-0x4ce11756538000LL),real(0x177f524c958000LL),
+      real(-0x20e57338048000LL),real(0xc4518e260f380LL),
+      reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[3], coeff of eps^13, polynomial in n of order 10
+      real(-0x44ebd4477ad4f200LL),real(0x9a6a6024b320f00LL),
+      real(-0xe915ce102d6a800LL),real(0xb28d5273bcee100LL),
+      real(-0x37fa968ec235e00LL),real(0x68974b850671300LL),
+      real(-0x2a735b9bf505400LL),real(0x20513dd7a7f6500LL),
+      real(-0x220360a9be2ca00LL),real(0x36d1c1a3f49700LL),
+      real(0x10369a2227fd98LL),reale(150527LL,0x964e188a1ebc5LL),
+      // C4[3], coeff of eps^12, polynomial in n of order 11
+      real(0x52462bb828351400LL),real(0x4a4d1c14e6172800LL),
+      real(-0x4ced32c430d22400LL),real(0xb52b1b0c2492000LL),
+      real(-0xd058359466b1c00LL),real(0xd07709dd3bd1800LL),
+      real(-0x30072e56aae5400LL),real(0x605c027d5629000LL),
+      real(-0x32e58b8ebb44c00LL),real(0x108221f23a90800LL),
+      real(-0x1a7ac7295958400LL),real(0x836be4086f28d0LL),
       reale(150527LL,0x964e188a1ebc5LL),
-      // _C4x[73]
-      real(-0x5003ad66000LL),real(-0xa79ae296200LL),real(-0x17d9e9f5d400LL),
-      real(-0x3c8762ad2600LL),real(-0xb232a56ac800LL),real(-0x28dbf6ee52a00LL),
-      real(-0xda6199e36bc00LL),real(-0xba74c6aa46ee00LL),
-      real(0x825959cb764d000LL),real(-0x17232e4c4e57f200LL),
-      real(0x190bf0598fc65c00LL),real(-0x27c51cb844db600LL),
-      real(-0xf8735fc98339800LL),real(0xa28217eef524600LL),
-      real(-0xfc87c9cb4a8c00LL),real(-0x3228ffc0ed7e00LL),
-      real(-0x387bf611406670LL),reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[74]
-      real(-0x1fe011d85800LL),real(-0x4f422fb05000LL),real(-0xe40060fc8800LL),
-      real(-0x32e664e9c2000LL),real(-0x1078ec0ef63800LL),
-      real(-0xd864902b71f000LL),real(0x8fab71292d19800LL),
-      real(-0x179bbec0170ac000LL),real(0x15c925f1e4f1e800LL),
-      real(0x2c36e0d96c07000LL),real(-0x100d07856dfe4800LL),
-      real(0x6d9c3efea16a000LL),real(-0x13ac4a3567f800LL),
-      real(0x15b22a4de1ed000LL),real(-0x1452d18e2b42800LL),
-      real(0x32eab893d697a0LL),reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[75]
-      real(-0x115a7e31ff400LL),real(-0x3c90c47c29600LL),
-      real(-0x1311ab10640800LL),real(-0xf2246746703a00LL),
-      real(0x99b5e8c5c68e400LL),real(-0x179a6d9c8ead9e00LL),
-      real(0x12bd250608495000LL),real(0x63777cc9563be00LL),
-      real(-0xf1ef7972c204400LL),real(0x47367775d725a00LL),
-      real(-0x63378c7bb15800LL),real(0x22d63078c5cb600LL),
-      real(-0xf8707c83e76c00LL),real(-0xb0e06786eae00LL),
-      real(-0x5e4438ea922f0LL),reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[76]
+      // C4[3], coeff of eps^11, polynomial in n of order 12
+      real(0x48f7bc8748dd3400LL),reale(-2562LL,0x8060698c5b900LL),
+      real(0x601d0ed1c7f2b600LL),real(0x449204e4f86d4300LL),
+      real(-0x56194f80f81a8800LL),real(0xea108cfa6f6ed00LL),
+      real(-0xa7ad46bd016c600LL),real(0xef32c344e507700LL),
+      real(-0x30a1762ff0e4400LL),real(0x4a78ea25c4fa100LL),
+      real(-0x3c3cca9d1bd4200LL),real(0x22cbd76a022b00LL),
+      real(0x9df3abb037278LL),reale(150527LL,0x964e188a1ebc5LL),
+      // C4[3], coeff of eps^10, polynomial in n of order 13
       real(-0x9607df2a17c000LL),real(-0x739371b7f3d8000LL),
       real(0x4688c366039fc000LL),reale(-2612LL,0x75993403fc000LL),
       real(0x7056fbc7b1c24000LL),real(0x3af7506941670000LL),
@@ -608,128 +606,140 @@ namespace GeographicLib {
       real(-0x42f04a7d6e84000LL),real(0x246d9b6ab84c000LL),
       real(-0x37cce3b53adc000LL),real(0xd43660c7def0c0LL),
       reale(150527LL,0x964e188a1ebc5LL),
-      // _C4x[77]
-      real(0x48f7bc8748dd3400LL),reale(-2562LL,0x8060698c5b900LL),
-      real(0x601d0ed1c7f2b600LL),real(0x449204e4f86d4300LL),
-      real(-0x56194f80f81a8800LL),real(0xea108cfa6f6ed00LL),
-      real(-0xa7ad46bd016c600LL),real(0xef32c344e507700LL),
-      real(-0x30a1762ff0e4400LL),real(0x4a78ea25c4fa100LL),
-      real(-0x3c3cca9d1bd4200LL),real(0x22cbd76a022b00LL),
-      real(0x9df3abb037278LL),reale(150527LL,0x964e188a1ebc5LL),
-      // _C4x[78]
-      real(0x52462bb828351400LL),real(0x4a4d1c14e6172800LL),
-      real(-0x4ced32c430d22400LL),real(0xb52b1b0c2492000LL),
-      real(-0xd058359466b1c00LL),real(0xd07709dd3bd1800LL),
-      real(-0x30072e56aae5400LL),real(0x605c027d5629000LL),
-      real(-0x32e58b8ebb44c00LL),real(0x108221f23a90800LL),
-      real(-0x1a7ac7295958400LL),real(0x836be4086f28d0LL),
+      // C4[3], coeff of eps^9, polynomial in n of order 14
+      real(-0x115a7e31ff400LL),real(-0x3c90c47c29600LL),
+      real(-0x1311ab10640800LL),real(-0xf2246746703a00LL),
+      real(0x99b5e8c5c68e400LL),real(-0x179a6d9c8ead9e00LL),
+      real(0x12bd250608495000LL),real(0x63777cc9563be00LL),
+      real(-0xf1ef7972c204400LL),real(0x47367775d725a00LL),
+      real(-0x63378c7bb15800LL),real(0x22d63078c5cb600LL),
+      real(-0xf8707c83e76c00LL),real(-0xb0e06786eae00LL),
+      real(-0x5e4438ea922f0LL),reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[3], coeff of eps^8, polynomial in n of order 15
+      real(-0x1fe011d85800LL),real(-0x4f422fb05000LL),real(-0xe40060fc8800LL),
+      real(-0x32e664e9c2000LL),real(-0x1078ec0ef63800LL),
+      real(-0xd864902b71f000LL),real(0x8fab71292d19800LL),
+      real(-0x179bbec0170ac000LL),real(0x15c925f1e4f1e800LL),
+      real(0x2c36e0d96c07000LL),real(-0x100d07856dfe4800LL),
+      real(0x6d9c3efea16a000LL),real(-0x13ac4a3567f800LL),
+      real(0x15b22a4de1ed000LL),real(-0x1452d18e2b42800LL),
+      real(0x32eab893d697a0LL),reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[3], coeff of eps^7, polynomial in n of order 16
+      real(-0x5003ad66000LL),real(-0xa79ae296200LL),real(-0x17d9e9f5d400LL),
+      real(-0x3c8762ad2600LL),real(-0xb232a56ac800LL),real(-0x28dbf6ee52a00LL),
+      real(-0xda6199e36bc00LL),real(-0xba74c6aa46ee00LL),
+      real(0x825959cb764d000LL),real(-0x17232e4c4e57f200LL),
+      real(0x190bf0598fc65c00LL),real(-0x27c51cb844db600LL),
+      real(-0xf8735fc98339800LL),real(0xa28217eef524600LL),
+      real(-0xfc87c9cb4a8c00LL),real(-0x3228ffc0ed7e00LL),
+      real(-0x387bf611406670LL),reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[3], coeff of eps^6, polynomial in n of order 17
+      real(-0x62d694dc000LL),real(-0xba60f7a0000LL),real(-0x173b38f24000LL),
+      real(-0x319b0ca1c000LL),real(-0x7361a893c000LL),real(-0x12be5bef38000LL),
+      real(-0x38b3402cc4000LL),real(-0xd6a4403694000LL),
+      real(-0x4a69cc1535c000LL),real(-0x42816c266fd0000LL),
+      real(0x315cb6a39d95c000LL),reale(-2450LL,0x306e3c9574000LL),
+      reale(3143LL,0x2391393fc4000LL),real(-0x466890d45f668000LL),
+      real(-0x50368754849c4000LL),real(0x594b313771cfc000LL),
+      real(-0x1cc16f4e99cdc000LL),real(0x1e8d8643836a9c0LL),
       reale(150527LL,0x964e188a1ebc5LL),
-      // _C4x[79]
-      real(-0x44ebd4477ad4f200LL),real(0x9a6a6024b320f00LL),
-      real(-0xe915ce102d6a800LL),real(0xb28d5273bcee100LL),
-      real(-0x37fa968ec235e00LL),real(0x68974b850671300LL),
-      real(-0x2a735b9bf505400LL),real(0x20513dd7a7f6500LL),
-      real(-0x220360a9be2ca00LL),real(0x36d1c1a3f49700LL),
-      real(0x10369a2227fd98LL),reale(150527LL,0x964e188a1ebc5LL),
-      // _C4x[80]
-      real(-0x231ca125e5c8000LL),real(0x15ea7d5f05e0000LL),
-      real(-0x97f88531f38000LL),real(0xee839ade908000LL),
-      real(-0x572a9cdd748000LL),real(0x65a05d4f5f0000LL),
-      real(-0x4ce11756538000LL),real(0x177f524c958000LL),
-      real(-0x20e57338048000LL),real(0xc4518e260f380LL),
-      reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[81]
-      real(-0xaedfc7febee000LL),real(0xe403ca9386ec00LL),
-      real(-0x5568aa53f7a800LL),real(0x76f3d9af940400LL),
-      real(-0x475f28b7bb7000LL),real(0x29018461d69c00LL),
-      real(-0x2ed89591f13800LL),real(0x74380445fb400LL),
-      real(0x21274712bcba0LL),reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[82]
-      real(-0x58b4aa16ae3000LL),real(0x7fa0a14380e000LL),
-      real(-0x429ab6e3829000LL),real(0x383428ed0d4000LL),
-      real(-0x32e93ebd99f000LL),real(0x108fe88bbda000LL),
-      real(-0x13ba86ffa65000LL),real(0x868b4ab8e3340LL),
-      reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[83]
-      real(-0x1c02d0336ef1800LL),real(0x1d91ba24525dc00LL),
-      real(-0x163d203e4811000LL),real(0xb8e8b252aa8400LL),
-      real(-0xd2485de6110800LL),real(0x2a40e341b4ac00LL),
-      real(0xbb70f2cbcf360LL),reale(150527LL,0x964e188a1ebc5LL),
-      // _C4x[84]
-      real(-0x15b0eba45ef8000LL),real(0xf79bdd24a10000LL),
-      real(-0xf32a8559288000LL),real(0x563281b24a8000LL),
-      real(-0x5920796c2f8000LL),real(0x29f7b73471c480LL),
+      // C4[3], coeff of eps^5, polynomial in n of order 18
+      real(-0x1136c8f5600LL),real(-0x1e3b013df00LL),real(-0x37550c23000LL),
+      real(-0x6a508e10100LL),real(-0xd872daf0a00LL),real(-0x1d8dd6618300LL),
+      real(-0x468422b6a400LL),real(-0xbc9d06f02500LL),real(-0x24d784d09be00LL),
+      real(-0x90d122dffa700LL),real(-0x347ca809f91800LL),
+      real(-0x31861ec3b2ac900LL),real(0x276d051382ba8e00LL),
+      reale(-2164LL,0xaacb805bbb500LL),reale(3319LL,0x8d7da907400LL),
+      reale(-2192LL,0x2451a99991300LL),real(-0x47e396448082600LL),
+      real(0x3577aaf625fa9100LL),real(-0x1449fb28d544cb98LL),
       reale(150527LL,0x964e188a1ebc5LL),
-      // _C4x[85]
-      real(-0x3317d68847dc00LL),real(0x19fc69dd236700LL),
-      real(-0x1c6d14df7ace00LL),real(0x6cfe4fac52d00LL),
-      real(0x1d99f24357808LL),reale(30105LL,0x847604e86c8c1LL),
-      // _C4x[86]
-      real(-0x30f8b0f5c00LL),real(0x12d79f66800LL),real(-0x115c7023400LL),
-      real(0x8d25cb7890LL),real(0xa7c6f527b4f7c7LL),
-      // _C4x[87]
-      real(-0x1fa8df9600LL),real(0x89ebf7900LL),real(0x24e4f9128LL),
-      real(0xb98f5d0044051LL),
-      // _C4x[88]
-      real(-0x1dbc000LL),real(0x10088c0LL),real(0x192c8c2464fLL),
-      // _C4x[89]
-      real(70576LL),real(0x6cd1db26bLL),
-      // _C4x[90]
-      real(0x6bb08e00LL),real(0xc7f67400LL),real(0x181eb1a00LL),
-      real(0x30a52a000LL),real(0x673602600LL),real(0xe8536cc00LL),
-      real(0x230e6ab200LL),real(0x5c19c1f800LL),real(0x10ca075be00LL),
-      real(0x37f6c332400LL),real(0xdf0e61c4a00LL),real(0x47dfa8095000LL),
-      real(0x236014b495600LL),real(0x2f60ae04237c00LL),
-      real(-0x38c125ca4a81e00LL),real(0x13dd33a066e0a800LL),
-      real(-0x389cd322becd1200LL),real(0x5ba892ca8a3fd400LL),
-      real(-0x4c61cfa8c88a8600LL),real(0x18d2fd16dac69ec0LL),
+      // C4[3], coeff of eps^4, polynomial in n of order 19
+      real(-0xda1252c00LL),real(-0x16bd22f800LL),real(-0x2731e0a400LL),
+      real(-0x46214fc000LL),real(-0x830545dc00LL),real(-0x1017e988800LL),
+      real(-0x21987b95400LL),real(-0x4b78a99d000LL),real(-0xb9ccd9f8c00LL),
+      real(-0x202de3701800LL),real(-0x68b6655d0400LL),real(-0x1af3df037e000LL),
+      real(-0xa515b5f563c00LL),real(-0xa65924698da800LL),
+      real(0x8fc72c890104c00LL),real(-0x226e597c6e0df000LL),
+      real(0x3ee7237bf0721400LL),real(-0x3d1b0c8706d53800LL),
+      real(0x1e8d8643836a9c00LL),real(-0x634bf45b6b1a7b0LL),
+      reale(50175LL,0xdcc4b2d8b4e97LL),
+      // C4[3], coeff of eps^3, polynomial in n of order 20
+      real(-0x3da35ec00LL),real(-0x62f09c100LL),real(-0xa329fce00LL),
+      real(-0x11560fab00LL),real(-0x1e812bf000LL),real(-0x37d592b500LL),
+      real(-0x6af77a1200LL),real(-0xd82e3c9f00LL),real(-0x1d19ea9f400LL),
+      real(-0x43b761f2900LL),real(-0xad7cf6b5600LL),real(-0x1f71d9841300LL),
+      real(-0x6bcf7c0df800LL),real(-0x1d7abbebd1d00LL),
+      real(-0xc1b8d2e919a00LL),real(-0xd3e226aef40700LL),
+      real(0xc94a0b2634a0400LL),real(-0x3577aaf625fa9100LL),
+      real(0x6aef55ec4bf52200LL),real(-0x634bf45b6b1a7b00LL),
+      real(0x22221bff6cd11a48LL),reale(150527LL,0x964e188a1ebc5LL),
+      // C4[4], coeff of eps^23, polynomial in n of order 0
+      real(567424LL),real(0x1467591741LL),
+      // C4[4], coeff of eps^22, polynomial in n of order 1
+      real(0x7f44f800LL),real(0x23b17a00LL),real(0x1358168b64fd9LL),
+      // C4[4], coeff of eps^21, polynomial in n of order 2
+      real(0x560fab000LL),real(-0x6488cc800LL),real(0x2bcf67580LL),
+      real(0x4f869592664b5LL),
+      // C4[4], coeff of eps^20, polynomial in n of order 3
+      real(0xa4d4b674a00LL),real(-0xbdc38ed8400LL),real(0x20274dfee00LL),
+      real(0x93ecaa9440LL),real(0x436914c918b5d6dLL),
+      // C4[4], coeff of eps^19, polynomial in n of order 4
+      real(0x481bf9079c000LL),real(-0x3c015f7917000LL),real(0x133447522e000LL),
+      real(-0x195b19983d000LL),real(0xa0f15f7a8700LL),
+      reale(3518LL,0xd3a367a37a66dLL),
+      // C4[4], coeff of eps^18, polynomial in n of order 5
+      real(0x1e9f26efa689000LL),real(-0x100c94382c2c000LL),
+      real(0xabead3c2e1f000LL),real(-0xc04c79a6f96000LL),
+      real(0x18fb8548735000LL),real(0x76d40a3ef6c00LL),
       reale(193535LL,0x781b441f4c16bLL),
-      // _C4x[91]
-      real(0x741543000LL),real(0xe4714b800LL),real(0x1d7c5d8000LL),
-      real(0x406b2a4800LL),real(0x9671f6d000LL),real(0x17cd936d800LL),
-      real(0x429614e2000LL),real(0xd3b41886800LL),real(0x31f7c0917000LL),
-      real(0xf21fb6ecf800LL),real(0x6ee892beec000LL),real(0x889688d5b28800LL),
-      real(-0x944ac482b6bf000LL),real(0x2e4469f00aa71800LL),
-      real(-0x73c7760d5050a000LL),reale(2642LL,0x7d1cf3a18a800LL),
-      reale(-2186LL,0x92f4aa56eb000LL),real(0x3d1b0c8706d53800LL),
-      real(-0xb7512595147fa80LL),reale(193535LL,0x781b441f4c16bLL),
-      // _C4x[92]
-      real(0x4f8563d800LL),real(0xa96c658000LL),real(0x180da872800LL),
-      real(0x3b0b3acd000LL),real(0x9f94c3e7800LL),real(0x1e8177ec2000LL),
-      real(0x6e3ee471c800LL),real(0x1fbe99a5b7000LL),real(0xdb641b5c91800LL),
-      real(0xfc08a38932c000LL),real(-0xfb6a7929bd39800LL),
-      real(0x466e762d282a1000LL),reale(-2431LL,0x7283aad43b800LL),
-      reale(2721LL,0xe81cb8f96000LL),real(-0x4dc0eea70f08f800LL),
-      real(-0x1b9eda123c275000LL),real(0x2eba54dfb9ee5800LL),
-      real(-0xf46c321c1b54e00LL),reale(193535LL,0x781b441f4c16bLL),
-      // _C4x[93]
-      real(0x6d40f58000LL),real(0x10545cac800LL),real(0x2adf04bd000LL),
-      real(0x7eec6985800LL),real(0x1ba16d402000LL),real(0x7a072d7ae800LL),
-      real(0x322ca20e07000LL),real(0x3657aa17207800LL),
-      real(-0x3263434d5c54000LL),real(0xcd0703e8db70800LL),
-      real(-0x17ea571d4aa2f000LL),real(0x141161dbf7ec9800LL),
-      real(-0x57d62fedaaa000LL),real(-0xce7cd449810d800LL),
-      real(0x99132fccc31b000LL),real(-0x27598ad75934800LL),
-      real(0x18a5cd1eccf980LL),reale(27647LL,0xec962e4d9d27dLL),
-      // _C4x[94]
-      real(0x45bda664400LL),real(0xc8c97088800LL),real(0x2a5a46b84c00LL),
-      real(0xb467fe915000LL),real(0x471c8a3c15400LL),real(0x49361b74ae1800LL),
-      real(-0x3fb304ab7e4a400LL),real(0xedcc81cc3d0e000LL),
-      real(-0x1834aac92fbf9c00LL),real(0xe864613c6aba800LL),
-      real(0x759492ec34a6c00LL),real(-0xea1e49c1b0f9000LL),
-      real(0x5db63d617b37400LL),real(0x31083890113800LL),
-      real(-0xa60c227ea8400LL),real(-0x3b3da9a3dab180LL),
+      // C4[4], coeff of eps^17, polynomial in n of order 6
+      real(0x780536a0606000LL),real(-0x28779739e97000LL),
+      real(0x3a9fdf130c4000LL),real(-0x2860390cb81000LL),
+      real(0xcce73d3902000LL),real(-0x1322aa5844b000LL),
+      real(0x6bd0a3ad69900LL),reale(27647LL,0xec962e4d9d27dLL),
+      // C4[4], coeff of eps^16, polynomial in n of order 7
+      real(0x45af61c2ad1f800LL),real(-0x1b140a5252fd000LL),
+      real(0x348e789bd7f6800LL),real(-0x137ac7aed3be000LL),
+      real(0x11da35dc2ded800LL),real(-0x12097ef153ff000LL),
+      real(0x186b19645c4800LL),real(0x7935fe20ccb00LL),
+      reale(193535LL,0x781b441f4c16bLL),
+      // C4[4], coeff of eps^15, polynomial in n of order 8
+      real(0x788485be348000LL),real(-0xbf417480965000LL),
+      real(0xbdad05e3bd6000LL),real(-0x306dcc448df000LL),
+      real(0x6c08266aea4000LL),real(-0x364dbd52879000LL),
+      real(0x13468d692f2000LL),real(-0x1f6575294f3000LL),
+      real(0x97982d7211100LL),reale(27647LL,0xec962e4d9d27dLL),
+      // C4[4], coeff of eps^14, polynomial in n of order 9
+      real(0x99754be5293000LL),real(-0x273b2ae73028000LL),
+      real(0xa610233e31d000LL),real(-0x8ee7336f99e000LL),
+      real(0xd7a1a110827000LL),real(-0x2f0d74b9c14000LL),
+      real(0x4f375451ab1000LL),real(-0x4002b6db48a000LL),
+      real(0x20d804cbbb000LL),real(0xa41d3b221400LL),
       reale(27647LL,0xec962e4d9d27dLL),
-      // _C4x[95]
-      real(0x19fde85a2f000LL),real(0x6b4aa2bef4800LL),real(0x28c46a7eab6000LL),
-      real(0x2827ed076a87800LL),real(-0x210a7394d5283000LL),
-      real(0x72396f4bbfb2a800LL),reale(-2621LL,0xb23f88e224000LL),
-      real(0x40dce91ee367d800LL),real(0x52592d2deb84b000LL),
-      real(-0x5a9bf1fdd05df800LL),real(0x10e48562d1f92000LL),
-      real(0x1d4b91258bb3800LL),real(0xaa81c5529799000LL),
-      real(-0x6eadf18b1729800LL),real(0xd0db43634fa080LL),
+      // C4[4], coeff of eps^13, polynomial in n of order 10
+      real(0x6016f6408271a000LL),real(-0x1e7546e7a0d1b000LL),
+      real(0x18e4e98f72c8000LL),real(-0x113f96068e695000LL),
+      real(0x6af41cd57176000LL),real(-0x2590480c1d6f000LL),
+      real(0x61253410a664000LL),real(-0x1c92661c6269000LL),
+      real(0xfa686d5b4d2000LL),real(-0x188238347643000LL),
+      real(0x60544135abb900LL),reale(193535LL,0x781b441f4c16bLL),
+      // C4[4], coeff of eps^12, polynomial in n of order 11
+      reale(-2097LL,0x6253f1b27a00LL),real(-0xa96847f4d191400LL),
+      real(0x644f115411ee9e00LL),real(-0x2912ee32dfa61000LL),
+      real(-0x81eeabcb01be00LL),real(-0xfba8345c9670c00LL),
+      real(0x9bbda8340726600LL),real(-0x11537009b3f0800LL),
+      real(0x51c2ea8aa8c0a00LL),real(-0x2bb89caf7310400LL),
+      real(-0x162bd9b163d200LL),real(-0xac0895744a3c0LL),
       reale(193535LL,0x781b441f4c16bLL),
-      // _C4x[96]
+      // C4[4], coeff of eps^11, polynomial in n of order 12
+      real(-0x296aa6e320b86000LL),real(0x7d9f9f72af514800LL),
+      reale(-2285LL,0x1022817ab000LL),real(0x8d22edc50949800LL),
+      real(0x6581767b41ffc000LL),real(-0x371ad32683bb1800LL),
+      real(-0x915b5d6cd33000LL),real(-0xbce7db3a027c800LL),
+      real(0xd0ebaf65b57e000LL),real(-0x1274db255bb7800LL),
+      real(0x2970a5137d6f000LL),real(-0x30b8535f9002800LL),
+      real(0x8fa21d365c3780LL),reale(193535LL,0x781b441f4c16bLL),
+      // C4[4], coeff of eps^10, polynomial in n of order 13
       real(0x73aaee373e800LL),real(0x6d942f05126000LL),
       real(-0x55d059f7fa72800LL),real(0x114ee97e0f335000LL),
       real(-0x16053fa9ce763800LL),real(0x4d23952dbcc4000LL),
@@ -738,245 +748,232 @@ namespace GeographicLib {
       real(0x2172ab2d7549800LL),real(-0x85ae20f708f000LL),
       real(-0x10c904999a7800LL),real(-0xae78582fbfa00LL),
       reale(27647LL,0xec962e4d9d27dLL),
-      // _C4x[97]
-      real(-0x296aa6e320b86000LL),real(0x7d9f9f72af514800LL),
-      reale(-2285LL,0x1022817ab000LL),real(0x8d22edc50949800LL),
-      real(0x6581767b41ffc000LL),real(-0x371ad32683bb1800LL),
-      real(-0x915b5d6cd33000LL),real(-0xbce7db3a027c800LL),
-      real(0xd0ebaf65b57e000LL),real(-0x1274db255bb7800LL),
-      real(0x2970a5137d6f000LL),real(-0x30b8535f9002800LL),
-      real(0x8fa21d365c3780LL),reale(193535LL,0x781b441f4c16bLL),
-      // _C4x[98]
-      reale(-2097LL,0x6253f1b27a00LL),real(-0xa96847f4d191400LL),
-      real(0x644f115411ee9e00LL),real(-0x2912ee32dfa61000LL),
-      real(-0x81eeabcb01be00LL),real(-0xfba8345c9670c00LL),
-      real(0x9bbda8340726600LL),real(-0x11537009b3f0800LL),
-      real(0x51c2ea8aa8c0a00LL),real(-0x2bb89caf7310400LL),
-      real(-0x162bd9b163d200LL),real(-0xac0895744a3c0LL),
+      // C4[4], coeff of eps^9, polynomial in n of order 14
+      real(0x19fde85a2f000LL),real(0x6b4aa2bef4800LL),real(0x28c46a7eab6000LL),
+      real(0x2827ed076a87800LL),real(-0x210a7394d5283000LL),
+      real(0x72396f4bbfb2a800LL),reale(-2621LL,0xb23f88e224000LL),
+      real(0x40dce91ee367d800LL),real(0x52592d2deb84b000LL),
+      real(-0x5a9bf1fdd05df800LL),real(0x10e48562d1f92000LL),
+      real(0x1d4b91258bb3800LL),real(0xaa81c5529799000LL),
+      real(-0x6eadf18b1729800LL),real(0xd0db43634fa080LL),
       reale(193535LL,0x781b441f4c16bLL),
-      // _C4x[99]
-      real(0x6016f6408271a000LL),real(-0x1e7546e7a0d1b000LL),
-      real(0x18e4e98f72c8000LL),real(-0x113f96068e695000LL),
-      real(0x6af41cd57176000LL),real(-0x2590480c1d6f000LL),
-      real(0x61253410a664000LL),real(-0x1c92661c6269000LL),
-      real(0xfa686d5b4d2000LL),real(-0x188238347643000LL),
-      real(0x60544135abb900LL),reale(193535LL,0x781b441f4c16bLL),
-      // _C4x[100]
-      real(0x99754be5293000LL),real(-0x273b2ae73028000LL),
-      real(0xa610233e31d000LL),real(-0x8ee7336f99e000LL),
-      real(0xd7a1a110827000LL),real(-0x2f0d74b9c14000LL),
-      real(0x4f375451ab1000LL),real(-0x4002b6db48a000LL),
-      real(0x20d804cbbb000LL),real(0xa41d3b221400LL),
+      // C4[4], coeff of eps^8, polynomial in n of order 15
+      real(0x45bda664400LL),real(0xc8c97088800LL),real(0x2a5a46b84c00LL),
+      real(0xb467fe915000LL),real(0x471c8a3c15400LL),real(0x49361b74ae1800LL),
+      real(-0x3fb304ab7e4a400LL),real(0xedcc81cc3d0e000LL),
+      real(-0x1834aac92fbf9c00LL),real(0xe864613c6aba800LL),
+      real(0x759492ec34a6c00LL),real(-0xea1e49c1b0f9000LL),
+      real(0x5db63d617b37400LL),real(0x31083890113800LL),
+      real(-0xa60c227ea8400LL),real(-0x3b3da9a3dab180LL),
       reale(27647LL,0xec962e4d9d27dLL),
-      // _C4x[101]
-      real(0x788485be348000LL),real(-0xbf417480965000LL),
-      real(0xbdad05e3bd6000LL),real(-0x306dcc448df000LL),
-      real(0x6c08266aea4000LL),real(-0x364dbd52879000LL),
-      real(0x13468d692f2000LL),real(-0x1f6575294f3000LL),
-      real(0x97982d7211100LL),reale(27647LL,0xec962e4d9d27dLL),
-      // _C4x[102]
-      real(0x45af61c2ad1f800LL),real(-0x1b140a5252fd000LL),
-      real(0x348e789bd7f6800LL),real(-0x137ac7aed3be000LL),
-      real(0x11da35dc2ded800LL),real(-0x12097ef153ff000LL),
-      real(0x186b19645c4800LL),real(0x7935fe20ccb00LL),
-      reale(193535LL,0x781b441f4c16bLL),
-      // _C4x[103]
-      real(0x780536a0606000LL),real(-0x28779739e97000LL),
-      real(0x3a9fdf130c4000LL),real(-0x2860390cb81000LL),
-      real(0xcce73d3902000LL),real(-0x1322aa5844b000LL),
-      real(0x6bd0a3ad69900LL),reale(27647LL,0xec962e4d9d27dLL),
-      // _C4x[104]
-      real(0x1e9f26efa689000LL),real(-0x100c94382c2c000LL),
-      real(0xabead3c2e1f000LL),real(-0xc04c79a6f96000LL),
-      real(0x18fb8548735000LL),real(0x76d40a3ef6c00LL),
+      // C4[4], coeff of eps^7, polynomial in n of order 16
+      real(0x6d40f58000LL),real(0x10545cac800LL),real(0x2adf04bd000LL),
+      real(0x7eec6985800LL),real(0x1ba16d402000LL),real(0x7a072d7ae800LL),
+      real(0x322ca20e07000LL),real(0x3657aa17207800LL),
+      real(-0x3263434d5c54000LL),real(0xcd0703e8db70800LL),
+      real(-0x17ea571d4aa2f000LL),real(0x141161dbf7ec9800LL),
+      real(-0x57d62fedaaa000LL),real(-0xce7cd449810d800LL),
+      real(0x99132fccc31b000LL),real(-0x27598ad75934800LL),
+      real(0x18a5cd1eccf980LL),reale(27647LL,0xec962e4d9d27dLL),
+      // C4[4], coeff of eps^6, polynomial in n of order 17
+      real(0x4f8563d800LL),real(0xa96c658000LL),real(0x180da872800LL),
+      real(0x3b0b3acd000LL),real(0x9f94c3e7800LL),real(0x1e8177ec2000LL),
+      real(0x6e3ee471c800LL),real(0x1fbe99a5b7000LL),real(0xdb641b5c91800LL),
+      real(0xfc08a38932c000LL),real(-0xfb6a7929bd39800LL),
+      real(0x466e762d282a1000LL),reale(-2431LL,0x7283aad43b800LL),
+      reale(2721LL,0xe81cb8f96000LL),real(-0x4dc0eea70f08f800LL),
+      real(-0x1b9eda123c275000LL),real(0x2eba54dfb9ee5800LL),
+      real(-0xf46c321c1b54e00LL),reale(193535LL,0x781b441f4c16bLL),
+      // C4[4], coeff of eps^5, polynomial in n of order 18
+      real(0x741543000LL),real(0xe4714b800LL),real(0x1d7c5d8000LL),
+      real(0x406b2a4800LL),real(0x9671f6d000LL),real(0x17cd936d800LL),
+      real(0x429614e2000LL),real(0xd3b41886800LL),real(0x31f7c0917000LL),
+      real(0xf21fb6ecf800LL),real(0x6ee892beec000LL),real(0x889688d5b28800LL),
+      real(-0x944ac482b6bf000LL),real(0x2e4469f00aa71800LL),
+      real(-0x73c7760d5050a000LL),reale(2642LL,0x7d1cf3a18a800LL),
+      reale(-2186LL,0x92f4aa56eb000LL),real(0x3d1b0c8706d53800LL),
+      real(-0xb7512595147fa80LL),reale(193535LL,0x781b441f4c16bLL),
+      // C4[4], coeff of eps^4, polynomial in n of order 19
+      real(0x6bb08e00LL),real(0xc7f67400LL),real(0x181eb1a00LL),
+      real(0x30a52a000LL),real(0x673602600LL),real(0xe8536cc00LL),
+      real(0x230e6ab200LL),real(0x5c19c1f800LL),real(0x10ca075be00LL),
+      real(0x37f6c332400LL),real(0xdf0e61c4a00LL),real(0x47dfa8095000LL),
+      real(0x236014b495600LL),real(0x2f60ae04237c00LL),
+      real(-0x38c125ca4a81e00LL),real(0x13dd33a066e0a800LL),
+      real(-0x389cd322becd1200LL),real(0x5ba892ca8a3fd400LL),
+      real(-0x4c61cfa8c88a8600LL),real(0x18d2fd16dac69ec0LL),
       reale(193535LL,0x781b441f4c16bLL),
-      // _C4x[105]
-      real(0x481bf9079c000LL),real(-0x3c015f7917000LL),real(0x133447522e000LL),
-      real(-0x195b19983d000LL),real(0xa0f15f7a8700LL),
-      reale(3518LL,0xd3a367a37a66dLL),
-      // _C4x[106]
-      real(0xa4d4b674a00LL),real(-0xbdc38ed8400LL),real(0x20274dfee00LL),
-      real(0x93ecaa9440LL),real(0x436914c918b5d6dLL),
-      // _C4x[107]
-      real(0x560fab000LL),real(-0x6488cc800LL),real(0x2bcf67580LL),
+      // C4[5], coeff of eps^23, polynomial in n of order 0
+      real(0xe17e80LL),real(0xd190230980fLL),
+      // C4[5], coeff of eps^22, polynomial in n of order 1
+      real(-0x63fa000LL),real(0x259cf00LL),real(0x62c2748ec71LL),
+      // C4[5], coeff of eps^21, polynomial in n of order 2
+      real(-0xa82231000LL),real(0x12ebf1800LL),real(0x5cce6880LL),
       real(0x4f869592664b5LL),
-      // _C4x[108]
-      real(0x7f44f800LL),real(0x23b17a00LL),real(0x1358168b64fd9LL),
-      // _C4x[109]
-      real(567424LL),real(0x1467591741LL),
-      // _C4x[110]
-      real(-0x176bb000LL),real(-0x339cb800LL),real(-0x78298000LL),
-      real(-0x12a324800LL),real(-0x31dd75000LL),real(-0x92088d800LL),
-      real(-0x1dded72000LL),real(-0x7091426800LL),real(-0x1ffab8af000LL),
-      real(-0xbdf5200f800LL),real(-0x6d0cb854c000LL),real(-0xacf22c5668800LL),
-      real(0xfa276dd8697000LL),real(-0x6c92e41ed151800LL),
-      real(0x18f8d3300c4da000LL),real(-0x382fdb2c1baea800LL),
-      real(0x4f13f21826f5d000LL),real(-0x3d1b0c8706d53800LL),
-      real(0x131873ea3222a180LL),reale(236543LL,0x59e86fb479711LL),
-      // _C4x[111]
-      real(-0x287496000LL),real(-0x615720000LL),real(-0xfbb32a000LL),
-      real(-0x2c5b51c000LL),real(-0x8b2715e000LL),real(-0x1f40dc58000LL),
-      real(-0x869fe272000LL),real(-0x2f027b014000LL),real(-0x19275e39a6000LL),
-      real(-0x24c57351390000LL),real(0x305c8c1f55c6000LL),
-      real(-0x12c56d86cea0c000LL),real(0x3c958c9a69892000LL),
-      real(-0x75427b7d716c8000LL),reale(2264LL,0x2021045b7e000LL),
-      real(-0x686da1b1a7d04000LL),real(0x2b2226f5e6b4a000LL),
-      real(-0x7a36190e0daa700LL),reale(236543LL,0x59e86fb479711LL),
-      // _C4x[112]
-      real(-0x6982d8000LL),real(-0x1200880800LL),real(-0x367aead000LL),
-      real(-0xbc0ef21800LL),real(-0x306255a2000LL),real(-0x100b9fcf2800LL),
-      real(-0x8171cf3d7000LL),real(-0xb08a440213800LL),
-      real(0xd5be3a4ba94000LL),real(-0x4af12ff99ea4800LL),
-      real(0xd4237986197f000LL),real(-0x15530c89262c5800LL),
-      real(0x12c48ba350cca000LL),real(-0x590f07b7ee96800LL),
-      real(-0x53e376c2a7ab000LL),real(0x5b3d559eedc8800LL),
-      real(-0x1b37127cacfe280LL),reale(33791LL,0xe845c6d0a3a27LL),
-      // _C4x[113]
-      real(-0x323b5354000LL),real(-0xa77c1e58000LL),real(-0x297150a3c000LL),
-      real(-0xd25b36ef0000LL),real(-0x64c6f9d464000LL),
-      real(-0x816d981c288000LL),real(0x91bbe6aceeb4000LL),
-      real(-0x2ea0d03ef98a0000LL),real(0x748c356a9df8c000LL),
-      reale(-2464LL,0xbb08388f48000LL),real(0x55038197b9ea4000LL),
-      real(0x24c2f502435b0000LL),real(-0x557a28e333384000LL),
-      real(0x319d6c472db18000LL),real(-0xa981b88bf66c000LL),
-      real(0x2452a78bb4ce00LL),reale(236543LL,0x59e86fb479711LL),
-      // _C4x[114]
-      real(-0x45be4df1f000LL),real(-0x154928d5d8800LL),
-      real(-0x9c093f54d6000LL),real(-0xbe1dac855c3800LL),
-      real(0xc8c35d9371b3000LL),real(-0x3b27b3be7f71e800LL),
-      reale(2105LL,0xa27ce5e51c000LL),reale(-2267LL,0xddae18aab6800LL),
-      real(0x215c4ca42d605000LL),real(0x52b0fbc40a45b800LL),
-      real(-0x52abb6acf6af2000LL),real(0x14cab8bdb5a70800LL),
-      real(0x422bb90412d7000LL),real(0xaa8f3f42195800LL),
-      real(-0x18c864fb5207380LL),reale(236543LL,0x59e86fb479711LL),
-      // _C4x[115]
-      real(-0x1f7df788da000LL),real(-0x249f1260a08000LL),
-      real(0x2485dbf6336a000LL),real(-0x9fd55d1961bc000LL),
-      real(0x13ee6db114d4e000LL),real(-0x114ab28a688b0000LL),
-      real(-0x1759d6f434ee000LL),real(0xe5435dae775c000LL),
-      real(-0x883ae4654d0a000LL),real(0x6d085594a8000LL),
-      real(-0x3b594ff4c6000LL),real(0x18b250a1c574000LL),
-      real(-0xc2af3f725e2000LL),real(0x11b5d0e5824b00LL),
+      // C4[5], coeff of eps^20, polynomial in n of order 3
+      real(-0xecd417f0000LL),real(0x4df40da0000LL),real(-0x78cb3050000LL),
+      real(0x28d58610800LL),real(0x5263fcf5c8de3f7LL),
+      // C4[5], coeff of eps^19, polynomial in n of order 4
+      real(-0xf4977948ac000LL),real(0xfebd5b2ac3000LL),
+      real(-0xf90c852576000LL),real(0x1257a8b1e1000LL),real(0x5e1a6b95fb00LL),
+      reale(21503LL,0xf0e695ca96ad3LL),
+      // C4[5], coeff of eps^18, polynomial in n of order 5
+      real(-0x25dd48c154000LL),real(0x596953f850000LL),
+      real(-0x2b40cdd44c000LL),real(0x104815a268000LL),
+      real(-0x1ab27f0a04000LL),real(0x7e701f145600LL),
+      reale(3071LL,0xfdd7cc41833d5LL),
+      // C4[5], coeff of eps^17, polynomial in n of order 6
+      real(-0x4776cd8c606000LL),real(0x6d8a47bfe9f000LL),
+      real(-0x187da0ea944000LL),real(0x2b758d37739000LL),
+      real(-0x22fd5e6d302000LL),real(0x107133def3000LL),real(0x56ef801cd100LL),
       reale(33791LL,0xe845c6d0a3a27LL),
-      // _C4x[116]
-      real(0x2c14f5cef5da000LL),real(-0xb44f7f3a7637800LL),
-      real(0x144dd8529649b000LL),real(-0xdf6b3f6a9dda800LL),
-      real(-0x611b67a2b3c4000LL),real(0xe4e2f0fafbb2800LL),
-      real(-0x51c03e2adea3000LL),real(-0xd7c7b9cb0f0800LL),
-      real(-0x16096a592762000LL),real(0x1c9393e7a4dc800LL),
-      real(-0x381de14f961000LL),real(-0xdc6f16ca46800LL),
-      real(-0xd4311572ebf80LL),reale(33791LL,0xe845c6d0a3a27LL),
-      // _C4x[117]
-      reale(2256LL,0x5da9961330000LL),real(-0x4ad304d1312a0000LL),
-      real(-0x4061e93f2b8f0000LL),real(0x5b0abf1dff380000LL),
-      real(-0x11e106d1afa10000LL),real(-0x36aeeaeb6e60000LL),
-      real(-0xfcdce3949630000LL),real(0x8af39fd661c0000LL),
-      real(0x3d8b99e8cb0000LL),real(0x2f252d98fde0000LL),
-      real(-0x29a890537770000LL),real(0x62af9738c95800LL),
+      // C4[5], coeff of eps^16, polynomial in n of order 7
+      real(-0x6b41dfbb0208000LL),real(0x3281e67a9bd0000LL),
+      real(-0x11e76a3ab618000LL),real(0x2fa8791e0ae0000LL),
+      real(-0xef00faafea8000LL),real(0x82642584ff0000LL),
+      real(-0xce6c8b206b8000LL),real(0x33a2c6e1f0cc00LL),
       reale(236543LL,0x59e86fb479711LL),
-      // _C4x[118]
-      real(-0x4e0fa2600780a000LL),real(0x4e911c6aabd6b000LL),
-      real(-0x693532675088000LL),real(0x218ccc46e845000LL),
-      real(-0x117da33185e06000LL),real(0x4517905378bf000LL),
-      real(-0x10ba1c1d3344000LL),real(0x5399b73b0419000LL),
-      real(-0x1d57ddd62302000LL),real(-0x2b67cba006d000LL),
-      real(-0x17851f6bed3f00LL),reale(236543LL,0x59e86fb479711LL),
-      // _C4x[119]
+      // C4[5], coeff of eps^15, polynomial in n of order 8
+      real(-0xd8a9f7e5e7f8000LL),real(0x75ff062faeb000LL),
+      real(-0x57d41a79bb5a000LL),real(0x470a22b15ed1000LL),
+      real(-0x941305430fc000LL),real(0x2571b5b524d7000LL),
+      real(-0x15ee8622281e000LL),real(-0x810fd11a43000LL),
+      real(-0x3b143f8fcc100LL),reale(236543LL,0x59e86fb479711LL),
+      // C4[5], coeff of eps^14, polynomial in n of order 9
       real(-0x11e2c065bec000LL),real(0x1160c7104de0000LL),
       real(-0x2505ead2add4000LL),real(0x375d7cf9da8000LL),
       real(-0x7d85d31b2fc000LL),real(0xc6e2597bcf0000LL),
       real(-0x1c3d1fca5e4000LL),real(0x26eff911138000LL),
       real(-0x32d040ac10c000LL),real(0xa3358a5620200LL),
       reale(33791LL,0xe845c6d0a3a27LL),
-      // _C4x[120]
-      real(-0xd8a9f7e5e7f8000LL),real(0x75ff062faeb000LL),
-      real(-0x57d41a79bb5a000LL),real(0x470a22b15ed1000LL),
-      real(-0x941305430fc000LL),real(0x2571b5b524d7000LL),
-      real(-0x15ee8622281e000LL),real(-0x810fd11a43000LL),
-      real(-0x3b143f8fcc100LL),reale(236543LL,0x59e86fb479711LL),
-      // _C4x[121]
-      real(-0x6b41dfbb0208000LL),real(0x3281e67a9bd0000LL),
-      real(-0x11e76a3ab618000LL),real(0x2fa8791e0ae0000LL),
-      real(-0xef00faafea8000LL),real(0x82642584ff0000LL),
-      real(-0xce6c8b206b8000LL),real(0x33a2c6e1f0cc00LL),
+      // C4[5], coeff of eps^13, polynomial in n of order 10
+      real(-0x4e0fa2600780a000LL),real(0x4e911c6aabd6b000LL),
+      real(-0x693532675088000LL),real(0x218ccc46e845000LL),
+      real(-0x117da33185e06000LL),real(0x4517905378bf000LL),
+      real(-0x10ba1c1d3344000LL),real(0x5399b73b0419000LL),
+      real(-0x1d57ddd62302000LL),real(-0x2b67cba006d000LL),
+      real(-0x17851f6bed3f00LL),reale(236543LL,0x59e86fb479711LL),
+      // C4[5], coeff of eps^12, polynomial in n of order 11
+      reale(2256LL,0x5da9961330000LL),real(-0x4ad304d1312a0000LL),
+      real(-0x4061e93f2b8f0000LL),real(0x5b0abf1dff380000LL),
+      real(-0x11e106d1afa10000LL),real(-0x36aeeaeb6e60000LL),
+      real(-0xfcdce3949630000LL),real(0x8af39fd661c0000LL),
+      real(0x3d8b99e8cb0000LL),real(0x2f252d98fde0000LL),
+      real(-0x29a890537770000LL),real(0x62af9738c95800LL),
       reale(236543LL,0x59e86fb479711LL),
-      // _C4x[122]
-      real(-0x4776cd8c606000LL),real(0x6d8a47bfe9f000LL),
-      real(-0x187da0ea944000LL),real(0x2b758d37739000LL),
-      real(-0x22fd5e6d302000LL),real(0x107133def3000LL),real(0x56ef801cd100LL),
+      // C4[5], coeff of eps^11, polynomial in n of order 12
+      real(0x2c14f5cef5da000LL),real(-0xb44f7f3a7637800LL),
+      real(0x144dd8529649b000LL),real(-0xdf6b3f6a9dda800LL),
+      real(-0x611b67a2b3c4000LL),real(0xe4e2f0fafbb2800LL),
+      real(-0x51c03e2adea3000LL),real(-0xd7c7b9cb0f0800LL),
+      real(-0x16096a592762000LL),real(0x1c9393e7a4dc800LL),
+      real(-0x381de14f961000LL),real(-0xdc6f16ca46800LL),
+      real(-0xd4311572ebf80LL),reale(33791LL,0xe845c6d0a3a27LL),
+      // C4[5], coeff of eps^10, polynomial in n of order 13
+      real(-0x1f7df788da000LL),real(-0x249f1260a08000LL),
+      real(0x2485dbf6336a000LL),real(-0x9fd55d1961bc000LL),
+      real(0x13ee6db114d4e000LL),real(-0x114ab28a688b0000LL),
+      real(-0x1759d6f434ee000LL),real(0xe5435dae775c000LL),
+      real(-0x883ae4654d0a000LL),real(0x6d085594a8000LL),
+      real(-0x3b594ff4c6000LL),real(0x18b250a1c574000LL),
+      real(-0xc2af3f725e2000LL),real(0x11b5d0e5824b00LL),
       reale(33791LL,0xe845c6d0a3a27LL),
-      // _C4x[123]
-      real(-0x25dd48c154000LL),real(0x596953f850000LL),
-      real(-0x2b40cdd44c000LL),real(0x104815a268000LL),
-      real(-0x1ab27f0a04000LL),real(0x7e701f145600LL),
-      reale(3071LL,0xfdd7cc41833d5LL),
-      // _C4x[124]
-      real(-0xf4977948ac000LL),real(0xfebd5b2ac3000LL),
-      real(-0xf90c852576000LL),real(0x1257a8b1e1000LL),real(0x5e1a6b95fb00LL),
-      reale(21503LL,0xf0e695ca96ad3LL),
-      // _C4x[125]
-      real(-0xecd417f0000LL),real(0x4df40da0000LL),real(-0x78cb3050000LL),
-      real(0x28d58610800LL),real(0x5263fcf5c8de3f7LL),
-      // _C4x[126]
-      real(-0xa82231000LL),real(0x12ebf1800LL),real(0x5cce6880LL),
-      real(0x4f869592664b5LL),
-      // _C4x[127]
-      real(-0x63fa000LL),real(0x259cf00LL),real(0x62c2748ec71LL),
-      // _C4x[128]
-      real(0xe17e80LL),real(0xd190230980fLL),
-      // _C4x[129]
-      real(0xa16f000LL),real(0x1b5f0000LL),real(0x50671000LL),
-      real(0x103c32000LL),real(0x3aee73000LL),real(0xf7d074000LL),
-      real(0x4f19f75000LL),real(0x214230b6000LL),real(0x15d36ff77000LL),
-      real(0x2803a29af8000LL),real(-0x43d629aab87000LL),
-      real(0x232131018d3a000LL),real(-0x9e155c86fb85000LL),
-      real(0x1c3aabf38857c000LL),real(-0x361b1ee81aa83000LL),
-      real(0x44dcb2f8dc1be000LL),real(-0x325282c98d281000LL),
-      real(0xf46c321c1b54e00LL),reale(279551LL,0x3bb59b49a6cb7LL),
-      // _C4x[130]
-      real(0x9a2c0000LL),real(0x1df854000LL),real(0x684c68000LL),
-      real(0x1a2757c000LL),real(0x7eb6a10000LL),real(0x3232f0a4000LL),
-      real(0x1ec960fb8000LL),real(0x3439f07dcc000LL),real(-0x50f0148aea0000LL),
-      real(0x25bf6de530f4000LL),real(-0x9635a567bcf8000LL),
-      real(0x1735ee17e1e1c000LL),real(-0x25a38fef60750000LL),
-      real(0x2834884b55944000LL),real(-0x1b3dfda8c79a8000LL),
-      real(0xa981b88bf66c000LL),real(-0x1cc16f4e99cdc00LL),
-      reale(93183LL,0xbe91de6de243dLL),
-      // _C4x[131]
-      real(0x3bee10e000LL),real(0xe6dcd7c000LL),real(0x42cbc6ea000LL),
-      real(0x1923069d8000LL),real(0xe8a206ec6000LL),real(0x170dd449e34000LL),
-      real(-0x2102346c3b5e000LL),real(0xe0052eca6690000LL),
-      real(-0x318a0eacb0b82000LL),real(0x690a1407d3eec000LL),
-      reale(-2183LL,0x49fe19ea5a000LL),real(0x61bf435eea348000LL),
-      real(-0xe133a8622dca000LL),real(-0x2748b26bf705c000LL),
-      real(0x220d7d12f9812000LL),real(-0x98dbd66bee38400LL),
+      // C4[5], coeff of eps^9, polynomial in n of order 14
+      real(-0x45be4df1f000LL),real(-0x154928d5d8800LL),
+      real(-0x9c093f54d6000LL),real(-0xbe1dac855c3800LL),
+      real(0xc8c35d9371b3000LL),real(-0x3b27b3be7f71e800LL),
+      reale(2105LL,0xa27ce5e51c000LL),reale(-2267LL,0xddae18aab6800LL),
+      real(0x215c4ca42d605000LL),real(0x52b0fbc40a45b800LL),
+      real(-0x52abb6acf6af2000LL),real(0x14cab8bdb5a70800LL),
+      real(0x422bb90412d7000LL),real(0xaa8f3f42195800LL),
+      real(-0x18c864fb5207380LL),reale(236543LL,0x59e86fb479711LL),
+      // C4[5], coeff of eps^8, polynomial in n of order 15
+      real(-0x323b5354000LL),real(-0xa77c1e58000LL),real(-0x297150a3c000LL),
+      real(-0xd25b36ef0000LL),real(-0x64c6f9d464000LL),
+      real(-0x816d981c288000LL),real(0x91bbe6aceeb4000LL),
+      real(-0x2ea0d03ef98a0000LL),real(0x748c356a9df8c000LL),
+      reale(-2464LL,0xbb08388f48000LL),real(0x55038197b9ea4000LL),
+      real(0x24c2f502435b0000LL),real(-0x557a28e333384000LL),
+      real(0x319d6c472db18000LL),real(-0xa981b88bf66c000LL),
+      real(0x2452a78bb4ce00LL),reale(236543LL,0x59e86fb479711LL),
+      // C4[5], coeff of eps^7, polynomial in n of order 16
+      real(-0x6982d8000LL),real(-0x1200880800LL),real(-0x367aead000LL),
+      real(-0xbc0ef21800LL),real(-0x306255a2000LL),real(-0x100b9fcf2800LL),
+      real(-0x8171cf3d7000LL),real(-0xb08a440213800LL),
+      real(0xd5be3a4ba94000LL),real(-0x4af12ff99ea4800LL),
+      real(0xd4237986197f000LL),real(-0x15530c89262c5800LL),
+      real(0x12c48ba350cca000LL),real(-0x590f07b7ee96800LL),
+      real(-0x53e376c2a7ab000LL),real(0x5b3d559eedc8800LL),
+      real(-0x1b37127cacfe280LL),reale(33791LL,0xe845c6d0a3a27LL),
+      // C4[5], coeff of eps^6, polynomial in n of order 17
+      real(-0x287496000LL),real(-0x615720000LL),real(-0xfbb32a000LL),
+      real(-0x2c5b51c000LL),real(-0x8b2715e000LL),real(-0x1f40dc58000LL),
+      real(-0x869fe272000LL),real(-0x2f027b014000LL),real(-0x19275e39a6000LL),
+      real(-0x24c57351390000LL),real(0x305c8c1f55c6000LL),
+      real(-0x12c56d86cea0c000LL),real(0x3c958c9a69892000LL),
+      real(-0x75427b7d716c8000LL),reale(2264LL,0x2021045b7e000LL),
+      real(-0x686da1b1a7d04000LL),real(0x2b2226f5e6b4a000LL),
+      real(-0x7a36190e0daa700LL),reale(236543LL,0x59e86fb479711LL),
+      // C4[5], coeff of eps^5, polynomial in n of order 18
+      real(-0x176bb000LL),real(-0x339cb800LL),real(-0x78298000LL),
+      real(-0x12a324800LL),real(-0x31dd75000LL),real(-0x92088d800LL),
+      real(-0x1dded72000LL),real(-0x7091426800LL),real(-0x1ffab8af000LL),
+      real(-0xbdf5200f800LL),real(-0x6d0cb854c000LL),real(-0xacf22c5668800LL),
+      real(0xfa276dd8697000LL),real(-0x6c92e41ed151800LL),
+      real(0x18f8d3300c4da000LL),real(-0x382fdb2c1baea800LL),
+      real(0x4f13f21826f5d000LL),real(-0x3d1b0c8706d53800LL),
+      real(0x131873ea3222a180LL),reale(236543LL,0x59e86fb479711LL),
+      // C4[6], coeff of eps^23, polynomial in n of order 0
+      real(0x1316c00LL),real(0x45dab658805LL),
+      // C4[6], coeff of eps^22, polynomial in n of order 1
+      real(0x2e25f5000LL),real(0xf2951a00LL),real(0x1b45118f2c973bLL),
+      // C4[6], coeff of eps^21, polynomial in n of order 2
+      real(0x1946d60000LL),real(-0x2993250000LL),real(0xc21a91000LL),
+      real(0x22cae1700cc0f3LL),
+      // C4[6], coeff of eps^20, polynomial in n of order 3
+      real(0x94a2566a8000LL),real(-0x7736ce990000LL),real(0x345f5a38000LL),
+      real(0x11f45dc9000LL),real(0x36c560e36413be89LL),
+      // C4[6], coeff of eps^19, polynomial in n of order 4
+      real(0x5a0e4ebdc0000LL),real(-0x1d4e9158b0000LL),real(0xfe56696e0000LL),
+      real(-0x195347b590000LL),real(0x66855efe5000LL),
+      reale(3630LL,0x89164e7bf8313LL),
+      // C4[6], coeff of eps^18, polynomial in n of order 5
+      real(0x588efe4c176000LL),real(-0xcc317e9b08000LL),
+      real(0x2e65271667a000LL),real(-0x1cb46908f84000LL),
+      real(-0x7bc8d2682000LL),real(-0x36524dd3a400LL),
+      reale(39935LL,0xe3f55f53aa1d1LL),
+      // C4[6], coeff of eps^17, polynomial in n of order 6
+      real(0x2dbd6ef2050000LL),real(-0x356ee7ee5e8000LL),
+      real(0x65e2c9482e0000LL),real(-0x1247a684858000LL),
+      real(0x13c46949570000LL),real(-0x1b548eba6c8000LL),
+      real(0x5c900466be800LL),reale(39935LL,0xe3f55f53aa1d1LL),
+      // C4[6], coeff of eps^16, polynomial in n of order 7
+      real(-0x3fff5b5aa54000LL),real(-0x6a2cbaeaf348000LL),
+      real(0x2b55e8782dc4000LL),real(-0x69f22faba30000LL),
+      real(0x26e11f54b9dc000LL),real(-0x105d41b83118000LL),
+      real(-0x12eb1ab4e0c000LL),real(-0x9530f9646a800LL),
       reale(279551LL,0x3bb59b49a6cb7LL),
-      // _C4x[132]
-      real(0x8fcb3bf8000LL),real(0x33bb5d994000LL),real(0x1c6cd111b0000LL),
-      real(0x2a77da91fcc000LL),real(-0x38ac5a4a0098000LL),
-      real(0x160f7571fbc04000LL),real(-0x45e92df7f7ee0000LL),
-      real(0x7f01d3c372a3c000LL),real(-0x7edcf27daed28000LL),
-      real(0x27dfe4585e674000LL),real(0x38a548f303090000LL),
-      real(-0x4b87231069354000LL),real(0x24d2adef05648000LL),
-      real(-0x6a5625dbc71c000LL),real(-0x18371a5d233400LL),
+      // C4[6], coeff of eps^15, polynomial in n of order 8
+      real(0xf488f4012440000LL),real(-0xb16a4f02dfc8000LL),
+      real(-0x103bba4a90d0000LL),real(-0x4da08c72a3d8000LL),
+      real(0x45a11acaf220000LL),real(-0x25f21bc63e8000LL),
+      real(0x12fccd9d4510000LL),real(-0x13e0eb3687f8000LL),
+      real(0x356c2e9517d800LL),reale(279551LL,0x3bb59b49a6cb7LL),
+      // C4[6], coeff of eps^14, polynomial in n of order 9
+      real(0x28c5c3199aad2000LL),real(0x80d5fb17a810000LL),
+      real(0x9c623a70694e000LL),real(-0xf23c0600f3f4000LL),
+      real(0x6928769f1ca000LL),real(-0x1e8f96869bf8000LL),
+      real(0x4f9253e0b846000LL),real(-0x11e4e806cbfc000LL),
+      real(-0x2dad19c0f3e000LL),real(-0x1f2fac1e88dc00LL),
       reale(279551LL,0x3bb59b49a6cb7LL),
-      // _C4x[133]
-      real(0x6d0001099000LL),real(0x9a74d7ec5c000LL),real(-0xc18676170e1000LL),
-      real(0x45ad31c7f8a2000LL),real(-0xc7369375e55b000LL),
-      real(0x1364b97f822e8000LL),real(-0xe19539447ad5000LL),
-      real(-0x26bf9b041ad2000LL),real(0xce71cc8200b1000LL),
-      real(-0x8c822446468c000LL),real(0x12e554ec5f37000LL),
-      real(0xa6c4f3e59ba000LL),real(0x30bb36a52bd000LL),
-      real(-0x34440d2d335600LL),reale(39935LL,0xe3f55f53aa1d1LL),
-      // _C4x[134]
-      real(-0x108032160840000LL),real(0x5885fb25bf70000LL),
-      real(-0xe5dec7019ee0000LL),real(0x13305b31e4ed0000LL),
-      real(-0x9278e6008580000LL),real(-0x855a0cffe9d0000LL),
-      real(0xd3d848f453e0000LL),real(-0x4a9f485fda70000LL),
-      real(-0xfb7b0fc02c0000LL),real(-0x691c2e87310000LL),
-      real(0x177c9a6d86a0000LL),real(-0x9585db4a3b0000LL),
-      real(0xa77dc54c8f000LL),reale(39935LL,0xe3f55f53aa1d1LL),
-      // _C4x[135]
+      // C4[6], coeff of eps^13, polynomial in n of order 10
+      real(-0xdb139b99ca0000LL),real(-0x5dbaf74a92790000LL),
+      real(0x3b504b033ef80000LL),real(0x39f346109690000LL),
+      real(0x1c11de49bba0000LL),real(-0x10aa5a9917350000LL),
+      real(0x49bc5039b7c0000LL),real(0x92ae304aad0000LL),
+      real(0x32f3e8ddd3e0000LL),real(-0x233311e51f10000LL),
+      real(0x4483a6a16dd000LL),reale(279551LL,0x3bb59b49a6cb7LL),
+      // C4[6], coeff of eps^12, polynomial in n of order 11
       real(-0xfbf5c5edd078000LL),real(0x1202fde81d5f0000LL),
       real(-0x454a07e84fa8000LL),real(-0xbd470dafdb40000LL),
       real(0xb3ba7d182928000LL),real(-0x155dacd6cc70000LL),
@@ -984,345 +981,379 @@ namespace GeographicLib {
       real(0x167a9a9742c8000LL),real(-0x7d81f52ed0000LL),
       real(-0x7ffde3fc68000LL),real(-0xe287c62fa3000LL),
       reale(39935LL,0xe3f55f53aa1d1LL),
-      // _C4x[136]
-      real(-0xdb139b99ca0000LL),real(-0x5dbaf74a92790000LL),
-      real(0x3b504b033ef80000LL),real(0x39f346109690000LL),
-      real(0x1c11de49bba0000LL),real(-0x10aa5a9917350000LL),
-      real(0x49bc5039b7c0000LL),real(0x92ae304aad0000LL),
-      real(0x32f3e8ddd3e0000LL),real(-0x233311e51f10000LL),
-      real(0x4483a6a16dd000LL),reale(279551LL,0x3bb59b49a6cb7LL),
-      // _C4x[137]
-      real(0x28c5c3199aad2000LL),real(0x80d5fb17a810000LL),
-      real(0x9c623a70694e000LL),real(-0xf23c0600f3f4000LL),
-      real(0x6928769f1ca000LL),real(-0x1e8f96869bf8000LL),
-      real(0x4f9253e0b846000LL),real(-0x11e4e806cbfc000LL),
-      real(-0x2dad19c0f3e000LL),real(-0x1f2fac1e88dc00LL),
+      // C4[6], coeff of eps^11, polynomial in n of order 12
+      real(-0x108032160840000LL),real(0x5885fb25bf70000LL),
+      real(-0xe5dec7019ee0000LL),real(0x13305b31e4ed0000LL),
+      real(-0x9278e6008580000LL),real(-0x855a0cffe9d0000LL),
+      real(0xd3d848f453e0000LL),real(-0x4a9f485fda70000LL),
+      real(-0xfb7b0fc02c0000LL),real(-0x691c2e87310000LL),
+      real(0x177c9a6d86a0000LL),real(-0x9585db4a3b0000LL),
+      real(0xa77dc54c8f000LL),reale(39935LL,0xe3f55f53aa1d1LL),
+      // C4[6], coeff of eps^10, polynomial in n of order 13
+      real(0x6d0001099000LL),real(0x9a74d7ec5c000LL),real(-0xc18676170e1000LL),
+      real(0x45ad31c7f8a2000LL),real(-0xc7369375e55b000LL),
+      real(0x1364b97f822e8000LL),real(-0xe19539447ad5000LL),
+      real(-0x26bf9b041ad2000LL),real(0xce71cc8200b1000LL),
+      real(-0x8c822446468c000LL),real(0x12e554ec5f37000LL),
+      real(0xa6c4f3e59ba000LL),real(0x30bb36a52bd000LL),
+      real(-0x34440d2d335600LL),reale(39935LL,0xe3f55f53aa1d1LL),
+      // C4[6], coeff of eps^9, polynomial in n of order 14
+      real(0x8fcb3bf8000LL),real(0x33bb5d994000LL),real(0x1c6cd111b0000LL),
+      real(0x2a77da91fcc000LL),real(-0x38ac5a4a0098000LL),
+      real(0x160f7571fbc04000LL),real(-0x45e92df7f7ee0000LL),
+      real(0x7f01d3c372a3c000LL),real(-0x7edcf27daed28000LL),
+      real(0x27dfe4585e674000LL),real(0x38a548f303090000LL),
+      real(-0x4b87231069354000LL),real(0x24d2adef05648000LL),
+      real(-0x6a5625dbc71c000LL),real(-0x18371a5d233400LL),
       reale(279551LL,0x3bb59b49a6cb7LL),
-      // _C4x[138]
-      real(0xf488f4012440000LL),real(-0xb16a4f02dfc8000LL),
-      real(-0x103bba4a90d0000LL),real(-0x4da08c72a3d8000LL),
-      real(0x45a11acaf220000LL),real(-0x25f21bc63e8000LL),
-      real(0x12fccd9d4510000LL),real(-0x13e0eb3687f8000LL),
-      real(0x356c2e9517d800LL),reale(279551LL,0x3bb59b49a6cb7LL),
-      // _C4x[139]
-      real(-0x3fff5b5aa54000LL),real(-0x6a2cbaeaf348000LL),
-      real(0x2b55e8782dc4000LL),real(-0x69f22faba30000LL),
-      real(0x26e11f54b9dc000LL),real(-0x105d41b83118000LL),
-      real(-0x12eb1ab4e0c000LL),real(-0x9530f9646a800LL),
+      // C4[6], coeff of eps^8, polynomial in n of order 15
+      real(0x3bee10e000LL),real(0xe6dcd7c000LL),real(0x42cbc6ea000LL),
+      real(0x1923069d8000LL),real(0xe8a206ec6000LL),real(0x170dd449e34000LL),
+      real(-0x2102346c3b5e000LL),real(0xe0052eca6690000LL),
+      real(-0x318a0eacb0b82000LL),real(0x690a1407d3eec000LL),
+      reale(-2183LL,0x49fe19ea5a000LL),real(0x61bf435eea348000LL),
+      real(-0xe133a8622dca000LL),real(-0x2748b26bf705c000LL),
+      real(0x220d7d12f9812000LL),real(-0x98dbd66bee38400LL),
       reale(279551LL,0x3bb59b49a6cb7LL),
-      // _C4x[140]
-      real(0x2dbd6ef2050000LL),real(-0x356ee7ee5e8000LL),
-      real(0x65e2c9482e0000LL),real(-0x1247a684858000LL),
-      real(0x13c46949570000LL),real(-0x1b548eba6c8000LL),
-      real(0x5c900466be800LL),reale(39935LL,0xe3f55f53aa1d1LL),
-      // _C4x[141]
-      real(0x588efe4c176000LL),real(-0xcc317e9b08000LL),
-      real(0x2e65271667a000LL),real(-0x1cb46908f84000LL),
-      real(-0x7bc8d2682000LL),real(-0x36524dd3a400LL),
-      reale(39935LL,0xe3f55f53aa1d1LL),
-      // _C4x[142]
-      real(0x5a0e4ebdc0000LL),real(-0x1d4e9158b0000LL),real(0xfe56696e0000LL),
-      real(-0x195347b590000LL),real(0x66855efe5000LL),
-      reale(3630LL,0x89164e7bf8313LL),
-      // _C4x[143]
-      real(0x94a2566a8000LL),real(-0x7736ce990000LL),real(0x345f5a38000LL),
-      real(0x11f45dc9000LL),real(0x36c560e36413be89LL),
-      // _C4x[144]
-      real(0x1946d60000LL),real(-0x2993250000LL),real(0xc21a91000LL),
-      real(0x22cae1700cc0f3LL),
-      // _C4x[145]
-      real(0x2e25f5000LL),real(0xf2951a00LL),real(0x1b45118f2c973bLL),
-      // _C4x[146]
-      real(0x1316c00LL),real(0x45dab658805LL),
-      // _C4x[147]
-      real(-143LL<<20),real(-0x1f950000LL),real(-0x7df20000LL),
-      real(-0x248bf0000LL),real(-0xcf3b40000LL),real(-0x615b090000LL),
-      real(-0x47e90f60000LL),real(-0x95a9db330000LL),real(0x123032a3880000LL),
-      real(-0xaf0fe765fd0000LL),real(0x3a2548493060000LL),
-      real(-0xc8bdaa520270000LL),real(0x1e1c7325e6c40000LL),
-      real(-0x3353672f26710000LL),real(0x3c89c1e8d8020000LL),
-      real(-0x2a606e22fd9b0000LL),real(0xc94a0b2634a0400LL),
-      reale(322559LL,0x1d82c6ded425dLL),
-      // _C4x[148]
-      real(-0x2eaf40000LL),real(-0xcf0180000LL),real(-0x45b31c0000LL),
-      real(-0x1eeb47LL<<20),real(-0x156868840000LL),real(-0x29667c3c80000LL),
-      real(0x4a029719540000LL),real(-0x2867692d1aLL<<20),
-      real(0xbfc5c91f6ec0000LL),real(-0x243d93fc11780000LL),
-      real(0x4a699e0854c40000LL),real(-0x69d85e75b6dLL<<20),
-      real(0x66f7a9fb575c0000LL),real(-0x4146a01c75280000LL),
-      real(0x18371a5d23340000LL),real(-0x3f90a5347c68800LL),
-      reale(322559LL,0x1d82c6ded425dLL),
-      // _C4x[149]
-      real(-0xd7e2520000LL),real(-0x5b0edcf0000LL),real(-0x3b8edf740000LL),
-      real(-0x6befb7d790000LL),real(0xb301172bea0000LL),
-      real(-0x5978c2137030000LL),real(0x17de1f39f1080000LL),
-      real(-0x3f35c80b0f2d0000LL),real(0x6ce3ff0d91260000LL),
-      real(-0x7761d1ce42b70000LL),real(0x468057c8ed840000LL),
-      real(0x1bcb7dfb99f0000LL),real(-0x26d98474089e0000LL),
-      real(0x1d375a3e49150000LL),real(-0x7d9dd8c3269dc00LL),
-      reale(322559LL,0x1d82c6ded425dLL),
-      // _C4x[150]
-      real(-0x121bdc9LL<<20),real(-0x1ef8211cLL<<20),real(0x3001ff791LL<<20),
-      real(-0x1624466f42LL<<20),real(0x55944c23ebLL<<20),
-      real(-0xc71654db68LL<<20),real(0x11c056e4d45LL<<20),
-      real(-0xdb34af9f8eLL<<20),real(0xeea56899fLL<<20),
-      real(0x9412b68a4cLL<<20),real(-0x93d752a107LL<<20),
-      real(0x3ee3b30826LL<<20),real(-0x9a03d5cadLL<<20),
-      real(-0x7382e0581c000LL),reale(46079LL,0xdfa4f7d6b097bLL),
-      // _C4x[151]
-      real(0x4d670674dLL<<20),real(-0x212a526a59c0000LL),
-      real(0x74d620fb6d80000LL),real(-0xef8ba34c8740000LL),
-      real(0x116e3dbfd5eLL<<20),real(-0x7cf99a74ecc0000LL),
-      real(-0x6f74068a7180000LL),real(0xc30e342965c0000LL),
-      real(-0x6299996391LL<<20),real(0x2142ebd6040000LL),
-      real(0x937704e6f80000LL),real(0x402c43bf2c0000LL),
-      real(-0x2f872ef9963000LL),reale(46079LL,0xdfa4f7d6b097bLL),
-      // _C4x[152]
-      real(0x91dbaae447LL<<20),real(-0x10852008f6aLL<<20),
-      real(0xf5d2e8872dLL<<20),real(-0x19e277ff48LL<<20),
-      real(-0xba0387bf1dLL<<20),real(0xa9c28a7b5aLL<<20),
-      real(-0x1e0b075737LL<<20),real(-0x1365648a24LL<<20),
-      real(-0xc040d09c1LL<<20),real(0x157e47e59eLL<<20),
-      real(-0x731193f5bLL<<20),real(0x6042659ec2000LL),
+      // C4[6], coeff of eps^7, polynomial in n of order 16
+      real(0x9a2c0000LL),real(0x1df854000LL),real(0x684c68000LL),
+      real(0x1a2757c000LL),real(0x7eb6a10000LL),real(0x3232f0a4000LL),
+      real(0x1ec960fb8000LL),real(0x3439f07dcc000LL),real(-0x50f0148aea0000LL),
+      real(0x25bf6de530f4000LL),real(-0x9635a567bcf8000LL),
+      real(0x1735ee17e1e1c000LL),real(-0x25a38fef60750000LL),
+      real(0x2834884b55944000LL),real(-0x1b3dfda8c79a8000LL),
+      real(0xa981b88bf66c000LL),real(-0x1cc16f4e99cdc00LL),
+      reale(93183LL,0xbe91de6de243dLL),
+      // C4[6], coeff of eps^6, polynomial in n of order 17
+      real(0xa16f000LL),real(0x1b5f0000LL),real(0x50671000LL),
+      real(0x103c32000LL),real(0x3aee73000LL),real(0xf7d074000LL),
+      real(0x4f19f75000LL),real(0x214230b6000LL),real(0x15d36ff77000LL),
+      real(0x2803a29af8000LL),real(-0x43d629aab87000LL),
+      real(0x232131018d3a000LL),real(-0x9e155c86fb85000LL),
+      real(0x1c3aabf38857c000LL),real(-0x361b1ee81aa83000LL),
+      real(0x44dcb2f8dc1be000LL),real(-0x325282c98d281000LL),
+      real(0xf46c321c1b54e00LL),reale(279551LL,0x3bb59b49a6cb7LL),
+      // C4[7], coeff of eps^23, polynomial in n of order 0
+      real(0x16e04c00LL),real(0x7ee24536c1115LL),
+      // C4[7], coeff of eps^22, polynomial in n of order 1
+      real(-127523LL<<20),real(0x7f04dc000LL),real(0x1f771442bd4c09LL),
+      // C4[7], coeff of eps^21, polynomial in n of order 2
+      real(-0x5e69ccb80000LL),real(-0x129b18c0000LL),real(-0x7e0a2d5000LL),
+      real(0x3b1ebd1165abdce9LL),
+      // C4[7], coeff of eps^20, polynomial in n of order 3
+      real(-0x44bcafdLL<<20),real(0x4022926LL<<20),real(-0x5be7eafLL<<20),
+      real(0x142b356fa000LL),real(0x3f32837c872a7963LL),
+      // C4[7], coeff of eps^19, polynomial in n of order 4
+      real(-0x860dfb0dLL<<20),real(0x30520b04740000LL),
+      real(-0x16c930c6e80000LL),real(-0x1551cc2040000LL),
+      real(-0x9e5c3c48b000LL),reale(46079LL,0xdfa4f7d6b097bLL),
+      // C4[7], coeff of eps^18, polynomial in n of order 5
+      real(-0x49904931bLL<<20),real(0x587ea7004LL<<20),real(-0x713785ddLL<<20),
+      real(0x159398e02LL<<20),real(-0x19125a29fLL<<20),real(0x490d94cd2c000LL),
       reale(46079LL,0xdfa4f7d6b097bLL),
-      // _C4x[153]
-      real(0x565424989aa80000LL),real(0x19becd8256b40000LL),
-      real(-0x5ce84822f7eLL<<20),real(0x32b09223748c0000LL),
-      real(0x58cb61831980000LL),real(-0x21b97054d1c0000LL),
-      real(-0xe18452e77fLL<<20),real(0x73cbed27abc0000LL),
-      real(0x8bb5bd3c880000LL),real(-0xdb0f0aaec0000LL),
-      real(-0x63c3eeba719000LL),reale(322559LL,0x1d82c6ded425dLL),
-      // _C4x[154]
-      real(-0x59ec90b7ba5LL<<20),real(0x1b2e993a518LL<<20),
-      real(0xb181e937d5LL<<20),real(0x848206ddd2LL<<20),
-      real(-0xf0573a4eb1LL<<20),real(0x178a3aa28cLL<<20),
-      real(0x54cb88cc9LL<<20),real(0x347f03cf46LL<<20),
-      real(-0x1d8e5249bdLL<<20),real(0x2fd680f7c84000LL),
+      // C4[7], coeff of eps^17, polynomial in n of order 6
+      real(-0xf7ed31ddbc0000LL),real(0x2a1cd053860000LL),
+      real(-0x15bd5c44a80000LL),real(0x58222c9a6a0000LL),
+      real(-0x1a74fbea940000LL),real(-0x33adc5ff20000LL),
+      real(-0x1e088e877c800LL),reale(46079LL,0xdfa4f7d6b097bLL),
+      // C4[7], coeff of eps^16, polynomial in n of order 7
+      real(-0x50279d0e5080000LL),real(-0x1377536973LL<<20),
+      real(-0x5dbd91fdb180000LL),real(0x31c729210eLL<<20),
+      real(0x29488a66580000LL),real(0x14b8aba5efLL<<20),
+      real(-0x119aee903b80000LL),real(0x28435aa5d4b000LL),
       reale(322559LL,0x1d82c6ded425dLL),
-      // _C4x[155]
+      // C4[7], coeff of eps^15, polynomial in n of order 8
       real(0x81cc8b1dcdLL<<20),real(0xfbb72a664ee0000LL),
       real(-0xa9b81eb4ea40000LL),real(-0x1a9b4c3da160000LL),
       real(-0x2fae19e7f980000LL),real(0x4780d431da60000LL),
       real(-0x94b9eca98c0000LL),real(-0x26a006435e0000LL),
       real(-0x238b221440f800LL),reale(322559LL,0x1d82c6ded425dLL),
-      // _C4x[156]
-      real(-0x50279d0e5080000LL),real(-0x1377536973LL<<20),
-      real(-0x5dbd91fdb180000LL),real(0x31c729210eLL<<20),
-      real(0x29488a66580000LL),real(0x14b8aba5efLL<<20),
-      real(-0x119aee903b80000LL),real(0x28435aa5d4b000LL),
+      // C4[7], coeff of eps^14, polynomial in n of order 9
+      real(-0x59ec90b7ba5LL<<20),real(0x1b2e993a518LL<<20),
+      real(0xb181e937d5LL<<20),real(0x848206ddd2LL<<20),
+      real(-0xf0573a4eb1LL<<20),real(0x178a3aa28cLL<<20),
+      real(0x54cb88cc9LL<<20),real(0x347f03cf46LL<<20),
+      real(-0x1d8e5249bdLL<<20),real(0x2fd680f7c84000LL),
       reale(322559LL,0x1d82c6ded425dLL),
-      // _C4x[157]
-      real(-0xf7ed31ddbc0000LL),real(0x2a1cd053860000LL),
-      real(-0x15bd5c44a80000LL),real(0x58222c9a6a0000LL),
-      real(-0x1a74fbea940000LL),real(-0x33adc5ff20000LL),
-      real(-0x1e088e877c800LL),reale(46079LL,0xdfa4f7d6b097bLL),
-      // _C4x[158]
-      real(-0x49904931bLL<<20),real(0x587ea7004LL<<20),real(-0x713785ddLL<<20),
-      real(0x159398e02LL<<20),real(-0x19125a29fLL<<20),real(0x490d94cd2c000LL),
+      // C4[7], coeff of eps^13, polynomial in n of order 10
+      real(0x565424989aa80000LL),real(0x19becd8256b40000LL),
+      real(-0x5ce84822f7eLL<<20),real(0x32b09223748c0000LL),
+      real(0x58cb61831980000LL),real(-0x21b97054d1c0000LL),
+      real(-0xe18452e77fLL<<20),real(0x73cbed27abc0000LL),
+      real(0x8bb5bd3c880000LL),real(-0xdb0f0aaec0000LL),
+      real(-0x63c3eeba719000LL),reale(322559LL,0x1d82c6ded425dLL),
+      // C4[7], coeff of eps^12, polynomial in n of order 11
+      real(0x91dbaae447LL<<20),real(-0x10852008f6aLL<<20),
+      real(0xf5d2e8872dLL<<20),real(-0x19e277ff48LL<<20),
+      real(-0xba0387bf1dLL<<20),real(0xa9c28a7b5aLL<<20),
+      real(-0x1e0b075737LL<<20),real(-0x1365648a24LL<<20),
+      real(-0xc040d09c1LL<<20),real(0x157e47e59eLL<<20),
+      real(-0x731193f5bLL<<20),real(0x6042659ec2000LL),
       reale(46079LL,0xdfa4f7d6b097bLL),
-      // _C4x[159]
-      real(-0x860dfb0dLL<<20),real(0x30520b04740000LL),
-      real(-0x16c930c6e80000LL),real(-0x1551cc2040000LL),
-      real(-0x9e5c3c48b000LL),reale(46079LL,0xdfa4f7d6b097bLL),
-      // _C4x[160]
-      real(-0x44bcafdLL<<20),real(0x4022926LL<<20),real(-0x5be7eafLL<<20),
-      real(0x142b356fa000LL),real(0x3f32837c872a7963LL),
-      // _C4x[161]
-      real(-0x5e69ccb80000LL),real(-0x129b18c0000LL),real(-0x7e0a2d5000LL),
-      real(0x3b1ebd1165abdce9LL),
-      // _C4x[162]
-      real(-127523LL<<20),real(0x7f04dc000LL),real(0x1f771442bd4c09LL),
-      // _C4x[163]
-      real(0x16e04c00LL),real(0x7ee24536c1115LL),
-      // _C4x[164]
-      real(0x11ee0000LL),real(0x5b1c0000LL),real(0x2380a0000LL),
-      real(0x126f180000LL),real(0xf233a60000LL),real(0x234385140000LL),
-      real(-0x4d5c1f23e0000LL),real(0x35017da21LL<<20),
-      real(-0x144a92180a20000LL),real(0x51fe4e56b0c0000LL),
-      real(-0xeb59f3d2e860000LL),real(0x1f060a0805080000LL),
-      real(-0x305340db42ea0000LL),real(0x35b1d648f5040000LL),
-      real(-0x2452a78bb4ce0000LL),real(0xa981b88bf66c000LL),
+      // C4[7], coeff of eps^11, polynomial in n of order 12
+      real(0x4d670674dLL<<20),real(-0x212a526a59c0000LL),
+      real(0x74d620fb6d80000LL),real(-0xef8ba34c8740000LL),
+      real(0x116e3dbfd5eLL<<20),real(-0x7cf99a74ecc0000LL),
+      real(-0x6f74068a7180000LL),real(0xc30e342965c0000LL),
+      real(-0x6299996391LL<<20),real(0x2142ebd6040000LL),
+      real(0x937704e6f80000LL),real(0x402c43bf2c0000LL),
+      real(-0x2f872ef9963000LL),reale(46079LL,0xdfa4f7d6b097bLL),
+      // C4[7], coeff of eps^10, polynomial in n of order 13
+      real(-0x121bdc9LL<<20),real(-0x1ef8211cLL<<20),real(0x3001ff791LL<<20),
+      real(-0x1624466f42LL<<20),real(0x55944c23ebLL<<20),
+      real(-0xc71654db68LL<<20),real(0x11c056e4d45LL<<20),
+      real(-0xdb34af9f8eLL<<20),real(0xeea56899fLL<<20),
+      real(0x9412b68a4cLL<<20),real(-0x93d752a107LL<<20),
+      real(0x3ee3b30826LL<<20),real(-0x9a03d5cadLL<<20),
+      real(-0x7382e0581c000LL),reale(46079LL,0xdfa4f7d6b097bLL),
+      // C4[7], coeff of eps^9, polynomial in n of order 14
+      real(-0xd7e2520000LL),real(-0x5b0edcf0000LL),real(-0x3b8edf740000LL),
+      real(-0x6befb7d790000LL),real(0xb301172bea0000LL),
+      real(-0x5978c2137030000LL),real(0x17de1f39f1080000LL),
+      real(-0x3f35c80b0f2d0000LL),real(0x6ce3ff0d91260000LL),
+      real(-0x7761d1ce42b70000LL),real(0x468057c8ed840000LL),
+      real(0x1bcb7dfb99f0000LL),real(-0x26d98474089e0000LL),
+      real(0x1d375a3e49150000LL),real(-0x7d9dd8c3269dc00LL),
+      reale(322559LL,0x1d82c6ded425dLL),
+      // C4[7], coeff of eps^8, polynomial in n of order 15
+      real(-0x2eaf40000LL),real(-0xcf0180000LL),real(-0x45b31c0000LL),
+      real(-0x1eeb47LL<<20),real(-0x156868840000LL),real(-0x29667c3c80000LL),
+      real(0x4a029719540000LL),real(-0x2867692d1aLL<<20),
+      real(0xbfc5c91f6ec0000LL),real(-0x243d93fc11780000LL),
+      real(0x4a699e0854c40000LL),real(-0x69d85e75b6dLL<<20),
+      real(0x66f7a9fb575c0000LL),real(-0x4146a01c75280000LL),
+      real(0x18371a5d23340000LL),real(-0x3f90a5347c68800LL),
+      reale(322559LL,0x1d82c6ded425dLL),
+      // C4[7], coeff of eps^7, polynomial in n of order 16
+      real(-143LL<<20),real(-0x1f950000LL),real(-0x7df20000LL),
+      real(-0x248bf0000LL),real(-0xcf3b40000LL),real(-0x615b090000LL),
+      real(-0x47e90f60000LL),real(-0x95a9db330000LL),real(0x123032a3880000LL),
+      real(-0xaf0fe765fd0000LL),real(0x3a2548493060000LL),
+      real(-0xc8bdaa520270000LL),real(0x1e1c7325e6c40000LL),
+      real(-0x3353672f26710000LL),real(0x3c89c1e8d8020000LL),
+      real(-0x2a606e22fd9b0000LL),real(0xc94a0b2634a0400LL),
+      reale(322559LL,0x1d82c6ded425dLL),
+      // C4[8], coeff of eps^23, polynomial in n of order 0
+      real(0xecd8000LL),real(0x4f56c0c24f87LL),
+      // C4[8], coeff of eps^22, polynomial in n of order 1
+      real(-0x32ad0aLL<<20),real(-0x168d9710000LL),real(0x38232f25bccb5275LL),
+      // C4[8], coeff of eps^21, polynomial in n of order 2
+      real(0x932fdbLL<<20),real(-0xb7410080000LL),real(0x234f1b38000LL),
+      real(0x99262e0aeeff091LL),
+      // C4[8], coeff of eps^20, polynomial in n of order 3
+      real(0x1558506bdd80000LL),real(-0x7a4a6b91fLL<<20),
+      real(-0xc1fc716b80000LL),real(-0x6677b4e9b0000LL),
       reale(365566LL,0xff4ff27401803LL),
-      // _C4x[165]
-      real(54009LL<<20),real(0x67acb80000LL),real(0x500d1aLL<<20),
-      real(0xadfe97880000LL),real(-0x160da3e85LL<<20),real(0xdd0128d3580000LL),
-      real(-0x4c49107c44LL<<20),real(0x1114fafcba280000LL),
-      real(-0x2a9587ee883LL<<20),real(0x4c17a3da25f80000LL),
-      real(-0x61c2e73ffa2LL<<20),real(0x584c43ef70c80000LL),
-      real(-0x35101f0ee01LL<<20),real(0x12f378ce74980000LL),
-      real(-0x306e34ba4668000LL),reale(365566LL,0xff4ff27401803LL),
-      // _C4x[166]
-      real(0x22cb56LL<<20),real(0x4712bf8LL<<20),real(-0x86448846LL<<20),
-      real(0x4d78a5544LL<<20),real(-0x1846aa1b42LL<<20),
-      real(0x4d6026db5LL<<24),real(-0xa68352f15eLL<<20),
-      real(0xf43495185cLL<<20),real(-0xe824a7465aLL<<20),
-      real(0x705265a6a8LL<<20),real(0x1aafe4620aLL<<20),
-      real(-0x54b54f2f8cLL<<20),real(0x39c1702c0eLL<<20),
-      real(-0xf0a5fe0ce50000LL),reale(52223LL,0xdb549059b7125LL),
-      // _C4x[167]
-      real(-0x111ca21ceLL<<20),real(0x92841d41680000LL),
-      real(-0x29f2152631LL<<20),real(0x77700c12df80000LL),
-      real(-0xdd22256234LL<<20),real(0x102165ee69880000LL),
-      real(-0x97d2f2eab7LL<<20),real(-0x25f0afa39e80000LL),
-      real(0x9732beeb66LL<<20),real(-0x7cbf10f6a580000LL),
-      real(0x2f60975b43LL<<20),real(-0x618af655c80000LL),
-      real(-0x8a9d0d3688000LL),reale(52223LL,0xdb549059b7125LL),
-      // _C4x[168]
-      real(-0x1b3fbdf6d2c80000LL),real(0x45996b8ba21LL<<20),
-      real(-0x6e75aa49fe180000LL),real(0x6210f2c5834LL<<20),
-      real(-0x10bc4d28ff680000LL),real(-0x41cde5aa8b9LL<<20),
-      real(0x4ab1c7ac75480000LL),real(-0x1ca79717ce6LL<<20),
-      real(-0x32aa32794080000LL),real(0x330fe43f6dLL<<20),
-      real(0x1ffca3e30a80000LL),real(-0x12cf88fa6ff0000LL),
+      // C4[8], coeff of eps^19, polynomial in n of order 4
+      real(0x1f4bce9766LL<<20),real(-0x5fdd5e580000LL),real(0xa3f440b43LL<<20),
+      real(-0x9fca1971c80000LL),real(0x195ba7c1ef8000LL),
+      reale(365566LL,0xff4ff27401803LL),
+      // C4[8], coeff of eps^18, polynomial in n of order 5
+      real(-0x1a16956LL<<20),real(-0x227092628LL<<20),real(0x53eaa5526LL<<20),
+      real(-0x1172940b4LL<<20),real(-0x3268c87eLL<<20),
+      real(-0x23cc4ec070000LL),reale(52223LL,0xdb549059b7125LL),
+      // C4[8], coeff of eps^17, polynomial in n of order 6
+      real(-0x6472fe3LL<<20),real(-0xe3d4e1d7080000LL),real(0x46aa4c61eLL<<20),
+      real(0x916a2a5c80000LL),real(0x3227324dfLL<<20),
+      real(-0x236ac124680000LL),real(0x45bace6718000LL),
+      reale(52223LL,0xdb549059b7125LL),
+      // C4[8], coeff of eps^16, polynomial in n of order 7
+      real(0x1200bdf8116c0000LL),real(-0x5ba1b11ae080000LL),
+      real(-0x23e6c3f55fc0000LL),real(-0x3e50001d0bLL<<20),
+      real(0x3d5fd0e699c0000LL),real(-0x31f0d677580000LL),
+      real(-0x1b9c6065cc0000LL),real(-0x25c0cef2988000LL),
       reale(365566LL,0xff4ff27401803LL),
-      // _C4x[169]
+      // C4[8], coeff of eps^15, polynomial in n of order 8
+      real(0x392e4b99f4LL<<20),real(0x9d011c37ef80000LL),
+      real(0xd34e66de87LL<<20),real(-0xc0a473ee4980000LL),
+      real(-0xa24391f86LL<<20),real(-0x2950151b280000LL),
+      real(0x3428e530adLL<<20),real(-0x18bf1d836b80000LL),
+      real(0x216a7bfadc8000LL),reale(365566LL,0xff4ff27401803LL),
+      // C4[8], coeff of eps^14, polynomial in n of order 9
+      real(0x8ddebe343aLL<<20),real(-0xc011c31e9LL<<24),
+      real(0x3ab0cb9fe6LL<<20),real(0x1a9916d434LL<<20),
+      real(0x60678eb72LL<<20),real(-0x1ff9f88048LL<<20),
+      real(0xb64aaec9eLL<<20),real(0x224f2ebbcLL<<20),real(0x3674d12aLL<<20),
+      real(-0xde9c5a4230000LL),reale(52223LL,0xdb549059b7125LL),
+      // C4[8], coeff of eps^13, polynomial in n of order 10
       real(-0x71eca5b57e5LL<<20),real(0x46cc55ae2a580000LL),
       real(0x1cee45fc03cLL<<20),real(-0x5663e4f0ecd80000LL),
       real(0x35a7c7b51ddLL<<20),real(-0x974f15cf080000LL),
       real(-0x7645cd0962LL<<20),real(-0x6f217f1c2380000LL),
       real(0x8684ad181fLL<<20),real(-0x26e1e6e8c680000LL),
       real(0x1689b847558000LL),reale(365566LL,0xff4ff27401803LL),
-      // _C4x[170]
-      real(0x8ddebe343aLL<<20),real(-0xc011c31e9LL<<24),
-      real(0x3ab0cb9fe6LL<<20),real(0x1a9916d434LL<<20),
-      real(0x60678eb72LL<<20),real(-0x1ff9f88048LL<<20),
-      real(0xb64aaec9eLL<<20),real(0x224f2ebbcLL<<20),real(0x3674d12aLL<<20),
-      real(-0xde9c5a4230000LL),reale(52223LL,0xdb549059b7125LL),
-      // _C4x[171]
-      real(0x392e4b99f4LL<<20),real(0x9d011c37ef80000LL),
-      real(0xd34e66de87LL<<20),real(-0xc0a473ee4980000LL),
-      real(-0xa24391f86LL<<20),real(-0x2950151b280000LL),
-      real(0x3428e530adLL<<20),real(-0x18bf1d836b80000LL),
-      real(0x216a7bfadc8000LL),reale(365566LL,0xff4ff27401803LL),
-      // _C4x[172]
-      real(0x1200bdf8116c0000LL),real(-0x5ba1b11ae080000LL),
-      real(-0x23e6c3f55fc0000LL),real(-0x3e50001d0bLL<<20),
-      real(0x3d5fd0e699c0000LL),real(-0x31f0d677580000LL),
-      real(-0x1b9c6065cc0000LL),real(-0x25c0cef2988000LL),
-      reale(365566LL,0xff4ff27401803LL),
-      // _C4x[173]
-      real(-0x6472fe3LL<<20),real(-0xe3d4e1d7080000LL),real(0x46aa4c61eLL<<20),
-      real(0x916a2a5c80000LL),real(0x3227324dfLL<<20),
-      real(-0x236ac124680000LL),real(0x45bace6718000LL),
-      reale(52223LL,0xdb549059b7125LL),
-      // _C4x[174]
-      real(-0x1a16956LL<<20),real(-0x227092628LL<<20),real(0x53eaa5526LL<<20),
-      real(-0x1172940b4LL<<20),real(-0x3268c87eLL<<20),
-      real(-0x23cc4ec070000LL),reale(52223LL,0xdb549059b7125LL),
-      // _C4x[175]
-      real(0x1f4bce9766LL<<20),real(-0x5fdd5e580000LL),real(0xa3f440b43LL<<20),
-      real(-0x9fca1971c80000LL),real(0x195ba7c1ef8000LL),
-      reale(365566LL,0xff4ff27401803LL),
-      // _C4x[176]
-      real(0x1558506bdd80000LL),real(-0x7a4a6b91fLL<<20),
-      real(-0xc1fc716b80000LL),real(-0x6677b4e9b0000LL),
+      // C4[8], coeff of eps^12, polynomial in n of order 11
+      real(-0x1b3fbdf6d2c80000LL),real(0x45996b8ba21LL<<20),
+      real(-0x6e75aa49fe180000LL),real(0x6210f2c5834LL<<20),
+      real(-0x10bc4d28ff680000LL),real(-0x41cde5aa8b9LL<<20),
+      real(0x4ab1c7ac75480000LL),real(-0x1ca79717ce6LL<<20),
+      real(-0x32aa32794080000LL),real(0x330fe43f6dLL<<20),
+      real(0x1ffca3e30a80000LL),real(-0x12cf88fa6ff0000LL),
       reale(365566LL,0xff4ff27401803LL),
-      // _C4x[177]
-      real(0x932fdbLL<<20),real(-0xb7410080000LL),real(0x234f1b38000LL),
-      real(0x99262e0aeeff091LL),
-      // _C4x[178]
-      real(-0x32ad0aLL<<20),real(-0x168d9710000LL),real(0x38232f25bccb5275LL),
-      // _C4x[179]
-      real(0xecd8000LL),real(0x4f56c0c24f87LL),
-      // _C4x[180]
-      real(-1615LL<<20),real(-0x396880000LL),real(-212534LL<<20),
-      real(-0x85c63380000LL),real(0x146d5b23LL<<20),real(-0xfb41142e80000LL),
-      real(0x6ce077adcLL<<20),real(-0x1f78e2983980000LL),
-      real(0x68e848a615LL<<20),real(-0x10644b59f3480000LL),
-      real(0x1f453d0a1eeLL<<20),real(-0x2d579881dff80000LL),
-      real(0x3002653e387LL<<20),real(-0x1f95c95817a80000LL),
-      real(0x914a9e2ed338000LL),reale(408574LL,0xe11d1e092eda9LL),
-      // _C4x[181]
-      real(-58786LL<<20),real(-0x22a868LL<<20),real(0x4eac072LL<<20),
-      real(-0x37a6160cLL<<20),real(0x15ee16526LL<<20),real(-0x5aee1acfLL<<24),
-      real(0x10b01e88baLL<<20),real(-0x23f7de64d4LL<<20),
-      real(0x39a4332b6eLL<<20),real(-0x443f573578LL<<20),
-      real(0x3a056acd82LL<<20),real(-0x215eb2969cLL<<20),
-      real(0xb8d166f36LL<<20),real(-0x1ce0b816070000LL),
-      reale(19455LL,0xf256b84994845LL),
-      // _C4x[182]
-      real(0x12c71299eLL<<20),real(-0xc4ddd05ba80000LL),
-      real(0x46ff5325c9LL<<20),real(-0x1091808b66b80000LL),
-      real(0x2ad630e8614LL<<20),real(-0x4e92a508ecc80000LL),
-      real(0x6510e717cdfLL<<20),real(-0x54aeb3c027d80000LL),
-      real(0x20abba2fc8aLL<<20),real(0x11cde6b42e180000LL),
-      real(-0x22ba072788bLL<<20),real(0x160a1506db080000LL),
-      real(-0x59b3a2379f58000LL),reale(408574LL,0xe11d1e092eda9LL),
-      // _C4x[183]
-      real(0x8611fdfe7cLL<<20),real(-0x1c4d2ef1e48LL<<20),
-      real(0x40757ac5854LL<<20),real(-0x636fb3adbaLL<<24),
-      real(0x60fcc033fecLL<<20),real(-0x28ce9785af8LL<<20),
-      real(-0x1fc3eed6a3cLL<<20),real(0x3fd2e7b543LL<<24),
-      real(-0x2dbfcefc5a4LL<<20),real(0xfbe0aa2258LL<<20),
-      real(-0x1aa48ff1ccLL<<20),real(-0x3ee3b308260000LL),
+      // C4[8], coeff of eps^11, polynomial in n of order 12
+      real(-0x111ca21ceLL<<20),real(0x92841d41680000LL),
+      real(-0x29f2152631LL<<20),real(0x77700c12df80000LL),
+      real(-0xdd22256234LL<<20),real(0x102165ee69880000LL),
+      real(-0x97d2f2eab7LL<<20),real(-0x25f0afa39e80000LL),
+      real(0x9732beeb66LL<<20),real(-0x7cbf10f6a580000LL),
+      real(0x2f60975b43LL<<20),real(-0x618af655c80000LL),
+      real(-0x8a9d0d3688000LL),reale(52223LL,0xdb549059b7125LL),
+      // C4[8], coeff of eps^10, polynomial in n of order 13
+      real(0x22cb56LL<<20),real(0x4712bf8LL<<20),real(-0x86448846LL<<20),
+      real(0x4d78a5544LL<<20),real(-0x1846aa1b42LL<<20),
+      real(0x4d6026db5LL<<24),real(-0xa68352f15eLL<<20),
+      real(0xf43495185cLL<<20),real(-0xe824a7465aLL<<20),
+      real(0x705265a6a8LL<<20),real(0x1aafe4620aLL<<20),
+      real(-0x54b54f2f8cLL<<20),real(0x39c1702c0eLL<<20),
+      real(-0xf0a5fe0ce50000LL),reale(52223LL,0xdb549059b7125LL),
+      // C4[8], coeff of eps^9, polynomial in n of order 14
+      real(54009LL<<20),real(0x67acb80000LL),real(0x500d1aLL<<20),
+      real(0xadfe97880000LL),real(-0x160da3e85LL<<20),real(0xdd0128d3580000LL),
+      real(-0x4c49107c44LL<<20),real(0x1114fafcba280000LL),
+      real(-0x2a9587ee883LL<<20),real(0x4c17a3da25f80000LL),
+      real(-0x61c2e73ffa2LL<<20),real(0x584c43ef70c80000LL),
+      real(-0x35101f0ee01LL<<20),real(0x12f378ce74980000LL),
+      real(-0x306e34ba4668000LL),reale(365566LL,0xff4ff27401803LL),
+      // C4[8], coeff of eps^8, polynomial in n of order 15
+      real(0x11ee0000LL),real(0x5b1c0000LL),real(0x2380a0000LL),
+      real(0x126f180000LL),real(0xf233a60000LL),real(0x234385140000LL),
+      real(-0x4d5c1f23e0000LL),real(0x35017da21LL<<20),
+      real(-0x144a92180a20000LL),real(0x51fe4e56b0c0000LL),
+      real(-0xeb59f3d2e860000LL),real(0x1f060a0805080000LL),
+      real(-0x305340db42ea0000LL),real(0x35b1d648f5040000LL),
+      real(-0x2452a78bb4ce0000LL),real(0xa981b88bf66c000LL),
+      reale(365566LL,0xff4ff27401803LL),
+      // C4[9], coeff of eps^23, polynomial in n of order 0
+      real(-0x59168000LL),real(0xa0b835899f381LL),
+      // C4[9], coeff of eps^22, polynomial in n of order 1
+      real(-0x8e52aaLL<<20),real(0x18513690000LL),real(0x8f68f0ea15ed989LL),
+      // C4[9], coeff of eps^21, polynomial in n of order 2
+      real(-0x12b4039bLL<<20),real(-0x2ab303780000LL),real(-0x1a402b7d8000LL),
+      reale(5306LL,0x2ad1d52b570cdLL),
+      // C4[9], coeff of eps^20, polynomial in n of order 3
+      real(0x193584d8cLL<<20),real(0xaee4c7138LL<<20),real(-0x90b2b09bcLL<<20),
+      real(0x14347a15e20000LL),reale(408574LL,0xe11d1e092eda9LL),
+      // C4[9], coeff of eps^19, polynomial in n of order 4
+      real(-0x154417c7baLL<<20),real(0x21c835beaa80000LL),
+      real(-0x47f00f48dLL<<20),real(-0x131fb47ac80000LL),
+      real(-0x11435a10568000LL),reale(408574LL,0xe11d1e092eda9LL),
+      // C4[9], coeff of eps^18, polynomial in n of order 5
+      real(-0x605a433c5eLL<<20),real(0xee9760038LL<<20),
+      real(0x31be2bbeeLL<<20),real(0x16998498fcLL<<20),
+      real(-0xd95bd4266LL<<20),real(0x173060290f0000LL),
       reale(408574LL,0xe11d1e092eda9LL),
-      // _C4x[184]
-      real(0x52d38896f8bLL<<20),real(-0x69d66f818ca80000LL),
-      real(0x4656ca873fcLL<<20),real(0xca9586e4a280000LL),
-      real(-0x486f0b6e413LL<<20),real(0x3e51674541f80000LL),
-      real(-0x11c29dd7982LL<<20),real(-0x538c73053380000LL),
-      real(0x250fa482cfLL<<20),real(0x21f35b25c980000LL),
-      real(-0x110150274e88000LL),reale(408574LL,0xe11d1e092eda9LL),
-      // _C4x[185]
-      real(0x4be3b7611eLL<<20),real(0x7df9c8e65LL<<24),
-      real(-0xb7d5e385beLL<<20),real(0x4ff746711cLL<<20),
-      real(0xf1de11b06LL<<20),real(-0xbdd4407d8LL<<20),
-      real(-0x123b4a6356LL<<20),real(0x10f0c4fcb4LL<<20),
-      real(-0x44ea62792LL<<20),real(0x16fdaafdd0000LL),
-      reale(58367LL,0xd70428dcbd8cfLL),
-      // _C4x[186]
-      real(-0x9726f4fc34LL<<20),real(0xff4317f5080000LL),
-      real(0x1bbfa05d89LL<<20),real(0xf6d36e74980000LL),
-      real(-0x1da1c48f9aLL<<20),real(0x736575d3280000LL),
-      real(0x282d7a403LL<<20),real(0x7ce6feab80000LL),real(-0xd59ae9d0e8000LL),
+      // C4[9], coeff of eps^17, polynomial in n of order 6
+      real(-0x39cd187bbLL<<20),real(-0x43663bd8c80000LL),
+      real(-0xa53ccf9f2LL<<20),real(0x73d8c049880000LL),real(0x29510997LL<<20),
+      real(-0x2376b9f280000LL),real(-0x5829503048000LL),
       reale(58367LL,0xd70428dcbd8cfLL),
-      // _C4x[187]
+      // C4[9], coeff of eps^16, polynomial in n of order 7
       real(0x47bc345c88LL<<20),real(0xfc7910c13LL<<24),
       real(-0x8a99ea3268LL<<20),real(-0x1daff62ceLL<<24),
       real(-0xb75ae4cd8LL<<20),real(0x327b674f1LL<<24),
       real(-0x14b41287c8LL<<20),real(0x17347d5efc0000LL),
       reale(408574LL,0xe11d1e092eda9LL),
-      // _C4x[188]
-      real(-0x39cd187bbLL<<20),real(-0x43663bd8c80000LL),
-      real(-0xa53ccf9f2LL<<20),real(0x73d8c049880000LL),real(0x29510997LL<<20),
-      real(-0x2376b9f280000LL),real(-0x5829503048000LL),
+      // C4[9], coeff of eps^15, polynomial in n of order 8
+      real(-0x9726f4fc34LL<<20),real(0xff4317f5080000LL),
+      real(0x1bbfa05d89LL<<20),real(0xf6d36e74980000LL),
+      real(-0x1da1c48f9aLL<<20),real(0x736575d3280000LL),
+      real(0x282d7a403LL<<20),real(0x7ce6feab80000LL),real(-0xd59ae9d0e8000LL),
       reale(58367LL,0xd70428dcbd8cfLL),
-      // _C4x[189]
-      real(-0x605a433c5eLL<<20),real(0xee9760038LL<<20),
-      real(0x31be2bbeeLL<<20),real(0x16998498fcLL<<20),
-      real(-0xd95bd4266LL<<20),real(0x173060290f0000LL),
+      // C4[9], coeff of eps^14, polynomial in n of order 9
+      real(0x4be3b7611eLL<<20),real(0x7df9c8e65LL<<24),
+      real(-0xb7d5e385beLL<<20),real(0x4ff746711cLL<<20),
+      real(0xf1de11b06LL<<20),real(-0xbdd4407d8LL<<20),
+      real(-0x123b4a6356LL<<20),real(0x10f0c4fcb4LL<<20),
+      real(-0x44ea62792LL<<20),real(0x16fdaafdd0000LL),
+      reale(58367LL,0xd70428dcbd8cfLL),
+      // C4[9], coeff of eps^13, polynomial in n of order 10
+      real(0x52d38896f8bLL<<20),real(-0x69d66f818ca80000LL),
+      real(0x4656ca873fcLL<<20),real(0xca9586e4a280000LL),
+      real(-0x486f0b6e413LL<<20),real(0x3e51674541f80000LL),
+      real(-0x11c29dd7982LL<<20),real(-0x538c73053380000LL),
+      real(0x250fa482cfLL<<20),real(0x21f35b25c980000LL),
+      real(-0x110150274e88000LL),reale(408574LL,0xe11d1e092eda9LL),
+      // C4[9], coeff of eps^12, polynomial in n of order 11
+      real(0x8611fdfe7cLL<<20),real(-0x1c4d2ef1e48LL<<20),
+      real(0x40757ac5854LL<<20),real(-0x636fb3adbaLL<<24),
+      real(0x60fcc033fecLL<<20),real(-0x28ce9785af8LL<<20),
+      real(-0x1fc3eed6a3cLL<<20),real(0x3fd2e7b543LL<<24),
+      real(-0x2dbfcefc5a4LL<<20),real(0xfbe0aa2258LL<<20),
+      real(-0x1aa48ff1ccLL<<20),real(-0x3ee3b308260000LL),
       reale(408574LL,0xe11d1e092eda9LL),
-      // _C4x[190]
-      real(-0x154417c7baLL<<20),real(0x21c835beaa80000LL),
-      real(-0x47f00f48dLL<<20),real(-0x131fb47ac80000LL),
-      real(-0x11435a10568000LL),reale(408574LL,0xe11d1e092eda9LL),
-      // _C4x[191]
-      real(0x193584d8cLL<<20),real(0xaee4c7138LL<<20),real(-0x90b2b09bcLL<<20),
-      real(0x14347a15e20000LL),reale(408574LL,0xe11d1e092eda9LL),
-      // _C4x[192]
-      real(-0x12b4039bLL<<20),real(-0x2ab303780000LL),real(-0x1a402b7d8000LL),
-      reale(5306LL,0x2ad1d52b570cdLL),
-      // _C4x[193]
-      real(-0x8e52aaLL<<20),real(0x18513690000LL),real(0x8f68f0ea15ed989LL),
-      // _C4x[194]
-      real(-0x59168000LL),real(0xa0b835899f381LL),
-      // _C4x[195]
-      real(46189LL<<20),real(0x1fe0ccLL<<20),real(-0x55d6a55LL<<20),
-      real(0x4928642aLL<<20),real(-0x2363dbf97LL<<20),real(0xb840ca888LL<<20),
-      real(-0x2baa055459LL<<20),real(0x7de38a60e6LL<<20),
-      real(-0x11a7161219bLL<<20),real(0x1f11977c044LL<<20),
-      real(-0x2a7db4d305dLL<<20),real(0x2b3c8b159a2LL<<20),
-      real(-0x1bcb7dfb99fLL<<20),real(0x7e5725605ea0000LL),
+      // C4[9], coeff of eps^11, polynomial in n of order 12
+      real(0x12c71299eLL<<20),real(-0xc4ddd05ba80000LL),
+      real(0x46ff5325c9LL<<20),real(-0x1091808b66b80000LL),
+      real(0x2ad630e8614LL<<20),real(-0x4e92a508ecc80000LL),
+      real(0x6510e717cdfLL<<20),real(-0x54aeb3c027d80000LL),
+      real(0x20abba2fc8aLL<<20),real(0x11cde6b42e180000LL),
+      real(-0x22ba072788bLL<<20),real(0x160a1506db080000LL),
+      real(-0x59b3a2379f58000LL),reale(408574LL,0xe11d1e092eda9LL),
+      // C4[9], coeff of eps^10, polynomial in n of order 13
+      real(-58786LL<<20),real(-0x22a868LL<<20),real(0x4eac072LL<<20),
+      real(-0x37a6160cLL<<20),real(0x15ee16526LL<<20),real(-0x5aee1acfLL<<24),
+      real(0x10b01e88baLL<<20),real(-0x23f7de64d4LL<<20),
+      real(0x39a4332b6eLL<<20),real(-0x443f573578LL<<20),
+      real(0x3a056acd82LL<<20),real(-0x215eb2969cLL<<20),
+      real(0xb8d166f36LL<<20),real(-0x1ce0b816070000LL),
+      reale(19455LL,0xf256b84994845LL),
+      // C4[9], coeff of eps^9, polynomial in n of order 14
+      real(-1615LL<<20),real(-0x396880000LL),real(-212534LL<<20),
+      real(-0x85c63380000LL),real(0x146d5b23LL<<20),real(-0xfb41142e80000LL),
+      real(0x6ce077adcLL<<20),real(-0x1f78e2983980000LL),
+      real(0x68e848a615LL<<20),real(-0x10644b59f3480000LL),
+      real(0x1f453d0a1eeLL<<20),real(-0x2d579881dff80000LL),
+      real(0x3002653e387LL<<20),real(-0x1f95c95817a80000LL),
+      real(0x914a9e2ed338000LL),reale(408574LL,0xe11d1e092eda9LL),
+      // C4[10], coeff of eps^23, polynomial in n of order 0
+      real(274LL<<20),real(0x8757c14b789bLL),
+      // C4[10], coeff of eps^22, polynomial in n of order 1
+      real(-0x1196b3LL<<20),real(-0xcdcede0000LL),real(0x9e817610332f06fLL),
+      // C4[10], coeff of eps^21, polynomial in n of order 2
+      real(0x2603b6b8LL<<20),real(-0x1b1fbe44LL<<20),real(0x35b1e4040000LL),
+      reale(5864LL,0xb6105765cc00bLL),
+      // C4[10], coeff of eps^20, polynomial in n of order 3
+      real(0x1e33a6057eLL<<20),real(-0x21167e86cLL<<20),
+      real(-0xeff2cdd6LL<<20),real(-0x123578c1740000LL),
       reale(451582LL,0xc2ea499e5c34fLL),
-      // _C4x[196]
-      real(-0x1dc61f3LL<<24),real(0x177c584b4LL<<20),real(-0xa68e4dda8LL<<20),
-      real(0x310ee42c7cLL<<20),real(-0xa5e7161a2LL<<24),
-      real(0x1a2ee772944LL<<20),real(-0x3250f74ee98LL<<20),
-      real(0x49d6b12a10cLL<<20),real(-0x51be070751LL<<24),
-      real(0x4214c5c39d4LL<<20),real(-0x24a245ec788LL<<20),
-      real(0xc5a70e199cLL<<20),real(-0x1e525ae3edc0000LL),
+      // C4[10], coeff of eps^19, polynomial in n of order 4
+      real(0x271f287fLL<<24),real(0xf600a494LL<<20),real(0x16c0b9cef8LL<<20),
+      real(-0xbe2389024LL<<20),real(0x11a4af29a40000LL),
       reale(451582LL,0xc2ea499e5c34fLL),
-      // _C4x[197]
+      // C4[10], coeff of eps^18, polynomial in n of order 5
+      real(-0xea32c51c9LL<<20),real(-0x4d6b22d794LL<<20),
+      real(0x2863098f21LL<<20),real(0x3eb4014b6LL<<20),real(-0x3d11ab75LL<<20),
+      real(-0x267d9727d20000LL),reale(451582LL,0xc2ea499e5c34fLL),
+      // C4[10], coeff of eps^17, polynomial in n of order 6
+      real(0x1042c27c41LL<<24),real(-0x577f944588LL<<20),
+      real(-0x268f031eaLL<<24),real(-0x13c26a3db8LL<<20),
+      real(0x2ff20d26bLL<<24),real(-0x11540a97e8LL<<20),
+      real(0xfe28858a80000LL),reale(451582LL,0xc2ea499e5c34fLL),
+      // C4[10], coeff of eps^16, polynomial in n of order 7
+      real(-0xbcd2f1d94LL<<20),real(0x160523aeb8LL<<20),
+      real(0x1643235e04LL<<20),real(-0x1a2a58ca3LL<<24),
+      real(0x3f66def9cLL<<20),real(0x28e5854e8LL<<20),real(0xb430db34LL<<20),
+      real(-0xcaee985680000LL),reale(64511LL,0xd2b3c15fc4079LL),
+      // C4[10], coeff of eps^15, polynomial in n of order 8
+      real(0x9db3395b4LL<<24),real(-0x9d7319ec68LL<<20),
+      real(0x2d4332da7LL<<24),real(0x170f6ac248LL<<20),real(-0x63f39826LL<<24),
+      real(-0x136411b108LL<<20),real(0xecea038dLL<<24),
+      real(-0x35a24d258LL<<20),real(0x4a8ec1980000LL),
+      reale(64511LL,0xd2b3c15fc4079LL),
+      // C4[10], coeff of eps^14, polynomial in n of order 9
+      real(-0xd6b297dd67LL<<20),real(0x629dad8e08LL<<20),
+      real(0x4cbffd5477LL<<20),real(-0xa54ccd42faLL<<20),
+      real(0x72d04d3dd5LL<<20),real(-0x1671c74cfcLL<<20),
+      real(-0xddab04a4dLL<<20),real(0x37935a302LL<<20),real(0x4f2336311LL<<20),
+      real(-0x233169f0960000LL),reale(64511LL,0xd2b3c15fc4079LL),
+      // C4[10], coeff of eps^13, polynomial in n of order 10
+      real(-0x2640ec7ff08LL<<20),real(0x49172ca078cLL<<20),
+      real(-0x60a332f31aLL<<24),real(0x4f6133ce734LL<<20),
+      real(-0x13c00fbdc38LL<<20),real(-0x29139b5a224LL<<20),
+      real(0x3ba48bedf3LL<<24),real(-0x26443e5f67cLL<<20),
+      real(0xc0b73ade98LL<<20),real(-0x100cb5f7d4LL<<20),
+      real(-0x3d5727afac0000LL),reale(451582LL,0xc2ea499e5c34fLL),
+      // C4[10], coeff of eps^12, polynomial in n of order 11
       real(-0x1c2fcb0feaLL<<20),real(0x78cd035154LL<<20),
       real(-0x16d0a12eceeLL<<20),real(0x32382092d1LL<<24),
       real(-0x50f9872fef2LL<<20),real(0x5d34c6740ccLL<<20),
@@ -1330,516 +1361,448 @@ namespace GeographicLib {
       real(0x15730500606LL<<20),real(-0x20401dde7bcLL<<20),
       real(0x1361c2c3102LL<<20),real(-0x4d7d212a0a40000LL),
       reale(451582LL,0xc2ea499e5c34fLL),
-      // _C4x[198]
-      real(-0x2640ec7ff08LL<<20),real(0x49172ca078cLL<<20),
-      real(-0x60a332f31aLL<<24),real(0x4f6133ce734LL<<20),
-      real(-0x13c00fbdc38LL<<20),real(-0x29139b5a224LL<<20),
-      real(0x3ba48bedf3LL<<24),real(-0x26443e5f67cLL<<20),
-      real(0xc0b73ade98LL<<20),real(-0x100cb5f7d4LL<<20),
-      real(-0x3d5727afac0000LL),reale(451582LL,0xc2ea499e5c34fLL),
-      // _C4x[199]
-      real(-0xd6b297dd67LL<<20),real(0x629dad8e08LL<<20),
-      real(0x4cbffd5477LL<<20),real(-0xa54ccd42faLL<<20),
-      real(0x72d04d3dd5LL<<20),real(-0x1671c74cfcLL<<20),
-      real(-0xddab04a4dLL<<20),real(0x37935a302LL<<20),real(0x4f2336311LL<<20),
-      real(-0x233169f0960000LL),reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[200]
-      real(0x9db3395b4LL<<24),real(-0x9d7319ec68LL<<20),
-      real(0x2d4332da7LL<<24),real(0x170f6ac248LL<<20),real(-0x63f39826LL<<24),
-      real(-0x136411b108LL<<20),real(0xecea038dLL<<24),
-      real(-0x35a24d258LL<<20),real(0x4a8ec1980000LL),
-      reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[201]
-      real(-0xbcd2f1d94LL<<20),real(0x160523aeb8LL<<20),
-      real(0x1643235e04LL<<20),real(-0x1a2a58ca3LL<<24),
-      real(0x3f66def9cLL<<20),real(0x28e5854e8LL<<20),real(0xb430db34LL<<20),
-      real(-0xcaee985680000LL),reale(64511LL,0xd2b3c15fc4079LL),
-      // _C4x[202]
-      real(0x1042c27c41LL<<24),real(-0x577f944588LL<<20),
-      real(-0x268f031eaLL<<24),real(-0x13c26a3db8LL<<20),
-      real(0x2ff20d26bLL<<24),real(-0x11540a97e8LL<<20),
-      real(0xfe28858a80000LL),reale(451582LL,0xc2ea499e5c34fLL),
-      // _C4x[203]
-      real(-0xea32c51c9LL<<20),real(-0x4d6b22d794LL<<20),
-      real(0x2863098f21LL<<20),real(0x3eb4014b6LL<<20),real(-0x3d11ab75LL<<20),
-      real(-0x267d9727d20000LL),reale(451582LL,0xc2ea499e5c34fLL),
-      // _C4x[204]
-      real(0x271f287fLL<<24),real(0xf600a494LL<<20),real(0x16c0b9cef8LL<<20),
-      real(-0xbe2389024LL<<20),real(0x11a4af29a40000LL),
+      // C4[10], coeff of eps^11, polynomial in n of order 12
+      real(-0x1dc61f3LL<<24),real(0x177c584b4LL<<20),real(-0xa68e4dda8LL<<20),
+      real(0x310ee42c7cLL<<20),real(-0xa5e7161a2LL<<24),
+      real(0x1a2ee772944LL<<20),real(-0x3250f74ee98LL<<20),
+      real(0x49d6b12a10cLL<<20),real(-0x51be070751LL<<24),
+      real(0x4214c5c39d4LL<<20),real(-0x24a245ec788LL<<20),
+      real(0xc5a70e199cLL<<20),real(-0x1e525ae3edc0000LL),
       reale(451582LL,0xc2ea499e5c34fLL),
-      // _C4x[205]
-      real(0x1e33a6057eLL<<20),real(-0x21167e86cLL<<20),
-      real(-0xeff2cdd6LL<<20),real(-0x123578c1740000LL),
+      // C4[10], coeff of eps^10, polynomial in n of order 13
+      real(46189LL<<20),real(0x1fe0ccLL<<20),real(-0x55d6a55LL<<20),
+      real(0x4928642aLL<<20),real(-0x2363dbf97LL<<20),real(0xb840ca888LL<<20),
+      real(-0x2baa055459LL<<20),real(0x7de38a60e6LL<<20),
+      real(-0x11a7161219bLL<<20),real(0x1f11977c044LL<<20),
+      real(-0x2a7db4d305dLL<<20),real(0x2b3c8b159a2LL<<20),
+      real(-0x1bcb7dfb99fLL<<20),real(0x7e5725605ea0000LL),
       reale(451582LL,0xc2ea499e5c34fLL),
-      // _C4x[206]
-      real(0x2603b6b8LL<<20),real(-0x1b1fbe44LL<<20),real(0x35b1e4040000LL),
-      reale(5864LL,0xb6105765cc00bLL),
-      // _C4x[207]
-      real(-0x1196b3LL<<20),real(-0xcdcede0000LL),real(0x9e817610332f06fLL),
-      // _C4x[208]
-      real(274LL<<20),real(0x8757c14b789bLL),
-      // _C4x[209]
-      real(0x1671deLL<<24),real(-0x1500c668LL<<20),real(0xb37afc9LL<<24),
-      real(-0x40e6c22f8LL<<20),real(0x113a17194LL<<24),
-      real(-0x382ee86c88LL<<20),real(0x90789ecdfLL<<24),
-      real(-0x128f7f11918LL<<20),real(0x1e91fe774aLL<<24),
-      real(-0x27d2630dea8LL<<20),real(0x2730923e75LL<<24),
-      real(-0x18b4e1c3338LL<<20),real(0x6f2df7ee67c0000LL),
-      reale(494590LL,0xa4b77533898f5LL),
-      // _C4x[210]
-      real(0x3a2fdc86LL<<24),real(-0x133458534LL<<24),real(0x4983cdbc2LL<<24),
-      real(-0xd4d77511LL<<28),real(0x1dcdf50ddeLL<<24),
-      real(-0x342b8eadecLL<<24),real(0x472c5d4b1aLL<<24),
-      real(-0x4a78d3d788LL<<24),real(0x39b15b6bb6LL<<24),
-      real(-0x1f0000c9a4LL<<24),real(0xa393147f2LL<<24),
-      real(-0x18b4e1c33380000LL),reale(494590LL,0xa4b77533898f5LL),
-      // _C4x[211]
-      real(0xb3c06cd6dLL<<24),real(-0x1cd91850ed8LL<<20),
-      real(0x37ca1889e4LL<<24),real(-0x50c8876bea8LL<<20),
-      real(0x546435a5dbLL<<24),real(-0x3839a481d78LL<<20),
-      real(0xa846bfd72LL<<24),real(0x1777a57c6b8LL<<20),
-      real(-0x1dd3659b37LL<<24),real(0x112d2a31fe8LL<<20),
-      real(-0x43bae67ca340000LL),reale(494590LL,0xa4b77533898f5LL),
-      // _C4x[212]
-      real(0xb24820b1LL<<28),real(-0xcdaa7f9LL<<32),real(0x8d98303fLL<<28),
-      real(-0x715b264LL<<28),real(-0x69a997fbLL<<28),real(0x7cf953f8LL<<28),
-      real(-0x492e000dLL<<28),real(0x1532a074LL<<28),real(-0x1477807LL<<28),
-      real(-0x84ab32d6LL<<20),reale(70655LL,0xce6359e2ca823LL),
-      // _C4x[213]
-      real(0x2b3869c18LL<<24),real(0x6bde35689LL<<24),real(-0x9bd70f74eLL<<24),
-      real(0x59f59768bLL<<24),real(-0x989546f4LL<<24),real(-0xe250b353LL<<24),
-      real(0x1ea69be6LL<<24),real(0x4ec2b9afLL<<24),real(-0x1ff3696ed80000LL),
+      // C4[11], coeff of eps^23, polynomial in n of order 0
+      real(-14618LL<<20),real(0x2c95e8ad321065LL),
+      // C4[11], coeff of eps^22, polynomial in n of order 1
+      real(-475508LL<<28),real(0xcc9558LL<<20),real(0x7759dcb5574d50a7LL),
+      // C4[11], coeff of eps^21, polynomial in n of order 2
+      real(-0x8af151LL<<24),real(-0x17c4bd28LL<<20),real(-0x2ab725b4c0000LL),
       reale(70655LL,0xce6359e2ca823LL),
-      // _C4x[214]
-      real(-0x37574f34acLL<<24),real(0x84fafcb78LL<<24),
-      real(0xb233d7bfcLL<<24),real(-0x6f2a193LL<<28),real(-0x89bedbe1cLL<<24),
-      real(0x5a25b4328LL<<24),real(-0x12508eb74LL<<24),real(-0x31e34911LL<<20),
+      // C4[11], coeff of eps^20, polynomial in n of order 3
+      real(-0x1c84ad12LL<<24),real(0x167f4f58cLL<<24),real(-0xa6243226LL<<24),
+      real(0xd66f0f6680000LL),reale(494590LL,0xa4b77533898f5LL),
+      // C4[11], coeff of eps^19, polynomial in n of order 4
+      real(-0x4e628a606LL<<24),real(0x1f0426c698LL<<20),real(0x5a0f914dLL<<24),
+      real(0x6ca5b688LL<<20),real(-0x25d6eb7f040000LL),
       reale(494590LL,0xa4b77533898f5LL),
-      // _C4x[215]
-      real(0xd6416fd2LL<<24),real(0x1a7ce273bLL<<24),real(-0x164414e34LL<<24),
-      real(0x18514f7dLL<<24),real(0x26a24e46LL<<24),real(0xde21c9fLL<<24),
-      real(-0xbfafa69580000LL),reale(70655LL,0xce6359e2ca823LL),
-      // _C4x[216]
+      // C4[11], coeff of eps^18, polynomial in n of order 5
       real(-0x2bf157d5LL<<28),real(-0x2808e738LL<<28),real(-0x1ac7b8a3LL<<28),
       real(0x2cec47ecLL<<28),real(-0xe84ff89LL<<28),real(0xa955cbd6LL<<20),
       reale(494590LL,0xa4b77533898f5LL),
-      // _C4x[217]
-      real(-0x4e628a606LL<<24),real(0x1f0426c698LL<<20),real(0x5a0f914dLL<<24),
-      real(0x6ca5b688LL<<20),real(-0x25d6eb7f040000LL),
+      // C4[11], coeff of eps^17, polynomial in n of order 6
+      real(0xd6416fd2LL<<24),real(0x1a7ce273bLL<<24),real(-0x164414e34LL<<24),
+      real(0x18514f7dLL<<24),real(0x26a24e46LL<<24),real(0xde21c9fLL<<24),
+      real(-0xbfafa69580000LL),reale(70655LL,0xce6359e2ca823LL),
+      // C4[11], coeff of eps^16, polynomial in n of order 7
+      real(-0x37574f34acLL<<24),real(0x84fafcb78LL<<24),
+      real(0xb233d7bfcLL<<24),real(-0x6f2a193LL<<28),real(-0x89bedbe1cLL<<24),
+      real(0x5a25b4328LL<<24),real(-0x12508eb74LL<<24),real(-0x31e34911LL<<20),
       reale(494590LL,0xa4b77533898f5LL),
-      // _C4x[218]
-      real(-0x1c84ad12LL<<24),real(0x167f4f58cLL<<24),real(-0xa6243226LL<<24),
-      real(0xd66f0f6680000LL),reale(494590LL,0xa4b77533898f5LL),
-      // _C4x[219]
-      real(-0x8af151LL<<24),real(-0x17c4bd28LL<<20),real(-0x2ab725b4c0000LL),
+      // C4[11], coeff of eps^15, polynomial in n of order 8
+      real(0x2b3869c18LL<<24),real(0x6bde35689LL<<24),real(-0x9bd70f74eLL<<24),
+      real(0x59f59768bLL<<24),real(-0x989546f4LL<<24),real(-0xe250b353LL<<24),
+      real(0x1ea69be6LL<<24),real(0x4ec2b9afLL<<24),real(-0x1ff3696ed80000LL),
       reale(70655LL,0xce6359e2ca823LL),
-      // _C4x[220]
-      real(-475508LL<<28),real(0xcc9558LL<<20),real(0x7759dcb5574d50a7LL),
-      // _C4x[221]
-      real(-14618LL<<20),real(0x2c95e8ad321065LL),
-      // _C4x[222]
-      real(-0x37b8e9dLL<<24),real(0x16298b8aLL<<24),real(-0x6829a96fLL<<24),
-      real(0x17ac60b08LL<<24),real(-0x448421b01LL<<24),real(0xa08605c86LL<<24),
-      real(-0x132e21a1d3LL<<24),real(0x1de177c384LL<<24),
-      real(-0x2559d5b465LL<<24),real(0x23ba1a5382LL<<24),
-      real(-0x1626957137LL<<24),real(0x62d3870cceLL<<20),
+      // C4[11], coeff of eps^14, polynomial in n of order 9
+      real(0xb24820b1LL<<28),real(-0xcdaa7f9LL<<32),real(0x8d98303fLL<<28),
+      real(-0x715b264LL<<28),real(-0x69a997fbLL<<28),real(0x7cf953f8LL<<28),
+      real(-0x492e000dLL<<28),real(0x1532a074LL<<28),real(-0x1477807LL<<28),
+      real(-0x84ab32d6LL<<20),reale(70655LL,0xce6359e2ca823LL),
+      // C4[11], coeff of eps^13, polynomial in n of order 10
+      real(0xb3c06cd6dLL<<24),real(-0x1cd91850ed8LL<<20),
+      real(0x37ca1889e4LL<<24),real(-0x50c8876bea8LL<<20),
+      real(0x546435a5dbLL<<24),real(-0x3839a481d78LL<<20),
+      real(0xa846bfd72LL<<24),real(0x1777a57c6b8LL<<20),
+      real(-0x1dd3659b37LL<<24),real(0x112d2a31fe8LL<<20),
+      real(-0x43bae67ca340000LL),reale(494590LL,0xa4b77533898f5LL),
+      // C4[11], coeff of eps^12, polynomial in n of order 11
+      real(0x3a2fdc86LL<<24),real(-0x133458534LL<<24),real(0x4983cdbc2LL<<24),
+      real(-0xd4d77511LL<<28),real(0x1dcdf50ddeLL<<24),
+      real(-0x342b8eadecLL<<24),real(0x472c5d4b1aLL<<24),
+      real(-0x4a78d3d788LL<<24),real(0x39b15b6bb6LL<<24),
+      real(-0x1f0000c9a4LL<<24),real(0xa393147f2LL<<24),
+      real(-0x18b4e1c33380000LL),reale(494590LL,0xa4b77533898f5LL),
+      // C4[11], coeff of eps^11, polynomial in n of order 12
+      real(0x1671deLL<<24),real(-0x1500c668LL<<20),real(0xb37afc9LL<<24),
+      real(-0x40e6c22f8LL<<20),real(0x113a17194LL<<24),
+      real(-0x382ee86c88LL<<20),real(0x90789ecdfLL<<24),
+      real(-0x128f7f11918LL<<20),real(0x1e91fe774aLL<<24),
+      real(-0x27d2630dea8LL<<20),real(0x2730923e75LL<<24),
+      real(-0x18b4e1c3338LL<<20),real(0x6f2df7ee67c0000LL),
+      reale(494590LL,0xa4b77533898f5LL),
+      // C4[12], coeff of eps^23, polynomial in n of order 0
+      real(173LL<<24),real(0x88d5e64011771LL),
+      // C4[12], coeff of eps^22, polynomial in n of order 1
+      real(-163369LL<<28),real(-533806LL<<28),reale(14529LL,0xb09bccfe817bfLL),
+      // C4[12], coeff of eps^21, polynomial in n of order 2
+      real(0x3221baeLL<<28),real(-0x14bb46dLL<<28),real(0x1728fcfLL<<24),
+      reale(76799LL,0xca12f265d0fcdLL),
+      // C4[12], coeff of eps^20, polynomial in n of order 3
+      real(0x16cedd0f7LL<<24),real(0x68f5252aLL<<24),real(0x100a803dLL<<24),
+      real(-0x24d58931aLL<<20),reale(537598LL,0x8684a0c8b6e9bLL),
+      // C4[12], coeff of eps^19, polynomial in n of order 4
+      real(-0x24c667a9LL<<28),real(-0x204f7245cLL<<24),real(0x29ae5e638LL<<24),
+      real(-0xc2f052f4LL<<24),real(0x6b6905bcLL<<20),
+      reale(537598LL,0x8684a0c8b6e9bLL),
+      // C4[12], coeff of eps^18, polynomial in n of order 5
+      real(0x1c800d54cLL<<24),real(-0x125e2539LL<<28),real(-0x431e66cLL<<24),
+      real(0x22c53a38LL<<24),real(0xfcf4ddcLL<<24),real(-0xb47cb7cLL<<24),
+      reale(76799LL,0xca12f265d0fcdLL),
+      // C4[12], coeff of eps^17, polynomial in n of order 6
+      real(0x45b00e8LL<<24),real(0x1879e031cLL<<24),real(0x380b7efLL<<28),
+      real(-0x135dac8bcLL<<24),real(0xb2b97ef8LL<<24),real(-0x20bc2b14LL<<24),
+      real(-0xea38f04LL<<20),reale(76799LL,0xca12f265d0fcdLL),
+      // C4[12], coeff of eps^16, polynomial in n of order 7
+      real(0x3701f1b322LL<<24),real(-0x3de4b7ca4cLL<<24),
+      real(0x1e0551a306LL<<24),real(-0x3ff2ae88LL<<24),
+      real(-0x5ea04db96LL<<24),real(0x4663a33cLL<<24),real(0x21c3a104eLL<<24),
+      real(-0xcbb56a5acLL<<20),reale(537598LL,0x8684a0c8b6e9bLL),
+      // C4[12], coeff of eps^15, polynomial in n of order 8
+      real(-0x50e951d9eLL<<28),real(0x2dc21adf0cLL<<24),
+      real(0x9a9f67018LL<<24),real(-0x307f93b19cLL<<24),
+      real(0x3187e8171LL<<28),real(-0x1ad4690cc4LL<<24),
+      real(0x72d4f7c08LL<<24),real(-0x4284616cLL<<24),real(-0x360b8f27cLL<<20),
       reale(537598LL,0x8684a0c8b6e9bLL),
-      // _C4x[223]
+      // C4[12], coeff of eps^14, polynomial in n of order 9
+      real(-0x4e6bc3424LL<<24),real(0x8833a59eLL<<28),real(-0xb3dd28c1cLL<<24),
+      real(0xac3fc9f68LL<<24),real(-0x667eb7414LL<<24),real(0x77b80cfLL<<28),
+      real(0x37cf913f4LL<<24),real(-0x3ef425588LL<<24),real(0x230a4ebfcLL<<24),
+      real(-0x88b062ecLL<<24),reale(76799LL,0xca12f265d0fcdLL),
+      // C4[12], coeff of eps^13, polynomial in n of order 10
       real(-0xa4a255b8LL<<24),real(0x2198941c4LL<<24),real(-0x55f3d536LL<<28),
       real(0xaea2f0a7cLL<<24),real(-0x11ad0f2508LL<<24),
       real(0x16acb091b4LL<<24),real(-0x169cc955bLL<<28),
       real(0x10e39cbc6cLL<<24),real(-0x8d594f058LL<<24),
       real(0x2dbb02fa4LL<<24),real(-0x6d0cb854cLL<<20),
       reale(179199LL,0x822c35983cf89LL),
-      // _C4x[224]
-      real(-0x4e6bc3424LL<<24),real(0x8833a59eLL<<28),real(-0xb3dd28c1cLL<<24),
-      real(0xac3fc9f68LL<<24),real(-0x667eb7414LL<<24),real(0x77b80cfLL<<28),
-      real(0x37cf913f4LL<<24),real(-0x3ef425588LL<<24),real(0x230a4ebfcLL<<24),
-      real(-0x88b062ecLL<<24),reale(76799LL,0xca12f265d0fcdLL),
-      // _C4x[225]
-      real(-0x50e951d9eLL<<28),real(0x2dc21adf0cLL<<24),
-      real(0x9a9f67018LL<<24),real(-0x307f93b19cLL<<24),
-      real(0x3187e8171LL<<28),real(-0x1ad4690cc4LL<<24),
-      real(0x72d4f7c08LL<<24),real(-0x4284616cLL<<24),real(-0x360b8f27cLL<<20),
-      reale(537598LL,0x8684a0c8b6e9bLL),
-      // _C4x[226]
-      real(0x3701f1b322LL<<24),real(-0x3de4b7ca4cLL<<24),
-      real(0x1e0551a306LL<<24),real(-0x3ff2ae88LL<<24),
-      real(-0x5ea04db96LL<<24),real(0x4663a33cLL<<24),real(0x21c3a104eLL<<24),
-      real(-0xcbb56a5acLL<<20),reale(537598LL,0x8684a0c8b6e9bLL),
-      // _C4x[227]
-      real(0x45b00e8LL<<24),real(0x1879e031cLL<<24),real(0x380b7efLL<<28),
-      real(-0x135dac8bcLL<<24),real(0xb2b97ef8LL<<24),real(-0x20bc2b14LL<<24),
-      real(-0xea38f04LL<<20),reale(76799LL,0xca12f265d0fcdLL),
-      // _C4x[228]
-      real(0x1c800d54cLL<<24),real(-0x125e2539LL<<28),real(-0x431e66cLL<<24),
-      real(0x22c53a38LL<<24),real(0xfcf4ddcLL<<24),real(-0xb47cb7cLL<<24),
-      reale(76799LL,0xca12f265d0fcdLL),
-      // _C4x[229]
-      real(-0x24c667a9LL<<28),real(-0x204f7245cLL<<24),real(0x29ae5e638LL<<24),
-      real(-0xc2f052f4LL<<24),real(0x6b6905bcLL<<20),
+      // C4[12], coeff of eps^12, polynomial in n of order 11
+      real(-0x37b8e9dLL<<24),real(0x16298b8aLL<<24),real(-0x6829a96fLL<<24),
+      real(0x17ac60b08LL<<24),real(-0x448421b01LL<<24),real(0xa08605c86LL<<24),
+      real(-0x132e21a1d3LL<<24),real(0x1de177c384LL<<24),
+      real(-0x2559d5b465LL<<24),real(0x23ba1a5382LL<<24),
+      real(-0x1626957137LL<<24),real(0x62d3870cceLL<<20),
       reale(537598LL,0x8684a0c8b6e9bLL),
-      // _C4x[230]
-      real(0x16cedd0f7LL<<24),real(0x68f5252aLL<<24),real(0x100a803dLL<<24),
-      real(-0x24d58931aLL<<20),reale(537598LL,0x8684a0c8b6e9bLL),
-      // _C4x[231]
-      real(0x3221baeLL<<28),real(-0x14bb46dLL<<28),real(0x1728fcfLL<<24),
-      reale(76799LL,0xca12f265d0fcdLL),
-      // _C4x[232]
-      real(-163369LL<<28),real(-533806LL<<28),reale(14529LL,0xb09bccfe817bfLL),
-      // _C4x[233]
-      real(173LL<<24),real(0x88d5e64011771LL),
-      // _C4x[234]
-      real(0x25fe13c8LL<<24),real(-0x9850ba5cLL<<24),real(0x1e97df6aLL<<28),
-      real(-0x504eaa764LL<<24),real(0xae1c91d78LL<<24),
-      real(-0x139186d8ecLL<<24),real(0x1d12b9b75LL<<28),
-      real(-0x2313cf5ff4LL<<24),real(0x20bd27f328LL<<24),
-      real(-0x1401d14d7cLL<<24),real(0x589a55c4dcLL<<20),
+      // C4[13], coeff of eps^23, polynomial in n of order 0
+      real(-34717LL<<24),real(0x4013d857859e5adLL),
+      // C4[13], coeff of eps^22, polynomial in n of order 1
+      real(-211348LL<<28),real(202566LL<<24),real(0x39b1009e5dec691dLL),
+      // C4[13], coeff of eps^21, polynomial in n of order 2
+      real(0x6f0d556LL<<28),real(0x17e5b6fLL<<28),real(-0x239e6b67LL<<24),
       reale(580606LL,0x6851cc5de4441LL),
-      // _C4x[235]
-      real(0x818a2ec5LL<<28),real(-0x12b6c5f08LL<<28),real(0x230938ccbLL<<28),
-      real(-0x351e2e0f6LL<<28),real(0x40a325c81LL<<28),
-      real(-0x3dd759604LL<<28),real(0x2cbf53447LL<<28),
-      real(-0x16dd817d2LL<<28),real(0x7467aa7dLL<<28),
-      real(-0x1126211dd8LL<<20),reale(580606LL,0x6851cc5de4441LL),
-      // _C4x[236]
+      // C4[13], coeff of eps^20, polynomial in n of order 3
+      real(-0x2464749LL<<32),real(0x26669d6LL<<32),real(-0xa3d513LL<<32),
+      real(0x3def9d8LL<<24),reale(580606LL,0x6851cc5de4441LL),
+      // C4[13], coeff of eps^19, polynomial in n of order 4
+      real(-0xeb80f55LL<<28),real(-0x1858908cLL<<24),real(0x1e2afdd8LL<<24),
+      real(0x112cd7fcLL<<24),real(-0xa9ad115cLL<<20),
+      reale(82943LL,0xc5c28ae8d7777LL),
+      // C4[13], coeff of eps^18, polynomial in n of order 5
+      real(0x159a60cfLL<<28),real(0x721fec4LL<<28),real(-0x12aa2317LL<<28),
+      real(0x9ad4f32LL<<28),real(-0x199ce6dLL<<28),real(-0x13522ba8LL<<20),
+      reale(82943LL,0xc5c28ae8d7777LL),
+      // C4[13], coeff of eps^17, polynomial in n of order 6
+      real(-0x7cff45cc8LL<<24),real(0x32d4ac134LL<<24),real(0x57cb65dLL<<28),
+      real(-0xc68d9d14LL<<24),real(-0x6973598LL<<24),real(0x4ada9e24LL<<24),
+      real(-0x1a98e3004LL<<20),reale(82943LL,0xc5c28ae8d7777LL),
+      // C4[13], coeff of eps^16, polynomial in n of order 7
+      real(0x1f56ae64eLL<<28),real(0x132b344d4LL<<28),real(-0x30d2fad16LL<<28),
+      real(0x2c89c35f8LL<<28),real(-0x168935c9aLL<<28),real(0x5932509cLL<<28),
+      real(-0xe61cfeLL<<28),real(-0x31e34911LL<<24),
+      reale(580606LL,0x6851cc5de4441LL),
+      // C4[13], coeff of eps^15, polynomial in n of order 8
       real(0x3dcb4a886LL<<28),real(-0x4b489ee77cLL<<24),
       real(0x42904411c8LL<<24),real(-0x232f8a41b4LL<<24),
       real(-0x2305ff7dLL<<28),real(0x18aab34994LL<<24),
       real(-0x196f7c6368LL<<24),real(0xdc5682b5cLL<<24),
       real(-0x354402037cLL<<20),reale(580606LL,0x6851cc5de4441LL),
-      // _C4x[237]
-      real(0x1f56ae64eLL<<28),real(0x132b344d4LL<<28),real(-0x30d2fad16LL<<28),
-      real(0x2c89c35f8LL<<28),real(-0x168935c9aLL<<28),real(0x5932509cLL<<28),
-      real(-0xe61cfeLL<<28),real(-0x31e34911LL<<24),
-      reale(580606LL,0x6851cc5de4441LL),
-      // _C4x[238]
-      real(-0x7cff45cc8LL<<24),real(0x32d4ac134LL<<24),real(0x57cb65dLL<<28),
-      real(-0xc68d9d14LL<<24),real(-0x6973598LL<<24),real(0x4ada9e24LL<<24),
-      real(-0x1a98e3004LL<<20),reale(82943LL,0xc5c28ae8d7777LL),
-      // _C4x[239]
-      real(0x159a60cfLL<<28),real(0x721fec4LL<<28),real(-0x12aa2317LL<<28),
-      real(0x9ad4f32LL<<28),real(-0x199ce6dLL<<28),real(-0x13522ba8LL<<20),
-      reale(82943LL,0xc5c28ae8d7777LL),
-      // _C4x[240]
-      real(-0xeb80f55LL<<28),real(-0x1858908cLL<<24),real(0x1e2afdd8LL<<24),
-      real(0x112cd7fcLL<<24),real(-0xa9ad115cLL<<20),
-      reale(82943LL,0xc5c28ae8d7777LL),
-      // _C4x[241]
-      real(-0x2464749LL<<32),real(0x26669d6LL<<32),real(-0xa3d513LL<<32),
-      real(0x3def9d8LL<<24),reale(580606LL,0x6851cc5de4441LL),
-      // _C4x[242]
-      real(0x6f0d556LL<<28),real(0x17e5b6fLL<<28),real(-0x239e6b67LL<<24),
+      // C4[13], coeff of eps^14, polynomial in n of order 9
+      real(0x818a2ec5LL<<28),real(-0x12b6c5f08LL<<28),real(0x230938ccbLL<<28),
+      real(-0x351e2e0f6LL<<28),real(0x40a325c81LL<<28),
+      real(-0x3dd759604LL<<28),real(0x2cbf53447LL<<28),
+      real(-0x16dd817d2LL<<28),real(0x7467aa7dLL<<28),
+      real(-0x1126211dd8LL<<20),reale(580606LL,0x6851cc5de4441LL),
+      // C4[13], coeff of eps^13, polynomial in n of order 10
+      real(0x25fe13c8LL<<24),real(-0x9850ba5cLL<<24),real(0x1e97df6aLL<<28),
+      real(-0x504eaa764LL<<24),real(0xae1c91d78LL<<24),
+      real(-0x139186d8ecLL<<24),real(0x1d12b9b75LL<<28),
+      real(-0x2313cf5ff4LL<<24),real(0x20bd27f328LL<<24),
+      real(-0x1401d14d7cLL<<24),real(0x589a55c4dcLL<<20),
       reale(580606LL,0x6851cc5de4441LL),
-      // _C4x[243]
-      real(-211348LL<<28),real(202566LL<<24),real(0x39b1009e5dec691dLL),
-      // _C4x[244]
-      real(-34717LL<<24),real(0x4013d857859e5adLL),
-      // _C4x[245]
-      real(-0xd0075fc8LL<<24),real(0x25c0dd3cLL<<28),real(-0x5b54718b8LL<<24),
-      real(0xb9680eedLL<<28),real(-0x13c5e421a8LL<<24),real(0x1c32b269eLL<<28),
-      real(-0x20fde01a98LL<<24),real(0x1e23fc24fLL<<28),
-      real(-0x123032a388LL<<24),real(0x50074535fLL<<24),
+      // C4[14], coeff of eps^23, polynomial in n of order 0
+      real(3464LL<<24),real(0x16f0fb486be35c9LL),
+      // C4[14], coeff of eps^22, polynomial in n of order 1
+      real(0x1ca55aLL<<28),real(-0x2045e4cLL<<24),
+      reale(36683LL,0x318959e11f277LL),
+      // C4[14], coeff of eps^21, polynomial in n of order 2
+      real(0x2120deLL<<32),real(-531601LL<<32),real(109557LL<<28),
+      reale(36683LL,0x318959e11f277LL),
+      // C4[14], coeff of eps^20, polynomial in n of order 3
+      real(-0x10a43e28LL<<28),real(0xb17829LL<<32),real(0x7eabb48LL<<28),
+      real(-0x45c00a9LL<<28),reale(623614LL,0x4a1ef7f3119e7LL),
+      // C4[14], coeff of eps^19, polynomial in n of order 4
+      real(0x9eed74LL<<32),real(-0x11ba229LL<<32),real(0x8618baLL<<32),
+      real(-0x140563LL<<32),real(-0x161c61LL<<28),
+      reale(89087LL,0xc172236bddf21LL),
+      // C4[14], coeff of eps^18, polynomial in n of order 5
+      real(0x244e10b28LL<<24),real(0x96e2042LL<<28),real(-0xb152f2e8LL<<24),
+      real(-0x13d4edfLL<<28),real(0x481c9f08LL<<24),real(-0x1864aaafLL<<24),
+      reale(89087LL,0xc172236bddf21LL),
+      // C4[14], coeff of eps^17, polynomial in n of order 6
+      real(0x3b7e4894LL<<28),real(-0x6d6c0f9aLL<<28),real(0x5b1f61b8LL<<28),
+      real(-0x2b621ef6LL<<28),real(0x9eb72dcLL<<28),real(0x300baeLL<<28),
+      real(-0x68c8a16LL<<24),reale(89087LL,0xc172236bddf21LL),
+      // C4[14], coeff of eps^16, polynomial in n of order 7
+      real(-0x4707eab9dLL<<28),real(0x3a445131eLL<<28),
+      real(-0x1b0e43927LL<<28),real(-0x6498a9ecLL<<28),real(0x1875e934fLL<<28),
+      real(-0x178373ef6LL<<28),real(0xc71a15c5LL<<28),real(-0x2fcf2605aLL<<24),
       reale(623614LL,0x4a1ef7f3119e7LL),
-      // _C4x[246]
+      // C4[14], coeff of eps^15, polynomial in n of order 8
       real(-0x150a734fLL<<32),real(0x24bdd9aeeLL<<28),real(-0x34a1435b4LL<<28),
       real(0x3d2daa4aaLL<<28),real(-0x38737aa78LL<<28),real(0x27ba57866LL<<28),
       real(-0x13e34173cLL<<28),real(0x63c69222LL<<28),real(-0xe8cf54faLL<<24),
       reale(623614LL,0x4a1ef7f3119e7LL),
-      // _C4x[247]
-      real(-0x4707eab9dLL<<28),real(0x3a445131eLL<<28),
-      real(-0x1b0e43927LL<<28),real(-0x6498a9ecLL<<28),real(0x1875e934fLL<<28),
-      real(-0x178373ef6LL<<28),real(0xc71a15c5LL<<28),real(-0x2fcf2605aLL<<24),
+      // C4[14], coeff of eps^14, polynomial in n of order 9
+      real(-0xd0075fc8LL<<24),real(0x25c0dd3cLL<<28),real(-0x5b54718b8LL<<24),
+      real(0xb9680eedLL<<28),real(-0x13c5e421a8LL<<24),real(0x1c32b269eLL<<28),
+      real(-0x20fde01a98LL<<24),real(0x1e23fc24fLL<<28),
+      real(-0x123032a388LL<<24),real(0x50074535fLL<<24),
       reale(623614LL,0x4a1ef7f3119e7LL),
-      // _C4x[248]
-      real(0x3b7e4894LL<<28),real(-0x6d6c0f9aLL<<28),real(0x5b1f61b8LL<<28),
-      real(-0x2b621ef6LL<<28),real(0x9eb72dcLL<<28),real(0x300baeLL<<28),
-      real(-0x68c8a16LL<<24),reale(89087LL,0xc172236bddf21LL),
-      // _C4x[249]
-      real(0x244e10b28LL<<24),real(0x96e2042LL<<28),real(-0xb152f2e8LL<<24),
-      real(-0x13d4edfLL<<28),real(0x481c9f08LL<<24),real(-0x1864aaafLL<<24),
-      reale(89087LL,0xc172236bddf21LL),
-      // _C4x[250]
-      real(0x9eed74LL<<32),real(-0x11ba229LL<<32),real(0x8618baLL<<32),
-      real(-0x140563LL<<32),real(-0x161c61LL<<28),
-      reale(89087LL,0xc172236bddf21LL),
-      // _C4x[251]
-      real(-0x10a43e28LL<<28),real(0xb17829LL<<32),real(0x7eabb48LL<<28),
-      real(-0x45c00a9LL<<28),reale(623614LL,0x4a1ef7f3119e7LL),
-      // _C4x[252]
-      real(0x2120deLL<<32),real(-531601LL<<32),real(109557LL<<28),
-      reale(36683LL,0x318959e11f277LL),
-      // _C4x[253]
-      real(0x1ca55aLL<<28),real(-0x2045e4cLL<<24),
-      reale(36683LL,0x318959e11f277LL),
-      // _C4x[254]
-      real(3464LL<<24),real(0x16f0fb486be35c9LL),
-      // _C4x[255]
-      real(0x2cf5a88LL<<32),real(-0x657473dLL<<32),real(0xc2a0b46LL<<32),
-      real(-0x13d53ee7LL<<32),real(0x1b4a4a44LL<<32),real(-0x1f149bb1LL<<32),
-      real(0x1bdd82c2LL<<32),real(-0x10a1185bLL<<32),real(0x48c0ca8e2LL<<24),
+      // C4[15], coeff of eps^23, polynomial in n of order 0
+      real(-88024LL<<24),real(0x6a44bb11ad2310dLL),
+      // C4[15], coeff of eps^22, polynomial in n of order 1
+      real(-28003LL<<36),real(14196LL<<28),reale(39213LL,0x11a47a8f8b3bdLL),
+      // C4[15], coeff of eps^21, polynomial in n of order 2
+      real(4972LL<<36),real(4498LL<<36),real(-577583LL<<28),
+      reale(5601LL,0xddf2ecefef51bLL),
+      // C4[15], coeff of eps^20, polynomial in n of order 3
+      real(-28101LL<<40),real(195944LL<<36),real(-1645LL<<40),
+      real(-637602LL<<28),reale(39213LL,0x11a47a8f8b3bdLL),
+      // C4[15], coeff of eps^19, polynomial in n of order 4
+      real(0x52f54cLL<<36),real(-0x43dbd7LL<<36),real(-866586LL<<36),
+      real(0x1e41a3LL<<36),real(-0x9d2313dLL<<28),
       reale(666622LL,0x2bec23883ef8dLL),
-      // _C4x[256]
+      // C4[15], coeff of eps^18, polynomial in n of order 5
+      real(-0x69663bLL<<36),real(0x515854LL<<36),real(-0x24a3fdLL<<36),
+      real(506378LL<<36),real(26273LL<<36),real(-0x60175cLL<<28),
+      reale(95231LL,0xbd21bbeee46cbLL),
+      // C4[15], coeff of eps^17, polynomial in n of order 6
+      real(0x73aa5faLL<<32),real(-0x2e45af9LL<<32),real(-0x15592c4LL<<32),
+      real(0x36c5691LL<<32),real(-0x31c2d02LL<<32),real(0x19d71fbLL<<32),
+      real(-0x62bf9592LL<<24),reale(95231LL,0xbd21bbeee46cbLL),
+      // C4[15], coeff of eps^16, polynomial in n of order 7
       real(0xca51764LL<<32),real(-0x113d3e28LL<<32),real(0x1340502cLL<<32),
       real(-0x1134cafLL<<36),real(0xbd0b734LL<<32),real(-0x5cee2b8LL<<32),
       real(0x1cc39fcLL<<32),real(-0x4284616cLL<<24),
       reale(222207LL,0x63f9612d6a52fLL),
-      // _C4x[257]
-      real(0x73aa5faLL<<32),real(-0x2e45af9LL<<32),real(-0x15592c4LL<<32),
-      real(0x36c5691LL<<32),real(-0x31c2d02LL<<32),real(0x19d71fbLL<<32),
-      real(-0x62bf9592LL<<24),reale(95231LL,0xbd21bbeee46cbLL),
-      // _C4x[258]
-      real(-0x69663bLL<<36),real(0x515854LL<<36),real(-0x24a3fdLL<<36),
-      real(506378LL<<36),real(26273LL<<36),real(-0x60175cLL<<28),
-      reale(95231LL,0xbd21bbeee46cbLL),
-      // _C4x[259]
-      real(0x52f54cLL<<36),real(-0x43dbd7LL<<36),real(-866586LL<<36),
-      real(0x1e41a3LL<<36),real(-0x9d2313dLL<<28),
+      // C4[15], coeff of eps^15, polynomial in n of order 8
+      real(0x2cf5a88LL<<32),real(-0x657473dLL<<32),real(0xc2a0b46LL<<32),
+      real(-0x13d53ee7LL<<32),real(0x1b4a4a44LL<<32),real(-0x1f149bb1LL<<32),
+      real(0x1bdd82c2LL<<32),real(-0x10a1185bLL<<32),real(0x48c0ca8e2LL<<24),
       reale(666622LL,0x2bec23883ef8dLL),
-      // _C4x[260]
-      real(-28101LL<<40),real(195944LL<<36),real(-1645LL<<40),
-      real(-637602LL<<28),reale(39213LL,0x11a47a8f8b3bdLL),
-      // _C4x[261]
-      real(4972LL<<36),real(4498LL<<36),real(-577583LL<<28),
-      reale(5601LL,0xddf2ecefef51bLL),
-      // _C4x[262]
-      real(-28003LL<<36),real(14196LL<<28),reale(39213LL,0x11a47a8f8b3bdLL),
-      // _C4x[263]
-      real(-88024LL<<24),real(0x6a44bb11ad2310dLL),
-      // _C4x[264]
-      real(-0x6e9fd12LL<<32),real(0xca0272cLL<<32),real(-0x13c7b4d6LL<<32),
-      real(0x1a5f9bc8LL<<32),real(-0x1d54411aLL<<32),real(0x19dc2e64LL<<32),
-      real(-0xf47ecdeLL<<32),real(0x4284616cLL<<28),
-      reale(709630LL,0xdb94f1d6c533LL),
-      // _C4x[265]
-      real(-0x736f1dLL<<36),real(0x7c69888LL<<32),real(-0x6c179eLL<<36),
-      real(0x489ecb8LL<<32),real(-0x231fdfLL<<36),real(0xabf3e8LL<<32),
-      real(-0x18a7ad8LL<<28),reale(101375LL,0xb8d15471eae75LL),
-      // _C4x[266]
-      real(-0xe8e70dLL<<36),real(-0xb96fb4LL<<36),real(0x1748505LL<<36),
-      real(-0x1431b3aLL<<36),real(0xa52337LL<<36),real(-0x27462ddLL<<32),
-      reale(709630LL,0xdb94f1d6c533LL),
-      // _C4x[267]
+      // C4[16], coeff of eps^23, polynomial in n of order 0
+      real(-8LL<<28),real(0x5f43434b6401e1LL),
+      // C4[16], coeff of eps^22, polynomial in n of order 1
+      real(4571LL<<36),real(-33945LL<<32),reale(5963LL,0x471b5f51fec25LL),
+      // C4[16], coeff of eps^21, polynomial in n of order 2
+      real(24269LL<<36),real(-46648LL<<32),real(-93624LL<<28),
+      reale(5963LL,0x471b5f51fec25LL),
+      // C4[16], coeff of eps^20, polynomial in n of order 3
+      real(-224895LL<<36),real(-64554LL<<36),real(111531LL<<36),
+      real(-559300LL<<32),reale(41742LL,0xf1bf9b3df7503LL),
+      // C4[16], coeff of eps^19, polynomial in n of order 4
       real(0x1ddbcaLL<<36),real(-0xcc71e8LL<<32),real(162197LL<<36),
       real(234248LL<<32),real(-0x2443f8LL<<28),
       reale(41742LL,0xf1bf9b3df7503LL),
-      // _C4x[268]
-      real(-224895LL<<36),real(-64554LL<<36),real(111531LL<<36),
-      real(-559300LL<<32),reale(41742LL,0xf1bf9b3df7503LL),
-      // _C4x[269]
-      real(24269LL<<36),real(-46648LL<<32),real(-93624LL<<28),
-      reale(5963LL,0x471b5f51fec25LL),
-      // _C4x[270]
-      real(4571LL<<36),real(-33945LL<<32),reale(5963LL,0x471b5f51fec25LL),
-      // _C4x[271]
-      real(-8LL<<28),real(0x5f43434b6401e1LL),
-      // _C4x[272]
-      real(801009LL<<36),real(-0x127c0a8LL<<32),real(0x17f756LL<<36),
-      real(-0x1a17998LL<<32),real(0x16aa7bLL<<36),real(-0xd46988LL<<32),
-      real(0x39873f8LL<<28),reale(44272LL,0xd1dabbec63649LL),
-      // _C4x[273]
-      real(0x303beeLL<<36),real(-0x28dbf8LL<<36),real(0x1aeb02LL<<36),
-      real(-840924LL<<36),real(254646LL<<36),real(-580027LL<<32),
-      reale(44272LL,0xd1dabbec63649LL),
-      // _C4x[274]
+      // C4[16], coeff of eps^18, polynomial in n of order 5
+      real(-0xe8e70dLL<<36),real(-0xb96fb4LL<<36),real(0x1748505LL<<36),
+      real(-0x1431b3aLL<<36),real(0xa52337LL<<36),real(-0x27462ddLL<<32),
+      reale(709630LL,0xdb94f1d6c533LL),
+      // C4[16], coeff of eps^17, polynomial in n of order 6
+      real(-0x736f1dLL<<36),real(0x7c69888LL<<32),real(-0x6c179eLL<<36),
+      real(0x489ecb8LL<<32),real(-0x231fdfLL<<36),real(0xabf3e8LL<<32),
+      real(-0x18a7ad8LL<<28),reale(101375LL,0xb8d15471eae75LL),
+      // C4[16], coeff of eps^16, polynomial in n of order 7
+      real(-0x6e9fd12LL<<32),real(0xca0272cLL<<32),real(-0x13c7b4d6LL<<32),
+      real(0x1a5f9bc8LL<<32),real(-0x1d54411aLL<<32),real(0x19dc2e64LL<<32),
+      real(-0xf47ecdeLL<<32),real(0x4284616cLL<<28),
+      reale(709630LL,0xdb94f1d6c533LL),
+      // C4[17], coeff of eps^23, polynomial in n of order 0
+      real(-8968LL<<28),real(0x6ef59e61feaaea7LL),
+      // C4[17], coeff of eps^22, polynomial in n of order 1
+      real(-118LL<<36),real(-309LL<<32),real(0x14ce0db25fc00bf5LL),
+      // C4[17], coeff of eps^21, polynomial in n of order 2
+      real(-10703LL<<36),real(243304LL<<32),real(-0x121118LL<<28),
+      reale(6324LL,0xb043d1b40e32fLL),
+      // C4[17], coeff of eps^20, polynomial in n of order 3
+      real(-711108LL<<36),real(125720LL<<36),real(17108LL<<36),
+      real(-136206LL<<32),reale(44272LL,0xd1dabbec63649LL),
+      // C4[17], coeff of eps^19, polynomial in n of order 4
       real(-815566LL<<36),real(0x152c178LL<<32),real(-0x11aa77LL<<36),
       real(0x8e8828LL<<32),real(-0x21c8758LL<<28),
       reale(44272LL,0xd1dabbec63649LL),
-      // _C4x[275]
-      real(-711108LL<<36),real(125720LL<<36),real(17108LL<<36),
-      real(-136206LL<<32),reale(44272LL,0xd1dabbec63649LL),
-      // _C4x[276]
-      real(-10703LL<<36),real(243304LL<<32),real(-0x121118LL<<28),
-      reale(6324LL,0xb043d1b40e32fLL),
-      // _C4x[277]
-      real(-118LL<<36),real(-309LL<<32),real(0x14ce0db25fc00bf5LL),
-      // _C4x[278]
-      real(-8968LL<<28),real(0x6ef59e61feaaea7LL),
-      // _C4x[279]
+      // C4[17], coeff of eps^18, polynomial in n of order 5
+      real(0x303beeLL<<36),real(-0x28dbf8LL<<36),real(0x1aeb02LL<<36),
+      real(-840924LL<<36),real(254646LL<<36),real(-580027LL<<32),
+      reale(44272LL,0xd1dabbec63649LL),
+      // C4[17], coeff of eps^17, polynomial in n of order 6
+      real(801009LL<<36),real(-0x127c0a8LL<<32),real(0x17f756LL<<36),
+      real(-0x1a17998LL<<32),real(0x16aa7bLL<<36),real(-0xd46988LL<<32),
+      real(0x39873f8LL<<28),reale(44272LL,0xd1dabbec63649LL),
+      // C4[18], coeff of eps^23, polynomial in n of order 0
+      real(-712LL<<32),real(0x3351994085c8a607LL),
+      // C4[18], coeff of eps^22, polynomial in n of order 1
+      real(763LL<<36),real(-3618LL<<32),real(0x15fe66403955fe03LL),
+      // C4[18], coeff of eps^21, polynomial in n of order 2
+      real(728LL<<36),real(140LL<<36),real(-940LL<<32),
+      real(0x15fe66403955fe03LL),
+      // C4[18], coeff of eps^20, polynomial in n of order 3
+      real(0x1460d6LL<<36),real(-0x10745cLL<<36),real(537586LL<<36),
+      real(-0x1f0644LL<<32),reale(46802LL,0xb1f5dc9acf78fLL),
+      // C4[18], coeff of eps^19, polynomial in n of order 4
+      real(-51319LL<<40),real(531468LL<<36),real(-250040LL<<36),
+      real(75012LL<<36),real(-169764LL<<32),reale(15600LL,0xe5fc9ede45285LL),
+      // C4[18], coeff of eps^18, polynomial in n of order 5
       real(-0x124a17LL<<36),real(0x172094LL<<36),real(-0x18b441LL<<36),
       real(0x152ccaLL<<36),real(-806379LL<<36),real(0x351a62LL<<32),
       reale(46802LL,0xb1f5dc9acf78fLL),
-      // _C4x[280]
-      real(-51319LL<<40),real(531468LL<<36),real(-250040LL<<36),
-      real(75012LL<<36),real(-169764LL<<32),reale(15600LL,0xe5fc9ede45285LL),
-      // _C4x[281]
-      real(0x1460d6LL<<36),real(-0x10745cLL<<36),real(537586LL<<36),
-      real(-0x1f0644LL<<32),reale(46802LL,0xb1f5dc9acf78fLL),
-      // _C4x[282]
-      real(728LL<<36),real(140LL<<36),real(-940LL<<32),
-      real(0x15fe66403955fe03LL),
-      // _C4x[283]
-      real(763LL<<36),real(-3618LL<<32),real(0x15fe66403955fe03LL),
-      // _C4x[284]
-      real(-712LL<<32),real(0x3351994085c8a607LL),
-      // _C4x[285]
-      real(4810LL<<40),real(-80808LL<<36),real(4277LL<<40),real(-39480LL<<36),
-      real(169764LL<<32),reale(2596LL,0x737a284739077LL),
-      // _C4x[286]
-      real(4758LL<<40),real(-2212LL<<40),real(658LL<<40),real(-23688LL<<32),
-      reale(2596LL,0x737a284739077LL),
-      // _C4x[287]
+      // C4[19], coeff of eps^23, polynomial in n of order 0
+      real(-7864LL<<32),real(0x3617bd362c26857dLL),
+      // C4[19], coeff of eps^22, polynomial in n of order 1
+      real(4LL<<44),real(-378LL<<36),reale(2596LL,0x737a284739077LL),
+      // C4[19], coeff of eps^21, polynomial in n of order 2
       real(-473LL<<40),real(3736LL<<36),real(-14100LL<<32),
       real(0x172ebece12ebf011LL),
-      // _C4x[288]
-      real(4LL<<44),real(-378LL<<36),reale(2596LL,0x737a284739077LL),
-      // _C4x[289]
-      real(-7864LL<<32),real(0x3617bd362c26857dLL),
-      // _C4x[290]
-      real(-4797LL<<40),real(4018LL<<40),real(-2303LL<<40),real(9870LL<<36),
-      reale(2729LL,0x9a383778d2ed9LL),
-      // _C4x[291]
+      // C4[19], coeff of eps^20, polynomial in n of order 3
+      real(4758LL<<40),real(-2212LL<<40),real(658LL<<40),real(-23688LL<<32),
+      reale(2596LL,0x737a284739077LL),
+      // C4[19], coeff of eps^19, polynomial in n of order 4
+      real(4810LL<<40),real(-80808LL<<36),real(4277LL<<40),real(-39480LL<<36),
+      real(169764LL<<32),reale(2596LL,0x737a284739077LL),
+      // C4[20], coeff of eps^23, polynomial in n of order 0
+      real(-4LL<<36),real(0x1f5feefdb1f0c4fLL),
+      // C4[20], coeff of eps^22, polynomial in n of order 1
+      real(1516LL<<40),real(-357LL<<40),reale(2729LL,0x9a383778d2ed9LL),
+      // C4[20], coeff of eps^21, polynomial in n of order 2
       real(-1992LL<<40),real(588LL<<40),real(-1316LL<<36),
       reale(2729LL,0x9a383778d2ed9LL),
-      // _C4x[292]
-      real(1516LL<<40),real(-357LL<<40),reale(2729LL,0x9a383778d2ed9LL),
-      // _C4x[293]
-      real(-4LL<<36),real(0x1f5feefdb1f0c4fLL),
-      // _C4x[294]
+      // C4[20], coeff of eps^20, polynomial in n of order 3
+      real(-4797LL<<40),real(4018LL<<40),real(-2303LL<<40),real(9870LL<<36),
+      reale(2729LL,0x9a383778d2ed9LL),
+      // C4[21], coeff of eps^23, polynomial in n of order 0
+      real(-5308LL<<36),reale(2862LL,0xc0f646aa6cd3bLL),
+      // C4[21], coeff of eps^22, polynomial in n of order 1
+      real(11LL<<44),real(-392LL<<36),real(0x3ba4052178e24469LL),
+      // C4[21], coeff of eps^21, polynomial in n of order 2
       real(3784LL<<40),real(-2156LL<<40),real(9212LL<<36),
       reale(2862LL,0xc0f646aa6cd3bLL),
-      // _C4x[295]
-      real(11LL<<44),real(-392LL<<36),real(0x3ba4052178e24469LL),
-      // _C4x[296]
-      real(-5308LL<<36),reale(2862LL,0xc0f646aa6cd3bLL),
-      // _C4x[297]
-      real(-184LL<<40),real(49LL<<40),real(0x1105ae1d9428c3f7LL),
-      // _C4x[298]
+      // C4[22], coeff of eps^23, polynomial in n of order 0
       real(-2LL<<40),real(0x5ac8f5f3162ebfdLL),
-      // _C4x[299]
+      // C4[22], coeff of eps^22, polynomial in n of order 1
+      real(-184LL<<40),real(49LL<<40),real(0x1105ae1d9428c3f7LL),
+      // C4[23], coeff of eps^23, polynomial in n of order 0
       real(2LL<<40),real(0xc5e28ed2c935abLL),
     };
 #elif GEOGRAPHICLIB_GEODESICEXACT_ORDER == 27
     static const real coeff[] = {
-      // _C4x[0]
-      real(0x104574695550b58LL),real(0x124efd1ef41bc1cLL),
-      real(0x14b36c04f5f7ca0LL),real(0x1787788b9792f24LL),
-      real(0x1ae5caaf52545e8LL),real(0x1ef111702bafd2cLL),
-      real(0x23d6fb7cfc3d530LL),real(0x29d483e08118c34LL),
-      real(0x313c47ee86cd878LL),real(0x3a800de5bbb223cLL),
-      real(0x463f6a859617dc0LL),real(0x555ed8909112544LL),
-      real(0x692d2b9362db308LL),real(0x83a245a495f5b4cLL),
-      real(0xa7cc0a01a036650LL),real(0xda93e49d10b2a54LL),
-      real(0x1243757f6f15c598LL),real(0x193422259e6ad85cLL),
-      real(0x24309a0ea1d47ee0LL),real(0x36b22ea791accb64LL),
-      real(0x588e3327aee70028LL),reale(2530LL,0x27feb6f2ec96cLL),
-      reale(5262LL,0xb996ed2c7b770LL),reale(14472LL,0x7e5f0c3a53874LL),
-      reale(86834LL,0xf63a495df52b8LL),reale(-303923LL,0xa233ff3725e7cLL),
-      reale(759805LL,0xea7e01f6213caLL),reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[1]
-      real(0x16b98c18c43f0LL),real(0x1be76827efc80LL),real(0x2291674649910LL),
-      real(0x2b3d2747a6820LL),real(0x36a8d2fdcc830LL),real(0x45e795ad137c0LL),
-      real(0x5a8eeaa036550LL),real(0x77007a4bcbf60LL),real(0x9ee5aa2960470LL),
-      real(0xd8045ac825300LL),real(0x12bb93df5b3990LL),
-      real(0x1a9b1c398546a0LL),real(0x26d2a92f5c98b0LL),
-      real(0x3a7858f998ee40LL),real(0x5b6e62f9c0b5d0LL),
-      real(0x959d5c24529de0LL),real(0x102f2d0b50524f0LL),
-      real(0x1e1472bfb1ba980LL),real(0x3d69bf9cb587a10LL),
-      real(0x8ee1210e8c36520LL),real(0x194d332fe8d44930LL),
-      real(0x6534ccbfa35124c0LL),reale(15788LL,0x2cc4c78572650LL),
-      reale(-115780LL,0xd079e2d63c60LL),reale(173669LL,0xec7492bbea570LL),
-      reale(-75981LL,0x688cffcdc979fLL),reale(379902LL,0xf53f00fb109e5LL),
-      // _C4x[2]
-      real(0xab22c89592500LL),real(0xd46ccddd414a0LL),real(0x10a4eb8f1ddb40LL),
-      real(0x15184ab619d7e0LL),real(0x1b0f2efb81a980LL),
-      real(0x232d3128e64f20LL),real(0x2e6a3ee43c47c0LL),
-      real(0x3e471bedb3b260LL),real(0x552919f15d6e00LL),
-      real(0x7700089e6e39a0LL),real(0xaa7eb4de50d440LL),
-      real(0xfb834e2f281ce0LL),real(0x1801af760623280LL),
-      real(0x263a4a7c48d9420LL),real(0x401905d594140c0LL),
-      real(0x72c2e250398d760LL),real(0xe012c263c05b700LL),
-      real(0x1edcfb1205061ea0LL),real(0x51c797f92b334d40LL),
-      reale(4810LL,0x460394707a1e0LL),reale(42101LL,0xccb76963dbb80LL),
-      reale(-269614LL,0x8d55c47b99920LL),reale(357865LL,0x4c16ffd0cb9c0LL),
-      reale(-115780LL,0xd079e2d63c60LL),reale(-21709LL,0x42716da882b52LL),
+      // C4[0], coeff of eps^26, polynomial in n of order 0
+      real(4654LL),real(0x1389ed75LL),
+      // C4[0], coeff of eps^25, polynomial in n of order 1
+      real(-331600LL),real(247203LL),real(0x1321b8829LL),
+      // C4[0], coeff of eps^24, polynomial in n of order 2
+      real(-0x723868100LL),real(0x38a8b9d80LL),real(0xdffa9ae8LL),
+      real(0xbd65c2e6062dLL),
+      // C4[0], coeff of eps^23, polynomial in n of order 3
+      real(-0x4a56872d110LL),real(0x30d818a0d20LL),real(-0x183639ebbb0LL),
+      real(0x1207973318dLL),real(0x472c0a3d3d1ee9LL),
+      // C4[0], coeff of eps^22, polynomial in n of order 4
+      real(-0x743607eea80LL),real(0x5536ade42a0LL),real(-0x37e9933c940LL),
+      real(0x1bb15f964e0LL),real(0x6d39be23aaLL),real(0x472c0a3d3d1ee9LL),
+      // C4[0], coeff of eps^21, polynomial in n of order 5
+      real(-0x1a80e82073690LL),real(0x1485d9e7af5c0LL),real(-0xf039fc9e8ff0LL),
+      real(0x9d5f26153ce0LL),real(-0x4ddf0f750f50LL),real(0x39e793daa6ebLL),
+      real(0xadde5e94360277dLL),
+      // C4[0], coeff of eps^20, polynomial in n of order 6
+      real(-0xe72f9d31220580LL),real(0xb817a196612bc0LL),
+      real(-0x8e0a680913c900LL),real(0x67a3067b290a40LL),
+      real(-0x43c43707776c80LL),real(0x217ef7b84400c0LL),
+      real(0x83b895ad56e94LL),reale(16517LL,0x8519000aea763LL),
+      // C4[0], coeff of eps^19, polynomial in n of order 7
+      real(-0x5be35cb0a188d670LL),real(0x49fb9f6e0e1fa420LL),
+      real(-0x3a970b1601b36050LL),real(0x2d0406e3051baec0LL),
+      real(-0x20bde41e80026c30LL),real(0x155cea808b65d160LL),
+      real(-0xa8bc4b2c853c610LL),real(0x7d3acd77deac86fLL),
       reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[3]
-      real(0x14ba9dec234d90LL),real(0x1a15f878f54920LL),
-      real(0x2134b5fb572db0LL),real(0x2acf89c87d75c0LL),
-      real(0x37fb978513cbd0LL),real(0x4a626dbdd79a60LL),
-      real(0x64a2becb8c9bf0LL),real(0x8afd5ca732eb00LL),
-      real(0xc4970cf56e1210LL),real(0x11deb4357fc9ba0LL),
-      real(0x1add3c5ff77a230LL),real(0x2a08c939311e040LL),
-      real(0x451c5af5bb5c050LL),real(0x7909ad73ef1ece0LL),
-      real(0xe685850971be070LL),real(0x1edeb97922aff580LL),
-      real(0x4f3a8e20463e7690LL),reale(4494LL,0x6f4eb7a652e20LL),
-      reale(37733LL,0xf376431ecf6b0LL),reale(-229274LL,0x2c20251e2cac0LL),
-      reale(271637LL,0x92a93446bd4d0LL),reale(-5668LL,0x733614463ff60LL),
-      reale(-121043LL,0x5370b100e84f0LL),reale(39799LL,0x5b8561a065b3fLL),
+      // C4[0], coeff of eps^18, polynomial in n of order 8
+      reale(-2220LL,0x6aa37b2cb6f00LL),real(0x6f523368eabed3a0LL),
+      real(-0x58df9f4050ea48c0LL),real(0x45eb9b162449f0e0LL),
+      real(-0x35736f4da3b86880LL),real(0x26bb8b2d01772220LL),
+      real(-0x19350a3e2b857840LL),real(0xc6cd21a34a65f60LL),
+      real(0x30a9f24aaae2862LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
+      // C4[0], coeff of eps^17, polynomial in n of order 9
+      reale(-3521LL,0x793be71994bd0LL),reale(2768LL,0x78979286ec480LL),
+      reale(-2192LL,0x543644b2a6130LL),real(0x6c38e96882e6a560LL),
+      real(-0x54765a5d7300bb70LL),real(0x402d11108cfc5240LL),
+      real(-0x2e4c264c23518e10LL),real(0x1e09e0cfb5ca8720LL),
+      real(-0xec7bce3f9449ab0LL),real(0xaf0b9139605a58dLL),
       reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[4]
-      real(0x25018b34093680LL),real(0x2f66db340747c0LL),
-      real(0x3d8eaf55c4d300LL),real(0x512efdf6054640LL),
-      real(0x6cf4c335af0f80LL),real(0x952f237cecdcc0LL),
-      real(0xd10b7e4cd0dc00LL),real(0x12cf85d69a3fb40LL),
-      real(0x1bf83185acb2880LL),real(0x2b3ea99410c91c0LL),
-      real(0x462f30f09fee500LL),real(0x7931c8e1f8c9040LL),
-      real(0xe34caff0bb50180LL),real(0x1def0c2db115e6c0LL),
-      real(0x4b7080401d466e00LL),reale(4194LL,0xbf682a6ae8540LL),
-      reale(34423LL,0x2600aa7441a80LL),reale(-202944LL,0x1726442785bc0LL),
-      reale(225378LL,0x7bd3e279ef700LL),reale(18574LL,0x52c9633395a40LL),
-      reale(-113351LL,0x39957cff380LL),reale(27528LL,0x198b9d86370c0LL),
-      reale(3947LL,0xb3131e15c994LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[5]
-      real(0x40c53da188eed0LL),real(0x54ed187b34c440LL),
-      real(0x7146df082c9bb0LL),real(0x9a154e844696a0LL),
-      real(0xd666e59b550690LL),real(0x13262a46ef0dd00LL),
-      real(0x1c3f2cd359b1b70LL),real(0x2b4dcc62e91c360LL),
-      real(0x45a57497f9cc650LL),real(0x771c08f5a9775c0LL),
-      real(0xdd1a4961392f330LL),real(0x1ccccddd60de2020LL),
-      real(0x47bbc762b5878e10LL),reale(3937LL,0xc2066e54dee80LL),
-      reale(31838LL,0x13ce9b56b82f0LL),reale(-183991LL,0xf715b65f90ce0LL),
-      reale(196055LL,0x20a74184cbdd0LL),reale(26856LL,0x50de39af9a740LL),
-      reale(-103682LL,0x6d7b35dec2ab0LL),reale(31195LL,0x5686bd94fe9a0LL),
-      reale(-11740LL,0x133929ff3b590LL),reale(7362LL,0xc12f75a94f319LL),
+      // C4[0], coeff of eps^16, polynomial in n of order 10
+      reale(-6137LL,0xadddc51340600LL),reale(4597LL,0xf56d1171d1b00LL),
+      reale(-3532LL,0x1efef8069b800LL),reale(2747LL,0xc7a53bf3c9500LL),
+      reale(-2143LL,0x63da405706a00LL),real(0x677abbdfa4dcef00LL),
+      real(-0x4e0ad45efdfc2400LL),real(0x37ff2b5bd74de900LL),
+      real(-0x2432b6ddc0003200LL),real(0x11c5dbb8178f4300LL),
+      real(0x4536f43fdb6a550LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
+      // C4[0], coeff of eps^15, polynomial in n of order 11
+      reale(-13103LL,0x6909fee14590LL),reale(8724LL,0xbd02d5fc04060LL),
+      reale(-6235LL,0x97202aa8d6e30LL),reale(4636LL,0xd96d16348cb80LL),
+      reale(-3526LL,0xb8daae79484d0LL),reale(2702LL,0xc781c601a46a0LL),
+      reale(-2063LL,0x846e4aa048d70LL),real(0x60521f1f549575c0LL),
+      real(-0x44a70474ce1373f0LL),real(0x2c2e0084319d1ce0LL),
+      real(-0x15a2a473a1b17b50LL),real(0xff41fd49dab95d3LL),
       reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[6]
-      real(0x73457ae9fefc80LL),real(0x9bfefa36a68d60LL),
-      real(0xd7e57b2fb0d740LL),real(0x132c60dd72bf720LL),
-      real(0x1c1d29144004a00LL),real(0x2ad464b0fcdcce0LL),
-      real(0x446dc104a967cc0LL),real(0x7436e717eb8b6a0LL),
-      real(0xd626d1c40bc9780LL),real(0x1badddc640275c60LL),
-      real(0x445f879c8f67c240LL),reale(3719LL,0x5820c25fe6620LL),
-      reale(29754LL,0xa45b204c52500LL),reale(-169505LL,0x1dd84d2a87be0LL),
-      reale(175522LL,0xa8a2f18c5e7c0LL),reale(30060LL,0x7f96216b245a0LL),
-      reale(-95557LL,0x358f8202b3280LL),reale(31150LL,0x37da9e0a66b60LL),
-      reale(-14735LL,0xdfc58b1922d40LL),reale(6239LL,0x114e25ea99520LL),
-      real(0x4f113ff5b79764b6LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[7]
-      real(0xd73a52d8bd1790LL),real(0x13078939da8f2e0LL),
-      real(0x1bc62bcb4923530LL),real(0x2a1bb9d3adccf00LL),
-      real(0x42f03cdd160e0d0LL),real(0x711670ab4ed8b20LL),
-      real(0xcf3f2963eb3be70LL),real(0x1aa1c278c7668b40LL),
-      real(0x416120b2cbe67210LL),reale(3532LL,0x3a6649f1d3360LL),
-      reale(28031LL,0x35f5ca2c79fb0LL),reale(-157971LL,0x2ee4d7f0ae780LL),
-      reale(160182LL,0x9c904f3daeb50LL),reale(31228LL,0xe702b02a70ba0LL),
-      reale(-88908LL,0xcbba43faf8f0LL),reale(30210LL,0xe03f62b8103c0LL),
-      reale(-15534LL,0x85f09531b6c90LL),reale(8379LL,0xc089c57da33e0LL),
-      reale(-3747LL,0xcd57a8beaea30LL),reale(2585LL,0x396e1f38f6dbbLL),
+      // C4[0], coeff of eps^14, polynomial in n of order 12
+      reale(-63392LL,0x8f5b768236180LL),reale(23343LL,0xc5a3f9fbbcce0LL),
+      reale(-13454LL,0xd872db320c540LL),reale(8911LL,0x777a0315423a0LL),
+      reale(-6324LL,0xd8eb075800100LL),reale(4656LL,0xe8c5e07109660LL),
+      reale(-3492LL,0xf941a026f1cc0LL),reale(2621LL,0xb84b17c4ad20LL),
+      real(-0x78f908534453df80LL),real(0x55814182d129efe0LL),
+      real(-0x36b7bc0c02deebc0LL),real(0x1ab5b755becbe6a0LL),
+      real(0x672760e43e7e5beLL),reale(0x1163fcLL,0xdfbd02f131dafLL),
+      // C4[0], coeff of eps^13, polynomial in n of order 13
+      reale(112706LL,0xdfd869d806ed0LL),reale(29093LL,0xf8d3fc140cbc0LL),
+      reale(-65761LL,0x84ad3ebfe66b0LL),reale(24105LL,0xa651ba0482d20LL),
+      reale(-13823LL,0x2bd795d3b3c90LL),reale(9095LL,0xad3608e2bd280LL),
+      reale(-6395LL,0xdbeb183113c70LL),reale(4646LL,0x4bdec656d47e0LL),
+      reale(-3414LL,0x89f66294fb250LL),reale(2482LL,0x54f2fd0561940LL),
+      real(-0x6c7d891fb0df15d0LL),real(0x44efe2727b65d2a0LL),
+      real(-0x2183dc0de2efcff0LL),real(0x189262ba581c6bf1LL),
       reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[8]
-      real(0x1b54ebcbbde1f00LL),real(0x2947b9527677980LL),
-      real(0x415d003e7b1b800LL),real(0x6df9566e0623680LL),
-      real(0xc8ad7ddfed65100LL),real(0x19abdc3c4555e380LL),
-      real(0x3eb74cbd79d9ca00LL),reale(3370LL,0x20d152b7a6080LL),
-      reale(26575LL,0x8086d641a0300LL),reale(-148507LL,0xf151c949f8d80LL),
-      reale(148190LL,0x3f5dc7314dc00LL),reale(31472LL,0x41aaeb33d4a80LL),
-      reale(-83407LL,0xcfc991b83500LL),reale(29065LL,0x630b32b837780LL),
-      reale(-15586LL,0xd89b5e1b1ee00LL),reale(9192LL,0xabf11a369f480LL),
-      reale(-5287LL,0xc9ec3b4bfe700LL),reale(2436LL,0x784ea73c0a180LL),
-      real(0x2209232c3cc4cca8LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[9]
-      real(0x3fcae6c51cf8fd0LL),real(0x6afa1c71c2ac100LL),
-      real(0xc2892977602fa30LL),real(0x18cb840e0ff332e0LL),
-      real(0x3c56602ddecd9290LL),reale(3228LL,0x26f051b5c20c0LL),
-      reale(25324LL,0xf8a24438674f0LL),reale(-140559LL,0xa4d28ee2ee6a0LL),
-      reale(138496LL,0xa2474d581bd50LL),reale(31265LL,0x7dd7c9350e080LL),
-      reale(-78782LL,0xbf80f036e87b0LL),reale(27920LL,0xd85d0c9896a60LL),
-      reale(-15348LL,0x42ae88954f010LL),reale(9468LL,0xaa167d507e040LL),
-      reale(-5982LL,0x32ead41741270LL),reale(3570LL,0xf062f37e99e20LL),
-      real(-0x68dc53d94dbff530LL),real(0x4ae92c9a7a683bf5LL),
+      // C4[0], coeff of eps^12, polynomial in n of order 14
+      reale(22421LL,0x80a7495217980LL),reale(-122682LL,0xda49329f8b540LL),
+      reale(117806LL,0x7498b0aecaf00LL),reale(29700LL,0x9de1e174ab0c0LL),
+      reale(-68414LL,0xbd79cb11f0480LL),reale(24937LL,0xf2aac2170b440LL),
+      reale(-14210LL,0xb0aaeb2f34a00LL),reale(9268LL,0x742c2dd2c8fc0LL),
+      reale(-6434LL,0xdd790f94c4f80LL),reale(4585LL,0x3348b70941340LL),
+      reale(-3267LL,0xc4259dd2ce500LL),reale(2252LL,0x1340649a90ec0LL),
+      real(-0x589f5d02f1d02580LL),real(0x2adce3e44e715240LL),
+      real(0xa36591ccc5a22bcLL),reale(0x1163fcLL,0xdfbd02f131dafLL),
+      // C4[0], coeff of eps^11, polynomial in n of order 15
+      real(0x3845a63e874b7f90LL),reale(2990LL,0x790a9d44cfaa0LL),
+      reale(23275LL,0xc0709755ecab0LL),reale(-127864LL,0xae9467a7b3640LL),
+      reale(123656LL,0x74905ab09b3d0LL),reale(30291LL,0xc8698ff57f9e0LL),
+      reale(-71411LL,0xd141077f90ef0LL),reale(25848LL,0x521bca14dd980LL),
+      reale(-14606LL,0x539211082b010LL),reale(9413LL,0x816443bfd6920LL),
+      reale(-6416LL,0xcea11270f6b30LL),reale(4438LL,0xfed32587f3cc0LL),
+      reale(-3003LL,0x5445fd3251450LL),real(0x74ba3cd78aa5e860LL),
+      real(-0x3812b2b32b2f8090LL),real(0x28bab2d4ac11f317LL),
       reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[10]
+      // C4[0], coeff of eps^10, polynomial in n of order 16
       real(0xbcd4fd6df5b2600LL),real(0x17fed2a1d906c020LL),
       real(0x3a338f7e05a82540LL),reale(3102LL,0x8ee9d52fa7060LL),
       reale(24235LL,0xac0c2ca98fc80LL),reale(-133762LL,0x247e0b2cd04a0LL),
@@ -1849,214 +1812,228 @@ namespace GeographicLib {
       reale(-6295LL,0x71c3db0aea980LL),reale(4143LL,0x97d5a30101da0LL),
       reale(-2535LL,0xa955f7e7ba0c0LL),real(0x4b644b6e4da18de0LL),
       real(0x11925bb6ba64765aLL),reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[11]
-      real(0x3845a63e874b7f90LL),reale(2990LL,0x790a9d44cfaa0LL),
-      reale(23275LL,0xc0709755ecab0LL),reale(-127864LL,0xae9467a7b3640LL),
-      reale(123656LL,0x74905ab09b3d0LL),reale(30291LL,0xc8698ff57f9e0LL),
-      reale(-71411LL,0xd141077f90ef0LL),reale(25848LL,0x521bca14dd980LL),
-      reale(-14606LL,0x539211082b010LL),reale(9413LL,0x816443bfd6920LL),
-      reale(-6416LL,0xcea11270f6b30LL),reale(4438LL,0xfed32587f3cc0LL),
-      reale(-3003LL,0x5445fd3251450LL),real(0x74ba3cd78aa5e860LL),
-      real(-0x3812b2b32b2f8090LL),real(0x28bab2d4ac11f317LL),
+      // C4[0], coeff of eps^9, polynomial in n of order 17
+      real(0x3fcae6c51cf8fd0LL),real(0x6afa1c71c2ac100LL),
+      real(0xc2892977602fa30LL),real(0x18cb840e0ff332e0LL),
+      real(0x3c56602ddecd9290LL),reale(3228LL,0x26f051b5c20c0LL),
+      reale(25324LL,0xf8a24438674f0LL),reale(-140559LL,0xa4d28ee2ee6a0LL),
+      reale(138496LL,0xa2474d581bd50LL),reale(31265LL,0x7dd7c9350e080LL),
+      reale(-78782LL,0xbf80f036e87b0LL),reale(27920LL,0xd85d0c9896a60LL),
+      reale(-15348LL,0x42ae88954f010LL),reale(9468LL,0xaa167d507e040LL),
+      reale(-5982LL,0x32ead41741270LL),reale(3570LL,0xf062f37e99e20LL),
+      real(-0x68dc53d94dbff530LL),real(0x4ae92c9a7a683bf5LL),
       reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[12]
-      reale(22421LL,0x80a7495217980LL),reale(-122682LL,0xda49329f8b540LL),
-      reale(117806LL,0x7498b0aecaf00LL),reale(29700LL,0x9de1e174ab0c0LL),
-      reale(-68414LL,0xbd79cb11f0480LL),reale(24937LL,0xf2aac2170b440LL),
-      reale(-14210LL,0xb0aaeb2f34a00LL),reale(9268LL,0x742c2dd2c8fc0LL),
-      reale(-6434LL,0xdd790f94c4f80LL),reale(4585LL,0x3348b70941340LL),
-      reale(-3267LL,0xc4259dd2ce500LL),reale(2252LL,0x1340649a90ec0LL),
-      real(-0x589f5d02f1d02580LL),real(0x2adce3e44e715240LL),
-      real(0xa36591ccc5a22bcLL),reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[13]
-      reale(112706LL,0xdfd869d806ed0LL),reale(29093LL,0xf8d3fc140cbc0LL),
-      reale(-65761LL,0x84ad3ebfe66b0LL),reale(24105LL,0xa651ba0482d20LL),
-      reale(-13823LL,0x2bd795d3b3c90LL),reale(9095LL,0xad3608e2bd280LL),
-      reale(-6395LL,0xdbeb183113c70LL),reale(4646LL,0x4bdec656d47e0LL),
-      reale(-3414LL,0x89f66294fb250LL),reale(2482LL,0x54f2fd0561940LL),
-      real(-0x6c7d891fb0df15d0LL),real(0x44efe2727b65d2a0LL),
-      real(-0x2183dc0de2efcff0LL),real(0x189262ba581c6bf1LL),
+      // C4[0], coeff of eps^8, polynomial in n of order 18
+      real(0x1b54ebcbbde1f00LL),real(0x2947b9527677980LL),
+      real(0x415d003e7b1b800LL),real(0x6df9566e0623680LL),
+      real(0xc8ad7ddfed65100LL),real(0x19abdc3c4555e380LL),
+      real(0x3eb74cbd79d9ca00LL),reale(3370LL,0x20d152b7a6080LL),
+      reale(26575LL,0x8086d641a0300LL),reale(-148507LL,0xf151c949f8d80LL),
+      reale(148190LL,0x3f5dc7314dc00LL),reale(31472LL,0x41aaeb33d4a80LL),
+      reale(-83407LL,0xcfc991b83500LL),reale(29065LL,0x630b32b837780LL),
+      reale(-15586LL,0xd89b5e1b1ee00LL),reale(9192LL,0xabf11a369f480LL),
+      reale(-5287LL,0xc9ec3b4bfe700LL),reale(2436LL,0x784ea73c0a180LL),
+      real(0x2209232c3cc4cca8LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
+      // C4[0], coeff of eps^7, polynomial in n of order 19
+      real(0xd73a52d8bd1790LL),real(0x13078939da8f2e0LL),
+      real(0x1bc62bcb4923530LL),real(0x2a1bb9d3adccf00LL),
+      real(0x42f03cdd160e0d0LL),real(0x711670ab4ed8b20LL),
+      real(0xcf3f2963eb3be70LL),real(0x1aa1c278c7668b40LL),
+      real(0x416120b2cbe67210LL),reale(3532LL,0x3a6649f1d3360LL),
+      reale(28031LL,0x35f5ca2c79fb0LL),reale(-157971LL,0x2ee4d7f0ae780LL),
+      reale(160182LL,0x9c904f3daeb50LL),reale(31228LL,0xe702b02a70ba0LL),
+      reale(-88908LL,0xcbba43faf8f0LL),reale(30210LL,0xe03f62b8103c0LL),
+      reale(-15534LL,0x85f09531b6c90LL),reale(8379LL,0xc089c57da33e0LL),
+      reale(-3747LL,0xcd57a8beaea30LL),reale(2585LL,0x396e1f38f6dbbLL),
       reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[14]
-      reale(-63392LL,0x8f5b768236180LL),reale(23343LL,0xc5a3f9fbbcce0LL),
-      reale(-13454LL,0xd872db320c540LL),reale(8911LL,0x777a0315423a0LL),
-      reale(-6324LL,0xd8eb075800100LL),reale(4656LL,0xe8c5e07109660LL),
-      reale(-3492LL,0xf941a026f1cc0LL),reale(2621LL,0xb84b17c4ad20LL),
-      real(-0x78f908534453df80LL),real(0x55814182d129efe0LL),
-      real(-0x36b7bc0c02deebc0LL),real(0x1ab5b755becbe6a0LL),
-      real(0x672760e43e7e5beLL),reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[15]
-      reale(-13103LL,0x6909fee14590LL),reale(8724LL,0xbd02d5fc04060LL),
-      reale(-6235LL,0x97202aa8d6e30LL),reale(4636LL,0xd96d16348cb80LL),
-      reale(-3526LL,0xb8daae79484d0LL),reale(2702LL,0xc781c601a46a0LL),
-      reale(-2063LL,0x846e4aa048d70LL),real(0x60521f1f549575c0LL),
-      real(-0x44a70474ce1373f0LL),real(0x2c2e0084319d1ce0LL),
-      real(-0x15a2a473a1b17b50LL),real(0xff41fd49dab95d3LL),
+      // C4[0], coeff of eps^6, polynomial in n of order 20
+      real(0x73457ae9fefc80LL),real(0x9bfefa36a68d60LL),
+      real(0xd7e57b2fb0d740LL),real(0x132c60dd72bf720LL),
+      real(0x1c1d29144004a00LL),real(0x2ad464b0fcdcce0LL),
+      real(0x446dc104a967cc0LL),real(0x7436e717eb8b6a0LL),
+      real(0xd626d1c40bc9780LL),real(0x1badddc640275c60LL),
+      real(0x445f879c8f67c240LL),reale(3719LL,0x5820c25fe6620LL),
+      reale(29754LL,0xa45b204c52500LL),reale(-169505LL,0x1dd84d2a87be0LL),
+      reale(175522LL,0xa8a2f18c5e7c0LL),reale(30060LL,0x7f96216b245a0LL),
+      reale(-95557LL,0x358f8202b3280LL),reale(31150LL,0x37da9e0a66b60LL),
+      reale(-14735LL,0xdfc58b1922d40LL),reale(6239LL,0x114e25ea99520LL),
+      real(0x4f113ff5b79764b6LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
+      // C4[0], coeff of eps^5, polynomial in n of order 21
+      real(0x40c53da188eed0LL),real(0x54ed187b34c440LL),
+      real(0x7146df082c9bb0LL),real(0x9a154e844696a0LL),
+      real(0xd666e59b550690LL),real(0x13262a46ef0dd00LL),
+      real(0x1c3f2cd359b1b70LL),real(0x2b4dcc62e91c360LL),
+      real(0x45a57497f9cc650LL),real(0x771c08f5a9775c0LL),
+      real(0xdd1a4961392f330LL),real(0x1ccccddd60de2020LL),
+      real(0x47bbc762b5878e10LL),reale(3937LL,0xc2066e54dee80LL),
+      reale(31838LL,0x13ce9b56b82f0LL),reale(-183991LL,0xf715b65f90ce0LL),
+      reale(196055LL,0x20a74184cbdd0LL),reale(26856LL,0x50de39af9a740LL),
+      reale(-103682LL,0x6d7b35dec2ab0LL),reale(31195LL,0x5686bd94fe9a0LL),
+      reale(-11740LL,0x133929ff3b590LL),reale(7362LL,0xc12f75a94f319LL),
       reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[16]
-      reale(-6137LL,0xadddc51340600LL),reale(4597LL,0xf56d1171d1b00LL),
-      reale(-3532LL,0x1efef8069b800LL),reale(2747LL,0xc7a53bf3c9500LL),
-      reale(-2143LL,0x63da405706a00LL),real(0x677abbdfa4dcef00LL),
-      real(-0x4e0ad45efdfc2400LL),real(0x37ff2b5bd74de900LL),
-      real(-0x2432b6ddc0003200LL),real(0x11c5dbb8178f4300LL),
-      real(0x4536f43fdb6a550LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[17]
-      reale(-3521LL,0x793be71994bd0LL),reale(2768LL,0x78979286ec480LL),
-      reale(-2192LL,0x543644b2a6130LL),real(0x6c38e96882e6a560LL),
-      real(-0x54765a5d7300bb70LL),real(0x402d11108cfc5240LL),
-      real(-0x2e4c264c23518e10LL),real(0x1e09e0cfb5ca8720LL),
-      real(-0xec7bce3f9449ab0LL),real(0xaf0b9139605a58dLL),
+      // C4[0], coeff of eps^4, polynomial in n of order 22
+      real(0x25018b34093680LL),real(0x2f66db340747c0LL),
+      real(0x3d8eaf55c4d300LL),real(0x512efdf6054640LL),
+      real(0x6cf4c335af0f80LL),real(0x952f237cecdcc0LL),
+      real(0xd10b7e4cd0dc00LL),real(0x12cf85d69a3fb40LL),
+      real(0x1bf83185acb2880LL),real(0x2b3ea99410c91c0LL),
+      real(0x462f30f09fee500LL),real(0x7931c8e1f8c9040LL),
+      real(0xe34caff0bb50180LL),real(0x1def0c2db115e6c0LL),
+      real(0x4b7080401d466e00LL),reale(4194LL,0xbf682a6ae8540LL),
+      reale(34423LL,0x2600aa7441a80LL),reale(-202944LL,0x1726442785bc0LL),
+      reale(225378LL,0x7bd3e279ef700LL),reale(18574LL,0x52c9633395a40LL),
+      reale(-113351LL,0x39957cff380LL),reale(27528LL,0x198b9d86370c0LL),
+      reale(3947LL,0xb3131e15c994LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
+      // C4[0], coeff of eps^3, polynomial in n of order 23
+      real(0x14ba9dec234d90LL),real(0x1a15f878f54920LL),
+      real(0x2134b5fb572db0LL),real(0x2acf89c87d75c0LL),
+      real(0x37fb978513cbd0LL),real(0x4a626dbdd79a60LL),
+      real(0x64a2becb8c9bf0LL),real(0x8afd5ca732eb00LL),
+      real(0xc4970cf56e1210LL),real(0x11deb4357fc9ba0LL),
+      real(0x1add3c5ff77a230LL),real(0x2a08c939311e040LL),
+      real(0x451c5af5bb5c050LL),real(0x7909ad73ef1ece0LL),
+      real(0xe685850971be070LL),real(0x1edeb97922aff580LL),
+      real(0x4f3a8e20463e7690LL),reale(4494LL,0x6f4eb7a652e20LL),
+      reale(37733LL,0xf376431ecf6b0LL),reale(-229274LL,0x2c20251e2cac0LL),
+      reale(271637LL,0x92a93446bd4d0LL),reale(-5668LL,0x733614463ff60LL),
+      reale(-121043LL,0x5370b100e84f0LL),reale(39799LL,0x5b8561a065b3fLL),
       reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[18]
-      reale(-2220LL,0x6aa37b2cb6f00LL),real(0x6f523368eabed3a0LL),
-      real(-0x58df9f4050ea48c0LL),real(0x45eb9b162449f0e0LL),
-      real(-0x35736f4da3b86880LL),real(0x26bb8b2d01772220LL),
-      real(-0x19350a3e2b857840LL),real(0xc6cd21a34a65f60LL),
-      real(0x30a9f24aaae2862LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[19]
-      real(-0x5be35cb0a188d670LL),real(0x49fb9f6e0e1fa420LL),
-      real(-0x3a970b1601b36050LL),real(0x2d0406e3051baec0LL),
-      real(-0x20bde41e80026c30LL),real(0x155cea808b65d160LL),
-      real(-0xa8bc4b2c853c610LL),real(0x7d3acd77deac86fLL),
+      // C4[0], coeff of eps^2, polynomial in n of order 24
+      real(0xab22c89592500LL),real(0xd46ccddd414a0LL),real(0x10a4eb8f1ddb40LL),
+      real(0x15184ab619d7e0LL),real(0x1b0f2efb81a980LL),
+      real(0x232d3128e64f20LL),real(0x2e6a3ee43c47c0LL),
+      real(0x3e471bedb3b260LL),real(0x552919f15d6e00LL),
+      real(0x7700089e6e39a0LL),real(0xaa7eb4de50d440LL),
+      real(0xfb834e2f281ce0LL),real(0x1801af760623280LL),
+      real(0x263a4a7c48d9420LL),real(0x401905d594140c0LL),
+      real(0x72c2e250398d760LL),real(0xe012c263c05b700LL),
+      real(0x1edcfb1205061ea0LL),real(0x51c797f92b334d40LL),
+      reale(4810LL,0x460394707a1e0LL),reale(42101LL,0xccb76963dbb80LL),
+      reale(-269614LL,0x8d55c47b99920LL),reale(357865LL,0x4c16ffd0cb9c0LL),
+      reale(-115780LL,0xd079e2d63c60LL),reale(-21709LL,0x42716da882b52LL),
       reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[20]
-      real(-0xe72f9d31220580LL),real(0xb817a196612bc0LL),
-      real(-0x8e0a680913c900LL),real(0x67a3067b290a40LL),
-      real(-0x43c43707776c80LL),real(0x217ef7b84400c0LL),
-      real(0x83b895ad56e94LL),reale(16517LL,0x8519000aea763LL),
-      // _C4x[21]
-      real(-0x1a80e82073690LL),real(0x1485d9e7af5c0LL),real(-0xf039fc9e8ff0LL),
-      real(0x9d5f26153ce0LL),real(-0x4ddf0f750f50LL),real(0x39e793daa6ebLL),
-      real(0xadde5e94360277dLL),
-      // _C4x[22]
-      real(-0x743607eea80LL),real(0x5536ade42a0LL),real(-0x37e9933c940LL),
-      real(0x1bb15f964e0LL),real(0x6d39be23aaLL),real(0x472c0a3d3d1ee9LL),
-      // _C4x[23]
-      real(-0x4a56872d110LL),real(0x30d818a0d20LL),real(-0x183639ebbb0LL),
-      real(0x1207973318dLL),real(0x472c0a3d3d1ee9LL),
-      // _C4x[24]
-      real(-0x723868100LL),real(0x38a8b9d80LL),real(0xdffa9ae8LL),
-      real(0xbd65c2e6062dLL),
-      // _C4x[25]
-      real(-331600LL),real(247203LL),real(0x1321b8829LL),
-      // _C4x[26]
+      // C4[0], coeff of eps^1, polynomial in n of order 25
+      real(0x16b98c18c43f0LL),real(0x1be76827efc80LL),real(0x2291674649910LL),
+      real(0x2b3d2747a6820LL),real(0x36a8d2fdcc830LL),real(0x45e795ad137c0LL),
+      real(0x5a8eeaa036550LL),real(0x77007a4bcbf60LL),real(0x9ee5aa2960470LL),
+      real(0xd8045ac825300LL),real(0x12bb93df5b3990LL),
+      real(0x1a9b1c398546a0LL),real(0x26d2a92f5c98b0LL),
+      real(0x3a7858f998ee40LL),real(0x5b6e62f9c0b5d0LL),
+      real(0x959d5c24529de0LL),real(0x102f2d0b50524f0LL),
+      real(0x1e1472bfb1ba980LL),real(0x3d69bf9cb587a10LL),
+      real(0x8ee1210e8c36520LL),real(0x194d332fe8d44930LL),
+      real(0x6534ccbfa35124c0LL),reale(15788LL,0x2cc4c78572650LL),
+      reale(-115780LL,0xd079e2d63c60LL),reale(173669LL,0xec7492bbea570LL),
+      reale(-75981LL,0x688cffcdc979fLL),reale(379902LL,0xf53f00fb109e5LL),
+      // C4[0], coeff of eps^0, polynomial in n of order 26
+      real(0x104574695550b58LL),real(0x124efd1ef41bc1cLL),
+      real(0x14b36c04f5f7ca0LL),real(0x1787788b9792f24LL),
+      real(0x1ae5caaf52545e8LL),real(0x1ef111702bafd2cLL),
+      real(0x23d6fb7cfc3d530LL),real(0x29d483e08118c34LL),
+      real(0x313c47ee86cd878LL),real(0x3a800de5bbb223cLL),
+      real(0x463f6a859617dc0LL),real(0x555ed8909112544LL),
+      real(0x692d2b9362db308LL),real(0x83a245a495f5b4cLL),
+      real(0xa7cc0a01a036650LL),real(0xda93e49d10b2a54LL),
+      real(0x1243757f6f15c598LL),real(0x193422259e6ad85cLL),
+      real(0x24309a0ea1d47ee0LL),real(0x36b22ea791accb64LL),
+      real(0x588e3327aee70028LL),reale(2530LL,0x27feb6f2ec96cLL),
+      reale(5262LL,0xb996ed2c7b770LL),reale(14472LL,0x7e5f0c3a53874LL),
+      reale(86834LL,0xf63a495df52b8LL),reale(-303923LL,0xa233ff3725e7cLL),
+      reale(759805LL,0xea7e01f6213caLL),reale(0x1163fcLL,0xdfbd02f131dafLL),
+      // C4[1], coeff of eps^26, polynomial in n of order 0
       real(4654LL),real(0x1389ed75LL),
-      // _C4x[27]
-      real(-0x16b98c18c43f0LL),real(-0x1be76827efc80LL),
-      real(-0x2291674649910LL),real(-0x2b3d2747a6820LL),
-      real(-0x36a8d2fdcc830LL),real(-0x45e795ad137c0LL),
-      real(-0x5a8eeaa036550LL),real(-0x77007a4bcbf60LL),
-      real(-0x9ee5aa2960470LL),real(-0xd8045ac825300LL),
-      real(-0x12bb93df5b3990LL),real(-0x1a9b1c398546a0LL),
-      real(-0x26d2a92f5c98b0LL),real(-0x3a7858f998ee40LL),
-      real(-0x5b6e62f9c0b5d0LL),real(-0x959d5c24529de0LL),
-      real(-0x102f2d0b50524f0LL),real(-0x1e1472bfb1ba980LL),
-      real(-0x3d69bf9cb587a10LL),real(-0x8ee1210e8c36520LL),
-      real(-0x194d332fe8d44930LL),real(-0x6534ccbfa35124c0LL),
-      reale(-15789LL,0xd33b387a8d9b0LL),reale(115779LL,0xf2f861d29c3a0LL),
-      reale(-173670LL,0x138b6d4415a90LL),reale(75980LL,0x9773003236861LL),
+      // C4[1], coeff of eps^25, polynomial in n of order 1
+      real(0x1516d30LL),real(0x543e3bLL),real(0xf784431927LL),
+      // C4[1], coeff of eps^24, polynomial in n of order 2
+      real(0x6e1bbfa00LL),real(-0x3b5106500LL),real(0x29fefd0b8LL),
+      real(0x2383148b21287LL),
+      // C4[1], coeff of eps^23, polynomial in n of order 3
+      real(0x165661ad6b70LL),real(-0x1009b31cabe0LL),real(0x7444963bdd0LL),
+      real(0x1d0511c64f5LL),real(0x42b94999694cfa7LL),
+      // C4[1], coeff of eps^22, polynomial in n of order 4
+      real(0xa226b42100LL),real(-0x82b9c957c0LL),real(0x4dd9f4b480LL),
+      real(-0x2a87741140LL),real(0x1dc9ee09baLL),real(0x13691a10b39411LL),
+      // C4[1], coeff of eps^21, polynomial in n of order 5
+      real(0x2b50c847e5bec70LL),real(-0x25172ad2adc8640LL),
+      real(0x187490c86e06510LL),real(-0x11cf5b364679120LL),
+      real(0x7e9f37da26e7b0LL),real(0x1f979b01bfd5e3LL),
+      reale(227941LL,0xc6590096a3923LL),
+      // C4[1], coeff of eps^20, polynomial in n of order 6
+      real(0x84a641c077c100LL),real(-0x75601a6b667780LL),
+      real(0x51157a29d94600LL),real(-0x4247925ad10480LL),
+      real(0x269068d8c2ab00LL),real(-0x15748d5a64a980LL),
+      real(0xed190d6b360a4LL),reale(29731LL,0x892d0013a607fLL),
+      // C4[1], coeff of eps^19, polynomial in n of order 7
+      real(0x57e3d5e3e8a64d50LL),real(-0x4ee151925712ac60LL),
+      real(0x379f60f9d8160ef0LL),real(-0x3036f6417460ec40LL),
+      real(0x1eece80c1c746690LL),real(-0x16f21d696f523420LL),
+      real(0x9ef6bfafd871830LL),real(0x27a3f6720674fabLL),
       reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[28]
-      real(-0x39a9fc22d9600LL),real(-0x47a4ffa857140LL),
-      real(-0x59ea353148580LL),real(-0x721982b3023c0LL),
-      real(-0x9291e22ef9d00LL),real(-0xbeda9ea6fc240LL),
-      real(-0xfc517cd616480LL),real(-0x1535335443d4c0LL),
-      real(-0x1d14474c2c6400LL),real(-0x28c4706fdbe340LL),
-      real(-0x3aa43e35a32380LL),real(-0x56eefde83775c0LL),
-      real(-0x859522b6982b00LL),real(-0xd663f0e8861440LL),
-      real(-0x16b2ad2884e0280LL),real(-0x2932441ccc746c0LL),
-      real(-0x51f4ee722e73200LL),real(-0xb97e18f372a9540LL),
-      real(-0x1ff5b9ebacd64180LL),real(-0x7d04fcecbaaf87c0LL),
-      reale(-19432LL,0x6670458324700LL),reale(150594LL,0xe619e547a59c0LL),
-      reale(-294713LL,0x66fc1e44fdf80LL),reale(231559LL,0xe5f0c3a538740LL),
-      reale(-65127LL,0xc75448f9881f6LL),reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[29]
-      real(-0x7207334f38cb0LL),real(-0x8fe6a0f540760LL),
-      real(-0xb7c4f4df6c510LL),real(-0xedcd97a176940LL),
-      real(-0x1384e0d9162770LL),real(-0x1a108f169c7320LL),
-      real(-0x2378674e3fafd0LL),real(-0x3154606a2c6100LL),
-      real(-0x465a9ded7c5a30LL),real(-0x675a79a8aa6ee0LL),
-      real(-0x9d4a8ab99e2290LL),real(-0xf9e328cb49d8c0LL),
-      real(-0x1a2ce594ece04f0LL),real(-0x2efbcc23543daa0LL),
-      real(-0x5c688ee5939fd50LL),real(-0xceb90d2fccdb080LL),
-      real(-0x2331240c282307b0LL),reale(-2174LL,0xba9d6617169a0LL),
-      reale(-20717LL,0xbd20dfe74dff0LL),reale(154405LL,0x43613e2a37c0LL),
-      reale(-270828LL,0x13bcc8d3cbd90LL),reale(146546LL,0xa61bf3c2f7de0LL),
-      reale(26313LL,0x9ff2a1de69530LL),reale(-32564LL,0xe3aa247cc40fbLL),
+      // C4[1], coeff of eps^18, polynomial in n of order 8
+      reale(2128LL,0x469250df87e00LL),real(-0x76ff6f2ca68ee740LL),
+      real(0x544ea56af984a280LL),real(-0x4b3b3c5b1f3b3dc0LL),
+      real(0x324e822f05811f00LL),real(-0x29dd8ae6f4502040LL),
+      real(0x179c3b6434632b80LL),real(-0xd7628385c5d56c0LL),
+      real(0x91fdd6e000a7926LL),reale(0x342bf6LL,0x9f3708d39590dLL),
+      // C4[1], coeff of eps^17, polynomial in n of order 9
+      reale(3396LL,0xc29d3f547be10LL),reale(-2964LL,0x99a8488284e80LL),
+      reale(2082LL,0xa3af2d55cd2f0LL),real(-0x74e3fc23ed074b20LL),
+      real(0x4f51e11c0cc64dd0LL),real(-0x45cc62cad46028c0LL),
+      real(0x2b210825284d5ab0LL),real(-0x20cfde05bc67de60LL),
+      real(0xdb6584e22cc2590LL),real(0x36aae0ede944991LL),
       reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[30]
-      real(-0xd20723e198100LL),real(-0x10e999b2026480LL),
-      real(-0x161c2993f30e00LL),real(-0x1d62585afd4f80LL),
-      real(-0x27ca0dc8a2fb00LL),real(-0x370cc97a8ce280LL),
-      real(-0x4e170b46a3d800LL),real(-0x7213d21df5ad80LL),
-      real(-0xac9b82d7503500LL),real(-0x1109444f53c4080LL),
-      real(-0x1c6019c5f02a200LL),real(-0x329a7eb49a52b80LL),
-      real(-0x62d84097135af00LL),real(-0xdb6f2c88eb4fe80LL),
-      real(-0x2502e63c01a3ec00LL),reale(-2257LL,0x7c761ad4fb680LL),
-      reale(-21064LL,0x3d6bd08981700LL),reale(150710LL,0x347c6ec646380LL),
-      reale(-239156LL,0xeee1298e3ca00LL),reale(78297LL,0xeac3242447880LL),
-      reale(97157LL,0xffcea47049d00LL),reale(-74488LL,0x33590a76b6580LL),
-      reale(11841LL,0x219395a415cbcLL),reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[31]
-      real(-0x1802918882e770LL),real(-0x1fcd949a6860c0LL),
-      real(-0x2aeab9b7d2f010LL),real(-0x3b2acc792185e0LL),
-      real(-0x539feddcdda2b0LL),real(-0x79b43080aca700LL),
-      real(-0xb76e50170e2350LL),real(-0x1207f374f78a820LL),
-      real(-0x1de74f0a09e95f0LL),real(-0x351484156246d40LL),
-      real(-0x6722781c7da1e90LL),real(-0xe37fba15ed8da60LL),
-      real(-0x260d3a8a453ee130LL),reale(-2293LL,0xda737b59d2c80LL),
-      reale(-20990LL,0xcbee433bffe30LL),reale(145073LL,0x9b58d1932c360LL),
-      reale(-212948LL,0xbbc1f33985b90LL),reale(41274LL,0x9a63d1cc50640LL),
-      reale(107042LL,0xff9bf7f6712f0LL),reale(-59295LL,0xb696ab3f1120LL),
-      reale(2833LL,0xc664f5dce0050LL),real(0x17b85ffcea47049dLL),
+      // C4[1], coeff of eps^16, polynomial in n of order 10
+      reale(5994LL,0xfab7bd428a400LL),reale(-4920LL,0x276aa3c67f600LL),
+      reale(3376LL,0x641d9d71fd000LL),reale(-2976LL,0xcdf2cc6d9ea00LL),
+      real(0x7dd1b5a4fb9ffc00LL),real(-0x712cdc1424704200LL),
+      real(0x486493a43f86e800LL),real(-0x3daeb06e6a40ce00LL),
+      real(0x21506b8426325400LL),real(-0x13a656589a61fa00LL),
+      real(0xcfa4dcbf923eff0LL),reale(0x342bf6LL,0x9f3708d39590dLL),
+      // C4[1], coeff of eps^15, polynomial in n of order 11
+      reale(13117LL,0x6cbddabc52ed0LL),reale(-9319LL,0x570c1564bb3e0LL),
+      reale(6040LL,0x7b2fdab4ba7f0LL),reale(-5023LL,0xdd4767cbca180LL),
+      reale(3330LL,0x281af37e2710LL),reale(-2969LL,0xba9176a5d3f20LL),
+      real(0x7764510336be0030LL),real(-0x6af4843f7d4f5f40LL),
+      real(0x3eba1ed514e18750LL),real(-0x31669b90045c25a0LL),
+      real(0x13a17c0101ce1070LL),real(0x4e2a88c78d66acfLL),
       reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[32]
-      real(-0x2d4d049c656700LL),real(-0x3e4af5e8d022c0LL),
-      real(-0x57ced7fe851580LL),real(-0x7f7034131ef240LL),
-      real(-0xbf83d85dea6c00LL),real(-0x12c465612feb5c0LL),
-      real(-0x1f04ac518a30280LL),real(-0x36d88216b840540LL),
-      real(-0x6a13494183c7100LL),real(-0xe8a2e478ed378c0LL),
-      real(-0x269ca36792944f80LL),reale(-2301LL,0x84520bafe57c0LL),
-      reale(-20715LL,0x8feafafd7ca00LL),reale(139156LL,0x8278406ccd440LL),
-      reale(-192234LL,0xd634ab69a4380LL),reale(20133LL,0xdb20ab18364c0LL),
-      reale(103930LL,0xc444b13858500LL),reale(-48023LL,0x7a63881fd7140LL),
-      reale(8312LL,0x1287962dbf680LL),reale(-10955LL,0xe96efa02661c0LL),
-      reale(3795LL,0x3bfe126c62e22LL),reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[33]
-      real(-0x5b1678b2b96e30LL),real(-0x83e7d604d6e1a0LL),
-      real(-0xc5c1bd21f06210LL),real(-0x135402446a1f500LL),
-      real(-0x1fd9e061288aff0LL),real(-0x381fb1c2d0ea860LL),
-      real(-0x6c176a9d32ee3d0LL),real(-0xebcbb379725c7c0LL),
-      real(-0x26dc285f96da89b0LL),reale(-2293LL,0x73b088641e0e0LL),
-      reale(-20345LL,0x12b405f9bd270LL),reale(133496LL,0x33ba4ee858580LL),
-      reale(-175743LL,0x9b38f6004a490LL),reale(7288LL,0xff81f26b85a20LL),
-      reale(98139LL,0x5735ff04360b0LL),reale(-41011LL,0x93a23c36592c0LL),
-      reale(11505LL,0xfe66ab587ad0LL),reale(-12647LL,0xeb385b3526360LL),
-      reale(2204LL,0x9aaf76ecb66f0LL),real(0x2076d1ad78dbacf7LL),
+      // C4[1], coeff of eps^14, polynomial in n of order 12
+      reale(68147LL,0x8cb1a33fbb300LL),reale(-25031LL,0xe657c4ceb2a40LL),
+      reale(13399LL,0xd5b954b9ffe80LL),reale(-9633LL,0xa008523a478c0LL),
+      reale(6058LL,0x6185fb910e200LL),reale(-5123LL,0xdb0ce1cd90340LL),
+      reale(3246LL,0x498e64bf8a580LL),reale(-2930LL,0x39f0ac65811c0LL),
+      real(0x6e041fee5d419100LL),real(-0x60b53ba76d5f13c0LL),
+      real(0x3113d4fc9085ec80LL),real(-0x1e6533c87b7d2540LL),
+      real(0x1357622acbb7b13aLL),reale(0x342bf6LL,0x9f3708d39590dLL),
+      // C4[1], coeff of eps^13, polynomial in n of order 13
+      reale(-121533LL,0x1baeb1d428990LL),reale(-15941LL,0xe8aacebc2ecc0LL),
+      reale(71019LL,0xc50f40d0125f0LL),reale(-26121LL,0xfa27e4ebd20a0LL),
+      reale(13667LL,0x35bfe1bb73850LL),reale(-9985LL,0x1b0b3e3706880LL),
+      reale(6033LL,0x4bb2ec6997cb0LL),reale(-5213LL,0xaba6ff9bbc060LL),
+      reale(3108LL,0x7a1250dedaf10LL),reale(-2837LL,0x43aa0f4a62440LL),
+      real(0x605fcd3581f88b70LL),real(-0x4fb9f3b2da8b6fe0LL),
+      real(0x1d6444fcd70bcdd0LL),real(0x74c81d1452803b5LL),
       reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[34]
-      real(-0xcaab4ddd8d4600LL),real(-0x13c31d1cbb16d00LL),
-      real(-0x207a98d99de3000LL),real(-0x390c3dedd68b300LL),
-      real(-0x6d71551ca261a00LL),real(-0xed90e825b918900LL),
-      real(-0x26e62c786e462400LL),reale(-2275LL,0x445093a1ef100LL),
-      reale(-19935LL,0xe24d995a09200LL),reale(128254LL,0x3ade3c4739b00LL),
-      reale(-162384LL,0x54cbec0ece800LL),real(-0x3992c873ce48ab00LL),
-      reale(92230LL,0x4a4593a3dbe00LL),reale(-36419LL,0xcbaefd1b4ff00LL),
-      reale(13110LL,0x864dfe531f400LL),reale(-12476LL,0xf5c1226b77900LL),
-      reale(3771LL,0xc13fa20286a00LL),reale(-3470LL,0xc9a2f8989a300LL),
-      real(0x661b6984b64e65f8LL),reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[35]
-      real(-0x20f38bbaca812f0LL),real(-0x39b499036d51b00LL),
-      real(-0x6e4d3364d687b10LL),real(-0xee56650d93fe5a0LL),
-      real(-0x26cbb66f58b91d30LL),reale(-2251LL,0x167a106157bc0LL),
-      reale(-19511LL,0xcecb0f0cd52b0LL),reale(123456LL,0xc66bc06159520LL),
-      reale(-151363LL,0x505ffa032090LL),reale(-6380LL,0xf55ff8a36f280LL),
-      reale(86843LL,0xd7e050f079870LL),reale(-33197LL,0x80ee9e4da1fe0LL),
-      reale(13831LL,0x3ac1850370650LL),reale(-11931LL,0x72e63a167a940LL),
-      reale(4775LL,0x36871b380b630LL),reale(-4709LL,0x204f0216e1aa0LL),
-      real(0x4e466dbc0d5cf410LL),real(0x132845ea2b7be139LL),
+      // C4[1], coeff of eps^12, polynomial in n of order 14
+      reale(-18280LL,0xbefa6d89ca100LL),reale(111436LL,0xf9c78acad1e80LL),
+      reale(-127456LL,0x47c2f695c9a00LL),reale(-14600LL,0x49cf710bf9d80LL),
+      reale(74253LL,0x38e0bbebab300LL),reale(-27395LL,0x999e5faa56480LL),
+      reale(13898LL,0x35bd350d73c00LL),reale(-10385LL,0x6a6f64ae0c380LL),
+      reale(5941LL,0x73f13b5b28500LL),reale(-5278LL,0xf9b7b76b40a80LL),
+      reale(2891LL,0x688dd5accde00LL),reale(-2647LL,0xe431f84a18980LL),
+      real(0x4c6028727ac69700LL),real(-0x32eae1a8c2946f80LL),
+      real(0x1ea30b56650e6834LL),reale(0x342bf6LL,0x9f3708d39590dLL),
+      // C4[1], coeff of eps^11, polynomial in n of order 15
+      real(-0x26534490cad1dfb0LL),reale(-2195LL,0xeb57a14506a20LL),
+      reale(-18677LL,0x670e626e50cf0LL),reale(115088LL,0x35b741cc34140LL),
+      reale(-134246LL,0x7df8512baaf90LL),reale(-12736LL,0xad44a3e04060LL),
+      reale(77916LL,0x32c371fd8ec30LL),reale(-28919LL,0x4c92ea7340b80LL),
+      reale(14055LL,0x84fcc4e4ea6d0LL),reale(-10841LL,0x59f373a2946a0LL),
+      reale(5745LL,0xafd650291c370LL),reale(-5283LL,0x54459b9c295c0LL),
+      reale(2556LL,0x876a7d9212610LL),reale(-2273LL,0x9ea5161549ce0LL),
+      real(0x2e7aab3dc406b2b0LL),real(0xb7e588c69951913LL),
       reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[36]
+      // C4[1], coeff of eps^10, polynomial in n of order 16
       real(-0x6ec9ec72fa83400LL),real(-0xee6121f9ed5ac40LL),
       real(-0x2698258da225a980LL),reale(-2224LL,0x7d6de58dd7f40LL),
       reale(-19089LL,0xb046a19e77900LL),reale(119080LL,0xff5c72a1c6ec0LL),
@@ -2066,172 +2043,236 @@ namespace GeographicLib {
       reale(5387LL,0x791e9eab0d300LL),reale(-5154LL,0x32223c714b4c0LL),
       real(0x7fb4f5b53eb31580LL),real(-0x5fcfbdbbdde05fc0LL),
       real(0x34b713242f2d630eLL),reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[37]
-      real(-0x26534490cad1dfb0LL),reale(-2195LL,0xeb57a14506a20LL),
-      reale(-18677LL,0x670e626e50cf0LL),reale(115088LL,0x35b741cc34140LL),
-      reale(-134246LL,0x7df8512baaf90LL),reale(-12736LL,0xad44a3e04060LL),
-      reale(77916LL,0x32c371fd8ec30LL),reale(-28919LL,0x4c92ea7340b80LL),
-      reale(14055LL,0x84fcc4e4ea6d0LL),reale(-10841LL,0x59f373a2946a0LL),
-      reale(5745LL,0xafd650291c370LL),reale(-5283LL,0x54459b9c295c0LL),
-      reale(2556LL,0x876a7d9212610LL),reale(-2273LL,0x9ea5161549ce0LL),
-      real(0x2e7aab3dc406b2b0LL),real(0xb7e588c69951913LL),
-      reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[38]
-      reale(-18280LL,0xbefa6d89ca100LL),reale(111436LL,0xf9c78acad1e80LL),
-      reale(-127456LL,0x47c2f695c9a00LL),reale(-14600LL,0x49cf710bf9d80LL),
-      reale(74253LL,0x38e0bbebab300LL),reale(-27395LL,0x999e5faa56480LL),
-      reale(13898LL,0x35bd350d73c00LL),reale(-10385LL,0x6a6f64ae0c380LL),
-      reale(5941LL,0x73f13b5b28500LL),reale(-5278LL,0xf9b7b76b40a80LL),
-      reale(2891LL,0x688dd5accde00LL),reale(-2647LL,0xe431f84a18980LL),
-      real(0x4c6028727ac69700LL),real(-0x32eae1a8c2946f80LL),
-      real(0x1ea30b56650e6834LL),reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[39]
-      reale(-121533LL,0x1baeb1d428990LL),reale(-15941LL,0xe8aacebc2ecc0LL),
-      reale(71019LL,0xc50f40d0125f0LL),reale(-26121LL,0xfa27e4ebd20a0LL),
-      reale(13667LL,0x35bfe1bb73850LL),reale(-9985LL,0x1b0b3e3706880LL),
-      reale(6033LL,0x4bb2ec6997cb0LL),reale(-5213LL,0xaba6ff9bbc060LL),
-      reale(3108LL,0x7a1250dedaf10LL),reale(-2837LL,0x43aa0f4a62440LL),
-      real(0x605fcd3581f88b70LL),real(-0x4fb9f3b2da8b6fe0LL),
-      real(0x1d6444fcd70bcdd0LL),real(0x74c81d1452803b5LL),
+      // C4[1], coeff of eps^9, polynomial in n of order 17
+      real(-0x20f38bbaca812f0LL),real(-0x39b499036d51b00LL),
+      real(-0x6e4d3364d687b10LL),real(-0xee56650d93fe5a0LL),
+      real(-0x26cbb66f58b91d30LL),reale(-2251LL,0x167a106157bc0LL),
+      reale(-19511LL,0xcecb0f0cd52b0LL),reale(123456LL,0xc66bc06159520LL),
+      reale(-151363LL,0x505ffa032090LL),reale(-6380LL,0xf55ff8a36f280LL),
+      reale(86843LL,0xd7e050f079870LL),reale(-33197LL,0x80ee9e4da1fe0LL),
+      reale(13831LL,0x3ac1850370650LL),reale(-11931LL,0x72e63a167a940LL),
+      reale(4775LL,0x36871b380b630LL),reale(-4709LL,0x204f0216e1aa0LL),
+      real(0x4e466dbc0d5cf410LL),real(0x132845ea2b7be139LL),
       reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[40]
-      reale(68147LL,0x8cb1a33fbb300LL),reale(-25031LL,0xe657c4ceb2a40LL),
-      reale(13399LL,0xd5b954b9ffe80LL),reale(-9633LL,0xa008523a478c0LL),
-      reale(6058LL,0x6185fb910e200LL),reale(-5123LL,0xdb0ce1cd90340LL),
-      reale(3246LL,0x498e64bf8a580LL),reale(-2930LL,0x39f0ac65811c0LL),
-      real(0x6e041fee5d419100LL),real(-0x60b53ba76d5f13c0LL),
-      real(0x3113d4fc9085ec80LL),real(-0x1e6533c87b7d2540LL),
-      real(0x1357622acbb7b13aLL),reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[41]
-      reale(13117LL,0x6cbddabc52ed0LL),reale(-9319LL,0x570c1564bb3e0LL),
-      reale(6040LL,0x7b2fdab4ba7f0LL),reale(-5023LL,0xdd4767cbca180LL),
-      reale(3330LL,0x281af37e2710LL),reale(-2969LL,0xba9176a5d3f20LL),
-      real(0x7764510336be0030LL),real(-0x6af4843f7d4f5f40LL),
-      real(0x3eba1ed514e18750LL),real(-0x31669b90045c25a0LL),
-      real(0x13a17c0101ce1070LL),real(0x4e2a88c78d66acfLL),
+      // C4[1], coeff of eps^8, polynomial in n of order 18
+      real(-0xcaab4ddd8d4600LL),real(-0x13c31d1cbb16d00LL),
+      real(-0x207a98d99de3000LL),real(-0x390c3dedd68b300LL),
+      real(-0x6d71551ca261a00LL),real(-0xed90e825b918900LL),
+      real(-0x26e62c786e462400LL),reale(-2275LL,0x445093a1ef100LL),
+      reale(-19935LL,0xe24d995a09200LL),reale(128254LL,0x3ade3c4739b00LL),
+      reale(-162384LL,0x54cbec0ece800LL),real(-0x3992c873ce48ab00LL),
+      reale(92230LL,0x4a4593a3dbe00LL),reale(-36419LL,0xcbaefd1b4ff00LL),
+      reale(13110LL,0x864dfe531f400LL),reale(-12476LL,0xf5c1226b77900LL),
+      reale(3771LL,0xc13fa20286a00LL),reale(-3470LL,0xc9a2f8989a300LL),
+      real(0x661b6984b64e65f8LL),reale(0x342bf6LL,0x9f3708d39590dLL),
+      // C4[1], coeff of eps^7, polynomial in n of order 19
+      real(-0x5b1678b2b96e30LL),real(-0x83e7d604d6e1a0LL),
+      real(-0xc5c1bd21f06210LL),real(-0x135402446a1f500LL),
+      real(-0x1fd9e061288aff0LL),real(-0x381fb1c2d0ea860LL),
+      real(-0x6c176a9d32ee3d0LL),real(-0xebcbb379725c7c0LL),
+      real(-0x26dc285f96da89b0LL),reale(-2293LL,0x73b088641e0e0LL),
+      reale(-20345LL,0x12b405f9bd270LL),reale(133496LL,0x33ba4ee858580LL),
+      reale(-175743LL,0x9b38f6004a490LL),reale(7288LL,0xff81f26b85a20LL),
+      reale(98139LL,0x5735ff04360b0LL),reale(-41011LL,0x93a23c36592c0LL),
+      reale(11505LL,0xfe66ab587ad0LL),reale(-12647LL,0xeb385b3526360LL),
+      reale(2204LL,0x9aaf76ecb66f0LL),real(0x2076d1ad78dbacf7LL),
       reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[42]
-      reale(5994LL,0xfab7bd428a400LL),reale(-4920LL,0x276aa3c67f600LL),
-      reale(3376LL,0x641d9d71fd000LL),reale(-2976LL,0xcdf2cc6d9ea00LL),
-      real(0x7dd1b5a4fb9ffc00LL),real(-0x712cdc1424704200LL),
-      real(0x486493a43f86e800LL),real(-0x3daeb06e6a40ce00LL),
-      real(0x21506b8426325400LL),real(-0x13a656589a61fa00LL),
-      real(0xcfa4dcbf923eff0LL),reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[43]
-      reale(3396LL,0xc29d3f547be10LL),reale(-2964LL,0x99a8488284e80LL),
-      reale(2082LL,0xa3af2d55cd2f0LL),real(-0x74e3fc23ed074b20LL),
-      real(0x4f51e11c0cc64dd0LL),real(-0x45cc62cad46028c0LL),
-      real(0x2b210825284d5ab0LL),real(-0x20cfde05bc67de60LL),
-      real(0xdb6584e22cc2590LL),real(0x36aae0ede944991LL),
+      // C4[1], coeff of eps^6, polynomial in n of order 20
+      real(-0x2d4d049c656700LL),real(-0x3e4af5e8d022c0LL),
+      real(-0x57ced7fe851580LL),real(-0x7f7034131ef240LL),
+      real(-0xbf83d85dea6c00LL),real(-0x12c465612feb5c0LL),
+      real(-0x1f04ac518a30280LL),real(-0x36d88216b840540LL),
+      real(-0x6a13494183c7100LL),real(-0xe8a2e478ed378c0LL),
+      real(-0x269ca36792944f80LL),reale(-2301LL,0x84520bafe57c0LL),
+      reale(-20715LL,0x8feafafd7ca00LL),reale(139156LL,0x8278406ccd440LL),
+      reale(-192234LL,0xd634ab69a4380LL),reale(20133LL,0xdb20ab18364c0LL),
+      reale(103930LL,0xc444b13858500LL),reale(-48023LL,0x7a63881fd7140LL),
+      reale(8312LL,0x1287962dbf680LL),reale(-10955LL,0xe96efa02661c0LL),
+      reale(3795LL,0x3bfe126c62e22LL),reale(0x342bf6LL,0x9f3708d39590dLL),
+      // C4[1], coeff of eps^5, polynomial in n of order 21
+      real(-0x1802918882e770LL),real(-0x1fcd949a6860c0LL),
+      real(-0x2aeab9b7d2f010LL),real(-0x3b2acc792185e0LL),
+      real(-0x539feddcdda2b0LL),real(-0x79b43080aca700LL),
+      real(-0xb76e50170e2350LL),real(-0x1207f374f78a820LL),
+      real(-0x1de74f0a09e95f0LL),real(-0x351484156246d40LL),
+      real(-0x6722781c7da1e90LL),real(-0xe37fba15ed8da60LL),
+      real(-0x260d3a8a453ee130LL),reale(-2293LL,0xda737b59d2c80LL),
+      reale(-20990LL,0xcbee433bffe30LL),reale(145073LL,0x9b58d1932c360LL),
+      reale(-212948LL,0xbbc1f33985b90LL),reale(41274LL,0x9a63d1cc50640LL),
+      reale(107042LL,0xff9bf7f6712f0LL),reale(-59295LL,0xb696ab3f1120LL),
+      reale(2833LL,0xc664f5dce0050LL),real(0x17b85ffcea47049dLL),
       reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[44]
-      reale(2128LL,0x469250df87e00LL),real(-0x76ff6f2ca68ee740LL),
-      real(0x544ea56af984a280LL),real(-0x4b3b3c5b1f3b3dc0LL),
-      real(0x324e822f05811f00LL),real(-0x29dd8ae6f4502040LL),
-      real(0x179c3b6434632b80LL),real(-0xd7628385c5d56c0LL),
-      real(0x91fdd6e000a7926LL),reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[45]
-      real(0x57e3d5e3e8a64d50LL),real(-0x4ee151925712ac60LL),
-      real(0x379f60f9d8160ef0LL),real(-0x3036f6417460ec40LL),
-      real(0x1eece80c1c746690LL),real(-0x16f21d696f523420LL),
-      real(0x9ef6bfafd871830LL),real(0x27a3f6720674fabLL),
+      // C4[1], coeff of eps^4, polynomial in n of order 22
+      real(-0xd20723e198100LL),real(-0x10e999b2026480LL),
+      real(-0x161c2993f30e00LL),real(-0x1d62585afd4f80LL),
+      real(-0x27ca0dc8a2fb00LL),real(-0x370cc97a8ce280LL),
+      real(-0x4e170b46a3d800LL),real(-0x7213d21df5ad80LL),
+      real(-0xac9b82d7503500LL),real(-0x1109444f53c4080LL),
+      real(-0x1c6019c5f02a200LL),real(-0x329a7eb49a52b80LL),
+      real(-0x62d84097135af00LL),real(-0xdb6f2c88eb4fe80LL),
+      real(-0x2502e63c01a3ec00LL),reale(-2257LL,0x7c761ad4fb680LL),
+      reale(-21064LL,0x3d6bd08981700LL),reale(150710LL,0x347c6ec646380LL),
+      reale(-239156LL,0xeee1298e3ca00LL),reale(78297LL,0xeac3242447880LL),
+      reale(97157LL,0xffcea47049d00LL),reale(-74488LL,0x33590a76b6580LL),
+      reale(11841LL,0x219395a415cbcLL),reale(0x342bf6LL,0x9f3708d39590dLL),
+      // C4[1], coeff of eps^3, polynomial in n of order 23
+      real(-0x7207334f38cb0LL),real(-0x8fe6a0f540760LL),
+      real(-0xb7c4f4df6c510LL),real(-0xedcd97a176940LL),
+      real(-0x1384e0d9162770LL),real(-0x1a108f169c7320LL),
+      real(-0x2378674e3fafd0LL),real(-0x3154606a2c6100LL),
+      real(-0x465a9ded7c5a30LL),real(-0x675a79a8aa6ee0LL),
+      real(-0x9d4a8ab99e2290LL),real(-0xf9e328cb49d8c0LL),
+      real(-0x1a2ce594ece04f0LL),real(-0x2efbcc23543daa0LL),
+      real(-0x5c688ee5939fd50LL),real(-0xceb90d2fccdb080LL),
+      real(-0x2331240c282307b0LL),reale(-2174LL,0xba9d6617169a0LL),
+      reale(-20717LL,0xbd20dfe74dff0LL),reale(154405LL,0x43613e2a37c0LL),
+      reale(-270828LL,0x13bcc8d3cbd90LL),reale(146546LL,0xa61bf3c2f7de0LL),
+      reale(26313LL,0x9ff2a1de69530LL),reale(-32564LL,0xe3aa247cc40fbLL),
       reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[46]
-      real(0x84a641c077c100LL),real(-0x75601a6b667780LL),
-      real(0x51157a29d94600LL),real(-0x4247925ad10480LL),
-      real(0x269068d8c2ab00LL),real(-0x15748d5a64a980LL),
-      real(0xed190d6b360a4LL),reale(29731LL,0x892d0013a607fLL),
-      // _C4x[47]
-      real(0x2b50c847e5bec70LL),real(-0x25172ad2adc8640LL),
-      real(0x187490c86e06510LL),real(-0x11cf5b364679120LL),
-      real(0x7e9f37da26e7b0LL),real(0x1f979b01bfd5e3LL),
-      reale(227941LL,0xc6590096a3923LL),
-      // _C4x[48]
-      real(0xa226b42100LL),real(-0x82b9c957c0LL),real(0x4dd9f4b480LL),
-      real(-0x2a87741140LL),real(0x1dc9ee09baLL),real(0x13691a10b39411LL),
-      // _C4x[49]
-      real(0x165661ad6b70LL),real(-0x1009b31cabe0LL),real(0x7444963bdd0LL),
-      real(0x1d0511c64f5LL),real(0x42b94999694cfa7LL),
-      // _C4x[50]
-      real(0x6e1bbfa00LL),real(-0x3b5106500LL),real(0x29fefd0b8LL),
-      real(0x2383148b21287LL),
-      // _C4x[51]
-      real(0x1516d30LL),real(0x543e3bLL),real(0xf784431927LL),
-      // _C4x[52]
-      real(4654LL),real(0x1389ed75LL),
-      // _C4x[53]
-      real(0x5f08c3cb900LL),real(0x807038c0ca0LL),real(0xaffaed32440LL),
-      real(0xf4c5be483e0LL),real(0x15a2490f6f80LL),real(0x1f28eae1cb20LL),
-      real(0x2dce80c7fac0LL),real(0x44e60304c260LL),real(0x6a58ca3b2600LL),
-      real(0xa90e89d449a0LL),real(0x1160126eb5140LL),real(0x1db88b51940e0LL),
-      real(0x354168d7adc80LL),real(0x64e3bca9a8820LL),real(0xcc99ed98827c0LL),
-      real(0x1c3fb9ad58ff60LL),real(0x45c01ca2899300LL),
-      real(0xc88852534b86a0LL),real(0x2d1eac1f8a97e40LL),
-      real(0xee21e1c2e9afde0LL),reale(3238LL,0x9997f46a24980LL),
-      reale(-36435LL,0xc0128255e4520LL),reale(105254LL,0x7fca8779a54c0LL),
-      reale(-115780LL,0xd079e2d63c60LL),reale(43417LL,0x7b1d24aefa95cLL),
+      // C4[1], coeff of eps^2, polynomial in n of order 24
+      real(-0x39a9fc22d9600LL),real(-0x47a4ffa857140LL),
+      real(-0x59ea353148580LL),real(-0x721982b3023c0LL),
+      real(-0x9291e22ef9d00LL),real(-0xbeda9ea6fc240LL),
+      real(-0xfc517cd616480LL),real(-0x1535335443d4c0LL),
+      real(-0x1d14474c2c6400LL),real(-0x28c4706fdbe340LL),
+      real(-0x3aa43e35a32380LL),real(-0x56eefde83775c0LL),
+      real(-0x859522b6982b00LL),real(-0xd663f0e8861440LL),
+      real(-0x16b2ad2884e0280LL),real(-0x2932441ccc746c0LL),
+      real(-0x51f4ee722e73200LL),real(-0xb97e18f372a9540LL),
+      real(-0x1ff5b9ebacd64180LL),real(-0x7d04fcecbaaf87c0LL),
+      reale(-19432LL,0x6670458324700LL),reale(150594LL,0xe619e547a59c0LL),
+      reale(-294713LL,0x66fc1e44fdf80LL),reale(231559LL,0xe5f0c3a538740LL),
+      reale(-65127LL,0xc75448f9881f6LL),reale(0x342bf6LL,0x9f3708d39590dLL),
+      // C4[1], coeff of eps^1, polynomial in n of order 25
+      real(-0x16b98c18c43f0LL),real(-0x1be76827efc80LL),
+      real(-0x2291674649910LL),real(-0x2b3d2747a6820LL),
+      real(-0x36a8d2fdcc830LL),real(-0x45e795ad137c0LL),
+      real(-0x5a8eeaa036550LL),real(-0x77007a4bcbf60LL),
+      real(-0x9ee5aa2960470LL),real(-0xd8045ac825300LL),
+      real(-0x12bb93df5b3990LL),real(-0x1a9b1c398546a0LL),
+      real(-0x26d2a92f5c98b0LL),real(-0x3a7858f998ee40LL),
+      real(-0x5b6e62f9c0b5d0LL),real(-0x959d5c24529de0LL),
+      real(-0x102f2d0b50524f0LL),real(-0x1e1472bfb1ba980LL),
+      real(-0x3d69bf9cb587a10LL),real(-0x8ee1210e8c36520LL),
+      real(-0x194d332fe8d44930LL),real(-0x6534ccbfa35124c0LL),
+      reale(-15789LL,0xd33b387a8d9b0LL),reale(115779LL,0xf2f861d29c3a0LL),
+      reale(-173670LL,0x138b6d4415a90LL),reale(75980LL,0x9773003236861LL),
+      reale(0x342bf6LL,0x9f3708d39590dLL),
+      // C4[2], coeff of eps^26, polynomial in n of order 0
+      real(0x2c2a8cLL),real(0xfe89d46f33LL),
+      // C4[2], coeff of eps^25, polynomial in n of order 1
+      real(-0x835f00LL),real(0x557ff0LL),real(0x89825e2a6bLL),
+      // C4[2], coeff of eps^24, polynomial in n of order 2
+      real(-0x184be2a300LL),real(0x97a60f680LL),real(0x26a83de30LL),
+      real(0xb18f66b7a5ca3LL),
+      // C4[2], coeff of eps^23, polynomial in n of order 3
+      real(-0x265f8c17d00LL),real(0x13bddd35200LL),real(-0xcadd323f00LL),
+      real(0x80e0d83bf0LL),real(0xa1c12e8b2dd1e3LL),
+      // C4[2], coeff of eps^22, polynomial in n of order 4
+      real(-0x46e25cf59280LL),real(0x290af5269020LL),real(-0x22f7c7b01940LL),
+      real(0xd08f4d0d560LL),real(0x355c24081bcLL),real(0xc015674546693d9LL),
+      // C4[2], coeff of eps^21, polynomial in n of order 5
+      real(-0x326f6045f923c80LL),real(0x1fb1615f9d3a600LL),
+      real(-0x1db1797638c1780LL),real(0xe9780531c07300LL),
+      real(-0x9d24cc38e5d280LL),real(0x60cf9034bf3868LL),
+      reale(379902LL,0xf53f00fb109e5LL),
+      // C4[2], coeff of eps^20, polynomial in n of order 6
+      real(-0x4837c78c0550480LL),real(0x313ba08613af040LL),
+      real(-0x2ee33229a4bc300LL),real(0x1a152ee5f2ae9c0LL),
+      real(-0x172de5252da0180LL),real(0x824fa762c0c340LL),
+      real(0x2180172e018ad8LL),reale(379902LL,0xf53f00fb109e5LL),
+      // C4[2], coeff of eps^19, polynomial in n of order 7
+      real(-0x5fc4bec46509e480LL),real(0x48096a7e75900b00LL),
+      real(-0x41caf1fb886dd580LL),real(0x28558a32a56ef200LL),
+      real(-0x26dce3ddd1a42680LL),real(0x120433e2d2025900LL),
+      real(-0xce36e1803df1780LL),real(0x7a135866f905bb8LL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[54]
-      real(0x21a7e921c980LL),real(0x2e51be6e8f00LL),real(0x40c19fbec480LL),
-      real(0x5c1e6062c200LL),real(0x8599d6a9df80LL),real(0xc60160b77500LL),
-      real(0x12cb7c4c7da80LL),real(0x1d5985b996800LL),real(0x2f524aaed7580LL),
-      real(0x4f30941955b00LL),real(0x8a76dd63f7080LL),real(0xff32326380e00LL),
-      real(0x1f5b1b59928b80LL),real(0x42dd3cfeae4100LL),
-      real(0x9e90e4efcb8680LL),real(0x1b33e235264b400LL),
-      real(0x5cdaf2eb93f2180LL),real(0x1cd398a25fa82700LL),
-      reale(5865LL,0x9368046121c80LL),reale(-61724LL,0x1837736455a00LL),
-      reale(171645LL,0xcc7599f993780LL),reale(-213748LL,0x66d2fca290d00LL),
-      reale(126305LL,0x66263c2b93280LL),reale(-28945LL,0x341e78b58f18LL),
+      // C4[2], coeff of eps^18, polynomial in n of order 8
+      reale(-2177LL,0x1ea7a5015eb00LL),real(0x73bced2a00a143a0LL),
+      real(-0x5fca97395e84bfc0LL),real(0x418b4cd8fc5e04e0LL),
+      real(-0x3e6c34ea7ddb8a80LL),real(0x212422dcacab1620LL),
+      real(-0x1f0466b0c7211540LL),real(0xa12130d17045760LL),
+      real(0x29b0aa486315dbcLL),reale(0x56f3f0LL,0x5eb10eb5f946bLL),
+      // C4[2], coeff of eps^17, polynomial in n of order 9
+      reale(-3195LL,0xcbf6069e6fe00LL),reale(3129LL,0x198ba10e3f000LL),
+      reale(-2212LL,0x135876d83e200LL),real(0x6cf94ec7bfac7400LL),
+      real(-0x5f04d2df84f0ba00LL),real(0x39318494ff85f800LL),
+      real(-0x38939121c731d600LL),real(0x1854a6f7e2957c00LL),
+      real(-0x12decef0b13a7200LL),real(0xa9861a018e14120LL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[55]
-      real(0x7c86a4240e80LL),real(0xaf5db2064cc0LL),real(0xfb958bed1300LL),
-      real(0x17080cf847940LL),real(0x2288f92359780LL),real(0x352f6beaa45c0LL),
-      real(0x54760062cdc00LL),real(0x8b024608ff240LL),real(0xeea60450a2080LL),
-      real(0x1af0609151bec0LL),real(0x33c8072244a500LL),
-      real(0x6bad7af287eb40LL),real(0xf83a707fcba980LL),
-      real(0x293d0a92ebeb7c0LL),real(0x87aa233703e6e00LL),
-      real(0x2855283ce7ee6440LL),reale(7785LL,0x74e297d243280LL),
-      reale(-76428LL,0xc6fbe2f330c0LL),reale(190726LL,0x777542b243700LL),
-      reale(-188316LL,0xefcf1a2055d40LL),reale(42101LL,0xccb76963dbb80LL),
-      reale(46959LL,0xb31b5803129c0LL),reale(-23683LL,0xbcd8d4b7d4688LL),
+      // C4[2], coeff of eps^16, polynomial in n of order 10
+      reale(-5173LL,0x473b4cca7c600LL),reale(5700LL,0x1d26bd0962f00LL),
+      reale(-3249LL,0x75306f7043800LL),reale(3050LL,0xed985975b4100LL),
+      reale(-2252LL,0x10691cdccaa00LL),real(0x6370a1a9e900d300LL),
+      real(-0x5c955afee309e400LL),real(0x2eb3ea14003fe500LL),
+      real(-0x2e844e36822a7200LL),real(0xd8a8b891f217700LL),
+      real(0x388df4ca3a6fb20LL),reale(0x56f3f0LL,0x5eb10eb5f946bLL),
+      // C4[2], coeff of eps^15, polynomial in n of order 11
+      reale(-11116LL,0x4d006e1393a00LL),reale(11728LL,0x761e1ef822c00LL),
+      reale(-5179LL,0x65d829c0ade00LL),reale(5773LL,0x24fd2adb2f000LL),
+      reale(-3329LL,0xa0f3ce38e0200LL),reale(2908LL,0x836ab328fb400LL),
+      reale(-2292LL,0x9d62f8fb7a600LL),real(0x5681ee23b9ad7800LL),
+      real(-0x56cafdb120433600LL),real(0x21dbd9f992213c00LL),
+      real(-0x1d4bdf01a76d9200LL),real(0xf4e0cbd04176b20LL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[56]
-      real(0x185346b40be80LL),real(0x234a30239ea00LL),real(0x345f5bcfbb580LL),
-      real(0x4fc2f91719900LL),real(0x7d257d9ac0c80LL),real(0xcb49d34f58800LL),
-      real(0x1580c944df8380LL),real(0x263bb5e9cb7700LL),
-      real(0x483bd94933da80LL),real(0x935c1fd3f92600LL),
-      real(0x14c807d3436d180LL),real(0x35e9298d8a45500LL),
-      real(0xac6bf9cef462880LL),real(0x318eb0c51232c400LL),
-      reale(9164LL,0xf22328f6f9f80LL),reale(-84729LL,0x87534c86a3300LL),
-      reale(191114LL,0x47ac3650f680LL),reale(-146269LL,0x9709796906200LL),
-      reale(-28125LL,0x50e5dddf7ed80LL),reale(95633LL,0xf3c35e98b1100LL),
-      reale(-42102LL,0x3348969c24480LL),reale(4250LL,0xa99770cb50078LL),
+      // C4[2], coeff of eps^14, polynomial in n of order 12
+      reale(-73827LL,0x61b736418a780LL),reale(32637LL,0x887aa6de960e0LL),
+      reale(-10941LL,0x69b84ebb84640LL),reale(12348LL,0xdd9347a34b3a0LL),
+      reale(-5207LL,0xb9e55bea0c500LL),reale(5776LL,0x82c559a327660LL),
+      reale(-3446LL,0xd48e4a10ec3c0LL),reale(2676LL,0xdbe2bf3d4c920LL),
+      reale(-2314LL,0x93d76112ee280LL),real(0x45af1f46068fcbe0LL),
+      real(-0x4a646c774fde3ec0LL),real(0x127e48f8affd9ea0LL),
+      real(0x4e336f38ab11704LL),reale(0x56f3f0LL,0x5eb10eb5f946bLL),
+      // C4[2], coeff of eps^13, polynomial in n of order 13
+      reale(130976LL,0x1a84c1eb6d80LL),reale(-14598LL,0xb0e2756e03a00LL),
+      reale(-76484LL,0xff93a7309a680LL),reale(35388LL,0xd1bf338007b00LL),
+      reale(-10664LL,0xe3def57487f80LL),reale(13004LL,0x14f125ca37c00LL),
+      reale(-5286LL,0xaab28c8cc3880LL),reale(5660LL,0xa57467d557d00LL),
+      reale(-3610LL,0x163a4d9a91180LL),reale(2326LL,0xf26507322be00LL),
+      reale(-2275LL,0x1951f47034a80LL),real(0x30f364de4c777f00LL),
+      real(-0x3139417308d0dc80LL),real(0x173bf41713ca3b88LL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[57]
-      real(0x4748ad3ff9e80LL),real(0x6b926f7e60d60LL),real(0xa71fa4085b840LL),
-      real(0x10c991e0a3ab20LL),real(0x1c15b3b145b200LL),
-      real(0x314f7c7c43f8e0LL),real(0x5be1ff458cabc0LL),
-      real(0xb89930a80796a0LL),real(0x199734a3c07c580LL),
-      real(0x411aa25f2292460LL),real(0xcb87e4542581f40LL),
-      real(0x38e7a442bb914220LL),reale(10156LL,0x20944a9a6d900LL),
-      reale(-89266LL,0xae2af5b0a8fe0LL),reale(184683LL,0x63f792d3912c0LL),
-      reale(-110681LL,0x7635192f5ada0LL),reale(-62728LL,0xff020b803ec80LL),
-      reale(91791LL,0x3f8035a7d3b60LL),reale(-22896LL,0x337bb36408640LL),
-      real(-0x5652aea374b626e0LL),real(-0x38edb32bcbdda4acLL),
+      // C4[2], coeff of eps^12, polynomial in n of order 14
+      reale(12302LL,0xe52cc8d8c2180LL),reale(-90163LL,0xdb821dbabdc40LL),
+      reale(136898LL,0x7ace803b76f00LL),reale(-20189LL,0xb7d2bfe8c21c0LL),
+      reale(-79168LL,0x1aef280283c80LL),reale(38835LL,0xfee0572864740LL),
+      reale(-10271LL,0xfbaa65f2c4a00LL),reale(13648LL,0x338b156f30cc0LL),
+      reale(-5469LL,0x7ffbd41c95780LL),reale(5349LL,0x619325bd73240LL),
+      reale(-3822LL,0x57b3a652500LL),real(0x729df2a6c14b77c0LL),
+      reale(-2074LL,0x6c230416d7280LL),real(0x193a4a0699e49d40LL),
+      real(0x6c8a3fc264f2d98LL),reale(0x56f3f0LL,0x5eb10eb5f946bLL),
+      // C4[2], coeff of eps^11, polynomial in n of order 15
+      real(0x12b65c49560e1680LL),real(0x4c91348dd4c57d00LL),
+      reale(12186LL,0xb870c2ef8b380LL),reale(-91200LL,0xb85c60cb26200LL),
+      reale(143440LL,0xa133e98363080LL),reale(-27238LL,0x5076fe0bbc700LL),
+      reale(-81725LL,0xe4f93bf99cd80LL),reale(43231LL,0xcee7486ccec00LL),
+      reale(-9772LL,0x4b82cb486ca80LL),reale(14177LL,0x876b1df11100LL),
+      reale(-5845LL,0xa68f0ab906780LL),reale(4733LL,0x71ff0d3b37600LL),
+      reale(-4035LL,0x511483b19e480LL),real(0x4b0e043dd17f5b00LL),
+      real(-0x5c6dac5851097e80LL),real(0x259ade3cf4689f28LL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[58]
-      real(0xd108e5f6f6100LL),real(0x14cfb44a7f1600LL),
-      real(0x227bc5972bab00LL),real(0x3bea4dd1053000LL),
-      real(0x6e5f06564db500LL),real(0xdaf2ed1ea74a00LL),
-      real(0x1dec9104c41ff00LL),real(0x4ae6e1cc221e400LL),
-      real(0xe5bde12a5950900LL),real(0x3ec229ad8ff17e00LL),
-      reale(10869LL,0xc2e1de8335300LL),reale(-91551LL,0x2adfd2129800LL),
-      reale(176075LL,0x65a5499a95d00LL),reale(-83532LL,0x676df8fc1b200LL),
-      reale(-77995LL,0xeeecccb63a700LL),reale(78539LL,0xb0828e93b4c00LL),
-      reale(-12982LL,0x9261e28eeb100LL),reale(6537LL,0x5c156837be600LL),
-      reale(-9405LL,0x6848a436fb00LL),reale(2071LL,0xc05f52f113a50LL),
+      // C4[2], coeff of eps^10, polynomial in n of order 16
+      real(0x285b74a086cfe00LL),real(0x61629f583f6fc20LL),
+      real(0x11e1f0840e822e40LL),real(0x4a2acb7177936860LL),
+      reale(12009LL,0x162afd0a23e80LL),reale(-92026LL,0xae3949b4a64a0LL),
+      reale(150657LL,0xe159fc0830ec0LL),reale(-36241LL,0x76fc4335e50e0LL),
+      reale(-83843LL,0x70cd1eb127f00LL),reale(48929LL,0x80db803df8d20LL),
+      reale(-9248LL,0xb58ee58c26f40LL),reale(14370LL,0x3118e0d87960LL),
+      reale(-6546LL,0x3055ff6d4bf80LL),reale(3681LL,0xa71da4ef975a0LL),
+      reale(-4056LL,0x942d314a74fc0LL),real(0x201a58611bc4e1e0LL),
+      real(0x8ca8a9bec5eeb0cLL),reale(0x56f3f0LL,0x5eb10eb5f946bLL),
+      // C4[2], coeff of eps^9, polynomial in n of order 17
+      real(0x8f791b0d72f300LL),real(0x116eee5fb7db000LL),
+      real(0x2544a69b0af6d00LL),real(0x5ae50a5c0f6ba00LL),
+      real(0x10e6ab279c402700LL),real(0x472bda650b6c4400LL),
+      reale(11750LL,0x4a89b28f5a100LL),reale(-92513LL,0xe33280e9ece00LL),
+      reale(158574LL,0x53a9410005b00LL),reale(-47897LL,0x404729fced800LL),
+      reale(-84920LL,0x4b5af2b30d500LL),reale(56401LL,0x32e93db7ce200LL),
+      reale(-8957LL,0xc7ca02b378f00LL),reale(13782LL,0xdee88bf296c00LL),
+      reale(-7713LL,0x851267fe50900LL),reale(2126LL,0x5791e5314f600LL),
+      reale(-3274LL,0x16bff2e69c300LL),real(0x4230ff2c7e6defd0LL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[59]
+      // C4[2], coeff of eps^8, polynomial in n of order 18
       real(0x289b91a48ebf00LL),real(0x45ee5b14465380LL),
       real(0x7f92734c023800LL),real(0xfa5ad187871c80LL),
       real(0x21cddd2df61b100LL),real(0x5372a978dde2580LL),
@@ -2242,191 +2283,182 @@ namespace GeographicLib {
       reale(-9609LL,0x1045496e28e00LL),reale(11585LL,0x75dbe72dc9280LL),
       reale(-9221LL,0xdd36d29668700LL),real(0x18709d3bc0679b80LL),
       real(0x5b7e325c6742390LL),reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[60]
-      real(0x8f791b0d72f300LL),real(0x116eee5fb7db000LL),
-      real(0x2544a69b0af6d00LL),real(0x5ae50a5c0f6ba00LL),
-      real(0x10e6ab279c402700LL),real(0x472bda650b6c4400LL),
-      reale(11750LL,0x4a89b28f5a100LL),reale(-92513LL,0xe33280e9ece00LL),
-      reale(158574LL,0x53a9410005b00LL),reale(-47897LL,0x404729fced800LL),
-      reale(-84920LL,0x4b5af2b30d500LL),reale(56401LL,0x32e93db7ce200LL),
-      reale(-8957LL,0xc7ca02b378f00LL),reale(13782LL,0xdee88bf296c00LL),
-      reale(-7713LL,0x851267fe50900LL),reale(2126LL,0x5791e5314f600LL),
-      reale(-3274LL,0x16bff2e69c300LL),real(0x4230ff2c7e6defd0LL),
+      // C4[2], coeff of eps^7, polynomial in n of order 19
+      real(0xd108e5f6f6100LL),real(0x14cfb44a7f1600LL),
+      real(0x227bc5972bab00LL),real(0x3bea4dd1053000LL),
+      real(0x6e5f06564db500LL),real(0xdaf2ed1ea74a00LL),
+      real(0x1dec9104c41ff00LL),real(0x4ae6e1cc221e400LL),
+      real(0xe5bde12a5950900LL),real(0x3ec229ad8ff17e00LL),
+      reale(10869LL,0xc2e1de8335300LL),reale(-91551LL,0x2adfd2129800LL),
+      reale(176075LL,0x65a5499a95d00LL),reale(-83532LL,0x676df8fc1b200LL),
+      reale(-77995LL,0xeeecccb63a700LL),reale(78539LL,0xb0828e93b4c00LL),
+      reale(-12982LL,0x9261e28eeb100LL),reale(6537LL,0x5c156837be600LL),
+      reale(-9405LL,0x6848a436fb00LL),reale(2071LL,0xc05f52f113a50LL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[61]
-      real(0x285b74a086cfe00LL),real(0x61629f583f6fc20LL),
-      real(0x11e1f0840e822e40LL),real(0x4a2acb7177936860LL),
-      reale(12009LL,0x162afd0a23e80LL),reale(-92026LL,0xae3949b4a64a0LL),
-      reale(150657LL,0xe159fc0830ec0LL),reale(-36241LL,0x76fc4335e50e0LL),
-      reale(-83843LL,0x70cd1eb127f00LL),reale(48929LL,0x80db803df8d20LL),
-      reale(-9248LL,0xb58ee58c26f40LL),reale(14370LL,0x3118e0d87960LL),
-      reale(-6546LL,0x3055ff6d4bf80LL),reale(3681LL,0xa71da4ef975a0LL),
-      reale(-4056LL,0x942d314a74fc0LL),real(0x201a58611bc4e1e0LL),
-      real(0x8ca8a9bec5eeb0cLL),reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[62]
-      real(0x12b65c49560e1680LL),real(0x4c91348dd4c57d00LL),
-      reale(12186LL,0xb870c2ef8b380LL),reale(-91200LL,0xb85c60cb26200LL),
-      reale(143440LL,0xa133e98363080LL),reale(-27238LL,0x5076fe0bbc700LL),
-      reale(-81725LL,0xe4f93bf99cd80LL),reale(43231LL,0xcee7486ccec00LL),
-      reale(-9772LL,0x4b82cb486ca80LL),reale(14177LL,0x876b1df11100LL),
-      reale(-5845LL,0xa68f0ab906780LL),reale(4733LL,0x71ff0d3b37600LL),
-      reale(-4035LL,0x511483b19e480LL),real(0x4b0e043dd17f5b00LL),
-      real(-0x5c6dac5851097e80LL),real(0x259ade3cf4689f28LL),
+      // C4[2], coeff of eps^6, polynomial in n of order 20
+      real(0x4748ad3ff9e80LL),real(0x6b926f7e60d60LL),real(0xa71fa4085b840LL),
+      real(0x10c991e0a3ab20LL),real(0x1c15b3b145b200LL),
+      real(0x314f7c7c43f8e0LL),real(0x5be1ff458cabc0LL),
+      real(0xb89930a80796a0LL),real(0x199734a3c07c580LL),
+      real(0x411aa25f2292460LL),real(0xcb87e4542581f40LL),
+      real(0x38e7a442bb914220LL),reale(10156LL,0x20944a9a6d900LL),
+      reale(-89266LL,0xae2af5b0a8fe0LL),reale(184683LL,0x63f792d3912c0LL),
+      reale(-110681LL,0x7635192f5ada0LL),reale(-62728LL,0xff020b803ec80LL),
+      reale(91791LL,0x3f8035a7d3b60LL),reale(-22896LL,0x337bb36408640LL),
+      real(-0x5652aea374b626e0LL),real(-0x38edb32bcbdda4acLL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[63]
-      reale(12302LL,0xe52cc8d8c2180LL),reale(-90163LL,0xdb821dbabdc40LL),
-      reale(136898LL,0x7ace803b76f00LL),reale(-20189LL,0xb7d2bfe8c21c0LL),
-      reale(-79168LL,0x1aef280283c80LL),reale(38835LL,0xfee0572864740LL),
-      reale(-10271LL,0xfbaa65f2c4a00LL),reale(13648LL,0x338b156f30cc0LL),
-      reale(-5469LL,0x7ffbd41c95780LL),reale(5349LL,0x619325bd73240LL),
-      reale(-3822LL,0x57b3a652500LL),real(0x729df2a6c14b77c0LL),
-      reale(-2074LL,0x6c230416d7280LL),real(0x193a4a0699e49d40LL),
-      real(0x6c8a3fc264f2d98LL),reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[64]
-      reale(130976LL,0x1a84c1eb6d80LL),reale(-14598LL,0xb0e2756e03a00LL),
-      reale(-76484LL,0xff93a7309a680LL),reale(35388LL,0xd1bf338007b00LL),
-      reale(-10664LL,0xe3def57487f80LL),reale(13004LL,0x14f125ca37c00LL),
-      reale(-5286LL,0xaab28c8cc3880LL),reale(5660LL,0xa57467d557d00LL),
-      reale(-3610LL,0x163a4d9a91180LL),reale(2326LL,0xf26507322be00LL),
-      reale(-2275LL,0x1951f47034a80LL),real(0x30f364de4c777f00LL),
-      real(-0x3139417308d0dc80LL),real(0x173bf41713ca3b88LL),
+      // C4[2], coeff of eps^5, polynomial in n of order 21
+      real(0x185346b40be80LL),real(0x234a30239ea00LL),real(0x345f5bcfbb580LL),
+      real(0x4fc2f91719900LL),real(0x7d257d9ac0c80LL),real(0xcb49d34f58800LL),
+      real(0x1580c944df8380LL),real(0x263bb5e9cb7700LL),
+      real(0x483bd94933da80LL),real(0x935c1fd3f92600LL),
+      real(0x14c807d3436d180LL),real(0x35e9298d8a45500LL),
+      real(0xac6bf9cef462880LL),real(0x318eb0c51232c400LL),
+      reale(9164LL,0xf22328f6f9f80LL),reale(-84729LL,0x87534c86a3300LL),
+      reale(191114LL,0x47ac3650f680LL),reale(-146269LL,0x9709796906200LL),
+      reale(-28125LL,0x50e5dddf7ed80LL),reale(95633LL,0xf3c35e98b1100LL),
+      reale(-42102LL,0x3348969c24480LL),reale(4250LL,0xa99770cb50078LL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[65]
-      reale(-73827LL,0x61b736418a780LL),reale(32637LL,0x887aa6de960e0LL),
-      reale(-10941LL,0x69b84ebb84640LL),reale(12348LL,0xdd9347a34b3a0LL),
-      reale(-5207LL,0xb9e55bea0c500LL),reale(5776LL,0x82c559a327660LL),
-      reale(-3446LL,0xd48e4a10ec3c0LL),reale(2676LL,0xdbe2bf3d4c920LL),
-      reale(-2314LL,0x93d76112ee280LL),real(0x45af1f46068fcbe0LL),
-      real(-0x4a646c774fde3ec0LL),real(0x127e48f8affd9ea0LL),
-      real(0x4e336f38ab11704LL),reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[66]
-      reale(-11116LL,0x4d006e1393a00LL),reale(11728LL,0x761e1ef822c00LL),
-      reale(-5179LL,0x65d829c0ade00LL),reale(5773LL,0x24fd2adb2f000LL),
-      reale(-3329LL,0xa0f3ce38e0200LL),reale(2908LL,0x836ab328fb400LL),
-      reale(-2292LL,0x9d62f8fb7a600LL),real(0x5681ee23b9ad7800LL),
-      real(-0x56cafdb120433600LL),real(0x21dbd9f992213c00LL),
-      real(-0x1d4bdf01a76d9200LL),real(0xf4e0cbd04176b20LL),
+      // C4[2], coeff of eps^4, polynomial in n of order 22
+      real(0x7c86a4240e80LL),real(0xaf5db2064cc0LL),real(0xfb958bed1300LL),
+      real(0x17080cf847940LL),real(0x2288f92359780LL),real(0x352f6beaa45c0LL),
+      real(0x54760062cdc00LL),real(0x8b024608ff240LL),real(0xeea60450a2080LL),
+      real(0x1af0609151bec0LL),real(0x33c8072244a500LL),
+      real(0x6bad7af287eb40LL),real(0xf83a707fcba980LL),
+      real(0x293d0a92ebeb7c0LL),real(0x87aa233703e6e00LL),
+      real(0x2855283ce7ee6440LL),reale(7785LL,0x74e297d243280LL),
+      reale(-76428LL,0xc6fbe2f330c0LL),reale(190726LL,0x777542b243700LL),
+      reale(-188316LL,0xefcf1a2055d40LL),reale(42101LL,0xccb76963dbb80LL),
+      reale(46959LL,0xb31b5803129c0LL),reale(-23683LL,0xbcd8d4b7d4688LL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[67]
-      reale(-5173LL,0x473b4cca7c600LL),reale(5700LL,0x1d26bd0962f00LL),
-      reale(-3249LL,0x75306f7043800LL),reale(3050LL,0xed985975b4100LL),
-      reale(-2252LL,0x10691cdccaa00LL),real(0x6370a1a9e900d300LL),
-      real(-0x5c955afee309e400LL),real(0x2eb3ea14003fe500LL),
-      real(-0x2e844e36822a7200LL),real(0xd8a8b891f217700LL),
-      real(0x388df4ca3a6fb20LL),reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[68]
-      reale(-3195LL,0xcbf6069e6fe00LL),reale(3129LL,0x198ba10e3f000LL),
-      reale(-2212LL,0x135876d83e200LL),real(0x6cf94ec7bfac7400LL),
-      real(-0x5f04d2df84f0ba00LL),real(0x39318494ff85f800LL),
-      real(-0x38939121c731d600LL),real(0x1854a6f7e2957c00LL),
-      real(-0x12decef0b13a7200LL),real(0xa9861a018e14120LL),
+      // C4[2], coeff of eps^3, polynomial in n of order 23
+      real(0x21a7e921c980LL),real(0x2e51be6e8f00LL),real(0x40c19fbec480LL),
+      real(0x5c1e6062c200LL),real(0x8599d6a9df80LL),real(0xc60160b77500LL),
+      real(0x12cb7c4c7da80LL),real(0x1d5985b996800LL),real(0x2f524aaed7580LL),
+      real(0x4f30941955b00LL),real(0x8a76dd63f7080LL),real(0xff32326380e00LL),
+      real(0x1f5b1b59928b80LL),real(0x42dd3cfeae4100LL),
+      real(0x9e90e4efcb8680LL),real(0x1b33e235264b400LL),
+      real(0x5cdaf2eb93f2180LL),real(0x1cd398a25fa82700LL),
+      reale(5865LL,0x9368046121c80LL),reale(-61724LL,0x1837736455a00LL),
+      reale(171645LL,0xcc7599f993780LL),reale(-213748LL,0x66d2fca290d00LL),
+      reale(126305LL,0x66263c2b93280LL),reale(-28945LL,0x341e78b58f18LL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[69]
-      reale(-2177LL,0x1ea7a5015eb00LL),real(0x73bced2a00a143a0LL),
-      real(-0x5fca97395e84bfc0LL),real(0x418b4cd8fc5e04e0LL),
-      real(-0x3e6c34ea7ddb8a80LL),real(0x212422dcacab1620LL),
-      real(-0x1f0466b0c7211540LL),real(0xa12130d17045760LL),
-      real(0x29b0aa486315dbcLL),reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[70]
-      real(-0x5fc4bec46509e480LL),real(0x48096a7e75900b00LL),
-      real(-0x41caf1fb886dd580LL),real(0x28558a32a56ef200LL),
-      real(-0x26dce3ddd1a42680LL),real(0x120433e2d2025900LL),
-      real(-0xce36e1803df1780LL),real(0x7a135866f905bb8LL),
+      // C4[2], coeff of eps^2, polynomial in n of order 24
+      real(0x5f08c3cb900LL),real(0x807038c0ca0LL),real(0xaffaed32440LL),
+      real(0xf4c5be483e0LL),real(0x15a2490f6f80LL),real(0x1f28eae1cb20LL),
+      real(0x2dce80c7fac0LL),real(0x44e60304c260LL),real(0x6a58ca3b2600LL),
+      real(0xa90e89d449a0LL),real(0x1160126eb5140LL),real(0x1db88b51940e0LL),
+      real(0x354168d7adc80LL),real(0x64e3bca9a8820LL),real(0xcc99ed98827c0LL),
+      real(0x1c3fb9ad58ff60LL),real(0x45c01ca2899300LL),
+      real(0xc88852534b86a0LL),real(0x2d1eac1f8a97e40LL),
+      real(0xee21e1c2e9afde0LL),reale(3238LL,0x9997f46a24980LL),
+      reale(-36435LL,0xc0128255e4520LL),reale(105254LL,0x7fca8779a54c0LL),
+      reale(-115780LL,0xd079e2d63c60LL),reale(43417LL,0x7b1d24aefa95cLL),
       reale(0x56f3f0LL,0x5eb10eb5f946bLL),
-      // _C4x[71]
-      real(-0x4837c78c0550480LL),real(0x313ba08613af040LL),
-      real(-0x2ee33229a4bc300LL),real(0x1a152ee5f2ae9c0LL),
-      real(-0x172de5252da0180LL),real(0x824fa762c0c340LL),
-      real(0x2180172e018ad8LL),reale(379902LL,0xf53f00fb109e5LL),
-      // _C4x[72]
-      real(-0x326f6045f923c80LL),real(0x1fb1615f9d3a600LL),
-      real(-0x1db1797638c1780LL),real(0xe9780531c07300LL),
-      real(-0x9d24cc38e5d280LL),real(0x60cf9034bf3868LL),
-      reale(379902LL,0xf53f00fb109e5LL),
-      // _C4x[73]
-      real(-0x46e25cf59280LL),real(0x290af5269020LL),real(-0x22f7c7b01940LL),
-      real(0xd08f4d0d560LL),real(0x355c24081bcLL),real(0xc015674546693d9LL),
-      // _C4x[74]
-      real(-0x265f8c17d00LL),real(0x13bddd35200LL),real(-0xcadd323f00LL),
-      real(0x80e0d83bf0LL),real(0xa1c12e8b2dd1e3LL),
-      // _C4x[75]
-      real(-0x184be2a300LL),real(0x97a60f680LL),real(0x26a83de30LL),
-      real(0xb18f66b7a5ca3LL),
-      // _C4x[76]
-      real(-0x835f00LL),real(0x557ff0LL),real(0x89825e2a6bLL),
-      // _C4x[77]
-      real(0x2c2a8cLL),real(0xfe89d46f33LL),
-      // _C4x[78]
-      real(-0x388cfdf100LL),real(-0x5500729200LL),real(-0x8250066300LL),
-      real(-0xcc2d29dc00LL),real(-0x147bd04f500LL),real(-0x21c7b15a600LL),
-      real(-0x396d13e6700LL),real(-0x650be18b000LL),real(-0xb8f375f7900LL),
-      real(-0x16253c45ba00LL),real(-0x2cc1928ceb00LL),real(-0x6065d92f8400LL),
-      real(-0xe04f74737d00LL),real(-0x23eadf138ce00LL),
-      real(-0x682920857ef00LL),real(-0x1651f4aee45800LL),
-      real(-0x61a68e7d270100LL),real(-0x281b43aa424e200LL),
-      real(-0x2bddd20238857300LL),reale(10668LL,0x544ee8e52d400LL),
-      reale(-45341LL,0x99b0a231ffb00LL),reale(90680LL,0xcc9ebb9c00a00LL),
-      reale(-84204LL,0x66912d3848900LL),reale(28944LL,0xfcbe1874a70e8LL),
+      // C4[3], coeff of eps^26, polynomial in n of order 0
+      real(433472LL),real(0x10f81f3a9dLL),
+      // C4[3], coeff of eps^25, polynomial in n of order 1
+      real(0x48b3200LL),real(0x130f510LL),real(0x958a9334879LL),
+      // C4[3], coeff of eps^24, polynomial in n of order 2
+      real(0x39ce1000LL),real(-0x2d16c800LL),real(0x197c4e20LL),
+      real(0x33a763b318f5LL),
+      // C4[3], coeff of eps^23, polynomial in n of order 3
+      real(0xe7cfd39aa00LL),real(-0xe6239d55400LL),real(0x44ffe5cce00LL),
+      real(0x123fa804df0LL),real(0x73400ac32a3f24fLL),
+      // C4[3], coeff of eps^22, polynomial in n of order 4
+      real(0x12e19d548000LL),real(-0x130f2c71c000LL),real(0x7e08a8b4000LL),
+      real(-0x69e0a004000LL),real(0x39175efa340LL),real(0x59a39697cb86721LL),
+      // C4[3], coeff of eps^21, polynomial in n of order 5
+      real(0xe1a59555817c700LL),real(-0xce92ef160470400LL),
+      real(0x6a50b28bc94d100LL),real(-0x6ec5ce0328fa200LL),
+      real(0x1e2919432b73b00LL),real(0x81169f96b647f8LL),
+      reale(0x2893f8LL,0xb4b906dd74543LL),
+      // C4[3], coeff of eps^20, polynomial in n of order 6
+      real(0x4a951ec0f743800LL),real(-0x39128060ba74400LL),
+      real(0x258d1de3ebd5000LL),real(-0x25e6a8ece22dc00LL),
+      real(0xe953314d336800LL),real(-0xd6fbba5b80b400LL),
+      real(0x6d3d6d3e79ea90LL),reale(531864LL,0x2425015f7daa7LL),
+      // C4[3], coeff of eps^19, polynomial in n of order 7
+      real(0x7366685d2da15300LL),real(-0x46390dd9eadeba00LL),
+      real(0x3de3739917104900LL),real(-0x34e3ad131262bc00LL),
+      real(0x1ae64995e9a59f00LL),real(-0x1d6cea9b561f3e00LL),
+      real(0x70d3407961b9500LL),real(0x1ea45bc7b594048LL),
       reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[79]
-      real(-0xb6a5fc8800LL),real(-0x11a0a388400LL),real(-0x1bda05d7000LL),
-      real(-0x2d25cb21c00LL),real(-0x4b5283d5800LL),real(-0x81d5381f400LL),
-      real(-0xe84e582c000LL),real(-0x1b2017768c00LL),real(-0x354f35942800LL),
-      real(-0x6f49195e6400LL),real(-0xf9ffb1d81000LL),real(-0x267769207fc00LL),
-      real(-0x6a9801634f800LL),real(-0x15adc2fc41d400LL),
-      real(-0x5947d2bb916000LL),real(-0x222d7eabcda6c00LL),
-      real(-0x22707489da53c800LL),reale(7620LL,0x3c385d35fbc00LL),
-      reale(-29198LL,0x7793d371d5000LL),reale(53341LL,0xa58a8c79e2400LL),
-      reale(-51818LL,0x6680b95db6800LL),reale(25908LL,0xccbfa35124c00LL),
-      reale(-5263LL,0x466912d384890LL),reale(0x2893f8LL,0xb4b906dd74543LL),
-      // _C4x[80]
-      real(-0xcd30266b700LL),real(-0x147d4e1fec00LL),real(-0x21a6b4a64100LL),
-      real(-0x390579acce00LL),real(-0x6423741d2b00LL),real(-0xb749b833f000LL),
-      real(-0x1602ad6953500LL),real(-0x2ccfc753d1200LL),
-      real(-0x61e5d62301f00LL),real(-0xe995b2fcff400LL),
-      real(-0x270c826fb7a900LL),real(-0x7a09e7f3045600LL),
-      real(-0x1dfb4c385ed9300LL),real(-0xaddceca1091f800LL),
-      reale(-2625LL,0x3ba17c0246300LL),reale(33433LL,0x20d0a109f6600LL),
-      reale(-114657LL,0x5c2192fdc7900LL),reale(175907LL,0x1d4b03fe80400LL),
-      reale(-116169LL,0x84e81ccb0ef00LL),reale(-3811LL,0xe1e3d16502200LL),
-      reale(45340LL,0x664f5dce00500LL),reale(-17206LL,0xf008bd8c1d988LL),
+      // C4[3], coeff of eps^18, polynomial in n of order 8
+      reale(2991LL,0x40e0c1e8a0000LL),real(-0x5c0b6a6cd5328000LL),
+      real(0x6cf3b04ea6358000LL),real(-0x47da0c907a958000LL),
+      real(0x334344c895550000LL),real(-0x3257cd9b75628000LL),
+      real(0x11d874d9e96c8000LL),real(-0x1273b92365d58000LL),
+      real(0x8b048eddb8dae80LL),reale(0x79bbeaLL,0x1e2b14985cfc9LL),
+      // C4[3], coeff of eps^17, polynomial in n of order 9
+      reale(4599LL,0x20675bc677c00LL),reale(-2191LL,0x95924f3b76000LL),
+      reale(3019LL,0xad2c946b04400LL),real(-0x5cc951aa5f7ff800LL),
+      real(0x61f2b89850d68c00LL),real(-0x49aa7ace4eb85000LL),
+      real(0x26482ceb1d4d5400LL),real(-0x2b88fb70a186a800LL),
+      real(0x8bf6f0c9a679c00LL),real(0x26ce624431e62e0LL),
       reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[81]
-      real(-0x3f0527da8000LL),real(-0x69410a894000LL),real(-0xb5f68cf74000LL),
-      real(-0x14766cd18c000LL),real(-0x2696134420000LL),
-      real(-0x4cf42ca274000LL),real(-0xa45199d7cc000LL),
-      real(-0x17e337e696c000LL),real(-0x3e169088698000LL),
-      real(-0xbbd1c494494000LL),real(-0x2c70014b4ca4000LL),
-      real(-0xf67e7406420c000LL),reale(-3525LL,0x349c0ad9f0000LL),
-      reale(41859LL,0x1cfdfa000c000LL),reale(-129840LL,0x6d28af104000LL),
-      reale(166586LL,0x5d10da3394000LL),reale(-59707LL,0xa04083fc78000LL),
-      reale(-68021LL,0x5fb808ba6c000LL),reale(75721LL,0x1307a9002c000LL),
-      reale(-24385LL,0x3f4ba28674000LL),real(0x6534ccbfa35124c0LL),
+      // C4[3], coeff of eps^16, polynomial in n of order 10
+      real(0x383bee2531d2a000LL),real(-0x2821094d061d1000LL),
+      real(0x2c347b321d4c8000LL),real(-0x125d6736b20ff000LL),
+      real(0x1a6c4162f9ae6000LL),real(-0xdca07dd1a07d000LL),
+      real(0xba2cc7913be4000LL),real(-0xa8a49fd40deb000LL),
+      real(0x36dcb24ee422000LL),real(-0x4159df2ed6e9000LL),
+      real(0x1bdad6784709c40LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
+      // C4[3], coeff of eps^15, polynomial in n of order 11
+      reale(7381LL,0x14c34c0c1f400LL),reale(-13258LL,0xa462523f3800LL),
+      reale(7086LL,0x404eb1053bc00LL),reale(-4055LL,0x1b129d1616000LL),
+      reale(5287LL,0x17e93cc880400LL),real(-0x7bc6aed7afe87800LL),
+      reale(2758LL,0x364797381cc00LL),real(-0x676ee80244a35000LL),
+      real(0x3b6d32d9ca041400LL),real(-0x43e3e0c280942800LL),
+      real(0xa86d2e316b1dc00LL),real(0x300bec0027818e0LL),
       reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[82]
-      real(-0x11fa490472e00LL),real(-0x1fe0e98340400LL),
-      real(-0x3b2a552443a00LL),real(-0x73f5544ad2000LL),
-      real(-0xf2e5765f90600LL),real(-0x2290ce0f423c00LL),
-      real(-0x57b83400ee1200LL),real(-0x1023f65b9bfd800LL),
-      real(-0x3b36c6db61bde00LL),real(-0x13c7b72049527400LL),
-      reale(-4324LL,0x8c4173b351600LL),reale(48359LL,0x7d21dc7197000LL),
-      reale(-137344LL,0x3e76a768c4a00LL),reale(148676LL,0xd51cb5c775400LL),
-      reale(-14755LL,0x5760f43613e00LL),reale(-92176LL,0xcc2ef6d3ab800LL),
-      reale(60290LL,0x88af4d43b7200LL),reale(-5856LL,0x7368e62f71c00LL),
-      real(-0x48b16aa4982d9a00LL),real(-0x51dba59b00547450LL),
+      // C4[3], coeff of eps^14, polynomial in n of order 12
+      reale(66948LL,0x4f30b3f870000LL),reale(-52647LL,0x9795c7cc58000LL),
+      reale(7561LL,0xd0b8bda7a8000LL),reale(-13027LL,0x827613ff28000LL),
+      reale(8130LL,0xd3b0b583a0000LL),reale(-3524LL,0x2d6f89c1d8000LL),
+      reale(5530LL,0x8b9708b698000LL),real(-0x7e52c154efd58000LL),
+      reale(2356LL,0x7673a06ad0000LL),real(-0x6f6a34d21b028000LL),
+      real(0x220d8444fca88000LL),real(-0x2fac85fa2e858000LL),
+      real(0x11c823101280e280LL),reale(0x79bbeaLL,0x1e2b14985cfc9LL),
+      // C4[3], coeff of eps^13, polynomial in n of order 13
+      reale(-129174LL,0xa7b7643d7c700LL),reale(59789LL,0xf9dc41e63d400LL),
+      reale(65695LL,0x9083acc5cc100LL),reale(-58446LL,0xd0d3391e9e600LL),
+      reale(8184LL,0x5e79915d1b00LL),reale(-12354LL,0x7c56a698f3800LL),
+      reale(9463LL,0x4211f61d49500LL),reale(-2967LL,0x1ed471cad8a00LL),
+      reale(5543LL,0x52a28a556ef00LL),reale(-2250LL,0x1e08b645e9c00LL),
+      real(0x6b0d1cda5c5fe900LL),real(-0x70ab303245f3d200LL),
+      real(0xb596d16f1a34300LL),real(0x35b4de912478078LL),
       reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[83]
-      real(-0x5318540751000LL),real(-0xa0702ad537800LL),
-      real(-0x14a9549a688000LL),real(-0x2e31b9dc878800LL),
-      real(-0x72dceb1c83f000LL),real(-0x14a6c8c8df91800LL),
-      real(-0x49c3e43ec426000LL),real(-0x17df3e19aed32800LL),
-      reale(-5018LL,0x6431109e13000LL),reale(53301LL,0x74feac5bf4800LL),
-      reale(-140140LL,0xa8f9e9b6bc000LL),reale(129320LL,0x1fd8eca933800LL),
-      reale(16403LL,0x87db178e25000LL),reale(-95279LL,0xe19a1987da800LL),
-      reale(40665LL,0x6f4b03ec9e000LL),real(-0x1c82af8b65ac6800LL),
-      reale(8049LL,0x334ede6a77000LL),reale(-7541LL,0xfa4ef74ea0800LL),
-      real(0x49ca297e3ffdbce0LL),reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[84]
+      // C4[3], coeff of eps^12, polynomial in n of order 14
+      reale(-6934LL,0xf03d448429800LL),reale(63382LL,0x668969a617c00LL),
+      reale(-132590LL,0xf420d1877000LL),reale(69768LL,0x70d2052fd2400LL),
+      reale(63007LL,0x6d053a2cb4800LL),reale(-65234LL,0x47d61e47e8c00LL),
+      reale(9601LL,0xec9983923a000LL),reale(-11043LL,0xbce846bd33400LL),
+      reale(11048LL,0xa50acd625f800LL),reale(-2546LL,0x83680e9e89c00LL),
+      reale(5107LL,0xc83f2d67d000LL),reale(-2698LL,0x7a1b733ac4400LL),
+      real(0x36af107261fea800LL),real(-0x57b6b3b8f7f45400LL),
+      real(0x1b355635bf037310LL),reale(0x79bbeaLL,0x1e2b14985cfc9LL),
+      // C4[3], coeff of eps^11, polynomial in n of order 15
+      real(-0x718d19ce618f700LL),real(-0x22292bb4d2a0a600LL),
+      reale(-6562LL,0x84471fa4f9b00LL),reale(61876LL,0xa080215cbc400LL),
+      reale(-135760LL,0x93f5da0ef4d00LL),reale(81504LL,0x4116e653fae00LL),
+      reale(58147LL,0xb03676e9edf00LL),reale(-73012LL,0x28a4ca281d800LL),
+      reale(12405LL,0x6d2fd911f1100LL),reale(-8887LL,0x205adeb490200LL),
+      reale(12677LL,0x826d436a8a300LL),reale(-2578LL,0x92881320bec00LL),
+      reale(3947LL,0x879d1c7c5500LL),reale(-3193LL,0x6a0d793d15600LL),
+      real(0x7343398f272e700LL),real(0x20b3728b7b6b2d8LL),
+      reale(0x79bbeaLL,0x1e2b14985cfc9LL),
+      // C4[3], coeff of eps^10, polynomial in n of order 16
+      real(-0xaaaed768da0000LL),real(-0x1d8d58546174000LL),
+      real(-0x650ff776c6dc000LL),real(-0x1f0fa133b6eac000LL),
+      reale(-6126LL,0x7974ea8448000LL),reale(59813LL,0x741ec012c000LL),
+      reale(-138412LL,0x58b7c4d32c000LL),reale(95264LL,0x22057cd374000LL),
+      reale(50003LL,0x3a5ca8a530000LL),reale(-81503LL,0x84cf1d8c000LL),
+      reale(17542LL,0xf2776c79b4000LL),reale(-5813LL,0x39c49c84d4000LL),
+      reale(13748LL,0x38a6c4d018000LL),reale(-3548LL,0x4094081eac000LL),
+      real(0x78ab12d1827bc000LL),reale(-2958LL,0x94db7ad074000LL),
+      real(0x2bef42096127d7c0LL),reale(0x79bbeaLL,0x1e2b14985cfc9LL),
+      // C4[3], coeff of eps^9, polynomial in n of order 17
       real(-0x3cadc0edd6600LL),real(-0x8587ee4c4e000LL),
       real(-0x14633459f95a00LL),real(-0x397bc2059d8400LL),
       real(-0xc89f8adb490e00LL),real(-0x3f2a86a64b5a800LL),
@@ -2437,175 +2469,170 @@ namespace GeographicLib {
       real(0x736580900f31ae00LL),real(-0x336f49c74ee95c00LL),
       real(-0x249e756eeea0600LL),real(-0x13841fc89043bb0LL),
       reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[85]
-      real(-0xaaaed768da0000LL),real(-0x1d8d58546174000LL),
-      real(-0x650ff776c6dc000LL),real(-0x1f0fa133b6eac000LL),
-      reale(-6126LL,0x7974ea8448000LL),reale(59813LL,0x741ec012c000LL),
-      reale(-138412LL,0x58b7c4d32c000LL),reale(95264LL,0x22057cd374000LL),
-      reale(50003LL,0x3a5ca8a530000LL),reale(-81503LL,0x84cf1d8c000LL),
-      reale(17542LL,0xf2776c79b4000LL),reale(-5813LL,0x39c49c84d4000LL),
-      reale(13748LL,0x38a6c4d018000LL),reale(-3548LL,0x4094081eac000LL),
-      real(0x78ab12d1827bc000LL),reale(-2958LL,0x94db7ad074000LL),
-      real(0x2bef42096127d7c0LL),reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[86]
-      real(-0x718d19ce618f700LL),real(-0x22292bb4d2a0a600LL),
-      reale(-6562LL,0x84471fa4f9b00LL),reale(61876LL,0xa080215cbc400LL),
-      reale(-135760LL,0x93f5da0ef4d00LL),reale(81504LL,0x4116e653fae00LL),
-      reale(58147LL,0xb03676e9edf00LL),reale(-73012LL,0x28a4ca281d800LL),
-      reale(12405LL,0x6d2fd911f1100LL),reale(-8887LL,0x205adeb490200LL),
-      reale(12677LL,0x826d436a8a300LL),reale(-2578LL,0x92881320bec00LL),
-      reale(3947LL,0x879d1c7c5500LL),reale(-3193LL,0x6a0d793d15600LL),
-      real(0x7343398f272e700LL),real(0x20b3728b7b6b2d8LL),
-      reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[87]
-      reale(-6934LL,0xf03d448429800LL),reale(63382LL,0x668969a617c00LL),
-      reale(-132590LL,0xf420d1877000LL),reale(69768LL,0x70d2052fd2400LL),
-      reale(63007LL,0x6d053a2cb4800LL),reale(-65234LL,0x47d61e47e8c00LL),
-      reale(9601LL,0xec9983923a000LL),reale(-11043LL,0xbce846bd33400LL),
-      reale(11048LL,0xa50acd625f800LL),reale(-2546LL,0x83680e9e89c00LL),
-      reale(5107LL,0xc83f2d67d000LL),reale(-2698LL,0x7a1b733ac4400LL),
-      real(0x36af107261fea800LL),real(-0x57b6b3b8f7f45400LL),
-      real(0x1b355635bf037310LL),reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[88]
-      reale(-129174LL,0xa7b7643d7c700LL),reale(59789LL,0xf9dc41e63d400LL),
-      reale(65695LL,0x9083acc5cc100LL),reale(-58446LL,0xd0d3391e9e600LL),
-      reale(8184LL,0x5e79915d1b00LL),reale(-12354LL,0x7c56a698f3800LL),
-      reale(9463LL,0x4211f61d49500LL),reale(-2967LL,0x1ed471cad8a00LL),
-      reale(5543LL,0x52a28a556ef00LL),reale(-2250LL,0x1e08b645e9c00LL),
-      real(0x6b0d1cda5c5fe900LL),real(-0x70ab303245f3d200LL),
-      real(0xb596d16f1a34300LL),real(0x35b4de912478078LL),
-      reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[89]
-      reale(66948LL,0x4f30b3f870000LL),reale(-52647LL,0x9795c7cc58000LL),
-      reale(7561LL,0xd0b8bda7a8000LL),reale(-13027LL,0x827613ff28000LL),
-      reale(8130LL,0xd3b0b583a0000LL),reale(-3524LL,0x2d6f89c1d8000LL),
-      reale(5530LL,0x8b9708b698000LL),real(-0x7e52c154efd58000LL),
-      reale(2356LL,0x7673a06ad0000LL),real(-0x6f6a34d21b028000LL),
-      real(0x220d8444fca88000LL),real(-0x2fac85fa2e858000LL),
-      real(0x11c823101280e280LL),reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[90]
-      reale(7381LL,0x14c34c0c1f400LL),reale(-13258LL,0xa462523f3800LL),
-      reale(7086LL,0x404eb1053bc00LL),reale(-4055LL,0x1b129d1616000LL),
-      reale(5287LL,0x17e93cc880400LL),real(-0x7bc6aed7afe87800LL),
-      reale(2758LL,0x364797381cc00LL),real(-0x676ee80244a35000LL),
-      real(0x3b6d32d9ca041400LL),real(-0x43e3e0c280942800LL),
-      real(0xa86d2e316b1dc00LL),real(0x300bec0027818e0LL),
+      // C4[3], coeff of eps^8, polynomial in n of order 18
+      real(-0x5318540751000LL),real(-0xa0702ad537800LL),
+      real(-0x14a9549a688000LL),real(-0x2e31b9dc878800LL),
+      real(-0x72dceb1c83f000LL),real(-0x14a6c8c8df91800LL),
+      real(-0x49c3e43ec426000LL),real(-0x17df3e19aed32800LL),
+      reale(-5018LL,0x6431109e13000LL),reale(53301LL,0x74feac5bf4800LL),
+      reale(-140140LL,0xa8f9e9b6bc000LL),reale(129320LL,0x1fd8eca933800LL),
+      reale(16403LL,0x87db178e25000LL),reale(-95279LL,0xe19a1987da800LL),
+      reale(40665LL,0x6f4b03ec9e000LL),real(-0x1c82af8b65ac6800LL),
+      reale(8049LL,0x334ede6a77000LL),reale(-7541LL,0xfa4ef74ea0800LL),
+      real(0x49ca297e3ffdbce0LL),reale(0x79bbeaLL,0x1e2b14985cfc9LL),
+      // C4[3], coeff of eps^7, polynomial in n of order 19
+      real(-0x11fa490472e00LL),real(-0x1fe0e98340400LL),
+      real(-0x3b2a552443a00LL),real(-0x73f5544ad2000LL),
+      real(-0xf2e5765f90600LL),real(-0x2290ce0f423c00LL),
+      real(-0x57b83400ee1200LL),real(-0x1023f65b9bfd800LL),
+      real(-0x3b36c6db61bde00LL),real(-0x13c7b72049527400LL),
+      reale(-4324LL,0x8c4173b351600LL),reale(48359LL,0x7d21dc7197000LL),
+      reale(-137344LL,0x3e76a768c4a00LL),reale(148676LL,0xd51cb5c775400LL),
+      reale(-14755LL,0x5760f43613e00LL),reale(-92176LL,0xcc2ef6d3ab800LL),
+      reale(60290LL,0x88af4d43b7200LL),reale(-5856LL,0x7368e62f71c00LL),
+      real(-0x48b16aa4982d9a00LL),real(-0x51dba59b00547450LL),
       reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[91]
-      real(0x383bee2531d2a000LL),real(-0x2821094d061d1000LL),
-      real(0x2c347b321d4c8000LL),real(-0x125d6736b20ff000LL),
-      real(0x1a6c4162f9ae6000LL),real(-0xdca07dd1a07d000LL),
-      real(0xba2cc7913be4000LL),real(-0xa8a49fd40deb000LL),
-      real(0x36dcb24ee422000LL),real(-0x4159df2ed6e9000LL),
-      real(0x1bdad6784709c40LL),reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[92]
-      reale(4599LL,0x20675bc677c00LL),reale(-2191LL,0x95924f3b76000LL),
-      reale(3019LL,0xad2c946b04400LL),real(-0x5cc951aa5f7ff800LL),
-      real(0x61f2b89850d68c00LL),real(-0x49aa7ace4eb85000LL),
-      real(0x26482ceb1d4d5400LL),real(-0x2b88fb70a186a800LL),
-      real(0x8bf6f0c9a679c00LL),real(0x26ce624431e62e0LL),
+      // C4[3], coeff of eps^6, polynomial in n of order 20
+      real(-0x3f0527da8000LL),real(-0x69410a894000LL),real(-0xb5f68cf74000LL),
+      real(-0x14766cd18c000LL),real(-0x2696134420000LL),
+      real(-0x4cf42ca274000LL),real(-0xa45199d7cc000LL),
+      real(-0x17e337e696c000LL),real(-0x3e169088698000LL),
+      real(-0xbbd1c494494000LL),real(-0x2c70014b4ca4000LL),
+      real(-0xf67e7406420c000LL),reale(-3525LL,0x349c0ad9f0000LL),
+      reale(41859LL,0x1cfdfa000c000LL),reale(-129840LL,0x6d28af104000LL),
+      reale(166586LL,0x5d10da3394000LL),reale(-59707LL,0xa04083fc78000LL),
+      reale(-68021LL,0x5fb808ba6c000LL),reale(75721LL,0x1307a9002c000LL),
+      reale(-24385LL,0x3f4ba28674000LL),real(0x6534ccbfa35124c0LL),
       reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[93]
-      reale(2991LL,0x40e0c1e8a0000LL),real(-0x5c0b6a6cd5328000LL),
-      real(0x6cf3b04ea6358000LL),real(-0x47da0c907a958000LL),
-      real(0x334344c895550000LL),real(-0x3257cd9b75628000LL),
-      real(0x11d874d9e96c8000LL),real(-0x1273b92365d58000LL),
-      real(0x8b048eddb8dae80LL),reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[94]
-      real(0x7366685d2da15300LL),real(-0x46390dd9eadeba00LL),
-      real(0x3de3739917104900LL),real(-0x34e3ad131262bc00LL),
-      real(0x1ae64995e9a59f00LL),real(-0x1d6cea9b561f3e00LL),
-      real(0x70d3407961b9500LL),real(0x1ea45bc7b594048LL),
+      // C4[3], coeff of eps^5, polynomial in n of order 21
+      real(-0xcd30266b700LL),real(-0x147d4e1fec00LL),real(-0x21a6b4a64100LL),
+      real(-0x390579acce00LL),real(-0x6423741d2b00LL),real(-0xb749b833f000LL),
+      real(-0x1602ad6953500LL),real(-0x2ccfc753d1200LL),
+      real(-0x61e5d62301f00LL),real(-0xe995b2fcff400LL),
+      real(-0x270c826fb7a900LL),real(-0x7a09e7f3045600LL),
+      real(-0x1dfb4c385ed9300LL),real(-0xaddceca1091f800LL),
+      reale(-2625LL,0x3ba17c0246300LL),reale(33433LL,0x20d0a109f6600LL),
+      reale(-114657LL,0x5c2192fdc7900LL),reale(175907LL,0x1d4b03fe80400LL),
+      reale(-116169LL,0x84e81ccb0ef00LL),reale(-3811LL,0xe1e3d16502200LL),
+      reale(45340LL,0x664f5dce00500LL),reale(-17206LL,0xf008bd8c1d988LL),
       reale(0x79bbeaLL,0x1e2b14985cfc9LL),
-      // _C4x[95]
-      real(0x4a951ec0f743800LL),real(-0x39128060ba74400LL),
-      real(0x258d1de3ebd5000LL),real(-0x25e6a8ece22dc00LL),
-      real(0xe953314d336800LL),real(-0xd6fbba5b80b400LL),
-      real(0x6d3d6d3e79ea90LL),reale(531864LL,0x2425015f7daa7LL),
-      // _C4x[96]
-      real(0xe1a59555817c700LL),real(-0xce92ef160470400LL),
-      real(0x6a50b28bc94d100LL),real(-0x6ec5ce0328fa200LL),
-      real(0x1e2919432b73b00LL),real(0x81169f96b647f8LL),
-      reale(0x2893f8LL,0xb4b906dd74543LL),
-      // _C4x[97]
-      real(0x12e19d548000LL),real(-0x130f2c71c000LL),real(0x7e08a8b4000LL),
-      real(-0x69e0a004000LL),real(0x39175efa340LL),real(0x59a39697cb86721LL),
-      // _C4x[98]
-      real(0xe7cfd39aa00LL),real(-0xe6239d55400LL),real(0x44ffe5cce00LL),
-      real(0x123fa804df0LL),real(0x73400ac32a3f24fLL),
-      // _C4x[99]
-      real(0x39ce1000LL),real(-0x2d16c800LL),real(0x197c4e20LL),
-      real(0x33a763b318f5LL),
-      // _C4x[100]
-      real(0x48b3200LL),real(0x130f510LL),real(0x958a9334879LL),
-      // _C4x[101]
-      real(433472LL),real(0x10f81f3a9dLL),
-      // _C4x[102]
-      real(0x43707cc00LL),real(0x72363ea00LL),real(0xc6cade800LL),
-      real(0x164b8d6600LL),real(0x2966060400LL),real(0x4fe5ac6200LL),
-      real(0xa1231b2000LL),real(0x155e2e7de00LL),real(0x30194583c00LL),
-      real(0x741fc16da00LL),real(0x131155285800LL),real(0x379d38605600LL),
-      real(0xb96166967400LL),real(0x2e2dfa3db5200LL),real(0xee14dc9ed9000LL),
-      real(0x752e44962ece00LL),real(0x9cf0406db58ac00LL),
-      reale(-3008LL,0x32d1e931ca00LL),reale(16844LL,0xbb0354c82c800LL),
-      reale(-48008LL,0x849ce7f8b4600LL),reale(77726LL,0x663ee9f36e400LL),
-      reale(-64772LL,0x20e7b524200LL),reale(21050LL,0xe65bb4b1eddc0LL),
+      // C4[3], coeff of eps^4, polynomial in n of order 22
+      real(-0xb6a5fc8800LL),real(-0x11a0a388400LL),real(-0x1bda05d7000LL),
+      real(-0x2d25cb21c00LL),real(-0x4b5283d5800LL),real(-0x81d5381f400LL),
+      real(-0xe84e582c000LL),real(-0x1b2017768c00LL),real(-0x354f35942800LL),
+      real(-0x6f49195e6400LL),real(-0xf9ffb1d81000LL),real(-0x267769207fc00LL),
+      real(-0x6a9801634f800LL),real(-0x15adc2fc41d400LL),
+      real(-0x5947d2bb916000LL),real(-0x222d7eabcda6c00LL),
+      real(-0x22707489da53c800LL),reale(7620LL,0x3c385d35fbc00LL),
+      reale(-29198LL,0x7793d371d5000LL),reale(53341LL,0xa58a8c79e2400LL),
+      reale(-51818LL,0x6680b95db6800LL),reale(25908LL,0xccbfa35124c00LL),
+      reale(-5263LL,0x466912d384890LL),reale(0x2893f8LL,0xb4b906dd74543LL),
+      // C4[3], coeff of eps^3, polynomial in n of order 23
+      real(-0x388cfdf100LL),real(-0x5500729200LL),real(-0x8250066300LL),
+      real(-0xcc2d29dc00LL),real(-0x147bd04f500LL),real(-0x21c7b15a600LL),
+      real(-0x396d13e6700LL),real(-0x650be18b000LL),real(-0xb8f375f7900LL),
+      real(-0x16253c45ba00LL),real(-0x2cc1928ceb00LL),real(-0x6065d92f8400LL),
+      real(-0xe04f74737d00LL),real(-0x23eadf138ce00LL),
+      real(-0x682920857ef00LL),real(-0x1651f4aee45800LL),
+      real(-0x61a68e7d270100LL),real(-0x281b43aa424e200LL),
+      real(-0x2bddd20238857300LL),reale(10668LL,0x544ee8e52d400LL),
+      reale(-45341LL,0x99b0a231ffb00LL),reale(90680LL,0xcc9ebb9c00a00LL),
+      reale(-84204LL,0x66912d3848900LL),reale(28944LL,0xfcbe1874a70e8LL),
+      reale(0x79bbeaLL,0x1e2b14985cfc9LL),
+      // C4[4], coeff of eps^26, polynomial in n of order 0
+      real(0x46c5200LL),real(0x377b3e1aa351LL),
+      // C4[4], coeff of eps^25, polynomial in n of order 1
+      real(-0x51ae800LL),real(0x28cb780LL),real(0x7a5a1b59863LL),
+      // C4[4], coeff of eps^24, polynomial in n of order 2
+      real(-0x5d090f66800LL),real(0x15cb8432c00LL),real(0x5ff8163080LL),
+      real(0x3e897844a5071ebLL),
+      // C4[4], coeff of eps^23, polynomial in n of order 3
+      real(-0xbff3f70d800LL),real(0x44c7b31b000LL),real(-0x48108b34800LL),
+      real(0x21db9c9a980LL),real(0x4fc9e010f5dcf23LL),
+      // C4[4], coeff of eps^22, polynomial in n of order 4
+      real(-0xd6b769b7e000LL),real(0x72b1142e1800LL),real(-0x82aa7be7f000LL),
+      real(0x1aa8532e0800LL),real(0x779e97cc600LL),real(0x40d4060dc7c384c7LL),
+      // C4[4], coeff of eps^21, polynomial in n of order 5
+      real(-0x474af3a87693800LL),real(0x3c389a0df442000LL),
+      real(-0x37e1a3d92db8800LL),real(0x12d1db00bd71000LL),
+      real(-0x15fc16a85bcd800LL),real(0x99491c279c9880LL),
+      reale(0x1163fcLL,0xdfbd02f131dafLL),
+      // C4[4], coeff of eps^20, polynomial in n of order 6
+      real(-0x303d69b47fe22400LL),real(0x3f4d2c93a259b200LL),
+      real(-0x29be542895db1800LL),real(0x17eb54d9d2a59e00LL),
+      real(-0x1b89924120220c00LL),real(0x4aa7a22c8d50a00LL),
+      real(0x157745851f3d4c0LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
+      // C4[4], coeff of eps^19, polynomial in n of order 7
+      real(-0x44c3305a70de1000LL),real(0x6d1c9adfcac5e000LL),
+      real(-0x312f88327b293000LL),real(0x3351684a1a554000LL),
+      real(-0x2ab43a21fd0e5000LL),real(0xdaac481cc1ca000LL),
+      real(-0x120b854707e97000LL),real(0x7289c72302f3500LL),
       reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[103]
-      real(0x3f9aad7800LL),real(0x7000ca6000LL),real(0xcbc0504800LL),
-      real(0x180866df000LL),real(0x2f4b74a1800LL),real(0x61abf5b8000LL),
-      real(0xd562fc0e800LL),real(0x1f2598191000LL),real(0x4ed8f85ab800LL),
-      real(0xdc91252ca000LL),real(0x2bd44913d8800LL),real(0xa584ade1c3000LL),
-      real(0x322090df0f5800LL),real(0x16f6266186dc000LL),
-      real(0x1c472a543df62800LL),reale(-7860LL,0x8550f02a75000LL),
-      reale(39234LL,0x9eeb23497f800LL),reale(-98181LL,0x48f3e5f4ee000LL),
-      reale(140051LL,0xe6fe7071ac800LL),reale(-115828LL,0x6ca743fea7000LL),
-      reale(51817LL,0x997f46a249800LL),reale(-9716LL,0x333822c192380LL),
+      // C4[4], coeff of eps^18, polynomial in n of order 8
+      reale(-2257LL,0x84afe20dc8000LL),reale(2620LL,0x5abb698ccf000LL),
+      real(-0x3cfd86157c22a000LL),real(0x656f30f9d7a5d000LL),
+      real(-0x3529aafa1251c000LL),real(0x23979dd758c6b000LL),
+      real(-0x27cfd52f91a0e000LL),real(0x52c1297ffdf9000LL),
+      real(0x1899e61f0915c00LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
+      // C4[4], coeff of eps^17, polynomial in n of order 9
+      reale(-5648LL,0x6d69d3f987000LL),reale(3064LL,0xd620df9a18000LL),
+      real(-0x73b5708edb717000LL),reale(2782LL,0xf8e2a6bab2000LL),
+      real(-0x3aa55028ed4d5000LL),real(0x54f5b0489ac0c000LL),
+      real(-0x3a8372ad6ebf3000LL),real(0x128f31db99de6000LL),
+      real(-0x1bbb3cddeb8b1000LL),real(0x9c3f5d344ffbb00LL),
       reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[104]
-      real(0x2492f246000LL),real(0x43b68382800LL),real(0x827fc7ff000LL),
-      real(0x10769dabb800LL),real(0x231371038000LL),real(0x4fad3dfb4800LL),
-      real(0xc39532c71000LL),real(0x2109cc8eed800LL),real(0x650cdd3e2a000LL),
-      real(0x16d3054b8e6800LL),real(0x69275cf4ee3000LL),
-      real(0x2d6bb9aa2a1f800LL),real(0x342dc9db6781c000LL),
-      reale(-13326LL,0xf4ea5bd318800LL),reale(59725LL,0xe775950b55000LL),
-      reale(-128820LL,0xb5425df051800LL),reale(144216LL,0xdf24ba0e000LL),
-      reale(-65936LL,0xe9769e324a800LL),reale(-23423LL,0xcda398bdc7000LL),
-      reale(39625LL,0x392517e583800LL),reale(-12955LL,0x99a02e576da00LL),
+      // C4[4], coeff of eps^16, polynomial in n of order 10
+      reale(-12547LL,0x2f9a6b7e09000LL),reale(2321LL,0x6f75c5bce2800LL),
+      reale(-5210LL,0x3640452d54000LL),reale(3693LL,0x4f3d4dd785800LL),
+      real(-0x59b26230b2e61000LL),reale(2785LL,0x7ef843b608800LL),
+      real(-0x4086b5731d656000LL),real(0x3b22d2695822b800LL),
+      real(-0x3bbf747f663cb000LL),real(0x50e2c41c71ae800LL),
+      real(0x19182d9cca60700LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
+      // C4[4], coeff of eps^15, polynomial in n of order 11
+      reale(-14656LL,0x5833084c1d000LL),reale(5703LL,0xb41e60048e000LL),
+      reale(-13724LL,0xf905debc4f000LL),reale(2794LL,0x80dd2a6158000LL),
+      reale(-4435LL,0x42429a62a1000LL),reale(4398LL,0x1bf890b722000LL),
+      real(-0x462f1f0759b2d000LL),reale(2504LL,0xfcfacf17ac000LL),
+      real(-0x4eb2a95e9a75b000LL),real(0x1bef3eef6f4b6000LL),
+      real(-0x2d8008caddc29000LL),real(0xdbb189dc4eba300LL),
       reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[105]
-      real(0x114b06357800LL),real(0x2239f3629000LL),real(0x475e8ebd2800LL),
-      real(0x9e5523c88000LL),real(0x17aa424dfd800LL),real(0x3e2133dde7000LL),
-      real(0xb7f09cec78800LL),real(0x280af153ee6000LL),
-      real(0xb0d866e91e3800LL),real(0x48b6aeda5425000LL),
-      real(0x4ec10b7f840de800LL),reale(-18694LL,0x2576e33244000LL),
-      reale(76065LL,0x2aaa760409800LL),reale(-141962LL,0x3c08cd5de3000LL),
-      reale(119123LL,0xd1c84be04800LL),real(-0x7f4b67756e45e000LL),
-      reale(-76607LL,0x185979f96f800LL),reale(56790LL,0xce45bec021000LL),
-      reale(-14599LL,0x3bc9e9b8ea800LL),real(0x23b84843a30d9480LL),
+      // C4[4], coeff of eps^14, polynomial in n of order 12
+      reale(-31111LL,0x2f5aeecd0c000LL),reale(76716LL,0x887753c58b000LL),
+      reale(-19286LL,0x3027a0a80a000LL),reale(3558LL,0x4fcfd1ab09000LL),
+      reale(-14555LL,0x40d2f53608000LL),reale(3850LL,0x9631322307000LL),
+      reale(-3314LL,0x6f07544006000LL),reale(4999LL,0xf3c6aed085000LL),
+      real(-0x44308029330fc000LL),real(0x72cd2f325ae83000LL),
+      real(-0x5cc3eeffca3fe000LL),real(0x2f990ef34001000LL),
+      real(0xedd65cb262fc00LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
+      // C4[4], coeff of eps^13, polynomial in n of order 13
+      reale(109832LL,0xfe67f2664d000LL),reale(-101415LL,0xc9a26ad01c000LL),
+      reale(-21579LL,0xd38200228b000LL),reale(81484LL,0xfb5b01862000LL),
+      reale(-25829LL,0x8520bb4969000LL),real(0x527645ab2c368000LL),
+      reale(-14627LL,0x5f0a484327000LL),reale(5668LL,0x89f8307d6e000LL),
+      real(-0x7c6deea8217fb000LL),reale(5148LL,0xb3c77272b4000LL),
+      real(-0x5ea4f23e05fbd000LL),real(0x33d79ea3e6f7a000LL),
+      real(-0x512f5a2dc7bdf000LL),real(0x13f171801c8d4d00LL),
       reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[106]
-      real(0x7c44a1c56800LL),real(0x10e1a40b9f400LL),real(0x2778995e94000LL),
-      real(0x6511d82348c00LL),real(0x122fbee15d1800LL),
-      real(0x3d60d47d162400LL),real(0x10572b5ec96f000LL),
-      real(0x670e5c5512cbc00LL),real(0x6a1969ca184cc800LL),
-      reale(-23633LL,0x903b77fa65400LL),reale(88223LL,0x601afc7b4a000LL),
-      reale(-143686LL,0xc7e6fcd50ec00LL),reale(86217LL,0x78ea8eac47800LL),
-      reale(43622LL,0x50ec504da8400LL),reale(-86858LL,0x1b1c4c8725000LL),
-      reale(34767LL,0x1af4459111c00LL),real(0x470ee9f8c8f42800LL),
-      real(-0xf0a395fd8dd4c00LL),real(-0x55da5cd875ef3c80LL),
+      // C4[4], coeff of eps^12, polynomial in n of order 14
+      reale(3290LL,0xf070eb97f3400LL),reale(-37926LL,0xeb33f78d44e00LL),
+      reale(108756LL,0x262a302ba0800LL),reale(-111140LL,0x45b6109f34200LL),
+      reale(-8979LL,0x691a509cedc00LL),reale(85061LL,0xe9667b666b600LL),
+      reale(-34831LL,0x4af77b29eb000LL),real(-0x1ae66991075c5600LL),
+      reale(-13338LL,0x2d28d4daa8400LL),reale(8254LL,0x43d2c57af1e00LL),
+      real(-0x39646320240ca800LL),reale(4333LL,0x5a8eb4efe1200LL),
+      reale(-2318LL,0xc78fad2da2c00LL),real(-0x4971411b9aa7a00LL),
+      real(-0x239dc6f1135e6c0LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
+      // C4[4], coeff of eps^11, polynomial in n of order 15
+      real(0x22fb18f3d6fc800LL),real(0xc812a63656dd000LL),
+      reale(2929LL,0x54e6120875800LL),reale(-35122LL,0xb72fa39d42000LL),
+      reale(106528LL,0xc02be4bd3e800LL),reale(-121105LL,0x35724ce667000LL),
+      reale(7480LL,0x3b39caec37800LL),reale(86076LL,0xd8784a9f2c000LL),
+      reale(-46729LL,0x24906ba440800LL),real(-0x1e17ea5787b8f000LL),
+      reale(-10013LL,0xff9cfd7c39800LL),reale(11072LL,0xcb500e9316000LL),
+      real(-0x3d2315ebbfcfd800LL),reale(2196LL,0x522d08f7fb000LL),
+      reale(-2583LL,0xd6bd372f7b800LL),real(0x1dbc900c41177d80LL),
       reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[107]
-      real(0x3b98569230800LL),real(0x954e9f9ae8000LL),real(0x1a387f0ed5f800LL),
-      real(0x561911aabbb000LL),real(0x163673b1889e800LL),
-      real(0x870aa0c397ae000LL),reale(2128LL,0x4412890e0d800LL),
-      reale(-28019LL,0x6122fdeae1000LL),reale(96862LL,0x40aaeaffcc800LL),
-      reale(-138877LL,0xe72756d174000LL),reale(55003LL,0xc4365147fb800LL),
-      reale(69831LL,0x65a81c2787000LL),reale(-76837LL,0x6e673dc8ba800LL),
-      reale(14324LL,0xf9d757893a000LL),real(0x610a50cc5ec29800LL),
-      reale(9036LL,0xddda1962ad000LL),reale(-5867LL,0xfcfe343468800LL),
-      real(0x2b3d64f38f7c3a80LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[108]
+      // C4[4], coeff of eps^10, polynomial in n of order 16
       real(0x2367980c018000LL),real(0x717a5d0aad6800LL),
       real(0x1c7a6b9a7155000LL),real(0xa7a0b73a0f93800LL),
       reale(2540LL,0xdc02459a12000LL),reale(-31837LL,0xd9da00c10800LL),
@@ -2615,165 +2642,155 @@ namespace GeographicLib {
       reale(-4437LL,0xae8eb3ee06000LL),reale(12409LL,0x2e12e0f984800LL),
       reale(-3100LL,0x4a639fe0c3000LL),real(-0x185351aa9adbe800LL),
       real(-0xfcd867cd32b4e00LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[109]
-      real(0x22fb18f3d6fc800LL),real(0xc812a63656dd000LL),
-      reale(2929LL,0x54e6120875800LL),reale(-35122LL,0xb72fa39d42000LL),
-      reale(106528LL,0xc02be4bd3e800LL),reale(-121105LL,0x35724ce667000LL),
-      reale(7480LL,0x3b39caec37800LL),reale(86076LL,0xd8784a9f2c000LL),
-      reale(-46729LL,0x24906ba440800LL),real(-0x1e17ea5787b8f000LL),
-      reale(-10013LL,0xff9cfd7c39800LL),reale(11072LL,0xcb500e9316000LL),
-      real(-0x3d2315ebbfcfd800LL),reale(2196LL,0x522d08f7fb000LL),
-      reale(-2583LL,0xd6bd372f7b800LL),real(0x1dbc900c41177d80LL),
-      reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[110]
-      reale(3290LL,0xf070eb97f3400LL),reale(-37926LL,0xeb33f78d44e00LL),
-      reale(108756LL,0x262a302ba0800LL),reale(-111140LL,0x45b6109f34200LL),
-      reale(-8979LL,0x691a509cedc00LL),reale(85061LL,0xe9667b666b600LL),
-      reale(-34831LL,0x4af77b29eb000LL),real(-0x1ae66991075c5600LL),
-      reale(-13338LL,0x2d28d4daa8400LL),reale(8254LL,0x43d2c57af1e00LL),
-      real(-0x39646320240ca800LL),reale(4333LL,0x5a8eb4efe1200LL),
-      reale(-2318LL,0xc78fad2da2c00LL),real(-0x4971411b9aa7a00LL),
-      real(-0x239dc6f1135e6c0LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[111]
-      reale(109832LL,0xfe67f2664d000LL),reale(-101415LL,0xc9a26ad01c000LL),
-      reale(-21579LL,0xd38200228b000LL),reale(81484LL,0xfb5b01862000LL),
-      reale(-25829LL,0x8520bb4969000LL),real(0x527645ab2c368000LL),
-      reale(-14627LL,0x5f0a484327000LL),reale(5668LL,0x89f8307d6e000LL),
-      real(-0x7c6deea8217fb000LL),reale(5148LL,0xb3c77272b4000LL),
-      real(-0x5ea4f23e05fbd000LL),real(0x33d79ea3e6f7a000LL),
-      real(-0x512f5a2dc7bdf000LL),real(0x13f171801c8d4d00LL),
+      // C4[4], coeff of eps^9, polynomial in n of order 17
+      real(0x3b98569230800LL),real(0x954e9f9ae8000LL),real(0x1a387f0ed5f800LL),
+      real(0x561911aabbb000LL),real(0x163673b1889e800LL),
+      real(0x870aa0c397ae000LL),reale(2128LL,0x4412890e0d800LL),
+      reale(-28019LL,0x6122fdeae1000LL),reale(96862LL,0x40aaeaffcc800LL),
+      reale(-138877LL,0xe72756d174000LL),reale(55003LL,0xc4365147fb800LL),
+      reale(69831LL,0x65a81c2787000LL),reale(-76837LL,0x6e673dc8ba800LL),
+      reale(14324LL,0xf9d757893a000LL),real(0x610a50cc5ec29800LL),
+      reale(9036LL,0xddda1962ad000LL),reale(-5867LL,0xfcfe343468800LL),
+      real(0x2b3d64f38f7c3a80LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
+      // C4[4], coeff of eps^8, polynomial in n of order 18
+      real(0x7c44a1c56800LL),real(0x10e1a40b9f400LL),real(0x2778995e94000LL),
+      real(0x6511d82348c00LL),real(0x122fbee15d1800LL),
+      real(0x3d60d47d162400LL),real(0x10572b5ec96f000LL),
+      real(0x670e5c5512cbc00LL),real(0x6a1969ca184cc800LL),
+      reale(-23633LL,0x903b77fa65400LL),reale(88223LL,0x601afc7b4a000LL),
+      reale(-143686LL,0xc7e6fcd50ec00LL),reale(86217LL,0x78ea8eac47800LL),
+      reale(43622LL,0x50ec504da8400LL),reale(-86858LL,0x1b1c4c8725000LL),
+      reale(34767LL,0x1af4459111c00LL),real(0x470ee9f8c8f42800LL),
+      real(-0xf0a395fd8dd4c00LL),real(-0x55da5cd875ef3c80LL),
       reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[112]
-      reale(-31111LL,0x2f5aeecd0c000LL),reale(76716LL,0x887753c58b000LL),
-      reale(-19286LL,0x3027a0a80a000LL),reale(3558LL,0x4fcfd1ab09000LL),
-      reale(-14555LL,0x40d2f53608000LL),reale(3850LL,0x9631322307000LL),
-      reale(-3314LL,0x6f07544006000LL),reale(4999LL,0xf3c6aed085000LL),
-      real(-0x44308029330fc000LL),real(0x72cd2f325ae83000LL),
-      real(-0x5cc3eeffca3fe000LL),real(0x2f990ef34001000LL),
-      real(0xedd65cb262fc00LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[113]
-      reale(-14656LL,0x5833084c1d000LL),reale(5703LL,0xb41e60048e000LL),
-      reale(-13724LL,0xf905debc4f000LL),reale(2794LL,0x80dd2a6158000LL),
-      reale(-4435LL,0x42429a62a1000LL),reale(4398LL,0x1bf890b722000LL),
-      real(-0x462f1f0759b2d000LL),reale(2504LL,0xfcfacf17ac000LL),
-      real(-0x4eb2a95e9a75b000LL),real(0x1bef3eef6f4b6000LL),
-      real(-0x2d8008caddc29000LL),real(0xdbb189dc4eba300LL),
+      // C4[4], coeff of eps^7, polynomial in n of order 19
+      real(0x114b06357800LL),real(0x2239f3629000LL),real(0x475e8ebd2800LL),
+      real(0x9e5523c88000LL),real(0x17aa424dfd800LL),real(0x3e2133dde7000LL),
+      real(0xb7f09cec78800LL),real(0x280af153ee6000LL),
+      real(0xb0d866e91e3800LL),real(0x48b6aeda5425000LL),
+      real(0x4ec10b7f840de800LL),reale(-18694LL,0x2576e33244000LL),
+      reale(76065LL,0x2aaa760409800LL),reale(-141962LL,0x3c08cd5de3000LL),
+      reale(119123LL,0xd1c84be04800LL),real(-0x7f4b67756e45e000LL),
+      reale(-76607LL,0x185979f96f800LL),reale(56790LL,0xce45bec021000LL),
+      reale(-14599LL,0x3bc9e9b8ea800LL),real(0x23b84843a30d9480LL),
       reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[114]
-      reale(-12547LL,0x2f9a6b7e09000LL),reale(2321LL,0x6f75c5bce2800LL),
-      reale(-5210LL,0x3640452d54000LL),reale(3693LL,0x4f3d4dd785800LL),
-      real(-0x59b26230b2e61000LL),reale(2785LL,0x7ef843b608800LL),
-      real(-0x4086b5731d656000LL),real(0x3b22d2695822b800LL),
-      real(-0x3bbf747f663cb000LL),real(0x50e2c41c71ae800LL),
-      real(0x19182d9cca60700LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[115]
-      reale(-5648LL,0x6d69d3f987000LL),reale(3064LL,0xd620df9a18000LL),
-      real(-0x73b5708edb717000LL),reale(2782LL,0xf8e2a6bab2000LL),
-      real(-0x3aa55028ed4d5000LL),real(0x54f5b0489ac0c000LL),
-      real(-0x3a8372ad6ebf3000LL),real(0x128f31db99de6000LL),
-      real(-0x1bbb3cddeb8b1000LL),real(0x9c3f5d344ffbb00LL),
+      // C4[4], coeff of eps^6, polynomial in n of order 20
+      real(0x2492f246000LL),real(0x43b68382800LL),real(0x827fc7ff000LL),
+      real(0x10769dabb800LL),real(0x231371038000LL),real(0x4fad3dfb4800LL),
+      real(0xc39532c71000LL),real(0x2109cc8eed800LL),real(0x650cdd3e2a000LL),
+      real(0x16d3054b8e6800LL),real(0x69275cf4ee3000LL),
+      real(0x2d6bb9aa2a1f800LL),real(0x342dc9db6781c000LL),
+      reale(-13326LL,0xf4ea5bd318800LL),reale(59725LL,0xe775950b55000LL),
+      reale(-128820LL,0xb5425df051800LL),reale(144216LL,0xdf24ba0e000LL),
+      reale(-65936LL,0xe9769e324a800LL),reale(-23423LL,0xcda398bdc7000LL),
+      reale(39625LL,0x392517e583800LL),reale(-12955LL,0x99a02e576da00LL),
       reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[116]
-      reale(-2257LL,0x84afe20dc8000LL),reale(2620LL,0x5abb698ccf000LL),
-      real(-0x3cfd86157c22a000LL),real(0x656f30f9d7a5d000LL),
-      real(-0x3529aafa1251c000LL),real(0x23979dd758c6b000LL),
-      real(-0x27cfd52f91a0e000LL),real(0x52c1297ffdf9000LL),
-      real(0x1899e61f0915c00LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[117]
-      real(-0x44c3305a70de1000LL),real(0x6d1c9adfcac5e000LL),
-      real(-0x312f88327b293000LL),real(0x3351684a1a554000LL),
-      real(-0x2ab43a21fd0e5000LL),real(0xdaac481cc1ca000LL),
-      real(-0x120b854707e97000LL),real(0x7289c72302f3500LL),
+      // C4[4], coeff of eps^5, polynomial in n of order 21
+      real(0x3f9aad7800LL),real(0x7000ca6000LL),real(0xcbc0504800LL),
+      real(0x180866df000LL),real(0x2f4b74a1800LL),real(0x61abf5b8000LL),
+      real(0xd562fc0e800LL),real(0x1f2598191000LL),real(0x4ed8f85ab800LL),
+      real(0xdc91252ca000LL),real(0x2bd44913d8800LL),real(0xa584ade1c3000LL),
+      real(0x322090df0f5800LL),real(0x16f6266186dc000LL),
+      real(0x1c472a543df62800LL),reale(-7860LL,0x8550f02a75000LL),
+      reale(39234LL,0x9eeb23497f800LL),reale(-98181LL,0x48f3e5f4ee000LL),
+      reale(140051LL,0xe6fe7071ac800LL),reale(-115828LL,0x6ca743fea7000LL),
+      reale(51817LL,0x997f46a249800LL),reale(-9716LL,0x333822c192380LL),
       reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[118]
-      real(-0x303d69b47fe22400LL),real(0x3f4d2c93a259b200LL),
-      real(-0x29be542895db1800LL),real(0x17eb54d9d2a59e00LL),
-      real(-0x1b89924120220c00LL),real(0x4aa7a22c8d50a00LL),
-      real(0x157745851f3d4c0LL),reale(0x9c83e3LL,0xdda51a7ac0b27LL),
-      // _C4x[119]
-      real(-0x474af3a87693800LL),real(0x3c389a0df442000LL),
-      real(-0x37e1a3d92db8800LL),real(0x12d1db00bd71000LL),
-      real(-0x15fc16a85bcd800LL),real(0x99491c279c9880LL),
-      reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[120]
-      real(-0xd6b769b7e000LL),real(0x72b1142e1800LL),real(-0x82aa7be7f000LL),
-      real(0x1aa8532e0800LL),real(0x779e97cc600LL),real(0x40d4060dc7c384c7LL),
-      // _C4x[121]
-      real(-0xbff3f70d800LL),real(0x44c7b31b000LL),real(-0x48108b34800LL),
-      real(0x21db9c9a980LL),real(0x4fc9e010f5dcf23LL),
-      // _C4x[122]
-      real(-0x5d090f66800LL),real(0x15cb8432c00LL),real(0x5ff8163080LL),
-      real(0x3e897844a5071ebLL),
-      // _C4x[123]
-      real(-0x51ae800LL),real(0x28cb780LL),real(0x7a5a1b59863LL),
-      // _C4x[124]
-      real(0x46c5200LL),real(0x377b3e1aa351LL),
-      // _C4x[125]
-      real(-0x973b7800LL),real(-0x125656000LL),real(-0x24ee64800LL),
-      real(-0x4d94b7000LL),real(-0xaaf721800LL),real(-0x18e0978000LL),
-      real(-0x3dbc68e800LL),real(-0xa52d939000LL),real(-0x1e3bc54b800LL),
-      real(-0x62f2289a000LL),real(-0x174e12bf8800LL),real(-0x69ee83c3b000LL),
-      real(-0x2753bfa335800LL),real(-0x1693a2298bc000LL),
-      real(-0x23ce232de3a2800LL),real(0x33ca29bdcdd43000LL),
-      reale(-5755LL,0x96c59eaa20800LL),reale(21176LL,0x3b8f28c122000LL),
-      reale(-47647LL,0x79fde44d73800LL),reale(67058LL,0x11f0010e41000LL),
-      reale(-51818LL,0x6680b95db6800LL),reale(16192LL,0xfff7c612b6f80LL),
+      // C4[4], coeff of eps^4, polynomial in n of order 22
+      real(0x43707cc00LL),real(0x72363ea00LL),real(0xc6cade800LL),
+      real(0x164b8d6600LL),real(0x2966060400LL),real(0x4fe5ac6200LL),
+      real(0xa1231b2000LL),real(0x155e2e7de00LL),real(0x30194583c00LL),
+      real(0x741fc16da00LL),real(0x131155285800LL),real(0x379d38605600LL),
+      real(0xb96166967400LL),real(0x2e2dfa3db5200LL),real(0xee14dc9ed9000LL),
+      real(0x752e44962ece00LL),real(0x9cf0406db58ac00LL),
+      reale(-3008LL,0x32d1e931ca00LL),reale(16844LL,0xbb0354c82c800LL),
+      reale(-48008LL,0x849ce7f8b4600LL),reale(77726LL,0x663ee9f36e400LL),
+      reale(-64772LL,0x20e7b524200LL),reale(21050LL,0xe65bb4b1eddc0LL),
+      reale(0x9c83e3LL,0xdda51a7ac0b27LL),
+      // C4[5], coeff of eps^26, polynomial in n of order 0
+      real(356096LL),real(0x16df1ef5f5LL),
+      // C4[5], coeff of eps^25, polynomial in n of order 1
+      real(0x46ce30800LL),real(0x146425580LL),real(0x1580fd4afdbe65LL),
+      // C4[5], coeff of eps^24, polynomial in n of order 2
+      real(0x2ba61448000LL),real(-0x378568c4000LL),real(0x16cc31e2a00LL),
+      real(0x4c6f2137745e091LL),
+      // C4[5], coeff of eps^23, polynomial in n of order 3
+      real(0xef2f223e3800LL),real(-0x110fb2e7bf000LL),real(0x282bb4606800LL),
+      real(0xbe30d7a6780LL),reale(2828LL,0xfcd03d1974f5LL),
+      // C4[5], coeff of eps^22, polynomial in n of order 4
+      real(0x5e4a1598000LL),real(-0x48b6e92a000LL),real(0x1757a4ac000LL),
+      real(-0x20e8326e000LL),real(0xc6156d2d00LL),real(0x2081a7235aaf593LL),
+      // C4[5], coeff of eps^21, polynomial in n of order 5
+      real(0x40db2f49b455f800LL),real(-0x1e99bb32c4c22000LL),
+      real(0x173ba0294630c800LL),real(-0x194707e3169c1000LL),
+      real(0x2d83efe695c9800LL),real(0xdf3e0617af3080LL),
       reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[126]
-      real(-0xd6ed08000LL),real(-0x1b8fe4a000LL),real(-0x3b33274000LL),
-      real(-0x860230e000LL),real(-0x142709a0000LL),real(-0x341c17b2000LL),
-      real(-0x92ee7ecc000LL),real(-0x1ccf17876000LL),real(-0x6786d9e38000LL),
-      real(-0x1bdf19e19a000LL),real(-0x9bb8377424000LL),
-      real(-0x5352681ef5e000LL),real(-0x79ce0dfd0cd0000LL),
-      reale(2563LL,0x29027cc1fe000LL),reale(-15918LL,0x531738b84000LL),
-      reale(51375LL,0x61bf7d963a000LL),reale(-99437LL,0xc6f0784898000LL),
-      reale(119998LL,0xa6d5e6f116000LL),reale(-88556LL,0xd863841e2c000LL),
-      reale(36577LL,0x210e8c3652000LL),reale(-6478LL,0xccd0172bb6d00LL),
+      // C4[5], coeff of eps^20, polynomial in n of order 6
+      real(0x216feaa994ce0000LL),real(-0xab5f967e8690000LL),
+      real(0x11e48889bb540000LL),real(-0xb74a91dab5f0000LL),
+      real(0x3c54ceff81a0000LL),real(-0x5d7cb98f1a50000LL),
+      real(0x1f9a69370b20800LL),reale(0x3fc3f4LL,0x89b50ac9b6cd7LL),
+      // C4[5], coeff of eps^19, polynomial in n of order 7
+      real(0x737c719d74a11000LL),real(-0x33cb00709b02e000LL),
+      real(0x64aa4f647e063000LL),real(-0x22d04f5347fb4000LL),
+      real(0x244213a9e6215000LL),real(-0x2372b83384fba000LL),
+      real(0x29c5a12d1767000LL),real(0xd64e2b028e9d00LL),
       reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[127]
-      real(-0xbc3b1c3800LL),real(-0x19fd8659000LL),real(-0x3ce45316800LL),
-      real(-0x98e89f08000LL),real(-0x1a16c5239800LL),real(-0x4ef4224b7000LL),
-      real(-0x11089a8d8c800LL),real(-0x461e8219c6000LL),
-      real(-0x1740d89936f800LL),real(-0xbb97ef56095000LL),
-      real(-0xffd8608f0242800LL),reale(4956LL,0x2ae7ba647c000LL),
-      reale(-27804LL,0x77793f179a800LL),reale(78703LL,0x691d56f30d000LL),
-      reale(-126582LL,0x4d53dadbc7800LL),reale(111405LL,0x65dae188be000LL),
-      reale(-33041LL,0x37d0713be4800LL),reale(-31123LL,0x5ae3e7032f000LL),
-      reale(33849LL,0xe315529991800LL),reale(-10097LL,0x3035514bac080LL),
+      // C4[5], coeff of eps^18, polynomial in n of order 8
+      real(0x4d6c482dac2a0000LL),reale(-2330LL,0x4e01d8dc24000LL),
+      reale(2244LL,0xda129de1b8000LL),real(-0x25b9c94d1ec14000LL),
+      real(0x5915813997350000LL),real(-0x2b18411354f8c000LL),
+      real(0x1038d20e1fbe8000LL),real(-0x1a9977b2ea9c4000LL),
+      real(0x7df995f732ef600LL),reale(0xbf4bddLL,0x9d1f205d24685LL),
+      // C4[5], coeff of eps^17, polynomial in n of order 9
+      real(0x514388ef27d31000LL),reale(-6021LL,0xd41baf36e8000LL),
+      real(0x6fa66bdc836df000LL),real(-0x67912be26fab2000LL),
+      reale(2539LL,0xf65fb2006d000LL),real(-0x237e1033f4d8c000LL),
+      real(0x3efb5ba75c79b000LL),real(-0x32b52fd83cbe6000LL),
+      real(0x17d40e2c1a29000LL),real(0x7dfd16a9c2e300LL),
       reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[128]
-      real(-0x8baa3048000LL),real(-0x155e3991c000LL),real(-0x38b7bd240000LL),
-      real(-0xa66484064000LL),real(-0x22acb24838000LL),
-      real(-0x89475b1e6c000LL),real(-0x2b8ce25f7b0000LL),
-      real(-0x14dd31b8f8b4000LL),real(-0x1acbb07dd4628000LL),
-      reale(7723LL,0xe6c1cd6b44000LL),reale(-39541LL,0x4e2f6566e0000LL),
-      reale(98832LL,0x70f12b47fc000LL),reale(-130554LL,0xb8b3b5a9e8000LL),
-      reale(72091LL,0x9d4697d7f4000LL),reale(31173LL,0xcb977f1d70000LL),
-      reale(-72485LL,0x588f6655ac000LL),reale(42073LL,0x76abc75bf8000LL),
-      reale(-8984LL,0x24cb05fba4000LL),real(0x7851cafec6ea600LL),
+      // C4[5], coeff of eps^16, polynomial in n of order 10
+      reale(12470LL,0xf777d5cb70000LL),reale(-8995LL,0xcb00690428000LL),
+      real(0x22d781d11b8c0000LL),reale(-5685LL,0x5cae489458000LL),
+      reale(2676LL,0xe4b7624210000LL),real(-0x3b4e8fe27b2f8000LL),
+      reale(2525LL,0xe113384060000LL),real(-0x317b33e66b8c8000LL),
+      real(0x1afebbc488cb0000LL),real(-0x2abc78cdb6418000LL),
+      real(0xab0b32cc6da3c00LL),reale(0xbf4bddLL,0x9d1f205d24685LL),
+      // C4[5], coeff of eps^15, polynomial in n of order 11
+      reale(45753LL,0x27312c684b000LL),real(0x6b25908081df2000LL),
+      reale(10080LL,0x3e3c4e94e9000LL),reale(-11484LL,0xcfad66f9a8000LL),
+      real(0x186dcc47df2a7000LL),reale(-4655LL,0x1684cc365e000LL),
+      reale(3765LL,0x192eb8a145000LL),real(-0x1ea7f016e242c000LL),
+      real(0x7c08a9e80a083000LL),real(-0x48a61c5124e36000LL),
+      real(-0x1ab8464a6fdf000LL),real(-0xc3b3128c53f500LL),
       reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[129]
-      real(-0x689b7f794800LL),real(-0x12aa316a68000LL),
-      real(-0x3c5fe03b7b800LL),real(-0xe70662316b000LL),
-      real(-0x468257445d2800LL),real(-0x204dea1c904e000LL),
-      real(-0x275c24b79c179800LL),reale(10640LL,0x725f868a0f000LL),
-      reale(-50164LL,0x7c98f9d6af800LL),reale(111598LL,0xa3db986ecc000LL),
-      reale(-120106LL,0xe50b1b57c8800LL),reale(28289LL,0xbddfd64f09000LL),
-      reale(70122LL,0x41f96206f1800LL),reale(-70105LL,0x32e30edbe6000LL),
-      reale(17631LL,0x83f469b94a800LL),reale(3507LL,0xd4dd7e683000LL),
-      real(0x234fa818af3f3800LL),real(-0x5217ce807fb7e980LL),
+      // C4[5], coeff of eps^14, polynomial in n of order 12
+      reale(-29854LL,0x680415f70000LL),reale(-72662LL,0x4d1ac37df4000LL),
+      reale(55735LL,0xd505afdac8000LL),real(-0x19eb9cd373704000LL),
+      reale(6447LL,0x407ca0dba0000LL),reale(-13736LL,0x6cb0ae15c4000LL),
+      real(0x503c7c1e17a78000LL),reale(-2911LL,0x70f0f99ccc000LL),
+      reale(4611LL,0xa07ae6cfd0000LL),real(-0x28ec95124696c000LL),
+      real(0x386dc5f3bf428000LL),real(-0x49a3cdb95c464000LL),
+      real(0xec86977ad08e600LL),reale(0xbf4bddLL,0x9d1f205d24685LL),
+      // C4[5], coeff of eps^13, polynomial in n of order 13
+      reale(-77965LL,0xfd8dfa5e43000LL),reale(116550LL,0x911cc360c4000LL),
+      reale(-45606LL,0x5472139be5000LL),reale(-66196LL,0x3621e725ee000LL),
+      reale(66624LL,0xae21593727000LL),reale(-5577LL,0xfc909c53d8000LL),
+      real(0x6f2264aae1649000LL),reale(-14833LL,0xd36bf488c2000LL),
+      reale(3661LL,0xe0e147ff8b000LL),real(-0x37687d20b9d14000LL),
+      reale(4430LL,0xd2ef37d92d000LL),real(-0x61330ed553f6a000LL),
+      real(-0x8fc7d2821691000LL),real(-0x4de8f81581e0b00LL),
       reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[130]
-      real(-0x5e9d97de20000LL),real(-0x15f51b48a5a000LL),
-      real(-0x679f3a6a83c000LL),real(-0x2da38dbb53ee000LL),
-      real(-0x351287a208998000LL),reale(13549LL,0xfdc5cc829e000LL),
-      reale(-59299LL,0xca14375c8c000LL),reale(118312LL,0x8f7a13080a000LL),
-      reale(-102645LL,0xf416a7e8f0000LL),reale(-8664LL,0xcd7c174b16000LL),
-      reale(85056LL,0xa0c3d6fa54000LL),reale(-50542LL,0xa701315a82000LL),
-      real(0x9e0314066f78000LL),real(-0x56026edfbaf2000LL),
-      reale(9162LL,0x6ada71271c000LL),reale(-4515LL,0xc070d4197a000LL),
-      real(0x19aa7dbc9bd2b100LL),reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[131]
+      // C4[5], coeff of eps^12, polynomial in n of order 14
+      real(-0x520b481798460000LL),reale(18997LL,0x2a845a090000LL),
+      reale(-73061LL,0x14338a7640000LL),reale(119587LL,0x641c11f8f0000LL),
+      reale(-63451LL,0xb0d24e0000LL),reale(-54597LL,0xab5ebfb650000LL),
+      reale(77203LL,0x99135d6980000LL),reale(-15162LL,0x99696a3ab0000LL),
+      reale(-2899LL,0xc95d422620000LL),reale(-13402LL,0x44e23ce810000LL),
+      reale(7364LL,0x7017623cc0000LL),real(0xcbde6dd32070000LL),
+      reale(2498LL,0xb270ac8f60000LL),reale(-2208LL,0x1a1eb845d0000LL),
+      real(0x146e5a4ec1af3800LL),reale(0xbf4bddLL,0x9d1f205d24685LL),
+      // C4[5], coeff of eps^11, polynomial in n of order 15
       real(-0x8e2d12e55cc800LL),real(-0x3c744345ee05000LL),
       real(-0x436e3347c2885800LL),reale(16354LL,0x603aee4aee000LL),
       reale(-66896LL,0xca9e46ad91800LL),reale(120525LL,0x7fafccca1000LL),
@@ -2783,150 +2800,147 @@ namespace GeographicLib {
       reale(10601LL,0xdf58b3eb8d800LL),real(-0x51534d8656793000LL),
       real(-0x13f74fe07242b800LL),real(-0x1338322158bf8680LL),
       reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[132]
-      real(-0x520b481798460000LL),reale(18997LL,0x2a845a090000LL),
-      reale(-73061LL,0x14338a7640000LL),reale(119587LL,0x641c11f8f0000LL),
-      reale(-63451LL,0xb0d24e0000LL),reale(-54597LL,0xab5ebfb650000LL),
-      reale(77203LL,0x99135d6980000LL),reale(-15162LL,0x99696a3ab0000LL),
-      reale(-2899LL,0xc95d422620000LL),reale(-13402LL,0x44e23ce810000LL),
-      reale(7364LL,0x7017623cc0000LL),real(0xcbde6dd32070000LL),
-      reale(2498LL,0xb270ac8f60000LL),reale(-2208LL,0x1a1eb845d0000LL),
-      real(0x146e5a4ec1af3800LL),reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[133]
-      reale(-77965LL,0xfd8dfa5e43000LL),reale(116550LL,0x911cc360c4000LL),
-      reale(-45606LL,0x5472139be5000LL),reale(-66196LL,0x3621e725ee000LL),
-      reale(66624LL,0xae21593727000LL),reale(-5577LL,0xfc909c53d8000LL),
-      real(0x6f2264aae1649000LL),reale(-14833LL,0xd36bf488c2000LL),
-      reale(3661LL,0xe0e147ff8b000LL),real(-0x37687d20b9d14000LL),
-      reale(4430LL,0xd2ef37d92d000LL),real(-0x61330ed553f6a000LL),
-      real(-0x8fc7d2821691000LL),real(-0x4de8f81581e0b00LL),
+      // C4[5], coeff of eps^10, polynomial in n of order 16
+      real(-0x5e9d97de20000LL),real(-0x15f51b48a5a000LL),
+      real(-0x679f3a6a83c000LL),real(-0x2da38dbb53ee000LL),
+      real(-0x351287a208998000LL),reale(13549LL,0xfdc5cc829e000LL),
+      reale(-59299LL,0xca14375c8c000LL),reale(118312LL,0x8f7a13080a000LL),
+      reale(-102645LL,0xf416a7e8f0000LL),reale(-8664LL,0xcd7c174b16000LL),
+      reale(85056LL,0xa0c3d6fa54000LL),reale(-50542LL,0xa701315a82000LL),
+      real(0x9e0314066f78000LL),real(-0x56026edfbaf2000LL),
+      reale(9162LL,0x6ada71271c000LL),reale(-4515LL,0xc070d4197a000LL),
+      real(0x19aa7dbc9bd2b100LL),reale(0xbf4bddLL,0x9d1f205d24685LL),
+      // C4[5], coeff of eps^9, polynomial in n of order 17
+      real(-0x689b7f794800LL),real(-0x12aa316a68000LL),
+      real(-0x3c5fe03b7b800LL),real(-0xe70662316b000LL),
+      real(-0x468257445d2800LL),real(-0x204dea1c904e000LL),
+      real(-0x275c24b79c179800LL),reale(10640LL,0x725f868a0f000LL),
+      reale(-50164LL,0x7c98f9d6af800LL),reale(111598LL,0xa3db986ecc000LL),
+      reale(-120106LL,0xe50b1b57c8800LL),reale(28289LL,0xbddfd64f09000LL),
+      reale(70122LL,0x41f96206f1800LL),reale(-70105LL,0x32e30edbe6000LL),
+      reale(17631LL,0x83f469b94a800LL),reale(3507LL,0xd4dd7e683000LL),
+      real(0x234fa818af3f3800LL),real(-0x5217ce807fb7e980LL),
       reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[134]
-      reale(-29854LL,0x680415f70000LL),reale(-72662LL,0x4d1ac37df4000LL),
-      reale(55735LL,0xd505afdac8000LL),real(-0x19eb9cd373704000LL),
-      reale(6447LL,0x407ca0dba0000LL),reale(-13736LL,0x6cb0ae15c4000LL),
-      real(0x503c7c1e17a78000LL),reale(-2911LL,0x70f0f99ccc000LL),
-      reale(4611LL,0xa07ae6cfd0000LL),real(-0x28ec95124696c000LL),
-      real(0x386dc5f3bf428000LL),real(-0x49a3cdb95c464000LL),
-      real(0xec86977ad08e600LL),reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[135]
-      reale(45753LL,0x27312c684b000LL),real(0x6b25908081df2000LL),
-      reale(10080LL,0x3e3c4e94e9000LL),reale(-11484LL,0xcfad66f9a8000LL),
-      real(0x186dcc47df2a7000LL),reale(-4655LL,0x1684cc365e000LL),
-      reale(3765LL,0x192eb8a145000LL),real(-0x1ea7f016e242c000LL),
-      real(0x7c08a9e80a083000LL),real(-0x48a61c5124e36000LL),
-      real(-0x1ab8464a6fdf000LL),real(-0xc3b3128c53f500LL),
+      // C4[5], coeff of eps^8, polynomial in n of order 18
+      real(-0x8baa3048000LL),real(-0x155e3991c000LL),real(-0x38b7bd240000LL),
+      real(-0xa66484064000LL),real(-0x22acb24838000LL),
+      real(-0x89475b1e6c000LL),real(-0x2b8ce25f7b0000LL),
+      real(-0x14dd31b8f8b4000LL),real(-0x1acbb07dd4628000LL),
+      reale(7723LL,0xe6c1cd6b44000LL),reale(-39541LL,0x4e2f6566e0000LL),
+      reale(98832LL,0x70f12b47fc000LL),reale(-130554LL,0xb8b3b5a9e8000LL),
+      reale(72091LL,0x9d4697d7f4000LL),reale(31173LL,0xcb977f1d70000LL),
+      reale(-72485LL,0x588f6655ac000LL),reale(42073LL,0x76abc75bf8000LL),
+      reale(-8984LL,0x24cb05fba4000LL),real(0x7851cafec6ea600LL),
       reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[136]
-      reale(12470LL,0xf777d5cb70000LL),reale(-8995LL,0xcb00690428000LL),
-      real(0x22d781d11b8c0000LL),reale(-5685LL,0x5cae489458000LL),
-      reale(2676LL,0xe4b7624210000LL),real(-0x3b4e8fe27b2f8000LL),
-      reale(2525LL,0xe113384060000LL),real(-0x317b33e66b8c8000LL),
-      real(0x1afebbc488cb0000LL),real(-0x2abc78cdb6418000LL),
-      real(0xab0b32cc6da3c00LL),reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[137]
-      real(0x514388ef27d31000LL),reale(-6021LL,0xd41baf36e8000LL),
-      real(0x6fa66bdc836df000LL),real(-0x67912be26fab2000LL),
-      reale(2539LL,0xf65fb2006d000LL),real(-0x237e1033f4d8c000LL),
-      real(0x3efb5ba75c79b000LL),real(-0x32b52fd83cbe6000LL),
-      real(0x17d40e2c1a29000LL),real(0x7dfd16a9c2e300LL),
+      // C4[5], coeff of eps^7, polynomial in n of order 19
+      real(-0xbc3b1c3800LL),real(-0x19fd8659000LL),real(-0x3ce45316800LL),
+      real(-0x98e89f08000LL),real(-0x1a16c5239800LL),real(-0x4ef4224b7000LL),
+      real(-0x11089a8d8c800LL),real(-0x461e8219c6000LL),
+      real(-0x1740d89936f800LL),real(-0xbb97ef56095000LL),
+      real(-0xffd8608f0242800LL),reale(4956LL,0x2ae7ba647c000LL),
+      reale(-27804LL,0x77793f179a800LL),reale(78703LL,0x691d56f30d000LL),
+      reale(-126582LL,0x4d53dadbc7800LL),reale(111405LL,0x65dae188be000LL),
+      reale(-33041LL,0x37d0713be4800LL),reale(-31123LL,0x5ae3e7032f000LL),
+      reale(33849LL,0xe315529991800LL),reale(-10097LL,0x3035514bac080LL),
       reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[138]
-      real(0x4d6c482dac2a0000LL),reale(-2330LL,0x4e01d8dc24000LL),
-      reale(2244LL,0xda129de1b8000LL),real(-0x25b9c94d1ec14000LL),
-      real(0x5915813997350000LL),real(-0x2b18411354f8c000LL),
-      real(0x1038d20e1fbe8000LL),real(-0x1a9977b2ea9c4000LL),
-      real(0x7df995f732ef600LL),reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[139]
-      real(0x737c719d74a11000LL),real(-0x33cb00709b02e000LL),
-      real(0x64aa4f647e063000LL),real(-0x22d04f5347fb4000LL),
-      real(0x244213a9e6215000LL),real(-0x2372b83384fba000LL),
-      real(0x29c5a12d1767000LL),real(0xd64e2b028e9d00LL),
+      // C4[5], coeff of eps^6, polynomial in n of order 20
+      real(-0xd6ed08000LL),real(-0x1b8fe4a000LL),real(-0x3b33274000LL),
+      real(-0x860230e000LL),real(-0x142709a0000LL),real(-0x341c17b2000LL),
+      real(-0x92ee7ecc000LL),real(-0x1ccf17876000LL),real(-0x6786d9e38000LL),
+      real(-0x1bdf19e19a000LL),real(-0x9bb8377424000LL),
+      real(-0x5352681ef5e000LL),real(-0x79ce0dfd0cd0000LL),
+      reale(2563LL,0x29027cc1fe000LL),reale(-15918LL,0x531738b84000LL),
+      reale(51375LL,0x61bf7d963a000LL),reale(-99437LL,0xc6f0784898000LL),
+      reale(119998LL,0xa6d5e6f116000LL),reale(-88556LL,0xd863841e2c000LL),
+      reale(36577LL,0x210e8c3652000LL),reale(-6478LL,0xccd0172bb6d00LL),
       reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[140]
-      real(0x216feaa994ce0000LL),real(-0xab5f967e8690000LL),
-      real(0x11e48889bb540000LL),real(-0xb74a91dab5f0000LL),
-      real(0x3c54ceff81a0000LL),real(-0x5d7cb98f1a50000LL),
-      real(0x1f9a69370b20800LL),reale(0x3fc3f4LL,0x89b50ac9b6cd7LL),
-      // _C4x[141]
-      real(0x40db2f49b455f800LL),real(-0x1e99bb32c4c22000LL),
-      real(0x173ba0294630c800LL),real(-0x194707e3169c1000LL),
-      real(0x2d83efe695c9800LL),real(0xdf3e0617af3080LL),
+      // C4[5], coeff of eps^5, polynomial in n of order 21
+      real(-0x973b7800LL),real(-0x125656000LL),real(-0x24ee64800LL),
+      real(-0x4d94b7000LL),real(-0xaaf721800LL),real(-0x18e0978000LL),
+      real(-0x3dbc68e800LL),real(-0xa52d939000LL),real(-0x1e3bc54b800LL),
+      real(-0x62f2289a000LL),real(-0x174e12bf8800LL),real(-0x69ee83c3b000LL),
+      real(-0x2753bfa335800LL),real(-0x1693a2298bc000LL),
+      real(-0x23ce232de3a2800LL),real(0x33ca29bdcdd43000LL),
+      reale(-5755LL,0x96c59eaa20800LL),reale(21176LL,0x3b8f28c122000LL),
+      reale(-47647LL,0x79fde44d73800LL),reale(67058LL,0x11f0010e41000LL),
+      reale(-51818LL,0x6680b95db6800LL),reale(16192LL,0xfff7c612b6f80LL),
       reale(0xbf4bddLL,0x9d1f205d24685LL),
-      // _C4x[142]
-      real(0x5e4a1598000LL),real(-0x48b6e92a000LL),real(0x1757a4ac000LL),
-      real(-0x20e8326e000LL),real(0xc6156d2d00LL),real(0x2081a7235aaf593LL),
-      // _C4x[143]
-      real(0xef2f223e3800LL),real(-0x110fb2e7bf000LL),real(0x282bb4606800LL),
-      real(0xbe30d7a6780LL),reale(2828LL,0xfcd03d1974f5LL),
-      // _C4x[144]
-      real(0x2ba61448000LL),real(-0x378568c4000LL),real(0x16cc31e2a00LL),
-      real(0x4c6f2137745e091LL),
-      // _C4x[145]
-      real(0x46ce30800LL),real(0x146425580LL),real(0x1580fd4afdbe65LL),
-      // _C4x[146]
-      real(356096LL),real(0x16df1ef5f5LL),
-      // _C4x[147]
-      real(0x26d5c000LL),real(0x58391000LL),real(0xd2f06000LL),
-      real(0x216bfb000LL),real(0x5aaab0000LL),real(0x10a5565000LL),
-      real(0x35c765a000LL),real(0xc335dcf000LL),real(0x334e2804000LL),
-      real(0x106060339000LL),real(0x6e2b415ae000LL),real(0x484c62e3a3000LL),
-      real(0x848c0aa1558000LL),real(-0xe0b56a0582f3000LL),
-      real(0x745df25523d02000LL),reale(-8379LL,0x93d80ded77000LL),
-      reale(23938LL,0x5996b3a2ac000LL),reale(-45882LL,0x299f27b2e1000LL),
-      reale(58395LL,0x10d8591c56000LL),reale(-42674LL,0xaec45c6b4b000LL),
-      reale(12954LL,0x665fd1a892600LL),reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[148]
-      real(0x1bc8d4000LL),real(0x4471f8000LL),real(0xb3f21c000LL),
-      real(0x1feb1c0000LL),real(0x6346964000LL),real(0x1597d188000LL),
-      real(0x56a252ac000LL),real(0x1a3bcf550000LL),real(0xa648bd1f4000LL),
-      real(0x65fb114118000LL),real(0xacffeca0b3c000LL),
-      real(-0x10c1b440c2720000LL),real(0x7d0a1c0732284000LL),
-      reale(-7962LL,0xe4c185e0a8000LL),reale(19682LL,0xa4af1c3bcc000LL),
-      reale(-31918LL,0x3337107c70000LL),reale(34094LL,0x3798b7b14000LL),
-      reale(-23102LL,0xa7c0ead038000LL),reale(8983LL,0xdb34fa045c000LL),
-      real(-0x5f40c0b45d798c00LL),reale(0x4b5bf2LL,0x74330cbfd80a1LL),
-      // _C4x[149]
-      real(0x7240494000LL),real(0x13aa0f5a000LL),real(0x3b2b77a0000LL),
-      real(0xc68497e6000LL),real(0x2fcbb8aac000LL),real(0xdd4302e72000LL),
-      real(0x534405e9b8000LL),real(0x30298b6eefe000LL),
-      real(0x4c5dcf34c0c4000LL),real(-0x6d574da684a76000LL),
-      reale(11873LL,0x12afe73bd0000LL),reale(-42010LL,0xaf63f69e16000LL),
-      reale(89073LL,0x6259ee06dc000LL),reale(-115684LL,0x519b5d84a2000LL),
-      reale(82889LL,0x8f2a67cde8000LL),reale(-11936LL,0x4e23ac852e000LL),
-      reale(-33313LL,0x30fa5dbcf4000LL),reale(28876LL,0xae4eda7bba000LL),
-      reale(-8102LL,0x7c9ba7ae5ac00LL),reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[150]
-      real(0x8ddfb274000LL),real(0x1ccea7740000LL),real(0x6b145a40c000LL),
-      real(0x1dc5136a58000LL),real(0xab5ca60ba4000LL),real(0x5e28748a970000LL),
-      real(0x8cad0403953c000LL),reale(-3004LL,0x514eade088000LL),
-      reale(18707LL,0x350991ecd4000LL),reale(-59285LL,0x97ba9abba0000LL),
-      reale(107702LL,0xd776bbe6c000LL),reale(-107580LL,0x1cbface6b8000LL),
-      reale(33813LL,0xa464b8b604000LL),reale(48035LL,0x81a4fa0dd0000LL),
-      reale(-64048LL,0x5bd9a37f9c000LL),reale(31225LL,0xe027c1dce8000LL),
-      reale(-5636LL,0x2a297fc734000LL),real(-0x50368754849c400LL),
+      // C4[6], coeff of eps^26, polynomial in n of order 0
+      real(0x43f7200LL),real(0x75209f8d91abLL),
+      // C4[6], coeff of eps^25, polynomial in n of order 1
+      real(-0x3c404000LL),real(0x15c35400LL),real(0x64173937d043LL),
+      // C4[6], coeff of eps^24, polynomial in n of order 2
+      real(-0x10389da9c000LL),real(0x19e75ef2000LL),real(0x821f98bc00LL),
+      real(0xd767bab38dc330dLL),
+      // C4[6], coeff of eps^23, polynomial in n of order 3
+      real(-0x142d81502c000LL),real(0x6dee9f4b8000LL),real(-0xae181cf64000LL),
+      real(0x39153b46b400LL),reale(3342LL,0x41381bc9272f3LL),
+      // C4[6], coeff of eps^22, polynomial in n of order 4
+      real(-0x13480fca8c000LL),real(0x16106a2c37000LL),
+      real(-0x1502d2e846000LL),real(0x16180c1bd000LL),real(0x74238242a00LL),
+      reale(3342LL,0x41381bc9272f3LL),
+      // C4[6], coeff of eps^21, polynomial in n of order 5
+      real(-0x1c0b06f2aed0000LL),real(0x44926ab731c0000LL),
+      real(-0x2031c71e85b0000LL),real(0xca25cdaf0e0000LL),
+      real(-0x14c7d62b6490000LL),real(0x61052e04125000LL),
+      reale(0x1163fcLL,0xdfbd02f131dafLL),
+      // C4[6], coeff of eps^20, polynomial in n of order 6
+      real(-0x3c147e5183b90000LL),real(0x5c8a793ab7a08000LL),
+      real(-0x14e3709880260000LL),real(0x26583d412b938000LL),
+      real(-0x1ec1409e52930000LL),real(0xd82d55b5068000LL),
+      real(0x4a1c5add9a3000LL),reale(0xe213d7LL,0x5c99263f881e3LL),
+      // C4[6], coeff of eps^19, polynomial in n of order 7
+      reale(-2885LL,0x6888986810000LL),real(0x5dcb94a5bbaa0000LL),
+      real(-0x2147754a866d0000LL),real(0x59b9e153ee1c0000LL),
+      real(-0x1d3317b06cdb0000LL),real(0xfd67f86b28e0000LL),
+      real(-0x193b89a255c90000LL),real(0x662541f54195000LL),
       reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[151]
-      real(0xcab3dac70000LL),real(0x3665759289000LL),real(0x12ce11eabe2000LL),
-      real(0x9df70180dbb000LL),real(0xdfd754eb8954000LL),
-      reale(-4488LL,0xa22dc969ed000LL),reale(25849LL,0xff24cd52c6000LL),
-      reale(-73909LL,0xe84c249d1f000LL),reale(115119LL,0x8d3c9a9638000LL),
-      reale(-83692LL,0xbe01c1fd51000LL),reale(-14376LL,0x52590d21aa000LL),
-      reale(76590LL,0xeb60670083000LL),reale(-52129LL,0x656e27c31c000LL),
-      reale(7010LL,0x5a128dfcb5000LL),reale(3866LL,0xf6d75c088e000LL),
-      real(0x469f50315e7e7000LL),real(-0x4bbe9f188165a200LL),
+      // C4[6], coeff of eps^18, polynomial in n of order 8
+      reale(-5405LL,0xa1991e06d0000LL),real(0x194c5bcfa9f36000LL),
+      reale(-2202LL,0xb0dcf6bb1c000LL),reale(2053LL,0x73a8845e02000LL),
+      real(-0x127ebba7aac98000LL),real(0x433c97a5782ce000LL),
+      real(-0x29997437ffc4c000LL),real(-0xb36408ece66000LL),
+      real(-0x4eb946c9b6ac00LL),reale(0xe213d7LL,0x5c99263f881e3LL),
+      // C4[6], coeff of eps^17, polynomial in n of order 9
+      reale(-2830LL,0xa8bb37a568000LL),real(0x53fda6bff9540000LL),
+      reale(-5947LL,0x3e8620cd18000LL),real(0x424987c8bd3f0000LL),
+      real(-0x4d6fba1e72f38000LL),reale(2362LL,0x7a9b39aaa0000LL),
+      real(-0x1a7dd6520d788000LL),real(0x1ca5a49549150000LL),
+      real(-0x279b8ad82b3d8000LL),real(0x8624b660e613800LL),
       reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[152]
-      real(0x1da928c9710000LL),real(0xef3463c3520000LL),
-      real(0x1433e03669f30000LL),reale(-6122LL,0x376a120b40000LL),
-      reale(32842LL,0x2af7b46f50000LL),reale(-85282LL,0x2598a6c160000LL),
-      reale(113905LL,0x4294ec3770000LL),reale(-54342LL,0xcaad3e8780000LL),
-      reale(-49474LL,0x7f29202790000LL),reale(78594LL,0x71ba158da0000LL),
-      reale(-27685LL,0x2a1d166fb0000LL),reale(-5832LL,0xca82c803c0000LL),
-      reale(-2438LL,0xc289213fd0000LL),reale(8713LL,0x93ccba19e0000LL),
-      reale(-3468LL,0xf03336c7f0000LL),real(0xf2bb44edf33d000LL),
+      // C4[6], coeff of eps^16, polynomial in n of order 10
+      reale(3052LL,0x1cc54fce28000LL),reale(15175LL,0x33b0e2aba4000LL),
+      reale(-5745LL,0xf3abbf2820000LL),real(-0xd3fdde9c4364000LL),
+      reale(-5628LL,0xbd4d5ba218000LL),reale(2296LL,0xc920e17994000LL),
+      real(-0x15ef23de88bf0000LL),reale(2060LL,0x9b7c8a7a8c000LL),
+      real(-0x3634e9b2229f8000LL),real(-0x3eaac877287c000LL),
+      real(-0x1ee323a1ca0c800LL),reale(0xe213d7LL,0x5c99263f881e3LL),
+      // C4[6], coeff of eps^15, polynomial in n of order 11
+      reale(-77305LL,0x14b26f7638000LL),reale(21636LL,0x8867f71d90000LL),
+      reale(6061LL,0x1026579ee8000LL),reale(12960LL,0x5a843c8140000LL),
+      reale(-9404LL,0xfda467ab98000LL),real(-0x35c5d916ffb10000LL),
+      reale(-4115LL,0xc2ec441448000LL),reale(3690LL,0x5a8c0420a0000LL),
+      real(-0x7db1fc00af08000LL),real(0x3ee56918f4c50000LL),
+      real(-0x41d90b24a2658000LL),real(0xb0f65a4ddefb800LL),
+      reale(0xe213d7LL,0x5c99263f881e3LL),
+      // C4[6], coeff of eps^14, polynomial in n of order 12
+      reale(84445LL,0xef949ea0f8000LL),reale(19627LL,0xf0e541fbce000LL),
+      reale(-80834LL,0xa08bedc824000LL),reale(34575LL,0x1644d05d7a000LL),
+      reale(6828LL,0x4cfbe5cb50000LL),reale(8288LL,0x561945cd26000LL),
+      reale(-12839LL,0x92c1cd7e7c000LL),real(0x15c5608ef0ed2000LL),
+      real(-0x653ba29de4a58000LL),reale(4217LL,0x4b5d86267e000LL),
+      real(-0x3b46409683b2c000LL),real(-0x974d654f27d6000LL),
+      real(-0x674dea252558c00LL),reale(0xe213d7LL,0x5c99263f881e3LL),
+      // C4[6], coeff of eps^13, polynomial in n of order 13
+      reale(45373LL,0x376f121df0000LL),reale(-98872LL,0x1cf2432040000LL),
+      reale(96522LL,0x4174515a90000LL),real(-0x2d5b0f36d6d20000LL),
+      reale(-79484LL,0xacd8facf30000LL),reale(50297LL,0xf87ac09580000LL),
+      reale(3071LL,0x5d816f2bd0000LL),real(0x5cfb30543d820000LL),
+      reale(-14133LL,0xb3e4e32070000LL),reale(3907LL,0xfc9bf30ac0000LL),
+      real(0x1e5e0fff75d10000LL),reale(2700LL,0x7f35ecdd60000LL),
+      real(-0x74992b46f6e50000LL),real(0xe2f417f6bbc1000LL),
       reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[153]
+      // C4[6], coeff of eps^12, polynomial in n of order 14
       real(0x1b3ddeae39bf0000LL),reale(-7840LL,0x9d9685eca8000LL),
       reale(39400LL,0x7dae3b2360000LL),reale(-93478LL,0xd2285ae218000LL),
       reale(106917LL,0x5f76290ad0000LL),reale(-25707LL,0xb68a548f88000LL),
@@ -2935,158 +2949,118 @@ namespace GeographicLib {
       reale(-10826LL,0x68d0386120000LL),reale(8339LL,0xae0935c7d8000LL),
       real(-0xb5e35652d770000LL),real(-0xb97cf166cab8000LL),
       real(-0x1484ac4370939000LL),reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[154]
-      reale(45373LL,0x376f121df0000LL),reale(-98872LL,0x1cf2432040000LL),
-      reale(96522LL,0x4174515a90000LL),real(-0x2d5b0f36d6d20000LL),
-      reale(-79484LL,0xacd8facf30000LL),reale(50297LL,0xf87ac09580000LL),
-      reale(3071LL,0x5d816f2bd0000LL),real(0x5cfb30543d820000LL),
-      reale(-14133LL,0xb3e4e32070000LL),reale(3907LL,0xfc9bf30ac0000LL),
-      real(0x1e5e0fff75d10000LL),reale(2700LL,0x7f35ecdd60000LL),
-      real(-0x74992b46f6e50000LL),real(0xe2f417f6bbc1000LL),
+      // C4[6], coeff of eps^11, polynomial in n of order 15
+      real(0x1da928c9710000LL),real(0xef3463c3520000LL),
+      real(0x1433e03669f30000LL),reale(-6122LL,0x376a120b40000LL),
+      reale(32842LL,0x2af7b46f50000LL),reale(-85282LL,0x2598a6c160000LL),
+      reale(113905LL,0x4294ec3770000LL),reale(-54342LL,0xcaad3e8780000LL),
+      reale(-49474LL,0x7f29202790000LL),reale(78594LL,0x71ba158da0000LL),
+      reale(-27685LL,0x2a1d166fb0000LL),reale(-5832LL,0xca82c803c0000LL),
+      reale(-2438LL,0xc289213fd0000LL),reale(8713LL,0x93ccba19e0000LL),
+      reale(-3468LL,0xf03336c7f0000LL),real(0xf2bb44edf33d000LL),
       reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[155]
-      reale(84445LL,0xef949ea0f8000LL),reale(19627LL,0xf0e541fbce000LL),
-      reale(-80834LL,0xa08bedc824000LL),reale(34575LL,0x1644d05d7a000LL),
-      reale(6828LL,0x4cfbe5cb50000LL),reale(8288LL,0x561945cd26000LL),
-      reale(-12839LL,0x92c1cd7e7c000LL),real(0x15c5608ef0ed2000LL),
-      real(-0x653ba29de4a58000LL),reale(4217LL,0x4b5d86267e000LL),
-      real(-0x3b46409683b2c000LL),real(-0x974d654f27d6000LL),
-      real(-0x674dea252558c00LL),reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[156]
-      reale(-77305LL,0x14b26f7638000LL),reale(21636LL,0x8867f71d90000LL),
-      reale(6061LL,0x1026579ee8000LL),reale(12960LL,0x5a843c8140000LL),
-      reale(-9404LL,0xfda467ab98000LL),real(-0x35c5d916ffb10000LL),
-      reale(-4115LL,0xc2ec441448000LL),reale(3690LL,0x5a8c0420a0000LL),
-      real(-0x7db1fc00af08000LL),real(0x3ee56918f4c50000LL),
-      real(-0x41d90b24a2658000LL),real(0xb0f65a4ddefb800LL),
+      // C4[6], coeff of eps^10, polynomial in n of order 16
+      real(0xcab3dac70000LL),real(0x3665759289000LL),real(0x12ce11eabe2000LL),
+      real(0x9df70180dbb000LL),real(0xdfd754eb8954000LL),
+      reale(-4488LL,0xa22dc969ed000LL),reale(25849LL,0xff24cd52c6000LL),
+      reale(-73909LL,0xe84c249d1f000LL),reale(115119LL,0x8d3c9a9638000LL),
+      reale(-83692LL,0xbe01c1fd51000LL),reale(-14376LL,0x52590d21aa000LL),
+      reale(76590LL,0xeb60670083000LL),reale(-52129LL,0x656e27c31c000LL),
+      reale(7010LL,0x5a128dfcb5000LL),reale(3866LL,0xf6d75c088e000LL),
+      real(0x469f50315e7e7000LL),real(-0x4bbe9f188165a200LL),
       reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[157]
-      reale(3052LL,0x1cc54fce28000LL),reale(15175LL,0x33b0e2aba4000LL),
-      reale(-5745LL,0xf3abbf2820000LL),real(-0xd3fdde9c4364000LL),
-      reale(-5628LL,0xbd4d5ba218000LL),reale(2296LL,0xc920e17994000LL),
-      real(-0x15ef23de88bf0000LL),reale(2060LL,0x9b7c8a7a8c000LL),
-      real(-0x3634e9b2229f8000LL),real(-0x3eaac877287c000LL),
-      real(-0x1ee323a1ca0c800LL),reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[158]
-      reale(-2830LL,0xa8bb37a568000LL),real(0x53fda6bff9540000LL),
-      reale(-5947LL,0x3e8620cd18000LL),real(0x424987c8bd3f0000LL),
-      real(-0x4d6fba1e72f38000LL),reale(2362LL,0x7a9b39aaa0000LL),
-      real(-0x1a7dd6520d788000LL),real(0x1ca5a49549150000LL),
-      real(-0x279b8ad82b3d8000LL),real(0x8624b660e613800LL),
+      // C4[6], coeff of eps^9, polynomial in n of order 17
+      real(0x8ddfb274000LL),real(0x1ccea7740000LL),real(0x6b145a40c000LL),
+      real(0x1dc5136a58000LL),real(0xab5ca60ba4000LL),real(0x5e28748a970000LL),
+      real(0x8cad0403953c000LL),reale(-3004LL,0x514eade088000LL),
+      reale(18707LL,0x350991ecd4000LL),reale(-59285LL,0x97ba9abba0000LL),
+      reale(107702LL,0xd776bbe6c000LL),reale(-107580LL,0x1cbface6b8000LL),
+      reale(33813LL,0xa464b8b604000LL),reale(48035LL,0x81a4fa0dd0000LL),
+      reale(-64048LL,0x5bd9a37f9c000LL),reale(31225LL,0xe027c1dce8000LL),
+      reale(-5636LL,0x2a297fc734000LL),real(-0x50368754849c400LL),
       reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[159]
-      reale(-5405LL,0xa1991e06d0000LL),real(0x194c5bcfa9f36000LL),
-      reale(-2202LL,0xb0dcf6bb1c000LL),reale(2053LL,0x73a8845e02000LL),
-      real(-0x127ebba7aac98000LL),real(0x433c97a5782ce000LL),
-      real(-0x29997437ffc4c000LL),real(-0xb36408ece66000LL),
-      real(-0x4eb946c9b6ac00LL),reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[160]
-      reale(-2885LL,0x6888986810000LL),real(0x5dcb94a5bbaa0000LL),
-      real(-0x2147754a866d0000LL),real(0x59b9e153ee1c0000LL),
-      real(-0x1d3317b06cdb0000LL),real(0xfd67f86b28e0000LL),
-      real(-0x193b89a255c90000LL),real(0x662541f54195000LL),
-      reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[161]
-      real(-0x3c147e5183b90000LL),real(0x5c8a793ab7a08000LL),
-      real(-0x14e3709880260000LL),real(0x26583d412b938000LL),
-      real(-0x1ec1409e52930000LL),real(0xd82d55b5068000LL),
-      real(0x4a1c5add9a3000LL),reale(0xe213d7LL,0x5c99263f881e3LL),
-      // _C4x[162]
-      real(-0x1c0b06f2aed0000LL),real(0x44926ab731c0000LL),
-      real(-0x2031c71e85b0000LL),real(0xca25cdaf0e0000LL),
-      real(-0x14c7d62b6490000LL),real(0x61052e04125000LL),
-      reale(0x1163fcLL,0xdfbd02f131dafLL),
-      // _C4x[163]
-      real(-0x13480fca8c000LL),real(0x16106a2c37000LL),
-      real(-0x1502d2e846000LL),real(0x16180c1bd000LL),real(0x74238242a00LL),
-      reale(3342LL,0x41381bc9272f3LL),
-      // _C4x[164]
-      real(-0x142d81502c000LL),real(0x6dee9f4b8000LL),real(-0xae181cf64000LL),
-      real(0x39153b46b400LL),reale(3342LL,0x41381bc9272f3LL),
-      // _C4x[165]
-      real(-0x10389da9c000LL),real(0x19e75ef2000LL),real(0x821f98bc00LL),
-      real(0xd767bab38dc330dLL),
-      // _C4x[166]
-      real(-0x3c404000LL),real(0x15c35400LL),real(0x64173937d043LL),
-      // _C4x[167]
-      real(0x43f7200LL),real(0x75209f8d91abLL),
-      // _C4x[168]
-      real(-0x12550000LL),real(-0x32460000LL),real(-0x94070000LL),
-      real(-7579LL<<20),real(-0x689d90000LL),real(-0x1a131a0000LL),
-      real(-0x790f8b0000LL),real(-0x2ae74440000LL),real(-0x1427d8dd0000LL),
-      real(-0xee3402ee0000LL),real(-0x1efc2a618f0000LL),
-      real(0x3c3fa7bdb280000LL),real(-0x243e4ae81d610000LL),
-      reale(3081LL,0xb7f72703e0000LL),reale(-10640LL,0xbbbd057ed0000LL),
-      reale(25534LL,0x3d6d8c6940000LL),reale(-43525LL,0xba33d0a9b0000LL),
-      reale(51336LL,0x52534b86a0000LL),reale(-35936LL,0x932c17ee90000LL),
-      reale(10668LL,0x544ee8e52d400LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[169]
-      real(-0x3d7880000LL),real(-0xbe0fc0000LL),real(-165572LL<<20),
-      real(-0x9aa4840000LL),real(-0x2adb4f80000LL),real(-0xe6e14cc0000LL),
-      real(-0x666b5b3LL<<20),real(-0x46e9da3540000LL),
-      real(-0x89237b88680000LL),real(0xf5289483e640000LL),
-      reale(-2142LL,0x9739a99eLL<<20),reale(10163LL,0xf2a381edc0000LL),
-      reale(-30732LL,0x5cd062280000LL),reale(63101LL,0xdb7b98c940000LL),
-      reale(-89757LL,0x471a126fLL<<20),reale(87316LL,0x63109160c0000LL),
-      reale(-55354LL,0xda1bbeb80000LL),reale(20534LL,0x8754849c40000LL),
-      reale(-3369LL,0xdcc223e5d800LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[170]
-      real(-0x8d7a970000LL),real(-0x209c2bLL<<20),real(-0x8adb5490000LL),
-      real(-0x2cb1dafa0000LL),real(-0x12da13bdb0000LL),
-      real(-0xc549443040000LL),real(-0x1658a10fa0d0000LL),
-      real(0x250f39cc17720000LL),reale(-4743LL,0xffd1f9c610000LL),
-      reale(20239LL,0xc76fee6a80000LL),reale(-53603LL,0xd95b5dbaf0000LL),
-      reale(92339LL,0x3cdcf0cde0000LL),reale(-101237LL,0xf904c301d0000LL),
-      reale(59785LL,0x22c992c540000LL),real(0x5c1211516deb0000LL),
-      reale(-32945LL,0x793fa374a0000LL),reale(24775LL,0x5aee521590000LL),
-      reale(-6658LL,0x521f990157400LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[171]
-      real(-0x1526f7LL<<24),real(-0x68a88b9LL<<20),real(-0x2a358682LL<<20),
-      real(-0x1a3e60a4bLL<<20),real(-0x2ce197fb94LL<<20),
-      real(0x4592e53c723LL<<20),reale(-8215LL,0x6decc35aLL<<20),
-      reale(31749LL,0xea580d91LL<<20),reale(-73862LL,0xa3060848LL<<20),
-      reale(105371LL,0xded9faffLL<<20),reale(-81326LL,0xa57bc536LL<<20),
-      reale(5533LL,0x9b69716dLL<<20),reale(54935LL,0x1e8a6c24LL<<20),
-      reale(-54850LL,0xf340a2dbLL<<20),reale(23331LL,0xfc74cf12LL<<20),
-      reale(-3572LL,0xc712b149LL<<20),real(-0xa766ab1fb094000LL),
+      // C4[6], coeff of eps^8, polynomial in n of order 18
+      real(0x7240494000LL),real(0x13aa0f5a000LL),real(0x3b2b77a0000LL),
+      real(0xc68497e6000LL),real(0x2fcbb8aac000LL),real(0xdd4302e72000LL),
+      real(0x534405e9b8000LL),real(0x30298b6eefe000LL),
+      real(0x4c5dcf34c0c4000LL),real(-0x6d574da684a76000LL),
+      reale(11873LL,0x12afe73bd0000LL),reale(-42010LL,0xaf63f69e16000LL),
+      reale(89073LL,0x6259ee06dc000LL),reale(-115684LL,0x519b5d84a2000LL),
+      reale(82889LL,0x8f2a67cde8000LL),reale(-11936LL,0x4e23ac852e000LL),
+      reale(-33313LL,0x30fa5dbcf4000LL),reale(28876LL,0xae4eda7bba000LL),
+      reale(-8102LL,0x7c9ba7ae5ac00LL),reale(0xe213d7LL,0x5c99263f881e3LL),
+      // C4[6], coeff of eps^7, polynomial in n of order 19
+      real(0x1bc8d4000LL),real(0x4471f8000LL),real(0xb3f21c000LL),
+      real(0x1feb1c0000LL),real(0x6346964000LL),real(0x1597d188000LL),
+      real(0x56a252ac000LL),real(0x1a3bcf550000LL),real(0xa648bd1f4000LL),
+      real(0x65fb114118000LL),real(0xacffeca0b3c000LL),
+      real(-0x10c1b440c2720000LL),real(0x7d0a1c0732284000LL),
+      reale(-7962LL,0xe4c185e0a8000LL),reale(19682LL,0xa4af1c3bcc000LL),
+      reale(-31918LL,0x3337107c70000LL),reale(34094LL,0x3798b7b14000LL),
+      reale(-23102LL,0xa7c0ead038000LL),reale(8983LL,0xdb34fa045c000LL),
+      real(-0x5f40c0b45d798c00LL),reale(0x4b5bf2LL,0x74330cbfd80a1LL),
+      // C4[6], coeff of eps^6, polynomial in n of order 20
+      real(0x26d5c000LL),real(0x58391000LL),real(0xd2f06000LL),
+      real(0x216bfb000LL),real(0x5aaab0000LL),real(0x10a5565000LL),
+      real(0x35c765a000LL),real(0xc335dcf000LL),real(0x334e2804000LL),
+      real(0x106060339000LL),real(0x6e2b415ae000LL),real(0x484c62e3a3000LL),
+      real(0x848c0aa1558000LL),real(-0xe0b56a0582f3000LL),
+      real(0x745df25523d02000LL),reale(-8379LL,0x93d80ded77000LL),
+      reale(23938LL,0x5996b3a2ac000LL),reale(-45882LL,0x299f27b2e1000LL),
+      reale(58395LL,0x10d8591c56000LL),reale(-42674LL,0xaec45c6b4b000LL),
+      reale(12954LL,0x665fd1a892600LL),reale(0xe213d7LL,0x5c99263f881e3LL),
+      // C4[7], coeff of eps^26, polynomial in n of order 0
+      real(0x13118000LL),real(0x75209f8d91abLL),
+      // C4[7], coeff of eps^25, polynomial in n of order 1
+      real(0x3a6d50000LL),real(0x138f18400LL),real(0x4082f7e0f93b2fLL),
+      // C4[7], coeff of eps^24, polynomial in n of order 2
+      real(0x5599e7780000LL),real(-0x8cfe739c0000LL),real(0x28b139bd9800LL),
+      reale(3231LL,0x13f0854e6fdc3LL),
+      // C4[7], coeff of eps^23, polynomial in n of order 3
+      real(0x2cef3d4baf0000LL),real(-0x23eaa989be0000LL),
+      real(0xef66e7c50000LL),real(0x5431e6572400LL),
+      reale(119549LL,0xe1c344562ad2fLL),
+      // C4[7], coeff of eps^22, polynomial in n of order 4
+      real(0x33ca8094LL<<20),real(-0x1146ab51LL<<20),real(0x951494aLL<<20),
+      real(-0xee7ce1bLL<<20),real(0x3ccfc393c000LL),
+      reale(3856LL,0x72a333c0b70f1LL),
+      // C4[7], coeff of eps^21, polynomial in n of order 5
+      real(0x4e0ae513ee240000LL),real(-0xc0c2e3c4cfLL<<20),
+      real(0x2891fd50f97c0000LL),real(-0x1a095b35a9f80000LL),
+      real(-0x52187764ac0000LL),real(-0x22c21c78f4d000LL),
       reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[172]
-      real(-0x4fc4c2e840000LL),real(-0x2f63f986280000LL),
-      real(-0x4cec268118c0000LL),real(0x702c4e5b497LL<<20),
-      reale(-12305LL,0xaa8fdfeec0000LL),reale(43346LL,0x51cc5fb080000LL),
-      reale(-88872LL,0xa25817fe40000LL),reale(103468LL,0x37d02f3aLL<<20),
-      reale(-46366LL,0x45288ce5c0000LL),reale(-41350LL,0xda855d8380000LL),
-      reale(72365LL,0x9597fe7540000LL),reale(-36581LL,0x66b4b4ddLL<<20),
-      real(0x3033fbc727cc0000LL),reale(3419LL,0x57c1ab9680000LL),
-      real(0x5d00262e0cc40000LL),real(-0x44e0e913b4a79000LL),
+      // C4[7], coeff of eps^20, polynomial in n of order 6
+      real(0x2faca7f6766LL<<20),real(-0x28623ac8329LL<<20),
+      real(0x55c963456a4LL<<20),real(-0x11bb996f2dfLL<<20),
+      real(0x108bab390a2LL<<20),real(-0x17b5bd88f85LL<<20),
+      real(0x53401a2130be000LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
+      // C4[7], coeff of eps^19, polynomial in n of order 7
+      real(-0x83a0cdc49940000LL),reale(-2693LL,0x7731e95580000LL),
+      real(0x5a9e6c539a840000LL),real(-0xc24642d3d7LL<<20),
+      real(0x4606e5f7741c0000LL),real(-0x210591b042380000LL),
+      real(-0x1ee58ad2bcc0000LL),real(-0xe57fab5d571000LL),
       reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[173]
-      real(-0x767f211b2aLL<<20),reale(2615LL,0x8698ee3LL<<20),
-      reale(-16755LL,0x8d55257cLL<<20),reale(54113LL,0x58a8d2e5LL<<20),
-      reale(-98063LL,0x29302962LL<<20),reale(91200LL,0xa6fbe637LL<<20),
-      reale(-9604LL,0xcc190aa8LL<<20),reale(-69012LL,0xe24608f9LL<<20),
-      reale(62980LL,0xeeb0c36eLL<<20),reale(-11146LL,0x45c9b4bLL<<20),
-      reale(-7196LL,0xf4bcdd4LL<<20),reale(-4458LL,0x211add4dLL<<20),
-      reale(7974LL,0x231c3faLL<<20),reale(-2669LL,0xd8692f1fLL<<20),
-      real(0x8b8039451326000LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[174]
-      reale(-21346LL,0x393f573540000LL),reale(63537LL,0xd254ce1fLL<<20),
-      reale(-101991LL,0xec282a30c0000LL),reale(73206LL,0xb939804c80000LL),
-      reale(21832LL,0x8bfbf3440000LL),reale(-78786LL,0x910c2aeaLL<<20),
-      reale(42984LL,0xe415720fc0000LL),reale(4706LL,0x1b30244780000LL),
-      real(-0x6fb64418f6cc0000LL),reale(-11953LL,0x9ad612b5LL<<20),
-      reale(6137LL,0x3819368ec0000LL),real(0x1ceca02d88280000LL),
-      real(-0x2d5a1d362dc0000LL),real(-0x14a7906c9982d000LL),
+      // C4[7], coeff of eps^18, polynomial in n of order 8
+      reale(3472LL,0x3c58cb98LL<<20),reale(-5077LL,0x2e5a0d05LL<<20),
+      real(-0x23c291494eLL<<20),real(-0x6a9c1a13021LL<<20),
+      reale(2051LL,0xf8c055ccLL<<20),real(-0xa41376ff47LL<<20),
+      real(0x1f44e68cce6LL<<20),real(-0x245598aac6dLL<<20),
+      real(0x69deaea556c4000LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
+      // C4[7], coeff of eps^17, polynomial in n of order 9
+      reale(15000LL,0xe6601a91a0000LL),real(-0x261369ca72fLL<<20),
+      real(0x42e9870754860000LL),reale(-5749LL,0x340bba88c0000LL),
+      real(0x3d07c1e90b320000LL),real(-0x1f816cb77f780000LL),
+      real(0x7fb986a3c79e0000LL),real(-0x26578914f47c0000LL),
+      real(-0x4ae4d5f0bb60000LL),real(-0x2b86668e596d800LL),
       reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[175]
-      reale(-101657LL,0x71ae74f4LL<<20),reale(53043LL,0x223d2095LL<<20),
-      reale(45405LL,0x1cb67f76LL<<20),reale(-76256LL,0x609f66d7LL<<20),
-      reale(23050LL,0x5b912df8LL<<20),reale(9407LL,0xe5488f19LL<<20),
-      reale(7022LL,0xeb6bec7aLL<<20),reale(-12739LL,0xf0edb55bLL<<20),
-      real(0x4df9e23a6fcLL<<20),real(0x118e235259dLL<<20),
-      reale(2782LL,0x4bc9e97eLL<<20),real(-0x61e77094421LL<<20),
-      real(0x9e768b34c754000LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[176]
+      // C4[7], coeff of eps^16, polynomial in n of order 10
+      real(-0x73f9d78b0d9LL<<20),real(0x4e7a9c7503280000LL),
+      reale(15740LL,0x2392a74cLL<<20),reale(-4249LL,0xcc7c095580000LL),
+      real(-0x407b444d4cfLL<<20),reale(-4969LL,0xc0c67a4080000LL),
+      reale(2638LL,0x3b83d7e6LL<<20),real(0x88c04a730380000LL),
+      real(0x44a3b895a7bLL<<20),real(-0x3a51363dc5180000LL),
+      real(0x855f1c455087000LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
+      // C4[7], coeff of eps^15, polynomial in n of order 11
       reale(61154LL,0xdd701642e0000LL),reale(-66912LL,0x73fb09c140000LL),
       reale(7800LL,0xcd3506c5a0000LL),reale(6879LL,0x58cd2b71LL<<20),
       reale(13340LL,0xebc72e5460000LL),reale(-8996LL,0xe1a48b80c0000LL),
@@ -3094,1162 +3068,1194 @@ namespace GeographicLib {
       reale(3789LL,0xabee5235e0000LL),real(-0x1eca7dff19fc0000LL),
       real(-0x7ff214bf2760000LL),real(-0x75bce0e31735800LL),
       reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[177]
-      real(-0x73f9d78b0d9LL<<20),real(0x4e7a9c7503280000LL),
-      reale(15740LL,0x2392a74cLL<<20),reale(-4249LL,0xcc7c095580000LL),
-      real(-0x407b444d4cfLL<<20),reale(-4969LL,0xc0c67a4080000LL),
-      reale(2638LL,0x3b83d7e6LL<<20),real(0x88c04a730380000LL),
-      real(0x44a3b895a7bLL<<20),real(-0x3a51363dc5180000LL),
-      real(0x855f1c455087000LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[178]
-      reale(15000LL,0xe6601a91a0000LL),real(-0x261369ca72fLL<<20),
-      real(0x42e9870754860000LL),reale(-5749LL,0x340bba88c0000LL),
-      real(0x3d07c1e90b320000LL),real(-0x1f816cb77f780000LL),
-      real(0x7fb986a3c79e0000LL),real(-0x26578914f47c0000LL),
-      real(-0x4ae4d5f0bb60000LL),real(-0x2b86668e596d800LL),
+      // C4[7], coeff of eps^14, polynomial in n of order 12
+      reale(-101657LL,0x71ae74f4LL<<20),reale(53043LL,0x223d2095LL<<20),
+      reale(45405LL,0x1cb67f76LL<<20),reale(-76256LL,0x609f66d7LL<<20),
+      reale(23050LL,0x5b912df8LL<<20),reale(9407LL,0xe5488f19LL<<20),
+      reale(7022LL,0xeb6bec7aLL<<20),reale(-12739LL,0xf0edb55bLL<<20),
+      real(0x4df9e23a6fcLL<<20),real(0x118e235259dLL<<20),
+      reale(2782LL,0x4bc9e97eLL<<20),real(-0x61e77094421LL<<20),
+      real(0x9e768b34c754000LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
+      // C4[7], coeff of eps^13, polynomial in n of order 13
+      reale(-21346LL,0x393f573540000LL),reale(63537LL,0xd254ce1fLL<<20),
+      reale(-101991LL,0xec282a30c0000LL),reale(73206LL,0xb939804c80000LL),
+      reale(21832LL,0x8bfbf3440000LL),reale(-78786LL,0x910c2aeaLL<<20),
+      reale(42984LL,0xe415720fc0000LL),reale(4706LL,0x1b30244780000LL),
+      real(-0x6fb64418f6cc0000LL),reale(-11953LL,0x9ad612b5LL<<20),
+      reale(6137LL,0x3819368ec0000LL),real(0x1ceca02d88280000LL),
+      real(-0x2d5a1d362dc0000LL),real(-0x14a7906c9982d000LL),
       reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[179]
-      reale(3472LL,0x3c58cb98LL<<20),reale(-5077LL,0x2e5a0d05LL<<20),
-      real(-0x23c291494eLL<<20),real(-0x6a9c1a13021LL<<20),
-      reale(2051LL,0xf8c055ccLL<<20),real(-0xa41376ff47LL<<20),
-      real(0x1f44e68cce6LL<<20),real(-0x245598aac6dLL<<20),
-      real(0x69deaea556c4000LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[180]
-      real(-0x83a0cdc49940000LL),reale(-2693LL,0x7731e95580000LL),
-      real(0x5a9e6c539a840000LL),real(-0xc24642d3d7LL<<20),
-      real(0x4606e5f7741c0000LL),real(-0x210591b042380000LL),
-      real(-0x1ee58ad2bcc0000LL),real(-0xe57fab5d571000LL),
+      // C4[7], coeff of eps^12, polynomial in n of order 14
+      real(-0x767f211b2aLL<<20),reale(2615LL,0x8698ee3LL<<20),
+      reale(-16755LL,0x8d55257cLL<<20),reale(54113LL,0x58a8d2e5LL<<20),
+      reale(-98063LL,0x29302962LL<<20),reale(91200LL,0xa6fbe637LL<<20),
+      reale(-9604LL,0xcc190aa8LL<<20),reale(-69012LL,0xe24608f9LL<<20),
+      reale(62980LL,0xeeb0c36eLL<<20),reale(-11146LL,0x45c9b4bLL<<20),
+      reale(-7196LL,0xf4bcdd4LL<<20),reale(-4458LL,0x211add4dLL<<20),
+      reale(7974LL,0x231c3faLL<<20),reale(-2669LL,0xd8692f1fLL<<20),
+      real(0x8b8039451326000LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
+      // C4[7], coeff of eps^11, polynomial in n of order 15
+      real(-0x4fc4c2e840000LL),real(-0x2f63f986280000LL),
+      real(-0x4cec268118c0000LL),real(0x702c4e5b497LL<<20),
+      reale(-12305LL,0xaa8fdfeec0000LL),reale(43346LL,0x51cc5fb080000LL),
+      reale(-88872LL,0xa25817fe40000LL),reale(103468LL,0x37d02f3aLL<<20),
+      reale(-46366LL,0x45288ce5c0000LL),reale(-41350LL,0xda855d8380000LL),
+      reale(72365LL,0x9597fe7540000LL),reale(-36581LL,0x66b4b4ddLL<<20),
+      real(0x3033fbc727cc0000LL),reale(3419LL,0x57c1ab9680000LL),
+      real(0x5d00262e0cc40000LL),real(-0x44e0e913b4a79000LL),
       reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[181]
-      real(0x2faca7f6766LL<<20),real(-0x28623ac8329LL<<20),
-      real(0x55c963456a4LL<<20),real(-0x11bb996f2dfLL<<20),
-      real(0x108bab390a2LL<<20),real(-0x17b5bd88f85LL<<20),
-      real(0x53401a2130be000LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[182]
-      real(0x4e0ae513ee240000LL),real(-0xc0c2e3c4cfLL<<20),
-      real(0x2891fd50f97c0000LL),real(-0x1a095b35a9f80000LL),
-      real(-0x52187764ac0000LL),real(-0x22c21c78f4d000LL),
+      // C4[7], coeff of eps^10, polynomial in n of order 16
+      real(-0x1526f7LL<<24),real(-0x68a88b9LL<<20),real(-0x2a358682LL<<20),
+      real(-0x1a3e60a4bLL<<20),real(-0x2ce197fb94LL<<20),
+      real(0x4592e53c723LL<<20),reale(-8215LL,0x6decc35aLL<<20),
+      reale(31749LL,0xea580d91LL<<20),reale(-73862LL,0xa3060848LL<<20),
+      reale(105371LL,0xded9faffLL<<20),reale(-81326LL,0xa57bc536LL<<20),
+      reale(5533LL,0x9b69716dLL<<20),reale(54935LL,0x1e8a6c24LL<<20),
+      reale(-54850LL,0xf340a2dbLL<<20),reale(23331LL,0xfc74cf12LL<<20),
+      reale(-3572LL,0xc712b149LL<<20),real(-0xa766ab1fb094000LL),
       reale(0x104dbd1LL,0x1c132c21ebd41LL),
-      // _C4x[183]
-      real(0x33ca8094LL<<20),real(-0x1146ab51LL<<20),real(0x951494aLL<<20),
-      real(-0xee7ce1bLL<<20),real(0x3ccfc393c000LL),
-      reale(3856LL,0x72a333c0b70f1LL),
-      // _C4x[184]
-      real(0x2cef3d4baf0000LL),real(-0x23eaa989be0000LL),
-      real(0xef66e7c50000LL),real(0x5431e6572400LL),
-      reale(119549LL,0xe1c344562ad2fLL),
-      // _C4x[185]
-      real(0x5599e7780000LL),real(-0x8cfe739c0000LL),real(0x28b139bd9800LL),
-      reale(3231LL,0x13f0854e6fdc3LL),
-      // _C4x[186]
-      real(0x3a6d50000LL),real(0x138f18400LL),real(0x4082f7e0f93b2fLL),
-      // _C4x[187]
-      real(0x13118000LL),real(0x75209f8d91abLL),
-      // _C4x[188]
-      real(0x10740000LL),real(0x38fa0000LL),real(3498LL<<20),
-      real(0x3b6460000LL),real(0x12dccc0000LL),real(0x759a120000LL),
-      real(0x3d0fff80000LL),real(0x3224b15e0000LL),real(0x74cfa8d240000LL),
-      real(-0x100412726d60000LL),real(0xaf94f028d5LL<<20),
-      real(-0x433703efa18a0000LL),reale(4345LL,0xa637f297c0000LL),
-      reale(-12474LL,0x608555e420000LL),reale(26308LL,0x13a90aa80000LL),
-      reale(-40980LL,0x3929b258e0000LL),reale(45533LL,0x15d1ab9d40000LL),
-      reale(-30802LL,0x35013915a0000LL),reale(8983LL,0xdb34fa045c000LL),
-      reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[189]
-      real(0x5cef80000LL),real(99288LL<<20),real(0x75c8080000LL),
-      real(0x2bad8dLL<<20),real(0x1576c2180000LL),real(0x1092b662LL<<20),
-      real(0x2405b55f280000LL),real(-0x490d2ef189LL<<20),
-      real(0x2dc13d73c1380000LL),reale(-4044LL,0xdf9645ecLL<<20),
-      reale(14485LL,0x7f6528a480000LL),reale(-36112LL,0xadb9dce1LL<<20),
-      reale(64526LL,0x4ec29dc580000LL),reale(-82902LL,0x61fc1376LL<<20),
-      reale(74876LL,0xa109259680000LL),reale(-44998LL,0x991eb9cbLL<<20),
-      reale(16070LL,0x802be23780000LL),reale(-2567LL,0x2f156f6c78000LL),
-      reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[190]
-      real(106398LL<<24),real(0x9377d6LL<<20),real(0x44feec4LL<<20),
-      real(0x326cada2LL<<20),real(0x67002b868LL<<20),real(-0xc295517d72LL<<20),
-      real(0x7045d79918cLL<<20),reale(-9007LL,0x977a7f5aLL<<20),
-      reale(28706LL,0x584fd4fLL<<24),reale(-61777LL,0xaecc34c6LL<<20),
-      reale(90600LL,0x34124d54LL<<20),reale(-86126LL,0xe1950b92LL<<20),
-      reale(41671LL,0x69508578LL<<20),reale(9900LL,0xe7fa147eLL<<20),
-      reale(-31427LL,0x3e3e181cLL<<20),reale(21427LL,0x558fd84aLL<<20),
-      reale(-5581LL,0xf70d350210000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[191]
-      real(0xa6c2bf580000LL),real(0x73fcd1afLL<<20),real(0xe000999c080000LL),
-      real(-0x18cc7eefd8aLL<<20),reale(3397LL,0x57665c9b80000LL),
-      reale(-15562LL,0x2b59a6fdLL<<20),reale(44311LL,0x617f59e680000LL),
-      reale(-82041LL,0x83d2aea4LL<<20),reale(95750LL,0x6b882f0180000LL),
-      reale(-56327LL,0x49f5d8cbLL<<20),reale(-14076LL,0x3175e14c80000LL),
-      reale(56094LL,0x8aaf24d2LL<<20),reale(-46281LL,0x1a6a8e2780000LL),
-      reale(17576LL,0xfb594219LL<<20),reale(-2262LL,0x39d01af280000LL),
-      real(-0xc8e19a260718000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[192]
-      real(0x19b7c4e0f7LL<<20),real(-0x2af3a20d75d80000LL),
-      reale(5489LL,0xbd385526LL<<20),reale(-23108LL,0xdabe65c980000LL),
-      reale(59020LL,0x343e88d5LL<<20),reale(-93670LL,0x3beae65080000LL),
-      reale(83160LL,0x242e42c4LL<<20),reale(-14192LL,0x406831f780000LL),
-      reale(-55803LL,0xf73b11b3LL<<20),reale(63340LL,0xe56b447e80000LL),
-      reale(-24300LL,0xdb812462LL<<20),reale(-2686LL,0xc38ce5a580000LL),
-      reale(2706LL,0x4a412191LL<<20),real(0x69f4dee012c80000LL),
-      real(-0x3e4f75bd92cb0000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[193]
-      reale(7986LL,0x4cd10c1180000LL),reale(-31050LL,0x5a7fe822LL<<20),
-      reale(71398LL,0xc143b88280000LL),reale(-96608LL,0x1b16cd97LL<<20),
-      reale(60036LL,0xdbd0ec4380000LL),reale(24533LL,0x47d2cc6cLL<<20),
-      reale(-73259LL,0x19a1ef7480000LL),reale(45499LL,0xc587f2c1LL<<20),
-      real(-0x1f535f83dca80000LL),reale(-6269LL,0x8c8d0eb6LL<<20),
-      reale(-5890LL,0x10af2ca680000LL),reale(7129LL,0x77d5fe6bLL<<20),
-      reale(-2061LL,0x3b31cee780000LL),real(0x4aa8326c4b38000LL),
+      // C4[7], coeff of eps^9, polynomial in n of order 17
+      real(-0x8d7a970000LL),real(-0x209c2bLL<<20),real(-0x8adb5490000LL),
+      real(-0x2cb1dafa0000LL),real(-0x12da13bdb0000LL),
+      real(-0xc549443040000LL),real(-0x1658a10fa0d0000LL),
+      real(0x250f39cc17720000LL),reale(-4743LL,0xffd1f9c610000LL),
+      reale(20239LL,0xc76fee6a80000LL),reale(-53603LL,0xd95b5dbaf0000LL),
+      reale(92339LL,0x3cdcf0cde0000LL),reale(-101237LL,0xf904c301d0000LL),
+      reale(59785LL,0x22c992c540000LL),real(0x5c1211516deb0000LL),
+      reale(-32945LL,0x793fa374a0000LL),reale(24775LL,0x5aee521590000LL),
+      reale(-6658LL,0x521f990157400LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
+      // C4[7], coeff of eps^8, polynomial in n of order 18
+      real(-0x3d7880000LL),real(-0xbe0fc0000LL),real(-165572LL<<20),
+      real(-0x9aa4840000LL),real(-0x2adb4f80000LL),real(-0xe6e14cc0000LL),
+      real(-0x666b5b3LL<<20),real(-0x46e9da3540000LL),
+      real(-0x89237b88680000LL),real(0xf5289483e640000LL),
+      reale(-2142LL,0x9739a99eLL<<20),reale(10163LL,0xf2a381edc0000LL),
+      reale(-30732LL,0x5cd062280000LL),reale(63101LL,0xdb7b98c940000LL),
+      reale(-89757LL,0x471a126fLL<<20),reale(87316LL,0x63109160c0000LL),
+      reale(-55354LL,0xda1bbeb80000LL),reale(20534LL,0x8754849c40000LL),
+      reale(-3369LL,0xdcc223e5d800LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
+      // C4[7], coeff of eps^7, polynomial in n of order 19
+      real(-0x12550000LL),real(-0x32460000LL),real(-0x94070000LL),
+      real(-7579LL<<20),real(-0x689d90000LL),real(-0x1a131a0000LL),
+      real(-0x790f8b0000LL),real(-0x2ae74440000LL),real(-0x1427d8dd0000LL),
+      real(-0xee3402ee0000LL),real(-0x1efc2a618f0000LL),
+      real(0x3c3fa7bdb280000LL),real(-0x243e4ae81d610000LL),
+      reale(3081LL,0xb7f72703e0000LL),reale(-10640LL,0xbbbd057ed0000LL),
+      reale(25534LL,0x3d6d8c6940000LL),reale(-43525LL,0xba33d0a9b0000LL),
+      reale(51336LL,0x52534b86a0000LL),reale(-35936LL,0x932c17ee90000LL),
+      reale(10668LL,0x544ee8e52d400LL),reale(0x104dbd1LL,0x1c132c21ebd41LL),
+      // C4[8], coeff of eps^26, polynomial in n of order 0
+      real(0xd4e0000LL),real(0x7c72a9866ac5bLL),
+      // C4[8], coeff of eps^25, polynomial in n of order 1
+      real(-177229LL<<20),real(0xb18730000LL),real(0x491cf6cbc520f1LL),
+      // C4[8], coeff of eps^24, polynomial in n of order 2
+      real(-0x93f6bc6840000LL),real(-0x14f4b1f20000LL),real(-0x88fc23ec000LL),
+      reale(40280LL,0xc561288d94a7fLL),
+      // C4[8], coeff of eps^23, polynomial in n of order 3
+      real(-0x161894ee480000LL),real(0x12aa85331LL<<20),
+      real(-0x1b65cf99180000LL),real(0x62bf29e3e8000LL),
+      reale(135489LL,0xddbb2b5096ef1LL),
+      // C4[8], coeff of eps^22, polynomial in n of order 4
+      real(-0xb7278f038LL<<20),real(0x3d693f0c92LL<<20),
+      real(-0x1f4e13827cLL<<20),real(-0x1842f819aLL<<20),
+      real(-0xacc29a2990000LL),reale(0x1ae058LL,0x42813317aa23dLL),
+      // C4[8], coeff of eps^21, polynomial in n of order 5
+      real(-0x354a11b9e2580000LL),real(0x4dd877fc48aLL<<20),
+      real(-0x8f791d3a3680000LL),real(0x11c215e6335LL<<20),
+      real(-0x161c113e61780000LL),real(0x4429220c0f48000LL),
       reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[194]
-      reale(80789LL,0x4afe5ef8LL<<20),reale(-92414LL,0x96a1aa2aLL<<20),
-      reale(33037LL,0xb34c5644LL<<20),reale(52633LL,0xcda5b00eLL<<20),
-      reale(-71258LL,0x423ab55LL<<24),reale(21774LL,0x3718ba52LL<<20),
-      reale(9867LL,0xdc15875cLL<<20),reale(2235LL,0x613d3636LL<<20),
-      reale(-11864LL,0xbcde17a8LL<<20),reale(4226LL,0xe3b4e8faLL<<20),
-      real(0x31b8c0ba174LL<<20),real(0x4eeb4b1fdeLL<<20),
-      real(-0x1429c96cdeb90000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[195]
-      reale(6774LL,0xfe31cddf80000LL),reale(68916LL,0x2d269395LL<<20),
-      reale(-58359LL,0x7051a71280000LL),reale(3030LL,0x95a6df84LL<<20),
-      reale(8321LL,0x3ad7949580000LL),reale(11199LL,0x3b4c11f3LL<<20),
-      reale(-10211LL,0xf3ffaac880000LL),real(-0x2197fd386beLL<<20),
-      real(-0x88d945e9f480000LL),reale(2764LL,0x777313d1LL<<20),
-      real(-0x51f911c354180000LL),real(0x6eb0baaefa68000LL),
+      // C4[8], coeff of eps^20, polynomial in n of order 6
+      reale(-2935LL,0xe58446bfLL<<20),real(0x351db209cd880000LL),
+      real(-0xd982d18896LL<<20),real(0x46b48a654db80000LL),
+      real(-0x1951684536bLL<<20),real(-0x2829437b4180000LL),
+      real(-0x1536c8746170000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
+      // C4[8], coeff of eps^19, polynomial in n of order 7
+      reale(-3512LL,0x918ea85280000LL),real(-0x204aea957e3LL<<20),
+      reale(-2146LL,0xdb7d866f80000LL),real(0x67ab1c5581eLL<<20),
+      real(-0x13d8d488380000LL),real(0x21f191654dfLL<<20),
+      real(-0x2114d7448e680000LL),real(0x53ff9bb26958000LL),
+      reale(0x127a3caLL,0xdb8d32044f89fLL),
+      // C4[8], coeff of eps^18, polynomial in n of order 8
+      reale(2327LL,0xd507b61LL<<24),reale(3002LL,0x513d8c0aLL<<20),
+      reale(-5099LL,0xd4e3b86cLL<<20),real(-0x25ceba7a2LL<<20),
+      real(-0x31e92424bf8LL<<20),real(0x799d0d96612LL<<20),
+      real(-0x19490c8c4dcLL<<20),real(-0x490dda8e9aLL<<20),
+      real(-0x33e11620e250000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
+      // C4[8], coeff of eps^17, polynomial in n of order 9
+      reale(-6704LL,0xd4115b5880000LL),reale(14458LL,0x65ca13f4LL<<20),
+      real(-0x3b9765d55080000LL),real(-0x9192a65f9LL<<20),
+      reale(-5283LL,0x27cb55f680000LL),real(0x6668ccb1d7aLL<<20),
+      real(0xd2bcdb640d80000LL),real(0x48aecde6f2dLL<<20),
+      real(-0x3353b5e7c2b80000LL),real(0x650db91f67c8000LL),
       reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[196]
+      // C4[8], coeff of eps^16, polynomial in n of order 10
       reale(-41675LL,0xbe119ede80000LL),reale(-7594LL,0x9ca8964e40000LL),
       real(0x45ab72cec72LL<<20),reale(15266LL,0x7545b9b5c0000LL),
       reale(-4857LL,0x86556f8580000LL),real(-0x76ec691ccd2c0000LL),
       reale(-3303LL,0x6ff9fcb9LL<<20),reale(3252LL,0xd63fbdd4c0000LL),
       real(-0xa56dc66b5380000LL),real(-0x5b75ff5133c0000LL),
       real(-0x7d0ead839928000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[197]
-      reale(-6704LL,0xd4115b5880000LL),reale(14458LL,0x65ca13f4LL<<20),
-      real(-0x3b9765d55080000LL),real(-0x9192a65f9LL<<20),
-      reale(-5283LL,0x27cb55f680000LL),real(0x6668ccb1d7aLL<<20),
-      real(0xd2bcdb640d80000LL),real(0x48aecde6f2dLL<<20),
-      real(-0x3353b5e7c2b80000LL),real(0x650db91f67c8000LL),
+      // C4[8], coeff of eps^15, polynomial in n of order 11
+      reale(6774LL,0xfe31cddf80000LL),reale(68916LL,0x2d269395LL<<20),
+      reale(-58359LL,0x7051a71280000LL),reale(3030LL,0x95a6df84LL<<20),
+      reale(8321LL,0x3ad7949580000LL),reale(11199LL,0x3b4c11f3LL<<20),
+      reale(-10211LL,0xf3ffaac880000LL),real(-0x2197fd386beLL<<20),
+      real(-0x88d945e9f480000LL),reale(2764LL,0x777313d1LL<<20),
+      real(-0x51f911c354180000LL),real(0x6eb0baaefa68000LL),
       reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[198]
-      reale(2327LL,0xd507b61LL<<24),reale(3002LL,0x513d8c0aLL<<20),
-      reale(-5099LL,0xd4e3b86cLL<<20),real(-0x25ceba7a2LL<<20),
-      real(-0x31e92424bf8LL<<20),real(0x799d0d96612LL<<20),
-      real(-0x19490c8c4dcLL<<20),real(-0x490dda8e9aLL<<20),
-      real(-0x33e11620e250000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[199]
-      reale(-3512LL,0x918ea85280000LL),real(-0x204aea957e3LL<<20),
-      reale(-2146LL,0xdb7d866f80000LL),real(0x67ab1c5581eLL<<20),
-      real(-0x13d8d488380000LL),real(0x21f191654dfLL<<20),
-      real(-0x2114d7448e680000LL),real(0x53ff9bb26958000LL),
+      // C4[8], coeff of eps^14, polynomial in n of order 12
+      reale(80789LL,0x4afe5ef8LL<<20),reale(-92414LL,0x96a1aa2aLL<<20),
+      reale(33037LL,0xb34c5644LL<<20),reale(52633LL,0xcda5b00eLL<<20),
+      reale(-71258LL,0x423ab55LL<<24),reale(21774LL,0x3718ba52LL<<20),
+      reale(9867LL,0xdc15875cLL<<20),reale(2235LL,0x613d3636LL<<20),
+      reale(-11864LL,0xbcde17a8LL<<20),reale(4226LL,0xe3b4e8faLL<<20),
+      real(0x31b8c0ba174LL<<20),real(0x4eeb4b1fdeLL<<20),
+      real(-0x1429c96cdeb90000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
+      // C4[8], coeff of eps^13, polynomial in n of order 13
+      reale(7986LL,0x4cd10c1180000LL),reale(-31050LL,0x5a7fe822LL<<20),
+      reale(71398LL,0xc143b88280000LL),reale(-96608LL,0x1b16cd97LL<<20),
+      reale(60036LL,0xdbd0ec4380000LL),reale(24533LL,0x47d2cc6cLL<<20),
+      reale(-73259LL,0x19a1ef7480000LL),reale(45499LL,0xc587f2c1LL<<20),
+      real(-0x1f535f83dca80000LL),reale(-6269LL,0x8c8d0eb6LL<<20),
+      reale(-5890LL,0x10af2ca680000LL),reale(7129LL,0x77d5fe6bLL<<20),
+      reale(-2061LL,0x3b31cee780000LL),real(0x4aa8326c4b38000LL),
       reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[200]
-      reale(-2935LL,0xe58446bfLL<<20),real(0x351db209cd880000LL),
-      real(-0xd982d18896LL<<20),real(0x46b48a654db80000LL),
-      real(-0x1951684536bLL<<20),real(-0x2829437b4180000LL),
-      real(-0x1536c8746170000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[201]
-      real(-0x354a11b9e2580000LL),real(0x4dd877fc48aLL<<20),
-      real(-0x8f791d3a3680000LL),real(0x11c215e6335LL<<20),
-      real(-0x161c113e61780000LL),real(0x4429220c0f48000LL),
+      // C4[8], coeff of eps^12, polynomial in n of order 14
+      real(0x19b7c4e0f7LL<<20),real(-0x2af3a20d75d80000LL),
+      reale(5489LL,0xbd385526LL<<20),reale(-23108LL,0xdabe65c980000LL),
+      reale(59020LL,0x343e88d5LL<<20),reale(-93670LL,0x3beae65080000LL),
+      reale(83160LL,0x242e42c4LL<<20),reale(-14192LL,0x406831f780000LL),
+      reale(-55803LL,0xf73b11b3LL<<20),reale(63340LL,0xe56b447e80000LL),
+      reale(-24300LL,0xdb812462LL<<20),reale(-2686LL,0xc38ce5a580000LL),
+      reale(2706LL,0x4a412191LL<<20),real(0x69f4dee012c80000LL),
+      real(-0x3e4f75bd92cb0000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
+      // C4[8], coeff of eps^11, polynomial in n of order 15
+      real(0xa6c2bf580000LL),real(0x73fcd1afLL<<20),real(0xe000999c080000LL),
+      real(-0x18cc7eefd8aLL<<20),reale(3397LL,0x57665c9b80000LL),
+      reale(-15562LL,0x2b59a6fdLL<<20),reale(44311LL,0x617f59e680000LL),
+      reale(-82041LL,0x83d2aea4LL<<20),reale(95750LL,0x6b882f0180000LL),
+      reale(-56327LL,0x49f5d8cbLL<<20),reale(-14076LL,0x3175e14c80000LL),
+      reale(56094LL,0x8aaf24d2LL<<20),reale(-46281LL,0x1a6a8e2780000LL),
+      reale(17576LL,0xfb594219LL<<20),reale(-2262LL,0x39d01af280000LL),
+      real(-0xc8e19a260718000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
+      // C4[8], coeff of eps^10, polynomial in n of order 16
+      real(106398LL<<24),real(0x9377d6LL<<20),real(0x44feec4LL<<20),
+      real(0x326cada2LL<<20),real(0x67002b868LL<<20),real(-0xc295517d72LL<<20),
+      real(0x7045d79918cLL<<20),reale(-9007LL,0x977a7f5aLL<<20),
+      reale(28706LL,0x584fd4fLL<<24),reale(-61777LL,0xaecc34c6LL<<20),
+      reale(90600LL,0x34124d54LL<<20),reale(-86126LL,0xe1950b92LL<<20),
+      reale(41671LL,0x69508578LL<<20),reale(9900LL,0xe7fa147eLL<<20),
+      reale(-31427LL,0x3e3e181cLL<<20),reale(21427LL,0x558fd84aLL<<20),
+      reale(-5581LL,0xf70d350210000LL),reale(0x127a3caLL,0xdb8d32044f89fLL),
+      // C4[8], coeff of eps^9, polynomial in n of order 17
+      real(0x5cef80000LL),real(99288LL<<20),real(0x75c8080000LL),
+      real(0x2bad8dLL<<20),real(0x1576c2180000LL),real(0x1092b662LL<<20),
+      real(0x2405b55f280000LL),real(-0x490d2ef189LL<<20),
+      real(0x2dc13d73c1380000LL),reale(-4044LL,0xdf9645ecLL<<20),
+      reale(14485LL,0x7f6528a480000LL),reale(-36112LL,0xadb9dce1LL<<20),
+      reale(64526LL,0x4ec29dc580000LL),reale(-82902LL,0x61fc1376LL<<20),
+      reale(74876LL,0xa109259680000LL),reale(-44998LL,0x991eb9cbLL<<20),
+      reale(16070LL,0x802be23780000LL),reale(-2567LL,0x2f156f6c78000LL),
       reale(0x127a3caLL,0xdb8d32044f89fLL),
-      // _C4x[202]
-      real(-0xb7278f038LL<<20),real(0x3d693f0c92LL<<20),
-      real(-0x1f4e13827cLL<<20),real(-0x1842f819aLL<<20),
-      real(-0xacc29a2990000LL),reale(0x1ae058LL,0x42813317aa23dLL),
-      // _C4x[203]
-      real(-0x161894ee480000LL),real(0x12aa85331LL<<20),
-      real(-0x1b65cf99180000LL),real(0x62bf29e3e8000LL),
-      reale(135489LL,0xddbb2b5096ef1LL),
-      // _C4x[204]
-      real(-0x93f6bc6840000LL),real(-0x14f4b1f20000LL),real(-0x88fc23ec000LL),
-      reale(40280LL,0xc561288d94a7fLL),
-      // _C4x[205]
-      real(-177229LL<<20),real(0xb18730000LL),real(0x491cf6cbc520f1LL),
-      // _C4x[206]
-      real(0xd4e0000LL),real(0x7c72a9866ac5bLL),
-      // _C4x[207]
-      real(-0x1e480000LL),real(-2280LL<<20),real(-0x312b80000LL),
-      real(-85595LL<<20),real(-0xbe2a280000LL),real(-0xabe12eLL<<20),
-      real(-0x1bb208a980000LL),real(0x43aa3de3fLL<<20),
-      real(-0x3404792da080000LL),real(0x168a78c6f8cLL<<20),
-      real(-0x68406e983e780000LL),reale(5560LL,0x170a6259LL<<20),
-      reale(-13901LL,0xc6660a2180000LL),reale(26517LL,0x5a318646LL<<20),
-      reale(-38451LL,0xd6d1ca1a80000LL),reale(40711LL,0xef5e1af3LL<<20),
-      reale(-26785LL,0xd50c31a380000LL),reale(7700LL,0x72bfb1ba98000LL),
+      // C4[8], coeff of eps^8, polynomial in n of order 18
+      real(0x10740000LL),real(0x38fa0000LL),real(3498LL<<20),
+      real(0x3b6460000LL),real(0x12dccc0000LL),real(0x759a120000LL),
+      real(0x3d0fff80000LL),real(0x3224b15e0000LL),real(0x74cfa8d240000LL),
+      real(-0x100412726d60000LL),real(0xaf94f028d5LL<<20),
+      real(-0x433703efa18a0000LL),reale(4345LL,0xa637f297c0000LL),
+      reale(-12474LL,0x608555e420000LL),reale(26308LL,0x13a90aa80000LL),
+      reale(-40980LL,0x3929b258e0000LL),reale(45533LL,0x15d1ab9d40000LL),
+      reale(-30802LL,0x35013915a0000LL),reale(8983LL,0xdb34fa045c000LL),
+      reale(0x127a3caLL,0xdb8d32044f89fLL),
+      // C4[9], coeff of eps^26, polynomial in n of order 0
+      real(0x1cbe0000LL),real(0xf744df0e6c69LL),
+      // C4[9], coeff of eps^25, polynomial in n of order 1
+      real(-48841LL<<20),real(-0x5237d0000LL),real(0x19892cc90d5217fLL),
+      // C4[9], coeff of eps^24, polynomial in n of order 2
+      real(0x5e11584LL<<24),real(-0x7ae8f52LL<<24),real(0x18b06bafLL<<20),
+      reale(45019LL,0xaf6c96bc5ad9dLL),
+      // C4[9], coeff of eps^23, polynomial in n of order 3
+      real(0x2afbd497b3080000LL),real(-0x115bb8ed6d9LL<<20),
+      real(-0x171a49d86a80000LL),real(-0xb7278b5afc8000LL),
       reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[208]
-      real(-1786LL<<24),real(-185250LL<<20),real(-0x18668cLL<<20),
-      real(-0x14cc9c6LL<<20),real(-0x323a0eb8LL<<20),real(0x72034e536LL<<20),
-      real(-0x50a5b1f364LL<<20),real(0x1fc80a59612LL<<20),
-      reale(-2109LL,0x8ef2603LL<<24),reale(6191LL,0x3c40258eLL<<20),
-      reale(-13345LL,0xc8b3e0c4LL<<20),reale(21384LL,0xf627f06aLL<<20),
-      reale(-25320LL,0x349d8318LL<<20),reale(21525LL,0xd9c7d366LL<<20),
-      reale(-12381LL,0xc32fbbecLL<<20),reale(4285LL,0x77832b42LL<<20),
-      real(-0x29d9aac7ec250000LL),reale(0x6e23ecLL,0x33ad12a23bbffLL),
-      // _C4x[209]
-      real(-0xfec42280000LL),real(-0xcdf9a71LL<<20),real(-0x1d4c8ca4780000LL),
-      real(0x3e336d9db6LL<<20),real(-0x28c1ec22f9c80000LL),
-      reale(3762LL,0xdc36d29dLL<<20),reale(-14050LL,0x6323bbe80000LL),
-      reale(36325LL,0x8201c224LL<<20),reale(-66630LL,0x3d526fa980000LL),
-      reale(85703LL,0xfd7eda2bLL<<20),reale(-71811LL,0x4c937c0480000LL),
-      reale(27704LL,0xd8be4892LL<<20),reale(15098LL,0xc34d8af80000LL),
-      reale(-29449LL,0xc84d0b39LL<<20),reale(18689LL,0x65a6b58a80000LL),
-      reale(-4755LL,0xcf6a7c02c8000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[210]
-      real(-0x449768678LL<<20),real(0x88f54af434LL<<20),
-      real(-0x539fb48063LL<<24),reale(7105LL,0xb995afacLL<<20),
-      reale(-24000LL,0x547ebb18LL<<20),reale(54661LL,0x26ae4964LL<<20),
-      reale(-84323LL,0xfcd087eLL<<24),reale(82245LL,0x3cac3bdcLL<<20),
-      reale(-34605LL,0xaa152aa8LL<<20),reale(-26938LL,0xf8d90194LL<<20),
-      reale(54122LL,0x9f886dfLL<<24),reale(-38796LL,0xa25c150cLL<<20),
-      reale(13349LL,0x83391c38LL<<20),real(-0x58411cd0f3cLL<<20),
-      real(-0xd052410afde0000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[211]
-      reale(-2322LL,0x2b20b06180000LL),reale(11407LL,0x435cd442LL<<20),
-      reale(-34997LL,0x40296c3280000LL),reale(70236LL,0xb47417c7LL<<20),
-      reale(-89751LL,0xaea2de1380000LL),reale(59647LL,0x7ee0032cLL<<20),
-      reale(10736LL,0xf4ed55a480000LL),reale(-61424LL,0x2a22c811LL<<20),
-      reale(52845LL,0xa6156a8580000LL),reale(-15061LL,0x5525d816LL<<20),
-      reale(-4429LL,0xec2fec5680000LL),real(0x7ac3d0f14dbLL<<20),
-      real(0x70761ded2b780000LL),real(-0x3854598234228000LL),
+      // C4[9], coeff of eps^22, polynomial in n of order 4
+      real(0x61ad926cf8LL<<20),real(-0x408c282a2LL<<20),
+      real(0x1bc97c585cLL<<20),real(-0x1dcf828996LL<<20),
+      real(0x517eabcb370000LL),reale(0x1e09ccLL,0xe17edcf27917LL),
+      // C4[9], coeff of eps^21, polynomial in n of order 5
+      real(0x14eee8a775280000LL),real(-0x13e3b5a8a36LL<<20),
+      real(0x454e86f699180000LL),real(-0x12a27ad79ebLL<<20),
+      real(-0x2a8afba4bf80000LL),real(-0x1a278f54ba58000LL),
       reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[212]
-      reale(-45940LL,0x24dbede8LL<<20),reale(81202LL,0xab78046eLL<<20),
-      reale(-84012LL,0x416f614cLL<<20),reale(28155LL,0x2c1be7aLL<<20),
-      reale(46736LL,0xfe25c5fLL<<24),reale(-68203LL,0x7452da6LL<<20),
-      reale(29667LL,0x5b15eb94LL<<20),reale(5608LL,0x4d3a29b2LL<<20),
-      reale(-4402LL,0x5668a1f8LL<<20),reale(-6764LL,0x13320a5eLL<<20),
-      reale(6284LL,0xed7a38dcLL<<20),real(-0x63dfacb5896LL<<20),
-      real(0x21519ecdd470000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[213]
-      reale(-70229LL,0xa07f0ae380000LL),reale(-3666LL,0xc491e03dLL<<20),
-      reale(67162LL,0xf21f0fbe80000LL),reale(-56078LL,0x8af680a4LL<<20),
-      reale(5918LL,0xe3bb81a980000LL),reale(10294LL,0xb5678d8bLL<<20),
-      reale(5723LL,0x46912f8480000LL),reale(-10994LL,0x9023e3d2LL<<20),
-      reale(2675LL,0xc09c102f80000LL),real(0x3a39e82b059LL<<20),
-      real(0xb502c3128a80000LL),real(-0x1358f80d9c038000LL),
+      // C4[9], coeff of eps^20, polynomial in n of order 6
+      real(-0x1e186c22038LL<<20),reale(-2450LL,0x46146d24LL<<20),
+      real(0x4d9b33e84bLL<<24),real(0x5381480dfcLL<<20),
+      real(0x24355d37098LL<<20),real(-0x1df4fe903ecLL<<20),
+      real(0x42edd4687ca0000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
+      // C4[9], coeff of eps^19, polynomial in n of order 7
+      reale(4708LL,0xb1e8552280000LL),reale(-3968LL,0xd2254fedLL<<20),
+      real(-0x2552f5e566080000LL),real(-0x46718ec5982LL<<20),
+      real(0x6fe7320794c80000LL),real(-0xee4b32a131LL<<20),
+      real(-0x3f5905d6b680000LL),real(-0x392f1a561e88000LL),
       reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[214]
-      reale(73082LL,0x4e564b9LL<<24),reale(-36373LL,0x7f41b758LL<<20),
-      reale(-8447LL,0xc935334LL<<24),reale(3801LL,0xf6d72828LL<<20),
-      reale(13381LL,0x1077fefLL<<24),reale(-7346LL,0x22839078LL<<20),
-      real(-0x6256df74a6LL<<24),real(-0x25f5d15e8b8LL<<20),
-      reale(2675LL,0x8c635e5LL<<24),real(-0x44947d61c68LL<<20),
-      real(0x4cdddf4aa2c0000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[215]
+      // C4[9], coeff of eps^18, polynomial in n of order 8
+      reale(10651LL,0x8768b13LL<<24),reale(2483LL,0x450654eeLL<<20),
+      real(0x5c595ba5184LL<<20),reale(-5107LL,0x5014808aLL<<20),
+      real(0x316556e0b98LL<<20),real(0xa4c5f0e846LL<<20),
+      real(0x4adc873ac2cLL<<20),real(-0x2d0002ebf1eLL<<20),
+      real(0x4cd03e8801b0000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
+      // C4[9], coeff of eps^17, polynomial in n of order 9
       reale(-12599LL,0xef10737480000LL),reale(-5706LL,0x74b78194LL<<20),
       reale(14434LL,0xee01835380000LL),real(-0x53c43a7b401LL<<20),
       real(-0x61ad28bb29d80000LL),reale(-3832LL,0x8df1c64aLL<<20),
       reale(2686LL,0x31eaa90180000LL),real(0x3be070e5d5LL<<20),
       real(-0x33650f7a6f80000LL),real(-0x7fc3df35f858000LL),
       reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[216]
-      reale(10651LL,0x8768b13LL<<24),reale(2483LL,0x450654eeLL<<20),
-      real(0x5c595ba5184LL<<20),reale(-5107LL,0x5014808aLL<<20),
-      real(0x316556e0b98LL<<20),real(0xa4c5f0e846LL<<20),
-      real(0x4adc873ac2cLL<<20),real(-0x2d0002ebf1eLL<<20),
-      real(0x4cd03e8801b0000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[217]
-      reale(4708LL,0xb1e8552280000LL),reale(-3968LL,0xd2254fedLL<<20),
-      real(-0x2552f5e566080000LL),real(-0x46718ec5982LL<<20),
-      real(0x6fe7320794c80000LL),real(-0xee4b32a131LL<<20),
-      real(-0x3f5905d6b680000LL),real(-0x392f1a561e88000LL),
+      // C4[9], coeff of eps^16, polynomial in n of order 10
+      reale(73082LL,0x4e564b9LL<<24),reale(-36373LL,0x7f41b758LL<<20),
+      reale(-8447LL,0xc935334LL<<24),reale(3801LL,0xf6d72828LL<<20),
+      reale(13381LL,0x1077fefLL<<24),reale(-7346LL,0x22839078LL<<20),
+      real(-0x6256df74a6LL<<24),real(-0x25f5d15e8b8LL<<20),
+      reale(2675LL,0x8c635e5LL<<24),real(-0x44947d61c68LL<<20),
+      real(0x4cdddf4aa2c0000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
+      // C4[9], coeff of eps^15, polynomial in n of order 11
+      reale(-70229LL,0xa07f0ae380000LL),reale(-3666LL,0xc491e03dLL<<20),
+      reale(67162LL,0xf21f0fbe80000LL),reale(-56078LL,0x8af680a4LL<<20),
+      reale(5918LL,0xe3bb81a980000LL),reale(10294LL,0xb5678d8bLL<<20),
+      reale(5723LL,0x46912f8480000LL),reale(-10994LL,0x9023e3d2LL<<20),
+      reale(2675LL,0xc09c102f80000LL),real(0x3a39e82b059LL<<20),
+      real(0xb502c3128a80000LL),real(-0x1358f80d9c038000LL),
       reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[218]
-      real(-0x1e186c22038LL<<20),reale(-2450LL,0x46146d24LL<<20),
-      real(0x4d9b33e84bLL<<24),real(0x5381480dfcLL<<20),
-      real(0x24355d37098LL<<20),real(-0x1df4fe903ecLL<<20),
-      real(0x42edd4687ca0000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[219]
-      real(0x14eee8a775280000LL),real(-0x13e3b5a8a36LL<<20),
-      real(0x454e86f699180000LL),real(-0x12a27ad79ebLL<<20),
-      real(-0x2a8afba4bf80000LL),real(-0x1a278f54ba58000LL),
+      // C4[9], coeff of eps^14, polynomial in n of order 12
+      reale(-45940LL,0x24dbede8LL<<20),reale(81202LL,0xab78046eLL<<20),
+      reale(-84012LL,0x416f614cLL<<20),reale(28155LL,0x2c1be7aLL<<20),
+      reale(46736LL,0xfe25c5fLL<<24),reale(-68203LL,0x7452da6LL<<20),
+      reale(29667LL,0x5b15eb94LL<<20),reale(5608LL,0x4d3a29b2LL<<20),
+      reale(-4402LL,0x5668a1f8LL<<20),reale(-6764LL,0x13320a5eLL<<20),
+      reale(6284LL,0xed7a38dcLL<<20),real(-0x63dfacb5896LL<<20),
+      real(0x21519ecdd470000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
+      // C4[9], coeff of eps^13, polynomial in n of order 13
+      reale(-2322LL,0x2b20b06180000LL),reale(11407LL,0x435cd442LL<<20),
+      reale(-34997LL,0x40296c3280000LL),reale(70236LL,0xb47417c7LL<<20),
+      reale(-89751LL,0xaea2de1380000LL),reale(59647LL,0x7ee0032cLL<<20),
+      reale(10736LL,0xf4ed55a480000LL),reale(-61424LL,0x2a22c811LL<<20),
+      reale(52845LL,0xa6156a8580000LL),reale(-15061LL,0x5525d816LL<<20),
+      reale(-4429LL,0xec2fec5680000LL),real(0x7ac3d0f14dbLL<<20),
+      real(0x70761ded2b780000LL),real(-0x3854598234228000LL),
       reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[220]
-      real(0x61ad926cf8LL<<20),real(-0x408c282a2LL<<20),
-      real(0x1bc97c585cLL<<20),real(-0x1dcf828996LL<<20),
-      real(0x517eabcb370000LL),reale(0x1e09ccLL,0xe17edcf27917LL),
-      // _C4x[221]
-      real(0x2afbd497b3080000LL),real(-0x115bb8ed6d9LL<<20),
-      real(-0x171a49d86a80000LL),real(-0xb7278b5afc8000LL),
+      // C4[9], coeff of eps^12, polynomial in n of order 14
+      real(-0x449768678LL<<20),real(0x88f54af434LL<<20),
+      real(-0x539fb48063LL<<24),reale(7105LL,0xb995afacLL<<20),
+      reale(-24000LL,0x547ebb18LL<<20),reale(54661LL,0x26ae4964LL<<20),
+      reale(-84323LL,0xfcd087eLL<<24),reale(82245LL,0x3cac3bdcLL<<20),
+      reale(-34605LL,0xaa152aa8LL<<20),reale(-26938LL,0xf8d90194LL<<20),
+      reale(54122LL,0x9f886dfLL<<24),reale(-38796LL,0xa25c150cLL<<20),
+      reale(13349LL,0x83391c38LL<<20),real(-0x58411cd0f3cLL<<20),
+      real(-0xd052410afde0000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
+      // C4[9], coeff of eps^11, polynomial in n of order 15
+      real(-0xfec42280000LL),real(-0xcdf9a71LL<<20),real(-0x1d4c8ca4780000LL),
+      real(0x3e336d9db6LL<<20),real(-0x28c1ec22f9c80000LL),
+      reale(3762LL,0xdc36d29dLL<<20),reale(-14050LL,0x6323bbe80000LL),
+      reale(36325LL,0x8201c224LL<<20),reale(-66630LL,0x3d526fa980000LL),
+      reale(85703LL,0xfd7eda2bLL<<20),reale(-71811LL,0x4c937c0480000LL),
+      reale(27704LL,0xd8be4892LL<<20),reale(15098LL,0xc34d8af80000LL),
+      reale(-29449LL,0xc84d0b39LL<<20),reale(18689LL,0x65a6b58a80000LL),
+      reale(-4755LL,0xcf6a7c02c8000LL),reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
+      // C4[9], coeff of eps^10, polynomial in n of order 16
+      real(-1786LL<<24),real(-185250LL<<20),real(-0x18668cLL<<20),
+      real(-0x14cc9c6LL<<20),real(-0x323a0eb8LL<<20),real(0x72034e536LL<<20),
+      real(-0x50a5b1f364LL<<20),real(0x1fc80a59612LL<<20),
+      reale(-2109LL,0x8ef2603LL<<24),reale(6191LL,0x3c40258eLL<<20),
+      reale(-13345LL,0xc8b3e0c4LL<<20),reale(21384LL,0xf627f06aLL<<20),
+      reale(-25320LL,0x349d8318LL<<20),reale(21525LL,0xd9c7d366LL<<20),
+      reale(-12381LL,0xc32fbbecLL<<20),reale(4285LL,0x77832b42LL<<20),
+      real(-0x29d9aac7ec250000LL),reale(0x6e23ecLL,0x33ad12a23bbffLL),
+      // C4[9], coeff of eps^9, polynomial in n of order 17
+      real(-0x1e480000LL),real(-2280LL<<20),real(-0x312b80000LL),
+      real(-85595LL<<20),real(-0xbe2a280000LL),real(-0xabe12eLL<<20),
+      real(-0x1bb208a980000LL),real(0x43aa3de3fLL<<20),
+      real(-0x3404792da080000LL),real(0x168a78c6f8cLL<<20),
+      real(-0x68406e983e780000LL),reale(5560LL,0x170a6259LL<<20),
+      reale(-13901LL,0xc6660a2180000LL),reale(26517LL,0x5a318646LL<<20),
+      reale(-38451LL,0xd6d1ca1a80000LL),reale(40711LL,0xef5e1af3LL<<20),
+      reale(-26785LL,0xd50c31a380000LL),reale(7700LL,0x72bfb1ba98000LL),
       reale(0x14a6bc4LL,0x9b0737e6b33fdLL),
-      // _C4x[222]
-      real(0x5e11584LL<<24),real(-0x7ae8f52LL<<24),real(0x18b06bafLL<<20),
-      reale(45019LL,0xaf6c96bc5ad9dLL),
-      // _C4x[223]
-      real(-48841LL<<20),real(-0x5237d0000LL),real(0x19892cc90d5217fLL),
-      // _C4x[224]
-      real(0x1cbe0000LL),real(0xf744df0e6c69LL),
-      // _C4x[225]
-      real(133LL<<24),real(15675LL<<20),real(155078LL<<20),
-      real(0x255a91LL<<20),real(0x6998a3cLL<<20),real(-0x11c570399LL<<20),
-      real(0xf255cbcb2LL<<20),real(-0x753ac8aa43LL<<20),
-      real(0x262569ee428LL<<20),reale(-2315LL,0xcce58993LL<<20),
-      reale(6672LL,0x1ba60f9eLL<<20),reale(-14970LL,0x86e40ae9LL<<20),
-      reale(26346LL,0x45cace14LL<<20),reale(-36033LL,0x9904fcbfLL<<20),
-      reale(36664LL,0x8cb78e8aLL<<20),reale(-23571LL,0xeeae9215LL<<20),
-      reale(6696LL,0xabcf39720000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[226]
-      real(0xfd374LL<<20),real(0xec45e8LL<<20),real(0x273df7dcLL<<20),
-      real(-0x62a0474fLL<<24),real(0x4dcbe47944LL<<20),
-      real(-0x227b761e3c8LL<<20),reale(2600LL,0x153d35acLL<<20),
-      reale(-8793LL,0x286c976LL<<24),reale(22203LL,0x5eab8b14LL<<20),
-      reale(-42669LL,0xccca9a88LL<<20),reale(62615LL,0x2adb577cLL<<20),
-      reale(-69318LL,0x88b7c3bLL<<24),reale(56036LL,0xcf17f8e4LL<<20),
-      reale(-31066LL,0x7860b0d8LL<<20),reale(10475LL,0x95eb4d4cLL<<20),
-      real(-0x6470cd13038c0000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[227]
-      real(0x83f3fa8cLL<<20),real(-0x1374d9c49eLL<<20),
-      real(0xe49b68b678LL<<20),real(-0x5d5e50a4b72LL<<20),
-      reale(6402LL,0x71afd664LL<<20),reale(-19348LL,0xea14f2baLL<<20),
-      reale(42585LL,0xebe6545LL<<24),reale(-68667LL,0x703137e6LL<<20),
-      reale(79038LL,0xd1606a3cLL<<20),reale(-58931LL,0x700ae612LL<<20),
-      reale(17031LL,0xb2cb5228LL<<20),reale(18189LL,0x913f3eLL<<20),
-      reale(-27349LL,0x9d0f0614LL<<20),reale(16435LL,0xd526256aLL<<20),
-      reale(-4107LL,0x18224be0c0000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[228]
-      real(0x1f9ffe8656cLL<<20),reale(-3063LL,0x94b5dedLL<<24),
-      reale(11988LL,0xe264f34LL<<20),reale(-32440LL,0xf0983358LL<<20),
-      reale(61980LL,0xc3d38ffcLL<<20),reale(-81949LL,0x673ab9eLL<<24),
-      reale(67313LL,0xfb9bddc4LL<<20),reale(-16749LL,0xcbdb6868LL<<20),
-      reale(-34833LL,0xd656e8cLL<<20),reale(50577LL,0xf8434fLL<<24),
-      reale(-32451LL,0xf163f854LL<<20),reale(10213LL,0xef301578LL<<20),
-      real(-0x352a1ac4ee4LL<<20),real(-0xcb30b375e9c0000LL),
+      // C4[10], coeff of eps^26, polynomial in n of order 0
+      real(-0x4f040000LL),real(0x10edb70f760db7LL),
+      // C4[10], coeff of eps^25, polynomial in n of order 1
+      real(-9802LL<<24),real(28314LL<<20),real(0x4082f7e0f93b2fLL),
+      // C4[10], coeff of eps^24, polynomial in n of order 2
+      real(-0x1092926LL<<24),real(-0x1f7f63LL<<24),real(-0x11a4d3aLL<<20),
+      reale(7108LL,0x5f112546294adLL),
+      // C4[10], coeff of eps^23, polynomial in n of order 3
+      real(0x2b4d78f6LL<<24),real(0x2e8b64984LL<<24),real(-0x2b39cf62eLL<<24),
+      real(0x699f0055eLL<<20),reale(0x342bf6LL,0x9f3708d39590dLL),
+      // C4[10], coeff of eps^22, polynomial in n of order 4
+      real(-0x1c8e0b16cfcLL<<20),real(0x422ec2346b3LL<<20),
+      real(-0xcfd2a114feLL<<20),real(-0x28865c39efLL<<20),
+      real(-0x1da3031e4b60000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
+      // C4[10], coeff of eps^21, polynomial in n of order 5
+      reale(-2586LL,0xd6a2e6ecLL<<20),real(0x34bcb74007LL<<24),
+      real(0x6e07e246f4LL<<20),real(0x25e0133cb38LL<<20),
+      real(-0x1b065081a04LL<<20),real(0x357f8d3e3c40000LL),
       reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[229]
-      reale(18981LL,0x5e862c64LL<<20),reale(-46079LL,0x5efb0881LL<<20),
-      reale(76015LL,0x863d577eLL<<20),reale(-79653LL,0x2dea23bbLL<<20),
-      reale(36586LL,0x8284d598LL<<20),reale(28474LL,0x3c216875LL<<20),
-      reale(-61327LL,0xb287efb2LL<<20),reale(42595LL,0xdff09bafLL<<20),
-      reale(-8327LL,0x1c2b6eccLL<<20),reale(-5140LL,0x12845269LL<<20),
-      real(0x508a8bb3be6LL<<20),real(0x72b007891a3LL<<20),
-      real(-0x33009c87a9620000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[230]
-      reale(82722LL,0xe9e9d128LL<<20),reale(-64702LL,0xc3657b3LL<<24),
-      real(0xd88117da38LL<<20),reale(58506LL,0xbc1f3dcLL<<24),
-      reale(-58414LL,0x316e6548LL<<20),reale(16792LL,0x62b2905LL<<24),
-      reale(8555LL,0x57b78e58LL<<20),reale(-2318LL,0x5fa80eeLL<<24),
-      reale(-7195LL,0xfa5c7168LL<<20),reale(5493LL,0x7232557LL<<24),
-      real(-0x4dba35cd588LL<<20),real(0x6c0ce28f480000LL),
+      // C4[10], coeff of eps^20, polynomial in n of order 6
+      reale(-2657LL,0xdeecdcecLL<<20),real(-0x3538c298b86LL<<20),
+      real(-0x5912f177eb8LL<<20),real(0x640b15f2316LL<<20),
+      real(-0x6d9a831e5cLL<<20),real(-0x31ad449d4eLL<<20),
+      real(-0x3c512000d040000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
+      // C4[10], coeff of eps^19, polynomial in n of order 7
+      reale(3432LL,0x4e74f9d4LL<<20),reale(2930LL,0x87085408LL<<20),
+      reale(-4578LL,0x70547bcLL<<20),real(0x81973624bLL<<24),
+      real(0x32ee2212a4LL<<20),real(0x4b5e677d958LL<<20),
+      real(-0x275d5b5d774LL<<20),real(0x3a718439ef40000LL),
       reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[231]
-      reale(-4542LL,0x7bb81428LL<<20),reale(9880LL,0x570203e4LL<<20),
-      reale(-5570LL,0x1d13282LL<<24),real(-0x2717ac11fa4LL<<20),
-      real(0x48f10632c18LL<<20),real(0x49be65276d4LL<<20),
-      real(-0x56ac461dbfLL<<24),real(0xd204c29b4cLL<<20),
-      real(0x8778499408LL<<20),real(0x254e1d61c4LL<<20),
-      real(-0x2a036589e880000LL),reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[232]
+      // C4[10], coeff of eps^18, polynomial in n of order 8
+      reale(-11085LL,0x8fea54b8LL<<20),reale(11858LL,0x4428ce71LL<<20),
+      real(0x4a8bfaee90aLL<<20),real(-0x307c82cee9dLL<<20),
+      reale(-4104LL,0xd1c95e5cLL<<20),reale(2140LL,0x80faa1d5LL<<20),
+      real(0xcfb44449aeLL<<20),real(-0xca4a87f39LL<<20),
+      real(-0x7f8004b3e7a0000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
+      // C4[10], coeff of eps^17, polynomial in n of order 9
       reale(-16526LL,0x6c5d10b8LL<<20),reale(-12874LL,0x88ee71cLL<<24),
       real(-0x5e7810d2938LL<<20),reale(13789LL,0x243b975LL<<24),
       reale(-4638LL,0x964d9ad8LL<<20),real(-0x7fb9ba5572LL<<24),
       real(-0x4173ffec718LL<<20),reale(2541LL,0x1cb9027LL<<24),
       real(-0x39666317308LL<<20),real(0x349e63a5ac80000LL),
       reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[233]
-      reale(-11085LL,0x8fea54b8LL<<20),reale(11858LL,0x4428ce71LL<<20),
-      real(0x4a8bfaee90aLL<<20),real(-0x307c82cee9dLL<<20),
-      reale(-4104LL,0xd1c95e5cLL<<20),reale(2140LL,0x80faa1d5LL<<20),
-      real(0xcfb44449aeLL<<20),real(-0xca4a87f39LL<<20),
-      real(-0x7f8004b3e7a0000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[234]
-      reale(3432LL,0x4e74f9d4LL<<20),reale(2930LL,0x87085408LL<<20),
-      reale(-4578LL,0x70547bcLL<<20),real(0x81973624bLL<<24),
-      real(0x32ee2212a4LL<<20),real(0x4b5e677d958LL<<20),
-      real(-0x275d5b5d774LL<<20),real(0x3a718439ef40000LL),
+      // C4[10], coeff of eps^16, polynomial in n of order 10
+      reale(-4542LL,0x7bb81428LL<<20),reale(9880LL,0x570203e4LL<<20),
+      reale(-5570LL,0x1d13282LL<<24),real(-0x2717ac11fa4LL<<20),
+      real(0x48f10632c18LL<<20),real(0x49be65276d4LL<<20),
+      real(-0x56ac461dbfLL<<24),real(0xd204c29b4cLL<<20),
+      real(0x8778499408LL<<20),real(0x254e1d61c4LL<<20),
+      real(-0x2a036589e880000LL),reale(0x342bf6LL,0x9f3708d39590dLL),
+      // C4[10], coeff of eps^15, polynomial in n of order 11
+      reale(82722LL,0xe9e9d128LL<<20),reale(-64702LL,0xc3657b3LL<<24),
+      real(0xd88117da38LL<<20),reale(58506LL,0xbc1f3dcLL<<24),
+      reale(-58414LL,0x316e6548LL<<20),reale(16792LL,0x62b2905LL<<24),
+      reale(8555LL,0x57b78e58LL<<20),reale(-2318LL,0x5fa80eeLL<<24),
+      reale(-7195LL,0xfa5c7168LL<<20),reale(5493LL,0x7232557LL<<24),
+      real(-0x4dba35cd588LL<<20),real(0x6c0ce28f480000LL),
       reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[235]
-      reale(-2657LL,0xdeecdcecLL<<20),real(-0x3538c298b86LL<<20),
-      real(-0x5912f177eb8LL<<20),real(0x640b15f2316LL<<20),
-      real(-0x6d9a831e5cLL<<20),real(-0x31ad449d4eLL<<20),
-      real(-0x3c512000d040000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[236]
-      reale(-2586LL,0xd6a2e6ecLL<<20),real(0x34bcb74007LL<<24),
-      real(0x6e07e246f4LL<<20),real(0x25e0133cb38LL<<20),
-      real(-0x1b065081a04LL<<20),real(0x357f8d3e3c40000LL),
+      // C4[10], coeff of eps^14, polynomial in n of order 12
+      reale(18981LL,0x5e862c64LL<<20),reale(-46079LL,0x5efb0881LL<<20),
+      reale(76015LL,0x863d577eLL<<20),reale(-79653LL,0x2dea23bbLL<<20),
+      reale(36586LL,0x8284d598LL<<20),reale(28474LL,0x3c216875LL<<20),
+      reale(-61327LL,0xb287efb2LL<<20),reale(42595LL,0xdff09bafLL<<20),
+      reale(-8327LL,0x1c2b6eccLL<<20),reale(-5140LL,0x12845269LL<<20),
+      real(0x508a8bb3be6LL<<20),real(0x72b007891a3LL<<20),
+      real(-0x33009c87a9620000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
+      // C4[10], coeff of eps^13, polynomial in n of order 13
+      real(0x1f9ffe8656cLL<<20),reale(-3063LL,0x94b5dedLL<<24),
+      reale(11988LL,0xe264f34LL<<20),reale(-32440LL,0xf0983358LL<<20),
+      reale(61980LL,0xc3d38ffcLL<<20),reale(-81949LL,0x673ab9eLL<<24),
+      reale(67313LL,0xfb9bddc4LL<<20),reale(-16749LL,0xcbdb6868LL<<20),
+      reale(-34833LL,0xd656e8cLL<<20),reale(50577LL,0xf8434fLL<<24),
+      reale(-32451LL,0xf163f854LL<<20),reale(10213LL,0xef301578LL<<20),
+      real(-0x352a1ac4ee4LL<<20),real(-0xcb30b375e9c0000LL),
       reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[237]
-      real(-0x1c8e0b16cfcLL<<20),real(0x422ec2346b3LL<<20),
-      real(-0xcfd2a114feLL<<20),real(-0x28865c39efLL<<20),
-      real(-0x1da3031e4b60000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
-      // _C4x[238]
-      real(0x2b4d78f6LL<<24),real(0x2e8b64984LL<<24),real(-0x2b39cf62eLL<<24),
-      real(0x699f0055eLL<<20),reale(0x342bf6LL,0x9f3708d39590dLL),
-      // _C4x[239]
-      real(-0x1092926LL<<24),real(-0x1f7f63LL<<24),real(-0x11a4d3aLL<<20),
-      reale(7108LL,0x5f112546294adLL),
-      // _C4x[240]
-      real(-9802LL<<24),real(28314LL<<20),real(0x4082f7e0f93b2fLL),
-      // _C4x[241]
-      real(-0x4f040000LL),real(0x10edb70f760db7LL),
-      // _C4x[242]
-      real(-31464LL<<20),real(-33649LL<<24),real(-0x1944cb8LL<<20),
-      real(0x4a592f6LL<<24),real(-0x459291388LL<<20),real(0x25287649dLL<<24),
-      real(-0xd6fc633d58LL<<20),real(0x39106c83a4LL<<24),
-      reale(-2978LL,0x49e187d8LL<<20),reale(7656LL,0xf8e0a2bLL<<24),
-      reale(-15740LL,0xab15ce08LL<<20),reale(25923LL,0x9aeb252LL<<24),
-      reale(-33769LL,0x17e1e738LL<<20),reale(33232LL,0xe46ee39LL<<24),
-      reale(-20952LL,0xd4296568LL<<20),reale(5892LL,0x84545b7ac0000LL),
+      // C4[10], coeff of eps^12, polynomial in n of order 14
+      real(0x83f3fa8cLL<<20),real(-0x1374d9c49eLL<<20),
+      real(0xe49b68b678LL<<20),real(-0x5d5e50a4b72LL<<20),
+      reale(6402LL,0x71afd664LL<<20),reale(-19348LL,0xea14f2baLL<<20),
+      reale(42585LL,0xebe6545LL<<24),reale(-68667LL,0x703137e6LL<<20),
+      reale(79038LL,0xd1606a3cLL<<20),reale(-58931LL,0x700ae612LL<<20),
+      reale(17031LL,0xb2cb5228LL<<20),reale(18189LL,0x913f3eLL<<20),
+      reale(-27349LL,0x9d0f0614LL<<20),reale(16435LL,0xd526256aLL<<20),
+      reale(-4107LL,0x18224be0c0000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
+      // C4[10], coeff of eps^11, polynomial in n of order 15
+      real(0xfd374LL<<20),real(0xec45e8LL<<20),real(0x273df7dcLL<<20),
+      real(-0x62a0474fLL<<24),real(0x4dcbe47944LL<<20),
+      real(-0x227b761e3c8LL<<20),reale(2600LL,0x153d35acLL<<20),
+      reale(-8793LL,0x286c976LL<<24),reale(22203LL,0x5eab8b14LL<<20),
+      reale(-42669LL,0xccca9a88LL<<20),reale(62615LL,0x2adb577cLL<<20),
+      reale(-69318LL,0x88b7c3bLL<<24),reale(56036LL,0xcf17f8e4LL<<20),
+      reale(-31066LL,0x7860b0d8LL<<20),reale(10475LL,0x95eb4d4cLL<<20),
+      real(-0x6470cd13038c0000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
+      // C4[10], coeff of eps^10, polynomial in n of order 16
+      real(133LL<<24),real(15675LL<<20),real(155078LL<<20),
+      real(0x255a91LL<<20),real(0x6998a3cLL<<20),real(-0x11c570399LL<<20),
+      real(0xf255cbcb2LL<<20),real(-0x753ac8aa43LL<<20),
+      real(0x262569ee428LL<<20),reale(-2315LL,0xcce58993LL<<20),
+      reale(6672LL,0x1ba60f9eLL<<20),reale(-14970LL,0x86e40ae9LL<<20),
+      reale(26346LL,0x45cace14LL<<20),reale(-36033LL,0x9904fcbfLL<<20),
+      reale(36664LL,0x8cb78e8aLL<<20),reale(-23571LL,0xeeae9215LL<<20),
+      reale(6696LL,0xabcf39720000LL),reale(0x16d33beLL,0x5a813dc916f5bLL),
+      // C4[11], coeff of eps^26, polynomial in n of order 0
+      real(4888LL<<20),real(0xe6baee73ea363LL),
+      // C4[11], coeff of eps^25, polynomial in n of order 1
+      real(-306388LL<<24),real(-0x30085eLL<<20),real(0x477bca00497fe9bfLL),
+      // C4[11], coeff of eps^24, polynomial in n of order 2
+      real(0xb66a2aLL<<28),real(-0x94166dLL<<28),real(0x1456e5bcLL<<20),
+      reale(54497LL,0x83837319e73d9LL),
+      // C4[11], coeff of eps^23, polynomial in n of order 3
+      real(0x3dc8d3e3fcLL<<24),real(-0x852738cf8LL<<24),
+      real(-0x23d2c912cLL<<24),real(-0x200440db02LL<<20),
       reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[243]
-      real(-0xa2feacLL<<24),real(0x1c179372LL<<24),real(-0x1874d0578LL<<24),
-      real(0xc0be8a7beLL<<24),real(-0x3f9d6493c4LL<<24),
-      reale(3896LL,0x4997f2aLL<<24),reale(-11281LL,0x64c37bLL<<28),
-      reale(25274LL,0x3bbdef6LL<<24),reale(-44241LL,0xb75fe24LL<<24),
-      reale(60354LL,0xf508c62LL<<24),reale(-63153LL,0xc2460d8LL<<24),
-      reale(48923LL,0x7ed4caeLL<<24),reale(-26289LL,0xfd6410cLL<<24),
-      reale(8669LL,0x733e51aLL<<24),real(-0x51d72bd69a980000LL),
+      // C4[11], coeff of eps^22, polynomial in n of order 4
+      real(0x1eafb2d2LL<<32),real(0x6001f8fcLL<<28),real(0x26e8d367LL<<32),
+      real(-0x1850eab0cLL<<28),real(0x2ad9fbf9a8LL<<20),
       reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[244]
-      real(-0x4dd7751f98LL<<20),real(0x238aa1d5ceLL<<24),
-      reale(-2754LL,0xce58be58LL<<20),reale(9526LL,0xd688791LL<<24),
-      reale(-24464LL,0xdf73ed48LL<<20),reale(47309LL,0x7148c34LL<<24),
-      reale(-68505LL,0xbf6a8738LL<<20),reale(71563LL,0xf1b5657LL<<24),
-      reale(-47679LL,0xf11e628LL<<20),reale(8918LL,0xa5b789aLL<<24),
-      reale(19900LL,0x542c2418LL<<20),reale(-25293LL,0xbf6dd9dLL<<24),
-      reale(14565LL,0x9bc59b08LL<<20),reale(-3590LL,0x4e483233c0000LL),
+      // C4[11], coeff of eps^21, polynomial in n of order 5
+      real(-0x34c400805d8LL<<20),real(-0x67cc1b5366LL<<24),
+      real(0x57398ecb018LL<<20),real(-0xc95bb863LL<<24),
+      real(-0x22721e20f8LL<<20),real(-0x3de76ba4f240000LL),
       reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[245]
-      reale(-5608LL,0x991738LL<<28),reale(17587LL,0xf22611LL<<28),
-      reale(-40025LL,0xa10c4cLL<<28),reale(66142LL,0x876083LL<<28),
-      reale(-76303LL,954917LL<<32),reale(52531LL,0x8deb4dLL<<28),
-      reale(-2629LL,0x8e7914LL<<28),reale(-39201LL,0x38bf3fLL<<28),
-      reale(46365LL,0x54b068LL<<28),reale(-27150LL,0x55ed29LL<<28),
-      reale(7864LL,0x5e881cLL<<28),real(-0x1da92f225LL<<28),
-      real(-0xc0441aac22LL<<20),reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[246]
-      reale(-54976LL,0xf8ad2dfLL<<24),reale(76586LL,0x4c1b29aLL<<24),
-      reale(-65944LL,0xd8907c5LL<<24),reale(16034LL,0xc1436c8LL<<24),
-      reale(40019LL,0x76688bLL<<24),reale(-57817LL,0x54999f6LL<<24),
-      reale(33374LL,0xea6cb71LL<<24),reale(-3539LL,0xfaa2c64LL<<24),
-      reale(-5248LL,0x50c1eb7LL<<24),real(0x2c6b73ee52LL<<24),
-      real(0x722433189dLL<<24),real(-0x2e4dc1cba3080000LL),
+      // C4[11], coeff of eps^20, polynomial in n of order 6
+      reale(4082LL,0x67f98f4LL<<24),reale(-3844LL,0x2c9ab0aLL<<24),
+      real(-0x159f6b3e48LL<<24),real(-0x5e777d4baLL<<24),
+      real(0x4a85b6d5fcLL<<24),real(-0x22657e61deLL<<24),
+      real(0x2c64fe303880000LL),reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
+      // C4[11], coeff of eps^19, polynomial in n of order 7
+      reale(8515LL,0x37f5b918LL<<20),reale(2727LL,0x3380253LL<<24),
+      real(0xb19d71edc8LL<<20),reale(-4155LL,0x995a0c2LL<<24),
+      real(0x66bdc071d78LL<<20),real(0x12a53914f1LL<<24),
+      real(0x167e4eca28LL<<20),real(-0x7d57ec14bd40000LL),
       reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[247]
-      reale(-42752LL,0xfd09668LL<<24),reale(-21693LL,0x75aae5cLL<<24),
-      reale(62310LL,0xfec662LL<<28),reale(-46930LL,0xc9a1864LL<<24),
-      reale(7047LL,0xf651fd8LL<<24),reale(9444LL,0xbbaab2cLL<<24),
-      real(-0x1703b736fLL<<28),reale(-7301LL,0x7c7a434LL<<24),
-      reale(4777LL,0xce4e748LL<<24),real(-0x3caad8bf04LL<<24),
-      real(-0xa540e2085LL<<20),reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[248]
+      // C4[11], coeff of eps^18, polynomial in n of order 8
+      reale(-12506LL,97541LL<<32),reale(-6195LL,0x2e1145LL<<28),
+      reale(12920LL,0x2b7254LL<<28),reale(-2329LL,577767LL<<28),
+      reale(-2122LL,0x282168LL<<28),real(-0x58b5939bfLL<<28),
+      reale(2380LL,0xeae3dcLL<<28),real(-0x30188e75dLL<<28),
+      real(0x230ec3334eLL<<20),reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
+      // C4[11], coeff of eps^17, polynomial in n of order 9
       reale(63004LL,0x820dc15LL<<24),reale(-23254LL,0x2b51348LL<<24),
       reale(-10034LL,0x6d8993bLL<<24),reale(4968LL,0xd50d56LL<<24),
       reale(9826LL,0xfc2da81LL<<24),reale(-8261LL,0x55baaa4LL<<24),
       real(0x233dd63227LL<<24),real(0x37fd376f72LL<<24),
       real(0x141eaf7a6dLL<<24),real(-0x115cb8e6aa880000LL),
       reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[249]
-      reale(-12506LL,97541LL<<32),reale(-6195LL,0x2e1145LL<<28),
-      reale(12920LL,0x2b7254LL<<28),reale(-2329LL,577767LL<<28),
-      reale(-2122LL,0x282168LL<<28),real(-0x58b5939bfLL<<28),
-      reale(2380LL,0xeae3dcLL<<28),real(-0x30188e75dLL<<28),
-      real(0x230ec3334eLL<<20),reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[250]
-      reale(8515LL,0x37f5b918LL<<20),reale(2727LL,0x3380253LL<<24),
-      real(0xb19d71edc8LL<<20),reale(-4155LL,0x995a0c2LL<<24),
-      real(0x66bdc071d78LL<<20),real(0x12a53914f1LL<<24),
-      real(0x167e4eca28LL<<20),real(-0x7d57ec14bd40000LL),
+      // C4[11], coeff of eps^16, polynomial in n of order 10
+      reale(-42752LL,0xfd09668LL<<24),reale(-21693LL,0x75aae5cLL<<24),
+      reale(62310LL,0xfec662LL<<28),reale(-46930LL,0xc9a1864LL<<24),
+      reale(7047LL,0xf651fd8LL<<24),reale(9444LL,0xbbaab2cLL<<24),
+      real(-0x1703b736fLL<<28),reale(-7301LL,0x7c7a434LL<<24),
+      reale(4777LL,0xce4e748LL<<24),real(-0x3caad8bf04LL<<24),
+      real(-0xa540e2085LL<<20),reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
+      // C4[11], coeff of eps^15, polynomial in n of order 11
+      reale(-54976LL,0xf8ad2dfLL<<24),reale(76586LL,0x4c1b29aLL<<24),
+      reale(-65944LL,0xd8907c5LL<<24),reale(16034LL,0xc1436c8LL<<24),
+      reale(40019LL,0x76688bLL<<24),reale(-57817LL,0x54999f6LL<<24),
+      reale(33374LL,0xea6cb71LL<<24),reale(-3539LL,0xfaa2c64LL<<24),
+      reale(-5248LL,0x50c1eb7LL<<24),real(0x2c6b73ee52LL<<24),
+      real(0x722433189dLL<<24),real(-0x2e4dc1cba3080000LL),
       reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[251]
-      reale(4082LL,0x67f98f4LL<<24),reale(-3844LL,0x2c9ab0aLL<<24),
-      real(-0x159f6b3e48LL<<24),real(-0x5e777d4baLL<<24),
-      real(0x4a85b6d5fcLL<<24),real(-0x22657e61deLL<<24),
-      real(0x2c64fe303880000LL),reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[252]
-      real(-0x34c400805d8LL<<20),real(-0x67cc1b5366LL<<24),
-      real(0x57398ecb018LL<<20),real(-0xc95bb863LL<<24),
-      real(-0x22721e20f8LL<<20),real(-0x3de76ba4f240000LL),
+      // C4[11], coeff of eps^14, polynomial in n of order 12
+      reale(-5608LL,0x991738LL<<28),reale(17587LL,0xf22611LL<<28),
+      reale(-40025LL,0xa10c4cLL<<28),reale(66142LL,0x876083LL<<28),
+      reale(-76303LL,954917LL<<32),reale(52531LL,0x8deb4dLL<<28),
+      reale(-2629LL,0x8e7914LL<<28),reale(-39201LL,0x38bf3fLL<<28),
+      reale(46365LL,0x54b068LL<<28),reale(-27150LL,0x55ed29LL<<28),
+      reale(7864LL,0x5e881cLL<<28),real(-0x1da92f225LL<<28),
+      real(-0xc0441aac22LL<<20),reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
+      // C4[11], coeff of eps^13, polynomial in n of order 13
+      real(-0x4dd7751f98LL<<20),real(0x238aa1d5ceLL<<24),
+      reale(-2754LL,0xce58be58LL<<20),reale(9526LL,0xd688791LL<<24),
+      reale(-24464LL,0xdf73ed48LL<<20),reale(47309LL,0x7148c34LL<<24),
+      reale(-68505LL,0xbf6a8738LL<<20),reale(71563LL,0xf1b5657LL<<24),
+      reale(-47679LL,0xf11e628LL<<20),reale(8918LL,0xa5b789aLL<<24),
+      reale(19900LL,0x542c2418LL<<20),reale(-25293LL,0xbf6dd9dLL<<24),
+      reale(14565LL,0x9bc59b08LL<<20),reale(-3590LL,0x4e483233c0000LL),
       reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[253]
-      real(0x1eafb2d2LL<<32),real(0x6001f8fcLL<<28),real(0x26e8d367LL<<32),
-      real(-0x1850eab0cLL<<28),real(0x2ad9fbf9a8LL<<20),
+      // C4[11], coeff of eps^12, polynomial in n of order 14
+      real(-0xa2feacLL<<24),real(0x1c179372LL<<24),real(-0x1874d0578LL<<24),
+      real(0xc0be8a7beLL<<24),real(-0x3f9d6493c4LL<<24),
+      reale(3896LL,0x4997f2aLL<<24),reale(-11281LL,0x64c37bLL<<28),
+      reale(25274LL,0x3bbdef6LL<<24),reale(-44241LL,0xb75fe24LL<<24),
+      reale(60354LL,0xf508c62LL<<24),reale(-63153LL,0xc2460d8LL<<24),
+      reale(48923LL,0x7ed4caeLL<<24),reale(-26289LL,0xfd6410cLL<<24),
+      reale(8669LL,0x733e51aLL<<24),real(-0x51d72bd69a980000LL),
       reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[254]
-      real(0x3dc8d3e3fcLL<<24),real(-0x852738cf8LL<<24),
-      real(-0x23d2c912cLL<<24),real(-0x200440db02LL<<20),
+      // C4[11], coeff of eps^11, polynomial in n of order 15
+      real(-31464LL<<20),real(-33649LL<<24),real(-0x1944cb8LL<<20),
+      real(0x4a592f6LL<<24),real(-0x459291388LL<<20),real(0x25287649dLL<<24),
+      real(-0xd6fc633d58LL<<20),real(0x39106c83a4LL<<24),
+      reale(-2978LL,0x49e187d8LL<<20),reale(7656LL,0xf8e0a2bLL<<24),
+      reale(-15740LL,0xab15ce08LL<<20),reale(25923LL,0x9aeb252LL<<24),
+      reale(-33769LL,0x17e1e738LL<<20),reale(33232LL,0xe46ee39LL<<24),
+      reale(-20952LL,0xd4296568LL<<20),reale(5892LL,0x84545b7ac0000LL),
       reale(0x18ffbb8LL,0x19fb43ab7aab9LL),
-      // _C4x[255]
-      real(0xb66a2aLL<<28),real(-0x94166dLL<<28),real(0x1456e5bcLL<<20),
-      reale(54497LL,0x83837319e73d9LL),
-      // _C4x[256]
-      real(-306388LL<<24),real(-0x30085eLL<<20),real(0x477bca00497fe9bfLL),
-      // _C4x[257]
-      real(4888LL<<20),real(0xe6baee73ea363LL),
-      // _C4x[258]
-      real(397670LL<<24),real(-0x135e647LL<<24),real(0x13bdbefcLL<<24),
-      real(-0xb8948681LL<<24),real(0x49699e392LL<<24),
-      real(-0x1590a013fbLL<<24),real(0x4e6b0048a8LL<<24),
-      reale(-3632LL,0xa5068cbLL<<24),reale(8507LL,0xbf327beLL<<24),
-      reale(-16265LL,0x3097f51LL<<24),reale(25338LL,0xdcb7a54LL<<24),
-      reale(-31674LL,0x6c1a717LL<<24),reale(30296LL,0x77349eaLL<<24),
-      reale(-18784LL,0x30f8f9dLL<<24),reale(5237LL,0xcaf5a6a6LL<<20),
+      // C4[12], coeff of eps^26, polynomial in n of order 0
+      real(-2LL<<32),real(0x2f0618f20f09a7LL),
+      // C4[12], coeff of eps^25, polynomial in n of order 1
+      real(-62273LL<<28),real(123651LL<<24),real(0x19e65bbd524850fbLL),
+      // C4[12], coeff of eps^24, polynomial in n of order 2
+      real(-0x59584b5LL<<28),real(-0x24710be8LL<<24),real(-0x294ee807LL<<24),
+      reale(0x217183LL,0xd5a68f81111b3LL),
+      // C4[12], coeff of eps^23, polynomial in n of order 3
+      real(0x12984317LL<<28),real(0xd1e58b72LL<<28),real(-0x747d5143LL<<28),
+      real(0xb73914e9LL<<24),reale(0x90ebe5LL,0xf32718849f75dLL),
+      // C4[12], coeff of eps^22, polynomial in n of order 4
+      real(-0x71f21ba04LL<<28),real(0x4a52d91cdLL<<28),real(0x3a8875feLL<<28),
+      real(-0x13186811LL<<28),real(-0x3e64cd5eLL<<28),
       reale(0x1b2c3b1LL,0xd975498dde617LL),
-      // _C4x[259]
-      real(0x283beee4LL<<24),real(-0x15cef585LL<<28),real(0x7f93d56fcLL<<24),
-      real(-0x22159bbf18LL<<24),real(0x6f496a9d94LL<<24),
-      reale(-4556LL,0x84dbd2LL<<28),reale(9255LL,0xbbd2bacLL<<24),
-      reale(-14990LL,0xbdd5558LL<<24),reale(19228LL,0x8e2a44LL<<24),
-      reale(-19176LL,0xa51429LL<<28),reale(14321LL,0xf73025cLL<<24),
-      reale(-7492LL,0x82a3dc8LL<<24),reale(2423LL,0xb79dcf4LL<<24),
-      real(-0x1693a2298bcLL<<20),reale(0x90ebe5LL,0xf32718849f75dLL),
-      // _C4x[260]
-      real(0x4688633f7LL<<28),reale(-4402LL,0x8011c3cLL<<24),
-      reale(12915LL,0x73e9b88LL<<24),reale(-29095LL,0xd406fd4LL<<24),
-      reale(50530LL,0xd903faLL<<28),reale(-66730LL,0x7def36cLL<<24),
-      reale(63904LL,0x71b03b8LL<<24),reale(-38026LL,0x5c6c704LL<<24),
-      reale(2775LL,0xfbabfdLL<<28),reale(20705LL,0xcf7ea9cLL<<24),
-      reale(-23356LL,0x2de0be8LL<<24),reale(12999LL,0xf01fe34LL<<24),
-      reale(-3170LL,0x860a3fcLL<<24),reale(0x1b2c3b1LL,0xd975498dde617LL),
-      // _C4x[261]
-      reale(23399LL,0xe6f798cLL<<24),reale(-46216LL,0x5234048LL<<24),
-      reale(67437LL,0x33caec4LL<<24),reale(-68613LL,0x20de4aLL<<28),
-      reale(38802LL,0xf902d7cLL<<24),reale(8195LL,341240LL<<24),
-      reale(-41127LL,0x66c3ab4LL<<24),reale(42002LL,0x30cc65LL<<28),
-      reale(-22752LL,0x6405b6cLL<<24),reale(6086LL,0x174ada8LL<<24),
-      real(-0xdc5682b5cLL<<24),real(-0xb3064a33acLL<<20),
+      // C4[12], coeff of eps^21, polynomial in n of order 5
+      reale(-3027LL,0xe45b0dLL<<28),real(-0x292135aecLL<<28),
+      real(-0xf7b99e85LL<<28),real(0x48a6e1d2aLL<<28),real(-0x1e0b679f7LL<<28),
+      real(0x2190668fdLL<<24),reale(0x1b2c3b1LL,0xd975498dde617LL),
+      // C4[12], coeff of eps^20, polynomial in n of order 6
+      reale(3415LL,0xc912716LL<<24),real(0x45e58b8965LL<<24),
+      reale(-4037LL,0x3f84be4LL<<24),real(0x4b8d3c4323LL<<24),
+      real(0x15bac0b1b2LL<<24),real(0x3522c8ca1LL<<24),
+      real(-0x7a03567462LL<<20),reale(0x1b2c3b1LL,0xd975498dde617LL),
+      // C4[12], coeff of eps^19, polynomial in n of order 7
+      reale(-9658LL,0xa4c7364LL<<24),reale(11274LL,0x6c5b0c8LL<<24),
+      real(-0x1f6e85a614LL<<24),real(-0x79d1375fdLL<<28),
+      real(-0x6b072a870cLL<<24),reale(2209LL,0x198a998LL<<24),
+      real(-0x285bc12c84LL<<24),real(0x163cbe2fecLL<<20),
       reale(0x1b2c3b1LL,0xd975498dde617LL),
-      // _C4x[262]
-      reale(72847LL,0x271a51cLL<<24),reale(-50731LL,0x7c7ae56LL<<24),
-      real(-0x44b35c4c5LL<<28),reale(46646LL,0x70a160aLL<<24),
-      reale(-52486LL,0x5f31e44LL<<24),reale(25457LL,0x9e6c03eLL<<24),
-      real(-0xd3d3e2228LL<<24),reale(-5016LL,0xcfe89f2LL<<24),
-      real(0xe92a0cb6cLL<<24),real(0x6fd8056026LL<<24),
-      real(-0x2a2c8f04c9cLL<<20),reale(0x1b2c3b1LL,0xd975498dde617LL),
-      // _C4x[263]
+      // C4[12], coeff of eps^18, polynomial in n of order 8
+      reale(-10358LL,0x7c48caLL<<28),reale(-12253LL,0x39b98ccLL<<24),
+      real(0x62ed8afd78LL<<24),reale(10573LL,0x9351d24LL<<24),
+      reale(-6815LL,0x900e65LL<<28),real(-0x61450ee84LL<<24),
+      real(0x3263d35f28LL<<24),real(0x16e96dd5d4LL<<24),
+      real(-0x10590be4b4LL<<24),reale(0x1b2c3b1LL,0xd975498dde617LL),
+      // C4[12], coeff of eps^17, polynomial in n of order 9
       reale(-37198LL,0xc2bcf24LL<<24),reale(60620LL,0xbda83aLL<<28),
       reale(-35565LL,0x113931cLL<<24),real(0x64fe25038LL<<24),
       reale(9080LL,0x9fe8194LL<<24),real(0x5138a8f5dLL<<28),
       reale(-7185LL,0x3ef178cLL<<24),reale(4144LL,0x2d30168LL<<24),
       real(-0x2f70b26dfcLL<<24),real(-0x15370842ccLL<<20),
       reale(0x1b2c3b1LL,0xd975498dde617LL),
-      // _C4x[264]
-      reale(-10358LL,0x7c48caLL<<28),reale(-12253LL,0x39b98ccLL<<24),
-      real(0x62ed8afd78LL<<24),reale(10573LL,0x9351d24LL<<24),
-      reale(-6815LL,0x900e65LL<<28),real(-0x61450ee84LL<<24),
-      real(0x3263d35f28LL<<24),real(0x16e96dd5d4LL<<24),
-      real(-0x10590be4b4LL<<24),reale(0x1b2c3b1LL,0xd975498dde617LL),
-      // _C4x[265]
-      reale(-9658LL,0xa4c7364LL<<24),reale(11274LL,0x6c5b0c8LL<<24),
-      real(-0x1f6e85a614LL<<24),real(-0x79d1375fdLL<<28),
-      real(-0x6b072a870cLL<<24),reale(2209LL,0x198a998LL<<24),
-      real(-0x285bc12c84LL<<24),real(0x163cbe2fecLL<<20),
+      // C4[12], coeff of eps^16, polynomial in n of order 10
+      reale(72847LL,0x271a51cLL<<24),reale(-50731LL,0x7c7ae56LL<<24),
+      real(-0x44b35c4c5LL<<28),reale(46646LL,0x70a160aLL<<24),
+      reale(-52486LL,0x5f31e44LL<<24),reale(25457LL,0x9e6c03eLL<<24),
+      real(-0xd3d3e2228LL<<24),reale(-5016LL,0xcfe89f2LL<<24),
+      real(0xe92a0cb6cLL<<24),real(0x6fd8056026LL<<24),
+      real(-0x2a2c8f04c9cLL<<20),reale(0x1b2c3b1LL,0xd975498dde617LL),
+      // C4[12], coeff of eps^15, polynomial in n of order 11
+      reale(23399LL,0xe6f798cLL<<24),reale(-46216LL,0x5234048LL<<24),
+      reale(67437LL,0x33caec4LL<<24),reale(-68613LL,0x20de4aLL<<28),
+      reale(38802LL,0xf902d7cLL<<24),reale(8195LL,341240LL<<24),
+      reale(-41127LL,0x66c3ab4LL<<24),reale(42002LL,0x30cc65LL<<28),
+      reale(-22752LL,0x6405b6cLL<<24),reale(6086LL,0x174ada8LL<<24),
+      real(-0xdc5682b5cLL<<24),real(-0xb3064a33acLL<<20),
       reale(0x1b2c3b1LL,0xd975498dde617LL),
-      // _C4x[266]
-      reale(3415LL,0xc912716LL<<24),real(0x45e58b8965LL<<24),
-      reale(-4037LL,0x3f84be4LL<<24),real(0x4b8d3c4323LL<<24),
-      real(0x15bac0b1b2LL<<24),real(0x3522c8ca1LL<<24),
-      real(-0x7a03567462LL<<20),reale(0x1b2c3b1LL,0xd975498dde617LL),
-      // _C4x[267]
-      reale(-3027LL,0xe45b0dLL<<28),real(-0x292135aecLL<<28),
-      real(-0xf7b99e85LL<<28),real(0x48a6e1d2aLL<<28),real(-0x1e0b679f7LL<<28),
-      real(0x2190668fdLL<<24),reale(0x1b2c3b1LL,0xd975498dde617LL),
-      // _C4x[268]
-      real(-0x71f21ba04LL<<28),real(0x4a52d91cdLL<<28),real(0x3a8875feLL<<28),
-      real(-0x13186811LL<<28),real(-0x3e64cd5eLL<<28),
+      // C4[12], coeff of eps^14, polynomial in n of order 12
+      real(0x4688633f7LL<<28),reale(-4402LL,0x8011c3cLL<<24),
+      reale(12915LL,0x73e9b88LL<<24),reale(-29095LL,0xd406fd4LL<<24),
+      reale(50530LL,0xd903faLL<<28),reale(-66730LL,0x7def36cLL<<24),
+      reale(63904LL,0x71b03b8LL<<24),reale(-38026LL,0x5c6c704LL<<24),
+      reale(2775LL,0xfbabfdLL<<28),reale(20705LL,0xcf7ea9cLL<<24),
+      reale(-23356LL,0x2de0be8LL<<24),reale(12999LL,0xf01fe34LL<<24),
+      reale(-3170LL,0x860a3fcLL<<24),reale(0x1b2c3b1LL,0xd975498dde617LL),
+      // C4[12], coeff of eps^13, polynomial in n of order 13
+      real(0x283beee4LL<<24),real(-0x15cef585LL<<28),real(0x7f93d56fcLL<<24),
+      real(-0x22159bbf18LL<<24),real(0x6f496a9d94LL<<24),
+      reale(-4556LL,0x84dbd2LL<<28),reale(9255LL,0xbbd2bacLL<<24),
+      reale(-14990LL,0xbdd5558LL<<24),reale(19228LL,0x8e2a44LL<<24),
+      reale(-19176LL,0xa51429LL<<28),reale(14321LL,0xf73025cLL<<24),
+      reale(-7492LL,0x82a3dc8LL<<24),reale(2423LL,0xb79dcf4LL<<24),
+      real(-0x1693a2298bcLL<<20),reale(0x90ebe5LL,0xf32718849f75dLL),
+      // C4[12], coeff of eps^12, polynomial in n of order 14
+      real(397670LL<<24),real(-0x135e647LL<<24),real(0x13bdbefcLL<<24),
+      real(-0xb8948681LL<<24),real(0x49699e392LL<<24),
+      real(-0x1590a013fbLL<<24),real(0x4e6b0048a8LL<<24),
+      reale(-3632LL,0xa5068cbLL<<24),reale(8507LL,0xbf327beLL<<24),
+      reale(-16265LL,0x3097f51LL<<24),reale(25338LL,0xdcb7a54LL<<24),
+      reale(-31674LL,0x6c1a717LL<<24),reale(30296LL,0x77349eaLL<<24),
+      reale(-18784LL,0x30f8f9dLL<<24),reale(5237LL,0xcaf5a6a6LL<<20),
       reale(0x1b2c3b1LL,0xd975498dde617LL),
-      // _C4x[269]
-      real(0x12984317LL<<28),real(0xd1e58b72LL<<28),real(-0x747d5143LL<<28),
-      real(0xb73914e9LL<<24),reale(0x90ebe5LL,0xf32718849f75dLL),
-      // _C4x[270]
-      real(-0x59584b5LL<<28),real(-0x24710be8LL<<24),real(-0x294ee807LL<<24),
-      reale(0x217183LL,0xd5a68f81111b3LL),
-      // _C4x[271]
-      real(-62273LL<<28),real(123651LL<<24),real(0x19e65bbd524850fbLL),
-      // _C4x[272]
-      real(-2LL<<32),real(0x2f0618f20f09a7LL),
-      // _C4x[273]
-      real(-0x58be73cLL<<24),real(0x38517abLL<<28),real(-0x186e02be4LL<<24),
-      real(0x7dd9a1868LL<<24),real(-0x1f88b6950cLL<<24),
-      real(0x6557140f2LL<<28),reale(-4257LL,0xb6b584cLL<<24),
-      reale(9227LL,0xea319d8LL<<24),reale(-16595LL,0xf151724LL<<24),
-      reale(24654LL,470841LL<<28),reale(-29746LL,0x611227cLL<<24),
-      reale(27762LL,0x9455748LL<<24),reale(-16967LL,0xfaaf554LL<<24),
-      reale(4695LL,0xf3c1c18cLL<<20),reale(0x1d58babLL,0x98ef4f7042175LL),
-      // _C4x[274]
-      real(-0x8b26687cLL<<28),real(0x290fd9f1bLL<<28),
-      reale(-2388LL,0x36721eLL<<28),reale(6865LL,0x9baec9LL<<28),
-      reale(-15870LL,0x905358LL<<28),reale(29710LL,0x8c2607LL<<28),
-      reale(-45044LL,486674LL<<28),reale(54812LL,0x6d26b5LL<<28),
-      reale(-52442LL,0xa7f12cLL<<28),reale(37945LL,0xc3d2b3LL<<28),
-      reale(-19390LL,0x431186LL<<28),reale(6169LL,0x764be1LL<<28),
-      real(-0x38ce4db2db8LL<<20),reale(0x1d58babLL,0x98ef4f7042175LL),
-      // _C4x[275]
-      reale(-6367LL,0x25f6504LL<<24),reale(16360LL,0x4dc3558LL<<24),
-      reale(-33061LL,0x4ecdf6cLL<<24),reale(52401LL,0x66e3beLL<<28),
-      reale(-63841LL,0x71a1354LL<<24),reale(56445LL,0xe17ae68LL<<24),
-      reale(-29838LL,0x86065bcLL<<24),real(-0x7403de4e1LL<<28),
-      reale(20917LL,0x71e3ba4LL<<24),reale(-21570LL,0xb3f6b78LL<<24),
-      reale(11677LL,0xe90fa0cLL<<24),reale(-2824LL,0xeb954754LL<<20),
+      // C4[13], coeff of eps^26, polynomial in n of order 0
+      real(166LL<<24),real(0xb952c68e4fbe9LL),
+      // C4[13], coeff of eps^25, polynomial in n of order 1
+      real(-71903LL<<28),real(-0x1ab3b9LL<<24),reale(5818LL,0x23b391cd899edLL),
+      // C4[13], coeff of eps^24, polynomial in n of order 2
+      real(0x101ed8dLL<<32),real(-0x80a64a8LL<<28),real(0xb4b7414LL<<24),
+      reale(789029LL,0x386f296be7703LL),
+      // C4[13], coeff of eps^23, polynomial in n of order 3
+      real(0x3dee529e7LL<<28),real(0x6cec7402LL<<28),real(-0x473d793LL<<28),
+      real(-0x3e1be54e5LL<<24),reale(0x1d58babLL,0x98ef4f7042175LL),
+      // C4[13], coeff of eps^22, polynomial in n of order 4
+      real(-0x343e549fLL<<32),real(-0x18a69b51cLL<<28),real(0x460d48248LL<<28),
+      real(-0x1a3f4f9f4LL<<28),real(0x19281ba96LL<<24),
       reale(0x1d58babLL,0x98ef4f7042175LL),
-      // _C4x[276]
-      reale(-50762LL,0x475c7cLL<<28),reale(66355LL,0x870afaLL<<28),
-      reale(-59859LL,723819LL<<32),reale(26575LL,0x21ae26LL<<28),
-      reale(16255LL,0x1d3fe4LL<<28),reale(-41403LL,0x212a72LL<<28),
-      reale(37768LL,0x572c58LL<<28),reale(-19111LL,0x7dd41eLL<<28),
-      reale(4727LL,0x6ab04cLL<<28),real(-0x2fa40096LL<<28),
-      real(-0xa540e2085LL<<24),reale(0x1d58babLL,0x98ef4f7042175LL),
-      // _C4x[277]
-      reale(-35541LL,0x7282c8cLL<<24),reale(-14633LL,0xccc30eLL<<28),
-      reale(49583LL,0x128b834LL<<24),reale(-46374LL,0xdd8a28LL<<24),
-      reale(18858LL,0x355fe5cLL<<24),real(0x7f3bc48c7LL<<28),
-      reale(-4604LL,0xc55c04LL<<24),real(-0x98d22ab48LL<<24),
-      real(0x6c7ad32e2cLL<<24),real(-0x268b90f95ccLL<<20),
+      // C4[13], coeff of eps^21, polynomial in n of order 5
+      real(0x79a6c5ac7LL<<28),reale(-3802LL,0xfd945cLL<<28),
+      real(0x346436151LL<<28),real(0x16fdc2aceLL<<28),real(0x4f28edfbLL<<28),
+      real(-0x75fcc3c53LL<<24),reale(0x1d58babLL,0x98ef4f7042175LL),
+      // C4[13], coeff of eps^20, polynomial in n of order 6
+      reale(9254LL,696682LL<<32),real(0x352756c5LL<<32),
+      real(-0x65e53404LL<<32),real(-0x788cc21dLL<<32),real(0x7f33e94eLL<<32),
+      real(-0x21eb1cefLL<<32),real(0xcd29b9b8LL<<24),
       reale(0x1d58babLL,0x98ef4f7042175LL),
-      // _C4x[278]
-      reale(55507LL,0xcfc518LL<<28),reale(-25285LL,0x16861fLL<<28),
-      reale(-4553LL,0x2efce2LL<<28),reale(8014LL,0xba4bfdLL<<28),
-      reale(2646LL,0x44360cLL<<28),reale(-6925LL,0x6f25abLL<<28),
-      reale(3590LL,0x29c576LL<<28),real(-0x251e627f7LL<<28),
-      real(-0x1c00154478LL<<20),reale(0x1d58babLL,0x98ef4f7042175LL),
-      // _C4x[279]
+      // C4[13], coeff of eps^19, polynomial in n of order 7
       reale(-12156LL,0xce6fa6cLL<<24),real(-0x5e07316be8LL<<24),
       reale(10690LL,0x8038384LL<<24),reale(-5461LL,0x41c7d1LL<<28),
       real(-0x2348597ae4LL<<24),real(0x2bb84de008LL<<24),
       real(0x18e3fd0234LL<<24),real(-0xf5e5d02854LL<<20),
       reale(0x1d58babLL,0x98ef4f7042175LL),
-      // _C4x[280]
-      reale(9254LL,696682LL<<32),real(0x352756c5LL<<32),
-      real(-0x65e53404LL<<32),real(-0x788cc21dLL<<32),real(0x7f33e94eLL<<32),
-      real(-0x21eb1cefLL<<32),real(0xcd29b9b8LL<<24),
+      // C4[13], coeff of eps^18, polynomial in n of order 8
+      reale(55507LL,0xcfc518LL<<28),reale(-25285LL,0x16861fLL<<28),
+      reale(-4553LL,0x2efce2LL<<28),reale(8014LL,0xba4bfdLL<<28),
+      reale(2646LL,0x44360cLL<<28),reale(-6925LL,0x6f25abLL<<28),
+      reale(3590LL,0x29c576LL<<28),real(-0x251e627f7LL<<28),
+      real(-0x1c00154478LL<<20),reale(0x1d58babLL,0x98ef4f7042175LL),
+      // C4[13], coeff of eps^17, polynomial in n of order 9
+      reale(-35541LL,0x7282c8cLL<<24),reale(-14633LL,0xccc30eLL<<28),
+      reale(49583LL,0x128b834LL<<24),reale(-46374LL,0xdd8a28LL<<24),
+      reale(18858LL,0x355fe5cLL<<24),real(0x7f3bc48c7LL<<28),
+      reale(-4604LL,0xc55c04LL<<24),real(-0x98d22ab48LL<<24),
+      real(0x6c7ad32e2cLL<<24),real(-0x268b90f95ccLL<<20),
       reale(0x1d58babLL,0x98ef4f7042175LL),
-      // _C4x[281]
-      real(0x79a6c5ac7LL<<28),reale(-3802LL,0xfd945cLL<<28),
-      real(0x346436151LL<<28),real(0x16fdc2aceLL<<28),real(0x4f28edfbLL<<28),
-      real(-0x75fcc3c53LL<<24),reale(0x1d58babLL,0x98ef4f7042175LL),
-      // _C4x[282]
-      real(-0x343e549fLL<<32),real(-0x18a69b51cLL<<28),real(0x460d48248LL<<28),
-      real(-0x1a3f4f9f4LL<<28),real(0x19281ba96LL<<24),
+      // C4[13], coeff of eps^16, polynomial in n of order 10
+      reale(-50762LL,0x475c7cLL<<28),reale(66355LL,0x870afaLL<<28),
+      reale(-59859LL,723819LL<<32),reale(26575LL,0x21ae26LL<<28),
+      reale(16255LL,0x1d3fe4LL<<28),reale(-41403LL,0x212a72LL<<28),
+      reale(37768LL,0x572c58LL<<28),reale(-19111LL,0x7dd41eLL<<28),
+      reale(4727LL,0x6ab04cLL<<28),real(-0x2fa40096LL<<28),
+      real(-0xa540e2085LL<<24),reale(0x1d58babLL,0x98ef4f7042175LL),
+      // C4[13], coeff of eps^15, polynomial in n of order 11
+      reale(-6367LL,0x25f6504LL<<24),reale(16360LL,0x4dc3558LL<<24),
+      reale(-33061LL,0x4ecdf6cLL<<24),reale(52401LL,0x66e3beLL<<28),
+      reale(-63841LL,0x71a1354LL<<24),reale(56445LL,0xe17ae68LL<<24),
+      reale(-29838LL,0x86065bcLL<<24),real(-0x7403de4e1LL<<28),
+      reale(20917LL,0x71e3ba4LL<<24),reale(-21570LL,0xb3f6b78LL<<24),
+      reale(11677LL,0xe90fa0cLL<<24),reale(-2824LL,0xeb954754LL<<20),
       reale(0x1d58babLL,0x98ef4f7042175LL),
-      // _C4x[283]
-      real(0x3dee529e7LL<<28),real(0x6cec7402LL<<28),real(-0x473d793LL<<28),
-      real(-0x3e1be54e5LL<<24),reale(0x1d58babLL,0x98ef4f7042175LL),
-      // _C4x[284]
-      real(0x101ed8dLL<<32),real(-0x80a64a8LL<<28),real(0xb4b7414LL<<24),
-      reale(789029LL,0x386f296be7703LL),
-      // _C4x[285]
-      real(-71903LL<<28),real(-0x1ab3b9LL<<24),reale(5818LL,0x23b391cd899edLL),
-      // _C4x[286]
-      real(166LL<<24),real(0xb952c68e4fbe9LL),
-      // _C4x[287]
-      real(0x7f43c22LL<<28),real(-0x2c8eafab8LL<<24),real(0xc32b2bc7LL<<28),
-      real(-0x2b1186d468LL<<24),real(0x7d0edcd6cLL<<28),
-      reale(-4841LL,0x847e1e8LL<<24),reale(9826LL,0x8b1711LL<<28),
-      reale(-16768LL,0x7c50838LL<<24),reale(23911LL,0xeefeb6LL<<28),
-      reale(-27977LL,0x9a7e88LL<<24),reale(25559LL,0x333a5bLL<<28),
-      reale(-15424LL,0x58424d8LL<<24),reale(4241LL,0x81542abLL<<24),
+      // C4[13], coeff of eps^14, polynomial in n of order 12
+      real(-0x8b26687cLL<<28),real(0x290fd9f1bLL<<28),
+      reale(-2388LL,0x36721eLL<<28),reale(6865LL,0x9baec9LL<<28),
+      reale(-15870LL,0x905358LL<<28),reale(29710LL,0x8c2607LL<<28),
+      reale(-45044LL,486674LL<<28),reale(54812LL,0x6d26b5LL<<28),
+      reale(-52442LL,0xa7f12cLL<<28),reale(37945LL,0xc3d2b3LL<<28),
+      reale(-19390LL,0x431186LL<<28),reale(6169LL,0x764be1LL<<28),
+      real(-0x38ce4db2db8LL<<20),reale(0x1d58babLL,0x98ef4f7042175LL),
+      // C4[13], coeff of eps^13, polynomial in n of order 13
+      real(-0x58be73cLL<<24),real(0x38517abLL<<28),real(-0x186e02be4LL<<24),
+      real(0x7dd9a1868LL<<24),real(-0x1f88b6950cLL<<24),
+      real(0x6557140f2LL<<28),reale(-4257LL,0xb6b584cLL<<24),
+      reale(9227LL,0xea319d8LL<<24),reale(-16595LL,0xf151724LL<<24),
+      reale(24654LL,470841LL<<28),reale(-29746LL,0x611227cLL<<24),
+      reale(27762LL,0x9455748LL<<24),reale(-16967LL,0xfaaf554LL<<24),
+      reale(4695LL,0xf3c1c18cLL<<20),reale(0x1d58babLL,0x98ef4f7042175LL),
+      // C4[14], coeff of eps^26, polynomial in n of order 0
+      real(-27124LL<<24),real(0x5fa345ccc643905LL),
+      // C4[14], coeff of eps^25, polynomial in n of order 1
+      real(-46952LL<<28),real(58824LL<<24),real(0x148e6926290dbdd9LL),
+      // C4[14], coeff of eps^24, polynomial in n of order 2
+      real(0x8f014108LL<<28),real(0x90ae184LL<<28),real(-0x3d486a848LL<<24),
       reale(0x1f853a5LL,0x58695552a5cd3LL),
-      // _C4x[288]
-      real(0x3f93bd16eLL<<28),reale(-3247LL,0xcc82e4LL<<28),
-      reale(8406LL,0x10355aLL<<28),reale(-17843LL,401573LL<<32),
-      reale(31156LL,0xe11346LL<<28),reale(-44631LL,0xd0e1bcLL<<28),
-      reale(51879LL,0x441732LL<<28),reale(-47871LL,0x79b528LL<<28),
-      reale(33689LL,0x41ed1eLL<<28),reale(-16865LL,0x373094LL<<28),
-      reale(5288LL,0x1c410aLL<<28),real(-0x3032ec97c2LL<<24),
+      // C4[14], coeff of eps^23, polynomial in n of order 3
+      real(-0xaf809838LL<<28),real(0x16526bf3LL<<32),real(-0x7a5a5568LL<<28),
+      real(0x632768c8LL<<24),reale(0xa81be1LL,0xc8231c70e1ef1LL),
+      // C4[14], coeff of eps^22, polynomial in n of order 4
+      reale(-3491LL,0x840908LL<<28),real(0x21172cd46LL<<28),
+      real(0x16feb6884LL<<28),real(0x64d1f5c2LL<<28),real(-0x7195fe17cLL<<24),
       reale(0x1f853a5LL,0x58695552a5cd3LL),
-      // _C4x[289]
-      reale(19689LL,0x79235aLL<<28),reale(-36283LL,0x3a1c11LL<<28),
-      reale(53123LL,640072LL<<28),reale(-60235LL,0xc6787fLL<<28),
-      reale(49410LL,0x4cf536LL<<28),reale(-22944LL,0xc02aedLL<<28),
-      reale(-5332LL,0x64d224LL<<28),reale(20742LL,0x947f5bLL<<28),
-      reale(-19940LL,0x8ff712LL<<28),reale(10552LL,0x6681c9LL<<28),
-      reale(-2534LL,0x1d20d5eLL<<24),reale(0x1f853a5LL,0x58695552a5cd3LL),
-      // _C4x[290]
-      reale(63443LL,0x6de27aLL<<28),reale(-50758LL,552373LL<<32),
-      reale(16003LL,0x826826LL<<28),reale(22072LL,208508LL<<28),
-      reale(-40596LL,0x6563d2LL<<28),reale(33806LL,0x7a9da8LL<<28),
-      reale(-16096LL,0xcd217eLL<<28),reale(3680LL,0x3774d4LL<<28),
-      real(0x45a0ed2aLL<<28),real(-0x97dac1de2LL<<24),
+      // C4[14], coeff of eps^21, polynomial in n of order 5
+      real(0x6f9dc457LL<<32),real(-0x4d771554LL<<32),
+      reale(-2077LL,162049LL<<32),real(0x7498ad56LL<<32),
+      real(-0x1c8c8a55LL<<32),real(0x5e23549LL<<28),
       reale(0x1f853a5LL,0x58695552a5cd3LL),
-      // _C4x[291]
-      reale(-24789LL,0x83cf4cLL<<28),reale(49876LL,0x7a32c28LL<<24),
-      reale(-40131LL,0x62c079LL<<28),reale(13469LL,0x2232af8LL<<24),
-      reale(3498LL,0x98bfa6LL<<28),reale(-4112LL,0x4c9f9c8LL<<24),
-      real(-0x1cbd94d2dLL<<28),real(0x68817a7898LL<<24),
-      real(-0x2359e35b9dLL<<24),reale(0x1f853a5LL,0x58695552a5cd3LL),
-      // _C4x[292]
+      // C4[14], coeff of eps^20, polynomial in n of order 6
+      reale(-4076LL,862583LL<<32),reale(10359LL,0x71ed88LL<<28),
+      reale(-4246LL,570106LL<<32),real(-0x37200de48LL<<28),
+      real(0x24bde07dLL<<32),real(0x1a398c5e8LL<<28),real(-0xe70c22fdLL<<28),
+      reale(0x1f853a5LL,0x58695552a5cd3LL),
+      // C4[14], coeff of eps^19, polynomial in n of order 7
       reale(-16508LL,9905LL<<32),reale(-7427LL,479402LL<<32),
       reale(6609LL,461219LL<<32),reale(3685LL,139036LL<<32),
       reale(-6577LL,261781LL<<32),reale(3109LL,382350LL<<32),
       real(-0x1d03ce79LL<<32),real(-0x200b2093LL<<28),
       reale(0x1f853a5LL,0x58695552a5cd3LL),
-      // _C4x[293]
-      reale(-4076LL,862583LL<<32),reale(10359LL,0x71ed88LL<<28),
-      reale(-4246LL,570106LL<<32),real(-0x37200de48LL<<28),
-      real(0x24bde07dLL<<32),real(0x1a398c5e8LL<<28),real(-0xe70c22fdLL<<28),
-      reale(0x1f853a5LL,0x58695552a5cd3LL),
-      // _C4x[294]
-      real(0x6f9dc457LL<<32),real(-0x4d771554LL<<32),
-      reale(-2077LL,162049LL<<32),real(0x7498ad56LL<<32),
-      real(-0x1c8c8a55LL<<32),real(0x5e23549LL<<28),
+      // C4[14], coeff of eps^18, polynomial in n of order 8
+      reale(-24789LL,0x83cf4cLL<<28),reale(49876LL,0x7a32c28LL<<24),
+      reale(-40131LL,0x62c079LL<<28),reale(13469LL,0x2232af8LL<<24),
+      reale(3498LL,0x98bfa6LL<<28),reale(-4112LL,0x4c9f9c8LL<<24),
+      real(-0x1cbd94d2dLL<<28),real(0x68817a7898LL<<24),
+      real(-0x2359e35b9dLL<<24),reale(0x1f853a5LL,0x58695552a5cd3LL),
+      // C4[14], coeff of eps^17, polynomial in n of order 9
+      reale(63443LL,0x6de27aLL<<28),reale(-50758LL,552373LL<<32),
+      reale(16003LL,0x826826LL<<28),reale(22072LL,208508LL<<28),
+      reale(-40596LL,0x6563d2LL<<28),reale(33806LL,0x7a9da8LL<<28),
+      reale(-16096LL,0xcd217eLL<<28),reale(3680LL,0x3774d4LL<<28),
+      real(0x45a0ed2aLL<<28),real(-0x97dac1de2LL<<24),
       reale(0x1f853a5LL,0x58695552a5cd3LL),
-      // _C4x[295]
-      reale(-3491LL,0x840908LL<<28),real(0x21172cd46LL<<28),
-      real(0x16feb6884LL<<28),real(0x64d1f5c2LL<<28),real(-0x7195fe17cLL<<24),
+      // C4[14], coeff of eps^16, polynomial in n of order 10
+      reale(19689LL,0x79235aLL<<28),reale(-36283LL,0x3a1c11LL<<28),
+      reale(53123LL,640072LL<<28),reale(-60235LL,0xc6787fLL<<28),
+      reale(49410LL,0x4cf536LL<<28),reale(-22944LL,0xc02aedLL<<28),
+      reale(-5332LL,0x64d224LL<<28),reale(20742LL,0x947f5bLL<<28),
+      reale(-19940LL,0x8ff712LL<<28),reale(10552LL,0x6681c9LL<<28),
+      reale(-2534LL,0x1d20d5eLL<<24),reale(0x1f853a5LL,0x58695552a5cd3LL),
+      // C4[14], coeff of eps^15, polynomial in n of order 11
+      real(0x3f93bd16eLL<<28),reale(-3247LL,0xcc82e4LL<<28),
+      reale(8406LL,0x10355aLL<<28),reale(-17843LL,401573LL<<32),
+      reale(31156LL,0xe11346LL<<28),reale(-44631LL,0xd0e1bcLL<<28),
+      reale(51879LL,0x441732LL<<28),reale(-47871LL,0x79b528LL<<28),
+      reale(33689LL,0x41ed1eLL<<28),reale(-16865LL,0x373094LL<<28),
+      reale(5288LL,0x1c410aLL<<28),real(-0x3032ec97c2LL<<24),
       reale(0x1f853a5LL,0x58695552a5cd3LL),
-      // _C4x[296]
-      real(-0xaf809838LL<<28),real(0x16526bf3LL<<32),real(-0x7a5a5568LL<<28),
-      real(0x632768c8LL<<24),reale(0xa81be1LL,0xc8231c70e1ef1LL),
-      // _C4x[297]
-      real(0x8f014108LL<<28),real(0x90ae184LL<<28),real(-0x3d486a848LL<<24),
+      // C4[14], coeff of eps^14, polynomial in n of order 12
+      real(0x7f43c22LL<<28),real(-0x2c8eafab8LL<<24),real(0xc32b2bc7LL<<28),
+      real(-0x2b1186d468LL<<24),real(0x7d0edcd6cLL<<28),
+      reale(-4841LL,0x847e1e8LL<<24),reale(9826LL,0x8b1711LL<<28),
+      reale(-16768LL,0x7c50838LL<<24),reale(23911LL,0xeefeb6LL<<28),
+      reale(-27977LL,0x9a7e88LL<<24),reale(25559LL,0x333a5bLL<<28),
+      reale(-15424LL,0x58424d8LL<<24),reale(4241LL,0x81542abLL<<24),
       reale(0x1f853a5LL,0x58695552a5cd3LL),
-      // _C4x[298]
-      real(-46952LL<<28),real(58824LL<<24),real(0x148e6926290dbdd9LL),
-      // _C4x[299]
-      real(-27124LL<<24),real(0x5fa345ccc643905LL),
-      // _C4x[300]
-      real(-0x490f31dLL<<32),real(0x118ff5d2LL<<32),real(-0x37d9274fLL<<32),
-      reale(2382LL,900648LL<<32),reale(-5378LL,933983LL<<32),
-      reale(10315LL,284030LL<<32),reale(-16819LL,653869LL<<32),
-      reale(23142LL,90132LL<<32),reale(-26357LL,771163LL<<32),
-      reale(23629LL,791082LL<<32),reale(-14102LL,390441LL<<32),
-      reale(3855LL,0xe9ef6caLL<<24),reale(0x21b1b9fLL,0x17e35b3509831LL),
-      // _C4x[301]
-      real(-0x571bf678LL<<32),reale(3304LL,556556LL<<32),
-      reale(-6522LL,32202LL<<36),reale(10722LL,907188LL<<32),
-      reale(-14619LL,139704LL<<32),reale(16325LL,39196LL<<32),
-      reale(-14591LL,8133LL<<36),reale(10019LL,388548LL<<32),
-      reale(-4926LL,724968LL<<32),real(0x5f48012cLL<<32),
-      real(-0xdc5682b5cLL<<24),reale(0xb3b3dfLL,0xb2a11e67032bbLL),
-      // _C4x[302]
-      reale(-38752LL,80137LL<<32),reale(52907LL,0xfc9e8LL<<32),
-      reale(-56214LL,785799LL<<32),reale(42911LL,952654LL<<32),
-      reale(-17167LL,10533LL<<32),reale(-7921LL,806388LL<<32),
-      reale(20320LL,95267LL<<32),reale(-18462LL,706074LL<<32),
-      reale(9586LL,798401LL<<32),reale(-2290LL,0x45a3d6aLL<<24),
+      // C4[15], coeff of eps^26, polynomial in n of order 0
+      real(284LL<<28),real(0x2213ecbbb96785dLL),
+      // C4[15], coeff of eps^25, polynomial in n of order 1
+      real(27196LL<<32),real(-0x12d3b78LL<<24),
+      reale(43244LL,0xc47e8e0e2a501LL),
+      // C4[15], coeff of eps^24, polynomial in n of order 2
+      real(0x358bd2LL<<36),real(-0x10e5a9LL<<36),real(0xb51281LL<<28),
+      reale(0x1c5fc5LL,0x141dc611b72bLL),
+      // C4[15], coeff of eps^23, polynomial in n of order 3
+      real(0x114ce0c4LL<<32),real(0x1627a278LL<<32),real(0x768a96cLL<<32),
+      real(-0x6d0584bb8LL<<24),reale(0x21b1b9fLL,0x17e35b3509831LL),
+      // C4[15], coeff of eps^22, polynomial in n of order 4
+      real(-0x339e3ecLL<<36),reale(-2168LL,51155LL<<36),real(0x6a7c3eaLL<<36),
+      real(-0x180fd6fLL<<36),real(0xc32b44LL<<28),
       reale(0x21b1b9fLL,0x17e35b3509831LL),
-      // _C4x[303]
-      reale(-41807LL,35192LL<<36),reale(7070LL,18565LL<<36),
-      reale(26107LL,55418LL<<36),reale(-39104LL,55423LL<<36),
-      reale(30179LL,444LL<<36),reale(-13594LL,22617LL<<36),
-      reale(2866LL,40062LL<<36),real(0x94bb53LL<<36),real(-0x8b41da54LL<<28),
+      // C4[15], coeff of eps^21, polynomial in n of order 5
+      reale(9732LL,17262LL<<36),reale(-3186LL,36552LL<<36),
+      real(-0x43dd4feLL<<36),real(0x1de7dc4LL<<36),real(0x1b0dff6LL<<36),
+      real(-0xd920f5edLL<<28),reale(0x21b1b9fLL,0x17e35b3509831LL),
+      // C4[15], coeff of eps^20, polynomial in n of order 6
+      reale(-8974LL,45592LL<<36),reale(5093LL,1677LL<<40),
+      reale(4452LL,53LL<<40),reale(-6182LL,2471LL<<40),
+      reale(2693LL,57096LL<<36),real(-0x169da1LL<<40),real(-0x223ddc2aLL<<28),
       reale(0x21b1b9fLL,0x17e35b3509831LL),
-      // _C4x[304]
+      // C4[15], coeff of eps^19, polynomial in n of order 7
       reale(48363LL,42681LL<<36),reale(-34139LL,63194LL<<36),
       reale(9135LL,63227LL<<36),reale(4396LL,51388LL<<36),
       reale(-3597LL,31869LL<<36),real(-0x2bcd262LL<<36),real(0x64396bfLL<<36),
       real(-0x2088431a1LL<<28),reale(0x21b1b9fLL,0x17e35b3509831LL),
-      // _C4x[305]
-      reale(-8974LL,45592LL<<36),reale(5093LL,1677LL<<40),
-      reale(4452LL,53LL<<40),reale(-6182LL,2471LL<<40),
-      reale(2693LL,57096LL<<36),real(-0x169da1LL<<40),real(-0x223ddc2aLL<<28),
+      // C4[15], coeff of eps^18, polynomial in n of order 8
+      reale(-41807LL,35192LL<<36),reale(7070LL,18565LL<<36),
+      reale(26107LL,55418LL<<36),reale(-39104LL,55423LL<<36),
+      reale(30179LL,444LL<<36),reale(-13594LL,22617LL<<36),
+      reale(2866LL,40062LL<<36),real(0x94bb53LL<<36),real(-0x8b41da54LL<<28),
       reale(0x21b1b9fLL,0x17e35b3509831LL),
-      // _C4x[306]
-      reale(9732LL,17262LL<<36),reale(-3186LL,36552LL<<36),
-      real(-0x43dd4feLL<<36),real(0x1de7dc4LL<<36),real(0x1b0dff6LL<<36),
-      real(-0xd920f5edLL<<28),reale(0x21b1b9fLL,0x17e35b3509831LL),
-      // _C4x[307]
-      real(-0x339e3ecLL<<36),reale(-2168LL,51155LL<<36),real(0x6a7c3eaLL<<36),
-      real(-0x180fd6fLL<<36),real(0xc32b44LL<<28),
+      // C4[15], coeff of eps^17, polynomial in n of order 9
+      reale(-38752LL,80137LL<<32),reale(52907LL,0xfc9e8LL<<32),
+      reale(-56214LL,785799LL<<32),reale(42911LL,952654LL<<32),
+      reale(-17167LL,10533LL<<32),reale(-7921LL,806388LL<<32),
+      reale(20320LL,95267LL<<32),reale(-18462LL,706074LL<<32),
+      reale(9586LL,798401LL<<32),reale(-2290LL,0x45a3d6aLL<<24),
       reale(0x21b1b9fLL,0x17e35b3509831LL),
-      // _C4x[308]
-      real(0x114ce0c4LL<<32),real(0x1627a278LL<<32),real(0x768a96cLL<<32),
-      real(-0x6d0584bb8LL<<24),reale(0x21b1b9fLL,0x17e35b3509831LL),
-      // _C4x[309]
-      real(0x358bd2LL<<36),real(-0x10e5a9LL<<36),real(0xb51281LL<<28),
-      reale(0x1c5fc5LL,0x141dc611b72bLL),
-      // _C4x[310]
-      real(27196LL<<32),real(-0x12d3b78LL<<24),
-      reale(43244LL,0xc47e8e0e2a501LL),
-      // _C4x[311]
-      real(284LL<<28),real(0x2213ecbbb96785dLL),
-      // _C4x[312]
-      real(0x17e28184LL<<32),real(-0x458c00a6LL<<32),reale(2759LL,6541LL<<36),
-      reale(-5864LL,957254LL<<32),reale(10706LL,531484LL<<32),
-      reale(-16774LL,495538LL<<32),reale(22364LL,737384LL<<32),
-      reale(-24872LL,951710LL<<32),reale(21929LL,367284LL<<32),
-      reale(-12959LL,783882LL<<32),reale(3525LL,0x682b5cLL<<28),
+      // C4[15], coeff of eps^16, polynomial in n of order 10
+      real(-0x571bf678LL<<32),reale(3304LL,556556LL<<32),
+      reale(-6522LL,32202LL<<36),reale(10722LL,907188LL<<32),
+      reale(-14619LL,139704LL<<32),reale(16325LL,39196LL<<32),
+      reale(-14591LL,8133LL<<36),reale(10019LL,388548LL<<32),
+      reale(-4926LL,724968LL<<32),real(0x5f48012cLL<<32),
+      real(-0xdc5682b5cLL<<24),reale(0xb3b3dfLL,0xb2a11e67032bbLL),
+      // C4[15], coeff of eps^15, polynomial in n of order 11
+      real(-0x490f31dLL<<32),real(0x118ff5d2LL<<32),real(-0x37d9274fLL<<32),
+      reale(2382LL,900648LL<<32),reale(-5378LL,933983LL<<32),
+      reale(10315LL,284030LL<<32),reale(-16819LL,653869LL<<32),
+      reale(23142LL,90132LL<<32),reale(-26357LL,771163LL<<32),
+      reale(23629LL,791082LL<<32),reale(-14102LL,390441LL<<32),
+      reale(3855LL,0xe9ef6caLL<<24),reale(0x21b1b9fLL,0x17e35b3509831LL),
+      // C4[16], coeff of eps^26, polynomial in n of order 0
+      real(-22951LL<<32),reale(14038LL,0xf79362a6f2da9LL),
+      // C4[16], coeff of eps^25, polynomial in n of order 1
+      real(-72136LL<<32),real(38520LL<<28),reale(9206LL,0xf354c01a236f3LL),
+      // C4[16], coeff of eps^24, polynomial in n of order 2
+      real(0x117dcfLL<<36),real(0x6fd5b8LL<<32),real(-0x57f207LL<<32),
+      reale(0x1e3466LL,0x5c2d55f3c2615LL),
+      // C4[16], coeff of eps^23, polynomial in n of order 3
+      real(-0x74594b8LL<<32),real(0x51af5fLL<<36),real(-0x1118be8LL<<32),
+      real(-0x2895a8LL<<28),reale(0x1e3466LL,0x5c2d55f3c2615LL),
+      // C4[16], coeff of eps^22, polynomial in n of order 4
+      reale(-2281LL,39380LL<<36),real(-0x4b4b50dLL<<36),real(0x1776d4aLL<<36),
+      real(0x1b7e671LL<<36),real(-0xcc2c56bLL<<32),
       reale(0x23de398LL,0xd75d61176d38fLL),
-      // _C4x[313]
-      reale(11351LL,122104LL<<32),reale(-21032LL,24332LL<<36),
-      reale(32809LL,309896LL<<32),reale(-42827LL,63737LL<<36),
-      reale(46156LL,986392LL<<32),reale(-40103LL,50694LL<<36),
-      reale(26942LL,134824LL<<32),reale(-13032LL,53203LL<<36),
-      reale(3987LL,162104LL<<32),real(-0x23bb00708LL<<28),
+      // C4[16], coeff of eps^21, polynomial in n of order 5
+      reale(3604LL,321208LL<<32),reale(4989LL,51182LL<<36),
+      reale(-5767LL,0xf5608LL<<32),reale(2335LL,38023LL<<36),
+      real(-0x118945a8LL<<32),real(-0x23321c28LL<<28),
       reale(0x23de398LL,0xd75d61176d38fLL),
-      // _C4x[314]
-      reale(51956LL,28024LL<<36),reale(-52001LL,245LL<<36),
-      reale(36995LL,60922LL<<36),reale(-12344LL,10831LL<<36),
-      reale(-9829LL,57276LL<<36),reale(19743LL,35337LL<<36),
-      reale(-17125LL,23806LL<<36),reale(8752LL,19043LL<<36),
-      reale(-2082LL,493631LL<<32),reale(0x23de398LL,0xd75d61176d38fLL),
-      // _C4x[315]
+      // C4[16], coeff of eps^20, polynomial in n of order 6
+      reale(-28604LL,48266LL<<36),reale(5695LL,63155LL<<36),
+      reale(4892LL,56156LL<<36),reale(-3092LL,6917LL<<36),
+      real(-0x3777fd2LL<<36),real(0x5fd58d7LL<<36),real(-0x1e0959d4LL<<32),
+      reale(0x23de398LL,0xd75d61176d38fLL),
+      // C4[16], coeff of eps^19, polynomial in n of order 7
       real(-0x1511e3e8LL<<32),reale(28752LL,63675LL<<36),
       reale(-37203LL,472264LL<<32),reale(26902LL,36338LL<<36),
       reale(-11513LL,203384LL<<32),reale(2229LL,59753LL<<36),
       real(0xc947b28LL<<32),real(-0x7fa337d8LL<<28),
       reale(0x23de398LL,0xd75d61176d38fLL),
-      // _C4x[316]
-      reale(-28604LL,48266LL<<36),reale(5695LL,63155LL<<36),
-      reale(4892LL,56156LL<<36),reale(-3092LL,6917LL<<36),
-      real(-0x3777fd2LL<<36),real(0x5fd58d7LL<<36),real(-0x1e0959d4LL<<32),
-      reale(0x23de398LL,0xd75d61176d38fLL),
-      // _C4x[317]
-      reale(3604LL,321208LL<<32),reale(4989LL,51182LL<<36),
-      reale(-5767LL,0xf5608LL<<32),reale(2335LL,38023LL<<36),
-      real(-0x118945a8LL<<32),real(-0x23321c28LL<<28),
+      // C4[16], coeff of eps^18, polynomial in n of order 8
+      reale(51956LL,28024LL<<36),reale(-52001LL,245LL<<36),
+      reale(36995LL,60922LL<<36),reale(-12344LL,10831LL<<36),
+      reale(-9829LL,57276LL<<36),reale(19743LL,35337LL<<36),
+      reale(-17125LL,23806LL<<36),reale(8752LL,19043LL<<36),
+      reale(-2082LL,493631LL<<32),reale(0x23de398LL,0xd75d61176d38fLL),
+      // C4[16], coeff of eps^17, polynomial in n of order 9
+      reale(11351LL,122104LL<<32),reale(-21032LL,24332LL<<36),
+      reale(32809LL,309896LL<<32),reale(-42827LL,63737LL<<36),
+      reale(46156LL,986392LL<<32),reale(-40103LL,50694LL<<36),
+      reale(26942LL,134824LL<<32),reale(-13032LL,53203LL<<36),
+      reale(3987LL,162104LL<<32),real(-0x23bb00708LL<<28),
       reale(0x23de398LL,0xd75d61176d38fLL),
-      // _C4x[318]
-      reale(-2281LL,39380LL<<36),real(-0x4b4b50dLL<<36),real(0x1776d4aLL<<36),
-      real(0x1b7e671LL<<36),real(-0xcc2c56bLL<<32),
+      // C4[16], coeff of eps^16, polynomial in n of order 10
+      real(0x17e28184LL<<32),real(-0x458c00a6LL<<32),reale(2759LL,6541LL<<36),
+      reale(-5864LL,957254LL<<32),reale(10706LL,531484LL<<32),
+      reale(-16774LL,495538LL<<32),reale(22364LL,737384LL<<32),
+      reale(-24872LL,951710LL<<32),reale(21929LL,367284LL<<32),
+      reale(-12959LL,783882LL<<32),reale(3525LL,0x682b5cLL<<28),
       reale(0x23de398LL,0xd75d61176d38fLL),
-      // _C4x[319]
-      real(-0x74594b8LL<<32),real(0x51af5fLL<<36),real(-0x1118be8LL<<32),
-      real(-0x2895a8LL<<28),reale(0x1e3466LL,0x5c2d55f3c2615LL),
-      // _C4x[320]
-      real(0x117dcfLL<<36),real(0x6fd5b8LL<<32),real(-0x57f207LL<<32),
-      reale(0x1e3466LL,0x5c2d55f3c2615LL),
-      // _C4x[321]
-      real(-72136LL<<32),real(38520LL<<28),reale(9206LL,0xf354c01a236f3LL),
-      // _C4x[322]
-      real(-22951LL<<32),reale(14038LL,0xf79362a6f2da9LL),
-      // _C4x[323]
-      real(-0x53db06e8LL<<32),reale(3123LL,33372LL<<36),
-      reale(-6298LL,57448LL<<32),reale(11012LL,26677LL<<36),
-      reale(-16655LL,454840LL<<32),reale(21593LL,33198LL<<36),
-      reale(-23510LL,986120LL<<32),reale(20422LL,743LL<<36),
-      reale(-11962LL,562264LL<<32),reale(3239LL,0x9027d8LL<<28),
+      // C4[17], coeff of eps^26, polynomial in n of order 0
+      real(1LL<<32),real(0x62a61c3e4dd975LL),
+      // C4[17], coeff of eps^25, polynomial in n of order 1
+      real(32456LL<<32),real(-360120LL<<28),reale(8569LL,0x3d59f665e75a3LL),
+      // C4[17], coeff of eps^24, polynomial in n of order 2
+      real(43463LL<<40),real(-135160LL<<36),real(-45580LL<<32),
+      reale(299923LL,0x634cafeea1549LL),
+      // C4[17], coeff of eps^23, polynomial in n of order 3
+      real(-0x97b2e8LL<<32),real(138325LL<<36),real(0x353008LL<<32),
+      real(-0x171e178LL<<28),reale(299923LL,0x634cafeea1549LL),
+      // C4[17], coeff of eps^22, polynomial in n of order 4
+      real(0x11914e8LL<<36),real(-0x1198806LL<<36),real(0x6aad14LL<<36),
+      real(-744226LL<<36),real(-0x1dbcbfLL<<32),
+      reale(0x200907LL,0xb718cf86694ffLL),
+      // C4[17], coeff of eps^21, polynomial in n of order 5
+      reale(2996LL,558104LL<<32),reale(5105LL,60614LL<<36),
+      reale(-2617LL,864168LL<<32),real(-0x40606cdLL<<36),
+      real(0x5b76e438LL<<32),real(-0x1bd1b2248LL<<28),
       reale(0x260ab92LL,0x96d766f9d0eedLL),
-      // _C4x[324]
-      reale(-22253LL,3173LL<<40),reale(33139LL,4898LL<<36),
-      reale(-41619LL,37916LL<<36),reale(43458LL,60582LL<<36),
-      reale(-36815LL,53288LL<<36),reale(24253LL,7690LL<<36),
-      reale(-11562LL,54708LL<<36),reale(3500LL,60046LL<<36),
-      real(-0x1f264f27LL<<32),reale(0x260ab92LL,0x96d766f9d0eedLL),
-      // _C4x[325]
+      // C4[17], coeff of eps^20, polynomial in n of order 6
+      reale(30327LL,10344LL<<36),reale(-35085LL,52340LL<<36),
+      reale(23968LL,2311LL<<40),reale(-9777LL,37164LL<<36),
+      real(0x6c06b78LL<<36),real(0xeb3424LL<<36),real(-0x7509546LL<<32),
+      reale(0x260ab92LL,0x96d766f9d0eedLL),
+      // C4[17], coeff of eps^19, polynomial in n of order 7
       reale(-47758LL,665464LL<<32),reale(31664LL,61447LL<<36),
       reale(-8327LL,461032LL<<32),reale(-11213LL,30202LL<<36),
       reale(19076LL,191320LL<<32),reale(-15917LL,2861LL<<36),
       reale(8026LL,341192LL<<32),real(-0x76e6858b8LL<<28),
       reale(0x260ab92LL,0x96d766f9d0eedLL),
-      // _C4x[326]
-      reale(30327LL,10344LL<<36),reale(-35085LL,52340LL<<36),
-      reale(23968LL,2311LL<<40),reale(-9777LL,37164LL<<36),
-      real(0x6c06b78LL<<36),real(0xeb3424LL<<36),real(-0x7509546LL<<32),
-      reale(0x260ab92LL,0x96d766f9d0eedLL),
-      // _C4x[327]
-      reale(2996LL,558104LL<<32),reale(5105LL,60614LL<<36),
-      reale(-2617LL,864168LL<<32),real(-0x40606cdLL<<36),
-      real(0x5b76e438LL<<32),real(-0x1bd1b2248LL<<28),
+      // C4[17], coeff of eps^18, polynomial in n of order 8
+      reale(-22253LL,3173LL<<40),reale(33139LL,4898LL<<36),
+      reale(-41619LL,37916LL<<36),reale(43458LL,60582LL<<36),
+      reale(-36815LL,53288LL<<36),reale(24253LL,7690LL<<36),
+      reale(-11562LL,54708LL<<36),reale(3500LL,60046LL<<36),
+      real(-0x1f264f27LL<<32),reale(0x260ab92LL,0x96d766f9d0eedLL),
+      // C4[17], coeff of eps^17, polynomial in n of order 9
+      real(-0x53db06e8LL<<32),reale(3123LL,33372LL<<36),
+      reale(-6298LL,57448LL<<32),reale(11012LL,26677LL<<36),
+      reale(-16655LL,454840LL<<32),reale(21593LL,33198LL<<36),
+      reale(-23510LL,986120LL<<32),reale(20422LL,743LL<<36),
+      reale(-11962LL,562264LL<<32),reale(3239LL,0x9027d8LL<<28),
       reale(0x260ab92LL,0x96d766f9d0eedLL),
-      // _C4x[328]
-      real(0x11914e8LL<<36),real(-0x1198806LL<<36),real(0x6aad14LL<<36),
-      real(-744226LL<<36),real(-0x1dbcbfLL<<32),
-      reale(0x200907LL,0xb718cf86694ffLL),
-      // _C4x[329]
-      real(-0x97b2e8LL<<32),real(138325LL<<36),real(0x353008LL<<32),
-      real(-0x171e178LL<<28),reale(299923LL,0x634cafeea1549LL),
-      // _C4x[330]
-      real(43463LL<<40),real(-135160LL<<36),real(-45580LL<<32),
-      reale(299923LL,0x634cafeea1549LL),
-      // _C4x[331]
-      real(32456LL<<32),real(-360120LL<<28),reale(8569LL,0x3d59f665e75a3LL),
-      // _C4x[332]
-      real(1LL<<32),real(0x62a61c3e4dd975LL),
-      // _C4x[333]
-      reale(3471LL,43464LL<<36),reale(-6683LL,3167LL<<36),
-      reale(11244LL,21718LL<<36),reale(-16479LL,15629LL<<36),
-      reale(20837LL,43236LL<<36),reale(-22259LL,38715LL<<36),
-      reale(19078LL,41714LL<<36),reale(-11087LL,50153LL<<36),
-      reale(2990LL,383722LL<<32),reale(0x283738cLL,0x56516cdc34a4bLL),
-      // _C4x[334]
-      reale(11070LL,49036LL<<36),reale(-13432LL,16696LL<<36),
-      reale(13633LL,18532LL<<36),reale(-11289LL,1325LL<<40),
-      reale(7306LL,46652LL<<36),reale(-3438LL,26728LL<<36),
-      real(0x4074714LL<<36),real(-0x91df1b4LL<<32),
-      reale(0xd67bd9LL,0x721b244966e19LL),
-      // _C4x[335]
-      reale(26896LL,20636LL<<36),reale(-4988LL,47778LL<<36),
-      reale(-12194LL,14952LL<<36),reale(18360LL,53550LL<<36),
-      reale(-14826LL,30772LL<<36),reale(7390LL,53946LL<<36),
-      real(-0x6d310d54LL<<32),reale(0x283738cLL,0x56516cdc34a4bLL),
-      // _C4x[336]
-      real(-0x6c2614cLL<<36),real(0x463f91LL<<40),real(-0x1b60794LL<<36),
-      real(0x460f88LL<<36),real(882980LL<<36),real(-0x5a7684LL<<32),
+      // C4[18], coeff of eps^26, polynomial in n of order 0
+      real(-112174LL<<32),reale(47221LL,0xfaefc0318df67LL),
+      // C4[18], coeff of eps^25, polynomial in n of order 1
+      real(-159848LL<<36),real(-86040LL<<32),reale(443886LL,0x9d340e9e9cd95LL),
+      // C4[18], coeff of eps^24, polynomial in n of order 2
+      real(673240LL<<36),real(0x1731acLL<<36),real(-0x9878d8LL<<32),
       reale(0x21dda9LL,0x12044919103e9LL),
-      // _C4x[337]
+      // C4[18], coeff of eps^23, polynomial in n of order 3
+      real(-0x1042158LL<<36),real(379583LL<<40),real(-565192LL<<36),
+      real(-0x1d5db8LL<<32),reale(0x21dda9LL,0x12044919103e9LL),
+      // C4[18], coeff of eps^22, polynomial in n of order 4
       real(0x10d9e84LL<<36),real(-0x72a70dLL<<36),real(-0x3bd63eLL<<36),
       real(0x496dd1LL<<36),real(-0x15c2fa6LL<<32),
       reale(0x21dda9LL,0x12044919103e9LL),
-      // _C4x[338]
-      real(-0x1042158LL<<36),real(379583LL<<40),real(-565192LL<<36),
-      real(-0x1d5db8LL<<32),reale(0x21dda9LL,0x12044919103e9LL),
-      // _C4x[339]
-      real(673240LL<<36),real(0x1731acLL<<36),real(-0x9878d8LL<<32),
+      // C4[18], coeff of eps^21, polynomial in n of order 5
+      real(-0x6c2614cLL<<36),real(0x463f91LL<<40),real(-0x1b60794LL<<36),
+      real(0x460f88LL<<36),real(882980LL<<36),real(-0x5a7684LL<<32),
       reale(0x21dda9LL,0x12044919103e9LL),
-      // _C4x[340]
-      real(-159848LL<<36),real(-86040LL<<32),reale(443886LL,0x9d340e9e9cd95LL),
-      // _C4x[341]
-      real(-112174LL<<32),reale(47221LL,0xfaefc0318df67LL),
-      // _C4x[342]
-      real(-0x1717fa8LL<<36),real(0x258a9bLL<<40),real(-0x357c878LL<<36),
-      real(0x4220f2LL<<40),real(-0x456f648LL<<36),real(0x3acd09LL<<40),
-      real(-0x21ec718LL<<36),real(0x91df1b4LL<<32),
+      // C4[18], coeff of eps^20, polynomial in n of order 6
+      reale(26896LL,20636LL<<36),reale(-4988LL,47778LL<<36),
+      reale(-12194LL,14952LL<<36),reale(18360LL,53550LL<<36),
+      reale(-14826LL,30772LL<<36),reale(7390LL,53946LL<<36),
+      real(-0x6d310d54LL<<32),reale(0x283738cLL,0x56516cdc34a4bLL),
+      // C4[18], coeff of eps^19, polynomial in n of order 7
+      reale(11070LL,49036LL<<36),reale(-13432LL,16696LL<<36),
+      reale(13633LL,18532LL<<36),reale(-11289LL,1325LL<<40),
+      reale(7306LL,46652LL<<36),reale(-3438LL,26728LL<<36),
+      real(0x4074714LL<<36),real(-0x91df1b4LL<<32),
+      reale(0xd67bd9LL,0x721b244966e19LL),
+      // C4[18], coeff of eps^18, polynomial in n of order 8
+      reale(3471LL,43464LL<<36),reale(-6683LL,3167LL<<36),
+      reale(11244LL,21718LL<<36),reale(-16479LL,15629LL<<36),
+      reale(20837LL,43236LL<<36),reale(-22259LL,38715LL<<36),
+      reale(19078LL,41714LL<<36),reale(-11087LL,50153LL<<36),
+      reale(2990LL,383722LL<<32),reale(0x283738cLL,0x56516cdc34a4bLL),
+      // C4[19], coeff of eps^26, polynomial in n of order 0
+      real(-226LL<<36),reale(16591LL,0x81ae2ec54d8dfLL),
+      // C4[19], coeff of eps^25, polynomial in n of order 1
+      real(94099LL<<40),real(-0x8fd608LL<<32),
       reale(0x23b24aLL,0x6cefc2abb72d3LL),
-      // _C4x[343]
-      real(-0x7ff89cLL<<40),real(0x7e9b22LL<<40),real(-0x66b1a8LL<<40),
-      real(0x4169eeLL<<40),real(-0x1e6934LL<<40),real(592858LL<<40),
-      real(-0x145aaa8LL<<32),reale(0x23b24aLL,0x6cefc2abb72d3LL),
-      // _C4x[344]
-      real(-0x74ab18LL<<36),real(-0x2a50f6LL<<40),real(0x39fb358LL<<36),
-      real(-0x2d852bLL<<40),real(0x1678ac8LL<<36),real(-0x54cf1bcLL<<32),
+      // C4[19], coeff of eps^24, polynomial in n of order 2
+      real(330104LL<<40),real(-26332LL<<40),real(-117501LL<<36),
       reale(0x23b24aLL,0x6cefc2abb72d3LL),
-      // _C4x[345]
-      real(256484LL<<44),real(-95676LL<<44),real(13674LL<<44),real(3604LL<<44),
-      real(-340578LL<<36),reale(0x23b24aLL,0x6cefc2abb72d3LL),
-      // _C4x[346]
+      // C4[19], coeff of eps^23, polynomial in n of order 3
       real(-384159LL<<40),real(-261954LL<<40),real(286571LL<<40),
       real(-0x14458c8LL<<32),reale(0x23b24aLL,0x6cefc2abb72d3LL),
-      // _C4x[347]
-      real(330104LL<<40),real(-26332LL<<40),real(-117501LL<<36),
+      // C4[19], coeff of eps^22, polynomial in n of order 4
+      real(256484LL<<44),real(-95676LL<<44),real(13674LL<<44),real(3604LL<<44),
+      real(-340578LL<<36),reale(0x23b24aLL,0x6cefc2abb72d3LL),
+      // C4[19], coeff of eps^21, polynomial in n of order 5
+      real(-0x74ab18LL<<36),real(-0x2a50f6LL<<40),real(0x39fb358LL<<36),
+      real(-0x2d852bLL<<40),real(0x1678ac8LL<<36),real(-0x54cf1bcLL<<32),
       reale(0x23b24aLL,0x6cefc2abb72d3LL),
-      // _C4x[348]
-      real(94099LL<<40),real(-0x8fd608LL<<32),
+      // C4[19], coeff of eps^20, polynomial in n of order 6
+      real(-0x7ff89cLL<<40),real(0x7e9b22LL<<40),real(-0x66b1a8LL<<40),
+      real(0x4169eeLL<<40),real(-0x1e6934LL<<40),real(592858LL<<40),
+      real(-0x145aaa8LL<<32),reale(0x23b24aLL,0x6cefc2abb72d3LL),
+      // C4[19], coeff of eps^19, polynomial in n of order 7
+      real(-0x1717fa8LL<<36),real(0x258a9bLL<<40),real(-0x357c878LL<<36),
+      real(0x4220f2LL<<40),real(-0x456f648LL<<36),real(0x3acd09LL<<40),
+      real(-0x21ec718LL<<36),real(0x91df1b4LL<<32),
       reale(0x23b24aLL,0x6cefc2abb72d3LL),
-      // _C4x[349]
-      real(-226LL<<36),reale(16591LL,0x81ae2ec54d8dfLL),
-      // _C4x[350]
-      real(0x25ea6eLL<<40),real(-0x34a927LL<<40),real(0x3fcb74LL<<40),
-      real(-0x41f331LL<<40),real(0x373d7aLL<<40),real(-0x1fa97bLL<<40),
-      real(0x87b1c6LL<<36),reale(0x2586ebLL,0xc7db3c3e5e1bdLL),
-      // _C4x[351]
-      real(0x7729ecLL<<40),real(-388557LL<<44),real(0x3b8cf4LL<<40),
-      real(-0x1b62e8LL<<40),real(529788LL<<40),real(-0x1217b4LL<<36),
+      // C4[20], coeff of eps^26, polynomial in n of order 0
+      real(-34781LL<<40),reale(0x2586ebLL,0xc7db3c3e5e1bdLL),
+      // C4[20], coeff of eps^25, polynomial in n of order 1
+      real(-19084LL<<40),real(-113916LL<<36),
       reale(0x2586ebLL,0xc7db3c3e5e1bdLL),
-      // _C4x[352]
-      real(-179129LL<<44),real(0x3790d4LL<<40),real(-0x2a93c8LL<<40),
-      real(0x14d79cLL<<40),real(-321657LL<<40),
+      // C4[20], coeff of eps^24, polynomial in n of order 2
+      real(-273868LL<<40),real(273002LL<<40),real(-0x12ef04LL<<36),
       reale(0x2586ebLL,0xc7db3c3e5e1bdLL),
-      // _C4x[353]
+      // C4[20], coeff of eps^23, polynomial in n of order 3
       real(-0x13f854LL<<40),real(164264LL<<40),real(58724LL<<40),
       real(-313548LL<<36),reale(0x2586ebLL,0xc7db3c3e5e1bdLL),
-      // _C4x[354]
-      real(-273868LL<<40),real(273002LL<<40),real(-0x12ef04LL<<36),
+      // C4[20], coeff of eps^22, polynomial in n of order 4
+      real(-179129LL<<44),real(0x3790d4LL<<40),real(-0x2a93c8LL<<40),
+      real(0x14d79cLL<<40),real(-321657LL<<40),
       reale(0x2586ebLL,0xc7db3c3e5e1bdLL),
-      // _C4x[355]
-      real(-19084LL<<40),real(-113916LL<<36),
+      // C4[20], coeff of eps^21, polynomial in n of order 5
+      real(0x7729ecLL<<40),real(-388557LL<<44),real(0x3b8cf4LL<<40),
+      real(-0x1b62e8LL<<40),real(529788LL<<40),real(-0x1217b4LL<<36),
       reale(0x2586ebLL,0xc7db3c3e5e1bdLL),
-      // _C4x[356]
-      real(-34781LL<<40),reale(0x2586ebLL,0xc7db3c3e5e1bdLL),
-      // _C4x[357]
-      real(-0x33c20cLL<<40),real(252109LL<<44),real(-0x3ebbd4LL<<40),
-      real(0x3405e8LL<<40),real(-0x1da41cLL<<40),real(0x7ea5ecLL<<36),
+      // C4[20], coeff of eps^20, polynomial in n of order 6
+      real(0x25ea6eLL<<40),real(-0x34a927LL<<40),real(0x3fcb74LL<<40),
+      real(-0x41f331LL<<40),real(0x373d7aLL<<40),real(-0x1fa97bLL<<40),
+      real(0x87b1c6LL<<36),reale(0x2586ebLL,0xc7db3c3e5e1bdLL),
+      // C4[21], coeff of eps^26, polynomial in n of order 0
+      real(-1592LL<<36),reale(37381LL,0xc16e795c129fbLL),
+      // C4[21], coeff of eps^25, polynomial in n of order 1
+      real(260108LL<<40),real(-0x11ba5cLL<<36),
       reale(0x275b8dLL,0x22c6b5d1050a7LL),
-      // _C4x[358]
-      real(-119884LL<<44),real(74261LL<<44),real(-33814LL<<44),
-      real(9911LL<<44),real(-353192LL<<36),reale(859780LL,0x60ece745ac58dLL),
-      // _C4x[359]
-      real(0x353154LL<<40),real(-0x27e7e8LL<<40),real(0x13649cLL<<40),
-      real(-0x48f9acLL<<36),reale(0x275b8dLL,0x22c6b5d1050a7LL),
-      // _C4x[360]
+      // C4[21], coeff of eps^24, polynomial in n of order 2
       real(7532LL<<44),real(3674LL<<44),real(-18073LL<<40),
       reale(0x275b8dLL,0x22c6b5d1050a7LL),
-      // _C4x[361]
-      real(260108LL<<40),real(-0x11ba5cLL<<36),
+      // C4[21], coeff of eps^23, polynomial in n of order 3
+      real(0x353154LL<<40),real(-0x27e7e8LL<<40),real(0x13649cLL<<40),
+      real(-0x48f9acLL<<36),reale(0x275b8dLL,0x22c6b5d1050a7LL),
+      // C4[21], coeff of eps^22, polynomial in n of order 4
+      real(-119884LL<<44),real(74261LL<<44),real(-33814LL<<44),
+      real(9911LL<<44),real(-353192LL<<36),reale(859780LL,0x60ece745ac58dLL),
+      // C4[21], coeff of eps^21, polynomial in n of order 5
+      real(-0x33c20cLL<<40),real(252109LL<<44),real(-0x3ebbd4LL<<40),
+      real(0x3405e8LL<<40),real(-0x1da41cLL<<40),real(0x7ea5ecLL<<36),
       reale(0x275b8dLL,0x22c6b5d1050a7LL),
-      // _C4x[362]
-      real(-1592LL<<36),reale(37381LL,0xc16e795c129fbLL),
-      // _C4x[363]
-      real(243294LL<<44),real(-0x3bc298LL<<40),real(201135LL<<44),
-      real(-0x1bd388LL<<40),real(485639LL<<40),
+      // C4[22], coeff of eps^26, polynomial in n of order 0
+      real(-2963LL<<40),reale(117361LL,0x5360ca6881e97LL),
+      // C4[22], coeff of eps^25, polynomial in n of order 1
+      real(158LL<<44),real(-726LL<<40),reale(117361LL,0x5360ca6881e97LL),
+      // C4[22], coeff of eps^24, polynomial in n of order 2
+      real(-153502LL<<44),real(74129LL<<44),real(-278674LL<<40),
       reale(0x29302eLL,0x7db22f63abf91LL),
-      // _C4x[364]
+      // C4[22], coeff of eps^23, polynomial in n of order 3
       real(204102LL<<44),real(-92092LL<<44),real(26818LL<<44),
       real(-59466LL<<40),reale(0x29302eLL,0x7db22f63abf91LL),
-      // _C4x[365]
-      real(-153502LL<<44),real(74129LL<<44),real(-278674LL<<40),
+      // C4[22], coeff of eps^22, polynomial in n of order 4
+      real(243294LL<<44),real(-0x3bc298LL<<40),real(201135LL<<44),
+      real(-0x1bd388LL<<40),real(485639LL<<40),
       reale(0x29302eLL,0x7db22f63abf91LL),
-      // _C4x[366]
-      real(158LL<<44),real(-726LL<<40),reale(117361LL,0x5360ca6881e97LL),
-      // _C4x[367]
-      real(-2963LL<<40),reale(117361LL,0x5360ca6881e97LL),
-      // _C4x[368]
-      real(-10152LL<<44),real(517LL<<48),real(-4664LL<<44),real(19822LL<<40),
-      reale(122577LL,0x627628bccbf3dLL),
-      // _C4x[369]
+      // C4[23], coeff of eps^26, polynomial in n of order 0
+      real(-2LL<<44),reale(5837LL,0x4b04b152e489LL),
+      // C4[23], coeff of eps^25, polynomial in n of order 1
+      real(3016LL<<44),real(-11330LL<<40),reale(122577LL,0x627628bccbf3dLL),
+      // C4[23], coeff of eps^24, polynomial in n of order 2
       real(-228LL<<48),real(66LL<<48),real(-2332LL<<40),
       reale(122577LL,0x627628bccbf3dLL),
-      // _C4x[370]
-      real(3016LL<<44),real(-11330LL<<40),reale(122577LL,0x627628bccbf3dLL),
-      // _C4x[371]
-      real(-2LL<<44),reale(5837LL,0x4b04b152e489LL),
-      // _C4x[372]
+      // C4[23], coeff of eps^23, polynomial in n of order 3
+      real(-10152LL<<44),real(517LL<<48),real(-4664LL<<44),real(19822LL<<40),
+      reale(122577LL,0x627628bccbf3dLL),
+      // C4[24], coeff of eps^26, polynomial in n of order 0
+      real(-664LL<<44),reale(127793LL,0x718b871115fe3LL),
+      // C4[24], coeff of eps^25, polynomial in n of order 1
+      real(20LL<<48),real(-44LL<<44),reale(42597LL,0xd083d7b05caa1LL),
+      // C4[24], coeff of eps^24, polynomial in n of order 2
       real(490LL<<48),real(-275LL<<48),real(1166LL<<44),
       reale(127793LL,0x718b871115fe3LL),
-      // _C4x[373]
-      real(20LL<<48),real(-44LL<<44),reale(42597LL,0xd083d7b05caa1LL),
-      // _C4x[374]
-      real(-664LL<<44),reale(127793LL,0x718b871115fe3LL),
-      // _C4x[375]
-      real(-52LL<<48),real(220LL<<44),reale(26601LL,0xe6869447799b5LL),
-      // _C4x[376]
+      // C4[25], coeff of eps^26, polynomial in n of order 0
       real(-8LL<<44),reale(8867LL,0x4cd786c27dde7LL),
-      // _C4x[377]
+      // C4[25], coeff of eps^25, polynomial in n of order 1
+      real(-52LL<<48),real(220LL<<44),reale(26601LL,0xe6869447799b5LL),
+      // C4[26], coeff of eps^26, polynomial in n of order 0
       real(1LL<<48),reale(2126LL,0x8c0e9e949456fLL),
     };
 #elif GEOGRAPHICLIB_GEODESICEXACT_ORDER == 30
     static const real coeff[] = {
-      // _C4x[0]
-      reale(42171LL,0xbca3d5a569b4LL),reale(46862LL,0xd0a41cdef9cf0LL),
-      reale(52277LL,0xa2d5316ac1b2cLL),reale(58560LL,0x6f94d669a7a28LL),
-      reale(65892LL,0x788629d238da4LL),reale(74502LL,0x6b99bdf690d60LL),
-      reale(84681LL,0x87b277eadbb1cLL),reale(96804LL,0x8c76c6701c898LL),
-      reale(111359LL,0x1427f62cd3d94LL),reale(128987LL,0x59921e2221dd0LL),
-      reale(150546LL,0xaa0136eb20f0cLL),reale(177198LL,0x7742592373f08LL),
-      reale(210542LL,0x4360b9bd64984LL),reale(252821LL,0x8a8c09196de40LL),
-      reale(307248LL,0x66986780ae6fcLL),reale(378530LL,0x79d0ac77ed78LL),
-      reale(473750LL,0x5114d83948174LL),reale(603901LL,0x80acdb5cb5eb0LL),
-      reale(786661LL,0x2afc1dbf812ecLL),reale(0x100c26LL,0xda8ab314e3e8LL),
-      reale(0x16253eLL,0xc0ede2017b564LL),reale(0x1fcc74LL,0x5d3b51a63af20LL),
-      reale(0x300f2fLL,0xde5c8fc3f62dcLL),reale(0x4dcf72LL,0x12ae3e18b3258LL),
-      reale(0x8af270LL,0x45ee012c1b554LL),reale(0x1210283LL,0x20d0545bbdf90LL),
-      reale(0x31ac6e8LL,0x9a3ce7fc4a6ccLL),
-      reale(0x12a0a973LL,0x9d6d6fe9be8c8LL),
-      reale(-0x41325115LL,0x5900f84de5144LL),
-      reale(0xa2fdcab3LL,0xa17d933d434d6LL),
-      reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[1]
-      real(0xb4c355cd41c92c0LL),real(0xd8fea3a41cc7830LL),
-      real(0x1064f0c6b9a6ad20LL),real(0x13f7a88902ef1b10LL),
-      real(0x1884a414973fcb80LL),real(0x1e5fa2ae5243d7f0LL),
-      real(0x25fe0bb384ddd9e0LL),real(0x3006f6e3e0e25ad0LL),
-      real(0x3d6c2c13c34ec440LL),real(0x4f91f34825bd4fb0LL),
-      real(0x688ffb74f98676a0LL),reale(2233LL,0xdec33bb086290LL),
-      reale(3036LL,0xe53843c2cdd00LL),reale(4213LL,0xb13e1137e3f70LL),
-      reale(5984LL,0xaa1cca8abe360LL),reale(8732LL,0xb9880d6c69250LL),
-      reale(13152LL,0x1eadcfcfd75c0LL),reale(20566LL,0x4e1752c3c0730LL),
-      reale(33653LL,0xf4262a5798020LL),reale(58247LL,0x3a420e3524a10LL),
-      reale(108257LL,0x7934f39e3ee80LL),reale(221025LL,0xaccc1c0dc06f0LL),
-      reale(514222LL,0xffbb852faace0LL),reale(0x163b45LL,0x29e8a4070e9d0LL),
-      reale(0x58ed14LL,0xa7a2901c3a740LL),reale(0x3630789LL,0x6270fd1339eb0LL),
-      reale(-0x18d63745LL,0x2e18c01dac9a0LL),
-      reale(0x254152e7LL,0x3adadfd37d190LL),
-      reale(-0x104c9446LL,0xd6403e1379451LL),
-      reale(0x517ee559LL,0xd0bec99ea1a6bLL),
-      // _C4x[2]
-      real(0x52cac993243497e0LL),real(0x6437dfaee57b9d40LL),
-      real(0x7a3f9cad4d2f48a0LL),reale(2405LL,0xee01eec3f2b00LL),
-      reale(2986LL,0x65a22988df560LL),reale(3743LL,0xe8ba104bd58c0LL),
-      reale(4745LL,0x82561551e620LL),reale(6086LL,0xa7581d3ddee80LL),
-      reale(7912LL,0x8561dfdd262e0LL),reale(10440LL,0x7aa2aab74b440LL),
-      reale(14008LL,0x9b1a2c148b3a0LL),reale(19155LL,0xcd3b8407d7200LL),
-      reale(26767LL,0x9792b4f9c2060LL),reale(38350LL,0xb50c17257efc0LL),
-      reale(56574LL,0xaf828f4edf120LL),reale(86399LL,0xb1bc40483f580LL),
-      reale(137581LL,0x7d29442656de0LL),reale(230687LL,0xc9059cc5d4b40LL),
-      reale(413025LL,0xcba5d91bbdea0LL),reale(806439LL,0xbad85d457b900LL),
-      reale(0x1b1e4aLL,0xdb254a1088b60LL),reale(0x47db50LL,0x187f6563b06c0LL),
-      reale(0x10829aeLL,0x4c53d944cbc20LL),reale(0x9081419LL,0x682a2ddefc80LL),
-      reale(-0x39d631f0LL,0xf8c545a3fb8e0LL),
-      reale(0x4cc4aad4LL,0xb756685e76240LL),
-      reale(-0x18d63745LL,0x2e18c01dac9a0LL),
-      reale(-0x4a82a5dLL,0x18a4a405905ceLL),
+      // C4[0], coeff of eps^29, polynomial in n of order 0
+      real(3361LL),real(0x6803dafLL),
+      // C4[0], coeff of eps^28, polynomial in n of order 1
+      real(0x74154c0LL),real(0x1cc5554LL),real(0x269c465a0c9LL),
+      // C4[0], coeff of eps^27, polynomial in n of order 2
+      real(0x50de7a6e0LL),real(-0x282ec9e50LL),real(0x1dfb4ba1bLL),
+      real(0xbfa33c13e963LL),
+      // C4[0], coeff of eps^26, polynomial in n of order 3
+      real(0x738319564e0LL),real(-0x4c2475635c0LL),real(0x25d0be52da0LL),
+      real(0x95c020b74eLL),real(0xa0f21774b90225LL),
+      // C4[0], coeff of eps^25, polynomial in n of order 4
+      real(0x7a99ea0a52f40LL),real(-0x5a5f53e2c3b50LL),real(0x3b83d2c0c8da0LL),
+      real(-0x1d8a81cb5cc70LL),real(0x1605bd50459c1LL),
+      real(0x6fb2ae4757107d03LL),
+      // C4[0], coeff of eps^24, polynomial in n of order 5
+      real(0x2507d929b7f89580LL),real(-0x1ce7bf02c3715a00LL),
+      real(0x15463c23456c8680LL),real(-0xdfecff0050dfd00LL),
+      real(0x6f141ba97196780LL),real(0x1b71ab9c78b8b48LL),
+      reale(0x1734efLL,0x957266bcf90f9LL),
+      // C4[0], coeff of eps^23, polynomial in n of order 6
+      reale(5214LL,0xb54b8c26f5620LL),reale(-4203LL,0xb51a0a43406b0LL),
+      reale(3272LL,0xab988a50dfac0LL),reale(-2405LL,0x7b519f36184d0LL),
+      real(0x62be65b26227b760LL),real(-0x30f2645200be8b10LL),
+      real(0x2472ebc3f09ad327LL),reale(0x8fe1cdLL,0x6b5ee3606e93bLL),
+      // C4[0], coeff of eps^22, polynomial in n of order 7
+      reale(213221LL,0x21fe88963f0e0LL),reale(-174747LL,0xed01fc507d1c0LL),
+      reale(140344LL,0xd3dfad978d4a0LL),reale(-109010LL,0xec11fc2ea0e80LL),
+      reale(79932LL,0x9fff01479b460LL),reale(-52448LL,0xac156ba4a7b40LL),
+      reale(25976LL,0xa5a6ee990f820LL),reale(6403LL,0x87dc4a069efc6LL),
+      reale(0x104c9445LL,0x29bfc1ec86bafLL),
+      // C4[0], coeff of eps^21, polynomial in n of order 8
+      reale(0x171929LL,0x9572babb99080LL),reale(-0x130a9fLL,0x999f64e91edb0LL),
+      reale(0xf875cLL,0x228016ac84e60LL),reale(-814137LL,0x7913cecbaa210LL),
+      reale(630421LL,0xa88f591713840LL),reale(-461206LL,0xb780fdc49f070LL),
+      reale(302134LL,0x36942691aea20LL),reale(-149504LL,0xa5e26506b34d0LL),
+      reale(111169LL,0xb14ab93d4ba6dLL),reale(0x517ee559LL,0xd0bec99ea1a6bLL),
+      // C4[0], coeff of eps^20, polynomial in n of order 9
+      reale(0x2182aaLL,0xe1b60fe1808c0LL),reale(-0x1b814dLL,0xc4b4e3d5cbe00LL),
+      reale(0x168277LL,0x47b8ccbe8340LL),reale(-0x124018LL,0xd1d5bfe3b9680LL),
+      reale(952413LL,0x117e9e1fb75c0LL),reale(-734857LL,0xd1e60e1841f00LL),
+      reale(536171LL,0x8daa599335040LL),reale(-350595LL,0xf5a72b995c780LL),
+      reale(173293LL,0x7b19cdc9682c0LL),reale(42591LL,0xb005bdeb82d74LL),
+      reale(0x517ee559LL,0xd0bec99ea1a6bLL),
+      // C4[0], coeff of eps^19, polynomial in n of order 10
+      reale(0x97e43bLL,0x5ecc5371ca720LL),reale(-0x7a9e52LL,0x8336fa9a1f990LL),
+      reale(0x63879fLL,0x32e1ec30d1a80LL),reale(-0x50bd17LL,0xbe8d10d414f70LL),
+      reale(0x410187LL,0x65c388ed45de0LL),reale(-0x337b18LL,0xb259e1738fb50LL),
+      reale(0x278db9LL,0xcd194d02dbd40LL),reale(-0x1cc4daLL,0x5f7365df10930LL),
+      reale(0x12c554LL,0x4c527bc6a84a0LL),reale(-607280LL,0xdb291ae428510LL),
+      reale(450701LL,0xae98337b7d081LL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
+      // C4[0], coeff of eps^18, polynomial in n of order 11
+      reale(0xf6975bLL,0x85a3ec5761ce0LL),reale(-0xc010d4LL,0x6848083afa540LL),
+      reale(0x984538LL,0xa0e43863a93a0LL),reale(-0x79e439LL,0x3050a99fd8100LL),
+      reale(0x61d04aLL,0xbffc30c12660LL),reale(-0x4e16fdLL,0x26ce724b3cc0LL),
+      reale(0x3d6fb4LL,0x94c482b815d20LL),reale(-0x2ef71eLL,0x63b7f527ae080LL),
+      reale(0x220869LL,0x99db799d8bfe0LL),reale(-0x16260bLL,0x4fffa269a7440LL),
+      reale(715485LL,0xdbe6a2ef6d6a0LL),reale(175141LL,0x3547b8669b9beLL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[3]
-      reale(2481LL,0x8d2c27b46b620LL),reale(3034LL,0xe44720f3fdf90LL),
-      reale(3743LL,0xf82fc54a92780LL),reale(4662LL,0xb922ac44f6b70LL),
-      reale(5867LL,0xae02c805f08e0LL),reale(7469LL,0x40a687e9b4d50LL),
-      reale(9629LL,0xbb2099bca6640LL),reale(12592LL,0xa0727e14e5130LL),
-      reale(16731LL,0xdc4cfea134ba0LL),reale(22636LL,0xbf84f9dc44310LL),
-      reale(31263LL,0xfe99294d5c500LL),reale(44220LL,0x78f2e666feef0LL),
-      reale(64313LL,0xe77c1f84fde60LL),reale(96684LL,0x43c9282e120d0LL),
-      reale(151281LL,0x84eb0984fa3c0LL),reale(248729LL,0xa2c4a502aa4b0LL),
-      reale(435615LL,0xd80deb212120LL),reale(829647LL,0x194fc60e84690LL),
-      reale(0x1b1fd3LL,0x17dfea7bc6280LL),reale(0x459d83LL,0x417bb8824d270LL),
-      reale(0xf6d16eLL,0xd3a7db47373e0LL),reale(0x8183649LL,0xbb999e2601450LL),
-      reale(-0x312ee39aLL,0x57e9d33606140LL),
-      reale(0x3a455a48LL,0xd8c5ee7f4d830LL),
-      reale(-0x1373dc9LL,0xb547079d336a0LL),
-      reale(-0x19f739c8LL,0xd486bc1eea10LL),
-      reale(0x889a2ffLL,0xa8277df5ccab1LL),
+      // C4[0], coeff of eps^17, polynomial in n of order 12
+      reale(0x1cb2a29LL,0x8745c27487540LL),
+      reale(-0x14b5d21LL,0x85b44eb6a1e90LL),
+      reale(0xf9bc4eLL,0xd4e8bc19a0660LL),reale(-0xc155a7LL,0x6125f0a20d130LL),
+      reale(0x9808cfLL,0x5ae4f6d3c8380LL),reale(-0x785bd1LL,0xe6efcb8cc51d0LL),
+      reale(0x5f1741LL,0x96448488ef0a0LL),reale(-0x4a36bfLL,0xf983c38b4e470LL),
+      reale(0x386399LL,0x2e7ae0f4851c0LL),reale(-0x28ae09LL,0x1979b7873cd10LL),
+      reale(0x1a64cdLL,0xf881cba41aae0LL),reale(-851105LL,0x77702a4854fb0LL),
+      reale(629987LL,0x9ea5a19626943LL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
+      // C4[0], coeff of eps^16, polynomial in n of order 13
+      reale(0x4b83825LL,0x46beef62ca900LL),
+      reale(-0x2bd7055LL,0x7a5e627bdac00LL),
+      reale(0x1d50229LL,0x10d9a95bb4f00LL),
+      reale(-0x150fc0bLL,0x50c599a605a00LL),
+      reale(0xfc80d5LL,0x58583f22e9500LL),reale(-0xc1f541LL,0xc280e4e41c800LL),
+      reale(0x96e5ebLL,0xbbf5d84b2bb00LL),reale(-0x75aa16LL,0xc94e877623600LL),
+      reale(0x5aec67LL,0x73d1ebe040100LL),reale(-0x4492a4LL,0x5c8b5441e400LL),
+      reale(0x3133c5LL,0x29027e04ea700LL),reale(-0x1fce50LL,0x72881bd411200LL),
+      reale(0xf9dc9LL,0xbf113370eed00LL),reale(249103LL,0x93cdbdabe0fb0LL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[4]
-      reale(4244LL,0x3972351df5940LL),reale(5257LL,0xaa8f87b5d5600LL),
-      reale(6578LL,0xed6cb3b3fa2c0LL),reale(8324LL,0xb4008d853180LL),
-      reale(10662LL,0x703b07259b440LL),reale(13846LL,0x8f2f6ca125d00LL),
-      reale(18261LL,0x3a455b4269dc0LL),reale(24508LL,0x5045fb81ae880LL),
-      reale(33557LL,0x1b3e945f36f40LL),reale(47022LL,0x9499ec44e400LL),
-      reale(67699LL,0x7a940285938c0LL),reale(100662LL,0x403646e1e5f80LL),
-      reale(155637LL,0xf20897fb50a40LL),reale(252593LL,0x7106d86756b00LL),
-      reale(436178LL,0xe720d891ff3c0LL),reale(818051LL,0x1d79595b01680LL),
-      reale(0x1a4d3aLL,0xc365c92e70540LL),reale(0x424929LL,0xb055b91247200LL),
-      reale(0xe65c40LL,0xe96c54f834ec0LL),reale(0x762650fLL,0x435c586708d80LL),
-      reale(-0x2b88f1fbLL,0x72f827a11e040LL),
-      reale(0x3058f88aLL,0xd7ccf03d27900LL),
-      reale(0x3fc08ddLL,0xdd39a234bc9c0LL),
-      reale(-0x1850d3a6LL,0x298c984804480LL),
-      reale(0x5e7be5fLL,0x21cb91dfe1b40LL),reale(0xd8c1e2LL,0x589c3f44ce7acLL),
+      // C4[0], coeff of eps^15, polynomial in n of order 14
+      reale(0x5fc38f5LL,0x1c7e0d98777e0LL),
+      reale(-0xd242504LL,0xe693d58008810LL),
+      reale(0x4db8f74LL,0xcf48e14d7b2c0LL),
+      reale(-0x2cf9165LL,0x4b3864100f370LL),
+      reale(0x1df218dLL,0x3ade51fc905a0LL),
+      reale(-0x1565f09LL,0x9d37bba5014d0LL),
+      reale(0xfea394LL,0xb49b2cc64ec80LL),reale(-0xc19874LL,0xca5adb0f72830LL),
+      reale(0x946d46LL,0xc96eb1166e360LL),reale(-0x71439cLL,0xca8b236006990LL),
+      reale(0x54a228LL,0x3897621326640LL),reale(-0x3c5281LL,0x859e2dc8514f0LL),
+      reale(0x26d1abLL,0x942757fc8f120LL),reale(-0x130299LL,0xa0a61d1db6650LL),
+      reale(918672LL,0xb7e149f3f515dLL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
+      // C4[0], coeff of eps^14, polynomial in n of order 15
+      reale(-0x187266b0LL,0xcc121102522a0LL),
+      reale(0x17368ed6LL,0x4a8eb37cf8e40LL),
+      reale(0x61c9a2eLL,0xdf54e754057e0LL),
+      reale(-0xd993a81LL,0x66d710967b680LL),
+      reale(0x501f49bLL,0x8c476a1354120LL),
+      reale(-0x2e2cc70LL,0xf6b7949b50ec0LL),
+      reale(0x1e962b0LL,0xac5157de0d660LL),
+      reale(-0x15b3ea3LL,0x902c3e28e0f00LL),
+      reale(0xffbd98LL,0x75de552320fa0LL),reale(-0xbfb6ecLL,0x319a838152f40LL),
+      reale(0x8ff034LL,0xee7b325fde4e0LL),reale(-0x6a4b51LL,0x3f56268dce780LL),
+      reale(0x4b2142LL,0x7fe1a8c934e20LL),reale(-0x301411LL,0x35323a40bafc0LL),
+      reale(0x17780aLL,0xc6e75548f4360LL),reale(371250LL,0x9b28ca926da22LL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[5]
-      reale(7030LL,0x634f92bbfec80LL),reale(8852LL,0x183ea9c784b10LL),
-      reale(11280LL,0x864427e0ea420LL),reale(14569LL,0x4ed71f4155e30LL),
-      reale(19103LL,0x13b2c1ad2ffc0LL),reale(25480LL,0x35983eb20bf50LL),
-      reale(34659LL,0x18ad59c5f9360LL),reale(48227LL,0x95f2c0574270LL),
-      reale(68917LL,0x8c5b3ac32f300LL),reale(101660LL,0x272f49f96bb90LL),
-      reale(155850LL,0xbc628b339b2a0LL),reale(250657LL,0x122490d07feb0LL),
-      reale(428675LL,0x21f5a97506640LL),reale(795748LL,0x8d9dd2ee8dfd0LL),
-      reale(0x194e34LL,0x22b44d2c5a1e0LL),reale(0x3f078eLL,0x814b60cb632f0LL),
-      reale(0xd83f56LL,0xb8691b29bf980LL),reale(0x6d46e98LL,0x7599d8275cc10LL),
-      reale(-0x27781128LL,0xaa3ee984c0120LL),
-      reale(0x2a0ea364LL,0xf6219ee07f30LL),
-      reale(0x5c2da08LL,0xe42cfbbc64cc0LL),
-      reale(-0x163dd11bLL,0x272a56b2c2050LL),
-      reale(0x6b12295LL,0x704341a757060LL),
-      reale(-0x284b6d6LL,0x40a56b3358370LL),
-      reale(0x19455f9LL,0xea37274059c77LL),
+      // C4[0], coeff of eps^13, polynomial in n of order 16
+      reale(0x99ad32LL,0xbead2787bab00LL),reale(0x4a53514LL,0xc8037e807a610LL),
+      reale(-0x195498f9LL,0x6a3a755d543a0LL),
+      reale(0x182d7428LL,0xf37804095de30LL),
+      reale(0x63dbc55LL,0x2c34dddf07040LL),
+      reale(-0xe1b53e6LL,0x3f952bd85a450LL),
+      reale(0x52bcb89LL,0x36f6256b264e0LL),
+      reale(-0x2f71989LL,0x5bd35b3c86c70LL),
+      reale(0x1f3806cLL,0x1aa6eba145580LL),
+      reale(-0x15f24a2LL,0xbe1919f50aa90LL),
+      reale(0xff2864LL,0xa0e65eb557620LL),reale(-0xbb7477LL,0x8ed3ec76bd2b0LL),
+      reale(0x885218LL,0x44131ea6cfac0LL),reale(-0x5f538eLL,0x53b786fbc58d0LL),
+      reale(0x3c9287LL,0x8774cc7c1760LL),reale(-0x1d72cdLL,0xd58c69693b0f0LL),
+      reale(0x15971fLL,0x9f9bcb791811fLL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[6]
-      reale(11639LL,0x4298ebe4bc020LL),reale(14966LL,0xe9089607c0a40LL),
-      reale(19534LL,0x1996a62965260LL),reale(25928LL,0xdcaffa7bfcb80LL),
-      reale(35089LL,0x59fa64f7d88a0LL),reale(48563LL,0x32ed377221cc0LL),
-      reale(69004LL,0xe5c9403173ae0LL),reale(101181LL,0xf483b00105600LL),
-      reale(154143LL,0xf39432e434120LL),reale(246274LL,0xfc90899a3cf40LL),
-      reale(418255LL,0xdad9486cf7360LL),reale(770731LL,0xbf0321b55e080LL),
-      reale(0x185215LL,0xd61fe95ba9a0LL),reale(0x3c13b0LL,0x3820413b3e1c0LL),
-      reale(0xcc40bfLL,0xf48ca237dbbe0LL),reale(0x662046cLL,0x9d1b10f932b00LL),
-      reale(-0x245c984cLL,0x93e4d8ea58220LL),
-      reale(0x25a711c0LL,0xcac1d46451440LL),
-      reale(0x672d055LL,0xaf9fd1440d460LL),
-      reale(-0x147fa21bLL,0xfc84c3f4af580LL),
-      reale(0x6aea843LL,0x3a73d439f8aa0LL),
-      reale(-0x3292518LL,0xea2e8660a26c0LL),
-      reale(0x156a084LL,0x49a70d2177ce0LL),reale(0x457938LL,0x22f700960daaaLL),
+      // C4[0], coeff of eps^12, polynomial in n of order 17
+      reale(0x13da11LL,0x7885767b34dc0LL),reale(0x2fe77cLL,0x6299dbe8eac00LL),
+      reale(0x9eb09bLL,0xe9c2f692aa40LL),reale(0x4cf4ecbLL,0xafcfc919b1e80LL),
+      reale(-0x1a51346aLL,0xcb0eb0f7c1ec0LL),
+      reale(0x19458119LL,0x2e9be95704100LL),
+      reale(0x65f0ce7LL,0x9a909730adb40LL),
+      reale(-0xead023bLL,0xc33de13104380LL),
+      reale(0x559807aLL,0x8e9ea1f760fc0LL),
+      reale(-0x30c52ebLL,0xb2e05ca4d5600LL),
+      reale(0x1fcfd6dLL,0x391836578ec40LL),
+      reale(-0x16148d5LL,0x98f20c7d1a880LL),
+      reale(0xfbcd77LL,0xfb453b1baa0c0LL),reale(-0xb35ea8LL,0x8cd5c6a276b00LL),
+      reale(0x7bad02LL,0xa64658fb65d40LL),reale(-0x4dde87LL,0x3639a72c0cd80LL),
+      reale(0x25a976LL,0x7d6aacb2351c0LL),reale(588064LL,0xecbdce72e5104LL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[7]
-      reale(19712LL,0xac93bc6991f60LL),reale(26064LL,0x47e63bb6f7b10LL),
-      reale(35129LL,0x85349dd791940LL),reale(48412LL,0xcf2b50a5e4170LL),
-      reale(68486LL,0xf23457a2e7b20LL),reale(99959LL,0x1aee9379bdd0LL),
-      reale(151547LL,0xc976e86422100LL),reale(240911LL,0x67a8290f88c30LL),
-      reale(407002LL,0x79f859786e6e0LL),reale(745880LL,0xf6e3b80f24890LL),
-      reale(0x176681LL,0xcfffb4a9fa8c0LL),reale(0x397247LL,0xab1a08cbd8ef0LL),
-      reale(0xc1fa29LL,0x4098eb8542a0LL),reale(0x6035f67LL,0x9a754746dfb50LL),
-      reale(-0x21e32f8aLL,0x4337d0a4c9080LL),
-      reale(0x225ca643LL,0x10ca042b229b0LL),
-      reale(0x6b2fa73LL,0xaecaa4a6c6e60LL),
-      reale(-0x131280c1LL,0x1fa1b551b610LL),
-      reale(0x67b126eLL,0x9b1cd9ac3b840LL),
-      reale(-0x3550ad7LL,0x14175e8b3c70LL),
-      reale(0x1cc2f87LL,0xd0df7149f4a20LL),
-      reale(-0xcdba47LL,0xd35d50b9258d0LL),reale(0x8df89eLL,0x6328f1d67a7f5LL),
+      // C4[0], coeff of eps^11, polynomial in n of order 18
+      reale(365173LL,0x141eb92882aa0LL),reale(660579LL,0x721db1cc80890LL),
+      reale(0x1470fbLL,0x6f3cff39e7d00LL),reale(0x3171b2LL,0xc29100e665970LL),
+      reale(0xa439d7LL,0xac38fa6376f60LL),reale(0x4fe3856LL,0x6edf90fa38050LL),
+      reale(-0x1b6dca72LL,0x585d3ea2fadc0LL),
+      reale(0x1a86c3deLL,0xb96af8d66e930LL),
+      reale(0x67f83deLL,0x840edc5d1e420LL),
+      reale(-0xf5196c0LL,0xd1386a6690010LL),
+      reale(0x58b7f0aLL,0x54adfb574be80LL),
+      reale(-0x322173cLL,0xe27d71d4930f0LL),
+      reale(0x204f4a6LL,0x109475f98e8e0LL),
+      reale(-0x1604c98LL,0xea72421c3e7d0LL),
+      reale(0xf3c608LL,0x7a6ca24c70f40LL),reale(-0xa4e555LL,0xc3f29664890b0LL),
+      reale(0x669063LL,0xd5a36326ddda0LL),reale(-0x3144eeLL,0x1bb23df2f9790LL),
+      reale(0x23c98bLL,0x81bdf10588059LL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[8]
-      reale(34939LL,0x4781a8598a880LL),reale(47986LL,0x870a153a0ba00LL),
-      reale(67643LL,0xf93c5a3d5fb80LL),reale(98366LL,0xdef5527b5d100LL),
-      reale(148567LL,0x565e4f7b51e80LL),reale(235242LL,0x766e64b79c800LL),
-      reale(395796LL,0x5614c84bc3180LL),reale(722239LL,0xc9f1a6fcbf00LL),
-      reale(0x168e71LL,0xd3352c2795480LL),reale(0x371b2eLL,0xfdbc40cced600LL),
-      reale(0xb91343LL,0x5ec9e3d72a780LL),reale(0x5b36e2fLL,0xe79e249b02d00LL),
-      reale(-0x1fdb6a55LL,0x9cccd6f164a80LL),
-      reale(0x1fca127cLL,0xd7635e240e400LL),
-      reale(0x6c057abLL,0x31e09daaa5d80LL),
-      reale(-0x11e4686bLL,0x932c79cb11b00LL),
-      reale(0x63c2a77LL,0x6a6e0bd3d0080LL),
-      reale(-0x357e159LL,0x303fff470f200LL),
-      reale(0x1f8d409LL,0x428f85e945380LL),
-      reale(-0x1224cb3LL,0xc015a15e08900LL),
-      reale(0x85cd57LL,0x59c11511e7680LL),reale(0x1de7e7LL,0x57aea52b92dd8LL),
+      // C4[0], coeff of eps^10, polynomial in n of order 19
+      reale(142358LL,0x43f28ef2bce60LL),reale(224104LL,0xc49bf70fb8540LL),
+      reale(374789LL,0x29edb81ed2220LL),reale(679606LL,0x56dce126b3a00LL),
+      reale(0x151577LL,0x3315a15e701e0LL),reale(0x3323adLL,0xe4cb186e3aec0LL),
+      reale(0xaa619bLL,0x295c18ed1d5a0LL),reale(0x532ef77LL,0xbf27e3cc5cb80LL),
+      reale(-0x1cb1b79dLL,0x7ff1b0440560LL),
+      reale(0x1bfc4ae5LL,0x9e18ca33e7840LL),
+      reale(0x69d47e6LL,0x606788cedf920LL),
+      reale(-0x100d6e70LL,0x6f2524df29d00LL),
+      reale(0x5c21a47LL,0x8c213171618e0LL),
+      reale(-0x3378c21LL,0x2af60abab21c0LL),
+      reale(0x209b82fLL,0x9021dc5d4cca0LL),
+      reale(-0x159ac9aLL,0x60746e780ee80LL),
+      reale(0xe38d17LL,0x946e9b2907c60LL),reale(-0x8b2d3dLL,0x9f9832c08eb40LL),
+      reale(0x423e70LL,0x73b562399020LL),reale(0xf7089LL,0x75de66a5bdb46LL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[9]
+      // C4[0], coeff of eps^9, polynomial in n of order 20
       reale(66631LL,0x784cbdfb1b2c0LL),reale(96606LL,0x3419bb8e05f90LL),
       reale(145459LL,0xb79bffbfb42e0LL),reale(229589LL,0x824d22506cd30LL),
       reale(385010LL,0x35e34fd0f4f00LL),reale(700134LL,0x4df5413db48d0LL),
@@ -4266,340 +4272,322 @@ namespace GeographicLib {
       reale(0xc41a61LL,0x7f1d30d5603e0LL),reale(-0x5c2318LL,0x13403f2580230LL),
       reale(0x41d241LL,0xa0fbedf62e95bLL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[10]
-      reale(142358LL,0x43f28ef2bce60LL),reale(224104LL,0xc49bf70fb8540LL),
-      reale(374789LL,0x29edb81ed2220LL),reale(679606LL,0x56dce126b3a00LL),
-      reale(0x151577LL,0x3315a15e701e0LL),reale(0x3323adLL,0xe4cb186e3aec0LL),
-      reale(0xaa619bLL,0x295c18ed1d5a0LL),reale(0x532ef77LL,0xbf27e3cc5cb80LL),
-      reale(-0x1cb1b79dLL,0x7ff1b0440560LL),
-      reale(0x1bfc4ae5LL,0x9e18ca33e7840LL),
-      reale(0x69d47e6LL,0x606788cedf920LL),
-      reale(-0x100d6e70LL,0x6f2524df29d00LL),
-      reale(0x5c21a47LL,0x8c213171618e0LL),
-      reale(-0x3378c21LL,0x2af60abab21c0LL),
-      reale(0x209b82fLL,0x9021dc5d4cca0LL),
-      reale(-0x159ac9aLL,0x60746e780ee80LL),
-      reale(0xe38d17LL,0x946e9b2907c60LL),reale(-0x8b2d3dLL,0x9f9832c08eb40LL),
-      reale(0x423e70LL,0x73b562399020LL),reale(0xf7089LL,0x75de66a5bdb46LL),
-      reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[11]
-      reale(365173LL,0x141eb92882aa0LL),reale(660579LL,0x721db1cc80890LL),
-      reale(0x1470fbLL,0x6f3cff39e7d00LL),reale(0x3171b2LL,0xc29100e665970LL),
-      reale(0xa439d7LL,0xac38fa6376f60LL),reale(0x4fe3856LL,0x6edf90fa38050LL),
-      reale(-0x1b6dca72LL,0x585d3ea2fadc0LL),
-      reale(0x1a86c3deLL,0xb96af8d66e930LL),
-      reale(0x67f83deLL,0x840edc5d1e420LL),
-      reale(-0xf5196c0LL,0xd1386a6690010LL),
-      reale(0x58b7f0aLL,0x54adfb574be80LL),
-      reale(-0x322173cLL,0xe27d71d4930f0LL),
-      reale(0x204f4a6LL,0x109475f98e8e0LL),
-      reale(-0x1604c98LL,0xea72421c3e7d0LL),
-      reale(0xf3c608LL,0x7a6ca24c70f40LL),reale(-0xa4e555LL,0xc3f29664890b0LL),
-      reale(0x669063LL,0xd5a36326ddda0LL),reale(-0x3144eeLL,0x1bb23df2f9790LL),
-      reale(0x23c98bLL,0x81bdf10588059LL),
+      // C4[0], coeff of eps^8, polynomial in n of order 21
+      reale(34939LL,0x4781a8598a880LL),reale(47986LL,0x870a153a0ba00LL),
+      reale(67643LL,0xf93c5a3d5fb80LL),reale(98366LL,0xdef5527b5d100LL),
+      reale(148567LL,0x565e4f7b51e80LL),reale(235242LL,0x766e64b79c800LL),
+      reale(395796LL,0x5614c84bc3180LL),reale(722239LL,0xc9f1a6fcbf00LL),
+      reale(0x168e71LL,0xd3352c2795480LL),reale(0x371b2eLL,0xfdbc40cced600LL),
+      reale(0xb91343LL,0x5ec9e3d72a780LL),reale(0x5b36e2fLL,0xe79e249b02d00LL),
+      reale(-0x1fdb6a55LL,0x9cccd6f164a80LL),
+      reale(0x1fca127cLL,0xd7635e240e400LL),
+      reale(0x6c057abLL,0x31e09daaa5d80LL),
+      reale(-0x11e4686bLL,0x932c79cb11b00LL),
+      reale(0x63c2a77LL,0x6a6e0bd3d0080LL),
+      reale(-0x357e159LL,0x303fff470f200LL),
+      reale(0x1f8d409LL,0x428f85e945380LL),
+      reale(-0x1224cb3LL,0xc015a15e08900LL),
+      reale(0x85cd57LL,0x59c11511e7680LL),reale(0x1de7e7LL,0x57aea52b92dd8LL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[12]
-      reale(0x13da11LL,0x7885767b34dc0LL),reale(0x2fe77cLL,0x6299dbe8eac00LL),
-      reale(0x9eb09bLL,0xe9c2f692aa40LL),reale(0x4cf4ecbLL,0xafcfc919b1e80LL),
-      reale(-0x1a51346aLL,0xcb0eb0f7c1ec0LL),
-      reale(0x19458119LL,0x2e9be95704100LL),
-      reale(0x65f0ce7LL,0x9a909730adb40LL),
-      reale(-0xead023bLL,0xc33de13104380LL),
-      reale(0x559807aLL,0x8e9ea1f760fc0LL),
-      reale(-0x30c52ebLL,0xb2e05ca4d5600LL),
-      reale(0x1fcfd6dLL,0x391836578ec40LL),
-      reale(-0x16148d5LL,0x98f20c7d1a880LL),
-      reale(0xfbcd77LL,0xfb453b1baa0c0LL),reale(-0xb35ea8LL,0x8cd5c6a276b00LL),
-      reale(0x7bad02LL,0xa64658fb65d40LL),reale(-0x4dde87LL,0x3639a72c0cd80LL),
-      reale(0x25a976LL,0x7d6aacb2351c0LL),reale(588064LL,0xecbdce72e5104LL),
+      // C4[0], coeff of eps^7, polynomial in n of order 22
+      reale(19712LL,0xac93bc6991f60LL),reale(26064LL,0x47e63bb6f7b10LL),
+      reale(35129LL,0x85349dd791940LL),reale(48412LL,0xcf2b50a5e4170LL),
+      reale(68486LL,0xf23457a2e7b20LL),reale(99959LL,0x1aee9379bdd0LL),
+      reale(151547LL,0xc976e86422100LL),reale(240911LL,0x67a8290f88c30LL),
+      reale(407002LL,0x79f859786e6e0LL),reale(745880LL,0xf6e3b80f24890LL),
+      reale(0x176681LL,0xcfffb4a9fa8c0LL),reale(0x397247LL,0xab1a08cbd8ef0LL),
+      reale(0xc1fa29LL,0x4098eb8542a0LL),reale(0x6035f67LL,0x9a754746dfb50LL),
+      reale(-0x21e32f8aLL,0x4337d0a4c9080LL),
+      reale(0x225ca643LL,0x10ca042b229b0LL),
+      reale(0x6b2fa73LL,0xaecaa4a6c6e60LL),
+      reale(-0x131280c1LL,0x1fa1b551b610LL),
+      reale(0x67b126eLL,0x9b1cd9ac3b840LL),
+      reale(-0x3550ad7LL,0x14175e8b3c70LL),
+      reale(0x1cc2f87LL,0xd0df7149f4a20LL),
+      reale(-0xcdba47LL,0xd35d50b9258d0LL),reale(0x8df89eLL,0x6328f1d67a7f5LL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[13]
-      reale(0x99ad32LL,0xbead2787bab00LL),reale(0x4a53514LL,0xc8037e807a610LL),
-      reale(-0x195498f9LL,0x6a3a755d543a0LL),
-      reale(0x182d7428LL,0xf37804095de30LL),
-      reale(0x63dbc55LL,0x2c34dddf07040LL),
-      reale(-0xe1b53e6LL,0x3f952bd85a450LL),
-      reale(0x52bcb89LL,0x36f6256b264e0LL),
-      reale(-0x2f71989LL,0x5bd35b3c86c70LL),
-      reale(0x1f3806cLL,0x1aa6eba145580LL),
-      reale(-0x15f24a2LL,0xbe1919f50aa90LL),
-      reale(0xff2864LL,0xa0e65eb557620LL),reale(-0xbb7477LL,0x8ed3ec76bd2b0LL),
-      reale(0x885218LL,0x44131ea6cfac0LL),reale(-0x5f538eLL,0x53b786fbc58d0LL),
-      reale(0x3c9287LL,0x8774cc7c1760LL),reale(-0x1d72cdLL,0xd58c69693b0f0LL),
-      reale(0x15971fLL,0x9f9bcb791811fLL),
+      // C4[0], coeff of eps^6, polynomial in n of order 23
+      reale(11639LL,0x4298ebe4bc020LL),reale(14966LL,0xe9089607c0a40LL),
+      reale(19534LL,0x1996a62965260LL),reale(25928LL,0xdcaffa7bfcb80LL),
+      reale(35089LL,0x59fa64f7d88a0LL),reale(48563LL,0x32ed377221cc0LL),
+      reale(69004LL,0xe5c9403173ae0LL),reale(101181LL,0xf483b00105600LL),
+      reale(154143LL,0xf39432e434120LL),reale(246274LL,0xfc90899a3cf40LL),
+      reale(418255LL,0xdad9486cf7360LL),reale(770731LL,0xbf0321b55e080LL),
+      reale(0x185215LL,0xd61fe95ba9a0LL),reale(0x3c13b0LL,0x3820413b3e1c0LL),
+      reale(0xcc40bfLL,0xf48ca237dbbe0LL),reale(0x662046cLL,0x9d1b10f932b00LL),
+      reale(-0x245c984cLL,0x93e4d8ea58220LL),
+      reale(0x25a711c0LL,0xcac1d46451440LL),
+      reale(0x672d055LL,0xaf9fd1440d460LL),
+      reale(-0x147fa21bLL,0xfc84c3f4af580LL),
+      reale(0x6aea843LL,0x3a73d439f8aa0LL),
+      reale(-0x3292518LL,0xea2e8660a26c0LL),
+      reale(0x156a084LL,0x49a70d2177ce0LL),reale(0x457938LL,0x22f700960daaaLL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[14]
-      reale(-0x187266b0LL,0xcc121102522a0LL),
-      reale(0x17368ed6LL,0x4a8eb37cf8e40LL),
-      reale(0x61c9a2eLL,0xdf54e754057e0LL),
-      reale(-0xd993a81LL,0x66d710967b680LL),
-      reale(0x501f49bLL,0x8c476a1354120LL),
-      reale(-0x2e2cc70LL,0xf6b7949b50ec0LL),
-      reale(0x1e962b0LL,0xac5157de0d660LL),
-      reale(-0x15b3ea3LL,0x902c3e28e0f00LL),
-      reale(0xffbd98LL,0x75de552320fa0LL),reale(-0xbfb6ecLL,0x319a838152f40LL),
-      reale(0x8ff034LL,0xee7b325fde4e0LL),reale(-0x6a4b51LL,0x3f56268dce780LL),
-      reale(0x4b2142LL,0x7fe1a8c934e20LL),reale(-0x301411LL,0x35323a40bafc0LL),
-      reale(0x17780aLL,0xc6e75548f4360LL),reale(371250LL,0x9b28ca926da22LL),
+      // C4[0], coeff of eps^5, polynomial in n of order 24
+      reale(7030LL,0x634f92bbfec80LL),reale(8852LL,0x183ea9c784b10LL),
+      reale(11280LL,0x864427e0ea420LL),reale(14569LL,0x4ed71f4155e30LL),
+      reale(19103LL,0x13b2c1ad2ffc0LL),reale(25480LL,0x35983eb20bf50LL),
+      reale(34659LL,0x18ad59c5f9360LL),reale(48227LL,0x95f2c0574270LL),
+      reale(68917LL,0x8c5b3ac32f300LL),reale(101660LL,0x272f49f96bb90LL),
+      reale(155850LL,0xbc628b339b2a0LL),reale(250657LL,0x122490d07feb0LL),
+      reale(428675LL,0x21f5a97506640LL),reale(795748LL,0x8d9dd2ee8dfd0LL),
+      reale(0x194e34LL,0x22b44d2c5a1e0LL),reale(0x3f078eLL,0x814b60cb632f0LL),
+      reale(0xd83f56LL,0xb8691b29bf980LL),reale(0x6d46e98LL,0x7599d8275cc10LL),
+      reale(-0x27781128LL,0xaa3ee984c0120LL),
+      reale(0x2a0ea364LL,0xf6219ee07f30LL),
+      reale(0x5c2da08LL,0xe42cfbbc64cc0LL),
+      reale(-0x163dd11bLL,0x272a56b2c2050LL),
+      reale(0x6b12295LL,0x704341a757060LL),
+      reale(-0x284b6d6LL,0x40a56b3358370LL),
+      reale(0x19455f9LL,0xea37274059c77LL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[15]
-      reale(0x5fc38f5LL,0x1c7e0d98777e0LL),
-      reale(-0xd242504LL,0xe693d58008810LL),
-      reale(0x4db8f74LL,0xcf48e14d7b2c0LL),
-      reale(-0x2cf9165LL,0x4b3864100f370LL),
-      reale(0x1df218dLL,0x3ade51fc905a0LL),
-      reale(-0x1565f09LL,0x9d37bba5014d0LL),
-      reale(0xfea394LL,0xb49b2cc64ec80LL),reale(-0xc19874LL,0xca5adb0f72830LL),
-      reale(0x946d46LL,0xc96eb1166e360LL),reale(-0x71439cLL,0xca8b236006990LL),
-      reale(0x54a228LL,0x3897621326640LL),reale(-0x3c5281LL,0x859e2dc8514f0LL),
-      reale(0x26d1abLL,0x942757fc8f120LL),reale(-0x130299LL,0xa0a61d1db6650LL),
-      reale(918672LL,0xb7e149f3f515dLL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[16]
-      reale(0x4b83825LL,0x46beef62ca900LL),
-      reale(-0x2bd7055LL,0x7a5e627bdac00LL),
-      reale(0x1d50229LL,0x10d9a95bb4f00LL),
-      reale(-0x150fc0bLL,0x50c599a605a00LL),
-      reale(0xfc80d5LL,0x58583f22e9500LL),reale(-0xc1f541LL,0xc280e4e41c800LL),
-      reale(0x96e5ebLL,0xbbf5d84b2bb00LL),reale(-0x75aa16LL,0xc94e877623600LL),
-      reale(0x5aec67LL,0x73d1ebe040100LL),reale(-0x4492a4LL,0x5c8b5441e400LL),
-      reale(0x3133c5LL,0x29027e04ea700LL),reale(-0x1fce50LL,0x72881bd411200LL),
-      reale(0xf9dc9LL,0xbf113370eed00LL),reale(249103LL,0x93cdbdabe0fb0LL),
+      // C4[0], coeff of eps^4, polynomial in n of order 25
+      reale(4244LL,0x3972351df5940LL),reale(5257LL,0xaa8f87b5d5600LL),
+      reale(6578LL,0xed6cb3b3fa2c0LL),reale(8324LL,0xb4008d853180LL),
+      reale(10662LL,0x703b07259b440LL),reale(13846LL,0x8f2f6ca125d00LL),
+      reale(18261LL,0x3a455b4269dc0LL),reale(24508LL,0x5045fb81ae880LL),
+      reale(33557LL,0x1b3e945f36f40LL),reale(47022LL,0x9499ec44e400LL),
+      reale(67699LL,0x7a940285938c0LL),reale(100662LL,0x403646e1e5f80LL),
+      reale(155637LL,0xf20897fb50a40LL),reale(252593LL,0x7106d86756b00LL),
+      reale(436178LL,0xe720d891ff3c0LL),reale(818051LL,0x1d79595b01680LL),
+      reale(0x1a4d3aLL,0xc365c92e70540LL),reale(0x424929LL,0xb055b91247200LL),
+      reale(0xe65c40LL,0xe96c54f834ec0LL),reale(0x762650fLL,0x435c586708d80LL),
+      reale(-0x2b88f1fbLL,0x72f827a11e040LL),
+      reale(0x3058f88aLL,0xd7ccf03d27900LL),
+      reale(0x3fc08ddLL,0xdd39a234bc9c0LL),
+      reale(-0x1850d3a6LL,0x298c984804480LL),
+      reale(0x5e7be5fLL,0x21cb91dfe1b40LL),reale(0xd8c1e2LL,0x589c3f44ce7acLL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[17]
-      reale(0x1cb2a29LL,0x8745c27487540LL),
-      reale(-0x14b5d21LL,0x85b44eb6a1e90LL),
-      reale(0xf9bc4eLL,0xd4e8bc19a0660LL),reale(-0xc155a7LL,0x6125f0a20d130LL),
-      reale(0x9808cfLL,0x5ae4f6d3c8380LL),reale(-0x785bd1LL,0xe6efcb8cc51d0LL),
-      reale(0x5f1741LL,0x96448488ef0a0LL),reale(-0x4a36bfLL,0xf983c38b4e470LL),
-      reale(0x386399LL,0x2e7ae0f4851c0LL),reale(-0x28ae09LL,0x1979b7873cd10LL),
-      reale(0x1a64cdLL,0xf881cba41aae0LL),reale(-851105LL,0x77702a4854fb0LL),
-      reale(629987LL,0x9ea5a19626943LL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[18]
-      reale(0xf6975bLL,0x85a3ec5761ce0LL),reale(-0xc010d4LL,0x6848083afa540LL),
-      reale(0x984538LL,0xa0e43863a93a0LL),reale(-0x79e439LL,0x3050a99fd8100LL),
-      reale(0x61d04aLL,0xbffc30c12660LL),reale(-0x4e16fdLL,0x26ce724b3cc0LL),
-      reale(0x3d6fb4LL,0x94c482b815d20LL),reale(-0x2ef71eLL,0x63b7f527ae080LL),
-      reale(0x220869LL,0x99db799d8bfe0LL),reale(-0x16260bLL,0x4fffa269a7440LL),
-      reale(715485LL,0xdbe6a2ef6d6a0LL),reale(175141LL,0x3547b8669b9beLL),
+      // C4[0], coeff of eps^3, polynomial in n of order 26
+      reale(2481LL,0x8d2c27b46b620LL),reale(3034LL,0xe44720f3fdf90LL),
+      reale(3743LL,0xf82fc54a92780LL),reale(4662LL,0xb922ac44f6b70LL),
+      reale(5867LL,0xae02c805f08e0LL),reale(7469LL,0x40a687e9b4d50LL),
+      reale(9629LL,0xbb2099bca6640LL),reale(12592LL,0xa0727e14e5130LL),
+      reale(16731LL,0xdc4cfea134ba0LL),reale(22636LL,0xbf84f9dc44310LL),
+      reale(31263LL,0xfe99294d5c500LL),reale(44220LL,0x78f2e666feef0LL),
+      reale(64313LL,0xe77c1f84fde60LL),reale(96684LL,0x43c9282e120d0LL),
+      reale(151281LL,0x84eb0984fa3c0LL),reale(248729LL,0xa2c4a502aa4b0LL),
+      reale(435615LL,0xd80deb212120LL),reale(829647LL,0x194fc60e84690LL),
+      reale(0x1b1fd3LL,0x17dfea7bc6280LL),reale(0x459d83LL,0x417bb8824d270LL),
+      reale(0xf6d16eLL,0xd3a7db47373e0LL),reale(0x8183649LL,0xbb999e2601450LL),
+      reale(-0x312ee39aLL,0x57e9d33606140LL),
+      reale(0x3a455a48LL,0xd8c5ee7f4d830LL),
+      reale(-0x1373dc9LL,0xb547079d336a0LL),
+      reale(-0x19f739c8LL,0xd486bc1eea10LL),
+      reale(0x889a2ffLL,0xa8277df5ccab1LL),
       reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[19]
-      reale(0x97e43bLL,0x5ecc5371ca720LL),reale(-0x7a9e52LL,0x8336fa9a1f990LL),
-      reale(0x63879fLL,0x32e1ec30d1a80LL),reale(-0x50bd17LL,0xbe8d10d414f70LL),
-      reale(0x410187LL,0x65c388ed45de0LL),reale(-0x337b18LL,0xb259e1738fb50LL),
-      reale(0x278db9LL,0xcd194d02dbd40LL),reale(-0x1cc4daLL,0x5f7365df10930LL),
-      reale(0x12c554LL,0x4c527bc6a84a0LL),reale(-607280LL,0xdb291ae428510LL),
-      reale(450701LL,0xae98337b7d081LL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[20]
-      reale(0x2182aaLL,0xe1b60fe1808c0LL),reale(-0x1b814dLL,0xc4b4e3d5cbe00LL),
-      reale(0x168277LL,0x47b8ccbe8340LL),reale(-0x124018LL,0xd1d5bfe3b9680LL),
-      reale(952413LL,0x117e9e1fb75c0LL),reale(-734857LL,0xd1e60e1841f00LL),
-      reale(536171LL,0x8daa599335040LL),reale(-350595LL,0xf5a72b995c780LL),
-      reale(173293LL,0x7b19cdc9682c0LL),reale(42591LL,0xb005bdeb82d74LL),
+      // C4[0], coeff of eps^2, polynomial in n of order 27
+      real(0x52cac993243497e0LL),real(0x6437dfaee57b9d40LL),
+      real(0x7a3f9cad4d2f48a0LL),reale(2405LL,0xee01eec3f2b00LL),
+      reale(2986LL,0x65a22988df560LL),reale(3743LL,0xe8ba104bd58c0LL),
+      reale(4745LL,0x82561551e620LL),reale(6086LL,0xa7581d3ddee80LL),
+      reale(7912LL,0x8561dfdd262e0LL),reale(10440LL,0x7aa2aab74b440LL),
+      reale(14008LL,0x9b1a2c148b3a0LL),reale(19155LL,0xcd3b8407d7200LL),
+      reale(26767LL,0x9792b4f9c2060LL),reale(38350LL,0xb50c17257efc0LL),
+      reale(56574LL,0xaf828f4edf120LL),reale(86399LL,0xb1bc40483f580LL),
+      reale(137581LL,0x7d29442656de0LL),reale(230687LL,0xc9059cc5d4b40LL),
+      reale(413025LL,0xcba5d91bbdea0LL),reale(806439LL,0xbad85d457b900LL),
+      reale(0x1b1e4aLL,0xdb254a1088b60LL),reale(0x47db50LL,0x187f6563b06c0LL),
+      reale(0x10829aeLL,0x4c53d944cbc20LL),reale(0x9081419LL,0x682a2ddefc80LL),
+      reale(-0x39d631f0LL,0xf8c545a3fb8e0LL),
+      reale(0x4cc4aad4LL,0xb756685e76240LL),
+      reale(-0x18d63745LL,0x2e18c01dac9a0LL),
+      reale(-0x4a82a5dLL,0x18a4a405905ceLL),
+      reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
+      // C4[0], coeff of eps^1, polynomial in n of order 28
+      real(0xb4c355cd41c92c0LL),real(0xd8fea3a41cc7830LL),
+      real(0x1064f0c6b9a6ad20LL),real(0x13f7a88902ef1b10LL),
+      real(0x1884a414973fcb80LL),real(0x1e5fa2ae5243d7f0LL),
+      real(0x25fe0bb384ddd9e0LL),real(0x3006f6e3e0e25ad0LL),
+      real(0x3d6c2c13c34ec440LL),real(0x4f91f34825bd4fb0LL),
+      real(0x688ffb74f98676a0LL),reale(2233LL,0xdec33bb086290LL),
+      reale(3036LL,0xe53843c2cdd00LL),reale(4213LL,0xb13e1137e3f70LL),
+      reale(5984LL,0xaa1cca8abe360LL),reale(8732LL,0xb9880d6c69250LL),
+      reale(13152LL,0x1eadcfcfd75c0LL),reale(20566LL,0x4e1752c3c0730LL),
+      reale(33653LL,0xf4262a5798020LL),reale(58247LL,0x3a420e3524a10LL),
+      reale(108257LL,0x7934f39e3ee80LL),reale(221025LL,0xaccc1c0dc06f0LL),
+      reale(514222LL,0xffbb852faace0LL),reale(0x163b45LL,0x29e8a4070e9d0LL),
+      reale(0x58ed14LL,0xa7a2901c3a740LL),reale(0x3630789LL,0x6270fd1339eb0LL),
+      reale(-0x18d63745LL,0x2e18c01dac9a0LL),
+      reale(0x254152e7LL,0x3adadfd37d190LL),
+      reale(-0x104c9446LL,0xd6403e1379451LL),
       reale(0x517ee559LL,0xd0bec99ea1a6bLL),
-      // _C4x[21]
-      reale(0x171929LL,0x9572babb99080LL),reale(-0x130a9fLL,0x999f64e91edb0LL),
-      reale(0xf875cLL,0x228016ac84e60LL),reale(-814137LL,0x7913cecbaa210LL),
-      reale(630421LL,0xa88f591713840LL),reale(-461206LL,0xb780fdc49f070LL),
-      reale(302134LL,0x36942691aea20LL),reale(-149504LL,0xa5e26506b34d0LL),
-      reale(111169LL,0xb14ab93d4ba6dLL),reale(0x517ee559LL,0xd0bec99ea1a6bLL),
-      // _C4x[22]
-      reale(213221LL,0x21fe88963f0e0LL),reale(-174747LL,0xed01fc507d1c0LL),
-      reale(140344LL,0xd3dfad978d4a0LL),reale(-109010LL,0xec11fc2ea0e80LL),
-      reale(79932LL,0x9fff01479b460LL),reale(-52448LL,0xac156ba4a7b40LL),
-      reale(25976LL,0xa5a6ee990f820LL),reale(6403LL,0x87dc4a069efc6LL),
-      reale(0x104c9445LL,0x29bfc1ec86bafLL),
-      // _C4x[23]
-      reale(5214LL,0xb54b8c26f5620LL),reale(-4203LL,0xb51a0a43406b0LL),
-      reale(3272LL,0xab988a50dfac0LL),reale(-2405LL,0x7b519f36184d0LL),
-      real(0x62be65b26227b760LL),real(-0x30f2645200be8b10LL),
-      real(0x2472ebc3f09ad327LL),reale(0x8fe1cdLL,0x6b5ee3606e93bLL),
-      // _C4x[24]
-      real(0x2507d929b7f89580LL),real(-0x1ce7bf02c3715a00LL),
-      real(0x15463c23456c8680LL),real(-0xdfecff0050dfd00LL),
-      real(0x6f141ba97196780LL),real(0x1b71ab9c78b8b48LL),
-      reale(0x1734efLL,0x957266bcf90f9LL),
-      // _C4x[25]
-      real(0x7a99ea0a52f40LL),real(-0x5a5f53e2c3b50LL),real(0x3b83d2c0c8da0LL),
-      real(-0x1d8a81cb5cc70LL),real(0x1605bd50459c1LL),
-      real(0x6fb2ae4757107d03LL),
-      // _C4x[26]
-      real(0x738319564e0LL),real(-0x4c2475635c0LL),real(0x25d0be52da0LL),
-      real(0x95c020b74eLL),real(0xa0f21774b90225LL),
-      // _C4x[27]
-      real(0x50de7a6e0LL),real(-0x282ec9e50LL),real(0x1dfb4ba1bLL),
-      real(0xbfa33c13e963LL),
-      // _C4x[28]
-      real(0x74154c0LL),real(0x1cc5554LL),real(0x269c465a0c9LL),
-      // _C4x[29]
-      real(3361LL),real(0x6803dafLL),
-      // _C4x[30]
-      real(-0xb4c355cd41c92c0LL),real(-0xd8fea3a41cc7830LL),
-      real(-0x1064f0c6b9a6ad20LL),real(-0x13f7a88902ef1b10LL),
-      real(-0x1884a414973fcb80LL),real(-0x1e5fa2ae5243d7f0LL),
-      real(-0x25fe0bb384ddd9e0LL),real(-0x3006f6e3e0e25ad0LL),
-      real(-0x3d6c2c13c34ec440LL),real(-0x4f91f34825bd4fb0LL),
-      real(-0x688ffb74f98676a0LL),reale(-2234LL,0x213cc44f79d70LL),
-      reale(-3037LL,0x1ac7bc3d32300LL),reale(-4214LL,0x4ec1eec81c090LL),
-      reale(-5985LL,0x55e3357541ca0LL),reale(-8733LL,0x4677f29396db0LL),
-      reale(-13153LL,0xe152303028a40LL),reale(-20567LL,0xb1e8ad3c3f8d0LL),
-      reale(-33654LL,0xbd9d5a867fe0LL),reale(-58248LL,0xc5bdf1cadb5f0LL),
-      reale(-108258LL,0x86cb0c61c1180LL),reale(-221026LL,0x5333e3f23f910LL),
-      reale(-514223LL,0x447ad055320LL),reale(-0x163b46LL,0xd6175bf8f1630LL),
-      reale(-0x58ed15LL,0x585d6fe3c58c0LL),
-      reale(-0x363078aLL,0x9d8f02ecc6150LL),
-      reale(0x18d63744LL,0xd1e73fe253660LL),
-      reale(-0x254152e8LL,0xc525202c82e70LL),
-      reale(0x104c9445LL,0x29bfc1ec86bafLL),
-      reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[31]
-      real(-0x1bd57a8f504dd3c0LL),real(-0x21b6ff10b9172180LL),
-      real(-0x292825cda3a88940LL),real(-0x32aacbfadedfca00LL),
-      real(-0x3ef38a62fa0322c0LL),real(-0x4f013a1cfd80d280LL),
-      real(-0x64414a4729c69840LL),reale(-2061LL,0x6f152d95fcd00LL),
-      reale(-2684LL,0xdc83926d41e40LL),reale(-3548LL,0xc265fa3cc1c80LL),
-      reale(-4771LL,0x913625a6408c0LL),reale(-6542LL,0xfe9a81bee2400LL),
-      reale(-9171LL,0xe574b6bb02f40LL),reale(-13191LL,0x4f96bef7feb80LL),
-      reale(-19555LL,0x61c6c5c4f99c0LL),reale(-30048LL,0x45cfafabb7b00LL),
-      reale(-48225LL,0x8f82b0b095040LL),reale(-81690LL,0xfa35bf4ada80LL),
-      reale(-148266LL,0x546f21a745ac0LL),reale(-294963LL,0x9bc8c4fb81200LL),
-      reale(-667588LL,0x3f3977057c140LL),reale(-0x1c14faLL,0xf37bd27dd2980LL),
-      reale(-0x6dd992LL,0x3beb764a8bc0LL),
-      reale(-0x42b1cf8LL,0x24613ead42900LL),
-      reale(0x204e2080LL,0xe60e5a413c240LL),
-      reale(-0x3f388cb0LL,0xd26d8bee71880LL),
-      reale(0x31ac6e89LL,0xa3ce7fc4a6cc0LL),
-      reale(-0xdf87f17LL,0x49edec10b116aLL),
-      reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[32]
-      real(-0x34f88b61ee2c2e60LL),real(-0x40e8b73250ad02b0LL),
-      real(-0x50402824a1190680LL),real(-0x643133a56bf6de50LL),
-      real(-0x7e70b50d7e53aea0LL),reale(-2584LL,0x76116efc39410LL),
-      reale(-3344LL,0xd2a9490df5540LL),reale(-4391LL,0x6eaf4118b9070LL),
-      reale(-5863LL,0x134611e898120LL),reale(-7979LL,0x64baaeea752d0LL),
-      reale(-11097LL,0xec88b5a185100LL),reale(-15826LL,0xc0dc248c81730LL),
-      reale(-23249LL,0xf0ba5cbf340e0LL),reale(-35381LL,0x50bb879d81990LL),
-      reale(-56210LL,0xf757e0cd1ccc0LL),reale(-94206LL,0xd06751da895f0LL),
-      reale(-169094LL,0x151b52b1170a0LL),reale(-332578LL,0xf12799bfc850LL),
-      reale(-743996LL,0x6f9cff04ba880LL),reale(-0x1eebfeLL,0x63917bb86ecb0LL),
-      reale(-0x775923LL,0x8ace3e96bf060LL),
-      reale(-0x471a981LL,0xe12bc4d183f10LL),
-      reale(0x211f5d66LL,0x34418f385c440LL),
-      reale(-0x3a18e3bfLL,0x7b0b598ecfb70LL),
-      reale(0x1f6fcfcdLL,0x42f7f1faaa020LL),
-      reale(0x5a50c8fLL,0xa411a5cab5dd0LL),
-      reale(-0x6fc3f8cLL,0xa4f6f608588b5LL),
-      reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[33]
-      real(-0x5cd20bbc3c672180LL),real(-0x73720b2d98187c00LL),
-      reale(-2322LL,0x3b147a8a97980LL),reale(-2953LL,0x4d9e8f7737100LL),
-      reale(-3805LL,0xbe842705d1c80LL),reale(-4974LL,0xa137909fe2e00LL),
-      reale(-6610LL,0x667d8d0cf5780LL),reale(-8951LL,0xe683854b94b00LL),
-      reale(-12383LL,0x33b7e1d5bba80LL),reale(-17566LL,0xa0879e6965800LL),
-      reale(-25661LL,0xb590ccf1dd580LL),reale(-38826LL,0x1bb8eff66e500LL),
-      reale(-61314LL,0xb8a8c55f13880LL),reale(-102124LL,0xf5aa449fc8200LL),
-      reale(-182122LL,0x4b2fa6f17380LL),reale(-355743LL,0xcbf416e48bf00LL),
-      reale(-789744LL,0xce71bd7a1680LL),reale(-0x20853dLL,0xd3a64f07d2c00LL),
-      reale(-0x7beb6aLL,0xc063383a6b180LL),
-      reale(-0x484bed9LL,0x7eb8bd22b5900LL),
-      reale(0x2054758bLL,0xe15955752d480LL),
-      reale(-0x334d87eeLL,0x4f7736a64d600LL),
-      reale(0x10cbd69bLL,0x6d691a09a0f80LL),
-      reale(0x14d790d7LL,0x4a19c69db3300LL),
-      reale(-0xffa99b7LL,0xe0ca1aed7f280LL),
-      reale(0x28a45a7LL,0x9d4bdce6b704LL),
+      // C4[0], coeff of eps^0, polynomial in n of order 29
+      reale(42171LL,0xbca3d5a569b4LL),reale(46862LL,0xd0a41cdef9cf0LL),
+      reale(52277LL,0xa2d5316ac1b2cLL),reale(58560LL,0x6f94d669a7a28LL),
+      reale(65892LL,0x788629d238da4LL),reale(74502LL,0x6b99bdf690d60LL),
+      reale(84681LL,0x87b277eadbb1cLL),reale(96804LL,0x8c76c6701c898LL),
+      reale(111359LL,0x1427f62cd3d94LL),reale(128987LL,0x59921e2221dd0LL),
+      reale(150546LL,0xaa0136eb20f0cLL),reale(177198LL,0x7742592373f08LL),
+      reale(210542LL,0x4360b9bd64984LL),reale(252821LL,0x8a8c09196de40LL),
+      reale(307248LL,0x66986780ae6fcLL),reale(378530LL,0x79d0ac77ed78LL),
+      reale(473750LL,0x5114d83948174LL),reale(603901LL,0x80acdb5cb5eb0LL),
+      reale(786661LL,0x2afc1dbf812ecLL),reale(0x100c26LL,0xda8ab314e3e8LL),
+      reale(0x16253eLL,0xc0ede2017b564LL),reale(0x1fcc74LL,0x5d3b51a63af20LL),
+      reale(0x300f2fLL,0xde5c8fc3f62dcLL),reale(0x4dcf72LL,0x12ae3e18b3258LL),
+      reale(0x8af270LL,0x45ee012c1b554LL),reale(0x1210283LL,0x20d0545bbdf90LL),
+      reale(0x31ac6e8LL,0x9a3ce7fc4a6ccLL),
+      reale(0x12a0a973LL,0x9d6d6fe9be8c8LL),
+      reale(-0x41325115LL,0x5900f84de5144LL),
+      reale(0xa2fdcab3LL,0xa17d933d434d6LL),
+      reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
+      // C4[1], coeff of eps^29, polynomial in n of order 0
+      real(917561LL),real(0x3fc3dd0781LL),
+      // C4[1], coeff of eps^28, polynomial in n of order 1
+      real(-0x7815280LL),real(0x564fffcLL),real(0x73d4d30e25bLL),
+      // C4[1], coeff of eps^27, polynomial in n of order 2
+      real(-0x2f7e4f2fca0LL),real(0x161b06db8f0LL),real(0x5852679557LL),
+      real(0x145a25f15d59339LL),
+      // C4[1], coeff of eps^26, polynomial in n of order 3
+      real(-0x780f9f651c0LL),real(0x49cd6538080LL),real(-0x275396e6f40LL),
+      real(0x1c1406225eaLL),real(0x1e2d6465e2b066fLL),
+      // C4[1], coeff of eps^25, polynomial in n of order 4
+      real(-0x226e68a74f6c2c0LL),real(0x178fbd94c6e4130LL),
+      real(-0x10bafa7048ffb60LL),real(0x7b204e43552d10LL),
+      real(0x1ebd785c76c649LL),reale(369943LL,0xaebaf6655156dLL),
+      // C4[1], coeff of eps^24, polynomial in n of order 5
+      real(-0x26adfa4c2bcf8500LL),real(0x1be7e116f09bc400LL),
+      real(-0x1641521374362300LL),real(0xd7dd4a2b1831200LL),
+      real(-0x7449d087ac65100LL),real(0x525502d56a2a1d8LL),
+      reale(0x459eceLL,0xc0573436eb2ebLL),
+      // C4[1], coeff of eps^23, polynomial in n of order 6
+      reale(-27300LL,0xe18051b90d520LL),reale(20250LL,0xb050f61211530LL),
+      reale(-17171LL,0xe335304bf84c0LL),reale(11560LL,0x5557506ac7a50LL),
+      reale(-8301LL,0xe11e2013f0c60LL),reale(3760LL,0xc5da39149a170LL),
+      real(0x3aaaad07e2dbe15fLL),reale(0x86e3b09LL,0x4a8f52a67aa75LL),
+      // C4[1], coeff of eps^22, polynomial in n of order 7
+      reale(-223721LL,0x5258f2178e240LL),reale(168212LL,0x95f7a36b8e780LL),
+      reale(-147709LL,0xb9c628ebecec0LL),reale(104570LL,0x398040c96dd00LL),
+      reale(-84305LL,0xd835d01d0d740LL),reale(50205LL,0xd862a9f308280LL),
+      reale(-27427LL,0x4181f76ca23c0LL),reale(19210LL,0x9794de13dcf52LL),
+      reale(0x30e5bccfLL,0x7d3f45c59430dLL),
+      // C4[1], coeff of eps^21, polynomial in n of order 8
+      reale(-0x184705LL,0xbaef75047f680LL),reale(0x125255LL,0xfaaefe8d2aff0LL),
+      reale(-0x1063bfLL,0xdbb4e733e02e0LL),reale(779463LL,0x6e55e2794e4d0LL),
+      reale(-667444LL,0x80d8c24af2b40LL),reale(440073LL,0xbd38cdf5ffbb0LL),
+      reale(-320491LL,0x4f6fd43f9bba0LL),reale(142410LL,0x1eb038cc00090LL),
+      reale(35531LL,0x5cce3f7afbb81LL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
+      // C4[1], coeff of eps^20, polynomial in n of order 9
+      reale(-0x69c69cLL,0xa63944a9080LL),reale(0x4f76d4LL,0x9d4c81592dc00LL),
+      reale(-0x4771c3LL,0x210630fab5780LL),reale(0x345bb6LL,0xdcd7f0ab97d00LL),
+      reale(-0x2e5455LL,0x14687e301c680LL),reale(0x200137LL,0x35c6f48ae00LL),
+      reale(-0x1a294cLL,0x54bab8747ad80LL),reale(997568LL,0xe75b4df283f00LL),
+      reale(-555002LL,0xca908d5b6dc80LL),reale(383325LL,0x3033ad4799914LL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[34]
-      reale(-2546LL,0xec9cefbc9d280LL),reale(-3227LL,0x1984ebdb5b7d0LL),
-      reale(-4145LL,0x738eecfd059a0LL),reale(-5401LL,0x3e401d7ac5070LL),
-      reale(-7154LL,0x4d3d93e97d4c0LL),reale(-9654LL,0x61710b1830f10LL),
-      reale(-13309LL,0x14f6511b6e7e0LL),reale(-18811LL,0xa9efbf01dd7b0LL),
-      reale(-27376LL,0x3ca1f04c03700LL),reale(-41261LL,0x8280be03d8e50LL),
-      reale(-64894LL,0x38569bebc6620LL),reale(-107623LL,0x1fd1dea8216f0LL),
-      reale(-191036LL,0x93175f5e41940LL),reale(-371182LL,0x696775c8c5590LL),
-      reale(-818769LL,0x56e5b9559f460LL),reale(-0x216f40LL,0x6021c81002e30LL),
-      reale(-0x7de05cLL,0x1d8323ca49b80LL),
-      reale(-0x480a6b0LL,0xfaa33882684d0LL),
-      reale(0x1f1eeae6LL,0xf5aa540a8b2a0LL),
-      reale(-0x2dae4b1dLL,0x9baa65aef3d70LL),
-      reale(0x8daa6e0LL,0x8152775e2ddc0LL),
-      reale(0x16f66a07LL,0x81b301a133c10LL),
-      reale(-0xcb843b1LL,0x6f0317ba1c0e0LL),
-      reale(0x9b9ee4LL,0x255c7c31664b0LL),reale(0x14d790LL,0xd74a19c69db33LL),
+      // C4[1], coeff of eps^19, polynomial in n of order 10
+      reale(-0x9fd70bLL,0x7f1c067b14aa0LL),reale(0x766e0aLL,0x6cb2d37d31d50LL),
+      reale(-0x697adaLL,0xfda8b47ab7080LL),reale(0x4d39c0LL,0xbff13b9f8e7b0LL),
+      reale(-0x454f1bLL,0x637a9e07aa660LL),reale(0x30df9aLL,0x45874de1c0010LL),
+      reale(-0x2a5d4cLL,0xffdcce166a840LL),reale(0x1b2c49LL,0x24244086de270LL),
+      reale(-0x14295dLL,0x482bbfb553220LL),reale(572110LL,0xf0d923e3d0ad0LL),
+      reale(142666LL,0x15ad08c690505LL),reale(0x2dd761028LL,0x56b51693aedc3LL),
+      // C4[1], coeff of eps^18, polynomial in n of order 11
+      reale(-0x1034534LL,0xc405c56ad5a40LL),
+      reale(0xbaa7b6LL,0xc216625651e80LL),reale(-0xa17973LL,0x357b3fbb388c0LL),
+      reale(0x74e090LL,0x22fef68736200LL),reale(-0x688f11LL,0x40b466cfaf340LL),
+      reale(0x4a13daLL,0x78ae9dfa88580LL),reale(-0x421a5dLL,0xa7af3ee26e1c0LL),
+      reale(0x2c33dbLL,0x8330e6242d100LL),reale(-0x24c91aLL,0xc3b1b4d8a9c40LL),
+      reale(0x14bed6LL,0x6f5bc7e308c80LL),reale(-775170LL,0x8fa57bc96ac0LL),
+      reale(525423LL,0x9fd72933d2d3aLL),reale(0x2dd761028LL,0x56b51693aedc3LL),
+      // C4[1], coeff of eps^17, polynomial in n of order 12
+      reale(-0x1e24384LL,0x64d59dbaed640LL),
+      reale(0x145c2e7LL,0xec111ef51efd0LL),
+      reale(-0x108a397LL,0x394a627ab09e0LL),reale(0xba89acLL,0xad54b9902f0LL),
+      reale(-0xa2bd3cLL,0x34d362ea79980LL),reale(0x725efbLL,0x2bbe593f97c10LL),
+      reale(-0x66b513LL,0xa42eeb676d920LL),reale(0x45b201LL,0xbb95797dfef30LL),
+      reale(-0x3d5447LL,0xf1e804c231cc0LL),reale(0x25e556LL,0x18261977df050LL),
+      reale(-0x1cd4a6LL,0xdad5c47c0b860LL),reale(789608LL,0x3727b34041370LL),
+      reale(196748LL,0x5030b26b63d7fLL),reale(0x2dd761028LL,0x56b51693aedc3LL),
+      // C4[1], coeff of eps^16, polynomial in n of order 13
+      reale(-0x4fc6b00LL,0x820ca48963200LL),
+      reale(0x2c0b360LL,0x6a662d0fec800LL),
+      reale(-0x1f04678LL,0xf40bb5c19fe00LL),
+      reale(0x14938faLL,0xbd1dba7599c00LL),
+      reale(-0x10e2e1eLL,0x24347398b6a00LL),
+      reale(0xb96b4fLL,0x7c587583d3000LL),reale(-0xa36311LL,0x5867f9190b600LL),
+      reale(0x6e8d73LL,0x8aa6d7e27c400LL),reale(-0x63715bLL,0x600d3b9d02200LL),
+      reale(0x3f9bdfLL,0x7a21919979800LL),reale(-0x3632afLL,0xd9fb83aefee00LL),
+      reale(0x1d4599LL,0x786d4fd8aec00LL),reale(-0x1143f8LL,0x8185d98965a00LL),
+      reale(747310LL,0xbb693903a2f10LL),reale(0x2dd761028LL,0x56b51693aedc3LL),
+      // C4[1], coeff of eps^15, polynomial in n of order 14
+      reale(-0x3c6fc9bLL,0xd34acc7afb160LL),
+      reale(0xe116580LL,0xed659df2db350LL),
+      reale(-0x52a727eLL,0xffad8c41641c0LL),
+      reale(0x2d05c8bLL,0xc1161d91d1e30LL),
+      reale(-0x1ffbf42LL,0xc2e0c3245ca20LL),
+      reale(0x14bb8abLL,0xd5c3b2c9df710LL),
+      reale(-0x113cc2bLL,0xdedc39fe27680LL),
+      reale(0xb6df41LL,0x3d2e52a8729f0LL),reale(-0xa301b9LL,0xe303054ea72e0LL),
+      reale(0x68e7b4LL,0xeec2e9924a2d0LL),reale(-0x5dfa39LL,0xc76d5123eb40LL),
+      reale(0x371da9LL,0x775a08e9d4db0LL),reale(-0x2b6819LL,0xb0252b48b0ba0LL),
+      reale(0x113fb3LL,0xe52285ff91690LL),reale(281319LL,0xf8ed6ce679421LL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[35]
-      reale(-4407LL,0x6c651a3683c0LL),reale(-5730LL,0xf079c145a4080LL),
-      reale(-7571LL,0xf56d81f7d3b40LL),reale(-10190LL,0x23c2d4a6cf700LL),
-      reale(-14012LL,0x28dbf9e776c0LL),reale(-19752LL,0xb116ccf06bd80LL),
-      reale(-28666LL,0x593e72ff04e40LL),reale(-43079LL,0x1712fad5bac00LL),
-      reale(-67544LL,0xf2beaf522d9c0LL),reale(-111635LL,0x4d71aa44fda80LL),
-      reale(-197390LL,0x332297afa3140LL),reale(-381766LL,0xdd1ff46476100LL),
-      reale(-837259LL,0xf5fff11016cc0LL),reale(-0x21ed42LL,0x2c2ea4cf65780LL),
-      reale(-0x7e558fLL,0x3d724ddb3a440LL),
-      reale(-0x4718fdeLL,0x487e91ab0d600LL),
-      reale(0x1dd9f8d6LL,0x3891b999befc0LL),
-      reale(-0x293cbff3LL,0x6e75d22baf480LL),
-      reale(0x451adb3LL,0xa045596356740LL),
-      reale(0x164b806dLL,0x41b777218cb00LL),
-      reale(-0xa4d3921LL,0x9d46b7a0b22c0LL),
-      reale(0x1c8780cLL,0x80284d25e7180LL),
-      reale(-0x2598f14LL,0xbf2cc7b983a40LL),
-      reale(0xd06ba8LL,0x68e501c228ffeLL),
+      // C4[1], coeff of eps^14, polynomial in n of order 15
+      reale(0x1686954eLL,0xab0ca9f0672c0LL),
+      reale(-0x18f39aa3LL,0xf7f66145ac080LL),
+      reale(-0x3a0925aLL,0xc1505cc0bac40LL),
+      reale(0xe9e6ab6LL,0xf5560cf897d00LL),
+      reale(-0x55e9003LL,0x4be7d5e16f9c0LL),
+      reale(0x2dfded5LL,0xa87e22e4ae980LL),
+      reale(-0x210f9a6LL,0xd4fc0153d9340LL),
+      reale(0x14cb451LL,0xa9bac4593e00LL),
+      reale(-0x1194a26LL,0x8a1a78ee4b0c0LL),
+      reale(0xb2463cLL,0x18da60c9eb280LL),reale(-0xa0e480LL,0x8e87a70218a40LL),
+      reale(0x60aabfLL,0xce8110cc57f00LL),reale(-0x54f93fLL,0xe5935645957c0LL),
+      reale(0x2b1f5cLL,0xf4ab3cac7db80LL),reale(-0x1ab50dLL,0xd007feba15140LL),
+      reale(0x10fe97LL,0xd17a5fb748e66LL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[36]
-      reale(-7901LL,0x9c73992757ce0LL),reale(-10614LL,0xd53cf6d36350LL),
-      reale(-14566LL,0x1ef851d8afe40LL),reale(-20490LL,0xf1527631beb30LL),
-      reale(-29671LL,0x7b631f71207a0LL),reale(-44483LL,0x14e0fdd8d6110LL),
-      reale(-69563LL,0xf4203011ca500LL),reale(-114633LL,0xf68a1705e90f0LL),
-      reale(-201990LL,0x6bee28eeee260LL),reale(-389022LL,0xcc2800fcb46d0LL),
-      reale(-848629LL,0x3fd7a13dccbc0LL),reale(-0x222512LL,0x4682635aa4eb0LL),
-      reale(-0x7de601LL,0x6ecd778286d20LL),
-      reale(-0x45d4511LL,0xf0e001fa37490LL),
-      reale(0x1ca320dfLL,0x383b5471fd280LL),
-      reale(-0x25b322ebLL,0x35ca6e1458470LL),
-      reale(0x1904910LL,0x13df159bb07e0LL),
-      reale(0x150d751fLL,0x101c2c33c4a50LL),
-      reale(-0x8cc24e2LL,0x85cc800fa1940LL),
-      reale(0x277d0feLL,0x88562e0e69230LL),
-      reale(-0x2b67a1fLL,0xdd4a4034312a0LL),
-      reale(0x7911a2LL,0xa8c8e9d8c2810LL),reale(0x1c8666LL,0xdc5c61854a479LL),
+      // C4[1], coeff of eps^13, polynomial in n of order 16
+      reale(-0x7520d0LL,0xa4d593a093f00LL),
+      reale(-0x3d6e840LL,0xb30e02f756bd0LL),
+      reale(0x172fcf79LL,0x614b445047d20LL),
+      reale(-0x1a12258eLL,0x2cf605a6bef70LL),
+      reale(-0x36b5f45LL,0xf9506795e5f40LL),
+      reale(0xf3c2617LL,0x61702d3245910LL),
+      reale(-0x59a6acbLL,0xd6db4f4dda960LL),
+      reale(0x2ee8dc0LL,0xa4967a4d0acb0LL),
+      reale(-0x2245593LL,0x330fa794d1f80LL),
+      reale(0x14b53a7LL,0x3869a07cfee50LL),
+      reale(-0x11e3e06LL,0x30c37e68585a0LL),
+      reale(0xaab4d0LL,0x277eed08021f0LL),reale(-0x9bc884LL,0x43ccf6bb79fc0LL),
+      reale(0x54ae2dLL,0x5f33e35304b90LL),reale(-0x460d74LL,0x6f09191b631e0LL),
+      reale(0x19d34aLL,0x5de933ef26f30LL),reale(420297LL,0x50d0b3d8c1d9bLL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[37]
-      reale(-15014LL,0x996357a240100LL),reale(-21082LL,0x80b2866e67c00LL),
-      reale(-30471LL,0x424a7828b2700LL),reale(-45588LL,0x1b4524ae4e600LL),
-      reale(-71125LL,0xf9b915ca49d00LL),reale(-116892LL,0x75249d55b3000LL),
-      reale(-205316LL,0xe55d54d138300LL),reale(-393885LL,0xb472712587a00LL),
-      reale(-855001LL,0xd055aacfaf900LL),reale(-0x222ddfLL,0x4cee9b3ebe400LL),
-      reale(-0x7ceb8dLL,0x68cb818fe1f00LL),
-      reale(-0x446b5a4LL,0x80eee8c648e00LL),
-      reale(0x1b83421dLL,0x9a516d5401500LL),
-      reale(-0x22d58608LL,0x1edba42919800LL),
-      reale(-0x32966aLL,0xfebeef063fb00LL),
-      reale(0x13c8f42eLL,0x28269ca022200LL),
-      reale(-0x7cff4beLL,0x811852f8cf100LL),
-      reale(0x2cffb8aLL,0x227a729454c00LL),
-      reale(-0x2ad1586LL,0xf632e4d5e1700LL),
-      reale(0xcf2191LL,0xcd96a182a3600LL),reale(-0xbe8440LL,0xba24e95fa8d00LL),
-      reale(0x59b7b6LL,0x70bef82b8988LL),
+      // C4[1], coeff of eps^12, polynomial in n of order 17
+      reale(-852920LL,0x957d30569cf80LL),reale(-0x2165d8LL,0xdf35a289d0800LL),
+      reale(-0x76d1b2LL,0xcbde23356e080LL),
+      reale(-0x3ebd49cLL,0xe2a9f41fb6f00LL),
+      reale(0x17e7b72bLL,0x8c48395cfc980LL),
+      reale(-0x1b576830LL,0xdde8a3cd90600LL),
+      reale(-0x321c36bLL,0xab56475d73a80LL),
+      reale(0xfedb7e2LL,0x9f71e62ba7d00LL),
+      reale(-0x5e066beLL,0xa982ebb2fe380LL),
+      reale(0x2fb3d49LL,0x7efcd81e48400LL),
+      reale(-0x23a48a7LL,0x54086addc7480LL),
+      reale(0x1464878LL,0xfc61768bbcb00LL),
+      reale(-0x121cb8cLL,0xadcb9cd1f9d80LL),
+      reale(0x9ec922LL,0xe1fef86250200LL),reale(-0x915091LL,0x1a8199afc0e80LL),
+      reale(0x431bbdLL,0x8a16c0de4d900LL),reale(-0x2cbd42LL,0x58c787b347780LL),
+      reale(0x1aeb62LL,0xc6396b58af30cLL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[38]
-      reale(-31117LL,0xa312a60d595c0LL),reale(-46467LL,0xc610e9b75c3d0LL),
-      reale(-72340LL,0xec4138ed66a60LL),reale(-118592LL,0x1698fb11dc3f0LL),
-      reale(-207682LL,0xcd8d22096b00LL),reale(-396976LL,0xaa795c025ea10LL),
-      reale(-857777LL,0x69561c6b2cba0LL),reale(-0x22169fLL,0x6389fad8eaa30LL),
-      reale(-0x7b9caaLL,0xfe0c48806c040LL),
-      reale(-0x42f6ddeLL,0x38b89568d7850LL),
-      reale(0x1a7bcca5LL,0x84d59896b7ce0LL),
-      reale(-0x20784ea7LL,0x9f54bd1f6c870LL),
-      reale(-0x15e505bLL,0xa03881a7b3580LL),
-      reale(0x12a1264fLL,0xea91e4bc80e90LL),
-      reale(-0x71f080fLL,0x9aa3856861e20LL),
-      reale(0x2f78fa3LL,0x69cfb591beb0LL),
-      reale(-0x28f2ec6LL,0x52aaa20546ac0LL),
-      reale(0x1063cc7LL,0x9567a8e814cd0LL),
-      reale(-0x1029825LL,0x36be5fae84f60LL),reale(0x44c702LL,0xb6bfddcb2cf0LL),
-      reale(0x10d532LL,0xee71952935057LL),
+      // C4[1], coeff of eps^11, polynomial in n of order 18
+      reale(-210363LL,0x894c962cfda20LL),reale(-399460LL,0xe15065310f550LL),
+      reale(-856142LL,0x1dd6068d45900LL),reale(-0x21accbLL,0xf106ca37844b0LL),
+      reale(-0x787db1LL,0x94f439683f7e0LL),
+      reale(-0x401a6b3LL,0xd339cce20e210LL),
+      reale(0x18b03a63LL,0x2b5605d0252c0LL),
+      reale(-0x1ccc4710LL,0xf5fd24e8a2970LL),
+      reale(-0x2bb69a8LL,0x3e7fbdda905a0LL),
+      reale(0x10b6e02dLL,0xa9af8baa076d0LL),
+      reale(-0x6341c45LL,0x856e0a4adac80LL),
+      reale(0x303e0d6LL,0x9d940e3bb2630LL),
+      reale(-0x2535447LL,0x9596aaa47e360LL),
+      reale(0x13b8847LL,0x5f0f1f3a9390LL),
+      reale(-0x1221aedLL,0xbe96a86974640LL),
+      reale(0x8c6533LL,0xc21b589061af0LL),reale(-0x7cca79LL,0x52e1754897120LL),
+      reale(0x28d6e8LL,0xd6956da2a1850LL),reale(661843LL,0xede00571b821dLL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[39]
+      // C4[1], coeff of eps^10, polynomial in n of order 19
       reale(-73283LL,0x7753088b32340LL),reale(-119857LL,0x503bdcd29680LL),
       reale(-209311LL,0x36a252c262fc0LL),reale(-398729LL,0x3cdb9024cf400LL),
       reale(-857928LL,0x73576020f6840LL),reale(-0x21e950LL,0x80dd570861180LL),
@@ -4617,287 +4605,342 @@ namespace GeographicLib {
       reale(0x703610LL,0xa4f0c77ab4280LL),reale(-0x542f99LL,0x39bdbba9de3c0LL),
       reale(0x2e519cLL,0x619b33f1391d2LL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[40]
-      reale(-210363LL,0x894c962cfda20LL),reale(-399460LL,0xe15065310f550LL),
-      reale(-856142LL,0x1dd6068d45900LL),reale(-0x21accbLL,0xf106ca37844b0LL),
-      reale(-0x787db1LL,0x94f439683f7e0LL),
-      reale(-0x401a6b3LL,0xd339cce20e210LL),
-      reale(0x18b03a63LL,0x2b5605d0252c0LL),
-      reale(-0x1ccc4710LL,0xf5fd24e8a2970LL),
-      reale(-0x2bb69a8LL,0x3e7fbdda905a0LL),
-      reale(0x10b6e02dLL,0xa9af8baa076d0LL),
-      reale(-0x6341c45LL,0x856e0a4adac80LL),
-      reale(0x303e0d6LL,0x9d940e3bb2630LL),
-      reale(-0x2535447LL,0x9596aaa47e360LL),
-      reale(0x13b8847LL,0x5f0f1f3a9390LL),
-      reale(-0x1221aedLL,0xbe96a86974640LL),
-      reale(0x8c6533LL,0xc21b589061af0LL),reale(-0x7cca79LL,0x52e1754897120LL),
-      reale(0x28d6e8LL,0xd6956da2a1850LL),reale(661843LL,0xede00571b821dLL),
+      // C4[1], coeff of eps^9, polynomial in n of order 20
+      reale(-31117LL,0xa312a60d595c0LL),reale(-46467LL,0xc610e9b75c3d0LL),
+      reale(-72340LL,0xec4138ed66a60LL),reale(-118592LL,0x1698fb11dc3f0LL),
+      reale(-207682LL,0xcd8d22096b00LL),reale(-396976LL,0xaa795c025ea10LL),
+      reale(-857777LL,0x69561c6b2cba0LL),reale(-0x22169fLL,0x6389fad8eaa30LL),
+      reale(-0x7b9caaLL,0xfe0c48806c040LL),
+      reale(-0x42f6ddeLL,0x38b89568d7850LL),
+      reale(0x1a7bcca5LL,0x84d59896b7ce0LL),
+      reale(-0x20784ea7LL,0x9f54bd1f6c870LL),
+      reale(-0x15e505bLL,0xa03881a7b3580LL),
+      reale(0x12a1264fLL,0xea91e4bc80e90LL),
+      reale(-0x71f080fLL,0x9aa3856861e20LL),
+      reale(0x2f78fa3LL,0x69cfb591beb0LL),
+      reale(-0x28f2ec6LL,0x52aaa20546ac0LL),
+      reale(0x1063cc7LL,0x9567a8e814cd0LL),
+      reale(-0x1029825LL,0x36be5fae84f60LL),reale(0x44c702LL,0xb6bfddcb2cf0LL),
+      reale(0x10d532LL,0xee71952935057LL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[41]
-      reale(-852920LL,0x957d30569cf80LL),reale(-0x2165d8LL,0xdf35a289d0800LL),
-      reale(-0x76d1b2LL,0xcbde23356e080LL),
-      reale(-0x3ebd49cLL,0xe2a9f41fb6f00LL),
-      reale(0x17e7b72bLL,0x8c48395cfc980LL),
-      reale(-0x1b576830LL,0xdde8a3cd90600LL),
-      reale(-0x321c36bLL,0xab56475d73a80LL),
-      reale(0xfedb7e2LL,0x9f71e62ba7d00LL),
-      reale(-0x5e066beLL,0xa982ebb2fe380LL),
-      reale(0x2fb3d49LL,0x7efcd81e48400LL),
-      reale(-0x23a48a7LL,0x54086addc7480LL),
-      reale(0x1464878LL,0xfc61768bbcb00LL),
-      reale(-0x121cb8cLL,0xadcb9cd1f9d80LL),
-      reale(0x9ec922LL,0xe1fef86250200LL),reale(-0x915091LL,0x1a8199afc0e80LL),
-      reale(0x431bbdLL,0x8a16c0de4d900LL),reale(-0x2cbd42LL,0x58c787b347780LL),
-      reale(0x1aeb62LL,0xc6396b58af30cLL),
+      // C4[1], coeff of eps^8, polynomial in n of order 21
+      reale(-15014LL,0x996357a240100LL),reale(-21082LL,0x80b2866e67c00LL),
+      reale(-30471LL,0x424a7828b2700LL),reale(-45588LL,0x1b4524ae4e600LL),
+      reale(-71125LL,0xf9b915ca49d00LL),reale(-116892LL,0x75249d55b3000LL),
+      reale(-205316LL,0xe55d54d138300LL),reale(-393885LL,0xb472712587a00LL),
+      reale(-855001LL,0xd055aacfaf900LL),reale(-0x222ddfLL,0x4cee9b3ebe400LL),
+      reale(-0x7ceb8dLL,0x68cb818fe1f00LL),
+      reale(-0x446b5a4LL,0x80eee8c648e00LL),
+      reale(0x1b83421dLL,0x9a516d5401500LL),
+      reale(-0x22d58608LL,0x1edba42919800LL),
+      reale(-0x32966aLL,0xfebeef063fb00LL),
+      reale(0x13c8f42eLL,0x28269ca022200LL),
+      reale(-0x7cff4beLL,0x811852f8cf100LL),
+      reale(0x2cffb8aLL,0x227a729454c00LL),
+      reale(-0x2ad1586LL,0xf632e4d5e1700LL),
+      reale(0xcf2191LL,0xcd96a182a3600LL),reale(-0xbe8440LL,0xba24e95fa8d00LL),
+      reale(0x59b7b6LL,0x70bef82b8988LL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[42]
-      reale(-0x7520d0LL,0xa4d593a093f00LL),
-      reale(-0x3d6e840LL,0xb30e02f756bd0LL),
-      reale(0x172fcf79LL,0x614b445047d20LL),
-      reale(-0x1a12258eLL,0x2cf605a6bef70LL),
-      reale(-0x36b5f45LL,0xf9506795e5f40LL),
-      reale(0xf3c2617LL,0x61702d3245910LL),
-      reale(-0x59a6acbLL,0xd6db4f4dda960LL),
-      reale(0x2ee8dc0LL,0xa4967a4d0acb0LL),
-      reale(-0x2245593LL,0x330fa794d1f80LL),
-      reale(0x14b53a7LL,0x3869a07cfee50LL),
-      reale(-0x11e3e06LL,0x30c37e68585a0LL),
-      reale(0xaab4d0LL,0x277eed08021f0LL),reale(-0x9bc884LL,0x43ccf6bb79fc0LL),
-      reale(0x54ae2dLL,0x5f33e35304b90LL),reale(-0x460d74LL,0x6f09191b631e0LL),
-      reale(0x19d34aLL,0x5de933ef26f30LL),reale(420297LL,0x50d0b3d8c1d9bLL),
+      // C4[1], coeff of eps^7, polynomial in n of order 22
+      reale(-7901LL,0x9c73992757ce0LL),reale(-10614LL,0xd53cf6d36350LL),
+      reale(-14566LL,0x1ef851d8afe40LL),reale(-20490LL,0xf1527631beb30LL),
+      reale(-29671LL,0x7b631f71207a0LL),reale(-44483LL,0x14e0fdd8d6110LL),
+      reale(-69563LL,0xf4203011ca500LL),reale(-114633LL,0xf68a1705e90f0LL),
+      reale(-201990LL,0x6bee28eeee260LL),reale(-389022LL,0xcc2800fcb46d0LL),
+      reale(-848629LL,0x3fd7a13dccbc0LL),reale(-0x222512LL,0x4682635aa4eb0LL),
+      reale(-0x7de601LL,0x6ecd778286d20LL),
+      reale(-0x45d4511LL,0xf0e001fa37490LL),
+      reale(0x1ca320dfLL,0x383b5471fd280LL),
+      reale(-0x25b322ebLL,0x35ca6e1458470LL),
+      reale(0x1904910LL,0x13df159bb07e0LL),
+      reale(0x150d751fLL,0x101c2c33c4a50LL),
+      reale(-0x8cc24e2LL,0x85cc800fa1940LL),
+      reale(0x277d0feLL,0x88562e0e69230LL),
+      reale(-0x2b67a1fLL,0xdd4a4034312a0LL),
+      reale(0x7911a2LL,0xa8c8e9d8c2810LL),reale(0x1c8666LL,0xdc5c61854a479LL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[43]
-      reale(0x1686954eLL,0xab0ca9f0672c0LL),
-      reale(-0x18f39aa3LL,0xf7f66145ac080LL),
-      reale(-0x3a0925aLL,0xc1505cc0bac40LL),
-      reale(0xe9e6ab6LL,0xf5560cf897d00LL),
-      reale(-0x55e9003LL,0x4be7d5e16f9c0LL),
-      reale(0x2dfded5LL,0xa87e22e4ae980LL),
-      reale(-0x210f9a6LL,0xd4fc0153d9340LL),
-      reale(0x14cb451LL,0xa9bac4593e00LL),
-      reale(-0x1194a26LL,0x8a1a78ee4b0c0LL),
-      reale(0xb2463cLL,0x18da60c9eb280LL),reale(-0xa0e480LL,0x8e87a70218a40LL),
-      reale(0x60aabfLL,0xce8110cc57f00LL),reale(-0x54f93fLL,0xe5935645957c0LL),
-      reale(0x2b1f5cLL,0xf4ab3cac7db80LL),reale(-0x1ab50dLL,0xd007feba15140LL),
-      reale(0x10fe97LL,0xd17a5fb748e66LL),
+      // C4[1], coeff of eps^6, polynomial in n of order 23
+      reale(-4407LL,0x6c651a3683c0LL),reale(-5730LL,0xf079c145a4080LL),
+      reale(-7571LL,0xf56d81f7d3b40LL),reale(-10190LL,0x23c2d4a6cf700LL),
+      reale(-14012LL,0x28dbf9e776c0LL),reale(-19752LL,0xb116ccf06bd80LL),
+      reale(-28666LL,0x593e72ff04e40LL),reale(-43079LL,0x1712fad5bac00LL),
+      reale(-67544LL,0xf2beaf522d9c0LL),reale(-111635LL,0x4d71aa44fda80LL),
+      reale(-197390LL,0x332297afa3140LL),reale(-381766LL,0xdd1ff46476100LL),
+      reale(-837259LL,0xf5fff11016cc0LL),reale(-0x21ed42LL,0x2c2ea4cf65780LL),
+      reale(-0x7e558fLL,0x3d724ddb3a440LL),
+      reale(-0x4718fdeLL,0x487e91ab0d600LL),
+      reale(0x1dd9f8d6LL,0x3891b999befc0LL),
+      reale(-0x293cbff3LL,0x6e75d22baf480LL),
+      reale(0x451adb3LL,0xa045596356740LL),
+      reale(0x164b806dLL,0x41b777218cb00LL),
+      reale(-0xa4d3921LL,0x9d46b7a0b22c0LL),
+      reale(0x1c8780cLL,0x80284d25e7180LL),
+      reale(-0x2598f14LL,0xbf2cc7b983a40LL),
+      reale(0xd06ba8LL,0x68e501c228ffeLL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[44]
-      reale(-0x3c6fc9bLL,0xd34acc7afb160LL),
-      reale(0xe116580LL,0xed659df2db350LL),
-      reale(-0x52a727eLL,0xffad8c41641c0LL),
-      reale(0x2d05c8bLL,0xc1161d91d1e30LL),
-      reale(-0x1ffbf42LL,0xc2e0c3245ca20LL),
-      reale(0x14bb8abLL,0xd5c3b2c9df710LL),
-      reale(-0x113cc2bLL,0xdedc39fe27680LL),
-      reale(0xb6df41LL,0x3d2e52a8729f0LL),reale(-0xa301b9LL,0xe303054ea72e0LL),
-      reale(0x68e7b4LL,0xeec2e9924a2d0LL),reale(-0x5dfa39LL,0xc76d5123eb40LL),
-      reale(0x371da9LL,0x775a08e9d4db0LL),reale(-0x2b6819LL,0xb0252b48b0ba0LL),
-      reale(0x113fb3LL,0xe52285ff91690LL),reale(281319LL,0xf8ed6ce679421LL),
+      // C4[1], coeff of eps^5, polynomial in n of order 24
+      reale(-2546LL,0xec9cefbc9d280LL),reale(-3227LL,0x1984ebdb5b7d0LL),
+      reale(-4145LL,0x738eecfd059a0LL),reale(-5401LL,0x3e401d7ac5070LL),
+      reale(-7154LL,0x4d3d93e97d4c0LL),reale(-9654LL,0x61710b1830f10LL),
+      reale(-13309LL,0x14f6511b6e7e0LL),reale(-18811LL,0xa9efbf01dd7b0LL),
+      reale(-27376LL,0x3ca1f04c03700LL),reale(-41261LL,0x8280be03d8e50LL),
+      reale(-64894LL,0x38569bebc6620LL),reale(-107623LL,0x1fd1dea8216f0LL),
+      reale(-191036LL,0x93175f5e41940LL),reale(-371182LL,0x696775c8c5590LL),
+      reale(-818769LL,0x56e5b9559f460LL),reale(-0x216f40LL,0x6021c81002e30LL),
+      reale(-0x7de05cLL,0x1d8323ca49b80LL),
+      reale(-0x480a6b0LL,0xfaa33882684d0LL),
+      reale(0x1f1eeae6LL,0xf5aa540a8b2a0LL),
+      reale(-0x2dae4b1dLL,0x9baa65aef3d70LL),
+      reale(0x8daa6e0LL,0x8152775e2ddc0LL),
+      reale(0x16f66a07LL,0x81b301a133c10LL),
+      reale(-0xcb843b1LL,0x6f0317ba1c0e0LL),
+      reale(0x9b9ee4LL,0x255c7c31664b0LL),reale(0x14d790LL,0xd74a19c69db33LL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[45]
-      reale(-0x4fc6b00LL,0x820ca48963200LL),
-      reale(0x2c0b360LL,0x6a662d0fec800LL),
-      reale(-0x1f04678LL,0xf40bb5c19fe00LL),
-      reale(0x14938faLL,0xbd1dba7599c00LL),
-      reale(-0x10e2e1eLL,0x24347398b6a00LL),
-      reale(0xb96b4fLL,0x7c587583d3000LL),reale(-0xa36311LL,0x5867f9190b600LL),
-      reale(0x6e8d73LL,0x8aa6d7e27c400LL),reale(-0x63715bLL,0x600d3b9d02200LL),
-      reale(0x3f9bdfLL,0x7a21919979800LL),reale(-0x3632afLL,0xd9fb83aefee00LL),
-      reale(0x1d4599LL,0x786d4fd8aec00LL),reale(-0x1143f8LL,0x8185d98965a00LL),
-      reale(747310LL,0xbb693903a2f10LL),reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[46]
-      reale(-0x1e24384LL,0x64d59dbaed640LL),
-      reale(0x145c2e7LL,0xec111ef51efd0LL),
-      reale(-0x108a397LL,0x394a627ab09e0LL),reale(0xba89acLL,0xad54b9902f0LL),
-      reale(-0xa2bd3cLL,0x34d362ea79980LL),reale(0x725efbLL,0x2bbe593f97c10LL),
-      reale(-0x66b513LL,0xa42eeb676d920LL),reale(0x45b201LL,0xbb95797dfef30LL),
-      reale(-0x3d5447LL,0xf1e804c231cc0LL),reale(0x25e556LL,0x18261977df050LL),
-      reale(-0x1cd4a6LL,0xdad5c47c0b860LL),reale(789608LL,0x3727b34041370LL),
-      reale(196748LL,0x5030b26b63d7fLL),reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[47]
-      reale(-0x1034534LL,0xc405c56ad5a40LL),
-      reale(0xbaa7b6LL,0xc216625651e80LL),reale(-0xa17973LL,0x357b3fbb388c0LL),
-      reale(0x74e090LL,0x22fef68736200LL),reale(-0x688f11LL,0x40b466cfaf340LL),
-      reale(0x4a13daLL,0x78ae9dfa88580LL),reale(-0x421a5dLL,0xa7af3ee26e1c0LL),
-      reale(0x2c33dbLL,0x8330e6242d100LL),reale(-0x24c91aLL,0xc3b1b4d8a9c40LL),
-      reale(0x14bed6LL,0x6f5bc7e308c80LL),reale(-775170LL,0x8fa57bc96ac0LL),
-      reale(525423LL,0x9fd72933d2d3aLL),reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[48]
-      reale(-0x9fd70bLL,0x7f1c067b14aa0LL),reale(0x766e0aLL,0x6cb2d37d31d50LL),
-      reale(-0x697adaLL,0xfda8b47ab7080LL),reale(0x4d39c0LL,0xbff13b9f8e7b0LL),
-      reale(-0x454f1bLL,0x637a9e07aa660LL),reale(0x30df9aLL,0x45874de1c0010LL),
-      reale(-0x2a5d4cLL,0xffdcce166a840LL),reale(0x1b2c49LL,0x24244086de270LL),
-      reale(-0x14295dLL,0x482bbfb553220LL),reale(572110LL,0xf0d923e3d0ad0LL),
-      reale(142666LL,0x15ad08c690505LL),reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[49]
-      reale(-0x69c69cLL,0xa63944a9080LL),reale(0x4f76d4LL,0x9d4c81592dc00LL),
-      reale(-0x4771c3LL,0x210630fab5780LL),reale(0x345bb6LL,0xdcd7f0ab97d00LL),
-      reale(-0x2e5455LL,0x14687e301c680LL),reale(0x200137LL,0x35c6f48ae00LL),
-      reale(-0x1a294cLL,0x54bab8747ad80LL),reale(997568LL,0xe75b4df283f00LL),
-      reale(-555002LL,0xca908d5b6dc80LL),reale(383325LL,0x3033ad4799914LL),
+      // C4[1], coeff of eps^4, polynomial in n of order 25
+      real(-0x5cd20bbc3c672180LL),real(-0x73720b2d98187c00LL),
+      reale(-2322LL,0x3b147a8a97980LL),reale(-2953LL,0x4d9e8f7737100LL),
+      reale(-3805LL,0xbe842705d1c80LL),reale(-4974LL,0xa137909fe2e00LL),
+      reale(-6610LL,0x667d8d0cf5780LL),reale(-8951LL,0xe683854b94b00LL),
+      reale(-12383LL,0x33b7e1d5bba80LL),reale(-17566LL,0xa0879e6965800LL),
+      reale(-25661LL,0xb590ccf1dd580LL),reale(-38826LL,0x1bb8eff66e500LL),
+      reale(-61314LL,0xb8a8c55f13880LL),reale(-102124LL,0xf5aa449fc8200LL),
+      reale(-182122LL,0x4b2fa6f17380LL),reale(-355743LL,0xcbf416e48bf00LL),
+      reale(-789744LL,0xce71bd7a1680LL),reale(-0x20853dLL,0xd3a64f07d2c00LL),
+      reale(-0x7beb6aLL,0xc063383a6b180LL),
+      reale(-0x484bed9LL,0x7eb8bd22b5900LL),
+      reale(0x2054758bLL,0xe15955752d480LL),
+      reale(-0x334d87eeLL,0x4f7736a64d600LL),
+      reale(0x10cbd69bLL,0x6d691a09a0f80LL),
+      reale(0x14d790d7LL,0x4a19c69db3300LL),
+      reale(-0xffa99b7LL,0xe0ca1aed7f280LL),
+      reale(0x28a45a7LL,0x9d4bdce6b704LL),
       reale(0x2dd761028LL,0x56b51693aedc3LL),
-      // _C4x[50]
-      reale(-0x184705LL,0xbaef75047f680LL),reale(0x125255LL,0xfaaefe8d2aff0LL),
-      reale(-0x1063bfLL,0xdbb4e733e02e0LL),reale(779463LL,0x6e55e2794e4d0LL),
-      reale(-667444LL,0x80d8c24af2b40LL),reale(440073LL,0xbd38cdf5ffbb0LL),
-      reale(-320491LL,0x4f6fd43f9bba0LL),reale(142410LL,0x1eb038cc00090LL),
-      reale(35531LL,0x5cce3f7afbb81LL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[51]
-      reale(-223721LL,0x5258f2178e240LL),reale(168212LL,0x95f7a36b8e780LL),
-      reale(-147709LL,0xb9c628ebecec0LL),reale(104570LL,0x398040c96dd00LL),
-      reale(-84305LL,0xd835d01d0d740LL),reale(50205LL,0xd862a9f308280LL),
-      reale(-27427LL,0x4181f76ca23c0LL),reale(19210LL,0x9794de13dcf52LL),
-      reale(0x30e5bccfLL,0x7d3f45c59430dLL),
-      // _C4x[52]
-      reale(-27300LL,0xe18051b90d520LL),reale(20250LL,0xb050f61211530LL),
-      reale(-17171LL,0xe335304bf84c0LL),reale(11560LL,0x5557506ac7a50LL),
-      reale(-8301LL,0xe11e2013f0c60LL),reale(3760LL,0xc5da39149a170LL),
-      real(0x3aaaad07e2dbe15fLL),reale(0x86e3b09LL,0x4a8f52a67aa75LL),
-      // _C4x[53]
-      real(-0x26adfa4c2bcf8500LL),real(0x1be7e116f09bc400LL),
-      real(-0x1641521374362300LL),real(0xd7dd4a2b1831200LL),
-      real(-0x7449d087ac65100LL),real(0x525502d56a2a1d8LL),
-      reale(0x459eceLL,0xc0573436eb2ebLL),
-      // _C4x[54]
-      real(-0x226e68a74f6c2c0LL),real(0x178fbd94c6e4130LL),
-      real(-0x10bafa7048ffb60LL),real(0x7b204e43552d10LL),
-      real(0x1ebd785c76c649LL),reale(369943LL,0xaebaf6655156dLL),
-      // _C4x[55]
-      real(-0x780f9f651c0LL),real(0x49cd6538080LL),real(-0x275396e6f40LL),
-      real(0x1c1406225eaLL),real(0x1e2d6465e2b066fLL),
-      // _C4x[56]
-      real(-0x2f7e4f2fca0LL),real(0x161b06db8f0LL),real(0x5852679557LL),
-      real(0x145a25f15d59339LL),
-      // _C4x[57]
-      real(-0x7815280LL),real(0x564fffcLL),real(0x73d4d30e25bLL),
-      // _C4x[58]
-      real(917561LL),real(0x3fc3dd0781LL),
-      // _C4x[59]
-      real(0x24546bc28a93e0LL),real(0x2f6c4d745b8e40LL),
-      real(0x3e90f252c210a0LL),real(0x5380c389acd700LL),
-      real(0x70da9adde57d60LL),real(0x9aa08aca5a9fc0LL),
-      real(0xd7127fe199fa20LL),real(0x130248120008880LL),
-      real(0x1b6103e1c56a6e0LL),real(0x283fa247b6e3140LL),
-      real(0x3c89da46fe8a3a0LL),real(0x5d71643158b3a00LL),
-      real(0x948b363af771060LL),real(0xf445a32263b42c0LL),
-      real(0x1a1d56e9fe070d20LL),real(0x2ecb290f0241eb80LL),
-      real(0x58a5da95527fb9e0LL),reale(2876LL,0x680343126d440LL),
-      reale(6354LL,0x3e35c062e36a0LL),reale(15689LL,0x7d2910c199d00LL),
-      reale(45107LL,0x47d6102c9a360LL),reale(162386LL,0x35cf6d6d5e5c0LL),
-      reale(857038LL,0x54e3334f72020LL),reale(0xb1da29LL,0x4f45203874e80LL),
-      reale(-0x7d0d651LL,0x44365584dcce0LL),
-      reale(0x1694323eLL,0x9046972ad7740LL),
-      reale(-0x18d63745LL,0x2e18c01dac9a0LL),
-      reale(0x95054b9LL,0xceb6b7f4df464LL),
-      reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[60]
-      real(0xc4c78b5f73e700LL),real(0x1046756e5efb980LL),
-      real(0x15cbc98d9fba400LL),real(0x1d9279681ffce80LL),
-      real(0x28b2f34344c6100LL),real(0x38e6214caec8380LL),
-      real(0x50f0f0d0c655e00LL),real(0x7563dc0de2d1880LL),
-      real(0xadfad5eb325db00LL),real(0x1083ab8775a8cd80LL),
-      real(0x19c9d8efc1ad1800LL),real(0x29945e7f0056e280LL),
-      real(0x4594bf2102ba5500LL),real(0x79a9d12705de9780LL),
-      reale(3587LL,0xb2b264e0cd200LL),reale(7053LL,0x1d58043372c80LL),
-      reale(15040LL,0x44c8073c3cf00LL),reale(35667LL,0x702872e47e180LL),
-      reale(97902LL,0x6929355be8c00LL),reale(334186LL,0x1d1de4e87f680LL),
-      reale(0x19542bLL,0xed2beccfc4900LL),reale(0x1421dbfLL,0x53559189eab80LL),
-      reale(-0xd3da750LL,0x738f3f8fc4600LL),
-      reale(0x24d22a8dLL,0x694fabb034080LL),
-      reale(-0x2dda3ea7LL,0x902db171dc300LL),
-      reale(0x1b183c4bLL,0x1387e899cf580LL),
-      reale(-0x6358dd2LL,0xcb8630076b268LL),
-      reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[61]
-      real(0x2b077c634ede840LL),real(0x39e80232e455600LL),
-      real(0x4f004399e9803c0LL),real(0x6d6a8dd96e7d980LL),
-      real(0x9a16639c690ff40LL),real(0xdd0eb6a29ee1d00LL),
-      real(0x143ca2e567649ac0LL),real(0x1e583a687f6ce080LL),
-      real(0x2ebb5ae27bca9640LL),real(0x4a366ef6d0a8e400LL),
-      real(0x7a244f6987aeb1c0LL),reale(3355LL,0xff6a995ee780LL),
-      reale(6059LL,0x95d9afc38ad40LL),reale(11647LL,0x91c4ac30bab00LL),
-      reale(24220LL,0xbe377a4d448c0LL),reale(55835LL,0xd9394a033ee80LL),
-      reale(148417LL,0x27a782b394440LL),reale(488256LL,0xe5126fdac7200LL),
-      reale(0x237053LL,0xb040a0735fc0LL),reale(0x1ab8c92LL,0x3d9464fe1f580LL),
-      reale(-0x10652586LL,0xd6f2b98ea5b40LL),
-      reale(0x28ea01e9LL,0x6984a82213900LL),
-      reale(-0x286594f9LL,0x60904c969f6c0LL),
-      reale(0x9081419LL,0x682a2ddefc80LL),reale(0xa12db56LL,0xfd6a53329f240LL),
-      reale(-0x5148b4fLL,0xec568463291f8LL),
+      // C4[1], coeff of eps^3, polynomial in n of order 26
+      real(-0x34f88b61ee2c2e60LL),real(-0x40e8b73250ad02b0LL),
+      real(-0x50402824a1190680LL),real(-0x643133a56bf6de50LL),
+      real(-0x7e70b50d7e53aea0LL),reale(-2584LL,0x76116efc39410LL),
+      reale(-3344LL,0xd2a9490df5540LL),reale(-4391LL,0x6eaf4118b9070LL),
+      reale(-5863LL,0x134611e898120LL),reale(-7979LL,0x64baaeea752d0LL),
+      reale(-11097LL,0xec88b5a185100LL),reale(-15826LL,0xc0dc248c81730LL),
+      reale(-23249LL,0xf0ba5cbf340e0LL),reale(-35381LL,0x50bb879d81990LL),
+      reale(-56210LL,0xf757e0cd1ccc0LL),reale(-94206LL,0xd06751da895f0LL),
+      reale(-169094LL,0x151b52b1170a0LL),reale(-332578LL,0xf12799bfc850LL),
+      reale(-743996LL,0x6f9cff04ba880LL),reale(-0x1eebfeLL,0x63917bb86ecb0LL),
+      reale(-0x775923LL,0x8ace3e96bf060LL),
+      reale(-0x471a981LL,0xe12bc4d183f10LL),
+      reale(0x211f5d66LL,0x34418f385c440LL),
+      reale(-0x3a18e3bfLL,0x7b0b598ecfb70LL),
+      reale(0x1f6fcfcdLL,0x42f7f1faaa020LL),
+      reale(0x5a50c8fLL,0xa411a5cab5dd0LL),
+      reale(-0x6fc3f8cLL,0xa4f6f608588b5LL),
+      reale(0x2dd761028LL,0x56b51693aedc3LL),
+      // C4[1], coeff of eps^2, polynomial in n of order 27
+      real(-0x1bd57a8f504dd3c0LL),real(-0x21b6ff10b9172180LL),
+      real(-0x292825cda3a88940LL),real(-0x32aacbfadedfca00LL),
+      real(-0x3ef38a62fa0322c0LL),real(-0x4f013a1cfd80d280LL),
+      real(-0x64414a4729c69840LL),reale(-2061LL,0x6f152d95fcd00LL),
+      reale(-2684LL,0xdc83926d41e40LL),reale(-3548LL,0xc265fa3cc1c80LL),
+      reale(-4771LL,0x913625a6408c0LL),reale(-6542LL,0xfe9a81bee2400LL),
+      reale(-9171LL,0xe574b6bb02f40LL),reale(-13191LL,0x4f96bef7feb80LL),
+      reale(-19555LL,0x61c6c5c4f99c0LL),reale(-30048LL,0x45cfafabb7b00LL),
+      reale(-48225LL,0x8f82b0b095040LL),reale(-81690LL,0xfa35bf4ada80LL),
+      reale(-148266LL,0x546f21a745ac0LL),reale(-294963LL,0x9bc8c4fb81200LL),
+      reale(-667588LL,0x3f3977057c140LL),reale(-0x1c14faLL,0xf37bd27dd2980LL),
+      reale(-0x6dd992LL,0x3beb764a8bc0LL),
+      reale(-0x42b1cf8LL,0x24613ead42900LL),
+      reale(0x204e2080LL,0xe60e5a413c240LL),
+      reale(-0x3f388cb0LL,0xd26d8bee71880LL),
+      reale(0x31ac6e89LL,0xa3ce7fc4a6cc0LL),
+      reale(-0xdf87f17LL,0x49edec10b116aLL),
+      reale(0x2dd761028LL,0x56b51693aedc3LL),
+      // C4[1], coeff of eps^1, polynomial in n of order 28
+      real(-0xb4c355cd41c92c0LL),real(-0xd8fea3a41cc7830LL),
+      real(-0x1064f0c6b9a6ad20LL),real(-0x13f7a88902ef1b10LL),
+      real(-0x1884a414973fcb80LL),real(-0x1e5fa2ae5243d7f0LL),
+      real(-0x25fe0bb384ddd9e0LL),real(-0x3006f6e3e0e25ad0LL),
+      real(-0x3d6c2c13c34ec440LL),real(-0x4f91f34825bd4fb0LL),
+      real(-0x688ffb74f98676a0LL),reale(-2234LL,0x213cc44f79d70LL),
+      reale(-3037LL,0x1ac7bc3d32300LL),reale(-4214LL,0x4ec1eec81c090LL),
+      reale(-5985LL,0x55e3357541ca0LL),reale(-8733LL,0x4677f29396db0LL),
+      reale(-13153LL,0xe152303028a40LL),reale(-20567LL,0xb1e8ad3c3f8d0LL),
+      reale(-33654LL,0xbd9d5a867fe0LL),reale(-58248LL,0xc5bdf1cadb5f0LL),
+      reale(-108258LL,0x86cb0c61c1180LL),reale(-221026LL,0x5333e3f23f910LL),
+      reale(-514223LL,0x447ad055320LL),reale(-0x163b46LL,0xd6175bf8f1630LL),
+      reale(-0x58ed15LL,0x585d6fe3c58c0LL),
+      reale(-0x363078aLL,0x9d8f02ecc6150LL),
+      reale(0x18d63744LL,0xd1e73fe253660LL),
+      reale(-0x254152e8LL,0xc525202c82e70LL),
+      reale(0x104c9445LL,0x29bfc1ec86bafLL),
+      reale(0x2dd761028LL,0x56b51693aedc3LL),
+      // C4[2], coeff of eps^29, polynomial in n of order 0
+      real(185528LL),real(0x715c339b9LL),
+      // C4[2], coeff of eps^28, polynomial in n of order 1
+      real(0x40b1fa340LL),real(0x1068358d8LL),real(0x74e318fa9c07fLL),
+      // C4[2], coeff of eps^27, polynomial in n of order 2
+      real(0x601aa15d00LL),real(-0x39c62a4580LL),real(0x2655784c18LL),
+      real(0x4d882f0532d9e9LL),
+      // C4[2], coeff of eps^26, polynomial in n of order 3
+      real(0x11462b92d913a0LL),real(-0xdd4620ebadc40LL),
+      real(0x5974730e46be0LL),real(0x16bcec57851ccLL),
+      reale(33547LL,0x1cf91962af003LL),
+      // C4[2], coeff of eps^25, polynomial in n of order 4
+      real(0xc83679b433c00LL),real(-0xb29b6d58dfb00LL),real(0x5f4e3bdd4de00LL),
+      real(-0x3affd9960e900LL),real(0x2665fb625f490LL),
+      reale(15809LL,0x8f200ee7e2a7dLL),
+      // C4[2], coeff of eps^24, polynomial in n of order 5
+      real(0x67b92a8524a18e80LL),real(-0x609d7d3ca356ae00LL),
+      real(0x39db180d1b52d580LL),real(-0x2fa1e9183dec9700LL),
+      real(0x1294d8f2627edc80LL),real(0x4bc94ddbc9bad70LL),
+      reale(0x15c1a09LL,0xc1b4051297e97LL),
+      // C4[2], coeff of eps^23, polynomial in n of order 6
+      reale(24830LL,0x3d0fb879bb600LL),reale(-23213LL,0x5eff9ca332500LL),
+      reale(14957LL,0x147cd156ba400LL),reale(-13654LL,0xae15b46376300LL),
+      reale(7024LL,0x2535370909200LL),reale(-4512LL,0xc509c49f36100LL),
+      reale(2865LL,0xf50f5adcce1f0LL),reale(0xe0d0d0fLL,0x7c44346acc6c3LL),
+      // C4[2], coeff of eps^22, polynomial in n of order 7
+      reale(0xff64cLL,0x25a6222f26060LL),reale(-949437LL,0xeb5c58dd0e7c0LL),
+      reale(652845LL,0xb96689ab42720LL),reale(-615920LL,0x90ecba54afa80LL),
+      reale(356624LL,0x982d38f2a9de0LL),reale(-303840LL,0xdd3c82a37cd40LL),
+      reale(113262LL,0x286189b57e4a0LL),reale(28978LL,0x12ae8b059bc84LL),
+      reale(0x1977a7ac1LL,0x13b9f01928417LL),
+      // C4[2], coeff of eps^21, polynomial in n of order 8
+      reale(0x46db68LL,0x71b79cbf7cc00LL),reale(-0x3c6911LL,0x7c1c75b062e80LL),
+      reale(0x2ca63cLL,0x6f81ce5fc3900LL),reale(-0x298bb1LL,0x22fc20ad7d380LL),
+      reale(0x1a1b5cLL,0xc70403130e600LL),reale(-0x1875afLL,0x6144896985880LL),
+      reale(787738LL,0x6bf60987b1300LL),reale(-530213LL,0x321d57754fd80LL),
+      reale(326645LL,0xab9033855e368LL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
+      // C4[2], coeff of eps^20, polynomial in n of order 9
+      reale(0x241ac8LL,0x4fc26559c91c0LL),reale(-0x1bf00eLL,0xb28cda67dbe00LL),
+      reale(0x168b71LL,0x62c9a90a52a40LL),reale(-0x13d469LL,0x1840867dcae80LL),
+      reale(885946LL,0x5cb0a99f5e2c0LL),reale(-843741LL,0xb8eac147bdf00LL),
+      reale(469359LL,0x79db9d7cfb40LL),reale(-417112LL,0xe5b3a1db88f80LL),
+      reale(146559LL,0x51b0aa3dcb3c0LL),reale(37677LL,0x6dd5ee66abd48LL),
+      reale(0x1977a7ac1LL,0x13b9f01928417LL),
+      // C4[2], coeff of eps^19, polynomial in n of order 10
+      reale(0xadcce1LL,0xa8f910291300LL),reale(-0x75f1e7LL,0x90dc30b83db80LL),
+      reale(0x69bb72LL,0x5fb765e065c00LL),reale(-0x5425f0LL,0xa14f789ec9c80LL),
+      reale(0x3f4bc6LL,0x27d6c40aa500LL),reale(-0x39cf42LL,0x10ccffe37d80LL),
+      reale(0x2370a9LL,0x1de03c2bc2e00LL),reale(-0x2225b7LL,0x88489bd46be80LL),
+      reale(0xfd491LL,0x571c66f013700LL),reale(-742166LL,0x73c6192a49f80LL),
+      reale(439349LL,0xf7cfa6e796fc8LL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
+      // C4[2], coeff of eps^18, polynomial in n of order 11
+      reale(0x12bba7dLL,0x3eb0d373a0e0LL),reale(-0xad54abLL,0xf67170f6ec640LL),
+      reale(0xadaa07LL,0xacc1b03fd73a0LL),reale(-0x778be1LL,0xf6d8be422c500LL),
+      reale(0x65b1d0LL,0xa317edb25b660LL),reale(-0x542b13LL,0xc007833bc43c0LL),
+      reale(0x399755LL,0xd5e83edc68920LL),reale(-0x36d934LL,0x413609e8fe280LL),
+      reale(0x1d1eb0LL,0x61c5f793c0be0LL),reale(-0x1b40eeLL,0x50c085e64140LL),
+      reale(579905LL,0x9d50696085ea0LL),reale(150042LL,0xa9efa9004c604LL),
       reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[62]
-      real(0x7d5242068d47400LL),real(0xac3832c9e621080LL),
-      real(0xf0840d5e59cf500LL),real(0x155fabefd3362980LL),
-      real(0x1f01ffac4c30b600LL),real(0x2e0489bbd6aca280LL),
-      real(0x461560bdbc05f700LL),real(0x6df6210d29c3bb80LL),
-      reale(2857LL,0xf2e1b87d2f800LL),reale(4836LL,0xd8d8f4249b480LL),
-      reale(8600LL,0x17271d36df900LL),reale(16248LL,0x163bc1ffccd80LL),
-      reale(33146LL,0xc23750bad3a00LL),reale(74792LL,0x260310eab4680LL),
-      reale(194024LL,0xef2cdae46fb00LL),reale(620545LL,0xfcf47db535f80LL),
-      reale(0x2b8b50LL,0x7228ad7b17c00LL),reale(0x1f74e40LL,0x1c4ce82435880LL),
-      reale(-0x122cfb29LL,0x7c10d8d02fd00LL),
-      reale(0x28ff4a54LL,0xf9e0f9c397180LL),
-      reale(-0x1f608828LL,0x5e31db7d1be00LL),
-      reale(-0x6088182LL,0x4f9a39083ea80LL),
-      reale(0x1483dee1LL,0xf79ee4a13ff00LL),
-      reale(-0x908141aLL,0xf97d5d2210380LL),
-      reale(0xe96e56LL,0x380aba4a19708LL),
+      // C4[2], coeff of eps^17, polynomial in n of order 12
+      reale(0x248be97LL,0x1e48683dc9800LL),
+      reale(-0x11c1252LL,0x8d886e0720600LL),
+      reale(0x132e820LL,0xb841223d75400LL),
+      reale(-0xaf6a02LL,0x67c70d66ce200LL),reale(0xabd6beLL,0x21fd3747b1000LL),
+      reale(-0x79788dLL,0xf8aeca1163e00LL),reale(0x5fc04eLL,0xa8a2fa972cc00LL),
+      reale(-0x537d4eLL,0xf6ba20bb91a00LL),reale(0x3240f2LL,0x6eab44c698800LL),
+      reale(-0x31b62aLL,0xaa6209a607600LL),reale(0x1560e1LL,0x756ea738a4400LL),
+      reale(-0x1094a6LL,0xb6346b575200LL),reale(610116LL,0x479bdc6c290e0LL),
       reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[63]
-      real(0x14f52a063dc5fc20LL),real(0x1d93a1e9ceb48740LL),
-      real(0x2a911c303b723a60LL),real(0x3ea26bba66a54980LL),
-      real(0x5e84fad71b3608a0LL),reale(2349LL,0x85d3117e94bc0LL),
-      reale(3776LL,0x1c9d51cf2c6e0LL),reale(6317LL,0x5193932d16e00LL),
-      reale(11091LL,0xc7716ff97d520LL),reale(20667LL,0xe33c2c4a29040LL),
-      reale(41523LL,0x1a30a42ae9360LL),reale(92100LL,0xbd0a1f1419280LL),
-      reale(234309LL,0x70b77706661a0LL),reale(732507LL,0x72fafb4df54c0LL),
-      reale(0x320008LL,0xe462aef209fe0LL),reale(0x22dbcdeLL,0x4c4d10a4b700LL),
-      reale(-0x132620deLL,0x8df40e97cae20LL),
-      reale(0x279e24c2LL,0x65892c55e9940LL),
-      reale(-0x17be2cbaLL,0xd47d10be3ec60LL),
-      reale(-0xd74bd77LL,0xdbfaff29db80LL),
-      reale(0x13b0d7ddLL,0xbb7252695baa0LL),
-      reale(-0x4e95abdLL,0xc80efb51f5dc0LL),
-      reale(-0x4bd947LL,0xad40a333378e0LL),
-      reale(-0x32055cLL,0x61b48ef01f1ecLL),
+      // C4[2], coeff of eps^16, polynomial in n of order 13
+      reale(0x62050b9LL,0x98fe5a9192500LL),
+      reale(-0x2677ae9LL,0x333f7657aec00LL),
+      reale(0x264e114LL,0x6e617f3b73300LL),
+      reale(-0x11c1132LL,0x6aac92aa89a00LL),
+      reale(0x1390795LL,0xd39b96f5ec100LL),
+      reale(-0xb265f0LL,0x83eeab44f4800LL),reale(0xa78bc2LL,0x40d1adbe6cf00LL),
+      reale(-0x7bab0eLL,0xb5bcc4049f600LL),reale(0x575fc7LL,0xc3b2b2965d00LL),
+      reale(-0x51597cLL,0x5baa627f3a400LL),reale(0x290935LL,0x7cf2f82446b00LL),
+      reale(-0x28df61LL,0x86fb00d475200LL),reale(779755LL,0xfacbca777f900LL),
+      reale(203539LL,0xb4670b88476e0LL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
+      // C4[2], coeff of eps^15, polynomial in n of order 14
+      reale(-0x1637607LL,0x7417d1cb19c00LL),
+      reale(-0xf4a37f1LL,0xed9b0a7914a00LL),
+      reale(0x685a0eeLL,0x9692235ce1800LL),
+      reale(-0x2626f1aLL,0x890b853866600LL),
+      reale(0x28415acLL,0x9175627089400LL),
+      reale(-0x11c63deLL,0xc9f2fbcc70200LL),
+      reale(0x13d0a4bLL,0x32d7f69c1000LL),reale(-0xb6c839LL,0xc3903196e1e00LL),
+      reale(0x9fb99bLL,0x890cbd2438c00LL),reale(-0x7dd5a8LL,0xa26a576d6ba00LL),
+      reale(0x4c02caLL,0x2e83f5dba0800LL),reale(-0x4c42fdLL,0xb72db6f1bd600LL),
+      reale(0x1dc01cLL,0xd6b9d613a8400LL),reale(-0x19bddbLL,0xbd7bf32987200LL),
+      reale(881316LL,0x5154c853b06e0LL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
+      // C4[2], coeff of eps^14, polynomial in n of order 15
+      reale(-0x12d3870aLL,0xfed855e046aa0LL),
+      reale(0x1af1fec8LL,0x32f06289dc340LL),
+      reale(-0x22b4154LL,0x36fa2d22f43e0LL),
+      reale(-0xfd64a70LL,0xbeb3c369ad080LL),
+      reale(0x70055d1LL,0xb44ff33f8ed20LL),
+      reale(-0x258d145LL,0x461ade3a39dc0LL),
+      reale(0x2a627afLL,0x98c20ae94660LL),
+      reale(-0x11de8e4LL,0x6f772f6318b00LL),
+      reale(0x13d399eLL,0x74772cb6e2fa0LL),
+      reale(-0xbd323eLL,0x3c6343e91f840LL),reale(0x9300dfLL,0x48be8ec7788e0LL),
+      reale(-0x7f0b78LL,0x70edb92224580LL),reale(0x3d3a8fLL,0x8a9763f933220LL),
+      reale(-0x415d9eLL,0xf1ea42a8bd2c0LL),reale(0x103fd6LL,0x3e0322e890b60LL),
+      reale(281445LL,0x189dacfa2913cLL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
+      // C4[2], coeff of eps^13, polynomial in n of order 16
+      reale(0x464e57LL,0xc9d7900c88800LL),reale(0x2a76e7cLL,0x61b96ac1eb380LL),
+      reale(-0x13176d8fLL,0x5d892cbaf1700LL),
+      reale(0x1c18ba77LL,0x4d0623cc86a80LL),
+      reale(-0x321a1a4LL,0xbfb0e5a4f6600LL),
+      reale(-0x10682b73LL,0xccb744abc180LL),
+      reale(0x7976d08LL,0xbf0504ec13500LL),
+      reale(-0x2499455LL,0x8b7cc14387880LL),
+      reale(0x2ca231aLL,0x6a3245e5c4400LL),
+      reale(-0x122405bLL,0xc425eef0e4f80LL),
+      reale(0x136dcbaLL,0xf7fc04d85300LL),reale(-0xc63e4eLL,0x7da8fffdd0680LL),
+      reale(0x7fc999LL,0xba502a56d2200LL),reale(-0x7cedeaLL,0xf72b757445d80LL),
+      reale(0x2b02dcLL,0x7113503f27100LL),reale(-0x2b403fLL,0xdfc70fb41480LL),
+      reale(0x146a3dLL,0xc906f381aecf8LL),
       reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[64]
-      real(0x367dbe5da7953e00LL),real(0x4f9a921ac6fb1900LL),
-      real(0x773454548df74400LL),reale(2938LL,0xbc18faed4af00LL),
-      reale(4681LL,0x407a350a64a00LL),reale(7756LL,0xa0ed83ee90500LL),
-      reale(13477LL,0x2fbfd87edd000LL),reale(24826LL,0x9ea174e739b00LL),
-      reale(49249LL,0xd3391f1d95600LL),reale(107696LL,0xcac2013cff100LL),
-      reale(269571LL,0xe064d3a745c00LL),reale(826840LL,0x70825da398700LL),
-      reale(0x3724baLL,0x7ef0aa40a6200LL),reale(0x254ed8eLL,0xc5673698bdd00LL),
-      reale(-0x13a3a62cLL,0xac09a5366e800LL),
-      reale(0x25c56c79LL,0xfeb5c44027300LL),
-      reale(-0x11eb40c6LL,0x130f604156e00LL),
-      reale(-0x10bb26e7LL,0xf311f5df8c900LL),
-      reale(0x10d91d96LL,0x7b726e8a17400LL),
-      reale(-0x2c8e4a1LL,0xee20173aa5f00LL),
-      reale(0x1670215LL,0x90f427ad67a00LL),
-      reale(-0x2047cb8LL,0xa153ca0f2b500LL),
-      reale(0x71c5e9LL,0x7c1f0b332cab0LL),
+      // C4[2], coeff of eps^12, polynomial in n of order 17
+      reale(388658LL,0x19c7c6f8ea2c0LL),reale(0x110f13LL,0xaadcbdb38ac00LL),
+      reale(0x44f688LL,0xaee28ee393540LL),reale(0x2a3a167LL,0xe09b9f50af680LL),
+      reale(-0x135760f0LL,0xfa3ff451d67c0LL),
+      reale(0x1d5df81cLL,0x7d1cc3fd18100LL),
+      reale(-0x454aadbLL,0x4bd7f940e7a40LL),
+      reale(-0x10fb9d46LL,0xa8337b5aa8b80LL),
+      reale(0x854bb7cLL,0x33e950dc3acc0LL),
+      reale(-0x233fdffLL,0x108f3ffa45600LL),
+      reale(0x2ed8284LL,0xa052562f03f40LL),
+      reale(-0x12c4f6cLL,0x455afdd952080LL),
+      reale(0x125c4c6LL,0xc3af9265b71c0LL),
+      reale(-0xd1e3eeLL,0xd0f69f3f32b00LL),reale(0x64b5a8LL,0x6565773f88440LL),
+      reale(-0x71df96LL,0x40467d1acb580LL),reale(0x162aa7LL,0x6b2cd84feb6c0LL),
+      reale(390635LL,0x965de9321fbe8LL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
+      // C4[2], coeff of eps^11, polynomial in n of order 18
+      reale(73868LL,0xf53613318fd00LL),reale(155158LL,0x6bea1fc037e80LL),
+      reale(370865LL,0xe686995a3a800LL),reale(0x10711bLL,0xb6b00d00e5180LL),
+      reale(0x4346d6LL,0x1d5f244685300LL),reale(0x29d4026LL,0xf94485a638480LL),
+      reale(-0x139055a1LL,0xdab4c7fcfbe00LL),
+      reale(0x1ec53d8aLL,0x48cfde1d3d780LL),
+      reale(-0x5d7cb8fLL,0x38dd86fe2a900LL),
+      reale(-0x1187fe00LL,0xbe22a3400a80LL),
+      reale(0x946226dLL,0xc58331ae9d400LL),
+      reale(-0x218a06fLL,0x93c7df2f8dd80LL),
+      reale(0x30a8d25LL,0xfcae9f00dff00LL),
+      reale(-0x140f356LL,0x94f7bf31f1080LL),
+      reale(0x103f195LL,0xa0ab037f7ea00LL),
+      reale(-0xdd91faLL,0xdf676e1036380LL),reale(0x41f2a0LL,0xda1143d705500LL),
+      reale(-0x51369eLL,0x61264bb869680LL),reale(0x210ac3LL,0xa5af00ad58358LL),
       reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[65]
-      reale(2297LL,0xe5959dcaf9680LL),reale(3515LL,0xaf44e93439a00LL),
-      reale(5557LL,0xf844363205d80LL),reale(9134LL,0x3148872cf3100LL),
-      reale(15730LL,0x1f27208afe480LL),reale(28695LL,0xbe2e993314800LL),
-      reale(56314LL,0x2c7b05479ab80LL),reale(121661LL,0x287926e675f00LL),
-      reale(300328LL,0xfc8a376113280LL),reale(906274LL,0xf1fb199eef600LL),
-      reale(0x3b3ff8LL,0x5f528c391f980LL),reale(0x2711f7cLL,0xe6e08c5558d00LL),
-      reale(-0x13d5918eLL,0x7d7d5b5af8080LL),
-      reale(0x23da480bLL,0xf6ba284c8a400LL),
-      reale(-0xd8ea982LL,0x9bd02ddc54780LL),
-      reale(-0x11f820b7LL,0x41a6893a5bb00LL),
-      reale(0xe32cb81LL,0x57c5b91e6ce80LL),
-      reale(-0x20fb023LL,0xbe1353b0a5200LL),
-      reale(0x27c3b47LL,0xee870caef9580LL),
-      reale(-0x1fa5626LL,0xf5ba90863e900LL),
-      reale(0x157973LL,0x27b05f0931c80LL),reale(329283LL,0x26010fabff570LL),
+      // C4[2], coeff of eps^10, polynomial in n of order 19
+      reale(19809LL,0x63304b335a660LL),reale(35566LL,0xcb4164f348e40LL),
+      reale(68577LL,0xe86c972757e20LL),reale(145245LL,0xbc9cc7446e200LL),
+      reale(350489LL,0x7e29a3d4285e0LL),reale(0xfb676LL,0x45087f82835c0LL),
+      reale(0x412afaLL,0x2203011585da0LL),reale(0x2937edeLL,0xa65b618eca980LL),
+      reale(-0x13bdb295LL,0x576332adca560LL),
+      reale(0x205195efLL,0x200e3727c5d40LL),
+      reale(-0x7c632f7LL,0xc474e2af2fd20LL),
+      reale(-0x11fc547cLL,0xd3b27c9077100LL),
+      reale(0xa7f0802LL,0x8ddfe73d104e0LL),
+      reale(-0x1fbd3e8LL,0x73ed1d57a04c0LL),
+      reale(0x3152629LL,0x23cc103525ca0LL),
+      reale(-0x16778e7LL,0x8901f18f03880LL),
+      reale(0xca2edcLL,0x69c1c450ca460LL),reale(-0xdeb585LL,0x2757f5c2a2c40LL),
+      reale(0x1c3526LL,0x7d3564e37c20LL),reale(506231LL,0x2a6100a6a6db4LL),
       reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[66]
+      // C4[2], coeff of eps^9, polynomial in n of order 20
       reale(6397LL,0xfcd62c9faa400LL),reale(10440LL,0x3fc8ff8e75700LL),
       reale(17841LL,0xb7bede1dba00LL),reale(32272LL,0x7935213063d00LL),
       reale(62742LL,0x8933a9bfd5000LL),reale(134128LL,0x223daf23d6300LL),
@@ -4914,303 +4957,288 @@ namespace GeographicLib {
       reale(0x74c561LL,0x1c15203ae6a00LL),reale(-0xb3ca97LL,0xd487d80dc6d00LL),
       reale(0x3a28edLL,0x362856b8e6d30LL),
       reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[67]
-      reale(19809LL,0x63304b335a660LL),reale(35566LL,0xcb4164f348e40LL),
-      reale(68577LL,0xe86c972757e20LL),reale(145245LL,0xbc9cc7446e200LL),
-      reale(350489LL,0x7e29a3d4285e0LL),reale(0xfb676LL,0x45087f82835c0LL),
-      reale(0x412afaLL,0x2203011585da0LL),reale(0x2937edeLL,0xa65b618eca980LL),
-      reale(-0x13bdb295LL,0x576332adca560LL),
-      reale(0x205195efLL,0x200e3727c5d40LL),
-      reale(-0x7c632f7LL,0xc474e2af2fd20LL),
-      reale(-0x11fc547cLL,0xd3b27c9077100LL),
-      reale(0xa7f0802LL,0x8ddfe73d104e0LL),
-      reale(-0x1fbd3e8LL,0x73ed1d57a04c0LL),
-      reale(0x3152629LL,0x23cc103525ca0LL),
-      reale(-0x16778e7LL,0x8901f18f03880LL),
-      reale(0xca2edcLL,0x69c1c450ca460LL),reale(-0xdeb585LL,0x2757f5c2a2c40LL),
-      reale(0x1c3526LL,0x7d3564e37c20LL),reale(506231LL,0x2a6100a6a6db4LL),
+      // C4[2], coeff of eps^8, polynomial in n of order 21
+      reale(2297LL,0xe5959dcaf9680LL),reale(3515LL,0xaf44e93439a00LL),
+      reale(5557LL,0xf844363205d80LL),reale(9134LL,0x3148872cf3100LL),
+      reale(15730LL,0x1f27208afe480LL),reale(28695LL,0xbe2e993314800LL),
+      reale(56314LL,0x2c7b05479ab80LL),reale(121661LL,0x287926e675f00LL),
+      reale(300328LL,0xfc8a376113280LL),reale(906274LL,0xf1fb199eef600LL),
+      reale(0x3b3ff8LL,0x5f528c391f980LL),reale(0x2711f7cLL,0xe6e08c5558d00LL),
+      reale(-0x13d5918eLL,0x7d7d5b5af8080LL),
+      reale(0x23da480bLL,0xf6ba284c8a400LL),
+      reale(-0xd8ea982LL,0x9bd02ddc54780LL),
+      reale(-0x11f820b7LL,0x41a6893a5bb00LL),
+      reale(0xe32cb81LL,0x57c5b91e6ce80LL),
+      reale(-0x20fb023LL,0xbe1353b0a5200LL),
+      reale(0x27c3b47LL,0xee870caef9580LL),
+      reale(-0x1fa5626LL,0xf5ba90863e900LL),
+      reale(0x157973LL,0x27b05f0931c80LL),reale(329283LL,0x26010fabff570LL),
+      reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
+      // C4[2], coeff of eps^7, polynomial in n of order 22
+      real(0x367dbe5da7953e00LL),real(0x4f9a921ac6fb1900LL),
+      real(0x773454548df74400LL),reale(2938LL,0xbc18faed4af00LL),
+      reale(4681LL,0x407a350a64a00LL),reale(7756LL,0xa0ed83ee90500LL),
+      reale(13477LL,0x2fbfd87edd000LL),reale(24826LL,0x9ea174e739b00LL),
+      reale(49249LL,0xd3391f1d95600LL),reale(107696LL,0xcac2013cff100LL),
+      reale(269571LL,0xe064d3a745c00LL),reale(826840LL,0x70825da398700LL),
+      reale(0x3724baLL,0x7ef0aa40a6200LL),reale(0x254ed8eLL,0xc5673698bdd00LL),
+      reale(-0x13a3a62cLL,0xac09a5366e800LL),
+      reale(0x25c56c79LL,0xfeb5c44027300LL),
+      reale(-0x11eb40c6LL,0x130f604156e00LL),
+      reale(-0x10bb26e7LL,0xf311f5df8c900LL),
+      reale(0x10d91d96LL,0x7b726e8a17400LL),
+      reale(-0x2c8e4a1LL,0xee20173aa5f00LL),
+      reale(0x1670215LL,0x90f427ad67a00LL),
+      reale(-0x2047cb8LL,0xa153ca0f2b500LL),
+      reale(0x71c5e9LL,0x7c1f0b332cab0LL),
       reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[68]
-      reale(73868LL,0xf53613318fd00LL),reale(155158LL,0x6bea1fc037e80LL),
-      reale(370865LL,0xe686995a3a800LL),reale(0x10711bLL,0xb6b00d00e5180LL),
-      reale(0x4346d6LL,0x1d5f244685300LL),reale(0x29d4026LL,0xf94485a638480LL),
-      reale(-0x139055a1LL,0xdab4c7fcfbe00LL),
-      reale(0x1ec53d8aLL,0x48cfde1d3d780LL),
-      reale(-0x5d7cb8fLL,0x38dd86fe2a900LL),
-      reale(-0x1187fe00LL,0xbe22a3400a80LL),
-      reale(0x946226dLL,0xc58331ae9d400LL),
-      reale(-0x218a06fLL,0x93c7df2f8dd80LL),
-      reale(0x30a8d25LL,0xfcae9f00dff00LL),
-      reale(-0x140f356LL,0x94f7bf31f1080LL),
-      reale(0x103f195LL,0xa0ab037f7ea00LL),
-      reale(-0xdd91faLL,0xdf676e1036380LL),reale(0x41f2a0LL,0xda1143d705500LL),
-      reale(-0x51369eLL,0x61264bb869680LL),reale(0x210ac3LL,0xa5af00ad58358LL),
+      // C4[2], coeff of eps^6, polynomial in n of order 23
+      real(0x14f52a063dc5fc20LL),real(0x1d93a1e9ceb48740LL),
+      real(0x2a911c303b723a60LL),real(0x3ea26bba66a54980LL),
+      real(0x5e84fad71b3608a0LL),reale(2349LL,0x85d3117e94bc0LL),
+      reale(3776LL,0x1c9d51cf2c6e0LL),reale(6317LL,0x5193932d16e00LL),
+      reale(11091LL,0xc7716ff97d520LL),reale(20667LL,0xe33c2c4a29040LL),
+      reale(41523LL,0x1a30a42ae9360LL),reale(92100LL,0xbd0a1f1419280LL),
+      reale(234309LL,0x70b77706661a0LL),reale(732507LL,0x72fafb4df54c0LL),
+      reale(0x320008LL,0xe462aef209fe0LL),reale(0x22dbcdeLL,0x4c4d10a4b700LL),
+      reale(-0x132620deLL,0x8df40e97cae20LL),
+      reale(0x279e24c2LL,0x65892c55e9940LL),
+      reale(-0x17be2cbaLL,0xd47d10be3ec60LL),
+      reale(-0xd74bd77LL,0xdbfaff29db80LL),
+      reale(0x13b0d7ddLL,0xbb7252695baa0LL),
+      reale(-0x4e95abdLL,0xc80efb51f5dc0LL),
+      reale(-0x4bd947LL,0xad40a333378e0LL),
+      reale(-0x32055cLL,0x61b48ef01f1ecLL),
       reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[69]
-      reale(388658LL,0x19c7c6f8ea2c0LL),reale(0x110f13LL,0xaadcbdb38ac00LL),
-      reale(0x44f688LL,0xaee28ee393540LL),reale(0x2a3a167LL,0xe09b9f50af680LL),
-      reale(-0x135760f0LL,0xfa3ff451d67c0LL),
-      reale(0x1d5df81cLL,0x7d1cc3fd18100LL),
-      reale(-0x454aadbLL,0x4bd7f940e7a40LL),
-      reale(-0x10fb9d46LL,0xa8337b5aa8b80LL),
-      reale(0x854bb7cLL,0x33e950dc3acc0LL),
-      reale(-0x233fdffLL,0x108f3ffa45600LL),
-      reale(0x2ed8284LL,0xa052562f03f40LL),
-      reale(-0x12c4f6cLL,0x455afdd952080LL),
-      reale(0x125c4c6LL,0xc3af9265b71c0LL),
-      reale(-0xd1e3eeLL,0xd0f69f3f32b00LL),reale(0x64b5a8LL,0x6565773f88440LL),
-      reale(-0x71df96LL,0x40467d1acb580LL),reale(0x162aa7LL,0x6b2cd84feb6c0LL),
-      reale(390635LL,0x965de9321fbe8LL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[70]
-      reale(0x464e57LL,0xc9d7900c88800LL),reale(0x2a76e7cLL,0x61b96ac1eb380LL),
-      reale(-0x13176d8fLL,0x5d892cbaf1700LL),
-      reale(0x1c18ba77LL,0x4d0623cc86a80LL),
-      reale(-0x321a1a4LL,0xbfb0e5a4f6600LL),
-      reale(-0x10682b73LL,0xccb744abc180LL),
-      reale(0x7976d08LL,0xbf0504ec13500LL),
-      reale(-0x2499455LL,0x8b7cc14387880LL),
-      reale(0x2ca231aLL,0x6a3245e5c4400LL),
-      reale(-0x122405bLL,0xc425eef0e4f80LL),
-      reale(0x136dcbaLL,0xf7fc04d85300LL),reale(-0xc63e4eLL,0x7da8fffdd0680LL),
-      reale(0x7fc999LL,0xba502a56d2200LL),reale(-0x7cedeaLL,0xf72b757445d80LL),
-      reale(0x2b02dcLL,0x7113503f27100LL),reale(-0x2b403fLL,0xdfc70fb41480LL),
-      reale(0x146a3dLL,0xc906f381aecf8LL),
+      // C4[2], coeff of eps^5, polynomial in n of order 24
+      real(0x7d5242068d47400LL),real(0xac3832c9e621080LL),
+      real(0xf0840d5e59cf500LL),real(0x155fabefd3362980LL),
+      real(0x1f01ffac4c30b600LL),real(0x2e0489bbd6aca280LL),
+      real(0x461560bdbc05f700LL),real(0x6df6210d29c3bb80LL),
+      reale(2857LL,0xf2e1b87d2f800LL),reale(4836LL,0xd8d8f4249b480LL),
+      reale(8600LL,0x17271d36df900LL),reale(16248LL,0x163bc1ffccd80LL),
+      reale(33146LL,0xc23750bad3a00LL),reale(74792LL,0x260310eab4680LL),
+      reale(194024LL,0xef2cdae46fb00LL),reale(620545LL,0xfcf47db535f80LL),
+      reale(0x2b8b50LL,0x7228ad7b17c00LL),reale(0x1f74e40LL,0x1c4ce82435880LL),
+      reale(-0x122cfb29LL,0x7c10d8d02fd00LL),
+      reale(0x28ff4a54LL,0xf9e0f9c397180LL),
+      reale(-0x1f608828LL,0x5e31db7d1be00LL),
+      reale(-0x6088182LL,0x4f9a39083ea80LL),
+      reale(0x1483dee1LL,0xf79ee4a13ff00LL),
+      reale(-0x908141aLL,0xf97d5d2210380LL),
+      reale(0xe96e56LL,0x380aba4a19708LL),
       reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[71]
-      reale(-0x12d3870aLL,0xfed855e046aa0LL),
-      reale(0x1af1fec8LL,0x32f06289dc340LL),
-      reale(-0x22b4154LL,0x36fa2d22f43e0LL),
-      reale(-0xfd64a70LL,0xbeb3c369ad080LL),
-      reale(0x70055d1LL,0xb44ff33f8ed20LL),
-      reale(-0x258d145LL,0x461ade3a39dc0LL),
-      reale(0x2a627afLL,0x98c20ae94660LL),
-      reale(-0x11de8e4LL,0x6f772f6318b00LL),
-      reale(0x13d399eLL,0x74772cb6e2fa0LL),
-      reale(-0xbd323eLL,0x3c6343e91f840LL),reale(0x9300dfLL,0x48be8ec7788e0LL),
-      reale(-0x7f0b78LL,0x70edb92224580LL),reale(0x3d3a8fLL,0x8a9763f933220LL),
-      reale(-0x415d9eLL,0xf1ea42a8bd2c0LL),reale(0x103fd6LL,0x3e0322e890b60LL),
-      reale(281445LL,0x189dacfa2913cLL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[72]
-      reale(-0x1637607LL,0x7417d1cb19c00LL),
-      reale(-0xf4a37f1LL,0xed9b0a7914a00LL),
-      reale(0x685a0eeLL,0x9692235ce1800LL),
-      reale(-0x2626f1aLL,0x890b853866600LL),
-      reale(0x28415acLL,0x9175627089400LL),
-      reale(-0x11c63deLL,0xc9f2fbcc70200LL),
-      reale(0x13d0a4bLL,0x32d7f69c1000LL),reale(-0xb6c839LL,0xc3903196e1e00LL),
-      reale(0x9fb99bLL,0x890cbd2438c00LL),reale(-0x7dd5a8LL,0xa26a576d6ba00LL),
-      reale(0x4c02caLL,0x2e83f5dba0800LL),reale(-0x4c42fdLL,0xb72db6f1bd600LL),
-      reale(0x1dc01cLL,0xd6b9d613a8400LL),reale(-0x19bddbLL,0xbd7bf32987200LL),
-      reale(881316LL,0x5154c853b06e0LL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[73]
-      reale(0x62050b9LL,0x98fe5a9192500LL),
-      reale(-0x2677ae9LL,0x333f7657aec00LL),
-      reale(0x264e114LL,0x6e617f3b73300LL),
-      reale(-0x11c1132LL,0x6aac92aa89a00LL),
-      reale(0x1390795LL,0xd39b96f5ec100LL),
-      reale(-0xb265f0LL,0x83eeab44f4800LL),reale(0xa78bc2LL,0x40d1adbe6cf00LL),
-      reale(-0x7bab0eLL,0xb5bcc4049f600LL),reale(0x575fc7LL,0xc3b2b2965d00LL),
-      reale(-0x51597cLL,0x5baa627f3a400LL),reale(0x290935LL,0x7cf2f82446b00LL),
-      reale(-0x28df61LL,0x86fb00d475200LL),reale(779755LL,0xfacbca777f900LL),
-      reale(203539LL,0xb4670b88476e0LL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[74]
-      reale(0x248be97LL,0x1e48683dc9800LL),
-      reale(-0x11c1252LL,0x8d886e0720600LL),
-      reale(0x132e820LL,0xb841223d75400LL),
-      reale(-0xaf6a02LL,0x67c70d66ce200LL),reale(0xabd6beLL,0x21fd3747b1000LL),
-      reale(-0x79788dLL,0xf8aeca1163e00LL),reale(0x5fc04eLL,0xa8a2fa972cc00LL),
-      reale(-0x537d4eLL,0xf6ba20bb91a00LL),reale(0x3240f2LL,0x6eab44c698800LL),
-      reale(-0x31b62aLL,0xaa6209a607600LL),reale(0x1560e1LL,0x756ea738a4400LL),
-      reale(-0x1094a6LL,0xb6346b575200LL),reale(610116LL,0x479bdc6c290e0LL),
+      // C4[2], coeff of eps^4, polynomial in n of order 25
+      real(0x2b077c634ede840LL),real(0x39e80232e455600LL),
+      real(0x4f004399e9803c0LL),real(0x6d6a8dd96e7d980LL),
+      real(0x9a16639c690ff40LL),real(0xdd0eb6a29ee1d00LL),
+      real(0x143ca2e567649ac0LL),real(0x1e583a687f6ce080LL),
+      real(0x2ebb5ae27bca9640LL),real(0x4a366ef6d0a8e400LL),
+      real(0x7a244f6987aeb1c0LL),reale(3355LL,0xff6a995ee780LL),
+      reale(6059LL,0x95d9afc38ad40LL),reale(11647LL,0x91c4ac30bab00LL),
+      reale(24220LL,0xbe377a4d448c0LL),reale(55835LL,0xd9394a033ee80LL),
+      reale(148417LL,0x27a782b394440LL),reale(488256LL,0xe5126fdac7200LL),
+      reale(0x237053LL,0xb040a0735fc0LL),reale(0x1ab8c92LL,0x3d9464fe1f580LL),
+      reale(-0x10652586LL,0xd6f2b98ea5b40LL),
+      reale(0x28ea01e9LL,0x6984a82213900LL),
+      reale(-0x286594f9LL,0x60904c969f6c0LL),
+      reale(0x9081419LL,0x682a2ddefc80LL),reale(0xa12db56LL,0xfd6a53329f240LL),
+      reale(-0x5148b4fLL,0xec568463291f8LL),
       reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[75]
-      reale(0x12bba7dLL,0x3eb0d373a0e0LL),reale(-0xad54abLL,0xf67170f6ec640LL),
-      reale(0xadaa07LL,0xacc1b03fd73a0LL),reale(-0x778be1LL,0xf6d8be422c500LL),
-      reale(0x65b1d0LL,0xa317edb25b660LL),reale(-0x542b13LL,0xc007833bc43c0LL),
-      reale(0x399755LL,0xd5e83edc68920LL),reale(-0x36d934LL,0x413609e8fe280LL),
-      reale(0x1d1eb0LL,0x61c5f793c0be0LL),reale(-0x1b40eeLL,0x50c085e64140LL),
-      reale(579905LL,0x9d50696085ea0LL),reale(150042LL,0xa9efa9004c604LL),
+      // C4[2], coeff of eps^3, polynomial in n of order 26
+      real(0xc4c78b5f73e700LL),real(0x1046756e5efb980LL),
+      real(0x15cbc98d9fba400LL),real(0x1d9279681ffce80LL),
+      real(0x28b2f34344c6100LL),real(0x38e6214caec8380LL),
+      real(0x50f0f0d0c655e00LL),real(0x7563dc0de2d1880LL),
+      real(0xadfad5eb325db00LL),real(0x1083ab8775a8cd80LL),
+      real(0x19c9d8efc1ad1800LL),real(0x29945e7f0056e280LL),
+      real(0x4594bf2102ba5500LL),real(0x79a9d12705de9780LL),
+      reale(3587LL,0xb2b264e0cd200LL),reale(7053LL,0x1d58043372c80LL),
+      reale(15040LL,0x44c8073c3cf00LL),reale(35667LL,0x702872e47e180LL),
+      reale(97902LL,0x6929355be8c00LL),reale(334186LL,0x1d1de4e87f680LL),
+      reale(0x19542bLL,0xed2beccfc4900LL),reale(0x1421dbfLL,0x53559189eab80LL),
+      reale(-0xd3da750LL,0x738f3f8fc4600LL),
+      reale(0x24d22a8dLL,0x694fabb034080LL),
+      reale(-0x2dda3ea7LL,0x902db171dc300LL),
+      reale(0x1b183c4bLL,0x1387e899cf580LL),
+      reale(-0x6358dd2LL,0xcb8630076b268LL),
       reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[76]
-      reale(0xadcce1LL,0xa8f910291300LL),reale(-0x75f1e7LL,0x90dc30b83db80LL),
-      reale(0x69bb72LL,0x5fb765e065c00LL),reale(-0x5425f0LL,0xa14f789ec9c80LL),
-      reale(0x3f4bc6LL,0x27d6c40aa500LL),reale(-0x39cf42LL,0x10ccffe37d80LL),
-      reale(0x2370a9LL,0x1de03c2bc2e00LL),reale(-0x2225b7LL,0x88489bd46be80LL),
-      reale(0xfd491LL,0x571c66f013700LL),reale(-742166LL,0x73c6192a49f80LL),
-      reale(439349LL,0xf7cfa6e796fc8LL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[77]
-      reale(0x241ac8LL,0x4fc26559c91c0LL),reale(-0x1bf00eLL,0xb28cda67dbe00LL),
-      reale(0x168b71LL,0x62c9a90a52a40LL),reale(-0x13d469LL,0x1840867dcae80LL),
-      reale(885946LL,0x5cb0a99f5e2c0LL),reale(-843741LL,0xb8eac147bdf00LL),
-      reale(469359LL,0x79db9d7cfb40LL),reale(-417112LL,0xe5b3a1db88f80LL),
-      reale(146559LL,0x51b0aa3dcb3c0LL),reale(37677LL,0x6dd5ee66abd48LL),
-      reale(0x1977a7ac1LL,0x13b9f01928417LL),
-      // _C4x[78]
-      reale(0x46db68LL,0x71b79cbf7cc00LL),reale(-0x3c6911LL,0x7c1c75b062e80LL),
-      reale(0x2ca63cLL,0x6f81ce5fc3900LL),reale(-0x298bb1LL,0x22fc20ad7d380LL),
-      reale(0x1a1b5cLL,0xc70403130e600LL),reale(-0x1875afLL,0x6144896985880LL),
-      reale(787738LL,0x6bf60987b1300LL),reale(-530213LL,0x321d57754fd80LL),
-      reale(326645LL,0xab9033855e368LL),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[79]
-      reale(0xff64cLL,0x25a6222f26060LL),reale(-949437LL,0xeb5c58dd0e7c0LL),
-      reale(652845LL,0xb96689ab42720LL),reale(-615920LL,0x90ecba54afa80LL),
-      reale(356624LL,0x982d38f2a9de0LL),reale(-303840LL,0xdd3c82a37cd40LL),
-      reale(113262LL,0x286189b57e4a0LL),reale(28978LL,0x12ae8b059bc84LL),
-      reale(0x1977a7ac1LL,0x13b9f01928417LL),
-      // _C4x[80]
-      reale(24830LL,0x3d0fb879bb600LL),reale(-23213LL,0x5eff9ca332500LL),
-      reale(14957LL,0x147cd156ba400LL),reale(-13654LL,0xae15b46376300LL),
-      reale(7024LL,0x2535370909200LL),reale(-4512LL,0xc509c49f36100LL),
-      reale(2865LL,0xf50f5adcce1f0LL),reale(0xe0d0d0fLL,0x7c44346acc6c3LL),
-      // _C4x[81]
-      real(0x67b92a8524a18e80LL),real(-0x609d7d3ca356ae00LL),
-      real(0x39db180d1b52d580LL),real(-0x2fa1e9183dec9700LL),
-      real(0x1294d8f2627edc80LL),real(0x4bc94ddbc9bad70LL),
-      reale(0x15c1a09LL,0xc1b4051297e97LL),
-      // _C4x[82]
-      real(0xc83679b433c00LL),real(-0xb29b6d58dfb00LL),real(0x5f4e3bdd4de00LL),
-      real(-0x3affd9960e900LL),real(0x2665fb625f490LL),
-      reale(15809LL,0x8f200ee7e2a7dLL),
-      // _C4x[83]
-      real(0x11462b92d913a0LL),real(-0xdd4620ebadc40LL),
-      real(0x5974730e46be0LL),real(0x16bcec57851ccLL),
-      reale(33547LL,0x1cf91962af003LL),
-      // _C4x[84]
-      real(0x601aa15d00LL),real(-0x39c62a4580LL),real(0x2655784c18LL),
-      real(0x4d882f0532d9e9LL),
-      // _C4x[85]
-      real(0x40b1fa340LL),real(0x1068358d8LL),real(0x74e318fa9c07fLL),
-      // _C4x[86]
-      real(185528LL),real(0x715c339b9LL),
-      // _C4x[87]
-      real(-0x10330cb256200LL),real(-0x172cb16211100LL),
-      real(-0x21a8187537800LL),real(-0x31b06260f1f00LL),
-      real(-0x4ab014ab28e00LL),real(-0x7280309c9cd00LL),
-      real(-0xb366eef7be400LL),real(-0x11ff8a58b05b00LL),
-      real(-0x1dae666558ba00LL),real(-0x327547ac4a0900LL),
-      real(-0x58c9207d125000LL),real(-0xa2826b77361700LL),
-      real(-0x137557a5841e600LL),real(-0x275355b4b1bc500LL),
-      real(-0x54b37d85300bc00LL),real(-0xc517d06239a5300LL),
-      real(-0x1f8f2f623d981200LL),real(-0x5b85a3034c390100LL),
-      reale(-5021LL,0x5d11943ced800LL),reale(-21966LL,0xb72ce88a8f100LL),
-      reale(-144344LL,0xb3b965d7ac200LL),reale(-0x268b38LL,0x492c763e44300LL),
-      reale(0x249ddb5LL,0x415c2de726c00LL),
-      reale(-0x9b9ee43LL,0xaa383ce99b500LL),
-      reale(0x1373dc84LL,0xab8f862cc9600LL),
-      reale(-0x12102833LL,0xf2faba4420700LL),
-      reale(0x6358dd1LL,0x3479cff894d98LL),
+      // C4[2], coeff of eps^2, polynomial in n of order 27
+      real(0x24546bc28a93e0LL),real(0x2f6c4d745b8e40LL),
+      real(0x3e90f252c210a0LL),real(0x5380c389acd700LL),
+      real(0x70da9adde57d60LL),real(0x9aa08aca5a9fc0LL),
+      real(0xd7127fe199fa20LL),real(0x130248120008880LL),
+      real(0x1b6103e1c56a6e0LL),real(0x283fa247b6e3140LL),
+      real(0x3c89da46fe8a3a0LL),real(0x5d71643158b3a00LL),
+      real(0x948b363af771060LL),real(0xf445a32263b42c0LL),
+      real(0x1a1d56e9fe070d20LL),real(0x2ecb290f0241eb80LL),
+      real(0x58a5da95527fb9e0LL),reale(2876LL,0x680343126d440LL),
+      reale(6354LL,0x3e35c062e36a0LL),reale(15689LL,0x7d2910c199d00LL),
+      reale(45107LL,0x47d6102c9a360LL),reale(162386LL,0x35cf6d6d5e5c0LL),
+      reale(857038LL,0x54e3334f72020LL),reale(0xb1da29LL,0x4f45203874e80LL),
+      reale(-0x7d0d651LL,0x44365584dcce0LL),
+      reale(0x1694323eLL,0x9046972ad7740LL),
+      reale(-0x18d63745LL,0x2e18c01dac9a0LL),
+      reale(0x95054b9LL,0xceb6b7f4df464LL),
+      reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
+      // C4[3], coeff of eps^29, polynomial in n of order 0
+      real(594728LL),real(0x6a467061d7LL),
+      // C4[3], coeff of eps^28, polynomial in n of order 1
+      real(-0xc171ac00LL),real(0x7522aaf0LL),real(0x17609e98859b3LL),
+      // C4[3], coeff of eps^27, polynomial in n of order 2
+      real(-0x15f49b7dd3600LL),real(0x7876e24c6900LL),real(0x1f5dd75c0b28LL),
+      reale(4837LL,0x68f14547adebLL),
+      // C4[3], coeff of eps^26, polynomial in n of order 3
+      real(-0x33418e8004000LL),real(0x17b00d59dc000LL),
+      real(-0x11669ade1c000LL),real(0xa37322475bc0LL),
+      reale(6709LL,0x6c31d1e089667LL),
+      // C4[3], coeff of eps^25, polynomial in n of order 4
+      real(-0xc3e38d2fc36800LL),real(0x6a604d6faf7a00LL),
+      real(-0x650b3de948f400LL),real(0x20a6596010be00LL),
+      real(0x88f534a1fae70LL),reale(275086LL,0x53fa9cf60167fLL),
+      // C4[3], coeff of eps^24, polynomial in n of order 5
+      real(-0xdd5f9d233a5800LL),real(0x8b724926c9e000LL),
+      real(-0x8af41510346800LL),real(0x3d05686ce77000LL),
+      real(-0x2f9901c72df800LL),real(0x1ae74f29ea4ce0LL),
+      reale(223345LL,0xf3eec944ed143LL),
+      // C4[3], coeff of eps^23, polynomial in n of order 6
+      reale(-81631LL,0x30aa006397400LL),reale(60811LL,0x59dd5ef6a6e00LL),
+      reale(-57593LL,0x9ba80fa657800LL),reale(30387LL,0x2572e53b9c200LL),
+      reale(-30168LL,0x1ee4b96f27c00LL),reale(9044LL,0xd72699d03d600LL),
+      reale(2392LL,0x21f43a8f7f830LL),reale(0x3b039d41LL,0x9eb428d5a933LL),
+      // C4[3], coeff of eps^22, polynomial in n of order 7
+      reale(-0x2edbf2LL,0xf0eb506e9c000LL),reale(0x2a38e1LL,0x4d2d51bbc4000LL),
+      reale(-0x236efbLL,0x9dc16f0c4000LL),reale(0x1687c8LL,0x4ed8bf53f8000LL),
+      reale(-0x16be26LL,0x81ec1545bc000LL),reale(616004LL,0x8b84c9ea6c000LL),
+      reale(-517488LL,0xce8712c64000LL),reale(279040LL,0x23dc4dd774ec0LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[88]
-      real(-0x30fab48eb2c00LL),real(-0x4779db0cde000LL),
-      real(-0x6a1a5308c1400LL),real(-0xa07c7893bf800LL),
-      real(-0xf7d15b087bc00LL),real(-0x1878e181999000LL),
-      real(-0x27ab652bf7a400LL),real(-0x422ed0b6682800LL),
-      real(-0x721448fff54c00LL),real(-0xcc1e5699294000LL),
-      real(-0x17d5829db9a3400LL),real(-0x2ed74923dde5800LL),
-      real(-0x61c84aba5ffdc00LL),real(-0xdbaa1b53c88f000LL),
-      real(-0x21cc8beefe3fc400LL),real(-0x5da8efb832aa8800LL),
-      reale(-4877LL,0xa27c79e8c9400LL),reale(-20083LL,0x744650f3b6000LL),
-      reale(-123006LL,0x682eafd4bac00LL),reale(-0x1e42b0LL,0x9a1fba0274800LL),
-      reale(0x1a279caLL,0x9c6669ee40400LL),
-      reale(-0x6436c41LL,0x17399d517b000LL),
-      reale(0xb71548aLL,0x46cce583c1c00LL),
-      reale(-0xb1da295LL,0xbadfc78b1800LL),
-      reale(0x58ed14aLL,0x7a2901c3a7400LL),
-      reale(-0x1210284LL,0xdf2faba442070LL),
-      reale(0x23a784574LL,0xb53783566b8edLL),
-      // _C4x[89]
-      real(-0x32b69e04189800LL),real(-0x4bd39320660300LL),
-      real(-0x73a508e7ef1600LL),real(-0xb44a7ec206b900LL),
-      real(-0x1200d9d52c6d400LL),real(-0x1d916a5ad4bcf00LL),
-      real(-0x321a3f994641200LL),real(-0x57fce6d660f8500LL),
-      real(-0xa10c564a22b1000LL),real(-0x1356fa3ebba41b00LL),
-      real(-0x275fd13435900e00LL),real(-0x5604e2d76283d100LL),
-      reale(-3284LL,0x2070ad378b400LL),reale(-8784LL,0x7223f68ff1900LL),
-      reale(-27452LL,0xebc1e860af600LL),reale(-107904LL,0x1b738290a6300LL),
-      reale(-625733LL,0x1d5410be27800LL),reale(-0x902489LL,0x533e63f8bcd00LL),
-      reale(0x72c06c4LL,0x5507fb0eafa00LL),
-      reale(-0x18988720LL,0x3c017dc891700LL),
-      reale(0x25bc2ea8LL,0xd19d26ed03c00LL),
-      reale(-0x18eb8d7bLL,0x7b2ccab700100LL),
-      reale(-0xd13ce6LL,0xb1cccb08dfe00LL),
-      reale(0x9b9ee42LL,0x55c7c31664b00LL),
-      reale(-0x3b0d6fcLL,0x8ae0c4d412ef8LL),
+      // C4[3], coeff of eps^21, polynomial in n of order 8
+      reale(-0x3d0313LL,0xc8b58adf29800LL),reale(0x4266d0LL,0x89a9dbf785900LL),
+      reale(-0x2ef6ddLL,0xb472360429200LL),reale(0x252cd4LL,0x9b47462d3fb00LL),
+      reale(-0x22086cLL,0xf25c66cdc4c00LL),reale(0x1183edLL,0x7a5199072bd00LL),
+      reale(-0x123fedLL,0x6e44b8c2c8600LL),reale(325643LL,0x5e75ef9e35f00LL),
+      reale(87110LL,0x728c765d95698LL),reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
+      // C4[3], coeff of eps^20, polynomial in n of order 9
+      reale(-0x54796bLL,0xbe5923681ac00LL),reale(0x680df6LL,0x7020ae33aa000LL),
+      reale(-0x3cfb52LL,0x82fb5a29a1400LL),reale(0x3d6fe0LL,0x4a526eb153800LL),
+      reale(-0x2f0357LL,0x6dd208c353c00LL),reale(0x1eeec3LL,0x8c3cc70035000LL),
+      reale(-0x1f3887LL,0xb33643ae4a400LL),reale(787253LL,0x8fa9057e6800LL),
+      reale(-725368LL,0xde2260039cc00LL),reale(368582LL,0x69a43eb914890LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[90]
-      real(-0xe0ca252d14c000LL),real(-0x15a70af15f24000LL),
-      real(-0x222b3f817554000LL),real(-0x375f97b48cd8000LL),
-      real(-0x5c7b9631f8ac000LL),real(-0x9fe2527c7fcc000LL),
-      real(-0x11face3d5ef34000LL),real(-0x21e77d8dabde0000LL),
-      real(-0x439dcbf7fdccc000LL),reale(-2311LL,0xe8ce2f330c000LL),
-      reale(-5374LL,0xca11d3eaac000LL),reale(-13966LL,0xc6123cd18000LL),
-      reale(-42248LL,0x5f55f4e354000LL),reale(-159931LL,0x5dce658a64000LL),
-      reale(-887132LL,0x3edc05794c000LL),reale(-0xc191a8LL,0x9dbc8de510000LL),
-      reale(0x8fac044LL,0x968da6a8b4000LL),
-      reale(-0x1bda5771LL,0xe9ef52573c000LL),
-      reale(0x23bc5202LL,0x5feb9b1dac000LL),
-      reale(-0xccedba9LL,0xeaff8a5b08000LL),
-      reale(-0xe97725aLL,0xac42b4d454000LL),
-      reale(0x103e53d2LL,0x88b0e96a94000LL),
-      reale(-0x53b1f56LL,0xd851e038cc000LL),
-      reale(0x58ed14LL,0xa7a2901c3a740LL),
+      // C4[3], coeff of eps^19, polynomial in n of order 10
+      reale(-0x8873cbLL,0xc479dd519d600LL),reale(0x9ff0d0LL,0x1e7c948175300LL),
+      reale(-0x521d13LL,0x7cfb6727ff800LL),reale(0x6565cbLL,0x535f47efddd00LL),
+      reale(-0x3db3c2LL,0x645630ec71a00LL),reale(0x36610aLL,0x6253b3df24700LL),
+      reale(-0x2e78cdLL,0x1d0e085eefc00LL),reale(0x17a2b8LL,0x4828fbf665100LL),
+      reale(-0x19dae4LL,0x9c2303ec75e00LL),reale(406057LL,0xe76a74dc3bb00LL),
+      reale(110280LL,0xa64ca1bbeb438LL),reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
+      // C4[3], coeff of eps^18, polynomial in n of order 11
+      reale(-0x115c944LL,0xc0b6f29128000LL),
+      reale(0xea7ca5LL,0xa666c37198000LL),reale(-0x808d04LL,0x469ec5a258000LL),
+      reale(0xa444d1LL,0x17c6156160000LL),reale(-0x50e048LL,0x2cff6bf0a8000LL),
+      reale(0x5fbb5eLL,0xba1b2aa228000LL),reale(-0x3f2228LL,0x95cd4a43d8000LL),
+      reale(0x2d0aebLL,0x3ffeb65fb0000LL),reale(-0x2c3c07LL,0xc7378bc3a8000LL),
+      reale(0xfae21LL,0x2c3889c5b8000LL),reale(-0x10368fLL,0x8375b5b7d8000LL),
+      reale(500325LL,0x147f19cd83980LL),reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
+      // C4[3], coeff of eps^17, polynomial in n of order 12
+      reale(-0x2c7f85aLL,0x86bfab9d9f000LL),
+      reale(0x139fa77LL,0xb72d09f420c00LL),
+      reale(-0x1090fe9LL,0x3b9f41478c800LL),
+      reale(0xfc9140LL,0x8d133b2d84400LL),reale(-0x784a2bLL,0xc3e7e4efea000LL),
+      reale(0xa5d467LL,0x95ba8c80bfc00LL),reale(-0x518725LL,0xce5cb67f07800LL),
+      reale(0x561035LL,0x12558783a3400LL),reale(-0x40ba3cLL,0xb859b4ed35000LL),
+      reale(0x21a30aLL,0xf7d60f21fec00LL),reale(-0x2640adLL,0x91b912bec2800LL),
+      reale(503732LL,0xa322eb69a2400LL),reale(139663LL,0x777cb98300b20LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[91]
-      real(-0x38123cee860f400LL),real(-0x59d375c04e8be00LL),
-      real(-0x942bf86bd4c1800LL),real(-0xfcbda8858afb200LL),
-      real(-0x1c02af2dc3443c00LL),real(-0x33fc822f8d2b6600LL),
-      real(-0x65e35fc07de4e000LL),reale(-3415LL,0x3814d6814a600LL),
-      reale(-7776LL,0xe3f177bd67c00LL),reale(-19732LL,0x95ce6ed10f200LL),
-      reale(-58090LL,0x6b8e19ff25800LL),reale(-213112LL,0xea59cce39fe00LL),
-      reale(-0x11614cLL,0x8811931d33400LL),
-      reale(-0xed6da9LL,0xcc2995f504a00LL),
-      reale(0xa5fba68LL,0x2f0a20e9d9000LL),
-      reale(-0x1d766c12LL,0x261b89e445600LL),
-      reale(0x1fe4cb30LL,0xe9f8f195ec00LL),
-      reale(-0x32a45c1LL,0x6c0944416a200LL),
-      reale(-0x13c5edbaLL,0x884009c80c800LL),
-      reale(0xceef01fLL,0x987f3afb7ae00LL),
-      reale(-0x14190caLL,0x7fbc15002a400LL),
-      reale(-0x3fdf64LL,0x5c00896e7fa00LL),
-      reale(-0x47ecefLL,0x2d1e65cb0cf50LL),
+      // C4[3], coeff of eps^16, polynomial in n of order 13
+      reale(-0x95993b9LL,0x64b5bc8313000LL),
+      reale(0x19833fdLL,0x84cabd1d8c000LL),
+      reale(-0x2d4f233LL,0xbe71c1af5000LL),
+      reale(0x159e01bLL,0xeea5410a3a000LL),
+      reale(-0xf6d1b2LL,0x3b3115df47000LL),
+      reale(0x10fe38aLL,0xfb6c54d608000LL),
+      reale(-0x70f49eLL,0xdba66dd969000LL),reale(0xa28476LL,0xeb52d29456000LL),
+      reale(-0x54cfeeLL,0x2259552bb000LL),reale(0x479180LL,0xc3737ed884000LL),
+      reale(-0x40d431LL,0x4b44b2549d000LL),reale(0x1516fcLL,0xc755b095f2000LL),
+      reale(-0x191f36LL,0xb38784a86f000LL),reale(701746LL,0xdc0286e009640LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[92]
-      real(-0xd828cefda55a800LL),real(-0x16c6eac98e7b6000LL),
-      real(-0x27e1e798049c9800LL),real(-0x490330552dbbf000LL),
-      reale(-2256LL,0x7715d478bf800LL),reale(-4648LL,0x773993ce08000LL),
-      reale(-10391LL,0x2ec0caa9f0800LL),reale(-25837LL,0x32aa1d24f000LL),
-      reale(-74325LL,0x3f4000f179800LL),reale(-265481LL,0xa31986dc6000LL),
-      reale(-0x14f9b8LL,0x5f4ef3570a800LL),
-      reale(-0x1138c86LL,0x8dc89e4d1d000LL),
-      reale(0xb6f1f87LL,0xc85920c253800LL),
-      reale(-0x1e0ff20dLL,0x916caffd04000LL),
-      reale(0x1bbdcb17LL,0xbaa71ebb04800LL),
-      reale(0x384d292LL,0xf120275a2b000LL),
-      reale(-0x1470545eLL,0xa56cece8cd800LL),
-      reale(0x8b932d3LL,0x9f9c2b8142000LL),
-      reale(-0x190d15LL,0xe17459d35e800LL),
-      reale(0x1ba0870LL,0x51c8dabef9000LL),
-      reale(-0x19e121dLL,0xfc26ca6267800LL),
-      reale(0x40d611LL,0xd55e5a0325120LL),
+      // C4[3], coeff of eps^15, polynomial in n of order 14
+      reale(0x9739608LL,0x763cf17d39800LL),
+      reale(0xe6d5383LL,0xf358b9d531400LL),
+      reale(-0xa3d7c6fLL,0x4255ab8af000LL),
+      reale(0x195579eLL,0xe59a1e6b54c00LL),
+      reale(-0x2d81446LL,0x7024246c44800LL),
+      reale(0x18526baLL,0x124aa89300400LL),
+      reale(-0xdeae1dLL,0x9aae697f4a000LL),
+      reale(0x1225919LL,0x27fd86c303c00LL),
+      reale(-0x6cc1e4LL,0xbf5bdfad0f800LL),reale(0x977895LL,0x1876eddc2f400LL),
+      reale(-0x5ae203LL,0x481d0c0e5000LL),reale(0x343742LL,0xde3cf0f552c00LL),
+      reale(-0x3ba70bLL,0xb31925d21a800LL),reale(606166LL,0xec68c0e73e400LL),
+      reale(172919LL,0x9ad62b665b520LL),reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
+      // C4[3], coeff of eps^14, polynomial in n of order 15
+      reale(0xdfc26c8LL,0x48818da828000LL),
+      reale(-0x1af5ada0LL,0xd945577fc8000LL),
+      reale(0xb013e7bLL,0xde7b734758000LL),
+      reale(0xe5c8f15LL,0x4db221ae90000LL),
+      reale(-0xb4b2676LL,0x12b3e1c928000LL),
+      reale(0x19f447dLL,0x55324802d8000LL),
+      reale(-0x2cb5e23LL,0x1a03202358000LL),
+      reale(0x1be83feLL,0x1147d57660000LL),
+      reale(-0xc183feLL,0xc311ac2ba8000LL),
+      reale(0x12fb7b0LL,0x70537f02e8000LL),
+      reale(-0x6efed7LL,0x406e8457d8000LL),reale(0x81688dLL,0x438c3da230000LL),
+      reale(-0x61e562LL,0x36a3647da8000LL),reale(0x1debc0LL,0x685dc04df8000LL),
+      reale(-0x29e3a7LL,0x77cbf92d8000LL),reale(0xf9fcaLL,0x4eef421f04580LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[93]
-      real(-0x354d49acec3dd800LL),real(-0x606a7d34c50a0200LL),
-      reale(-2940LL,0x23b8583df6400LL),reale(-5972LL,0x98e0d26252a00LL),
-      reale(-13141LL,0x32060cd802000LL),reale(-32102LL,0x94515a4461600LL),
-      reale(-90512LL,0xbf74565dcdc00LL),reale(-315894LL,0x3681a17ad4200LL),
-      reale(-0x184830LL,0x31cf272e1800LL),
-      reale(-0x1345666LL,0x74bd8d19f2e00LL),
-      reale(0xc3bb22cLL,0x21c1cf60c5400LL),
-      reale(-0x1e0e44bfLL,0x4d4e7e4305a00LL),
-      reale(0x17dc8eadLL,0xa384192d01000LL),
-      reale(0x7ea8886LL,0x4094526254600LL),
-      reale(-0x13412ff9LL,0x2a97f22f1cc00LL),
-      reale(0x5aae31eLL,0xbfbbc74d27200LL),
-      reale(-0x7e571eLL,0x93186fe6a0800LL),
-      reale(0x2c5c2fdLL,0x8e0e73ffc5e00LL),
-      reale(-0x13c5b2fLL,0xc710b4d114400LL),reale(-922542LL,0xd5e26bb78a00LL),
-      reale(-491670LL,0xa42f82e6a24d0LL),
+      // C4[3], coeff of eps^13, polynomial in n of order 16
+      reale(-0x22adf4LL,0xa8028f7589000LL),
+      reale(-0x18e1ea1LL,0xec99313826300LL),
+      reale(0xdd3af0fLL,0xafe6927fcde00LL),
+      reale(-0x1bb5bb95LL,0xdb3a3c686a900LL),
+      reale(0xcd372fbLL,0xaf8273d716c00LL),
+      reale(0xe17c340LL,0xab29f0bfd4f00LL),
+      reale(-0xc89991bLL,0xc980057487a00LL),
+      reale(0x1c16fdbLL,0x2f129bee9500LL),reale(-0x2a6690aLL,0x630204744800LL),
+      reale(0x207b019LL,0xda8305b9abb00LL),
+      reale(-0xa2ee28LL,0x6cabc2bb71600LL),
+      reale(0x1306b52LL,0xbb16c712a0100LL),
+      reale(-0x7b8e30LL,0x3c7a80e132400LL),reale(0x5e0fd5LL,0x8a1d8a85ca700LL),
+      reale(-0x62ff6bLL,0x56d3a913ab200LL),reale(653539LL,0x4a58f163aed00LL),
+      reale(193289LL,0xc4fa7fb371708LL),reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
+      // C4[3], coeff of eps^12, polynomial in n of order 17
+      reale(-136366LL,0x8c5e030195400LL),reale(-450639LL,0x2f8b8af0cc000LL),
+      reale(-0x207899LL,0xab180153b2c00LL),
+      reale(-0x17cbd19LL,0x6d563e036e800LL),
+      reale(0xd98bb6bLL,0x85d44607e4400LL),
+      reale(-0x1c715c1cLL,0x81961af0f9000LL),
+      reale(0xef76e2aLL,0x1896eb4cd1c00LL),
+      reale(0xd8423cdLL,0xac7cda7d93800LL),
+      reale(-0xdfe665dLL,0xeb33b4f123400LL),
+      reale(0x20f4d8dLL,0x4230b4bd66000LL),
+      reale(-0x25e66aeLL,0xc57a7de380c00LL),
+      reale(0x25ec068LL,0x42dd69fc98800LL),
+      reale(-0x8bc9f7LL,0x63e586d292400LL),
+      reale(0x11875ecLL,0xf302f56753000LL),
+      reale(-0x942362LL,0xa7e8f72cffc00LL),reale(0x300c72LL,0x8380fab1bd800LL),
+      reale(-0x4d1219LL,0x75a9a1c171400LL),reale(0x17e82dLL,0x6fd98617e9df0LL),
+      reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
+      // C4[3], coeff of eps^11, polynomial in n of order 18
+      reale(-18811LL,0xb688093225a00LL),reale(-44618LL,0xaf855dda9900LL),
+      reale(-121681LL,0xd9372fc875000LL),reale(-408671LL,0x5233927078700LL),
+      reale(-0x1e040dLL,0x28ce2df824600LL),
+      reale(-0x168553bLL,0xa3e5e05241500LL),
+      reale(0xd460a5cLL,0x695506ba87c00LL),
+      reale(-0x1d1f6a90LL,0x1d549843b8300LL),
+      reale(0x117beb33LL,0x10f016a3f3200LL),
+      reale(0xc7942baLL,0x4db1c2b811100LL),
+      reale(-0xfa98bd1LL,0x64b609f6ba800LL),
+      reale(0x2a942daLL,0x3acb33bfff00LL),
+      reale(-0x1e808f3LL,0xdd80ec7631e00LL),
+      reale(0x2b833f4LL,0x9e16c6ccb8d00LL),reale(-0x8d8b02LL,0x704e959ad400LL),
+      reale(0xd8c1bcLL,0x289c377eefb00LL),reale(-0xaf5345LL,0xf36b71bf80a00LL),
+      reale(414830LL,0x163387d5d8900LL),reale(117690LL,0xc756ec17c4aa8LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[94]
+      // C4[3], coeff of eps^10, polynomial in n of order 19
       reale(-3668LL,0x745b704814000LL),reale(-7356LL,0x21a269e124000LL),
       reale(-15964LL,0xec72d7fbcc000LL),reale(-38394LL,0xff9a4ef3a0000LL),
       reale(-106359LL,0xe335b9f234000LL),reale(-363724LL,0x88012a511c000LL),
@@ -5227,266 +5255,288 @@ namespace GeographicLib {
       reale(-0xc2d459LL,0xe11e273414000LL),reale(0x6a06d0LL,0xd8f6969c04000LL),
       reale(-0xa26926LL,0xb993988ecc000LL),reale(0x269a8aLL,0x161dcdf222440LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[95]
-      reale(-18811LL,0xb688093225a00LL),reale(-44618LL,0xaf855dda9900LL),
-      reale(-121681LL,0xd9372fc875000LL),reale(-408671LL,0x5233927078700LL),
-      reale(-0x1e040dLL,0x28ce2df824600LL),
-      reale(-0x168553bLL,0xa3e5e05241500LL),
-      reale(0xd460a5cLL,0x695506ba87c00LL),
-      reale(-0x1d1f6a90LL,0x1d549843b8300LL),
-      reale(0x117beb33LL,0x10f016a3f3200LL),
-      reale(0xc7942baLL,0x4db1c2b811100LL),
-      reale(-0xfa98bd1LL,0x64b609f6ba800LL),
-      reale(0x2a942daLL,0x3acb33bfff00LL),
-      reale(-0x1e808f3LL,0xdd80ec7631e00LL),
-      reale(0x2b833f4LL,0x9e16c6ccb8d00LL),reale(-0x8d8b02LL,0x704e959ad400LL),
-      reale(0xd8c1bcLL,0x289c377eefb00LL),reale(-0xaf5345LL,0xf36b71bf80a00LL),
-      reale(414830LL,0x163387d5d8900LL),reale(117690LL,0xc756ec17c4aa8LL),
-      reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[96]
-      reale(-136366LL,0x8c5e030195400LL),reale(-450639LL,0x2f8b8af0cc000LL),
-      reale(-0x207899LL,0xab180153b2c00LL),
-      reale(-0x17cbd19LL,0x6d563e036e800LL),
-      reale(0xd98bb6bLL,0x85d44607e4400LL),
-      reale(-0x1c715c1cLL,0x81961af0f9000LL),
-      reale(0xef76e2aLL,0x1896eb4cd1c00LL),
-      reale(0xd8423cdLL,0xac7cda7d93800LL),
-      reale(-0xdfe665dLL,0xeb33b4f123400LL),
-      reale(0x20f4d8dLL,0x4230b4bd66000LL),
-      reale(-0x25e66aeLL,0xc57a7de380c00LL),
-      reale(0x25ec068LL,0x42dd69fc98800LL),
-      reale(-0x8bc9f7LL,0x63e586d292400LL),
-      reale(0x11875ecLL,0xf302f56753000LL),
-      reale(-0x942362LL,0xa7e8f72cffc00LL),reale(0x300c72LL,0x8380fab1bd800LL),
-      reale(-0x4d1219LL,0x75a9a1c171400LL),reale(0x17e82dLL,0x6fd98617e9df0LL),
+      // C4[3], coeff of eps^9, polynomial in n of order 20
+      real(-0x354d49acec3dd800LL),real(-0x606a7d34c50a0200LL),
+      reale(-2940LL,0x23b8583df6400LL),reale(-5972LL,0x98e0d26252a00LL),
+      reale(-13141LL,0x32060cd802000LL),reale(-32102LL,0x94515a4461600LL),
+      reale(-90512LL,0xbf74565dcdc00LL),reale(-315894LL,0x3681a17ad4200LL),
+      reale(-0x184830LL,0x31cf272e1800LL),
+      reale(-0x1345666LL,0x74bd8d19f2e00LL),
+      reale(0xc3bb22cLL,0x21c1cf60c5400LL),
+      reale(-0x1e0e44bfLL,0x4d4e7e4305a00LL),
+      reale(0x17dc8eadLL,0xa384192d01000LL),
+      reale(0x7ea8886LL,0x4094526254600LL),
+      reale(-0x13412ff9LL,0x2a97f22f1cc00LL),
+      reale(0x5aae31eLL,0xbfbbc74d27200LL),
+      reale(-0x7e571eLL,0x93186fe6a0800LL),
+      reale(0x2c5c2fdLL,0x8e0e73ffc5e00LL),
+      reale(-0x13c5b2fLL,0xc710b4d114400LL),reale(-922542LL,0xd5e26bb78a00LL),
+      reale(-491670LL,0xa42f82e6a24d0LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[97]
-      reale(-0x22adf4LL,0xa8028f7589000LL),
-      reale(-0x18e1ea1LL,0xec99313826300LL),
-      reale(0xdd3af0fLL,0xafe6927fcde00LL),
-      reale(-0x1bb5bb95LL,0xdb3a3c686a900LL),
-      reale(0xcd372fbLL,0xaf8273d716c00LL),
-      reale(0xe17c340LL,0xab29f0bfd4f00LL),
-      reale(-0xc89991bLL,0xc980057487a00LL),
-      reale(0x1c16fdbLL,0x2f129bee9500LL),reale(-0x2a6690aLL,0x630204744800LL),
-      reale(0x207b019LL,0xda8305b9abb00LL),
-      reale(-0xa2ee28LL,0x6cabc2bb71600LL),
-      reale(0x1306b52LL,0xbb16c712a0100LL),
-      reale(-0x7b8e30LL,0x3c7a80e132400LL),reale(0x5e0fd5LL,0x8a1d8a85ca700LL),
-      reale(-0x62ff6bLL,0x56d3a913ab200LL),reale(653539LL,0x4a58f163aed00LL),
-      reale(193289LL,0xc4fa7fb371708LL),reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[98]
-      reale(0xdfc26c8LL,0x48818da828000LL),
-      reale(-0x1af5ada0LL,0xd945577fc8000LL),
-      reale(0xb013e7bLL,0xde7b734758000LL),
-      reale(0xe5c8f15LL,0x4db221ae90000LL),
-      reale(-0xb4b2676LL,0x12b3e1c928000LL),
-      reale(0x19f447dLL,0x55324802d8000LL),
-      reale(-0x2cb5e23LL,0x1a03202358000LL),
-      reale(0x1be83feLL,0x1147d57660000LL),
-      reale(-0xc183feLL,0xc311ac2ba8000LL),
-      reale(0x12fb7b0LL,0x70537f02e8000LL),
-      reale(-0x6efed7LL,0x406e8457d8000LL),reale(0x81688dLL,0x438c3da230000LL),
-      reale(-0x61e562LL,0x36a3647da8000LL),reale(0x1debc0LL,0x685dc04df8000LL),
-      reale(-0x29e3a7LL,0x77cbf92d8000LL),reale(0xf9fcaLL,0x4eef421f04580LL),
+      // C4[3], coeff of eps^8, polynomial in n of order 21
+      real(-0xd828cefda55a800LL),real(-0x16c6eac98e7b6000LL),
+      real(-0x27e1e798049c9800LL),real(-0x490330552dbbf000LL),
+      reale(-2256LL,0x7715d478bf800LL),reale(-4648LL,0x773993ce08000LL),
+      reale(-10391LL,0x2ec0caa9f0800LL),reale(-25837LL,0x32aa1d24f000LL),
+      reale(-74325LL,0x3f4000f179800LL),reale(-265481LL,0xa31986dc6000LL),
+      reale(-0x14f9b8LL,0x5f4ef3570a800LL),
+      reale(-0x1138c86LL,0x8dc89e4d1d000LL),
+      reale(0xb6f1f87LL,0xc85920c253800LL),
+      reale(-0x1e0ff20dLL,0x916caffd04000LL),
+      reale(0x1bbdcb17LL,0xbaa71ebb04800LL),
+      reale(0x384d292LL,0xf120275a2b000LL),
+      reale(-0x1470545eLL,0xa56cece8cd800LL),
+      reale(0x8b932d3LL,0x9f9c2b8142000LL),
+      reale(-0x190d15LL,0xe17459d35e800LL),
+      reale(0x1ba0870LL,0x51c8dabef9000LL),
+      reale(-0x19e121dLL,0xfc26ca6267800LL),
+      reale(0x40d611LL,0xd55e5a0325120LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[99]
-      reale(0x9739608LL,0x763cf17d39800LL),
-      reale(0xe6d5383LL,0xf358b9d531400LL),
-      reale(-0xa3d7c6fLL,0x4255ab8af000LL),
-      reale(0x195579eLL,0xe59a1e6b54c00LL),
-      reale(-0x2d81446LL,0x7024246c44800LL),
-      reale(0x18526baLL,0x124aa89300400LL),
-      reale(-0xdeae1dLL,0x9aae697f4a000LL),
-      reale(0x1225919LL,0x27fd86c303c00LL),
-      reale(-0x6cc1e4LL,0xbf5bdfad0f800LL),reale(0x977895LL,0x1876eddc2f400LL),
-      reale(-0x5ae203LL,0x481d0c0e5000LL),reale(0x343742LL,0xde3cf0f552c00LL),
-      reale(-0x3ba70bLL,0xb31925d21a800LL),reale(606166LL,0xec68c0e73e400LL),
-      reale(172919LL,0x9ad62b665b520LL),reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[100]
-      reale(-0x95993b9LL,0x64b5bc8313000LL),
-      reale(0x19833fdLL,0x84cabd1d8c000LL),
-      reale(-0x2d4f233LL,0xbe71c1af5000LL),
-      reale(0x159e01bLL,0xeea5410a3a000LL),
-      reale(-0xf6d1b2LL,0x3b3115df47000LL),
-      reale(0x10fe38aLL,0xfb6c54d608000LL),
-      reale(-0x70f49eLL,0xdba66dd969000LL),reale(0xa28476LL,0xeb52d29456000LL),
-      reale(-0x54cfeeLL,0x2259552bb000LL),reale(0x479180LL,0xc3737ed884000LL),
-      reale(-0x40d431LL,0x4b44b2549d000LL),reale(0x1516fcLL,0xc755b095f2000LL),
-      reale(-0x191f36LL,0xb38784a86f000LL),reale(701746LL,0xdc0286e009640LL),
+      // C4[3], coeff of eps^7, polynomial in n of order 22
+      real(-0x38123cee860f400LL),real(-0x59d375c04e8be00LL),
+      real(-0x942bf86bd4c1800LL),real(-0xfcbda8858afb200LL),
+      real(-0x1c02af2dc3443c00LL),real(-0x33fc822f8d2b6600LL),
+      real(-0x65e35fc07de4e000LL),reale(-3415LL,0x3814d6814a600LL),
+      reale(-7776LL,0xe3f177bd67c00LL),reale(-19732LL,0x95ce6ed10f200LL),
+      reale(-58090LL,0x6b8e19ff25800LL),reale(-213112LL,0xea59cce39fe00LL),
+      reale(-0x11614cLL,0x8811931d33400LL),
+      reale(-0xed6da9LL,0xcc2995f504a00LL),
+      reale(0xa5fba68LL,0x2f0a20e9d9000LL),
+      reale(-0x1d766c12LL,0x261b89e445600LL),
+      reale(0x1fe4cb30LL,0xe9f8f195ec00LL),
+      reale(-0x32a45c1LL,0x6c0944416a200LL),
+      reale(-0x13c5edbaLL,0x884009c80c800LL),
+      reale(0xceef01fLL,0x987f3afb7ae00LL),
+      reale(-0x14190caLL,0x7fbc15002a400LL),
+      reale(-0x3fdf64LL,0x5c00896e7fa00LL),
+      reale(-0x47ecefLL,0x2d1e65cb0cf50LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[101]
-      reale(-0x2c7f85aLL,0x86bfab9d9f000LL),
-      reale(0x139fa77LL,0xb72d09f420c00LL),
-      reale(-0x1090fe9LL,0x3b9f41478c800LL),
-      reale(0xfc9140LL,0x8d133b2d84400LL),reale(-0x784a2bLL,0xc3e7e4efea000LL),
-      reale(0xa5d467LL,0x95ba8c80bfc00LL),reale(-0x518725LL,0xce5cb67f07800LL),
-      reale(0x561035LL,0x12558783a3400LL),reale(-0x40ba3cLL,0xb859b4ed35000LL),
-      reale(0x21a30aLL,0xf7d60f21fec00LL),reale(-0x2640adLL,0x91b912bec2800LL),
-      reale(503732LL,0xa322eb69a2400LL),reale(139663LL,0x777cb98300b20LL),
+      // C4[3], coeff of eps^6, polynomial in n of order 23
+      real(-0xe0ca252d14c000LL),real(-0x15a70af15f24000LL),
+      real(-0x222b3f817554000LL),real(-0x375f97b48cd8000LL),
+      real(-0x5c7b9631f8ac000LL),real(-0x9fe2527c7fcc000LL),
+      real(-0x11face3d5ef34000LL),real(-0x21e77d8dabde0000LL),
+      real(-0x439dcbf7fdccc000LL),reale(-2311LL,0xe8ce2f330c000LL),
+      reale(-5374LL,0xca11d3eaac000LL),reale(-13966LL,0xc6123cd18000LL),
+      reale(-42248LL,0x5f55f4e354000LL),reale(-159931LL,0x5dce658a64000LL),
+      reale(-887132LL,0x3edc05794c000LL),reale(-0xc191a8LL,0x9dbc8de510000LL),
+      reale(0x8fac044LL,0x968da6a8b4000LL),
+      reale(-0x1bda5771LL,0xe9ef52573c000LL),
+      reale(0x23bc5202LL,0x5feb9b1dac000LL),
+      reale(-0xccedba9LL,0xeaff8a5b08000LL),
+      reale(-0xe97725aLL,0xac42b4d454000LL),
+      reale(0x103e53d2LL,0x88b0e96a94000LL),
+      reale(-0x53b1f56LL,0xd851e038cc000LL),
+      reale(0x58ed14LL,0xa7a2901c3a740LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[102]
-      reale(-0x115c944LL,0xc0b6f29128000LL),
-      reale(0xea7ca5LL,0xa666c37198000LL),reale(-0x808d04LL,0x469ec5a258000LL),
-      reale(0xa444d1LL,0x17c6156160000LL),reale(-0x50e048LL,0x2cff6bf0a8000LL),
-      reale(0x5fbb5eLL,0xba1b2aa228000LL),reale(-0x3f2228LL,0x95cd4a43d8000LL),
-      reale(0x2d0aebLL,0x3ffeb65fb0000LL),reale(-0x2c3c07LL,0xc7378bc3a8000LL),
-      reale(0xfae21LL,0x2c3889c5b8000LL),reale(-0x10368fLL,0x8375b5b7d8000LL),
-      reale(500325LL,0x147f19cd83980LL),reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[103]
-      reale(-0x8873cbLL,0xc479dd519d600LL),reale(0x9ff0d0LL,0x1e7c948175300LL),
-      reale(-0x521d13LL,0x7cfb6727ff800LL),reale(0x6565cbLL,0x535f47efddd00LL),
-      reale(-0x3db3c2LL,0x645630ec71a00LL),reale(0x36610aLL,0x6253b3df24700LL),
-      reale(-0x2e78cdLL,0x1d0e085eefc00LL),reale(0x17a2b8LL,0x4828fbf665100LL),
-      reale(-0x19dae4LL,0x9c2303ec75e00LL),reale(406057LL,0xe76a74dc3bb00LL),
-      reale(110280LL,0xa64ca1bbeb438LL),reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[104]
-      reale(-0x54796bLL,0xbe5923681ac00LL),reale(0x680df6LL,0x7020ae33aa000LL),
-      reale(-0x3cfb52LL,0x82fb5a29a1400LL),reale(0x3d6fe0LL,0x4a526eb153800LL),
-      reale(-0x2f0357LL,0x6dd208c353c00LL),reale(0x1eeec3LL,0x8c3cc70035000LL),
-      reale(-0x1f3887LL,0xb33643ae4a400LL),reale(787253LL,0x8fa9057e6800LL),
-      reale(-725368LL,0xde2260039cc00LL),reale(368582LL,0x69a43eb914890LL),
+      // C4[3], coeff of eps^5, polynomial in n of order 24
+      real(-0x32b69e04189800LL),real(-0x4bd39320660300LL),
+      real(-0x73a508e7ef1600LL),real(-0xb44a7ec206b900LL),
+      real(-0x1200d9d52c6d400LL),real(-0x1d916a5ad4bcf00LL),
+      real(-0x321a3f994641200LL),real(-0x57fce6d660f8500LL),
+      real(-0xa10c564a22b1000LL),real(-0x1356fa3ebba41b00LL),
+      real(-0x275fd13435900e00LL),real(-0x5604e2d76283d100LL),
+      reale(-3284LL,0x2070ad378b400LL),reale(-8784LL,0x7223f68ff1900LL),
+      reale(-27452LL,0xebc1e860af600LL),reale(-107904LL,0x1b738290a6300LL),
+      reale(-625733LL,0x1d5410be27800LL),reale(-0x902489LL,0x533e63f8bcd00LL),
+      reale(0x72c06c4LL,0x5507fb0eafa00LL),
+      reale(-0x18988720LL,0x3c017dc891700LL),
+      reale(0x25bc2ea8LL,0xd19d26ed03c00LL),
+      reale(-0x18eb8d7bLL,0x7b2ccab700100LL),
+      reale(-0xd13ce6LL,0xb1cccb08dfe00LL),
+      reale(0x9b9ee42LL,0x55c7c31664b00LL),
+      reale(-0x3b0d6fcLL,0x8ae0c4d412ef8LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[105]
-      reale(-0x3d0313LL,0xc8b58adf29800LL),reale(0x4266d0LL,0x89a9dbf785900LL),
-      reale(-0x2ef6ddLL,0xb472360429200LL),reale(0x252cd4LL,0x9b47462d3fb00LL),
-      reale(-0x22086cLL,0xf25c66cdc4c00LL),reale(0x1183edLL,0x7a5199072bd00LL),
-      reale(-0x123fedLL,0x6e44b8c2c8600LL),reale(325643LL,0x5e75ef9e35f00LL),
-      reale(87110LL,0x728c765d95698LL),reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[106]
-      reale(-0x2edbf2LL,0xf0eb506e9c000LL),reale(0x2a38e1LL,0x4d2d51bbc4000LL),
-      reale(-0x236efbLL,0x9dc16f0c4000LL),reale(0x1687c8LL,0x4ed8bf53f8000LL),
-      reale(-0x16be26LL,0x81ec1545bc000LL),reale(616004LL,0x8b84c9ea6c000LL),
-      reale(-517488LL,0xce8712c64000LL),reale(279040LL,0x23dc4dd774ec0LL),
+      // C4[3], coeff of eps^4, polynomial in n of order 25
+      real(-0x30fab48eb2c00LL),real(-0x4779db0cde000LL),
+      real(-0x6a1a5308c1400LL),real(-0xa07c7893bf800LL),
+      real(-0xf7d15b087bc00LL),real(-0x1878e181999000LL),
+      real(-0x27ab652bf7a400LL),real(-0x422ed0b6682800LL),
+      real(-0x721448fff54c00LL),real(-0xcc1e5699294000LL),
+      real(-0x17d5829db9a3400LL),real(-0x2ed74923dde5800LL),
+      real(-0x61c84aba5ffdc00LL),real(-0xdbaa1b53c88f000LL),
+      real(-0x21cc8beefe3fc400LL),real(-0x5da8efb832aa8800LL),
+      reale(-4877LL,0xa27c79e8c9400LL),reale(-20083LL,0x744650f3b6000LL),
+      reale(-123006LL,0x682eafd4bac00LL),reale(-0x1e42b0LL,0x9a1fba0274800LL),
+      reale(0x1a279caLL,0x9c6669ee40400LL),
+      reale(-0x6436c41LL,0x17399d517b000LL),
+      reale(0xb71548aLL,0x46cce583c1c00LL),
+      reale(-0xb1da295LL,0xbadfc78b1800LL),
+      reale(0x58ed14aLL,0x7a2901c3a7400LL),
+      reale(-0x1210284LL,0xdf2faba442070LL),
+      reale(0x23a784574LL,0xb53783566b8edLL),
+      // C4[3], coeff of eps^3, polynomial in n of order 26
+      real(-0x10330cb256200LL),real(-0x172cb16211100LL),
+      real(-0x21a8187537800LL),real(-0x31b06260f1f00LL),
+      real(-0x4ab014ab28e00LL),real(-0x7280309c9cd00LL),
+      real(-0xb366eef7be400LL),real(-0x11ff8a58b05b00LL),
+      real(-0x1dae666558ba00LL),real(-0x327547ac4a0900LL),
+      real(-0x58c9207d125000LL),real(-0xa2826b77361700LL),
+      real(-0x137557a5841e600LL),real(-0x275355b4b1bc500LL),
+      real(-0x54b37d85300bc00LL),real(-0xc517d06239a5300LL),
+      real(-0x1f8f2f623d981200LL),real(-0x5b85a3034c390100LL),
+      reale(-5021LL,0x5d11943ced800LL),reale(-21966LL,0xb72ce88a8f100LL),
+      reale(-144344LL,0xb3b965d7ac200LL),reale(-0x268b38LL,0x492c763e44300LL),
+      reale(0x249ddb5LL,0x415c2de726c00LL),
+      reale(-0x9b9ee43LL,0xaa383ce99b500LL),
+      reale(0x1373dc84LL,0xab8f862cc9600LL),
+      reale(-0x12102833LL,0xf2faba4420700LL),
+      reale(0x6358dd1LL,0x3479cff894d98LL),
       reale(0x6af68d05eLL,0x1fa68a0342ac7LL),
-      // _C4x[107]
-      reale(-81631LL,0x30aa006397400LL),reale(60811LL,0x59dd5ef6a6e00LL),
-      reale(-57593LL,0x9ba80fa657800LL),reale(30387LL,0x2572e53b9c200LL),
-      reale(-30168LL,0x1ee4b96f27c00LL),reale(9044LL,0xd72699d03d600LL),
-      reale(2392LL,0x21f43a8f7f830LL),reale(0x3b039d41LL,0x9eb428d5a933LL),
-      // _C4x[108]
-      real(-0xdd5f9d233a5800LL),real(0x8b724926c9e000LL),
-      real(-0x8af41510346800LL),real(0x3d05686ce77000LL),
-      real(-0x2f9901c72df800LL),real(0x1ae74f29ea4ce0LL),
-      reale(223345LL,0xf3eec944ed143LL),
-      // _C4x[109]
-      real(-0xc3e38d2fc36800LL),real(0x6a604d6faf7a00LL),
-      real(-0x650b3de948f400LL),real(0x20a6596010be00LL),
-      real(0x88f534a1fae70LL),reale(275086LL,0x53fa9cf60167fLL),
-      // _C4x[110]
-      real(-0x33418e8004000LL),real(0x17b00d59dc000LL),
-      real(-0x11669ade1c000LL),real(0xa37322475bc0LL),
-      reale(6709LL,0x6c31d1e089667LL),
-      // _C4x[111]
-      real(-0x15f49b7dd3600LL),real(0x7876e24c6900LL),real(0x1f5dd75c0b28LL),
-      reale(4837LL,0x68f14547adebLL),
-      // _C4x[112]
-      real(-0xc171ac00LL),real(0x7522aaf0LL),real(0x17609e98859b3LL),
-      // _C4x[113]
-      real(594728LL),real(0x6a467061d7LL),
-      // _C4x[114]
-      real(0xe07098dae00LL),real(0x16338b625000LL),real(0x23dda179f200LL),
-      real(0x3b41a69cf400LL),real(0x645a89a6b600LL),real(0xaeabe0e09800LL),
-      real(0x1397028dcfa00LL),real(0x246014e923c00LL),real(0x4633de275be00LL),
-      real(0x8d95c8a56e000LL),real(0x12c670f9ba0200LL),
-      real(0x2a433484738400LL),real(0x6608a70542c600LL),
-      real(0x10c10ac322d2800LL),real(0x30ddb4b92590a00LL),
-      real(0xa2e30513d28cc00LL),real(0x289386109855ce00LL),
-      reale(3347LL,0x17499d2cb7000LL),reale(26358LL,0x5763b5c021200LL),
-      reale(564821LL,0x99c65b39a1400LL),reale(-0xa53014LL,0xa750d62f6d600LL),
-      reale(0x39d0d39LL,0x23d4ea299b800LL),
-      reale(-0xa4c65b0LL,0x59e1316fd1a00LL),
-      reale(0x10ac73dfLL,0x6e7b054af5c00LL),
-      reale(-0xde50b3bLL,0xce997b96dde00LL),
-      reale(0x4840a0cLL,0x8341516ef7e40LL),
+      // C4[4], coeff of eps^29, polynomial in n of order 0
+      real(0x44f600LL),real(0x13ed3512585LL),
+      // C4[4], coeff of eps^28, polynomial in n of order 1
+      real(0x4b0c377a00LL),real(0x141ef9cec0LL),real(0x12e7203d54087bdLL),
+      // C4[4], coeff of eps^27, polynomial in n of order 2
+      real(0xdf868e997000LL),real(-0xc54488fde800LL),real(0x67996a8dfb80LL),
+      reale(6219LL,0x86ed0fee71e5LL),
+      // C4[4], coeff of eps^26, polynomial in n of order 3
+      real(0x1e30d5f17398800LL),real(-0x20335f44c005000LL),
+      real(0x8656a9da59d800LL),real(0x246f3281df3200LL),
+      reale(0x1c9038LL,0xea4bbbb5bea41LL),
+      // C4[4], coeff of eps^25, polynomial in n of order 4
+      real(0x640278dc982000LL),real(-0x64de2b5e388800LL),
+      real(0x266cf1cb211000LL),real(-0x24af02897bd800LL),
+      real(0x125236c4932c80LL),reale(225070LL,0xa1cd0c0f186c5LL),
+      // C4[4], coeff of eps^24, polynomial in n of order 5
+      real(0x183393315f62f400LL),real(-0x147c8a635ba4f000LL),
+      real(0xaadb07a361e2c00LL),real(-0xbd0a07cdca37800LL),
+      real(0x2c490db64a86400LL),real(0xc3000bbe3e2580LL),
+      reale(0x7f11bdLL,0x62a2be2e87a79LL),
+      // C4[4], coeff of eps^23, polynomial in n of order 6
+      reale(7399LL,0xe4703b1ceb000LL),reale(-4926LL,0x8e7408af10800LL),
+      reale(3656LL,0xc01290e152000LL),reale(-3595LL,0x651f510443800LL),
+      real(0x5080258211e79000LL),real(-0x5458466826cf9800LL),
+      real(0x27a09e95cf36b080LL),reale(0x5d628dfLL,0xc3bd6c206251LL),
+      // C4[4], coeff of eps^22, polynomial in n of order 7
+      reale(0x41e7a1LL,0xe5044c1364800LL),reale(-0x2279b3LL,0x3fbc5119cd000LL),
+      reale(0x251936LL,0xcceb783bf5800LL),reale(-0x1c77dbLL,0x77b6fd365e000LL),
+      reale(996566LL,0x94ae3b7946800LL),reale(-0x115309LL,0xd34e3cf7ef000LL),
+      reale(231629LL,0x92b25177d7800LL),reale(64961LL,0x89605803fda00LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[115]
-      real(0xc0b5b2cac000LL),real(0x139ac5d2ed800LL),real(0x20abe97223000LL),
-      real(0x37e2f8cba0800LL),real(0x6269b1d1ba000LL),real(0xb3074a8a43800LL),
-      real(0x151de1e3911000LL),real(0x298e5ccaa76800LL),
-      real(0x55d208375c8000LL),real(0xbb7ea958fd9800LL),
-      real(0x1b5e1854857f000LL),real(0x4547c4b8360c800LL),
-      real(0xc1cdc899e5d6000LL),real(0x2682d6f5e00af800LL),
-      reale(2326LL,0xf44888e46d000LL),reale(11275LL,0x7d4afe8b62800LL),
-      reale(82638LL,0x859516eee4000LL),reale(0x18d8c7LL,0xc1653179c5800LL),
-      reale(-0x1af9d3aLL,0x3ce064e2db000LL),
-      reale(0x86a9f98LL,0x2bb5164778800LL),
-      reale(-0x150fbacaLL,0x9cddde5df2000LL),
-      reale(0x1e0b24ccLL,0x730ece181b800LL),
-      reale(-0x18d8d4d5LL,0x8384e90dc9000LL),
-      reale(0xb1da294LL,0xf45203874e800LL),
-      reale(-0x2158e7cLL,0x12309f56a1480LL),
+      // C4[4], coeff of eps^21, polynomial in n of order 8
+      reale(0x5e3725LL,0x53f34a829c000LL),reale(-0x2c0886LL,0x220fe5f0ca800LL),
+      reale(0x3e6878LL,0x588848e445000LL),reale(-0x233c7dLL,0x8c97ccdf37800LL),
+      reale(0x1dc39dLL,0xac1b944ace000LL),reale(-0x1b9e87LL,0x5db3f814b4800LL),
+      reale(609590LL,0x74daa18497000LL),reale(-712108LL,0xe9300871a1800LL),
+      reale(310317LL,0x16957f6a36b80LL),reale(0x898623079LL,0x41f43bb0c949LL),
+      // C4[4], coeff of eps^20, polynomial in n of order 9
+      reale(0x767497LL,0xd98a0c3214600LL),reale(-0x45753eLL,0x9a2c75ab3000LL),
+      reale(0x60dce4LL,0x7dcc619ba1a00LL),reale(-0x2a62f7LL,0xeef6e23c7e400LL),
+      reale(0x379edfLL,0x5af876afd6e00LL),reale(-0x24adadLL,0xed96d3cd99800LL),
+      reale(0x150456LL,0xde24866584200LL),reale(-0x183231LL,0xde6d41594c00LL),
+      reale(268682LL,0xb0f056b079600LL),reale(77255LL,0xca5a822ebf740LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[116]
-      real(0x628e4f4bb7800LL),real(0xa60e374943000LL),real(0x11fae77940e800LL),
-      real(0x2022ddc061a000LL),real(0x3b7f2e2d7a5800LL),
-      real(0x72aa26ca9f1000LL),real(0xe77392a11fc800LL),
-      real(0x1ed1e51d0348000LL),real(0x460248a5fa93800LL),
-      real(0xabd9e84dc89f000LL),real(0x1d078c2cd5cea800LL),
-      real(0x58c9fda5cf076000LL),reale(5134LL,0xa77137081800LL),
-      reale(23653LL,0x63d76094d000LL),reale(163469LL,0x772f4630d8800LL),
-      reale(0x2dd8fbLL,0x8d384291a4000LL),
-      reale(-0x2dbc35fLL,0x2ac0ecb56f800LL),
-      reale(0xccfee38LL,0xfe0a5a4ffb000LL),
-      reale(-0x1ba24a18LL,0x4006a589c6800LL),
-      reale(0x1eefd234LL,0x411553aad2000LL),
-      reale(-0xe24ea9eLL,0x2a9a05055d800LL),
-      reale(-0x5064327LL,0xfef05400a9000LL),
-      reale(0x88012eaLL,0x607af3a3b4800LL),
-      reale(-0x2c768a6LL,0xc2eb7f1e2c600LL),
+      // C4[4], coeff of eps^19, polynomial in n of order 10
+      reale(0x7b2faeLL,0x8bff962f2e000LL),reale(-0x8e6239LL,0x171efbfa1f000LL),
+      reale(0x835afeLL,0x42ad0321d8000LL),reale(-0x3c6b42LL,0xb38873e1d1000LL),
+      reale(0x5fdf52LL,0x55033b3d82000LL),reale(-0x2b37b4LL,0x4424e87f63000LL),
+      reale(0x2d1757LL,0x929c8347ec000LL),reale(-0x2585bcLL,0x2bc2b63c95000LL),
+      reale(787004LL,0x9cc4866d6000LL),reale(-0xfdb00LL,0x94e67c5327000LL),
+      reale(412222LL,0xf695367aa1b00LL),reale(0x898623079LL,0x41f43bb0c949LL),
+      // C4[4], coeff of eps^18, polynomial in n of order 11
+      reale(0x830429LL,0xffd2991fd000LL),reale(-0x13f4e9bLL,0x228cc28de6000LL),
+      reale(0x8da59dLL,0x193483c94f000LL),reale(-0x7beaf6LL,0x64aaffbeb8000LL),
+      reale(0x8fe67fLL,0x90c0e29221000LL),reale(-0x359704LL,0xff7f3d538a000LL),
+      reale(0x592063LL,0x1886eb4173000LL),reale(-0x2eb64dLL,0x54e5874b5c000LL),
+      reale(0x1f4608LL,0x4067911445000LL),reale(-0x22fb2eLL,0x9e83fab52e000LL),
+      reale(297833LL,0x966e637f97000LL),reale(88539LL,0x9a2e50b8c6400LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[117]
-      real(0x2814d49c0c5000LL),real(0x468b0d3a3db800LL),
-      real(0x80724d98876000LL),real(0xf31dbc49b20800LL),
-      real(0x1e12cb4a6a67000LL),real(0x3eb5a58b5455800LL),
-      real(0x8b1eef20fbf8000LL),real(0x14cb29a266eda800LL),
-      real(0x36974c82ca289000LL),reale(2585LL,0xefae20720f800LL),
-      reale(9007LL,0x1d6baf437a000LL),reale(39779LL,0x24ec74fd54800LL),
-      reale(261696LL,0x442f64f42b000LL),reale(0x4532bfLL,0xa5b17f809800LL),
-      reale(-0x402994cLL,0xb2640fa9fc000LL),
-      reale(0x10513946LL,0xd27122c18e800LL),
-      reale(-0x1e7406cbLL,0xffbf2aea4d000LL),
-      reale(0x198dce95LL,0x53ee2b6143800LL),
-      reale(-0x6fd952LL,0xc8416b7a7e000LL),
-      reale(-0x106ef95bLL,0x51e9c9b688800LL),
-      reale(0xc2ebeddLL,0xe684af0fef000LL),
-      reale(-0x321b621LL,0x8b9ccea8bd800LL),
-      reale(0x1f62bbLL,0xfeee14beab380LL),
+      // C4[4], coeff of eps^17, polynomial in n of order 12
+      reale(0x1eb4769LL,0xd679f8ae1c000LL),
+      reale(-0x26b6a63LL,0xc8e983a10b000LL),
+      reale(0x7adfaaLL,0x2eda271162000LL),
+      reale(-0x13624eeLL,0x32cb1100e9000LL),
+      reale(0xa84f4aLL,0x5827875768000LL),reale(-0x65ab3dLL,0x697a0f03a7000LL),
+      reale(0x98d4acLL,0xfa65faac6e000LL),reale(-0x3387a2LL,0xe109fde185000LL),
+      reale(0x4aa6a0LL,0x94cb79bcb4000LL),reale(-0x3369e0LL,0x6cbc80e2c3000LL),
+      reale(0x104eb1LL,0xdee482d47a000LL),reale(-0x185dd5LL,0x34c1d97fa1000LL),
+      reale(562334LL,0xcf5270735f500LL),reale(0x898623079LL,0x41f43bb0c949LL),
+      // C4[4], coeff of eps^16, polynomial in n of order 13
+      reale(0xe3f269eLL,0x7928c61a8b800LL),
+      reale(-0x274a9f8LL,0xfeb83f4ee2000LL),
+      reale(0x19cf514LL,0xac3757be98800LL),
+      reale(-0x2b10690LL,0x3bed30e087000LL),
+      reale(0x7f7c1dLL,0xf8b6ea7445800LL),
+      reale(-0x11e1a4cLL,0xb18c883fec000LL),
+      reale(0xcad2bcLL,0xfed958edd2800LL),reale(-0x4ed02eLL,0xd955cefa51000LL),
+      reale(0x98f828LL,0x43fec217f800LL),reale(-0x38b25eLL,0xf12a5bbcf6000LL),
+      reale(0x33f5e8LL,0xc16fe1018c800LL),reale(-0x347f8aLL,0x934f1b0d1b000LL),
+      reale(291108LL,0x30be23439800LL),reale(90314LL,0xe93f4121c6900LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[118]
-      real(0xeb8379f6b27c00LL),real(0x1b6c4de1f1d7000LL),
-      real(0x355a1dadc956400LL),real(0x6d308de46411800LL),
-      real(0xed54313f63d4c00LL),real(0x22ae87428a2ac000LL),
-      real(0x58ce5dd980bc3400LL),reale(4090LL,0xd3c824bc46800LL),
-      reale(13806LL,0x44b4a8a441c00LL),reale(58809LL,0x7ab991df81000LL),
-      reale(370898LL,0xe410033e70400LL),reale(0x5d39b4LL,0x6402b9f6fb800LL),
-      reale(-0x511ced4LL,0xb40bb9356ec00LL),
-      reale(0x12ece898LL,0x1b63894556000LL),
-      reale(-0x1ed2ac20LL,0x585c774a5d400LL),
-      reale(0x127ec06aLL,0xe98bc80130800LL),
-      reale(0x95b946bLL,0xaa3cf3c05bc00LL),
-      reale(-0x12a1ebd9LL,0x22d7dff12b000LL),
-      reale(0x775489bLL,0xf01e02788a400LL),reale(0x3e6faaLL,0xb5091207e5800LL),
-      reale(-866060LL,0x3658630e08c00LL),reale(-0x4b6f8eLL,0xb8de01ac7480LL),
+      // C4[4], coeff of eps^15, polynomial in n of order 14
+      reale(-0x11f62759LL,0xe085960ca6000LL),
+      reale(-0x8349edeLL,0x7e88936265000LL),
+      reale(0xf59250aLL,0xa27a71193c000LL),
+      reale(-0x324d5e9LL,0xf571a60bb3000LL),
+      reale(0x1393a0dLL,0x3707e00852000LL),
+      reale(-0x2f19e78LL,0xe986595aa1000LL),
+      reale(0x9976c9LL,0xa546ce8428000LL),reale(-0xf38a3aLL,0x865870956f000LL),
+      reale(0xf1873bLL,0x3b7a7e96fe000LL),reale(-0x3dab08LL,0xac7a9f725d000LL),
+      reale(0x89909cLL,0x8a056dcb14000LL),reale(-0x45261cLL,0x4e702837ab000LL),
+      reale(0x188b87LL,0x5c81da4aaa000LL),reale(-0x27fab0LL,0x463fc5db99000LL),
+      reale(790676LL,0xf12036cb88d00LL),reale(0x898623079LL,0x41f43bb0c949LL),
+      // C4[4], coeff of eps^14, polynomial in n of order 15
+      reale(-0x91428afLL,0x61168ef4e1000LL),
+      reale(0x179c7facLL,0xf6300698d2000LL),
+      reale(-0x13c91260LL,0xd5d9103743000LL),
+      reale(-0x6ac7e50LL,0xbf6334abb4000LL),
+      reale(0x1074fe92LL,0x8592b62d25000LL),
+      reale(-0x4231b66LL,0xfd1b9a6496000LL),reale(0xc368dcLL,0xaa4a38387000LL),
+      reale(-0x31f4b46LL,0x55c5529a78000LL),
+      reale(0xd375d5LL,0x7d9fda6f69000LL),reale(-0xb5f816LL,0xe80970145a000LL),
+      reale(0x112944cLL,0x2633a57dcb000LL),
+      reale(-0x3bea5eLL,0x63ccb2593c000LL),reale(0x64df29LL,0xa84ec063ad000LL),
+      reale(-0x518269LL,0x301f3a801e000LL),reale(171304LL,0xc92dc0ce0f000LL),
+      reale(53498LL,0x8a12fdd94c400LL),reale(0x898623079LL,0x41f43bb0c949LL),
+      // C4[4], coeff of eps^13, polynomial in n of order 16
+      reale(945329LL,0x3e694a5630000LL),reale(0xc711f4LL,0xd11553dc81000LL),
+      reale(-0x8a57da0LL,0x93a442fb0a000LL),
+      reale(0x178fa170LL,0x9758cc3483000LL),
+      reale(-0x15c14d37LL,0xb25ba3b9a4000LL),
+      reale(-0x4a0fec8LL,0x809fe5a025000LL),
+      reale(0x117acf50LL,0xdb46a6c9be000LL),
+      reale(-0x58a681cLL,0x9728fd0b27000LL),
+      reale(0x4874cbLL,0xd717292318000LL),
+      reale(-0x3233dd5LL,0x218de81149000LL),
+      reale(0x1374bafLL,0xa831b35d72000LL),
+      reale(-0x6d54d8LL,0x1d2510de4b000LL),
+      reale(0x11abf83LL,0x70f1fa908c000LL),
+      reale(-0x53290fLL,0x66a09e0ded000LL),reale(0x2d8d44LL,0xf423c13426000LL),
+      reale(-0x47558cLL,0xb3664e8bef000LL),reale(0x1185f5LL,0xaa811667d8300LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[119]
-      real(0x55091490e3fe000LL),real(0xab3101736f26800LL),
-      real(0x16d77945c4e3b000LL),real(0x345d2a91137d7800LL),
-      reale(2099LL,0xc55d2c398000LL),reale(5898LL,0x424192198800LL),
-      reale(19366LL,0xa6f5f449f5000LL),reale(79943LL,0x847cdfac49800LL),
-      reale(486014LL,0x6a1dc16732000LL),reale(0x74e06dLL,0x94cc8fca800LL),
-      reale(-0x602ae68LL,0x9aefb9112f000LL),
-      reale(0x14c7530fLL,0x22ddc22bfb800LL),
-      reale(-0x1dca92a2LL,0xb20d8a9dcc000LL),
-      reale(0xbcc9b9bLL,0x77a0b2f8bc800LL),
-      reale(0xefae33eLL,0x2663cfb2e9000LL),
-      reale(-0x107b961bLL,0x1d6d98f5ed800LL),
-      reale(0x312ad04LL,0x6a67a23666000LL),reale(0x554400LL,0x5e92831b6e800LL),
-      reale(0x1f045a2LL,0xed2ae23e23000LL),
-      reale(-0x14223e1LL,0xb9bfecc91f800LL),
-      reale(0x25fe41LL,0xe3c1e337a6d80LL),
+      // C4[4], coeff of eps^12, polynomial in n of order 17
+      reale(39064LL,0xc457745427a00LL),reale(149707LL,0xe179ab818a000LL),
+      reale(834482LL,0xb3de3faf4c600LL),reale(0xb4b9faLL,0x43801d34c0c00LL),
+      reale(-0x822b550LL,0x9f953b0b49200LL),
+      reale(0x17547e84LL,0x8b1b355567800LL),
+      reale(-0x17d76448LL,0xa93ae2dcde00LL),
+      reale(-0x1ed1258LL,0x98f34e326e400LL),
+      reale(0x123f4adcLL,0x47c0d4df8aa00LL),
+      reale(-0x778c6c4LL,0xed3c824ec5000LL),
+      reale(-0x17a2d5LL,0x9e21984e2f600LL),
+      reale(-0x2dc770cLL,0xe1086e035bc00LL),
+      reale(0x1c54b5bLL,0x80264b6e6c200LL),
+      reale(-0x326da5LL,0x26f2532122800LL),reale(0xedf8dcLL,0x1c41b85df0e00LL),
+      reale(-0x7f40ddLL,0x8ce3a49309400LL),reale(-264320LL,0xcdacecc56da00LL),
+      reale(-128184LL,0xe028d0b38fac0LL),reale(0x898623079LL,0x41f43bb0c949LL),
+      // C4[4], coeff of eps^11, polynomial in n of order 18
+      reale(3796LL,0xb8b80a685d000LL),reale(10243LL,0xe5415b1644800LL),
+      reale(32134LL,0x75fe9c2f28000LL),reale(125896LL,0x13cc0b67cb800LL),
+      reale(720062LL,0x2eb5ef2cf3000LL),reale(0xa0de48LL,0x8e7784ebe2800LL),
+      reale(-0x788bbdfLL,0x56bd2fd2de000LL),
+      reale(0x16da2c6dLL,0xa914c081a9800LL),
+      reale(-0x19faa310LL,0x61e71b2209000LL),
+      reale(0x19ac988LL,0xa17bcee040800LL),
+      reale(0x12770767LL,0x432113bb94000LL),
+      reale(-0xa062e05LL,0xa594a26c7800LL),
+      reale(-0x1a7124LL,0x87b72ef09f000LL),
+      reale(-0x225d2aaLL,0x900fa56c5e800LL),
+      reale(0x26013eaLL,0x4a7ce5d24a000LL),
+      reale(-0x35b805LL,0xed2b265025800LL),reale(0x789d2fLL,0x47211641b5000LL),
+      reale(-0x8dcd8fLL,0xee1ad4893c800LL),reale(0x1a20deLL,0xd1c47193d5a80LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[120]
+      // C4[4], coeff of eps^10, polynomial in n of order 19
       real(0x20b0c3dbe662b800LL),real(0x49a4ee6b654d5000LL),
       reale(2895LL,0xbb9a481b3e800LL),reale(7963LL,0xd6290c9168000LL),
       reale(25525LL,0x742091bd91800LL),reale(102493LL,0xec03f49fb000LL),
@@ -5502,259 +5552,245 @@ namespace GeographicLib {
       reale(-0xaa398fLL,0xce94a8d56d000LL),
       reale(-0x155fb6LL,0x6e288e66d6800LL),reale(-909991LL,0xa4b2342326e00LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[121]
-      reale(3796LL,0xb8b80a685d000LL),reale(10243LL,0xe5415b1644800LL),
-      reale(32134LL,0x75fe9c2f28000LL),reale(125896LL,0x13cc0b67cb800LL),
-      reale(720062LL,0x2eb5ef2cf3000LL),reale(0xa0de48LL,0x8e7784ebe2800LL),
-      reale(-0x788bbdfLL,0x56bd2fd2de000LL),
-      reale(0x16da2c6dLL,0xa914c081a9800LL),
-      reale(-0x19faa310LL,0x61e71b2209000LL),
-      reale(0x19ac988LL,0xa17bcee040800LL),
-      reale(0x12770767LL,0x432113bb94000LL),
-      reale(-0xa062e05LL,0xa594a26c7800LL),
-      reale(-0x1a7124LL,0x87b72ef09f000LL),
-      reale(-0x225d2aaLL,0x900fa56c5e800LL),
-      reale(0x26013eaLL,0x4a7ce5d24a000LL),
-      reale(-0x35b805LL,0xed2b265025800LL),reale(0x789d2fLL,0x47211641b5000LL),
-      reale(-0x8dcd8fLL,0xee1ad4893c800LL),reale(0x1a20deLL,0xd1c47193d5a80LL),
+      // C4[4], coeff of eps^9, polynomial in n of order 20
+      real(0x55091490e3fe000LL),real(0xab3101736f26800LL),
+      real(0x16d77945c4e3b000LL),real(0x345d2a91137d7800LL),
+      reale(2099LL,0xc55d2c398000LL),reale(5898LL,0x424192198800LL),
+      reale(19366LL,0xa6f5f449f5000LL),reale(79943LL,0x847cdfac49800LL),
+      reale(486014LL,0x6a1dc16732000LL),reale(0x74e06dLL,0x94cc8fca800LL),
+      reale(-0x602ae68LL,0x9aefb9112f000LL),
+      reale(0x14c7530fLL,0x22ddc22bfb800LL),
+      reale(-0x1dca92a2LL,0xb20d8a9dcc000LL),
+      reale(0xbcc9b9bLL,0x77a0b2f8bc800LL),
+      reale(0xefae33eLL,0x2663cfb2e9000LL),
+      reale(-0x107b961bLL,0x1d6d98f5ed800LL),
+      reale(0x312ad04LL,0x6a67a23666000LL),reale(0x554400LL,0x5e92831b6e800LL),
+      reale(0x1f045a2LL,0xed2ae23e23000LL),
+      reale(-0x14223e1LL,0xb9bfecc91f800LL),
+      reale(0x25fe41LL,0xe3c1e337a6d80LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[122]
-      reale(39064LL,0xc457745427a00LL),reale(149707LL,0xe179ab818a000LL),
-      reale(834482LL,0xb3de3faf4c600LL),reale(0xb4b9faLL,0x43801d34c0c00LL),
-      reale(-0x822b550LL,0x9f953b0b49200LL),
-      reale(0x17547e84LL,0x8b1b355567800LL),
-      reale(-0x17d76448LL,0xa93ae2dcde00LL),
-      reale(-0x1ed1258LL,0x98f34e326e400LL),
-      reale(0x123f4adcLL,0x47c0d4df8aa00LL),
-      reale(-0x778c6c4LL,0xed3c824ec5000LL),
-      reale(-0x17a2d5LL,0x9e21984e2f600LL),
-      reale(-0x2dc770cLL,0xe1086e035bc00LL),
-      reale(0x1c54b5bLL,0x80264b6e6c200LL),
-      reale(-0x326da5LL,0x26f2532122800LL),reale(0xedf8dcLL,0x1c41b85df0e00LL),
-      reale(-0x7f40ddLL,0x8ce3a49309400LL),reale(-264320LL,0xcdacecc56da00LL),
-      reale(-128184LL,0xe028d0b38fac0LL),reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[123]
-      reale(945329LL,0x3e694a5630000LL),reale(0xc711f4LL,0xd11553dc81000LL),
-      reale(-0x8a57da0LL,0x93a442fb0a000LL),
-      reale(0x178fa170LL,0x9758cc3483000LL),
-      reale(-0x15c14d37LL,0xb25ba3b9a4000LL),
-      reale(-0x4a0fec8LL,0x809fe5a025000LL),
-      reale(0x117acf50LL,0xdb46a6c9be000LL),
-      reale(-0x58a681cLL,0x9728fd0b27000LL),
-      reale(0x4874cbLL,0xd717292318000LL),
-      reale(-0x3233dd5LL,0x218de81149000LL),
-      reale(0x1374bafLL,0xa831b35d72000LL),
-      reale(-0x6d54d8LL,0x1d2510de4b000LL),
-      reale(0x11abf83LL,0x70f1fa908c000LL),
-      reale(-0x53290fLL,0x66a09e0ded000LL),reale(0x2d8d44LL,0xf423c13426000LL),
-      reale(-0x47558cLL,0xb3664e8bef000LL),reale(0x1185f5LL,0xaa811667d8300LL),
+      // C4[4], coeff of eps^8, polynomial in n of order 21
+      real(0xeb8379f6b27c00LL),real(0x1b6c4de1f1d7000LL),
+      real(0x355a1dadc956400LL),real(0x6d308de46411800LL),
+      real(0xed54313f63d4c00LL),real(0x22ae87428a2ac000LL),
+      real(0x58ce5dd980bc3400LL),reale(4090LL,0xd3c824bc46800LL),
+      reale(13806LL,0x44b4a8a441c00LL),reale(58809LL,0x7ab991df81000LL),
+      reale(370898LL,0xe410033e70400LL),reale(0x5d39b4LL,0x6402b9f6fb800LL),
+      reale(-0x511ced4LL,0xb40bb9356ec00LL),
+      reale(0x12ece898LL,0x1b63894556000LL),
+      reale(-0x1ed2ac20LL,0x585c774a5d400LL),
+      reale(0x127ec06aLL,0xe98bc80130800LL),
+      reale(0x95b946bLL,0xaa3cf3c05bc00LL),
+      reale(-0x12a1ebd9LL,0x22d7dff12b000LL),
+      reale(0x775489bLL,0xf01e02788a400LL),reale(0x3e6faaLL,0xb5091207e5800LL),
+      reale(-866060LL,0x3658630e08c00LL),reale(-0x4b6f8eLL,0xb8de01ac7480LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[124]
-      reale(-0x91428afLL,0x61168ef4e1000LL),
-      reale(0x179c7facLL,0xf6300698d2000LL),
-      reale(-0x13c91260LL,0xd5d9103743000LL),
-      reale(-0x6ac7e50LL,0xbf6334abb4000LL),
-      reale(0x1074fe92LL,0x8592b62d25000LL),
-      reale(-0x4231b66LL,0xfd1b9a6496000LL),reale(0xc368dcLL,0xaa4a38387000LL),
-      reale(-0x31f4b46LL,0x55c5529a78000LL),
-      reale(0xd375d5LL,0x7d9fda6f69000LL),reale(-0xb5f816LL,0xe80970145a000LL),
-      reale(0x112944cLL,0x2633a57dcb000LL),
-      reale(-0x3bea5eLL,0x63ccb2593c000LL),reale(0x64df29LL,0xa84ec063ad000LL),
-      reale(-0x518269LL,0x301f3a801e000LL),reale(171304LL,0xc92dc0ce0f000LL),
-      reale(53498LL,0x8a12fdd94c400LL),reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[125]
-      reale(-0x11f62759LL,0xe085960ca6000LL),
-      reale(-0x8349edeLL,0x7e88936265000LL),
-      reale(0xf59250aLL,0xa27a71193c000LL),
-      reale(-0x324d5e9LL,0xf571a60bb3000LL),
-      reale(0x1393a0dLL,0x3707e00852000LL),
-      reale(-0x2f19e78LL,0xe986595aa1000LL),
-      reale(0x9976c9LL,0xa546ce8428000LL),reale(-0xf38a3aLL,0x865870956f000LL),
-      reale(0xf1873bLL,0x3b7a7e96fe000LL),reale(-0x3dab08LL,0xac7a9f725d000LL),
-      reale(0x89909cLL,0x8a056dcb14000LL),reale(-0x45261cLL,0x4e702837ab000LL),
-      reale(0x188b87LL,0x5c81da4aaa000LL),reale(-0x27fab0LL,0x463fc5db99000LL),
-      reale(790676LL,0xf12036cb88d00LL),reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[126]
-      reale(0xe3f269eLL,0x7928c61a8b800LL),
-      reale(-0x274a9f8LL,0xfeb83f4ee2000LL),
-      reale(0x19cf514LL,0xac3757be98800LL),
-      reale(-0x2b10690LL,0x3bed30e087000LL),
-      reale(0x7f7c1dLL,0xf8b6ea7445800LL),
-      reale(-0x11e1a4cLL,0xb18c883fec000LL),
-      reale(0xcad2bcLL,0xfed958edd2800LL),reale(-0x4ed02eLL,0xd955cefa51000LL),
-      reale(0x98f828LL,0x43fec217f800LL),reale(-0x38b25eLL,0xf12a5bbcf6000LL),
-      reale(0x33f5e8LL,0xc16fe1018c800LL),reale(-0x347f8aLL,0x934f1b0d1b000LL),
-      reale(291108LL,0x30be23439800LL),reale(90314LL,0xe93f4121c6900LL),
+      // C4[4], coeff of eps^7, polynomial in n of order 22
+      real(0x2814d49c0c5000LL),real(0x468b0d3a3db800LL),
+      real(0x80724d98876000LL),real(0xf31dbc49b20800LL),
+      real(0x1e12cb4a6a67000LL),real(0x3eb5a58b5455800LL),
+      real(0x8b1eef20fbf8000LL),real(0x14cb29a266eda800LL),
+      real(0x36974c82ca289000LL),reale(2585LL,0xefae20720f800LL),
+      reale(9007LL,0x1d6baf437a000LL),reale(39779LL,0x24ec74fd54800LL),
+      reale(261696LL,0x442f64f42b000LL),reale(0x4532bfLL,0xa5b17f809800LL),
+      reale(-0x402994cLL,0xb2640fa9fc000LL),
+      reale(0x10513946LL,0xd27122c18e800LL),
+      reale(-0x1e7406cbLL,0xffbf2aea4d000LL),
+      reale(0x198dce95LL,0x53ee2b6143800LL),
+      reale(-0x6fd952LL,0xc8416b7a7e000LL),
+      reale(-0x106ef95bLL,0x51e9c9b688800LL),
+      reale(0xc2ebeddLL,0xe684af0fef000LL),
+      reale(-0x321b621LL,0x8b9ccea8bd800LL),
+      reale(0x1f62bbLL,0xfeee14beab380LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[127]
-      reale(0x1eb4769LL,0xd679f8ae1c000LL),
-      reale(-0x26b6a63LL,0xc8e983a10b000LL),
-      reale(0x7adfaaLL,0x2eda271162000LL),
-      reale(-0x13624eeLL,0x32cb1100e9000LL),
-      reale(0xa84f4aLL,0x5827875768000LL),reale(-0x65ab3dLL,0x697a0f03a7000LL),
-      reale(0x98d4acLL,0xfa65faac6e000LL),reale(-0x3387a2LL,0xe109fde185000LL),
-      reale(0x4aa6a0LL,0x94cb79bcb4000LL),reale(-0x3369e0LL,0x6cbc80e2c3000LL),
-      reale(0x104eb1LL,0xdee482d47a000LL),reale(-0x185dd5LL,0x34c1d97fa1000LL),
-      reale(562334LL,0xcf5270735f500LL),reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[128]
-      reale(0x830429LL,0xffd2991fd000LL),reale(-0x13f4e9bLL,0x228cc28de6000LL),
-      reale(0x8da59dLL,0x193483c94f000LL),reale(-0x7beaf6LL,0x64aaffbeb8000LL),
-      reale(0x8fe67fLL,0x90c0e29221000LL),reale(-0x359704LL,0xff7f3d538a000LL),
-      reale(0x592063LL,0x1886eb4173000LL),reale(-0x2eb64dLL,0x54e5874b5c000LL),
-      reale(0x1f4608LL,0x4067911445000LL),reale(-0x22fb2eLL,0x9e83fab52e000LL),
-      reale(297833LL,0x966e637f97000LL),reale(88539LL,0x9a2e50b8c6400LL),
+      // C4[4], coeff of eps^6, polynomial in n of order 23
+      real(0x628e4f4bb7800LL),real(0xa60e374943000LL),real(0x11fae77940e800LL),
+      real(0x2022ddc061a000LL),real(0x3b7f2e2d7a5800LL),
+      real(0x72aa26ca9f1000LL),real(0xe77392a11fc800LL),
+      real(0x1ed1e51d0348000LL),real(0x460248a5fa93800LL),
+      real(0xabd9e84dc89f000LL),real(0x1d078c2cd5cea800LL),
+      real(0x58c9fda5cf076000LL),reale(5134LL,0xa77137081800LL),
+      reale(23653LL,0x63d76094d000LL),reale(163469LL,0x772f4630d8800LL),
+      reale(0x2dd8fbLL,0x8d384291a4000LL),
+      reale(-0x2dbc35fLL,0x2ac0ecb56f800LL),
+      reale(0xccfee38LL,0xfe0a5a4ffb000LL),
+      reale(-0x1ba24a18LL,0x4006a589c6800LL),
+      reale(0x1eefd234LL,0x411553aad2000LL),
+      reale(-0xe24ea9eLL,0x2a9a05055d800LL),
+      reale(-0x5064327LL,0xfef05400a9000LL),
+      reale(0x88012eaLL,0x607af3a3b4800LL),
+      reale(-0x2c768a6LL,0xc2eb7f1e2c600LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[129]
-      reale(0x7b2faeLL,0x8bff962f2e000LL),reale(-0x8e6239LL,0x171efbfa1f000LL),
-      reale(0x835afeLL,0x42ad0321d8000LL),reale(-0x3c6b42LL,0xb38873e1d1000LL),
-      reale(0x5fdf52LL,0x55033b3d82000LL),reale(-0x2b37b4LL,0x4424e87f63000LL),
-      reale(0x2d1757LL,0x929c8347ec000LL),reale(-0x2585bcLL,0x2bc2b63c95000LL),
-      reale(787004LL,0x9cc4866d6000LL),reale(-0xfdb00LL,0x94e67c5327000LL),
-      reale(412222LL,0xf695367aa1b00LL),reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[130]
-      reale(0x767497LL,0xd98a0c3214600LL),reale(-0x45753eLL,0x9a2c75ab3000LL),
-      reale(0x60dce4LL,0x7dcc619ba1a00LL),reale(-0x2a62f7LL,0xeef6e23c7e400LL),
-      reale(0x379edfLL,0x5af876afd6e00LL),reale(-0x24adadLL,0xed96d3cd99800LL),
-      reale(0x150456LL,0xde24866584200LL),reale(-0x183231LL,0xde6d41594c00LL),
-      reale(268682LL,0xb0f056b079600LL),reale(77255LL,0xca5a822ebf740LL),
+      // C4[4], coeff of eps^5, polynomial in n of order 24
+      real(0xc0b5b2cac000LL),real(0x139ac5d2ed800LL),real(0x20abe97223000LL),
+      real(0x37e2f8cba0800LL),real(0x6269b1d1ba000LL),real(0xb3074a8a43800LL),
+      real(0x151de1e3911000LL),real(0x298e5ccaa76800LL),
+      real(0x55d208375c8000LL),real(0xbb7ea958fd9800LL),
+      real(0x1b5e1854857f000LL),real(0x4547c4b8360c800LL),
+      real(0xc1cdc899e5d6000LL),real(0x2682d6f5e00af800LL),
+      reale(2326LL,0xf44888e46d000LL),reale(11275LL,0x7d4afe8b62800LL),
+      reale(82638LL,0x859516eee4000LL),reale(0x18d8c7LL,0xc1653179c5800LL),
+      reale(-0x1af9d3aLL,0x3ce064e2db000LL),
+      reale(0x86a9f98LL,0x2bb5164778800LL),
+      reale(-0x150fbacaLL,0x9cddde5df2000LL),
+      reale(0x1e0b24ccLL,0x730ece181b800LL),
+      reale(-0x18d8d4d5LL,0x8384e90dc9000LL),
+      reale(0xb1da294LL,0xf45203874e800LL),
+      reale(-0x2158e7cLL,0x12309f56a1480LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[131]
-      reale(0x5e3725LL,0x53f34a829c000LL),reale(-0x2c0886LL,0x220fe5f0ca800LL),
-      reale(0x3e6878LL,0x588848e445000LL),reale(-0x233c7dLL,0x8c97ccdf37800LL),
-      reale(0x1dc39dLL,0xac1b944ace000LL),reale(-0x1b9e87LL,0x5db3f814b4800LL),
-      reale(609590LL,0x74daa18497000LL),reale(-712108LL,0xe9300871a1800LL),
-      reale(310317LL,0x16957f6a36b80LL),reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[132]
-      reale(0x41e7a1LL,0xe5044c1364800LL),reale(-0x2279b3LL,0x3fbc5119cd000LL),
-      reale(0x251936LL,0xcceb783bf5800LL),reale(-0x1c77dbLL,0x77b6fd365e000LL),
-      reale(996566LL,0x94ae3b7946800LL),reale(-0x115309LL,0xd34e3cf7ef000LL),
-      reale(231629LL,0x92b25177d7800LL),reale(64961LL,0x89605803fda00LL),
+      // C4[4], coeff of eps^4, polynomial in n of order 25
+      real(0xe07098dae00LL),real(0x16338b625000LL),real(0x23dda179f200LL),
+      real(0x3b41a69cf400LL),real(0x645a89a6b600LL),real(0xaeabe0e09800LL),
+      real(0x1397028dcfa00LL),real(0x246014e923c00LL),real(0x4633de275be00LL),
+      real(0x8d95c8a56e000LL),real(0x12c670f9ba0200LL),
+      real(0x2a433484738400LL),real(0x6608a70542c600LL),
+      real(0x10c10ac322d2800LL),real(0x30ddb4b92590a00LL),
+      real(0xa2e30513d28cc00LL),real(0x289386109855ce00LL),
+      reale(3347LL,0x17499d2cb7000LL),reale(26358LL,0x5763b5c021200LL),
+      reale(564821LL,0x99c65b39a1400LL),reale(-0xa53014LL,0xa750d62f6d600LL),
+      reale(0x39d0d39LL,0x23d4ea299b800LL),
+      reale(-0xa4c65b0LL,0x59e1316fd1a00LL),
+      reale(0x10ac73dfLL,0x6e7b054af5c00LL),
+      reale(-0xde50b3bLL,0xce997b96dde00LL),
+      reale(0x4840a0cLL,0x8341516ef7e40LL),
       reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[133]
-      reale(7399LL,0xe4703b1ceb000LL),reale(-4926LL,0x8e7408af10800LL),
-      reale(3656LL,0xc01290e152000LL),reale(-3595LL,0x651f510443800LL),
-      real(0x5080258211e79000LL),real(-0x5458466826cf9800LL),
-      real(0x27a09e95cf36b080LL),reale(0x5d628dfLL,0xc3bd6c206251LL),
-      // _C4x[134]
-      real(0x183393315f62f400LL),real(-0x147c8a635ba4f000LL),
-      real(0xaadb07a361e2c00LL),real(-0xbd0a07cdca37800LL),
-      real(0x2c490db64a86400LL),real(0xc3000bbe3e2580LL),
-      reale(0x7f11bdLL,0x62a2be2e87a79LL),
-      // _C4x[135]
-      real(0x640278dc982000LL),real(-0x64de2b5e388800LL),
-      real(0x266cf1cb211000LL),real(-0x24af02897bd800LL),
-      real(0x125236c4932c80LL),reale(225070LL,0xa1cd0c0f186c5LL),
-      // _C4x[136]
-      real(0x1e30d5f17398800LL),real(-0x20335f44c005000LL),
-      real(0x8656a9da59d800LL),real(0x246f3281df3200LL),
-      reale(0x1c9038LL,0xea4bbbb5bea41LL),
-      // _C4x[137]
-      real(0xdf868e997000LL),real(-0xc54488fde800LL),real(0x67996a8dfb80LL),
-      reale(6219LL,0x86ed0fee71e5LL),
-      // _C4x[138]
-      real(0x4b0c377a00LL),real(0x141ef9cec0LL),real(0x12e7203d54087bdLL),
-      // _C4x[139]
-      real(0x44f600LL),real(0x13ed3512585LL),
-      // _C4x[140]
-      real(-0x15f6510c000LL),real(-0x26e7bc2d800LL),real(-0x46d3779b000LL),
-      real(-0x84e1d0c0800LL),real(-0x101cbc30a000LL),real(-0x2073376e3800LL),
-      real(-0x442adb8b9000LL),real(-0x963884ff6800LL),real(-0x15dbd71e08000LL),
-      real(-0x363ebc6d59800LL),real(-0x9122bbd857000LL),
-      real(-0x1a90a4ab06c800LL),real(-0x56f0a68cd06000LL),
-      real(-0x147a29992a8f800LL),real(-0x5d1402e6c175000LL),
-      real(-0x228e263277d22800LL),reale(-5079LL,0xa7b39ec4fc000LL),
-      reale(-128864LL,0xff6ddcc67a800LL),reale(0x2d8172LL,0xd360aa0ed000LL),
-      reale(-0x13c02eeLL,0xa44199bee7800LL),
-      reale(0x48aec0dLL,0x519df32cfe000LL),
-      reale(-0xa38931eLL,0x85c9cdac4800LL),
-      reale(0xe62962aLL,0x2d1ed763cf000LL),
-      reale(-0xb1da295LL,0xbadfc78b1800LL),
-      reale(0x37942ceLL,0x8c59a11a48880LL),
-      reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[141]
-      real(-0x1b5badebe000LL),real(-0x326332ca4000LL),real(-0x5fd1bd93a000LL),
-      real(-0xbcd8e5378000LL),real(-0x1837bef256000LL),
-      real(-0x3404424ccc000LL),real(-0x75bf8cd1d2000LL),
-      real(-0x11b50d05060000LL),real(-0x2dc96f11f6e000LL),
-      real(-0x811a6e895f4000LL),real(-0x195036bc82ea000LL),
-      real(-0x5af70d135548000LL),real(-0x187d57cdaa406000LL),
-      reale(-2190LL,0xcd2c6639e4000LL),reale(-18743LL,0xc7a34bd57e000LL),
-      reale(-438376LL,0x295778dfd0000LL),reale(0x8cc26dLL,0x89f7eb41e2000LL),
-      reale(-0x36a2869LL,0x2376664bc000LL),
-      reale(0xb05599fLL,0x331692f966000LL),
-      reale(-0x1554ad77LL,0xceab0490e8000LL),
-      reale(0x19bde44bLL,0x7929b7544a000LL),
-      reale(-0x12ff20f2LL,0x1f0e642c94000LL),
-      reale(0x7d8aeffLL,0xbb852faace000LL),
-      reale(-0x163b453LL,0x6175bf8f16300LL),
+      // C4[5], coeff of eps^29, polynomial in n of order 0
+      real(0x2f6e00LL),real(0x4338129a0b3LL),
+      // C4[5], coeff of eps^28, polynomial in n of order 1
+      real(-0x97662e0000LL),real(0x4701a0b000LL),real(0x171a7cbcbc0a5e7LL),
+      // C4[5], coeff of eps^27, polynomial in n of order 2
+      real(-0xb7a8cf8589000LL),real(0x25cdf8a9f5800LL),real(0xaa8ee05df480LL),
+      reale(53207LL,0x4825dfa147919LL),
+      // C4[5], coeff of eps^26, polynomial in n of order 3
+      real(-0x4519d2e6066000LL),real(0x17b1d503134000LL),
+      real(-0x1b53dc2d3c2000LL),real(0xc104a529c3b00LL),
+      reale(207992LL,0x1a086a30a3679LL),
+      // C4[5], coeff of eps^25, polynomial in n of order 4
+      real(-0xe48436400f9e000LL),real(0x825cbe3b5113800LL),
+      real(-0x9657faac8f9f000LL),real(0x1ac735d19d16800LL),
+      real(0x7b639e59c13780LL),reale(0x821f3cLL,0x2b5901ca2b961LL),
+      // C4[5], coeff of eps^24, polynomial in n of order 5
+      real(-0x13b86e0d5c5dc000LL),real(0x135f9b0385fb0000LL),
+      real(-0x10df1064c3304000LL),real(0x58b0ae17a818000LL),
+      real(-0x70d05036b8ec000LL),real(0x2e5299a0b610e00LL),
+      reale(0x9b4e92LL,0x2338af8e3405bLL),
+      // C4[5], coeff of eps^23, polynomial in n of order 6
+      reale(-126384LL,0xa0947ea9b1000LL),reale(192332LL,0x2215a4d90d800LL),
+      reale(-113393LL,0x76c6d70356000LL),reale(71665LL,0x3fb557978e800LL),
+      reale(-81792LL,0x5906afc0bb000LL),reale(12036LL,0x1a6fad5adf800LL),
+      reale(3561LL,0x9aef6f2cefa80LL),reale(0xcedfa8a8LL,0xea81d86b4b937LL),
+      // C4[5], coeff of eps^22, polynomial in n of order 7
+      reale(-191648LL,0xe77088a526000LL),reale(308186LL,0x45ee8f2434000LL),
+      reale(-124929LL,0x2de5b6ceb2000LL),reale(153616LL,0xaed0e35eb8000LL),
+      reale(-118467LL,0x3b495d565e000LL),reale(38029LL,0x77ad4b77bc000LL),
+      reale(-53613LL,0xbe09f47cea000LL),reale(20169LL,0xecfa5f7fa8900LL),
+      reale(0xcedfa8a8LL,0xea81d86b4b937LL),
+      // C4[5], coeff of eps^21, polynomial in n of order 8
+      reale(-0x4ee2b4LL,0x37e2479104000LL),reale(0x5182f3LL,0xe957aa505800LL),
+      reale(-0x1f44cdLL,0xd168ac9993000LL),reale(0x38fc96LL,0xdcd2e44998800LL),
+      reale(-0x1ae334LL,0x14143dae02000LL),reale(0x1469f4LL,0xa441c7cbb800LL),
+      reale(-0x1635daLL,0x81e7523fb1000LL),reale(163809LL,0xd9aab3cbce800LL),
+      reale(50215LL,0x8f7a6f7ead780LL),reale(0xa815b9093LL,0xe897fd72d67cbLL),
+      // C4[5], coeff of eps^20, polynomial in n of order 9
+      reale(-0xaaeacdLL,0x650ed01570000LL),reale(0x5156bcLL,0xd37ba10880000LL),
+      reale(-0x3e519fLL,0x5b8c134590000LL),reale(0x5823d2LL,0xc1238f4360000LL),
+      reale(-0x1c3bcfLL,0x81c9aeb8b0000LL),reale(0x2f2a39LL,0x298f1b5c40000LL),
+      reale(-0x1e3275LL,0xf67ab4a4d0000LL),reale(651396LL,0xde4e2e0920000LL),
+      reale(-0xf66e6LL,0xa1e7873ff0000LL),reale(341219LL,0x67868049b6800LL),
       reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[142]
-      real(-0x1441fa2f35000LL),real(-0x272c726527800LL),
-      real(-0x4ebdd7b856000LL),real(-0xa564301b74800LL),
-      real(-0x16d6333bd37000LL),real(-0x3580dec1951800LL),
-      real(-0x865ae53c178000LL),real(-0x16ec61d7f65e800LL),
-      real(-0x455fa2e228b9000LL),real(-0xef77f4cbfa3b800LL),
-      real(-0x3d9c6e708569a000LL),reale(-5231LL,0x75aee04377800LL),
-      reale(-42197LL,0x3024573145000LL),reale(-920787LL,0xa857f3b1a800LL),
-      reale(0x1102cbfLL,0x2fc56aab44000LL),
-      reale(-0x5f6de95LL,0xa18dfcd50d800LL),
-      reale(0x10e21b46LL,0xc37962f3c3000LL),
-      reale(-0x1b2768abLL,0x1de1d7c9b0800LL),
-      reale(0x17e5fb3aLL,0xf028b16722000LL),
-      reale(-0x7167aefLL,0xab67e90163800LL),
-      reale(-0x6ad24a0LL,0xc9fcb5c1c1000LL),
-      reale(0x742e9cfLL,0x78c43cf486800LL),
-      reale(-0x22a7afaLL,0xbd91e6d784780LL),
+      // C4[5], coeff of eps^19, polynomial in n of order 10
+      reale(-0x127792cLL,0xc55293d82000LL),reale(0x37ddd5LL,0x231a8ee911000LL),
+      reale(-0x9b350bLL,0x643ebbbae8000LL),reale(0x657928LL,0x1449aa44ff000LL),
+      reale(-0x2d822fLL,0x4d0ecc294e000LL),reale(0x587365LL,0x225c7b8fcd000LL),
+      reale(-0x1e96e9LL,0x4cc2f0ac74000LL),reale(0x1fdbcfLL,0x2718a4e53b000LL),
+      reale(-0x1f259dLL,0x463b57281a000LL),reale(150337LL,0x64e8ec0109000LL),
+      reale(48205LL,0x4eea8f2f13300LL),reale(0xa815b9093LL,0xe897fd72d67cbLL),
+      // C4[5], coeff of eps^18, polynomial in n of order 11
+      reale(-0x10fef3bLL,0xbc31d01c6c000LL),
+      reale(0x7bcf45LL,0x34042cf6f8000LL),
+      reale(-0x14146ecLL,0xe27dc86d24000LL),
+      reale(0x440754LL,0xaba1762760000LL),reale(-0x7ff03eLL,0xabf7bede1c000LL),
+      reale(0x7b4775LL,0xcbb99849c8000LL),reale(-0x2125efLL,0xafccca12d4000LL),
+      reale(0x4e4655LL,0x3b8a4c21b0000LL),reale(-0x25dda0LL,0x521386aecc000LL),
+      reale(934125LL,0x1149047298000LL),reale(-0x175f39LL,0x633afb5584000LL),
+      reale(453383LL,0xd34e451346a00LL),reale(0xa815b9093LL,0xe897fd72d67cbLL),
+      // C4[5], coeff of eps^17, polynomial in n of order 12
+      reale(0x3e7d45LL,0x789aeb9e64000LL),reale(0x2f3f4fcLL,0x46ab457e8d000LL),
+      reale(-0x172d674LL,0xfe330f229e000LL),
+      reale(0x476747LL,0x21a30e03df000LL),
+      reale(-0x14a9b26LL,0xf13444e798000LL),
+      reale(0x621a4aLL,0x6611bb6911000LL),reale(-0x5b001fLL,0x80ba019392000LL),
+      reale(0x8b7c4cLL,0xab5773fc63000LL),reale(-0x1f2f95LL,0xa3590ccccc000LL),
+      reale(0x3756fbLL,0xd85dd12c15000LL),reale(-0x2c8e14LL,0x45f0207986000LL),
+      reale(85758LL,0x333e03c667000LL),reale(28339LL,0x9119c9ad54d00LL),
       reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[143]
-      real(-0xc09a6adbf4000LL),real(-0x18cab6e3030000LL),
-      real(-0x359d0ace62c000LL),real(-0x7ab7d9cc438000LL),
-      real(-0x12c67ab580a4000LL),real(-0x31d5f1c0d1c0000LL),
-      real(-0x9233f1c13ddc000LL),real(-0x1e779de654b48000LL),
-      real(-0x789f22a00b054000LL),reale(-9797LL,0xe5d83adcb0000LL),
-      reale(-75090LL,0x51f88f9574000LL),reale(-0x178b5aLL,0x9c7032b3a8000LL),
-      reale(0x1a82b31LL,0x1e96e700fc000LL),
-      reale(-0x87b6e90LL,0x2c52914720000LL),
-      reale(0x15338523LL,0xce7f78ffc4000LL),
-      reale(-0x1c018382LL,0xa676efa498000LL),
-      reale(0xf7702b8LL,0x1370b4ff4c000LL),
-      reale(0x6aff3b9LL,0x36d40ed990000LL),
-      reale(-0xf8c984eLL,0x7ffae6d14000LL),
-      reale(0x90685bbLL,0x58f7b5f388000LL),
-      reale(-0x1ed5c63LL,0x42391cb69c000LL),reale(433029LL,0xe4d3ce78fba00LL),
+      // C4[5], coeff of eps^16, polynomial in n of order 13
+      reale(-0x1049519bLL,0xbc3bc38b38000LL),
+      reale(0x7f7b74aLL,0x952bfc30e0000LL),reale(0x6b8bceLL,0x68e4684408000LL),
+      reale(0x2acdc41LL,0xdb6a70b90000LL),
+      reale(-0x1edede8LL,0xeac4616e58000LL),
+      reale(0x1e9d3bLL,0xa0ac245340000LL),
+      reale(-0x1382e05LL,0xf62e5d8128000LL),
+      reale(0x93015bLL,0x6e1e5ebef0000LL),reale(-0x341c58LL,0x72efe2f378000LL),
+      reale(0x8ab64fLL,0x3d33d105a0000LL),reale(-0x2b7a31LL,0x15b9e03c48000LL),
+      reale(0x17b833LL,0x1bfff1de50000LL),reale(-0x258cfbLL,0x9abfabd298000LL),
+      reale(615586LL,0x6f27f96118400LL),reale(0xa815b9093LL,0xe897fd72d67cbLL),
+      // C4[5], coeff of eps^15, polynomial in n of order 14
+      reale(0x16f68781LL,0xc522d651da000LL),
+      reale(-0x37e2828LL,0x7efd7619c3000LL),
+      reale(-0x10331b71LL,0x69423fe444000LL),
+      reale(0x9d098fdLL,0xfc4f4e3665000LL),reale(0x5e2551LL,0xa7ea1cfd2e000LL),
+      reale(0x229920aLL,0xf1d4bf77a7000LL),
+      reale(-0x2769d7dLL,0xa6caafd0d8000LL),
+      reale(0x1576f9LL,0xae66a659c9000LL),reale(-0xffa185LL,0x94f2f05382000LL),
+      reale(0xcec3fdLL,0x7d5a3390b000LL),reale(-0x1aefb0LL,0x7ae491796c000LL),
+      reale(0x6cfbdcLL,0xca525091ad000LL),reale(-0x3fd575LL,0x7e73a676d6000LL),
+      reale(-96165LL,0x5bcf853fef000LL),reale(-44021LL,0xd7e3d2faea500LL),
       reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[144]
-      real(-0x69d018a3b9e000LL),real(-0xed437c3919a800LL),
-      real(-0x237e48279feb000LL),real(-0x5bea2151a0b3800LL),
-      real(-0x10666acb6ec18000LL),real(-0x350c7e1643d3c800LL),
-      reale(-3248LL,0x1d418b40bb000LL),reale(-15861LL,0xd9725e65aa800LL),
-      reale(-116264LL,0xa1b86f476e000LL),reale(-0x229587LL,0x7ceb4904e1800LL),
-      reale(0x24855b7LL,0xecf46ee8e1000LL),
-      reale(-0xac2cc75LL,0xaaa0612d48800LL),
-      reale(0x17f097f1LL,0x9c33fda5f4000LL),
-      reale(-0x19c3bce2LL,0x725671bbf800LL),
-      reale(0x61191fcLL,0x5dd5e11f87000LL),
-      reale(0xf0adc55LL,0x80f91f9d26800LL),
-      reale(-0xf09e6ecLL,0x661de5767a000LL),
-      reale(0x3c84250LL,0x191a53ee5d800LL),reale(0xc09838LL,0x95e41abad000LL),
-      reale(0x1f06cdLL,0xc3307b9c44800LL),reale(-0x4821ccLL,0xfdf7c75745180LL),
+      // C4[5], coeff of eps^14, polynomial in n of order 15
+      reale(0x5159322LL,0xc7e70a9f1c000LL),
+      reale(-0x118b71aaLL,0x5047121068000LL),
+      reale(0x1810e57dLL,0xda2cbc2e94000LL),
+      reale(-0x66778e7LL,0x65170cb790000LL),
+      reale(-0xf96514fLL,0xfb4257b94c000LL),
+      reale(0xbf4cf6bLL,0xcaf344c1b8000LL),
+      reale(-0x16c677LL,0xe3f4c18ec4000LL),
+      reale(0x1620f4bLL,0x98196f9e60000LL),
+      reale(-0x2f24ee0LL,0x7df63fe7c000LL),reale(0x468025LL,0x4eb0e8bd08000LL),
+      reale(-0x9fd65eLL,0xcbc53357f4000LL),reale(0xfd40fdLL,0x1fd2e38d30000LL),
+      reale(-0x23f561LL,0xc44119eaac000LL),reale(0x3194f4LL,0x1edbdd7e58000LL),
+      reale(-0x40b45eLL,0x6cf17c0624000LL),reale(851256LL,0x2b979a0197a00LL),
       reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[145]
-      real(-0x3bd4906e474e000LL),real(-0x97941b80ce3c000LL),
-      real(-0x1a66716bc5afa000LL),real(-0x532298a0bc3e0000LL),
-      reale(-4940LL,0xf256daf8ba000LL),reale(-23309LL,0x879c08dc7c000LL),
-      reale(-164255LL,0xaa736f110e000LL),reale(-0x2ea1f9LL,0xf31091a018000LL),
-      reale(0x2e81dd2LL,0xafc6204b42000LL),
-      reale(-0xcb87175LL,0xf2364e1434000LL),
-      reale(0x19614c39LL,0x15318e0496000LL),
-      reale(-0x1604d6f4LL,0x8a8293c610000LL),
-      reale(-0x1dbc060LL,0xd38b789a4a000LL),
-      reale(0x123f0094LL,0x213b4942ec000LL),
-      reale(-0xad78c47LL,0xd9c4d7699e000LL),reale(568685LL,0x4686791808000LL),
-      reale(-309549LL,0xcb44aacfd2000LL),reale(0x1f72ab4LL,0x34fcc4d2a4000LL),
-      reale(-0xf7e7fcLL,0x7235d22a26000LL),reale(0x168d3dLL,0xdae92a7065f00LL),
+      // C4[5], coeff of eps^13, polynomial in n of order 16
+      reale(-334886LL,0x3942380350000LL),reale(-0x54e5e9LL,0x5c5bfa560f000LL),
+      reale(0x499ebdeLL,0x955c2ca786000LL),
+      reale(-0x10b98057LL,0x9f02d32fed000LL),
+      reale(0x19008912LL,0x135ebd637c000LL),
+      reale(-0x9c87f97LL,0x2fc1aca86b000LL),
+      reale(-0xe333bb3LL,0x6a09e3cf2000LL),reale(0xe4ac950LL,0x6d53e5d49000LL),
+      reale(-0x13236e9LL,0xb505beb9a8000LL),
+      reale(0x61a648LL,0x53e56b4c47000LL),
+      reale(-0x32e8783LL,0x4ab2ce9f5e000LL),
+      reale(0xc918dcLL,0x7f23319325000LL),reale(-0x30af60LL,0x8e0ebab3d4000LL),
+      reale(0xf35327LL,0x7112262fa3000LL),reale(-0x5567cdLL,0x276e897cca000LL),
+      reale(-517467LL,0xc78d24bf81000LL),reale(-280399LL,0xc849a31a35b00LL),
+      reale(0xa815b9093LL,0xe897fd72d67cbLL),
+      // C4[5], coeff of eps^12, polynomial in n of order 17
+      reale(-9363LL,0x968ca53630000LL),reale(-41699LL,0x39ab2cddLL<<20),
+      reale(-274852LL,0xa91d4207d0000LL),reale(-0x4816caLL,0x57c4a3fe60000LL),
+      reale(0x4133f40LL,0x5baadc4870000LL),reale(-0xfac3dcfLL,0x97946dc0000LL),
+      reale(0x19a74e8cLL,0x66a0aab610000LL),
+      reale(-0xd9c7fd5LL,0x9b5dc96920000LL),
+      reale(-0xbb63ba2LL,0x3909340eb0000LL),
+      reale(0x108fbe05LL,0x73e3e2e80000LL),
+      reale(-0x3409bfaLL,0xc0fc6f1050000LL),
+      reale(-0x9f28cfLL,0xe614f5fbe0000LL),
+      reale(-0x2dff97eLL,0x68964278f0000LL),
+      reale(0x1946da3LL,0xd8be140f40000LL),reale(733724LL,0x9fb250690000LL),
+      reale(0x89382aLL,0x9e09f3a6a0000LL),reale(-0x793ff1LL,0x35e09d7730000LL),
+      reale(0x11f3b6LL,0x79934ee544800LL),
       reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[146]
+      // C4[5], coeff of eps^11, polynomial in n of order 18
       real(-0x274a66713f785000LL),real(-0x78cbe0a9df914800LL),
       reale(-6987LL,0xa32f129098000LL),reale(-31981LL,0x453597ca04800LL),
       reale(-217575LL,0x823be2c7b5000LL),reale(-0x3b3fa5LL,0xd12282532d800LL),
@@ -5772,238 +5808,228 @@ namespace GeographicLib {
       reale(-0x118b1eLL,0x40b99a8073800LL),
       reale(-0x10e331LL,0x73d31536c1e80LL),
       reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[147]
-      reale(-9363LL,0x968ca53630000LL),reale(-41699LL,0x39ab2cddLL<<20),
-      reale(-274852LL,0xa91d4207d0000LL),reale(-0x4816caLL,0x57c4a3fe60000LL),
-      reale(0x4133f40LL,0x5baadc4870000LL),reale(-0xfac3dcfLL,0x97946dc0000LL),
-      reale(0x19a74e8cLL,0x66a0aab610000LL),
-      reale(-0xd9c7fd5LL,0x9b5dc96920000LL),
-      reale(-0xbb63ba2LL,0x3909340eb0000LL),
-      reale(0x108fbe05LL,0x73e3e2e80000LL),
-      reale(-0x3409bfaLL,0xc0fc6f1050000LL),
-      reale(-0x9f28cfLL,0xe614f5fbe0000LL),
-      reale(-0x2dff97eLL,0x68964278f0000LL),
-      reale(0x1946da3LL,0xd8be140f40000LL),reale(733724LL,0x9fb250690000LL),
-      reale(0x89382aLL,0x9e09f3a6a0000LL),reale(-0x793ff1LL,0x35e09d7730000LL),
-      reale(0x11f3b6LL,0x79934ee544800LL),
-      reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[148]
-      reale(-334886LL,0x3942380350000LL),reale(-0x54e5e9LL,0x5c5bfa560f000LL),
-      reale(0x499ebdeLL,0x955c2ca786000LL),
-      reale(-0x10b98057LL,0x9f02d32fed000LL),
-      reale(0x19008912LL,0x135ebd637c000LL),
-      reale(-0x9c87f97LL,0x2fc1aca86b000LL),
-      reale(-0xe333bb3LL,0x6a09e3cf2000LL),reale(0xe4ac950LL,0x6d53e5d49000LL),
-      reale(-0x13236e9LL,0xb505beb9a8000LL),
-      reale(0x61a648LL,0x53e56b4c47000LL),
-      reale(-0x32e8783LL,0x4ab2ce9f5e000LL),
-      reale(0xc918dcLL,0x7f23319325000LL),reale(-0x30af60LL,0x8e0ebab3d4000LL),
-      reale(0xf35327LL,0x7112262fa3000LL),reale(-0x5567cdLL,0x276e897cca000LL),
-      reale(-517467LL,0xc78d24bf81000LL),reale(-280399LL,0xc849a31a35b00LL),
+      // C4[5], coeff of eps^10, polynomial in n of order 19
+      real(-0x3bd4906e474e000LL),real(-0x97941b80ce3c000LL),
+      real(-0x1a66716bc5afa000LL),real(-0x532298a0bc3e0000LL),
+      reale(-4940LL,0xf256daf8ba000LL),reale(-23309LL,0x879c08dc7c000LL),
+      reale(-164255LL,0xaa736f110e000LL),reale(-0x2ea1f9LL,0xf31091a018000LL),
+      reale(0x2e81dd2LL,0xafc6204b42000LL),
+      reale(-0xcb87175LL,0xf2364e1434000LL),
+      reale(0x19614c39LL,0x15318e0496000LL),
+      reale(-0x1604d6f4LL,0x8a8293c610000LL),
+      reale(-0x1dbc060LL,0xd38b789a4a000LL),
+      reale(0x123f0094LL,0x213b4942ec000LL),
+      reale(-0xad78c47LL,0xd9c4d7699e000LL),reale(568685LL,0x4686791808000LL),
+      reale(-309549LL,0xcb44aacfd2000LL),reale(0x1f72ab4LL,0x34fcc4d2a4000LL),
+      reale(-0xf7e7fcLL,0x7235d22a26000LL),reale(0x168d3dLL,0xdae92a7065f00LL),
       reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[149]
-      reale(0x5159322LL,0xc7e70a9f1c000LL),
-      reale(-0x118b71aaLL,0x5047121068000LL),
-      reale(0x1810e57dLL,0xda2cbc2e94000LL),
-      reale(-0x66778e7LL,0x65170cb790000LL),
-      reale(-0xf96514fLL,0xfb4257b94c000LL),
-      reale(0xbf4cf6bLL,0xcaf344c1b8000LL),
-      reale(-0x16c677LL,0xe3f4c18ec4000LL),
-      reale(0x1620f4bLL,0x98196f9e60000LL),
-      reale(-0x2f24ee0LL,0x7df63fe7c000LL),reale(0x468025LL,0x4eb0e8bd08000LL),
-      reale(-0x9fd65eLL,0xcbc53357f4000LL),reale(0xfd40fdLL,0x1fd2e38d30000LL),
-      reale(-0x23f561LL,0xc44119eaac000LL),reale(0x3194f4LL,0x1edbdd7e58000LL),
-      reale(-0x40b45eLL,0x6cf17c0624000LL),reale(851256LL,0x2b979a0197a00LL),
+      // C4[5], coeff of eps^9, polynomial in n of order 20
+      real(-0x69d018a3b9e000LL),real(-0xed437c3919a800LL),
+      real(-0x237e48279feb000LL),real(-0x5bea2151a0b3800LL),
+      real(-0x10666acb6ec18000LL),real(-0x350c7e1643d3c800LL),
+      reale(-3248LL,0x1d418b40bb000LL),reale(-15861LL,0xd9725e65aa800LL),
+      reale(-116264LL,0xa1b86f476e000LL),reale(-0x229587LL,0x7ceb4904e1800LL),
+      reale(0x24855b7LL,0xecf46ee8e1000LL),
+      reale(-0xac2cc75LL,0xaaa0612d48800LL),
+      reale(0x17f097f1LL,0x9c33fda5f4000LL),
+      reale(-0x19c3bce2LL,0x725671bbf800LL),
+      reale(0x61191fcLL,0x5dd5e11f87000LL),
+      reale(0xf0adc55LL,0x80f91f9d26800LL),
+      reale(-0xf09e6ecLL,0x661de5767a000LL),
+      reale(0x3c84250LL,0x191a53ee5d800LL),reale(0xc09838LL,0x95e41abad000LL),
+      reale(0x1f06cdLL,0xc3307b9c44800LL),reale(-0x4821ccLL,0xfdf7c75745180LL),
       reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[150]
-      reale(0x16f68781LL,0xc522d651da000LL),
-      reale(-0x37e2828LL,0x7efd7619c3000LL),
-      reale(-0x10331b71LL,0x69423fe444000LL),
-      reale(0x9d098fdLL,0xfc4f4e3665000LL),reale(0x5e2551LL,0xa7ea1cfd2e000LL),
-      reale(0x229920aLL,0xf1d4bf77a7000LL),
-      reale(-0x2769d7dLL,0xa6caafd0d8000LL),
-      reale(0x1576f9LL,0xae66a659c9000LL),reale(-0xffa185LL,0x94f2f05382000LL),
-      reale(0xcec3fdLL,0x7d5a3390b000LL),reale(-0x1aefb0LL,0x7ae491796c000LL),
-      reale(0x6cfbdcLL,0xca525091ad000LL),reale(-0x3fd575LL,0x7e73a676d6000LL),
-      reale(-96165LL,0x5bcf853fef000LL),reale(-44021LL,0xd7e3d2faea500LL),
+      // C4[5], coeff of eps^8, polynomial in n of order 21
+      real(-0xc09a6adbf4000LL),real(-0x18cab6e3030000LL),
+      real(-0x359d0ace62c000LL),real(-0x7ab7d9cc438000LL),
+      real(-0x12c67ab580a4000LL),real(-0x31d5f1c0d1c0000LL),
+      real(-0x9233f1c13ddc000LL),real(-0x1e779de654b48000LL),
+      real(-0x789f22a00b054000LL),reale(-9797LL,0xe5d83adcb0000LL),
+      reale(-75090LL,0x51f88f9574000LL),reale(-0x178b5aLL,0x9c7032b3a8000LL),
+      reale(0x1a82b31LL,0x1e96e700fc000LL),
+      reale(-0x87b6e90LL,0x2c52914720000LL),
+      reale(0x15338523LL,0xce7f78ffc4000LL),
+      reale(-0x1c018382LL,0xa676efa498000LL),
+      reale(0xf7702b8LL,0x1370b4ff4c000LL),
+      reale(0x6aff3b9LL,0x36d40ed990000LL),
+      reale(-0xf8c984eLL,0x7ffae6d14000LL),
+      reale(0x90685bbLL,0x58f7b5f388000LL),
+      reale(-0x1ed5c63LL,0x42391cb69c000LL),reale(433029LL,0xe4d3ce78fba00LL),
       reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[151]
-      reale(-0x1049519bLL,0xbc3bc38b38000LL),
-      reale(0x7f7b74aLL,0x952bfc30e0000LL),reale(0x6b8bceLL,0x68e4684408000LL),
-      reale(0x2acdc41LL,0xdb6a70b90000LL),
-      reale(-0x1edede8LL,0xeac4616e58000LL),
-      reale(0x1e9d3bLL,0xa0ac245340000LL),
-      reale(-0x1382e05LL,0xf62e5d8128000LL),
-      reale(0x93015bLL,0x6e1e5ebef0000LL),reale(-0x341c58LL,0x72efe2f378000LL),
-      reale(0x8ab64fLL,0x3d33d105a0000LL),reale(-0x2b7a31LL,0x15b9e03c48000LL),
-      reale(0x17b833LL,0x1bfff1de50000LL),reale(-0x258cfbLL,0x9abfabd298000LL),
-      reale(615586LL,0x6f27f96118400LL),reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[152]
-      reale(0x3e7d45LL,0x789aeb9e64000LL),reale(0x2f3f4fcLL,0x46ab457e8d000LL),
-      reale(-0x172d674LL,0xfe330f229e000LL),
-      reale(0x476747LL,0x21a30e03df000LL),
-      reale(-0x14a9b26LL,0xf13444e798000LL),
-      reale(0x621a4aLL,0x6611bb6911000LL),reale(-0x5b001fLL,0x80ba019392000LL),
-      reale(0x8b7c4cLL,0xab5773fc63000LL),reale(-0x1f2f95LL,0xa3590ccccc000LL),
-      reale(0x3756fbLL,0xd85dd12c15000LL),reale(-0x2c8e14LL,0x45f0207986000LL),
-      reale(85758LL,0x333e03c667000LL),reale(28339LL,0x9119c9ad54d00LL),
+      // C4[5], coeff of eps^7, polynomial in n of order 22
+      real(-0x1441fa2f35000LL),real(-0x272c726527800LL),
+      real(-0x4ebdd7b856000LL),real(-0xa564301b74800LL),
+      real(-0x16d6333bd37000LL),real(-0x3580dec1951800LL),
+      real(-0x865ae53c178000LL),real(-0x16ec61d7f65e800LL),
+      real(-0x455fa2e228b9000LL),real(-0xef77f4cbfa3b800LL),
+      real(-0x3d9c6e708569a000LL),reale(-5231LL,0x75aee04377800LL),
+      reale(-42197LL,0x3024573145000LL),reale(-920787LL,0xa857f3b1a800LL),
+      reale(0x1102cbfLL,0x2fc56aab44000LL),
+      reale(-0x5f6de95LL,0xa18dfcd50d800LL),
+      reale(0x10e21b46LL,0xc37962f3c3000LL),
+      reale(-0x1b2768abLL,0x1de1d7c9b0800LL),
+      reale(0x17e5fb3aLL,0xf028b16722000LL),
+      reale(-0x7167aefLL,0xab67e90163800LL),
+      reale(-0x6ad24a0LL,0xc9fcb5c1c1000LL),
+      reale(0x742e9cfLL,0x78c43cf486800LL),
+      reale(-0x22a7afaLL,0xbd91e6d784780LL),
       reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[153]
-      reale(-0x10fef3bLL,0xbc31d01c6c000LL),
-      reale(0x7bcf45LL,0x34042cf6f8000LL),
-      reale(-0x14146ecLL,0xe27dc86d24000LL),
-      reale(0x440754LL,0xaba1762760000LL),reale(-0x7ff03eLL,0xabf7bede1c000LL),
-      reale(0x7b4775LL,0xcbb99849c8000LL),reale(-0x2125efLL,0xafccca12d4000LL),
-      reale(0x4e4655LL,0x3b8a4c21b0000LL),reale(-0x25dda0LL,0x521386aecc000LL),
-      reale(934125LL,0x1149047298000LL),reale(-0x175f39LL,0x633afb5584000LL),
-      reale(453383LL,0xd34e451346a00LL),reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[154]
-      reale(-0x127792cLL,0xc55293d82000LL),reale(0x37ddd5LL,0x231a8ee911000LL),
-      reale(-0x9b350bLL,0x643ebbbae8000LL),reale(0x657928LL,0x1449aa44ff000LL),
-      reale(-0x2d822fLL,0x4d0ecc294e000LL),reale(0x587365LL,0x225c7b8fcd000LL),
-      reale(-0x1e96e9LL,0x4cc2f0ac74000LL),reale(0x1fdbcfLL,0x2718a4e53b000LL),
-      reale(-0x1f259dLL,0x463b57281a000LL),reale(150337LL,0x64e8ec0109000LL),
-      reale(48205LL,0x4eea8f2f13300LL),reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[155]
-      reale(-0xaaeacdLL,0x650ed01570000LL),reale(0x5156bcLL,0xd37ba10880000LL),
-      reale(-0x3e519fLL,0x5b8c134590000LL),reale(0x5823d2LL,0xc1238f4360000LL),
-      reale(-0x1c3bcfLL,0x81c9aeb8b0000LL),reale(0x2f2a39LL,0x298f1b5c40000LL),
-      reale(-0x1e3275LL,0xf67ab4a4d0000LL),reale(651396LL,0xde4e2e0920000LL),
-      reale(-0xf66e6LL,0xa1e7873ff0000LL),reale(341219LL,0x67868049b6800LL),
+      // C4[5], coeff of eps^6, polynomial in n of order 23
+      real(-0x1b5badebe000LL),real(-0x326332ca4000LL),real(-0x5fd1bd93a000LL),
+      real(-0xbcd8e5378000LL),real(-0x1837bef256000LL),
+      real(-0x3404424ccc000LL),real(-0x75bf8cd1d2000LL),
+      real(-0x11b50d05060000LL),real(-0x2dc96f11f6e000LL),
+      real(-0x811a6e895f4000LL),real(-0x195036bc82ea000LL),
+      real(-0x5af70d135548000LL),real(-0x187d57cdaa406000LL),
+      reale(-2190LL,0xcd2c6639e4000LL),reale(-18743LL,0xc7a34bd57e000LL),
+      reale(-438376LL,0x295778dfd0000LL),reale(0x8cc26dLL,0x89f7eb41e2000LL),
+      reale(-0x36a2869LL,0x2376664bc000LL),
+      reale(0xb05599fLL,0x331692f966000LL),
+      reale(-0x1554ad77LL,0xceab0490e8000LL),
+      reale(0x19bde44bLL,0x7929b7544a000LL),
+      reale(-0x12ff20f2LL,0x1f0e642c94000LL),
+      reale(0x7d8aeffLL,0xbb852faace000LL),
+      reale(-0x163b453LL,0x6175bf8f16300LL),
       reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[156]
-      reale(-0x4ee2b4LL,0x37e2479104000LL),reale(0x5182f3LL,0xe957aa505800LL),
-      reale(-0x1f44cdLL,0xd168ac9993000LL),reale(0x38fc96LL,0xdcd2e44998800LL),
-      reale(-0x1ae334LL,0x14143dae02000LL),reale(0x1469f4LL,0xa441c7cbb800LL),
-      reale(-0x1635daLL,0x81e7523fb1000LL),reale(163809LL,0xd9aab3cbce800LL),
-      reale(50215LL,0x8f7a6f7ead780LL),reale(0xa815b9093LL,0xe897fd72d67cbLL),
-      // _C4x[157]
-      reale(-191648LL,0xe77088a526000LL),reale(308186LL,0x45ee8f2434000LL),
-      reale(-124929LL,0x2de5b6ceb2000LL),reale(153616LL,0xaed0e35eb8000LL),
-      reale(-118467LL,0x3b495d565e000LL),reale(38029LL,0x77ad4b77bc000LL),
-      reale(-53613LL,0xbe09f47cea000LL),reale(20169LL,0xecfa5f7fa8900LL),
-      reale(0xcedfa8a8LL,0xea81d86b4b937LL),
-      // _C4x[158]
-      reale(-126384LL,0xa0947ea9b1000LL),reale(192332LL,0x2215a4d90d800LL),
-      reale(-113393LL,0x76c6d70356000LL),reale(71665LL,0x3fb557978e800LL),
-      reale(-81792LL,0x5906afc0bb000LL),reale(12036LL,0x1a6fad5adf800LL),
-      reale(3561LL,0x9aef6f2cefa80LL),reale(0xcedfa8a8LL,0xea81d86b4b937LL),
-      // _C4x[159]
-      real(-0x13b86e0d5c5dc000LL),real(0x135f9b0385fb0000LL),
-      real(-0x10df1064c3304000LL),real(0x58b0ae17a818000LL),
-      real(-0x70d05036b8ec000LL),real(0x2e5299a0b610e00LL),
-      reale(0x9b4e92LL,0x2338af8e3405bLL),
-      // _C4x[160]
-      real(-0xe48436400f9e000LL),real(0x825cbe3b5113800LL),
-      real(-0x9657faac8f9f000LL),real(0x1ac735d19d16800LL),
-      real(0x7b639e59c13780LL),reale(0x821f3cLL,0x2b5901ca2b961LL),
-      // _C4x[161]
-      real(-0x4519d2e6066000LL),real(0x17b1d503134000LL),
-      real(-0x1b53dc2d3c2000LL),real(0xc104a529c3b00LL),
+      // C4[5], coeff of eps^5, polynomial in n of order 24
+      real(-0x15f6510c000LL),real(-0x26e7bc2d800LL),real(-0x46d3779b000LL),
+      real(-0x84e1d0c0800LL),real(-0x101cbc30a000LL),real(-0x2073376e3800LL),
+      real(-0x442adb8b9000LL),real(-0x963884ff6800LL),real(-0x15dbd71e08000LL),
+      real(-0x363ebc6d59800LL),real(-0x9122bbd857000LL),
+      real(-0x1a90a4ab06c800LL),real(-0x56f0a68cd06000LL),
+      real(-0x147a29992a8f800LL),real(-0x5d1402e6c175000LL),
+      real(-0x228e263277d22800LL),reale(-5079LL,0xa7b39ec4fc000LL),
+      reale(-128864LL,0xff6ddcc67a800LL),reale(0x2d8172LL,0xd360aa0ed000LL),
+      reale(-0x13c02eeLL,0xa44199bee7800LL),
+      reale(0x48aec0dLL,0x519df32cfe000LL),
+      reale(-0xa38931eLL,0x85c9cdac4800LL),
+      reale(0xe62962aLL,0x2d1ed763cf000LL),
+      reale(-0xb1da295LL,0xbadfc78b1800LL),
+      reale(0x37942ceLL,0x8c59a11a48880LL),
+      reale(0xa815b9093LL,0xe897fd72d67cbLL),
+      // C4[6], coeff of eps^29, polynomial in n of order 0
+      real(139264LL),real(0xed069a73dLL),
+      // C4[6], coeff of eps^28, polynomial in n of order 1
+      real(0x3c8190000LL),real(0x11d12e000LL),real(0x219ae3fb400f15LL),
+      // C4[6], coeff of eps^27, polynomial in n of order 2
+      real(0x642bf3240000LL),real(-0x876551ce0000LL),real(0x350bfa156000LL),
+      reale(4837LL,0x68f14547adebLL),
+      // C4[6], coeff of eps^26, polynomial in n of order 3
+      real(0x297e6b0e9e1000LL),real(-0x2e90de909aa000LL),
+      real(0x6148b0a84b000LL),real(0x1d77336bca600LL),
       reale(207992LL,0x1a086a30a3679LL),
-      // _C4x[162]
-      real(-0xb7a8cf8589000LL),real(0x25cdf8a9f5800LL),real(0xaa8ee05df480LL),
-      reale(53207LL,0x4825dfa147919LL),
-      // _C4x[163]
-      real(-0x97662e0000LL),real(0x4701a0b000LL),real(0x171a7cbcbc0a5e7LL),
-      // _C4x[164]
-      real(0x2f6e00LL),real(0x4338129a0b3LL),
-      // _C4x[165]
-      real(0x3be9413000LL),real(0x788a76e000LL),real(0xfb6e649000LL),
-      real(0x221f7064000LL),real(0x4d84a37f000LL),real(0xb958155a000LL),
-      real(0x1d5dd0db5000LL),real(0x4faa5a050000LL),real(0xea04686eb000LL),
-      real(0x2f40e3db46000LL),real(0xab8623d121000LL),real(0x2d147c4903c000LL),
-      real(0xe63ae874e57000LL),real(0x60cd21bcc932000LL),
-      real(0x3f869e23e408d000LL),reale(29814LL,0xcc97221028000LL),
-      reale(-808727LL,0x927c8409c3000LL),reale(0x663f4cLL,0x1daf27af1e000LL),
-      reale(-0x1cc1cd7LL,0x7a6bcd6bf9000LL),
-      reale(0x5229b89LL,0x7da76bf014000LL),
-      reale(-0x9d7aa1dLL,0x247f1bc92f000LL),
-      reale(0xc86d881LL,0xd18cc55d0a000LL),
-      reale(-0x92776d6LL,0xfa8f486365000LL),
-      reale(0x2c768a5LL,0x3d1480e1d3a00LL),
+      // C4[6], coeff of eps^25, polynomial in n of order 4
+      real(0x10bc6a9e4ee30000LL),real(-0xc179e3d40c9c000LL),
+      real(0x3edf483df118000LL),real(-0x5c91fff78634000LL),
+      real(0x216fdab58654400LL),reale(0x99c7d2LL,0xbedd8dc0620e7LL),
+      // C4[6], coeff of eps^24, polynomial in n of order 5
+      reale(17715LL,0xdb1cfba26000LL),reale(-7690LL,0x66892806b8000LL),
+      reale(6474LL,0xb1047d5d4a000LL),reale(-6856LL,0x591154455c000LL),
+      real(0x2ac3e335ea26e000LL),real(0xd6d2e7c22e28400LL),
+      reale(0x1639e175LL,0x96057cce2c163LL),
+      // C4[6], coeff of eps^23, polynomial in n of order 6
+      reale(279883LL,0xa92c150938000LL),reale(-86798LL,0x2ef3960ac4000LL),
+      reale(160072LL,0xfd9d58a4d0000LL),reale(-96732LL,0x3d4c2e98dc000LL),
+      reale(32938LL,0x46d62be868000LL),reale(-52163LL,0x3d81d264f4000LL),
+      reale(17103LL,0x67a9fde667c00LL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
+      // C4[6], coeff of eps^22, polynomial in n of order 7
+      reale(293467LL,0x7db7c77729000LL),reale(-146629LL,0xfb9026d01a000LL),
+      reale(282074LL,0xcdca0f3f8b000LL),reale(-92436LL,0xe8b14d3cbc000LL),
+      reale(105774LL,0xf5edeb18ed000LL),reale(-100727LL,0x877c6fad5e000LL),
+      reale(6619LL,0xde4489894f000LL),reale(2174LL,0xdeb0a21cf2e00LL),
+      reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
+      // C4[6], coeff of eps^21, polynomial in n of order 8
+      reale(183603LL,0xf87cf65480000LL),reale(-387952LL,0x76cb6870f0000LL),
+      reale(363243LL,0x9b8677d760000LL),reale(-100928LL,0xf9523861d0000LL),
+      reale(246790LL,0x6a45746a40000LL),reale(-115868LL,0x31a9e68ab0000LL),
+      reale(45470LL,0x976a005d20000LL),reale(-74790LL,0x9413f53b90000LL),
+      reale(21823LL,0x7d1eb3d72b000LL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
+      // C4[6], coeff of eps^20, polynomial in n of order 9
+      reale(0x2478c2LL,0x71ea4526d8000LL),reale(-0xaf1110LL,0xa0ac4eb8c0000LL),
+      reale(0x366a3cLL,0xe9fdb6daa8000LL),reale(-0x34ca42LL,0x424052a290000LL),
+      reale(0x514febLL,0xe507b89678000LL),reale(-0x125a98LL,0x4100e69c60000LL),
+      reale(0x21b128LL,0x527339ea48000LL),reale(-0x1b05eeLL,0x48e351f630000LL),
+      reale(48626LL,0x557ebf6618000LL),reale(16670LL,0x4a1716aa8d000LL),
       reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[166]
-      real(0x239fd418000LL),real(0x4ba47734000LL),real(0xa7b994d0000LL),
-      real(0x1869c5c6c000LL),real(0x3c23e3d88000LL),real(0x9e1c8b7a4000LL),
-      real(0x1c0ba4ea40000LL),real(0x573ad5a4dc000LL),real(0x12f915ab6f8000LL),
-      real(0x4c1f4084014000LL),real(0x170ced7cbfb0000LL),
-      real(0x921b89aca54c000LL),real(0x599b4a7922068000LL),
-      reale(38914LL,0x1efa73f084000LL),reale(-964916LL,0xae5925f520000LL),
-      reale(0x6dde12LL,0x92a23dbc000LL),reale(-0x1b531f7LL,0xfca92159d8000LL),
-      reale(0x438e649LL,0x39cdeca8f4000LL),
-      reale(-0x6d8cf62LL,0x320c56a90000LL),
-      reale(0x75051e2LL,0xd9bfe74e2c000LL),
-      reale(-0x4f4a46cLL,0x6125254348000LL),
-      reale(0x1ed5c62LL,0xbdc6e34964000LL),
-      reale(-0x53b1f6LL,0xad851e038cc00LL),
-      reale(0x42371a58fLL,0x99b03d0e3576fLL),
-      // _C4x[167]
-      real(0x72e86a7de000LL),real(0x10573642f8000LL),real(0x273ffc1812000LL),
-      real(0x64635c5cac000LL),real(0x11473cdd246000LL),
-      real(0x33fd816c260000LL),real(0xae6e2137a7a000LL),
-      real(0x29ff10928814000LL),real(0xc26a115cf4ae000LL),
-      real(0x492994f20c1c8000LL),reale(10833LL,0x80f3c9e4e2000LL),
-      reale(274842LL,0xd406a2037c000LL),reale(-0x6012e6LL,0x357fd12f16000LL),
-      reale(0x28c06b5LL,0xb6f3d1e130000LL),
-      reale(-0x902ffe5LL,0xbe5818774a000LL),
-      reale(0x131b9685LL,0xae49526ee4000LL),
-      reale(-0x18d0ede1LL,0x4737bba17e000LL),
-      reale(0x11c7fea3LL,0xb52957c098000LL),
-      reale(-0x28f7716LL,0x87866451b2000LL),
-      reale(-0x7256b3fLL,0x8fcbd36a4c000LL),
-      reale(0x631cd86LL,0x8691916be6000LL),
-      reale(-0x1bce7e3LL,0xd04a5c2dd1400LL),
+      // C4[6], coeff of eps^19, polynomial in n of order 10
+      reale(0xf6bf9fLL,0xf66942f9a0000LL),reale(-0xf35175LL,0x786c81e010000LL),
+      reale(0x12301eLL,0xa960c2f480000LL),reale(-0x9e694eLL,0x98569ef8f0000LL),
+      reale(0x526a10LL,0xec5f94af60000LL),reale(-0x1d3dbaLL,0x60d48299d0000LL),
+      reale(0x4ed6c3LL,0x6caf07ba40000LL),reale(-0x19a815LL,0x5f6b5a52b0000LL),
+      reale(912008LL,0xad6a83a520000LL),reale(-0x162bc1LL,0xc0ecbfb390000LL),
+      reale(367621LL,0xca46f4fdbb000LL),reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
+      // C4[6], coeff of eps^18, polynomial in n of order 11
+      reale(0x3179e51LL,0x1c6021da42000LL),
+      reale(-0x33b538LL,0xbad0d1ddbc000LL),reale(0xa7bf8aLL,0x58785d1036000LL),
+      reale(-0x128c9d4LL,0xd79d21c630000LL),
+      reale(0x163a87LL,0xebc764482a000LL),reale(-0x78e350LL,0x7270b07ea4000LL),
+      reale(0x70c4a4LL,0xfe1ce59e1e000LL),reale(-0x10403cLL,0xfd5d5f9318000LL),
+      reale(0x3b140dLL,0x7ef447ee12000LL),reale(-0x248d46LL,0x720bb40f8c000LL),
+      reale(-40352LL,0x4a68585406000LL),reale(-17708LL,0x145d230e3ec00LL),
       reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[168]
-      real(0x65fa8c6bf0000LL),real(0xfe88642ae4000LL),real(0x2aa82304e58000LL),
-      real(0x7ca8bddcccc000LL),real(0x194fd4427cc0000LL),
-      real(0x5e16320d44b4000LL),real(0x1a2859bf40b28000LL),
-      reale(2409LL,0x1b825da69c000LL),reale(21179LL,0xabe6860d90000LL),
-      reale(506292LL,0x5b6e5f0684000LL),reale(-0xa4f38dLL,0x111e7797f8000LL),
-      reale(0x4035506LL,0xa18a80786c000LL),
-      reale(-0xcb7af66LL,0x186553be60000LL),
-      reale(0x171a9b67LL,0x51e3ba1054000LL),
-      reale(-0x1713e5f0LL,0x2aafbf94c8000LL),
-      reale(0x740ec42LL,0x2400c6e23c000LL),
-      reale(0xa4defabLL,0x9e57682f30000LL),
-      reale(-0xdbd43c5LL,0x48b18f0224000LL),
-      reale(0x6b2cfe6LL,0x4eee70a198000LL),
-      reale(-0x1357fecLL,0xbd6b61840c000LL),reale(-288687LL,0x6772cbaf58400LL),
+      // C4[6], coeff of eps^17, polynomial in n of order 12
+      reale(0x12106e1LL,0xd940803e20000LL),
+      reale(-0x2592f9LL,0x39b84a49c8000LL),
+      reale(0x34f8699LL,0x9a9f25d270000LL),
+      reale(-0x9b608eLL,0x20034e6118000LL),reale(0x49ccafLL,0xb44e233ec0000LL),
+      reale(-0x1469307LL,0xffa7235468000LL),
+      reale(0x3a3e7bLL,0xbef1c88b10000LL),reale(-0x440a5cLL,0x66dedf2bb8000LL),
+      reale(0x81bd21LL,0xac3fb5bf60000LL),reale(-0x1746f2LL,0x7f4749ef08000LL),
+      reale(0x192bcbLL,0x4cebe6e3b0000LL),reale(-0x22cd3cLL,0xb0af81a658000LL),
+      reale(482782LL,0x1ffc428c24800LL),reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
+      // C4[6], coeff of eps^16, polynomial in n of order 13
+      reale(0xa1cfd82LL,0xfc4e53058c000LL),
+      reale(-0xf4147a2LL,0x32be9906d0000LL),
+      reale(0x290cdd7LL,0x58bada2414000LL),reale(0xa79c68LL,0x79ecf34458000LL),
+      reale(0x3415dffLL,0xb3c2ab069c000LL),
+      reale(-0x13b713eLL,0xab846519e0000LL),reale(-762959LL,0xf369289524000LL),
+      reale(-0x135075fLL,0x528b3bcf68000LL),
+      reale(0x7e2193LL,0x9541dc37ac000LL),reale(-0x1345d0LL,0x6ba7b8acf0000LL),
+      reale(0x71293dLL,0xebded0d634000LL),reale(-0x2fa11fLL,0xe90ab3fa78000LL),
+      reale(-225539LL,0x7bccdd8bc000LL),reale(-111164LL,0xbe10787a44800LL),
       reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[169]
-      real(0x5808512b12b000LL),real(0xfaa729276e2000LL),
-      real(0x3175560e4519000LL),real(0xb21b680b3a90000LL),
-      real(0x2fcbc5fe71407000LL),reale(4229LL,0xf0de326e3e000LL),
-      reale(35532LL,0x38e22907f5000LL),reale(805604LL,0x42db4fa3ec000LL),
-      reale(-0xf66e10LL,0x1b2982ae3000LL),reale(0x58b9699LL,0xf6628ead9a000LL),
-      reale(-0xfdac3daLL,0xc676bce6d1000LL),
-      reale(0x18b1f302LL,0x970145dd48000LL),
-      reale(-0x11f40565LL,0x3ab63845bf000LL),
-      reale(-0x31575d3LL,0xb1ef9c44f6000LL),
-      reale(0x106e189fLL,0x10481031ad000LL),
-      reale(-0xb2eb6deLL,0xf7a0fff6a4000LL),
-      reale(0x180fbb0LL,0x4ada23b49b000LL),reale(0xd45c14LL,0x3da6dc4452000LL),
-      reale(0x3e0d9bLL,0x8660f73889000LL),reale(-0x428dceLL,0x1567cdc2f8200LL),
+      // C4[6], coeff of eps^15, polynomial in n of order 14
+      reale(-0x16212c18LL,0x16c7bb2cd0000LL),
+      reale(0xf69ed07LL,0x3ab9b44ef8000LL),
+      reale(0x798b2aeLL,0xd7dad2fc20000LL),
+      reale(-0x10954e75LL,0xf88cfefd48000LL),
+      reale(0x4a43339LL,0xad9b189b70000LL),reale(0x14cda06LL,0xb09d2ff98000LL),
+      reale(0x2c7bc58LL,0x890e9d12c0000LL),
+      reale(-0x2046117LL,0xda4d755de8000LL),
+      reale(-0x2f3f88LL,0x905ab56a10000LL),
+      reale(-0xe1f069LL,0x5791192038000LL),reale(0xcaa92eLL,0xf66e06a960000LL),
+      reale(-452378LL,0xca32634e88000LL),reale(0x3743b3LL,0x85d91d8b0000LL),
+      reale(-0x39dba6LL,0xc57f8ef0d8000LL),reale(636887LL,0x5f8cc1d1bc800LL),
       reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[170]
-      real(0x55d873de6520000LL),real(0x12c7cfeef6810000LL),
-      real(0x4e200e3f1e1LL<<20),reale(6671LL,0xd2467fb9f0000LL),
-      reale(53806LL,0x18686edce0000LL),reale(0x11c054LL,0xd1cfb7f3d0000LL),
-      reale(-0x1502fabLL,0xc33ac28c0000LL),
-      reale(0x70b92b2LL,0x1061a8e5b0000LL),
-      reale(-0x124b5eeeLL,0x8d105894a0000LL),
-      reale(0x186f43c7LL,0xba4df5f90000LL),
-      reale(-0xba838f9LL,0x599212f080000LL),
-      reale(-0xa9ce7e3LL,0xb32b0c3170000LL),
-      reale(0x10dc1f5cLL,0xd715020c60000LL),
-      reale(-0x5f059dbLL,0xeee6c2b50000LL),
-      reale(-0x1403a99LL,0x499ecb840000LL),
-      reale(-0x85d82cLL,0xe5da701d30000LL),
-      reale(0x1de84a4LL,0xdb2c51c420000LL),
-      reale(-0xbe6604LL,0xdfff24d710000LL),reale(873590LL,0xbe0d3e9693000LL),
+      // C4[6], coeff of eps^14, polynomial in n of order 15
+      reale(-0x26dd225LL,0x786da908ea000LL),
+      reale(0xae0225fLL,0x62c00442f4000LL),
+      reale(-0x15de519cLL,0x1dca9779fe000LL),
+      reale(0x121d771bLL,0x2a6218fe88000LL),
+      reale(0x435e53fLL,0xa70aa30512000LL),
+      reale(-0x1157138dLL,0xf33e0b21c000LL),
+      reale(0x76abd1aLL,0x116d522626000LL),
+      reale(0x176fc4eLL,0x49539549b0000LL),
+      reale(0x1c72a5aLL,0x6d4c4f193a000LL),
+      reale(-0x2c10a3aLL,0x3297f53144000LL),
+      reale(0x13211dLL,0x8798d15a4e000LL),reale(-0x58f317LL,0xcd63e8d4d8000LL),
+      reale(0xe7993aLL,0x87d0f72562000LL),reale(-0x34150bLL,0x9fbfa8206c000LL),
+      reale(-544538LL,0xecbc2ef676000LL),reale(-371793LL,0xa13fc7f54cc00LL),
       reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[171]
+      // C4[6], coeff of eps^13, polynomial in n of order 16
+      reale(100946LL,0x14f5785LL<<20),reale(0x1eaeeeLL,0x3c46708bb0000LL),
+      reale(-0x20e75cdLL,0x91f6240c60000LL),
+      reale(0x9bbbb9eLL,0x527fb2e110000LL),
+      reale(-0x1535afb2LL,0xf1ddb263c0000LL),
+      reale(0x14b4a72eLL,0x3243b82e70000LL),
+      reale(-0x27da33LL,0x51c09edb20000LL),
+      reale(-0x110cefc7LL,0xfe6e06c3d0000LL),
+      reale(0xaca2ebcLL,0x45b975c280000LL),reale(0xa8ab13LL,0x8ea9e8f130000LL),
+      reale(0x51b2f5LL,0xc704cb69e0000LL),reale(-0x308183aLL,0xed5150690000LL),
+      reale(0xd69cccLL,0x546dd42140000LL),reale(0x1aaec6LL,0x2e869553f0000LL),
+      reale(0x944d30LL,0x671cfc38a0000LL),reale(-0x667356LL,0x8955702950000LL),
+      reale(816805LL,0x9ce5b98e4f000LL),reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
+      // C4[6], coeff of eps^12, polynomial in n of order 17
       real(0x75cff722d22b8000LL),reale(9742LL,0x9cc7b8c380000LL),
       reale(75734LL,0x79163f0448000LL),reale(0x17efacLL,0xd935dd4310000LL),
       reale(-0x1ae82b9LL,0x7724ca0dd8000LL),
@@ -6019,216 +6045,206 @@ namespace GeographicLib {
       reale(0x1c9fc2bLL,0xb37b1485a8000LL),reale(-654616LL,0xf5695d4070000LL),
       reale(-667572LL,0x7a3be40f38000LL),reale(-0x120754LL,0xe37e4557a9000LL),
       reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[172]
-      reale(100946LL,0x14f5785LL<<20),reale(0x1eaeeeLL,0x3c46708bb0000LL),
-      reale(-0x20e75cdLL,0x91f6240c60000LL),
-      reale(0x9bbbb9eLL,0x527fb2e110000LL),
-      reale(-0x1535afb2LL,0xf1ddb263c0000LL),
-      reale(0x14b4a72eLL,0x3243b82e70000LL),
-      reale(-0x27da33LL,0x51c09edb20000LL),
-      reale(-0x110cefc7LL,0xfe6e06c3d0000LL),
-      reale(0xaca2ebcLL,0x45b975c280000LL),reale(0xa8ab13LL,0x8ea9e8f130000LL),
-      reale(0x51b2f5LL,0xc704cb69e0000LL),reale(-0x308183aLL,0xed5150690000LL),
-      reale(0xd69cccLL,0x546dd42140000LL),reale(0x1aaec6LL,0x2e869553f0000LL),
-      reale(0x944d30LL,0x671cfc38a0000LL),reale(-0x667356LL,0x8955702950000LL),
-      reale(816805LL,0x9ce5b98e4f000LL),reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[173]
-      reale(-0x26dd225LL,0x786da908ea000LL),
-      reale(0xae0225fLL,0x62c00442f4000LL),
-      reale(-0x15de519cLL,0x1dca9779fe000LL),
-      reale(0x121d771bLL,0x2a6218fe88000LL),
-      reale(0x435e53fLL,0xa70aa30512000LL),
-      reale(-0x1157138dLL,0xf33e0b21c000LL),
-      reale(0x76abd1aLL,0x116d522626000LL),
-      reale(0x176fc4eLL,0x49539549b0000LL),
-      reale(0x1c72a5aLL,0x6d4c4f193a000LL),
-      reale(-0x2c10a3aLL,0x3297f53144000LL),
-      reale(0x13211dLL,0x8798d15a4e000LL),reale(-0x58f317LL,0xcd63e8d4d8000LL),
-      reale(0xe7993aLL,0x87d0f72562000LL),reale(-0x34150bLL,0x9fbfa8206c000LL),
-      reale(-544538LL,0xecbc2ef676000LL),reale(-371793LL,0xa13fc7f54cc00LL),
+      // C4[6], coeff of eps^11, polynomial in n of order 18
+      real(0x55d873de6520000LL),real(0x12c7cfeef6810000LL),
+      real(0x4e200e3f1e1LL<<20),reale(6671LL,0xd2467fb9f0000LL),
+      reale(53806LL,0x18686edce0000LL),reale(0x11c054LL,0xd1cfb7f3d0000LL),
+      reale(-0x1502fabLL,0xc33ac28c0000LL),
+      reale(0x70b92b2LL,0x1061a8e5b0000LL),
+      reale(-0x124b5eeeLL,0x8d105894a0000LL),
+      reale(0x186f43c7LL,0xba4df5f90000LL),
+      reale(-0xba838f9LL,0x599212f080000LL),
+      reale(-0xa9ce7e3LL,0xb32b0c3170000LL),
+      reale(0x10dc1f5cLL,0xd715020c60000LL),
+      reale(-0x5f059dbLL,0xeee6c2b50000LL),
+      reale(-0x1403a99LL,0x499ecb840000LL),
+      reale(-0x85d82cLL,0xe5da701d30000LL),
+      reale(0x1de84a4LL,0xdb2c51c420000LL),
+      reale(-0xbe6604LL,0xdfff24d710000LL),reale(873590LL,0xbe0d3e9693000LL),
       reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[174]
-      reale(-0x16212c18LL,0x16c7bb2cd0000LL),
-      reale(0xf69ed07LL,0x3ab9b44ef8000LL),
-      reale(0x798b2aeLL,0xd7dad2fc20000LL),
-      reale(-0x10954e75LL,0xf88cfefd48000LL),
-      reale(0x4a43339LL,0xad9b189b70000LL),reale(0x14cda06LL,0xb09d2ff98000LL),
-      reale(0x2c7bc58LL,0x890e9d12c0000LL),
-      reale(-0x2046117LL,0xda4d755de8000LL),
-      reale(-0x2f3f88LL,0x905ab56a10000LL),
-      reale(-0xe1f069LL,0x5791192038000LL),reale(0xcaa92eLL,0xf66e06a960000LL),
-      reale(-452378LL,0xca32634e88000LL),reale(0x3743b3LL,0x85d91d8b0000LL),
-      reale(-0x39dba6LL,0xc57f8ef0d8000LL),reale(636887LL,0x5f8cc1d1bc800LL),
+      // C4[6], coeff of eps^10, polynomial in n of order 19
+      real(0x5808512b12b000LL),real(0xfaa729276e2000LL),
+      real(0x3175560e4519000LL),real(0xb21b680b3a90000LL),
+      real(0x2fcbc5fe71407000LL),reale(4229LL,0xf0de326e3e000LL),
+      reale(35532LL,0x38e22907f5000LL),reale(805604LL,0x42db4fa3ec000LL),
+      reale(-0xf66e10LL,0x1b2982ae3000LL),reale(0x58b9699LL,0xf6628ead9a000LL),
+      reale(-0xfdac3daLL,0xc676bce6d1000LL),
+      reale(0x18b1f302LL,0x970145dd48000LL),
+      reale(-0x11f40565LL,0x3ab63845bf000LL),
+      reale(-0x31575d3LL,0xb1ef9c44f6000LL),
+      reale(0x106e189fLL,0x10481031ad000LL),
+      reale(-0xb2eb6deLL,0xf7a0fff6a4000LL),
+      reale(0x180fbb0LL,0x4ada23b49b000LL),reale(0xd45c14LL,0x3da6dc4452000LL),
+      reale(0x3e0d9bLL,0x8660f73889000LL),reale(-0x428dceLL,0x1567cdc2f8200LL),
       reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[175]
-      reale(0xa1cfd82LL,0xfc4e53058c000LL),
-      reale(-0xf4147a2LL,0x32be9906d0000LL),
-      reale(0x290cdd7LL,0x58bada2414000LL),reale(0xa79c68LL,0x79ecf34458000LL),
-      reale(0x3415dffLL,0xb3c2ab069c000LL),
-      reale(-0x13b713eLL,0xab846519e0000LL),reale(-762959LL,0xf369289524000LL),
-      reale(-0x135075fLL,0x528b3bcf68000LL),
-      reale(0x7e2193LL,0x9541dc37ac000LL),reale(-0x1345d0LL,0x6ba7b8acf0000LL),
-      reale(0x71293dLL,0xebded0d634000LL),reale(-0x2fa11fLL,0xe90ab3fa78000LL),
-      reale(-225539LL,0x7bccdd8bc000LL),reale(-111164LL,0xbe10787a44800LL),
+      // C4[6], coeff of eps^9, polynomial in n of order 20
+      real(0x65fa8c6bf0000LL),real(0xfe88642ae4000LL),real(0x2aa82304e58000LL),
+      real(0x7ca8bddcccc000LL),real(0x194fd4427cc0000LL),
+      real(0x5e16320d44b4000LL),real(0x1a2859bf40b28000LL),
+      reale(2409LL,0x1b825da69c000LL),reale(21179LL,0xabe6860d90000LL),
+      reale(506292LL,0x5b6e5f0684000LL),reale(-0xa4f38dLL,0x111e7797f8000LL),
+      reale(0x4035506LL,0xa18a80786c000LL),
+      reale(-0xcb7af66LL,0x186553be60000LL),
+      reale(0x171a9b67LL,0x51e3ba1054000LL),
+      reale(-0x1713e5f0LL,0x2aafbf94c8000LL),
+      reale(0x740ec42LL,0x2400c6e23c000LL),
+      reale(0xa4defabLL,0x9e57682f30000LL),
+      reale(-0xdbd43c5LL,0x48b18f0224000LL),
+      reale(0x6b2cfe6LL,0x4eee70a198000LL),
+      reale(-0x1357fecLL,0xbd6b61840c000LL),reale(-288687LL,0x6772cbaf58400LL),
       reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[176]
-      reale(0x12106e1LL,0xd940803e20000LL),
-      reale(-0x2592f9LL,0x39b84a49c8000LL),
-      reale(0x34f8699LL,0x9a9f25d270000LL),
-      reale(-0x9b608eLL,0x20034e6118000LL),reale(0x49ccafLL,0xb44e233ec0000LL),
-      reale(-0x1469307LL,0xffa7235468000LL),
-      reale(0x3a3e7bLL,0xbef1c88b10000LL),reale(-0x440a5cLL,0x66dedf2bb8000LL),
-      reale(0x81bd21LL,0xac3fb5bf60000LL),reale(-0x1746f2LL,0x7f4749ef08000LL),
-      reale(0x192bcbLL,0x4cebe6e3b0000LL),reale(-0x22cd3cLL,0xb0af81a658000LL),
-      reale(482782LL,0x1ffc428c24800LL),reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[177]
-      reale(0x3179e51LL,0x1c6021da42000LL),
-      reale(-0x33b538LL,0xbad0d1ddbc000LL),reale(0xa7bf8aLL,0x58785d1036000LL),
-      reale(-0x128c9d4LL,0xd79d21c630000LL),
-      reale(0x163a87LL,0xebc764482a000LL),reale(-0x78e350LL,0x7270b07ea4000LL),
-      reale(0x70c4a4LL,0xfe1ce59e1e000LL),reale(-0x10403cLL,0xfd5d5f9318000LL),
-      reale(0x3b140dLL,0x7ef447ee12000LL),reale(-0x248d46LL,0x720bb40f8c000LL),
-      reale(-40352LL,0x4a68585406000LL),reale(-17708LL,0x145d230e3ec00LL),
+      // C4[6], coeff of eps^8, polynomial in n of order 21
+      real(0x72e86a7de000LL),real(0x10573642f8000LL),real(0x273ffc1812000LL),
+      real(0x64635c5cac000LL),real(0x11473cdd246000LL),
+      real(0x33fd816c260000LL),real(0xae6e2137a7a000LL),
+      real(0x29ff10928814000LL),real(0xc26a115cf4ae000LL),
+      real(0x492994f20c1c8000LL),reale(10833LL,0x80f3c9e4e2000LL),
+      reale(274842LL,0xd406a2037c000LL),reale(-0x6012e6LL,0x357fd12f16000LL),
+      reale(0x28c06b5LL,0xb6f3d1e130000LL),
+      reale(-0x902ffe5LL,0xbe5818774a000LL),
+      reale(0x131b9685LL,0xae49526ee4000LL),
+      reale(-0x18d0ede1LL,0x4737bba17e000LL),
+      reale(0x11c7fea3LL,0xb52957c098000LL),
+      reale(-0x28f7716LL,0x87866451b2000LL),
+      reale(-0x7256b3fLL,0x8fcbd36a4c000LL),
+      reale(0x631cd86LL,0x8691916be6000LL),
+      reale(-0x1bce7e3LL,0xd04a5c2dd1400LL),
       reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[178]
-      reale(0xf6bf9fLL,0xf66942f9a0000LL),reale(-0xf35175LL,0x786c81e010000LL),
-      reale(0x12301eLL,0xa960c2f480000LL),reale(-0x9e694eLL,0x98569ef8f0000LL),
-      reale(0x526a10LL,0xec5f94af60000LL),reale(-0x1d3dbaLL,0x60d48299d0000LL),
-      reale(0x4ed6c3LL,0x6caf07ba40000LL),reale(-0x19a815LL,0x5f6b5a52b0000LL),
-      reale(912008LL,0xad6a83a520000LL),reale(-0x162bc1LL,0xc0ecbfb390000LL),
-      reale(367621LL,0xca46f4fdbb000LL),reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[179]
-      reale(0x2478c2LL,0x71ea4526d8000LL),reale(-0xaf1110LL,0xa0ac4eb8c0000LL),
-      reale(0x366a3cLL,0xe9fdb6daa8000LL),reale(-0x34ca42LL,0x424052a290000LL),
-      reale(0x514febLL,0xe507b89678000LL),reale(-0x125a98LL,0x4100e69c60000LL),
-      reale(0x21b128LL,0x527339ea48000LL),reale(-0x1b05eeLL,0x48e351f630000LL),
-      reale(48626LL,0x557ebf6618000LL),reale(16670LL,0x4a1716aa8d000LL),
+      // C4[6], coeff of eps^7, polynomial in n of order 22
+      real(0x239fd418000LL),real(0x4ba47734000LL),real(0xa7b994d0000LL),
+      real(0x1869c5c6c000LL),real(0x3c23e3d88000LL),real(0x9e1c8b7a4000LL),
+      real(0x1c0ba4ea40000LL),real(0x573ad5a4dc000LL),real(0x12f915ab6f8000LL),
+      real(0x4c1f4084014000LL),real(0x170ced7cbfb0000LL),
+      real(0x921b89aca54c000LL),real(0x599b4a7922068000LL),
+      reale(38914LL,0x1efa73f084000LL),reale(-964916LL,0xae5925f520000LL),
+      reale(0x6dde12LL,0x92a23dbc000LL),reale(-0x1b531f7LL,0xfca92159d8000LL),
+      reale(0x438e649LL,0x39cdeca8f4000LL),
+      reale(-0x6d8cf62LL,0x320c56a90000LL),
+      reale(0x75051e2LL,0xd9bfe74e2c000LL),
+      reale(-0x4f4a46cLL,0x6125254348000LL),
+      reale(0x1ed5c62LL,0xbdc6e34964000LL),
+      reale(-0x53b1f6LL,0xad851e038cc00LL),
+      reale(0x42371a58fLL,0x99b03d0e3576fLL),
+      // C4[6], coeff of eps^6, polynomial in n of order 23
+      real(0x3be9413000LL),real(0x788a76e000LL),real(0xfb6e649000LL),
+      real(0x221f7064000LL),real(0x4d84a37f000LL),real(0xb958155a000LL),
+      real(0x1d5dd0db5000LL),real(0x4faa5a050000LL),real(0xea04686eb000LL),
+      real(0x2f40e3db46000LL),real(0xab8623d121000LL),real(0x2d147c4903c000LL),
+      real(0xe63ae874e57000LL),real(0x60cd21bcc932000LL),
+      real(0x3f869e23e408d000LL),reale(29814LL,0xcc97221028000LL),
+      reale(-808727LL,0x927c8409c3000LL),reale(0x663f4cLL,0x1daf27af1e000LL),
+      reale(-0x1cc1cd7LL,0x7a6bcd6bf9000LL),
+      reale(0x5229b89LL,0x7da76bf014000LL),
+      reale(-0x9d7aa1dLL,0x247f1bc92f000LL),
+      reale(0xc86d881LL,0xd18cc55d0a000LL),
+      reale(-0x92776d6LL,0xfa8f486365000LL),
+      reale(0x2c768a5LL,0x3d1480e1d3a00LL),
       reale(0xc6a54f0aeLL,0xcd10b72aa064dLL),
-      // _C4x[180]
-      reale(183603LL,0xf87cf65480000LL),reale(-387952LL,0x76cb6870f0000LL),
-      reale(363243LL,0x9b8677d760000LL),reale(-100928LL,0xf9523861d0000LL),
-      reale(246790LL,0x6a45746a40000LL),reale(-115868LL,0x31a9e68ab0000LL),
-      reale(45470LL,0x976a005d20000LL),reale(-74790LL,0x9413f53b90000LL),
-      reale(21823LL,0x7d1eb3d72b000LL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[181]
-      reale(293467LL,0x7db7c77729000LL),reale(-146629LL,0xfb9026d01a000LL),
-      reale(282074LL,0xcdca0f3f8b000LL),reale(-92436LL,0xe8b14d3cbc000LL),
-      reale(105774LL,0xf5edeb18ed000LL),reale(-100727LL,0x877c6fad5e000LL),
-      reale(6619LL,0xde4489894f000LL),reale(2174LL,0xdeb0a21cf2e00LL),
-      reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[182]
-      reale(279883LL,0xa92c150938000LL),reale(-86798LL,0x2ef3960ac4000LL),
-      reale(160072LL,0xfd9d58a4d0000LL),reale(-96732LL,0x3d4c2e98dc000LL),
-      reale(32938LL,0x46d62be868000LL),reale(-52163LL,0x3d81d264f4000LL),
-      reale(17103LL,0x67a9fde667c00LL),reale(0xf47cb00dLL,0x723c5cdbe4f41LL),
-      // _C4x[183]
-      reale(17715LL,0xdb1cfba26000LL),reale(-7690LL,0x66892806b8000LL),
-      reale(6474LL,0xb1047d5d4a000LL),reale(-6856LL,0x591154455c000LL),
-      real(0x2ac3e335ea26e000LL),real(0xd6d2e7c22e28400LL),
-      reale(0x1639e175LL,0x96057cce2c163LL),
-      // _C4x[184]
-      real(0x10bc6a9e4ee30000LL),real(-0xc179e3d40c9c000LL),
-      real(0x3edf483df118000LL),real(-0x5c91fff78634000LL),
-      real(0x216fdab58654400LL),reale(0x99c7d2LL,0xbedd8dc0620e7LL),
-      // _C4x[185]
-      real(0x297e6b0e9e1000LL),real(-0x2e90de909aa000LL),
-      real(0x6148b0a84b000LL),real(0x1d77336bca600LL),
-      reale(207992LL,0x1a086a30a3679LL),
-      // _C4x[186]
-      real(0x642bf3240000LL),real(-0x876551ce0000LL),real(0x350bfa156000LL),
-      reale(4837LL,0x68f14547adebLL),
-      // _C4x[187]
-      real(0x3c8190000LL),real(0x11d12e000LL),real(0x219ae3fb400f15LL),
-      // _C4x[188]
-      real(139264LL),real(0xed069a73dLL),
-      // _C4x[189]
-      real(-0x1190ae0000LL),real(-0x28e92d0000LL),real(-0x63f2a40000LL),
-      real(-0x101b8fb0000LL),real(-0x2c2c61a0000LL),real(-0x8210e690000LL),
-      real(-0x1a03615LL<<20),real(-0x5bebf1b70000LL),real(-0x16e928a860000LL),
-      real(-0x6a5f183250000LL),real(-0x25b29487fc0000LL),
-      real(-0x11b5c31caf30000LL),real(-0xd14cd352ff20000LL),
-      reale(-6970LL,0x4e82e769f0000LL),reale(216834LL,0xe733e07580000LL),
-      reale(-0x1fd87cLL,0xeacaf9510000LL),reale(0xa93ca1LL,0x4b9d7f7a20000LL),
-      reale(-0x2484521LL,0x566041ce30000LL),
-      reale(0x57a3f81LL,0x9718fbaac0000LL),
-      reale(-0x9563212LL,0xbe72819150000LL),
-      reale(0xb03347dLL,0x6102c9a360000LL),
-      reale(-0x7b5718bLL,0x8e472da70000LL),
-      reale(0x249ddb5LL,0x415c2de726c00LL),
-      reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[190]
-      real(-0x2d470940000LL),real(-0x71ae7bLL<<20),real(-0x12ee0a8c0000LL),
-      real(-0x360310f80000LL),real(-0xa6fff6c40000LL),real(-0x23849d7cLL<<20),
-      real(-0x87e0edbbc0000LL),real(-0x25a8132a880000LL),
-      real(-0xcadd965ff40000LL),real(-0x59fdf46f7dLL<<20),
-      real(-0x3e4f1a2b29ec0000LL),reale(-30848LL,0x62a4d51e80000LL),
-      reale(882325LL,0x7fea51fdc0000LL),reale(-0x759934LL,0x3a79442LL<<20),
-      reale(0x22e2ad0LL,0x28af9d6e40000LL),
-      reale(-0x697b063LL,0x8d593f0580000LL),
-      reale(0xd895360LL,0x9e98f54ac0000LL),
-      reale(-0x13411d4cLL,0x97892681LL<<20),
-      reale(0x12bb199cLL,0xb5ebcf2b40000LL),
-      reale(-0xbdfd6a7LL,0xa4c0e3cc80000LL),
-      reale(0x467ae98LL,0x8d3450a7c0000LL),
-      reale(-0xb902a6LL,0xf8d56ac47a800LL),
+      // C4[7], coeff of eps^29, polynomial in n of order 0
+      real(0x30c152000LL),real(0x90e6983c364f3dLL),
+      // C4[7], coeff of eps^28, polynomial in n of order 1
+      real(-323414LL<<20),real(0x1b9da04000LL),real(0xcf8f801ee602cdLL),
+      // C4[7], coeff of eps^27, polynomial in n of order 2
+      real(-0xd09e1c29LL<<20),real(0x12ca6fb180000LL),real(0x6038c37fa000LL),
+      reale(72555LL,0x626230f3330c5LL),
+      // C4[7], coeff of eps^26, polynomial in n of order 3
+      real(-0x2af5689902LL<<20),real(0xf13527954LL<<20),
+      real(-0x183402f656LL<<20),real(0x7c00d0f2b78000LL),
+      reale(0x2f9b09LL,0x867e38d993117LL),
+      // C4[7], coeff of eps^25, polynomial in n of order 4
+      real(-0x64d0a86bae7c0000LL),real(0x7c07ce24c65f0000LL),
+      real(-0x739ece76489e0000LL),real(0x6e7bce15f550000LL),
+      real(0x24fc420030b8400LL),reale(0x79fd486LL,0x8a371ad88dcafLL),
+      // C4[7], coeff of eps^24, polynomial in n of order 5
+      reale(-5991LL,0x42dcd933c0000LL),reale(14992LL,0xef80deedLL<<20),
+      reale(-6874LL,0x7aef520a40000LL),reale(2782LL,0xeff05a1280000LL),
+      reale(-4584LL,0x3766db4cc0000LL),real(0x52aed30dcf988800LL),
+      reale(0x19a53f38LL,0xe82db7640b7c1LL),
+      // C4[7], coeff of eps^23, polynomial in n of order 6
+      reale(-169327LL,0xe0a806c9e0000LL),reale(261065LL,0x25b4e353d0000LL),
+      reale(-59143LL,0xf3af66d40000LL),reale(111182LL,0x112090dcb0000LL),
+      reale(-88870LL,0xfc3ddec8a0000LL),reale(2313LL,0xe34bfe3f90000LL),
+      real(0x32dc48b9e1d23400LL),reale(0x11a19b771LL,0xf9f6e14c7e54bLL),
+      // C4[7], coeff of eps^22, polynomial in n of order 7
+      reale(-467158LL,0xbe6f51b1LL<<20),reale(258178LL,0x5a0948aaLL<<20),
+      reale(-91475LL,0xdea433a3LL<<20),reale(248285LL,0x28df051cLL<<20),
+      reale(-82822LL,0xf2367e95LL<<20),reale(44668LL,0x7dd558eLL<<20),
+      reale(-71457LL,0x60e16887LL<<20),reale(18220LL,0x9846e079d4000LL),
+      reale(0x11a19b771LL,0xf9f6e14c7e54bLL),
+      // C4[7], coeff of eps^21, polynomial in n of order 8
+      reale(-0xa5aec8LL,0x777cc83eLL<<20),reale(0x11a17dLL,0xa514064740000LL),
+      reale(-0x4343d4LL,0xdeea4d3680000LL),reale(0x4492b2LL,0xa8330ec1c0000LL),
+      reale(-693748LL,0x1fe425dfLL<<20),reale(0x23a5c6LL,0x8456366440000LL),
+      reale(-0x16e099LL,0x6b88f7a780000LL),reale(-18467LL,0xa097fb1ec0000LL),
+      reale(-7819LL,0x911b78647d000LL),reale(0xe534e50c9LL,0xb18970e26a4cfLL),
+      // C4[7], coeff of eps^20, polynomial in n of order 9
+      reale(-0x78a763LL,0xe12263dLL<<20),reale(0x186fcbLL,0x9fe6dc38LL<<20),
+      reale(-0xab7c69LL,0x33b40ed3LL<<20),reale(0x29e3c4LL,0xd51ea2faLL<<20),
+      reale(-0x237bd0LL,0x79b81299LL<<20),reale(0x4b60a3LL,0xa9ce0b9cLL<<20),
+      reale(-0xf94c7LL,0xdedf92efLL<<20),reale(952760LL,0xc26e557eLL<<20),
+      reale(-0x14d541LL,0xc6765135LL<<20),reale(299618LL,0x2f589c3f22000LL),
       reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[191]
-      real(-0x48a0a3640000LL),real(-0xc9814e4b0000LL),real(-0x25c525dfa0000LL),
-      real(-0x7c4fe70d90000LL),real(-0x1ca738085LL<<20),
-      real(-0x7a02179d470000LL),real(-0x274586580a60000LL),
-      real(-0x10907db87bd50000LL),reale(-2774LL,0x6efa5dac40000LL),
-      reale(-80425LL,0xffb54a33d0000LL),reale(0x209010LL,0xd8c3d9bae0000LL),
-      reale(-0x10469ddLL,0x78f6777af0000LL),
-      reale(0x4577ed4LL,0xce98cb3d80000LL),
-      reale(-0xb7fa2deLL,0xbb7ab71410000LL),
-      reale(0x13ceefd4LL,0xa61d5e5020000LL),
-      reale(-0x15b7842fLL,0xd9f1867b30000LL),
-      reale(0xcd32ef0LL,0xfd6630ec0000LL),reale(0x50e620LL,0x177c84ac50000LL),
-      reale(-0x71131b7LL,0x95aaf49560000LL),
-      reale(0x55092a7LL,0x5c73fd2370000LL),
-      reale(-0x16d9d9cLL,0x8a3809d99cc00LL),
+      // C4[7], coeff of eps^19, polynomial in n of order 10
+      reale(0x58abcbLL,0xeb3253d980000LL),reale(0x1244ba7LL,0x5d4a7ae6c0000LL),
+      reale(-0xc9f225LL,0x9cbf654eLL<<20),reale(-473730LL,0x5331198540000LL),
+      reale(-0x93dd40LL,0xb6af590280000LL),reale(0x4f9f93LL,0x4eb5945bc0000LL),
+      reale(-699194LL,0x3a7fd467LL<<20),reale(0x3d87afLL,0xb01d955a40000LL),
+      reale(-0x1d03d5LL,0x4d30d0eb80000LL),reale(-111198LL,0xf5575470c0000LL),
+      reale(-51623LL,0x225dac5061000LL),reale(0xe534e50c9LL,0xb18970e26a4cfLL),
+      // C4[7], coeff of eps^18, polynomial in n of order 11
+      reale(-0x20e15e1LL,0xbf46d1bfLL<<20),reale(0x2ac48aeLL,0x61685b62LL<<20),
+      reale(0x4649e0LL,0x5db54885LL<<20),reale(0xbeaec0LL,0x64563de8LL<<20),
+      reale(-0x116ccf0LL,0xa3fd094bLL<<20),reale(-128701LL,0xa77a706eLL<<20),
+      reale(-0x5dac8aLL,0xd6ec6011LL<<20),reale(0x70afd6LL,0x17f62ef4LL<<20),
+      reale(-590510LL,0x5a1128d7LL<<20),reale(0x1b799aLL,0x5358957aLL<<20),
+      reale(-0x1fecf6LL,0x2b71ef9dLL<<20),reale(381025LL,0x99466ecd7c000LL),
       reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[192]
-      real(-0x6597eabbLL<<20),real(-0x1448d4182LL<<20),
-      real(-0x4866a1e49LL<<20),real(-0x1295eca79LL<<24),
-      real(-0x5bf59820d7LL<<20),real(-0x251667dfd9eLL<<20),
-      reale(-5904LL,0xd0f54b9bLL<<20),reale(-161528LL,0x78562a54LL<<20),
-      reale(0x3d21c2LL,0x4bcc950dLL<<20),reale(-0x1c31d50LL,0x638e5e46LL<<20),
-      reale(0x6cf9729LL,0x8be6b97fLL<<20),reale(-0xfd832e7LL,0xe1ce6c38LL<<20),
-      reale(0x169aa451LL,0xfa7fa6f1LL<<20),
-      reale(-0x1172181cLL,0x7709822aLL<<20),
-      reale(0x12fe2bbLL,0xdf619b63LL<<20),reale(0xbc8d686LL,0x5c064e1cLL<<20),
-      reale(-0xbc41c83LL,0xc9b184d5LL<<20),reale(0x5014eeaLL,0x2e2b1e0eLL<<20),
-      reale(-0xc41e5eLL,0xafca6147LL<<20),reale(-602477LL,0xa03d7c8f54000LL),
+      // C4[7], coeff of eps^17, polynomial in n of order 12
+      reale(-0x9192c40LL,0xe2c29b7e80000LL),
+      reale(-0x17049d9LL,0x2caeb0c720000LL),
+      reale(-0x10205dbLL,0x8757db9ac0000LL),
+      reale(0x337cb8eLL,0xc115854860000LL),reale(-0x2174afLL,0x3bada23fLL<<20),
+      reale(0x3acb11LL,0x1500d47da0000LL),
+      reale(-0x13bb400LL,0xb0e3688340000LL),
+      reale(0x35a000LL,0xf1b4463ee0000LL),reale(-0x1baec9LL,0x89846f7f80000LL),
+      reale(0x703a13LL,0xbd88356420000LL),reale(-0x21b08bLL,0xfd266e4bc0000LL),
+      reale(-269544LL,0xe44ca5c560000LL),reale(-156647LL,0x8434c4c595800LL),
       reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[193]
-      real(-0x98838ab2280000LL),real(-0x25e72e362c40000LL),
-      real(-0xb4eb768b34LL<<20),real(-0x4616f301f1bc0000LL),
-      reale(-10660LL,0x17f0af3a80000LL),reale(-276844LL,0xeaf150cc0000LL),
-      reale(0x628feeLL,0x1955d6d9LL<<20),reale(-0x2a3b5a2LL,0xdcad2d7d40000LL),
-      reale(0x94c6c4bLL,0xf835425780000LL),
-      reale(-0x13107e6eLL,0x54794f65c0000LL),
-      reale(0x163219a4LL,0xa7c7f066LL<<20),
-      reale(-0x9f23cf6LL,0x4514d1f640000LL),
-      reale(-0x8debedaLL,0x18edabb480000LL),
-      reale(0xf860e5aLL,0x13d2525ec0000LL),
-      reale(-0x7d8dfc8LL,0xe67aaef3LL<<20),reale(0x2a5aadLL,0xa4d87cf40000LL),
-      reale(0xbbc726LL,0xbbbb48d180000LL),reale(0x51b751LL,0x8c165777c0000LL),
-      reale(-0x3c855fLL,0x343f7404e9000LL),
+      // C4[7], coeff of eps^16, polynomial in n of order 13
+      reale(0x3221594LL,0x16732a4380000LL),reale(0xf12442eLL,0x43ccb16eLL<<20),
+      reale(-0xbc0c6ecLL,0x26fd76b080000LL),
+      reale(-0x65e757LL,0x2c41c549LL<<20),reale(0x44f4dbLL,0xd91075f580000LL),
+      reale(0x3606438LL,0x1abdf574LL<<20),reale(-0xe94bbdLL,0xc3c7390280000LL),
+      reale(-0x38a850LL,0xac5435dfLL<<20),
+      reale(-0x110d691LL,0x2650b0c780000LL),reale(0x90e1d6LL,0xb2883a7aLL<<20),
+      reale(492167LL,0x56a6ee3480000LL),reale(0x3c4f9aLL,0xffff0735LL<<20),
+      reale(-0x333dbcLL,0x6719a23980000LL),reale(480004LL,0x1e727719e9000LL),
       reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[194]
-      real(-0x13bc5107d5fLL<<20),real(-0x75f6b32585LL<<24),
-      reale(-17218LL,0x7dbad4ffLL<<20),reale(-426470LL,0xbd931c8aLL<<20),
-      reale(0x8f9bafLL,0x43ffc94dLL<<20),reale(-0x39817fbLL,0xf009fa44LL<<20),
-      reale(0xb9bb58dLL,0x6d6ce16bLL<<20),reale(-0x1509419eLL,0xc15c8beLL<<20),
-      reale(0x139068ebLL,0x8f597f39LL<<20),
-      reale(-0x20f5f87LL,0x540ccfd8LL<<20),
-      reale(-0xecdd73fLL,0x16982497LL<<20),reale(0xd82af57LL,0xa70b7772LL<<20),
-      reale(-0x26418d9LL,0x51eb3365LL<<20),reale(-0x18b2ccdLL,0xab2a76cLL<<20),
-      reale(-0xf4cf65LL,0x68ad2d83LL<<20),reale(0x1b5e758LL,0xd9a227a6LL<<20),
-      reale(-0x928681LL,0x6ebd74d1LL<<20),reale(502063LL,0xa52218333a000LL),
+      // C4[7], coeff of eps^15, polynomial in n of order 14
+      reale(0x10aa9f77LL,0xd9972cba40000LL),
+      reale(-0x150d3784LL,0x97847cdde0000LL),
+      reale(0x71746cfLL,0x84cfe68e80000LL),
+      reale(0xd1e6767LL,0x1ac8f62b20000LL),
+      reale(-0xe5a8a42LL,0x863e23d2c0000LL),
+      reale(0x1ac644cLL,0xec7a345460000LL),reale(0x179c9f1LL,0x6c65b99fLL<<20),
+      reale(0x2dca296LL,0xb5345431a0000LL),
+      reale(-0x1edfab8LL,0x3845370b40000LL),
+      reale(-0x4d70c0LL,0xbf9adf9ae0000LL),
+      reale(-0x8ac6b1LL,0x3f2f732f80000LL),reale(0xd01d74LL,0x1b75c36820000LL),
+      reale(-0x1b0e0dLL,0xeaaa1b23c0000LL),reale(-460477LL,0xae54a57160000LL),
+      reale(-423739LL,0xa2676cb6dd800LL),
       reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[195]
+      // C4[7], coeff of eps^14, polynomial in n of order 15
+      reale(0xfa8152LL,0x8f8d14ffLL<<20),reale(-0x58ed16cLL,0x45c460aeLL<<20),
+      reale(0xf514970LL,0xeef1eddLL<<20),reale(-0x15ce9c39LL,0x339e324cLL<<20),
+      reale(0xb60efdeLL,0x595d0ebbLL<<20),reale(0x9bd7c06LL,0xa9a9ebeaLL<<20),
+      reale(-0x105baed2LL,0x60f6c899LL<<20),
+      reale(0x4f1d79dLL,0x4e054188LL<<20),reale(0x204a5c8LL,0x6713c077LL<<20),
+      reale(0x181ac5fLL,0xb2418726LL<<20),reale(-0x2bb8732LL,0x1dd89a55LL<<20),
+      reale(0x4483c0LL,0x373890c4LL<<20),reale(0xf6cd4LL,0x292bca33LL<<20),
+      reale(0x98cb2bLL,0x7b999262LL<<20),reale(-0x56064cLL,0x84bb3411LL<<20),
+      reale(570308LL,0x8f0afe45ec000LL),reale(0xe534e50c9LL,0xb18970e26a4cfLL),
+      // C4[7], coeff of eps^13, polynomial in n of order 16
       reale(-25658LL,0xa24a336cLL<<20),reale(-608652LL,0x5343bf2a40000LL),
       reale(0xc2c394LL,0x3febf40680000LL),
       reale(-0x4943b9aLL,0xd17b059ec0000LL),
@@ -6244,220 +6260,166 @@ namespace GeographicLib {
       reale(0x15108abLL,0xaa7600dd40000LL),reale(0x196a29LL,0xfe01d2a580000LL),
       reale(-163222LL,0x1f5352d1c0000LL),reale(-0x1225fcLL,0x8993dd9f5d000LL),
       reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[196]
-      reale(0xfa8152LL,0x8f8d14ffLL<<20),reale(-0x58ed16cLL,0x45c460aeLL<<20),
-      reale(0xf514970LL,0xeef1eddLL<<20),reale(-0x15ce9c39LL,0x339e324cLL<<20),
-      reale(0xb60efdeLL,0x595d0ebbLL<<20),reale(0x9bd7c06LL,0xa9a9ebeaLL<<20),
-      reale(-0x105baed2LL,0x60f6c899LL<<20),
-      reale(0x4f1d79dLL,0x4e054188LL<<20),reale(0x204a5c8LL,0x6713c077LL<<20),
-      reale(0x181ac5fLL,0xb2418726LL<<20),reale(-0x2bb8732LL,0x1dd89a55LL<<20),
-      reale(0x4483c0LL,0x373890c4LL<<20),reale(0xf6cd4LL,0x292bca33LL<<20),
-      reale(0x98cb2bLL,0x7b999262LL<<20),reale(-0x56064cLL,0x84bb3411LL<<20),
-      reale(570308LL,0x8f0afe45ec000LL),reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[197]
-      reale(0x10aa9f77LL,0xd9972cba40000LL),
-      reale(-0x150d3784LL,0x97847cdde0000LL),
-      reale(0x71746cfLL,0x84cfe68e80000LL),
-      reale(0xd1e6767LL,0x1ac8f62b20000LL),
-      reale(-0xe5a8a42LL,0x863e23d2c0000LL),
-      reale(0x1ac644cLL,0xec7a345460000LL),reale(0x179c9f1LL,0x6c65b99fLL<<20),
-      reale(0x2dca296LL,0xb5345431a0000LL),
-      reale(-0x1edfab8LL,0x3845370b40000LL),
-      reale(-0x4d70c0LL,0xbf9adf9ae0000LL),
-      reale(-0x8ac6b1LL,0x3f2f732f80000LL),reale(0xd01d74LL,0x1b75c36820000LL),
-      reale(-0x1b0e0dLL,0xeaaa1b23c0000LL),reale(-460477LL,0xae54a57160000LL),
-      reale(-423739LL,0xa2676cb6dd800LL),
+      // C4[7], coeff of eps^12, polynomial in n of order 17
+      real(-0x13bc5107d5fLL<<20),real(-0x75f6b32585LL<<24),
+      reale(-17218LL,0x7dbad4ffLL<<20),reale(-426470LL,0xbd931c8aLL<<20),
+      reale(0x8f9bafLL,0x43ffc94dLL<<20),reale(-0x39817fbLL,0xf009fa44LL<<20),
+      reale(0xb9bb58dLL,0x6d6ce16bLL<<20),reale(-0x1509419eLL,0xc15c8beLL<<20),
+      reale(0x139068ebLL,0x8f597f39LL<<20),
+      reale(-0x20f5f87LL,0x540ccfd8LL<<20),
+      reale(-0xecdd73fLL,0x16982497LL<<20),reale(0xd82af57LL,0xa70b7772LL<<20),
+      reale(-0x26418d9LL,0x51eb3365LL<<20),reale(-0x18b2ccdLL,0xab2a76cLL<<20),
+      reale(-0xf4cf65LL,0x68ad2d83LL<<20),reale(0x1b5e758LL,0xd9a227a6LL<<20),
+      reale(-0x928681LL,0x6ebd74d1LL<<20),reale(502063LL,0xa52218333a000LL),
       reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[198]
-      reale(0x3221594LL,0x16732a4380000LL),reale(0xf12442eLL,0x43ccb16eLL<<20),
-      reale(-0xbc0c6ecLL,0x26fd76b080000LL),
-      reale(-0x65e757LL,0x2c41c549LL<<20),reale(0x44f4dbLL,0xd91075f580000LL),
-      reale(0x3606438LL,0x1abdf574LL<<20),reale(-0xe94bbdLL,0xc3c7390280000LL),
-      reale(-0x38a850LL,0xac5435dfLL<<20),
-      reale(-0x110d691LL,0x2650b0c780000LL),reale(0x90e1d6LL,0xb2883a7aLL<<20),
-      reale(492167LL,0x56a6ee3480000LL),reale(0x3c4f9aLL,0xffff0735LL<<20),
-      reale(-0x333dbcLL,0x6719a23980000LL),reale(480004LL,0x1e727719e9000LL),
+      // C4[7], coeff of eps^11, polynomial in n of order 18
+      real(-0x98838ab2280000LL),real(-0x25e72e362c40000LL),
+      real(-0xb4eb768b34LL<<20),real(-0x4616f301f1bc0000LL),
+      reale(-10660LL,0x17f0af3a80000LL),reale(-276844LL,0xeaf150cc0000LL),
+      reale(0x628feeLL,0x1955d6d9LL<<20),reale(-0x2a3b5a2LL,0xdcad2d7d40000LL),
+      reale(0x94c6c4bLL,0xf835425780000LL),
+      reale(-0x13107e6eLL,0x54794f65c0000LL),
+      reale(0x163219a4LL,0xa7c7f066LL<<20),
+      reale(-0x9f23cf6LL,0x4514d1f640000LL),
+      reale(-0x8debedaLL,0x18edabb480000LL),
+      reale(0xf860e5aLL,0x13d2525ec0000LL),
+      reale(-0x7d8dfc8LL,0xe67aaef3LL<<20),reale(0x2a5aadLL,0xa4d87cf40000LL),
+      reale(0xbbc726LL,0xbbbb48d180000LL),reale(0x51b751LL,0x8c165777c0000LL),
+      reale(-0x3c855fLL,0x343f7404e9000LL),
       reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[199]
-      reale(-0x9192c40LL,0xe2c29b7e80000LL),
-      reale(-0x17049d9LL,0x2caeb0c720000LL),
-      reale(-0x10205dbLL,0x8757db9ac0000LL),
-      reale(0x337cb8eLL,0xc115854860000LL),reale(-0x2174afLL,0x3bada23fLL<<20),
-      reale(0x3acb11LL,0x1500d47da0000LL),
-      reale(-0x13bb400LL,0xb0e3688340000LL),
-      reale(0x35a000LL,0xf1b4463ee0000LL),reale(-0x1baec9LL,0x89846f7f80000LL),
-      reale(0x703a13LL,0xbd88356420000LL),reale(-0x21b08bLL,0xfd266e4bc0000LL),
-      reale(-269544LL,0xe44ca5c560000LL),reale(-156647LL,0x8434c4c595800LL),
+      // C4[7], coeff of eps^10, polynomial in n of order 19
+      real(-0x6597eabbLL<<20),real(-0x1448d4182LL<<20),
+      real(-0x4866a1e49LL<<20),real(-0x1295eca79LL<<24),
+      real(-0x5bf59820d7LL<<20),real(-0x251667dfd9eLL<<20),
+      reale(-5904LL,0xd0f54b9bLL<<20),reale(-161528LL,0x78562a54LL<<20),
+      reale(0x3d21c2LL,0x4bcc950dLL<<20),reale(-0x1c31d50LL,0x638e5e46LL<<20),
+      reale(0x6cf9729LL,0x8be6b97fLL<<20),reale(-0xfd832e7LL,0xe1ce6c38LL<<20),
+      reale(0x169aa451LL,0xfa7fa6f1LL<<20),
+      reale(-0x1172181cLL,0x7709822aLL<<20),
+      reale(0x12fe2bbLL,0xdf619b63LL<<20),reale(0xbc8d686LL,0x5c064e1cLL<<20),
+      reale(-0xbc41c83LL,0xc9b184d5LL<<20),reale(0x5014eeaLL,0x2e2b1e0eLL<<20),
+      reale(-0xc41e5eLL,0xafca6147LL<<20),reale(-602477LL,0xa03d7c8f54000LL),
       reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[200]
-      reale(-0x20e15e1LL,0xbf46d1bfLL<<20),reale(0x2ac48aeLL,0x61685b62LL<<20),
-      reale(0x4649e0LL,0x5db54885LL<<20),reale(0xbeaec0LL,0x64563de8LL<<20),
-      reale(-0x116ccf0LL,0xa3fd094bLL<<20),reale(-128701LL,0xa77a706eLL<<20),
-      reale(-0x5dac8aLL,0xd6ec6011LL<<20),reale(0x70afd6LL,0x17f62ef4LL<<20),
-      reale(-590510LL,0x5a1128d7LL<<20),reale(0x1b799aLL,0x5358957aLL<<20),
-      reale(-0x1fecf6LL,0x2b71ef9dLL<<20),reale(381025LL,0x99466ecd7c000LL),
+      // C4[7], coeff of eps^9, polynomial in n of order 20
+      real(-0x48a0a3640000LL),real(-0xc9814e4b0000LL),real(-0x25c525dfa0000LL),
+      real(-0x7c4fe70d90000LL),real(-0x1ca738085LL<<20),
+      real(-0x7a02179d470000LL),real(-0x274586580a60000LL),
+      real(-0x10907db87bd50000LL),reale(-2774LL,0x6efa5dac40000LL),
+      reale(-80425LL,0xffb54a33d0000LL),reale(0x209010LL,0xd8c3d9bae0000LL),
+      reale(-0x10469ddLL,0x78f6777af0000LL),
+      reale(0x4577ed4LL,0xce98cb3d80000LL),
+      reale(-0xb7fa2deLL,0xbb7ab71410000LL),
+      reale(0x13ceefd4LL,0xa61d5e5020000LL),
+      reale(-0x15b7842fLL,0xd9f1867b30000LL),
+      reale(0xcd32ef0LL,0xfd6630ec0000LL),reale(0x50e620LL,0x177c84ac50000LL),
+      reale(-0x71131b7LL,0x95aaf49560000LL),
+      reale(0x55092a7LL,0x5c73fd2370000LL),
+      reale(-0x16d9d9cLL,0x8a3809d99cc00LL),
       reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[201]
-      reale(0x58abcbLL,0xeb3253d980000LL),reale(0x1244ba7LL,0x5d4a7ae6c0000LL),
-      reale(-0xc9f225LL,0x9cbf654eLL<<20),reale(-473730LL,0x5331198540000LL),
-      reale(-0x93dd40LL,0xb6af590280000LL),reale(0x4f9f93LL,0x4eb5945bc0000LL),
-      reale(-699194LL,0x3a7fd467LL<<20),reale(0x3d87afLL,0xb01d955a40000LL),
-      reale(-0x1d03d5LL,0x4d30d0eb80000LL),reale(-111198LL,0xf5575470c0000LL),
-      reale(-51623LL,0x225dac5061000LL),reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[202]
-      reale(-0x78a763LL,0xe12263dLL<<20),reale(0x186fcbLL,0x9fe6dc38LL<<20),
-      reale(-0xab7c69LL,0x33b40ed3LL<<20),reale(0x29e3c4LL,0xd51ea2faLL<<20),
-      reale(-0x237bd0LL,0x79b81299LL<<20),reale(0x4b60a3LL,0xa9ce0b9cLL<<20),
-      reale(-0xf94c7LL,0xdedf92efLL<<20),reale(952760LL,0xc26e557eLL<<20),
-      reale(-0x14d541LL,0xc6765135LL<<20),reale(299618LL,0x2f589c3f22000LL),
+      // C4[7], coeff of eps^8, polynomial in n of order 21
+      real(-0x2d470940000LL),real(-0x71ae7bLL<<20),real(-0x12ee0a8c0000LL),
+      real(-0x360310f80000LL),real(-0xa6fff6c40000LL),real(-0x23849d7cLL<<20),
+      real(-0x87e0edbbc0000LL),real(-0x25a8132a880000LL),
+      real(-0xcadd965ff40000LL),real(-0x59fdf46f7dLL<<20),
+      real(-0x3e4f1a2b29ec0000LL),reale(-30848LL,0x62a4d51e80000LL),
+      reale(882325LL,0x7fea51fdc0000LL),reale(-0x759934LL,0x3a79442LL<<20),
+      reale(0x22e2ad0LL,0x28af9d6e40000LL),
+      reale(-0x697b063LL,0x8d593f0580000LL),
+      reale(0xd895360LL,0x9e98f54ac0000LL),
+      reale(-0x13411d4cLL,0x97892681LL<<20),
+      reale(0x12bb199cLL,0xb5ebcf2b40000LL),
+      reale(-0xbdfd6a7LL,0xa4c0e3cc80000LL),
+      reale(0x467ae98LL,0x8d3450a7c0000LL),
+      reale(-0xb902a6LL,0xf8d56ac47a800LL),
       reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[203]
-      reale(-0xa5aec8LL,0x777cc83eLL<<20),reale(0x11a17dLL,0xa514064740000LL),
-      reale(-0x4343d4LL,0xdeea4d3680000LL),reale(0x4492b2LL,0xa8330ec1c0000LL),
-      reale(-693748LL,0x1fe425dfLL<<20),reale(0x23a5c6LL,0x8456366440000LL),
-      reale(-0x16e099LL,0x6b88f7a780000LL),reale(-18467LL,0xa097fb1ec0000LL),
-      reale(-7819LL,0x911b78647d000LL),reale(0xe534e50c9LL,0xb18970e26a4cfLL),
-      // _C4x[204]
-      reale(-467158LL,0xbe6f51b1LL<<20),reale(258178LL,0x5a0948aaLL<<20),
-      reale(-91475LL,0xdea433a3LL<<20),reale(248285LL,0x28df051cLL<<20),
-      reale(-82822LL,0xf2367e95LL<<20),reale(44668LL,0x7dd558eLL<<20),
-      reale(-71457LL,0x60e16887LL<<20),reale(18220LL,0x9846e079d4000LL),
-      reale(0x11a19b771LL,0xf9f6e14c7e54bLL),
-      // _C4x[205]
-      reale(-169327LL,0xe0a806c9e0000LL),reale(261065LL,0x25b4e353d0000LL),
-      reale(-59143LL,0xf3af66d40000LL),reale(111182LL,0x112090dcb0000LL),
-      reale(-88870LL,0xfc3ddec8a0000LL),reale(2313LL,0xe34bfe3f90000LL),
-      real(0x32dc48b9e1d23400LL),reale(0x11a19b771LL,0xf9f6e14c7e54bLL),
-      // _C4x[206]
-      reale(-5991LL,0x42dcd933c0000LL),reale(14992LL,0xef80deedLL<<20),
-      reale(-6874LL,0x7aef520a40000LL),reale(2782LL,0xeff05a1280000LL),
-      reale(-4584LL,0x3766db4cc0000LL),real(0x52aed30dcf988800LL),
-      reale(0x19a53f38LL,0xe82db7640b7c1LL),
-      // _C4x[207]
-      real(-0x64d0a86bae7c0000LL),real(0x7c07ce24c65f0000LL),
-      real(-0x739ece76489e0000LL),real(0x6e7bce15f550000LL),
-      real(0x24fc420030b8400LL),reale(0x79fd486LL,0x8a371ad88dcafLL),
-      // _C4x[208]
-      real(-0x2af5689902LL<<20),real(0xf13527954LL<<20),
-      real(-0x183402f656LL<<20),real(0x7c00d0f2b78000LL),
-      reale(0x2f9b09LL,0x867e38d993117LL),
-      // _C4x[209]
-      real(-0xd09e1c29LL<<20),real(0x12ca6fb180000LL),real(0x6038c37fa000LL),
-      reale(72555LL,0x626230f3330c5LL),
-      // _C4x[210]
-      real(-323414LL<<20),real(0x1b9da04000LL),real(0xcf8f801ee602cdLL),
-      // _C4x[211]
-      real(0x30c152000LL),real(0x90e6983c364f3dLL),
-      // _C4x[212]
-      real(0x8ec3e0000LL),real(0x18af380000LL),real(0x48d1b20000LL),
-      real(0xe74ecc0000LL),real(0x32102a60000LL),real(0xc018f6LL<<20),
-      real(0x342f821a0000LL),real(0x1092e17f40000LL),real(0x67551030e0000LL),
-      real(0x35a73e8f880000LL),real(0x2c0f1d988820000LL),
-      real(0x66a336663d1c0000LL),reale(-57642LL,0xc0a9505760000LL),
-      reale(631918LL,0xdc4e0a7bLL<<20),reale(-0x3b0f28LL,0xfaa1ffcea0000LL),
-      reale(0xeea5b7LL,0xcc8b836440000LL),
-      reale(-0x2ad019aLL,0xf282821de0000LL),
-      reale(0x5a4bd8dLL,0x4657ccfd80000LL),
-      reale(-0x8ca7609LL,0xa1324f7520000LL),
-      reale(0x9c48325LL,0xbeaba7b6c0000LL),
-      reale(-0x69b85e5LL,0x2c31870460000LL),
-      reale(0x1ed5c62LL,0xbdc6e34964000LL),
-      reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[213]
-      real(0x224b92LL<<20),real(0x69949980000LL),real(0x161630dLL<<20),
-      real(0x51a8b0880000LL),real(0x154c89a8LL<<20),real(0x677d728780000LL),
-      real(0x2660ce143LL<<20),real(0x12dc092af680000LL),
-      real(0xe8fe920bbeLL<<20),reale(8102LL,0xc40d4c3580000LL),
-      reale(-262913LL,0xa90a5af9LL<<20),reale(0x2833faLL,0xeee5962480000LL),
-      reale(-0xde08adLL,0x51a100d4LL<<20),reale(0x31b7db9LL,0xff2660a380000LL),
-      reale(-0x7bf1a66LL,0x57f83f2fLL<<20),
-      reale(0xdd78d25LL,0x42080b9280000LL),
-      reale(-0x11c8a829LL,0x86d597eaLL<<20),
-      reale(0x100ff41bLL,0xef976ed180000LL),
-      reale(-0x9a71832LL,0xa6f5fce5LL<<20),
-      reale(0x37288a3LL,0xe8f14a4080000LL),
-      reale(-0x8cf5d4LL,0xee5975eb08000LL),
-      reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[214]
-      real(0x56f7f42LL<<20),real(0x137048c4LL<<20),real(0x4e394236LL<<20),
-      real(0x16d2fe42LL<<24),real(0x81931b98aLL<<20),real(0x3c9fbdb57cLL<<20),
-      real(0x2c4e5dd087eLL<<20),reale(23168LL,0xb63e7e18LL<<20),
-      reale(-700306LL,0xcb5d6a52LL<<20),reale(0x62a65eLL,0x20152f34LL<<20),
-      reale(-0x1ee9970LL,0x93246246LL<<20),reale(0x62872d7LL,0x8a529a1LL<<24),
-      reale(-0xd408826LL,0x68d9eb9aLL<<20),reale(0x136f6f74LL,0xd4d1fecLL<<20),
-      reale(-0x1279ae0fLL,0x5e5da98eLL<<20),
-      reale(0x8f07171LL,0x93046208LL<<20),reale(0x21fb8d1LL,0x44c61762LL<<20),
-      reale(-0x6bdd802LL,0xaf4f1a4LL<<20),reale(0x498b62fLL,0xe141b856LL<<20),
-      reale(-0x1326f72LL,0x32ac37fef0000LL),
+      // C4[7], coeff of eps^7, polynomial in n of order 22
+      real(-0x1190ae0000LL),real(-0x28e92d0000LL),real(-0x63f2a40000LL),
+      real(-0x101b8fb0000LL),real(-0x2c2c61a0000LL),real(-0x8210e690000LL),
+      real(-0x1a03615LL<<20),real(-0x5bebf1b70000LL),real(-0x16e928a860000LL),
+      real(-0x6a5f183250000LL),real(-0x25b29487fc0000LL),
+      real(-0x11b5c31caf30000LL),real(-0xd14cd352ff20000LL),
+      reale(-6970LL,0x4e82e769f0000LL),reale(216834LL,0xe733e07580000LL),
+      reale(-0x1fd87cLL,0xeacaf9510000LL),reale(0xa93ca1LL,0x4b9d7f7a20000LL),
+      reale(-0x2484521LL,0x566041ce30000LL),
+      reale(0x57a3f81LL,0x9718fbaac0000LL),
+      reale(-0x9563212LL,0xbe72819150000LL),
+      reale(0xb03347dLL,0x6102c9a360000LL),
+      reale(-0x7b5718bLL,0x8e472da70000LL),
+      reale(0x249ddb5LL,0x415c2de726c00LL),
+      reale(0xe534e50c9LL,0xb18970e26a4cfLL),
+      // C4[8], coeff of eps^29, polynomial in n of order 0
+      real(0x1c490000LL),real(0x112c657acf71bLL),
+      // C4[8], coeff of eps^28, polynomial in n of order 1
+      real(0x11c82fLL<<20),real(0x60ae460000LL),real(0x21ffb4a731cf423fLL),
+      // C4[8], coeff of eps^27, polynomial in n of order 2
+      real(0x4fc786eLL<<20),real(-0x837a8d5LL<<20),real(0x259df8d30000LL),
+      reale(4837LL,0x68f14547adebLL),
+      // C4[8], coeff of eps^26, polynomial in n of order 3
+      real(0x329e2a986cLL<<20),real(-0x285690bb68LL<<20),
+      real(0x10193db64LL<<20),real(0x5c4a2579a0000LL),
+      reale(0x35f3f9LL,0xba8f0d3ad9e09LL),
+      // C4[8], coeff of eps^25, polynomial in n of order 4
+      reale(4480LL,0xf38d93cLL<<20),real(-0x5f0bc8cec07LL<<20),
+      real(0x33002b9943eLL<<20),real(-0x51d1e6f78cdLL<<20),
+      real(0x14fb331d33f30000LL),reale(0x8a412feLL,0xe0e91e6ce4f71LL),
+      // C4[8], coeff of eps^24, polynomial in n of order 5
+      reale(226427LL,0x3825b25420000LL),reale(-36731LL,0x39e1166a80000LL),
+      reale(116830LL,0x2c3ad768e0000LL),reale(-76967LL,0xf6da987d40000LL),
+      real(-0x2a948e8d73a60000LL),real(-0x116572b5168a4000LL),
+      reale(0x13fb6bed6LL,0x81b165bd17b55LL),
+      // C4[8], coeff of eps^23, polynomial in n of order 6
+      reale(151394LL,0xe6754a3fLL<<20),reale(-105724LL,0xd536926a80000LL),
+      reale(240417LL,0xf928fd4aLL<<20),reale(-54673LL,0x890ab1b980000LL),
+      reale(46185LL,0xc0891895LL<<20),reale(-67791LL,0x87f19e3880000LL),
+      reale(15270LL,0xa469197488000LL),reale(0x13fb6bed6LL,0x81b165bd17b55LL),
+      // C4[8], coeff of eps^22, polynomial in n of order 7
+      reale(-105619LL,0x59d20a72LL<<20),reale(-0x51a94aLL,0xa61c793cLL<<20),
+      reale(0x34977aLL,0xc986a916LL<<20),reale(-453182LL,0x778b7be8LL<<20),
+      reale(0x2518e4LL,0xc332ee1aLL<<20),reale(-0x12e926LL,0xf0ee4e14LL<<20),
+      reale(-60031LL,0x396ad3beLL<<20),reale(-26717LL,0x95d5a29630000LL),
       reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[215]
-      real(0xd525ae2fLL<<20),real(0x3bfe51acd80000LL),real(0x14751dbf38LL<<20),
-      real(0x9286be006280000LL),real(0x65e9f47db41LL<<20),
-      reale(50386LL,0x86f8894780000LL),reale(-0x15ca2fLL,0x372198eaLL<<20),
-      reale(0xba91d7LL,0xb80fee1c80000LL),reale(-0x3569975LL,0x71629ed3LL<<20),
-      reale(0x9816bb3LL,0xad60df8180000LL),
-      reale(-0x11995ddaLL,0x3ee5339cLL<<20),
-      reale(0x148a4441LL,0xbf8cd61680000LL),
-      reale(-0xc15425aLL,0xc742cde5LL<<20),
-      reale(-0x304fe0dLL,0x583a627b80000LL),
-      reale(0xc08825fLL,0xb446a44eLL<<20),
-      reale(-0x9ed9454LL,0x60047d5080000LL),
-      reale(0x3c543a5LL,0x9bd83d77LL<<20),reale(-0x7c355eLL,0xc4aad73580000LL),
-      reale(-722972LL,0x59e3624598000LL),
+      // C4[8], coeff of eps^21, polynomial in n of order 8
+      reale(0x429294LL,0x6ef15f2cLL<<20),reale(-0xa122d5LL,0xe816267c80000LL),
+      reale(656010LL,0xb16861d1LL<<20),reale(-0x2ed2c5LL,0xcbbaecd80000LL),
+      reale(0x446663LL,0xed3c1016LL<<20),reale(-516360LL,0x4e1a9bce80000LL),
+      reale(0xf9a79LL,0x1df4b61bLL<<20),reale(-0x136d4aLL,0x99403b9f80000LL),
+      reale(245310LL,0x45a78ad538000LL),
       reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[216]
-      real(0x2b0d53a8d380000LL),real(0x128427872f8LL<<20),
-      reale(3152LL,0x21e0ef9c80000LL),reale(92558LL,0x88d6b079LL<<20),
-      reale(-0x25bd73LL,0xcc4c448580000LL),reale(0x12d7a03LL,0x2af5113aLL<<20),
-      reale(-0x4f4f5f9LL,0x3ab8fbce80000LL),
-      reale(0xca92d12LL,0x7b25aa7bLL<<20),
-      reale(-0x14180130LL,0x5b5be5b780000LL),
-      reale(0x11d6daa4LL,0xa65ca17cLL<<20),
-      reale(-0x30b5c07LL,0x78d6768080000LL),
-      reale(-0xbf87222LL,0xb76dd37dLL<<20),
-      reale(0xd9673edLL,0x4f07ee6980000LL),
-      reale(-0x5366bc7LL,0xec8e7dbeLL<<20),
-      reale(-0x9376a5LL,0x29d081b280000LL),reale(0x949ea1LL,0xe9a6e57fLL<<20),
-      reale(0x5d1998LL,0x9502809b80000LL),reale(-0x36bff2LL,0x7bbdd4c1b0000LL),
+      // C4[8], coeff of eps^20, polynomial in n of order 9
+      reale(0x1687ccaLL,0x308c5cb580000LL),reale(-0x5949d2LL,0xb286146cLL<<20),
+      reale(255419LL,0xcc27926280000LL),reale(-0xa1215fLL,0xae9e9731LL<<20),
+      reale(0x2eabc7LL,0x9f7d07af80000LL),reale(-782823LL,0xe040cb36LL<<20),
+      reale(0x3e2042LL,0x5a62f9dc80000LL),reale(-0x163ef8LL,0x71af42bbLL<<20),
+      reale(-144541LL,0xe44e322980000LL),reale(-76350LL,0xd3e3da2a70000LL),
       reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[217]
-      reale(5407LL,0xd1adcca8LL<<20),reale(151556LL,0x14ad8d3780000LL),
-      reale(-0x3a8b7eLL,0x195056e3LL<<20),reale(0x1b69425LL,0xeee8aa0680000LL),
-      reale(-0x6a9225eLL,0x4c3075feLL<<20),reale(0xf50f617LL,0x70ef2a580000LL),
-      reale(-0x14b95b24LL,0xd5944dd9LL<<20),
-      reale(0xce101ceLL,0x4e2988f480000LL),reale(0x543476cLL,0xbc87e254LL<<20),
-      reale(-0xfb71d1dLL,0x5b9566d380000LL),reale(0x9c2aeceLL,0x23dc74fLL<<20),
-      reale(-0x1b8652LL,0x43134e2280000LL),
-      reale(-0x1583d9cLL,0xf311d0aaLL<<20),
-      reale(-0x1437434LL,0x8eb4b8c180000LL),
-      reale(0x187864bLL,0xb973c245LL<<20),reale(-0x712b83LL,0x313bc89080000LL),
-      reale(268690LL,0x9ce0757848000LL),
+      // C4[8], coeff of eps^19, polynomial in n of order 10
+      reale(0x15fd20dLL,0x8ecc7fd5LL<<20),reale(0x809863LL,0x5fb9cbd280000LL),
+      reale(0x129e408LL,0x57a5b884LL<<20),reale(-0xc0d5caLL,0x54905fd580000LL),
+      reale(-0x1c5fd4LL,0x81456fb3LL<<20),reale(-0x75cdb1LL,0xb9b4f98880000LL),
+      reale(0x5b16e9LL,0x3561cdc2LL<<20),reale(-4465LL,0xaac18f4b80000LL),
+      reale(0x1dd331LL,0xb0f32b11LL<<20),reale(-0x1d1140LL,0x1a331f7e80000LL),
+      reale(302310LL,0x7de136fc28000LL),
       reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[218]
-      reale(-0x53ea18LL,0x8f9d759eLL<<20),reale(0x25035b8LL,0x53465694LL<<20),
-      reale(-0x8587e53LL,0x343466faLL<<20),
-      reale(0x1154a7d9LL,0x4e192088LL<<20),
-      reale(-0x13d3029dLL,0xaac74476LL<<20),
-      reale(0x7164f9bLL,0xae30c5fcLL<<20),reale(0xb4a7542LL,0x1c5614d2LL<<20),
-      reale(-0xf4937a3LL,0x175affbLL<<24),reale(0x4abc2d8LL,0x94a366ceLL<<20),
-      reale(0x21de83bLL,0x12a9f664LL<<20),reale(0x7ac24cLL,0xb8d212aLL<<20),
-      reale(-0x28b7cc9LL,0x364e92d8LL<<20),reale(0xe8201fLL,0x3c5752a6LL<<20),
-      reale(0x2bb045LL,0xd782cdccLL<<20),reale(284029LL,0xe5250202LL<<20),
-      reale(-0x11b778LL,0x93e70d5290000LL),
+      // C4[8], coeff of eps^18, polynomial in n of order 11
+      reale(-0x2126789LL,0x5bc7259eLL<<20),
+      reale(-0x2b00200LL,0x590f388cLL<<20),reale(0x2528e33LL,0x4c91548aLL<<20),
+      reale(0x7fd60bLL,0xe7688afLL<<24),reale(0xa4e05cLL,0x2043c096LL<<20),
+      reale(-0x117f915LL,0xed6db654LL<<20),reale(-8505LL,0xab065182LL<<20),
+      reale(-0x2bdacbLL,0xcdf5fc78LL<<20),reale(0x6adb6fLL,0x2051f70eLL<<20),
+      reale(-0x1637a0LL,0x89786f1cLL<<20),reale(-262922LL,0x3c6538faLL<<20),
+      reale(-186714LL,0x99e7b25d50000LL),
       reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[219]
-      reale(-0x9efcbe0LL,0x308817b9LL<<20),
-      reale(0x12ae6dc7LL,0x456ffc2b80000LL),
-      reale(-0x11d592aaLL,0x667fb09aLL<<20),
-      reale(0x1740edfLL,0x9e2d491880000LL),reale(0xec8a086LL,0xc154cbbbLL<<20),
-      reale(-0xc84d74eLL,0xbebcd1580000LL),reale(0xa66dc1LL,0xe50050bcLL<<20),
-      reale(0x1c8f8caLL,0x3cc1e1c280000LL),reale(0x2670572LL,0xa270573dLL<<20),
-      reale(-0x230b2e7LL,0x4751f8bf80000LL),
-      reale(-0x1d847dLL,0xf13cb6deLL<<20),reale(-492519LL,0x721bebac80000LL),
-      reale(0x97d083LL,0x4ad3973fLL<<20),reale(-0x4806caLL,0xf46f4c2980000LL),
-      reale(398374LL,0x9081f25c18000LL),
+      // C4[8], coeff of eps^17, polynomial in n of order 12
+      reale(0xfe6097eLL,0x7e5f0e72LL<<20),
+      reale(-0x5809df8LL,0xf6b56d0680000LL),
+      reale(-0x25f1140LL,0x5c7b49afLL<<20),
+      reale(-0x1701d2bLL,0x6003312f80000LL),reale(0x31a00bdLL,0x3ee834cLL<<20),
+      reale(-214470LL,0x8f5e194880000LL),reale(-32745LL,0x34f06869LL<<20),
+      reale(-0x1221d5eLL,0x739d847180000LL),reale(0x59fbb5LL,0x5b836626LL<<20),
+      reale(758445LL,0x105399ca80000LL),reale(0x3fdd18LL,0xb1cf9a3LL<<20),
+      reale(-0x2d195eLL,0x5aac587380000LL),reale(363691LL,0xed908404b8000LL),
       reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[220]
+      // C4[8], coeff of eps^16, polynomial in n of order 13
       reale(-0xf2b7a6fLL,0x1d474944c0000LL),
       reale(-0x377451dLL,0xa8443a85LL<<20),
       reale(0x101fd960LL,0x2f7f301540000LL),
@@ -6469,175 +6431,178 @@ namespace GeographicLib {
       reale(0xb2a250LL,0xa1dc1f740000LL),reale(-595379LL,0xb781251b80000LL),
       reale(-329168LL,0x1f996977c0000LL),reale(-450082LL,0xa6a2e9d6a8000LL),
       reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[221]
-      reale(0xfe6097eLL,0x7e5f0e72LL<<20),
-      reale(-0x5809df8LL,0xf6b56d0680000LL),
-      reale(-0x25f1140LL,0x5c7b49afLL<<20),
-      reale(-0x1701d2bLL,0x6003312f80000LL),reale(0x31a00bdLL,0x3ee834cLL<<20),
-      reale(-214470LL,0x8f5e194880000LL),reale(-32745LL,0x34f06869LL<<20),
-      reale(-0x1221d5eLL,0x739d847180000LL),reale(0x59fbb5LL,0x5b836626LL<<20),
-      reale(758445LL,0x105399ca80000LL),reale(0x3fdd18LL,0xb1cf9a3LL<<20),
-      reale(-0x2d195eLL,0x5aac587380000LL),reale(363691LL,0xed908404b8000LL),
-      reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[222]
-      reale(-0x2126789LL,0x5bc7259eLL<<20),
-      reale(-0x2b00200LL,0x590f388cLL<<20),reale(0x2528e33LL,0x4c91548aLL<<20),
-      reale(0x7fd60bLL,0xe7688afLL<<24),reale(0xa4e05cLL,0x2043c096LL<<20),
-      reale(-0x117f915LL,0xed6db654LL<<20),reale(-8505LL,0xab065182LL<<20),
-      reale(-0x2bdacbLL,0xcdf5fc78LL<<20),reale(0x6adb6fLL,0x2051f70eLL<<20),
-      reale(-0x1637a0LL,0x89786f1cLL<<20),reale(-262922LL,0x3c6538faLL<<20),
-      reale(-186714LL,0x99e7b25d50000LL),
-      reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[223]
-      reale(0x15fd20dLL,0x8ecc7fd5LL<<20),reale(0x809863LL,0x5fb9cbd280000LL),
-      reale(0x129e408LL,0x57a5b884LL<<20),reale(-0xc0d5caLL,0x54905fd580000LL),
-      reale(-0x1c5fd4LL,0x81456fb3LL<<20),reale(-0x75cdb1LL,0xb9b4f98880000LL),
-      reale(0x5b16e9LL,0x3561cdc2LL<<20),reale(-4465LL,0xaac18f4b80000LL),
-      reale(0x1dd331LL,0xb0f32b11LL<<20),reale(-0x1d1140LL,0x1a331f7e80000LL),
-      reale(302310LL,0x7de136fc28000LL),
+      // C4[8], coeff of eps^15, polynomial in n of order 14
+      reale(-0x9efcbe0LL,0x308817b9LL<<20),
+      reale(0x12ae6dc7LL,0x456ffc2b80000LL),
+      reale(-0x11d592aaLL,0x667fb09aLL<<20),
+      reale(0x1740edfLL,0x9e2d491880000LL),reale(0xec8a086LL,0xc154cbbbLL<<20),
+      reale(-0xc84d74eLL,0xbebcd1580000LL),reale(0xa66dc1LL,0xe50050bcLL<<20),
+      reale(0x1c8f8caLL,0x3cc1e1c280000LL),reale(0x2670572LL,0xa270573dLL<<20),
+      reale(-0x230b2e7LL,0x4751f8bf80000LL),
+      reale(-0x1d847dLL,0xf13cb6deLL<<20),reale(-492519LL,0x721bebac80000LL),
+      reale(0x97d083LL,0x4ad3973fLL<<20),reale(-0x4806caLL,0xf46f4c2980000LL),
+      reale(398374LL,0x9081f25c18000LL),
       reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[224]
-      reale(0x1687ccaLL,0x308c5cb580000LL),reale(-0x5949d2LL,0xb286146cLL<<20),
-      reale(255419LL,0xcc27926280000LL),reale(-0xa1215fLL,0xae9e9731LL<<20),
-      reale(0x2eabc7LL,0x9f7d07af80000LL),reale(-782823LL,0xe040cb36LL<<20),
-      reale(0x3e2042LL,0x5a62f9dc80000LL),reale(-0x163ef8LL,0x71af42bbLL<<20),
-      reale(-144541LL,0xe44e322980000LL),reale(-76350LL,0xd3e3da2a70000LL),
+      // C4[8], coeff of eps^14, polynomial in n of order 15
+      reale(-0x53ea18LL,0x8f9d759eLL<<20),reale(0x25035b8LL,0x53465694LL<<20),
+      reale(-0x8587e53LL,0x343466faLL<<20),
+      reale(0x1154a7d9LL,0x4e192088LL<<20),
+      reale(-0x13d3029dLL,0xaac74476LL<<20),
+      reale(0x7164f9bLL,0xae30c5fcLL<<20),reale(0xb4a7542LL,0x1c5614d2LL<<20),
+      reale(-0xf4937a3LL,0x175affbLL<<24),reale(0x4abc2d8LL,0x94a366ceLL<<20),
+      reale(0x21de83bLL,0x12a9f664LL<<20),reale(0x7ac24cLL,0xb8d212aLL<<20),
+      reale(-0x28b7cc9LL,0x364e92d8LL<<20),reale(0xe8201fLL,0x3c5752a6LL<<20),
+      reale(0x2bb045LL,0xd782cdccLL<<20),reale(284029LL,0xe5250202LL<<20),
+      reale(-0x11b778LL,0x93e70d5290000LL),
       reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[225]
-      reale(0x429294LL,0x6ef15f2cLL<<20),reale(-0xa122d5LL,0xe816267c80000LL),
-      reale(656010LL,0xb16861d1LL<<20),reale(-0x2ed2c5LL,0xcbbaecd80000LL),
-      reale(0x446663LL,0xed3c1016LL<<20),reale(-516360LL,0x4e1a9bce80000LL),
-      reale(0xf9a79LL,0x1df4b61bLL<<20),reale(-0x136d4aLL,0x99403b9f80000LL),
-      reale(245310LL,0x45a78ad538000LL),
+      // C4[8], coeff of eps^13, polynomial in n of order 16
+      reale(5407LL,0xd1adcca8LL<<20),reale(151556LL,0x14ad8d3780000LL),
+      reale(-0x3a8b7eLL,0x195056e3LL<<20),reale(0x1b69425LL,0xeee8aa0680000LL),
+      reale(-0x6a9225eLL,0x4c3075feLL<<20),reale(0xf50f617LL,0x70ef2a580000LL),
+      reale(-0x14b95b24LL,0xd5944dd9LL<<20),
+      reale(0xce101ceLL,0x4e2988f480000LL),reale(0x543476cLL,0xbc87e254LL<<20),
+      reale(-0xfb71d1dLL,0x5b9566d380000LL),reale(0x9c2aeceLL,0x23dc74fLL<<20),
+      reale(-0x1b8652LL,0x43134e2280000LL),
+      reale(-0x1583d9cLL,0xf311d0aaLL<<20),
+      reale(-0x1437434LL,0x8eb4b8c180000LL),
+      reale(0x187864bLL,0xb973c245LL<<20),reale(-0x712b83LL,0x313bc89080000LL),
+      reale(268690LL,0x9ce0757848000LL),
       reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[226]
-      reale(-105619LL,0x59d20a72LL<<20),reale(-0x51a94aLL,0xa61c793cLL<<20),
-      reale(0x34977aLL,0xc986a916LL<<20),reale(-453182LL,0x778b7be8LL<<20),
-      reale(0x2518e4LL,0xc332ee1aLL<<20),reale(-0x12e926LL,0xf0ee4e14LL<<20),
-      reale(-60031LL,0x396ad3beLL<<20),reale(-26717LL,0x95d5a29630000LL),
+      // C4[8], coeff of eps^12, polynomial in n of order 17
+      real(0x2b0d53a8d380000LL),real(0x128427872f8LL<<20),
+      reale(3152LL,0x21e0ef9c80000LL),reale(92558LL,0x88d6b079LL<<20),
+      reale(-0x25bd73LL,0xcc4c448580000LL),reale(0x12d7a03LL,0x2af5113aLL<<20),
+      reale(-0x4f4f5f9LL,0x3ab8fbce80000LL),
+      reale(0xca92d12LL,0x7b25aa7bLL<<20),
+      reale(-0x14180130LL,0x5b5be5b780000LL),
+      reale(0x11d6daa4LL,0xa65ca17cLL<<20),
+      reale(-0x30b5c07LL,0x78d6768080000LL),
+      reale(-0xbf87222LL,0xb76dd37dLL<<20),
+      reale(0xd9673edLL,0x4f07ee6980000LL),
+      reale(-0x5366bc7LL,0xec8e7dbeLL<<20),
+      reale(-0x9376a5LL,0x29d081b280000LL),reale(0x949ea1LL,0xe9a6e57fLL<<20),
+      reale(0x5d1998LL,0x9502809b80000LL),reale(-0x36bff2LL,0x7bbdd4c1b0000LL),
       reale(0x103c47b0e4LL,0x96022a9a34351LL),
-      // _C4x[227]
-      reale(151394LL,0xe6754a3fLL<<20),reale(-105724LL,0xd536926a80000LL),
-      reale(240417LL,0xf928fd4aLL<<20),reale(-54673LL,0x890ab1b980000LL),
-      reale(46185LL,0xc0891895LL<<20),reale(-67791LL,0x87f19e3880000LL),
-      reale(15270LL,0xa469197488000LL),reale(0x13fb6bed6LL,0x81b165bd17b55LL),
-      // _C4x[228]
-      reale(226427LL,0x3825b25420000LL),reale(-36731LL,0x39e1166a80000LL),
-      reale(116830LL,0x2c3ad768e0000LL),reale(-76967LL,0xf6da987d40000LL),
-      real(-0x2a948e8d73a60000LL),real(-0x116572b5168a4000LL),
-      reale(0x13fb6bed6LL,0x81b165bd17b55LL),
-      // _C4x[229]
-      reale(4480LL,0xf38d93cLL<<20),real(-0x5f0bc8cec07LL<<20),
-      real(0x33002b9943eLL<<20),real(-0x51d1e6f78cdLL<<20),
-      real(0x14fb331d33f30000LL),reale(0x8a412feLL,0xe0e91e6ce4f71LL),
-      // _C4x[230]
-      real(0x329e2a986cLL<<20),real(-0x285690bb68LL<<20),
-      real(0x10193db64LL<<20),real(0x5c4a2579a0000LL),
-      reale(0x35f3f9LL,0xba8f0d3ad9e09LL),
-      // _C4x[231]
-      real(0x4fc786eLL<<20),real(-0x837a8d5LL<<20),real(0x259df8d30000LL),
-      reale(4837LL,0x68f14547adebLL),
-      // _C4x[232]
-      real(0x11c82fLL<<20),real(0x60ae460000LL),real(0x21ffb4a731cf423fLL),
-      // _C4x[233]
-      real(0x1c490000LL),real(0x112c657acf71bLL),
-      // _C4x[234]
-      real(-33150LL<<20),real(-0x1b96a80000LL),real(-421083LL<<20),
-      real(-0x1a9b6380000LL),real(-0x7d3598LL<<20),real(-0x2b3428c80000LL),
-      real(-0x125c9155LL<<20),real(-0xa7172a8580000LL),
-      real(-0x97062b5b2LL<<20),real(-0x1855be7c6ee80000LL),
-      reale(15220LL,0x65c177b1LL<<20),reale(-187211LL,0x1c678c9880000LL),
-      reale(0x13ce4bLL,0x7f543134LL<<20),reale(-0x5b9a1eLL,0xd31a9c6f80000LL),
-      reale(0x131570bLL,0xeafca137LL<<20),
-      reale(-0x2fb599eLL,0x34886cf680000LL),
-      reale(0x5b03caeLL,0xfe3eb21aLL<<20),reale(-0x83f8b31LL,0xf584a8d80000LL),
-      reale(0x8bbc08eLL,0x2bfcde3dLL<<20),
-      reale(-0x5bee3bcLL,0x266dd99480000LL),
-      reale(0x1a6e179LL,0x34f39e3ee8000LL),
-      reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[235]
-      real(-0x1070a6LL<<20),real(-0x41a48cLL<<20),real(-0x128e0c2LL<<20),
-      real(-0x6214a6LL<<24),real(-0x27bd427eLL<<20),real(-0x15709aa34LL<<20),
-      real(-0x124688a69aLL<<20),real(-0x2c21e34ecc8LL<<20),
-      reale(25645LL,0xc7a2622aLL<<20),reale(-290250LL,0x8f434524LL<<20),
-      reale(0x1becd4LL,0x97e8c70eLL<<20),reale(-0x73c9baLL,0xa17642dLL<<24),
-      reale(0x1540010LL,0x9cff752LL<<20),reale(-0x2dcd0eaLL,0x98d4e37cLL<<20),
-      reale(0x496627cLL,0x9b7ce236LL<<20),reale(-0x56e78b5LL,0xb265fe68LL<<20),
-      reale(0x49e1f30LL,0xb044f6faLL<<20),reale(-0x2a7e0bbLL,0xc12ead4LL<<20),
-      reale(0xeb57a3LL,0x2d0d24deLL<<20),reale(-0x24c5b2LL,0x80f5f23d50000LL),
-      reale(0x60c6b05aaLL,0x7e28f6c5ff5f1LL),
-      // _C4x[236]
-      real(-0xdc9b5f1LL<<20),real(-0x461438ca80000LL),real(-0x1b32457c8LL<<20),
-      real(-0xdfda7610580000LL),real(-0xb4fb8c3a9fLL<<20),
-      reale(-6591LL,0x8d2c3ccf80000LL),reale(223861LL,0x20c31aaLL<<20),
-      reale(-0x23cfe5LL,0x9404a6d480000LL),reale(0xcea485LL,0xe6baed33LL<<20),
-      reale(-0x30392e7LL,0x1c35eb2980000LL),
-      reale(0x7cadd8eLL,0xb6b8581cLL<<20),
-      reale(-0xe4b10bcLL,0x19efcfee80000LL),
-      reale(0x12628d94LL,0xca5d2285LL<<20),
-      reale(-0xf679579LL,0x8d6c834380000LL),
-      reale(0x5f1732fLL,0x1b1e3c8eLL<<20),reale(0x33d2151LL,0x9af24b4880000LL),
-      reale(-0x6513088LL,0xf320c657LL<<20),
-      reale(0x4025aa4LL,0x12b2361d80000LL),
-      reale(-0x105153aLL,0xfa056b19b8000LL),
+      // C4[8], coeff of eps^11, polynomial in n of order 18
+      real(0xd525ae2fLL<<20),real(0x3bfe51acd80000LL),real(0x14751dbf38LL<<20),
+      real(0x9286be006280000LL),real(0x65e9f47db41LL<<20),
+      reale(50386LL,0x86f8894780000LL),reale(-0x15ca2fLL,0x372198eaLL<<20),
+      reale(0xba91d7LL,0xb80fee1c80000LL),reale(-0x3569975LL,0x71629ed3LL<<20),
+      reale(0x9816bb3LL,0xad60df8180000LL),
+      reale(-0x11995ddaLL,0x3ee5339cLL<<20),
+      reale(0x148a4441LL,0xbf8cd61680000LL),
+      reale(-0xc15425aLL,0xc742cde5LL<<20),
+      reale(-0x304fe0dLL,0x583a627b80000LL),
+      reale(0xc08825fLL,0xb446a44eLL<<20),
+      reale(-0x9ed9454LL,0x60047d5080000LL),
+      reale(0x3c543a5LL,0x9bd83d77LL<<20),reale(-0x7c355eLL,0xc4aad73580000LL),
+      reale(-722972LL,0x59e3624598000LL),
+      reale(0x103c47b0e4LL,0x96022a9a34351LL),
+      // C4[8], coeff of eps^10, polynomial in n of order 19
+      real(0x56f7f42LL<<20),real(0x137048c4LL<<20),real(0x4e394236LL<<20),
+      real(0x16d2fe42LL<<24),real(0x81931b98aLL<<20),real(0x3c9fbdb57cLL<<20),
+      real(0x2c4e5dd087eLL<<20),reale(23168LL,0xb63e7e18LL<<20),
+      reale(-700306LL,0xcb5d6a52LL<<20),reale(0x62a65eLL,0x20152f34LL<<20),
+      reale(-0x1ee9970LL,0x93246246LL<<20),reale(0x62872d7LL,0x8a529a1LL<<24),
+      reale(-0xd408826LL,0x68d9eb9aLL<<20),reale(0x136f6f74LL,0xd4d1fecLL<<20),
+      reale(-0x1279ae0fLL,0x5e5da98eLL<<20),
+      reale(0x8f07171LL,0x93046208LL<<20),reale(0x21fb8d1LL,0x44c61762LL<<20),
+      reale(-0x6bdd802LL,0xaf4f1a4LL<<20),reale(0x498b62fLL,0xe141b856LL<<20),
+      reale(-0x1326f72LL,0x32ac37fef0000LL),
+      reale(0x103c47b0e4LL,0x96022a9a34351LL),
+      // C4[8], coeff of eps^9, polynomial in n of order 20
+      real(0x224b92LL<<20),real(0x69949980000LL),real(0x161630dLL<<20),
+      real(0x51a8b0880000LL),real(0x154c89a8LL<<20),real(0x677d728780000LL),
+      real(0x2660ce143LL<<20),real(0x12dc092af680000LL),
+      real(0xe8fe920bbeLL<<20),reale(8102LL,0xc40d4c3580000LL),
+      reale(-262913LL,0xa90a5af9LL<<20),reale(0x2833faLL,0xeee5962480000LL),
+      reale(-0xde08adLL,0x51a100d4LL<<20),reale(0x31b7db9LL,0xff2660a380000LL),
+      reale(-0x7bf1a66LL,0x57f83f2fLL<<20),
+      reale(0xdd78d25LL,0x42080b9280000LL),
+      reale(-0x11c8a829LL,0x86d597eaLL<<20),
+      reale(0x100ff41bLL,0xef976ed180000LL),
+      reale(-0x9a71832LL,0xa6f5fce5LL<<20),
+      reale(0x37288a3LL,0xe8f14a4080000LL),
+      reale(-0x8cf5d4LL,0xee5975eb08000LL),
+      reale(0x103c47b0e4LL,0x96022a9a34351LL),
+      // C4[8], coeff of eps^8, polynomial in n of order 21
+      real(0x8ec3e0000LL),real(0x18af380000LL),real(0x48d1b20000LL),
+      real(0xe74ecc0000LL),real(0x32102a60000LL),real(0xc018f6LL<<20),
+      real(0x342f821a0000LL),real(0x1092e17f40000LL),real(0x67551030e0000LL),
+      real(0x35a73e8f880000LL),real(0x2c0f1d988820000LL),
+      real(0x66a336663d1c0000LL),reale(-57642LL,0xc0a9505760000LL),
+      reale(631918LL,0xdc4e0a7bLL<<20),reale(-0x3b0f28LL,0xfaa1ffcea0000LL),
+      reale(0xeea5b7LL,0xcc8b836440000LL),
+      reale(-0x2ad019aLL,0xf282821de0000LL),
+      reale(0x5a4bd8dLL,0x4657ccfd80000LL),
+      reale(-0x8ca7609LL,0xa1324f7520000LL),
+      reale(0x9c48325LL,0xbeaba7b6c0000LL),
+      reale(-0x69b85e5LL,0x2c31870460000LL),
+      reale(0x1ed5c62LL,0xbdc6e34964000LL),
+      reale(0x103c47b0e4LL,0x96022a9a34351LL),
+      // C4[9], coeff of eps^29, polynomial in n of order 0
+      real(0x41cf0000LL),real(0x3d2e2985830503LL),
+      // C4[9], coeff of eps^28, polynomial in n of order 1
+      real(-0x195c48LL<<20),real(0x687f5c0000LL),real(0x438da32e1600335LL),
+      // C4[9], coeff of eps^27, polynomial in n of order 2
+      real(-0x174d38452LL<<20),real(-0x24810c5LL<<20),real(-0xe4960490000LL),
+      reale(161925LL,0x30e683ffe0741LL),
+      // C4[9], coeff of eps^26, polynomial in n of order 3
+      real(-0x8a9317724LL<<20),real(0x6cfa364f8LL<<20),
+      real(-0xa2b1dc5ccLL<<20),real(0x2561f1223e0000LL),
+      reale(0x1419a3LL,0x4f8aa089603a9LL),
+      // C4[9], coeff of eps^25, polynomial in n of order 4
+      real(-0x2969ddb5824LL<<20),reale(3279LL,0x51285681LL<<20),
+      real(-0x6e93a3242f2LL<<20),real(-0x48275b7b75LL<<20),
+      real(-0x1f18264b9990000LL),reale(0x9a85177LL,0x379b22013c233LL),
+      // C4[9], coeff of eps^24, polynomial in n of order 5
+      reale(-133857LL,0xe363482LL<<24),reale(223946LL,0xb024018LL<<24),
+      reale(-32029LL,0xe8f5e8eLL<<24),reale(48931LL,0x82bd2cLL<<24),
+      reale(-63934LL,0x28f5d3aLL<<24),reale(12842LL,0x805d8e65LL<<20),
+      reale(0x16553c63bLL,0x96bea2db115fLL),
+      // C4[9], coeff of eps^23, polynomial in n of order 6
+      reale(-0x5b6187LL,0xe396e5bLL<<20),reale(0x23d859LL,0xe3eefe9c80000LL),
+      reale(-426463LL,0xd6e2edb2LL<<20),reale(0x25c4a6LL,0x1c0aded780000LL),
+      reale(-999560LL,0x32e18b49LL<<20),reale(-83147LL,0x6bd67ec280000LL),
+      reale(-41199LL,0xb0fdbdc348000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[237]
-      real(-0x49a1015c4LL<<20),real(-0x24465af3cLL<<24),
-      real(-0x1bf34980cbcLL<<20),reale(-15429LL,0x36b38ef8LL<<20),
-      reale(492912LL,0x78bf270cLL<<20),reale(-0x497a24LL,0x5671033LL<<24),
-      reale(0x1863880LL,0xf60b314LL<<20),reale(-0x525f99dLL,0xe1a84668LL<<20),
-      reale(0xbb9caeaLL,0xcc39c4dcLL<<20),reale(-0x1216a8ebLL,0x37a6362LL<<24),
-      reale(0x11a49c5fLL,0xf95d89e4LL<<20),
-      reale(-0x76c584cLL,0x1f92afd8LL<<20),
-      reale(-0x5c748bcLL,0x72cd2facLL<<20),reale(0xb9c37f8LL,0xcf01911LL<<24),
-      reale(-0x852804aLL,0x8c8be3b4LL<<20),reale(0x2dd1b5fLL,0xcfe3b748LL<<20),
-      reale(-0x4d8bb7LL,0xbe26d37cLL<<20),reale(-749749LL,0x9f9678dfe0000LL),
+      // C4[9], coeff of eps^22, polynomial in n of order 7
+      reale(-0x83b396LL,0x827c58feLL<<20),reale(-629493LL,0x68c8b6e4LL<<20),
+      reale(-0x3b1eaeLL,0xc3b760baLL<<20),reale(0x3b015eLL,0xf4ed6bd8LL<<20),
+      reale(-159711LL,0x580c5996LL<<20),reale(0x10c91dLL,0xaa4c4b4cLL<<20),
+      reale(-0x12020cLL,0xba191652LL<<20),reale(201643LL,0x9fcf910730000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[238]
-      real(-0x399266be8d8LL<<20),reale(-30245LL,0x1f85840780000LL),
-      reale(913230LL,0x8c812ed3LL<<20),reale(-0x7f81b0LL,0x508faab680000LL),
-      reale(0x2727214LL,0x60c0bdeLL<<20),reale(-0x781e515LL,0x65819f580000LL),
-      reale(0xf11254cLL,0xec1a46a9LL<<20),
-      reale(-0x1340c342LL,0x23b0142480000LL),
-      reale(0xccb9fe8LL,0xaf4c9794LL<<20),reale(0x24da283LL,0x549703a380000LL),
-      reale(-0xd2d2cc0LL,0x5efaa6ffLL<<20),
-      reale(0xb561781LL,0xe7148ad280000LL),reale(-0x33b13ceLL,0xf08dd4aLL<<20),
-      reale(-0xf32c8bLL,0x75bb941180000LL),reale(0x6bde6eLL,0x670632d5LL<<20),
-      reale(0x62d0c8LL,0xeb9461c080000LL),reale(-0x317e9eLL,0x9a2850efa8000LL),
+      // C4[9], coeff of eps^21, polynomial in n of order 8
+      reale(341632LL,0xac1a48acLL<<20),reale(0x27a164LL,0x8a0c1f1480000LL),
+      reale(-0x9e43d9LL,0xa4e49531LL<<20),reale(0x1264abLL,0x8ca380d580000LL),
+      reale(-0x1179e5LL,0x9222f2d6LL<<20),reale(0x3ce5afLL,0xb64d248680000LL),
+      reale(-0x105fa4LL,0x302b013bLL<<20),reale(-153112LL,0x183edfc780000LL),
+      reale(-94131LL,0xd7f7d844d8000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[239]
-      reale(0x16f1c4LL,0xd2212eaaLL<<20),reale(-0xc58993LL,0x92e4dc3cLL<<20),
-      reale(0x385f0ffLL,0xee10705eLL<<20),reale(-0x9dad9c6LL,0x2fe5a098LL<<20),
-      reale(0x116b5b58LL,0x9c464672LL<<20),
-      reale(-0x12059efdLL,0xecd8db74LL<<20),
-      reale(0x60a2bdbLL,0xc1c4d526LL<<20),reale(0xa06a064LL,0xf509b91LL<<24),
-      reale(-0xea175dfLL,0x358cc0baLL<<20),reale(0x65d394dLL,0x892ae5acLL<<20),
-      reale(0x133fcd5LL,0xb4b02d6eLL<<20),reale(-0xf1b930LL,0xc8fd0d88LL<<20),
-      reale(-0x1737347LL,0xdc7fbf82LL<<20),reale(0x159253eLL,0x99455ce4LL<<20),
-      reale(-0x57c159LL,0x2f3d9b36LL<<20),reale(119914LL,0x778fad9290000LL),
+      // C4[9], coeff of eps^20, polynomial in n of order 9
+      reale(0x39bc21LL,0x20190a0cLL<<20),reale(0x160b633LL,0x7ead70aLL<<24),
+      reale(-0x618904LL,0x846d2bb4LL<<20),reale(-0x1a7196LL,0x7cdd0cb8LL<<20),
+      reale(-0x8687b5LL,0x392a5d1cLL<<20),reale(0x44308eLL,0xebeb665LL<<24),
+      reale(300534LL,0x83fc99c4LL<<20),reale(0x1fd0a3LL,0x978be8e8LL<<20),
+      reale(-0x1a5275LL,0x9321dd2cLL<<20),reale(240877LL,0x8d28f00d60000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[240]
-      reale(0x4b1cd3aLL,0x15c18781LL<<20),reale(-0xc02e239LL,0x325de4f80000LL),
-      reale(0x12aaf616LL,0xbf0cdbeaLL<<20),
-      reale(-0xf10b02bLL,0x5a0a145480000LL),
-      reale(-0xc94803LL,0x7ecf7993LL<<20),reale(0xe685891LL,0xe2ae572980000LL),
-      reale(-0xc079231LL,0x9f7a819cLL<<20),
-      reale(0x1450b43LL,0x9913ddee80000LL),reale(0x2355920LL,0x4acee525LL<<20),
-      reale(0x13a4d35LL,0x131b07c380000LL),
-      reale(-0x25bb844LL,0x688fd54eLL<<20),reale(0x92f150LL,0xd2078bc880000LL),
-      reale(0x332941LL,0x6f4d3337LL<<20),reale(651457LL,0xd471a91d80000LL),
-      reale(-0x10fffdLL,0x8b8abaacb8000LL),
+      // C4[9], coeff of eps^19, polynomial in n of order 10
+      reale(-0x380db6eLL,0xc0617725LL<<20),
+      reale(0x11f5051LL,0xe1e139a280000LL),reale(0xa2fb7bLL,0x8d5913c4LL<<20),
+      reale(0x10295a1LL,0x2144e00580000LL),reale(-0xd9dcf6LL,0x5a8ea4e3LL<<20),
+      reale(-0x20cb95LL,0x10bfa95880000LL),reale(-0x3de568LL,0x9d41a562LL<<20),
+      reale(0x625334LL,0x85894a7b80000LL),reale(-857620LL,0xd337e021LL<<20),
+      reale(-227989LL,0x76ea704e80000LL),reale(-205806LL,0xccbf48c608000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[241]
-      reale(0x12e233e4LL,0xf9f1f348LL<<20),reale(-0xb1ebd27LL,0x86b70d2LL<<24),
-      reale(-0x692a660LL,0x4c7c978LL<<20),reale(0xfad6a73LL,0x4f304d7LL<<24),
-      reale(-0x7cd723eLL,0xce08e28LL<<20),reale(-0x1cfd5e5LL,0xb2eb80cLL<<24),
-      reale(0xd0ca45LL,0x3acd8a58LL<<20),reale(0x2ded6f2LL,0x86f9101LL<<24),
-      reale(-0x1936889LL,0x379c0708LL<<20),reale(-0x566835LL,0x871646LL<<24),
-      reale(-0x215aaeLL,0x58fd4d38LL<<20),reale(0x92ee72LL,0xa8fae6bLL<<24),
-      reale(-0x3c4239LL,0x14e6a5e8LL<<20),reale(276643LL,0x362a460940000LL),
+      // C4[9], coeff of eps^18, polynomial in n of order 11
+      reale(-0x7f0f45LL,0xe89dc64aLL<<20),reale(-0x213541bLL,0x7c4907e4LL<<20),
+      reale(-0x2c9f976LL,0xbd97966eLL<<20),reale(0x248f184LL,0xa8d301dLL<<24),
+      reale(0x885f47LL,0x6403fdf2LL<<20),reale(0x5124c3LL,0xf65ffebcLL<<20),
+      reale(-0x11870d8LL,0xd03b1416LL<<20),reale(0x2b66fbLL,0x614fde8LL<<20),
+      reale(593018LL,0xc5d1701aLL<<20),reale(0x41c725LL,0x12317e94LL<<20),
+      reale(-0x278a33LL,0x6ecf293eLL<<20),reale(276451LL,0x9f1a0fb950000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[242]
+      // C4[9], coeff of eps^17, polynomial in n of order 12
       reale(-0xad9f8dbLL,0xdeb76b02LL<<20),
       reale(0xeb4d0e7LL,0xd90ba4f280000LL),
       reale(-0x3ac15abLL,0x2613d6e7LL<<20),
@@ -6648,145 +6613,166 @@ namespace GeographicLib {
       reale(215496LL,0x532f1d7bLL<<20),reale(-184970LL,0x3b65ba7780000LL),
       reale(-459827LL,0x50f841a2d8000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[243]
-      reale(-0x7f0f45LL,0xe89dc64aLL<<20),reale(-0x213541bLL,0x7c4907e4LL<<20),
-      reale(-0x2c9f976LL,0xbd97966eLL<<20),reale(0x248f184LL,0xa8d301dLL<<24),
-      reale(0x885f47LL,0x6403fdf2LL<<20),reale(0x5124c3LL,0xf65ffebcLL<<20),
-      reale(-0x11870d8LL,0xd03b1416LL<<20),reale(0x2b66fbLL,0x614fde8LL<<20),
-      reale(593018LL,0xc5d1701aLL<<20),reale(0x41c725LL,0x12317e94LL<<20),
-      reale(-0x278a33LL,0x6ecf293eLL<<20),reale(276451LL,0x9f1a0fb950000LL),
+      // C4[9], coeff of eps^16, polynomial in n of order 13
+      reale(0x12e233e4LL,0xf9f1f348LL<<20),reale(-0xb1ebd27LL,0x86b70d2LL<<24),
+      reale(-0x692a660LL,0x4c7c978LL<<20),reale(0xfad6a73LL,0x4f304d7LL<<24),
+      reale(-0x7cd723eLL,0xce08e28LL<<20),reale(-0x1cfd5e5LL,0xb2eb80cLL<<24),
+      reale(0xd0ca45LL,0x3acd8a58LL<<20),reale(0x2ded6f2LL,0x86f9101LL<<24),
+      reale(-0x1936889LL,0x379c0708LL<<20),reale(-0x566835LL,0x871646LL<<24),
+      reale(-0x215aaeLL,0x58fd4d38LL<<20),reale(0x92ee72LL,0xa8fae6bLL<<24),
+      reale(-0x3c4239LL,0x14e6a5e8LL<<20),reale(276643LL,0x362a460940000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[244]
-      reale(-0x380db6eLL,0xc0617725LL<<20),
-      reale(0x11f5051LL,0xe1e139a280000LL),reale(0xa2fb7bLL,0x8d5913c4LL<<20),
-      reale(0x10295a1LL,0x2144e00580000LL),reale(-0xd9dcf6LL,0x5a8ea4e3LL<<20),
-      reale(-0x20cb95LL,0x10bfa95880000LL),reale(-0x3de568LL,0x9d41a562LL<<20),
-      reale(0x625334LL,0x85894a7b80000LL),reale(-857620LL,0xd337e021LL<<20),
-      reale(-227989LL,0x76ea704e80000LL),reale(-205806LL,0xccbf48c608000LL),
+      // C4[9], coeff of eps^15, polynomial in n of order 14
+      reale(0x4b1cd3aLL,0x15c18781LL<<20),reale(-0xc02e239LL,0x325de4f80000LL),
+      reale(0x12aaf616LL,0xbf0cdbeaLL<<20),
+      reale(-0xf10b02bLL,0x5a0a145480000LL),
+      reale(-0xc94803LL,0x7ecf7993LL<<20),reale(0xe685891LL,0xe2ae572980000LL),
+      reale(-0xc079231LL,0x9f7a819cLL<<20),
+      reale(0x1450b43LL,0x9913ddee80000LL),reale(0x2355920LL,0x4acee525LL<<20),
+      reale(0x13a4d35LL,0x131b07c380000LL),
+      reale(-0x25bb844LL,0x688fd54eLL<<20),reale(0x92f150LL,0xd2078bc880000LL),
+      reale(0x332941LL,0x6f4d3337LL<<20),reale(651457LL,0xd471a91d80000LL),
+      reale(-0x10fffdLL,0x8b8abaacb8000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[245]
-      reale(0x39bc21LL,0x20190a0cLL<<20),reale(0x160b633LL,0x7ead70aLL<<24),
-      reale(-0x618904LL,0x846d2bb4LL<<20),reale(-0x1a7196LL,0x7cdd0cb8LL<<20),
-      reale(-0x8687b5LL,0x392a5d1cLL<<20),reale(0x44308eLL,0xebeb665LL<<24),
-      reale(300534LL,0x83fc99c4LL<<20),reale(0x1fd0a3LL,0x978be8e8LL<<20),
-      reale(-0x1a5275LL,0x9321dd2cLL<<20),reale(240877LL,0x8d28f00d60000LL),
+      // C4[9], coeff of eps^14, polynomial in n of order 15
+      reale(0x16f1c4LL,0xd2212eaaLL<<20),reale(-0xc58993LL,0x92e4dc3cLL<<20),
+      reale(0x385f0ffLL,0xee10705eLL<<20),reale(-0x9dad9c6LL,0x2fe5a098LL<<20),
+      reale(0x116b5b58LL,0x9c464672LL<<20),
+      reale(-0x12059efdLL,0xecd8db74LL<<20),
+      reale(0x60a2bdbLL,0xc1c4d526LL<<20),reale(0xa06a064LL,0xf509b91LL<<24),
+      reale(-0xea175dfLL,0x358cc0baLL<<20),reale(0x65d394dLL,0x892ae5acLL<<20),
+      reale(0x133fcd5LL,0xb4b02d6eLL<<20),reale(-0xf1b930LL,0xc8fd0d88LL<<20),
+      reale(-0x1737347LL,0xdc7fbf82LL<<20),reale(0x159253eLL,0x99455ce4LL<<20),
+      reale(-0x57c159LL,0x2f3d9b36LL<<20),reale(119914LL,0x778fad9290000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[246]
-      reale(341632LL,0xac1a48acLL<<20),reale(0x27a164LL,0x8a0c1f1480000LL),
-      reale(-0x9e43d9LL,0xa4e49531LL<<20),reale(0x1264abLL,0x8ca380d580000LL),
-      reale(-0x1179e5LL,0x9222f2d6LL<<20),reale(0x3ce5afLL,0xb64d248680000LL),
-      reale(-0x105fa4LL,0x302b013bLL<<20),reale(-153112LL,0x183edfc780000LL),
-      reale(-94131LL,0xd7f7d844d8000LL),
+      // C4[9], coeff of eps^13, polynomial in n of order 16
+      real(-0x399266be8d8LL<<20),reale(-30245LL,0x1f85840780000LL),
+      reale(913230LL,0x8c812ed3LL<<20),reale(-0x7f81b0LL,0x508faab680000LL),
+      reale(0x2727214LL,0x60c0bdeLL<<20),reale(-0x781e515LL,0x65819f580000LL),
+      reale(0xf11254cLL,0xec1a46a9LL<<20),
+      reale(-0x1340c342LL,0x23b0142480000LL),
+      reale(0xccb9fe8LL,0xaf4c9794LL<<20),reale(0x24da283LL,0x549703a380000LL),
+      reale(-0xd2d2cc0LL,0x5efaa6ffLL<<20),
+      reale(0xb561781LL,0xe7148ad280000LL),reale(-0x33b13ceLL,0xf08dd4aLL<<20),
+      reale(-0xf32c8bLL,0x75bb941180000LL),reale(0x6bde6eLL,0x670632d5LL<<20),
+      reale(0x62d0c8LL,0xeb9461c080000LL),reale(-0x317e9eLL,0x9a2850efa8000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[247]
-      reale(-0x83b396LL,0x827c58feLL<<20),reale(-629493LL,0x68c8b6e4LL<<20),
-      reale(-0x3b1eaeLL,0xc3b760baLL<<20),reale(0x3b015eLL,0xf4ed6bd8LL<<20),
-      reale(-159711LL,0x580c5996LL<<20),reale(0x10c91dLL,0xaa4c4b4cLL<<20),
-      reale(-0x12020cLL,0xba191652LL<<20),reale(201643LL,0x9fcf910730000LL),
+      // C4[9], coeff of eps^12, polynomial in n of order 17
+      real(-0x49a1015c4LL<<20),real(-0x24465af3cLL<<24),
+      real(-0x1bf34980cbcLL<<20),reale(-15429LL,0x36b38ef8LL<<20),
+      reale(492912LL,0x78bf270cLL<<20),reale(-0x497a24LL,0x5671033LL<<24),
+      reale(0x1863880LL,0xf60b314LL<<20),reale(-0x525f99dLL,0xe1a84668LL<<20),
+      reale(0xbb9caeaLL,0xcc39c4dcLL<<20),reale(-0x1216a8ebLL,0x37a6362LL<<24),
+      reale(0x11a49c5fLL,0xf95d89e4LL<<20),
+      reale(-0x76c584cLL,0x1f92afd8LL<<20),
+      reale(-0x5c748bcLL,0x72cd2facLL<<20),reale(0xb9c37f8LL,0xcf01911LL<<24),
+      reale(-0x852804aLL,0x8c8be3b4LL<<20),reale(0x2dd1b5fLL,0xcfe3b748LL<<20),
+      reale(-0x4d8bb7LL,0xbe26d37cLL<<20),reale(-749749LL,0x9f9678dfe0000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[248]
-      reale(-0x5b6187LL,0xe396e5bLL<<20),reale(0x23d859LL,0xe3eefe9c80000LL),
-      reale(-426463LL,0xd6e2edb2LL<<20),reale(0x25c4a6LL,0x1c0aded780000LL),
-      reale(-999560LL,0x32e18b49LL<<20),reale(-83147LL,0x6bd67ec280000LL),
-      reale(-41199LL,0xb0fdbdc348000LL),
+      // C4[9], coeff of eps^11, polynomial in n of order 18
+      real(-0xdc9b5f1LL<<20),real(-0x461438ca80000LL),real(-0x1b32457c8LL<<20),
+      real(-0xdfda7610580000LL),real(-0xb4fb8c3a9fLL<<20),
+      reale(-6591LL,0x8d2c3ccf80000LL),reale(223861LL,0x20c31aaLL<<20),
+      reale(-0x23cfe5LL,0x9404a6d480000LL),reale(0xcea485LL,0xe6baed33LL<<20),
+      reale(-0x30392e7LL,0x1c35eb2980000LL),
+      reale(0x7cadd8eLL,0xb6b8581cLL<<20),
+      reale(-0xe4b10bcLL,0x19efcfee80000LL),
+      reale(0x12628d94LL,0xca5d2285LL<<20),
+      reale(-0xf679579LL,0x8d6c834380000LL),
+      reale(0x5f1732fLL,0x1b1e3c8eLL<<20),reale(0x33d2151LL,0x9af24b4880000LL),
+      reale(-0x6513088LL,0xf320c657LL<<20),
+      reale(0x4025aa4LL,0x12b2361d80000LL),
+      reale(-0x105153aLL,0xfa056b19b8000LL),
       reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
-      // _C4x[249]
-      reale(-133857LL,0xe363482LL<<24),reale(223946LL,0xb024018LL<<24),
-      reale(-32029LL,0xe8f5e8eLL<<24),reale(48931LL,0x82bd2cLL<<24),
-      reale(-63934LL,0x28f5d3aLL<<24),reale(12842LL,0x805d8e65LL<<20),
-      reale(0x16553c63bLL,0x96bea2db115fLL),
-      // _C4x[250]
-      real(-0x2969ddb5824LL<<20),reale(3279LL,0x51285681LL<<20),
-      real(-0x6e93a3242f2LL<<20),real(-0x48275b7b75LL<<20),
-      real(-0x1f18264b9990000LL),reale(0x9a85177LL,0x379b22013c233LL),
-      // _C4x[251]
-      real(-0x8a9317724LL<<20),real(0x6cfa364f8LL<<20),
-      real(-0xa2b1dc5ccLL<<20),real(0x2561f1223e0000LL),
-      reale(0x1419a3LL,0x4f8aa089603a9LL),
-      // _C4x[252]
-      real(-0x174d38452LL<<20),real(-0x24810c5LL<<20),real(-0xe4960490000LL),
-      reale(161925LL,0x30e683ffe0741LL),
-      // _C4x[253]
-      real(-0x195c48LL<<20),real(0x687f5c0000LL),real(0x438da32e1600335LL),
-      // _C4x[254]
-      real(0x41cf0000LL),real(0x3d2e2985830503LL),
-      // _C4x[255]
-      real(57057LL<<20),real(253638LL<<20),real(0x139aebLL<<20),
-      real(478667LL<<24),real(0x35cd075LL<<20),real(0x2144529aLL<<20),
-      real(0x20d243c7fLL<<20),real(0x5cc88e6184LL<<20),
-      reale(-3998LL,0x94b46c09LL<<20),reale(54510LL,0x42c0ca6eLL<<20),
-      reale(-421910LL,0x94ee5c13LL<<20),reale(0x21847fLL,0xc3c98e58LL<<20),
-      reale(-0x7f1665LL,0x8ef9199dLL<<20),reale(0x16e6874LL,0xb3958e42LL<<20),
-      reale(-0x33611beLL,0x5ff561a7LL<<20),reale(0x5a6d78bLL,0x2e272b2cLL<<20),
-      reale(-0x7bac4e8LL,0x3d1d4131LL<<20),reale(0x7dd7c02LL,0x488ce616LL<<20),
-      reale(-0x50e6202LL,0x8837b53bLL<<20),
-      reale(0x16fb8eeLL,0xf664899ae0000LL),
+      // C4[9], coeff of eps^10, polynomial in n of order 19
+      real(-0x1070a6LL<<20),real(-0x41a48cLL<<20),real(-0x128e0c2LL<<20),
+      real(-0x6214a6LL<<24),real(-0x27bd427eLL<<20),real(-0x15709aa34LL<<20),
+      real(-0x124688a69aLL<<20),real(-0x2c21e34ecc8LL<<20),
+      reale(25645LL,0xc7a2622aLL<<20),reale(-290250LL,0x8f434524LL<<20),
+      reale(0x1becd4LL,0x97e8c70eLL<<20),reale(-0x73c9baLL,0xa17642dLL<<24),
+      reale(0x1540010LL,0x9cff752LL<<20),reale(-0x2dcd0eaLL,0x98d4e37cLL<<20),
+      reale(0x496627cLL,0x9b7ce236LL<<20),reale(-0x56e78b5LL,0xb265fe68LL<<20),
+      reale(0x49e1f30LL,0xb044f6faLL<<20),reale(-0x2a7e0bbLL,0xc12ead4LL<<20),
+      reale(0xeb57a3LL,0x2d0d24deLL<<20),reale(-0x24c5b2LL,0x80f5f23d50000LL),
+      reale(0x60c6b05aaLL,0x7e28f6c5ff5f1LL),
+      // C4[9], coeff of eps^9, polynomial in n of order 20
+      real(-33150LL<<20),real(-0x1b96a80000LL),real(-421083LL<<20),
+      real(-0x1a9b6380000LL),real(-0x7d3598LL<<20),real(-0x2b3428c80000LL),
+      real(-0x125c9155LL<<20),real(-0xa7172a8580000LL),
+      real(-0x97062b5b2LL<<20),real(-0x1855be7c6ee80000LL),
+      reale(15220LL,0x65c177b1LL<<20),reale(-187211LL,0x1c678c9880000LL),
+      reale(0x13ce4bLL,0x7f543134LL<<20),reale(-0x5b9a1eLL,0xd31a9c6f80000LL),
+      reale(0x131570bLL,0xeafca137LL<<20),
+      reale(-0x2fb599eLL,0x34886cf680000LL),
+      reale(0x5b03caeLL,0xfe3eb21aLL<<20),reale(-0x83f8b31LL,0xf584a8d80000LL),
+      reale(0x8bbc08eLL,0x2bfcde3dLL<<20),
+      reale(-0x5bee3bcLL,0x266dd99480000LL),
+      reale(0x1a6e179LL,0x34f39e3ee8000LL),
+      reale(0x12254110ffLL,0x7a7ae451fe1d3LL),
+      // C4[10], coeff of eps^29, polynomial in n of order 0
+      real(0x1b7580000LL),real(0x168a4531304537LL),
+      // C4[10], coeff of eps^28, polynomial in n of order 1
+      real(-0x3d4bdcLL<<20),real(-0x19bc9880000LL),
+      reale(3807LL,0xdf0925caacfb9LL),
+      // C4[10], coeff of eps^27, polynomial in n of order 2
+      real(0x4af0b8bLL<<24),real(-0x656d09e8LL<<20),real(0x1509670680000LL),
+      reale(59656LL,0xa639fabc960fdLL),
+      // C4[10], coeff of eps^26, polynomial in n of order 3
+      real(0x1b00e3838d2LL<<20),real(-0xbe74a11c34LL<<20),
+      real(-0xd93dbb0baLL<<20),real(-0x66c4e2e4040000LL),
+      reale(0x1604813LL,0x49a60b16d9e77LL),
+      // C4[10], coeff of eps^25, polynomial in n of order 4
+      real(0x3079591638LL<<24),real(-0x393657246LL<<24),
+      real(0xc9608c29cLL<<24),real(-0xe7b0dee42LL<<24),
+      real(0x29d42cfe52LL<<20),reale(0x1865db4LL,0x820b055e82c23LL),
+      // C4[10], coeff of eps^24, polynomial in n of order 5
+      reale(0x1446d7LL,0x787f059LL<<24),reale(-550963LL,0xcb73f54LL<<24),
+      reale(0x259c43LL,0x77b42cfLL<<24),reale(-784467LL,0xcf1fa2aLL<<24),
+      reale(-93185LL,0xbea57c5LL<<24),reale(-52199LL,0x7220a476LL<<20),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[256]
-      real(0x96a1e8LL<<20),real(0x35cdab4LL<<20),real(0x17a7bd4LL<<24),
-      real(0xde7dbbccLL<<20),real(0xcf9aac898LL<<20),real(0x227b02f8de4LL<<20),
-      reale(-22185LL,0x4b5805fLL<<24),reale(279989LL,0x7104d2fcLL<<20),
-      reale(-0x1e4c5cLL,0xe6ceb748LL<<20),reale(0x8ec982LL,0x97858d14LL<<20),
-      reale(-0x1e2deffLL,0x4ea41eaLL<<24),reale(0x4c35427LL,0xeda83e2cLL<<20),
-      reale(-0x9272ee4LL,0x14527df8LL<<20),reale(0xd6e9933LL,0x81a2e844LL<<20),
-      reale(-0xedeaa18LL,0xf78175LL<<24),reale(0xc0556bbLL,0x72040d5cLL<<20),
-      reale(-0x6aa01aaLL,0x57562ca8LL<<20),reale(0x23f4800LL,0xa703af74LL<<20),
-      reale(-0x5840deLL,0xcf1b122cc0000LL),
+      // C4[10], coeff of eps^23, polynomial in n of order 6
+      reale(-0x1101f0LL,0x977496cLL<<24),reale(-0x45a30bLL,0x9957d2aLL<<24),
+      reale(0x305c71LL,0x2a8d48LL<<24),reale(68182LL,0xb14c8e6LL<<24),
+      reale(0x11e473LL,0xae8af24LL<<24),reale(-0x109dddLL,0xe616b22LL<<24),
+      reale(166307LL,0x5802f8eLL<<20),reale(0x140e3a711aLL,0x5ef39e09c8055LL),
+      // C4[10], coeff of eps^22, polynomial in n of order 7
+      reale(0x539f56LL,0x1e0c5ff9LL<<20),reale(-0x8dcd6bLL,0xed7bcf5aLL<<20),
+      reale(-197248LL,0x48ddbe7bLL<<20),reale(-0x19170fLL,0x21a4d53cLL<<20),
+      reale(0x3a26f5LL,0xc3eeee7dLL<<20),reale(-747955LL,0xd969e11eLL<<20),
+      reale(-145849LL,0x156d88ffLL<<20),reale(-106663LL,0x47291a5560000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[257]
-      real(0x5cb8dc96LL<<20),real(0x340e1216LL<<24),real(0x2e2a4aa22aLL<<20),
-      real(0x73f12ff5634LL<<20),reale(-70024LL,0x3e7cd6beLL<<20),
-      reale(822756LL,0xd51d4108LL<<20),reale(-0x520a0fLL,0x4455852LL<<20),
-      reale(0x15f995cLL,0x470707dcLL<<20),reale(-0x42678d2LL,0xdc8064e6LL<<20),
-      reale(0x922aa2bLL,0x6b1b50bLL<<24),reale(-0xebaeb4cLL,0x43f0da7aLL<<20),
-      reale(0x10f486a1LL,0x8a758184LL<<20),
-      reale(-0xca440d6LL,0x2938770eLL<<20),reale(0x3a751baLL,0x98680058LL<<20),
-      reale(0x3e6dfcaLL,0xf9f818a2LL<<20),reale(-0x5dddfdbLL,0x636732cLL<<20),
-      reale(0x38698b1LL,0x9347fd36LL<<20),reale(-0xe18952LL,0x4a28bcab40000LL),
+      // C4[10], coeff of eps^21, polynomial in n of order 8
+      reale(0x15bd9d1LL,0x2c03fd2LL<<24),reale(-927291LL,0xd50c865cLL<<20),
+      reale(-369607LL,0xdc6fc0d8LL<<20),reale(-0x8df7bdLL,0x7c2c6fd4LL<<20),
+      reale(0x2e5691LL,0x43d2269LL<<24),reale(396000LL,0xd623804cLL<<20),
+      reale(0x214792LL,0xe725f848LL<<20),reale(-0x17beddLL,0xa31a41c4LL<<20),
+      reale(192540LL,0x32adf107c0000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[258]
-      real(0x79eb8bc84LL<<24),reale(4651LL,0x6e7d259cLL<<20),
-      reale(-165628LL,0x3e78e38LL<<20),reale(0x1bc9a4LL,0xb429d954LL<<20),
-      reale(-0xa82d4fLL,0xa8d76e3LL<<24),reale(0x2925732LL,0xec937c0cLL<<20),
-      reale(-0x6f56f92LL,0x6bb9d228LL<<20),reale(0xd4bc265LL,0xb4537c4LL<<20),
-      reale(-0x11945208LL,0x429b242LL<<24),reale(0xe70a3f0LL,0x4442b67cLL<<20),
-      reale(-0x397c032LL,0xf190ce18LL<<20),
-      reale(-0x778e643LL,0x54fd2234LL<<20),reale(0xad98259LL,0x23a43a1LL<<24),
-      reale(-0x6f60a2cLL,0x9c7024ecLL<<20),reale(0x230e98dLL,0xa4fdd208LL<<20),
-      reale(-0x2eb6afLL,0x1a96e8a4LL<<20),reale(-731282LL,0x55094ecdc0000LL),
+      // C4[10], coeff of eps^20, polynomial in n of order 9
+      reale(862955LL,0x9702fddeLL<<20),reale(0x6b3cedLL,0x5b90967LL<<24),
+      reale(0x13ccfdeLL,0xe66b2502LL<<20),reale(-0x91dd71LL,0x3f5d9d4LL<<20),
+      reale(-0x2ec390LL,0x83ef7f26LL<<20),reale(-0x4e4416LL,0xf4b18338LL<<20),
+      reale(0x57e77dLL,0x987e424aLL<<20),reale(-394464LL,0xc6a8309cLL<<20),
+      reale(-178787LL,0x1860846eLL<<20),reale(-217081LL,0x7f14904c40000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[259]
-      reale(-326981LL,0xa8a1d443LL<<20),reale(0x339162LL,0xbabcd556LL<<20),
-      reale(-0x1225effLL,0xf27e7ca9LL<<20),reale(0x412635bLL,0xe04a11dcLL<<20),
-      reale(-0x9e278baLL,0x4b2c8d8fLL<<20),
-      reale(0x104e7f60LL,0x38610462LL<<20),
-      reale(-0x11163ea6LL,0x7eac51f5LL<<20),
-      reale(0x7d932e0LL,0xe976d3e8LL<<20),reale(0x61bb3b3LL,0x59ab84dbLL<<20),
-      reale(-0xd27d194LL,0xe512c76eLL<<20),reale(0x9233619LL,0x479cb141LL<<20),
-      reale(-0x1c9485dLL,0x69aa5f4LL<<20),reale(-0x11a4428LL,0x52429227LL<<20),
-      reale(0x46c4bcLL,0x203f167aLL<<20),reale(0x64c58bLL,0x9f07728dLL<<20),
-      reale(-0x2cd05aLL,0x768c9b7420000LL),
+      // C4[10], coeff of eps^19, polynomial in n of order 10
+      reale(-0xa68549LL,0x206554c8LL<<20),reale(-0x36b3021LL,0xdeb9bbd4LL<<20),
+      reale(0x14a166eLL,0x2246fcaLL<<24),reale(0xbc7d66LL,0xfe843b6cLL<<20),
+      reale(0xa0ef18LL,0x5e155c78LL<<20),reale(-0xfb67dcLL,0xb33b7c04LL<<20),
+      reale(466396LL,0xd22dc65LL<<24),reale(183297LL,0xd1040f9cLL<<20),
+      reale(0x423943LL,0xee88c28LL<<20),reale(-0x229698LL,0x88900834LL<<20),
+      reale(210337LL,0xe1ea7a84c0000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[260]
-      reale(-0x1be2222LL,0xeb160afLL<<24),reale(0x5c1f497LL,0x28ed0368LL<<20),
-      reale(-0xc8e506fLL,0x70c6dd6LL<<24),reale(0x11bed7d6LL,0x7e237158LL<<20),
-      reale(-0xde12868LL,0xffaed7dLL<<24),reale(779198LL,0xde54d948LL<<20),
-      reale(0xc8cfa6aLL,0xbb351e4LL<<24),reale(-0xc87dffcLL,0xef01df38LL<<20),
-      reale(0x39a2d53LL,0x8c5ad4bLL<<24),reale(0x1d5d416LL,0x2d8a2728LL<<20),
-      reale(-0x7f4692LL,0xcba91f2LL<<24),reale(-0x18b11d6LL,0xb99e5518LL<<20),
-      reale(0x12dae20LL,0x719f219LL<<24),reale(-0x444bceLL,0x59e20d08LL<<20),
-      reale(24304LL,0x9251c55380000LL),reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[261]
-      reale(-0xeb82d91LL,0x7c357414LL<<20),reale(0x119dd076LL,0x1c583fbLL<<24),
-      reale(-0x90ee930LL,0x617b994cLL<<20),
-      reale(-0x6d1d35fLL,0x36379468LL<<20),reale(0xed625caLL,0x7550e084LL<<20),
-      reale(-0x85d2565LL,0x4237b52LL<<24),reale(-0xf0718aLL,0xb8ad3dbcLL<<20),
-      reale(0x1c0a2f3LL,0xaf8e45d8LL<<20),reale(0x1c5921dLL,0x94fe4f4LL<<20),
-      reale(-0x21517f9LL,0xfdaaea9LL<<24),reale(0x50bbf6LL,0x7344ca2cLL<<20),
-      reale(0x34139cLL,0x80d8c748LL<<20),reale(939828LL,0x497a2164LL<<20),
-      reale(-0x102689LL,0xbc8f6ea380000LL),
+      // C4[10], coeff of eps^18, polynomial in n of order 11
+      reale(0xaebb9bbLL,0x9a6909c3LL<<20),reale(0x368691LL,0xe2daadfaLL<<20),
+      reale(-0x24a74bfLL,0xd8cbe9f1LL<<20),
+      reale(-0x260b79cLL,0x3f5d06c8LL<<20),reale(0x28b368cLL,0x39ae469fLL<<20),
+      reale(0x41805eLL,0xcbfe3396LL<<20),reale(-0x2a9a68LL,0xd0516ecdLL<<20),
+      reale(-0xe154f3LL,0x4df58f64LL<<20),reale(0x758c79LL,0x4389217bLL<<20),
+      reale(747527LL,0x4c07d532LL<<20),reale(-45503LL,0x232b6da9LL<<20),
+      reale(-458873LL,0x3de2caada0000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[262]
+      // C4[10], coeff of eps^17, polynomial in n of order 12
       reale(-0x3aeb36bLL,0xa247ef6LL<<24),reale(-0xbb01e73LL,0x45608dd8LL<<20),
       reale(0xdd43f7dLL,0xb33886dLL<<24),reale(-0x38b865fLL,0x705e0ac8LL<<20),
       reale(-0x2c2f6d1LL,0x10312a4LL<<24),reale(-0x5301a0LL,0xb7f985b8LL<<20),
@@ -6795,132 +6781,144 @@ namespace GeographicLib {
       reale(0x8b8c76LL,0xccf9449LL<<24),reale(-0x326f67LL,0x4ecfd288LL<<20),
       reale(189374LL,0xbae6241b80000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[263]
-      reale(0xaebb9bbLL,0x9a6909c3LL<<20),reale(0x368691LL,0xe2daadfaLL<<20),
-      reale(-0x24a74bfLL,0xd8cbe9f1LL<<20),
-      reale(-0x260b79cLL,0x3f5d06c8LL<<20),reale(0x28b368cLL,0x39ae469fLL<<20),
-      reale(0x41805eLL,0xcbfe3396LL<<20),reale(-0x2a9a68LL,0xd0516ecdLL<<20),
-      reale(-0xe154f3LL,0x4df58f64LL<<20),reale(0x758c79LL,0x4389217bLL<<20),
-      reale(747527LL,0x4c07d532LL<<20),reale(-45503LL,0x232b6da9LL<<20),
-      reale(-458873LL,0x3de2caada0000LL),
+      // C4[10], coeff of eps^16, polynomial in n of order 13
+      reale(-0xeb82d91LL,0x7c357414LL<<20),reale(0x119dd076LL,0x1c583fbLL<<24),
+      reale(-0x90ee930LL,0x617b994cLL<<20),
+      reale(-0x6d1d35fLL,0x36379468LL<<20),reale(0xed625caLL,0x7550e084LL<<20),
+      reale(-0x85d2565LL,0x4237b52LL<<24),reale(-0xf0718aLL,0xb8ad3dbcLL<<20),
+      reale(0x1c0a2f3LL,0xaf8e45d8LL<<20),reale(0x1c5921dLL,0x94fe4f4LL<<20),
+      reale(-0x21517f9LL,0xfdaaea9LL<<24),reale(0x50bbf6LL,0x7344ca2cLL<<20),
+      reale(0x34139cLL,0x80d8c748LL<<20),reale(939828LL,0x497a2164LL<<20),
+      reale(-0x102689LL,0xbc8f6ea380000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[264]
-      reale(-0xa68549LL,0x206554c8LL<<20),reale(-0x36b3021LL,0xdeb9bbd4LL<<20),
-      reale(0x14a166eLL,0x2246fcaLL<<24),reale(0xbc7d66LL,0xfe843b6cLL<<20),
-      reale(0xa0ef18LL,0x5e155c78LL<<20),reale(-0xfb67dcLL,0xb33b7c04LL<<20),
-      reale(466396LL,0xd22dc65LL<<24),reale(183297LL,0xd1040f9cLL<<20),
-      reale(0x423943LL,0xee88c28LL<<20),reale(-0x229698LL,0x88900834LL<<20),
-      reale(210337LL,0xe1ea7a84c0000LL),
+      // C4[10], coeff of eps^15, polynomial in n of order 14
+      reale(-0x1be2222LL,0xeb160afLL<<24),reale(0x5c1f497LL,0x28ed0368LL<<20),
+      reale(-0xc8e506fLL,0x70c6dd6LL<<24),reale(0x11bed7d6LL,0x7e237158LL<<20),
+      reale(-0xde12868LL,0xffaed7dLL<<24),reale(779198LL,0xde54d948LL<<20),
+      reale(0xc8cfa6aLL,0xbb351e4LL<<24),reale(-0xc87dffcLL,0xef01df38LL<<20),
+      reale(0x39a2d53LL,0x8c5ad4bLL<<24),reale(0x1d5d416LL,0x2d8a2728LL<<20),
+      reale(-0x7f4692LL,0xcba91f2LL<<24),reale(-0x18b11d6LL,0xb99e5518LL<<20),
+      reale(0x12dae20LL,0x719f219LL<<24),reale(-0x444bceLL,0x59e20d08LL<<20),
+      reale(24304LL,0x9251c55380000LL),reale(0x140e3a711aLL,0x5ef39e09c8055LL),
+      // C4[10], coeff of eps^14, polynomial in n of order 15
+      reale(-326981LL,0xa8a1d443LL<<20),reale(0x339162LL,0xbabcd556LL<<20),
+      reale(-0x1225effLL,0xf27e7ca9LL<<20),reale(0x412635bLL,0xe04a11dcLL<<20),
+      reale(-0x9e278baLL,0x4b2c8d8fLL<<20),
+      reale(0x104e7f60LL,0x38610462LL<<20),
+      reale(-0x11163ea6LL,0x7eac51f5LL<<20),
+      reale(0x7d932e0LL,0xe976d3e8LL<<20),reale(0x61bb3b3LL,0x59ab84dbLL<<20),
+      reale(-0xd27d194LL,0xe512c76eLL<<20),reale(0x9233619LL,0x479cb141LL<<20),
+      reale(-0x1c9485dLL,0x69aa5f4LL<<20),reale(-0x11a4428LL,0x52429227LL<<20),
+      reale(0x46c4bcLL,0x203f167aLL<<20),reale(0x64c58bLL,0x9f07728dLL<<20),
+      reale(-0x2cd05aLL,0x768c9b7420000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[265]
-      reale(862955LL,0x9702fddeLL<<20),reale(0x6b3cedLL,0x5b90967LL<<24),
-      reale(0x13ccfdeLL,0xe66b2502LL<<20),reale(-0x91dd71LL,0x3f5d9d4LL<<20),
-      reale(-0x2ec390LL,0x83ef7f26LL<<20),reale(-0x4e4416LL,0xf4b18338LL<<20),
-      reale(0x57e77dLL,0x987e424aLL<<20),reale(-394464LL,0xc6a8309cLL<<20),
-      reale(-178787LL,0x1860846eLL<<20),reale(-217081LL,0x7f14904c40000LL),
+      // C4[10], coeff of eps^13, polynomial in n of order 16
+      real(0x79eb8bc84LL<<24),reale(4651LL,0x6e7d259cLL<<20),
+      reale(-165628LL,0x3e78e38LL<<20),reale(0x1bc9a4LL,0xb429d954LL<<20),
+      reale(-0xa82d4fLL,0xa8d76e3LL<<24),reale(0x2925732LL,0xec937c0cLL<<20),
+      reale(-0x6f56f92LL,0x6bb9d228LL<<20),reale(0xd4bc265LL,0xb4537c4LL<<20),
+      reale(-0x11945208LL,0x429b242LL<<24),reale(0xe70a3f0LL,0x4442b67cLL<<20),
+      reale(-0x397c032LL,0xf190ce18LL<<20),
+      reale(-0x778e643LL,0x54fd2234LL<<20),reale(0xad98259LL,0x23a43a1LL<<24),
+      reale(-0x6f60a2cLL,0x9c7024ecLL<<20),reale(0x230e98dLL,0xa4fdd208LL<<20),
+      reale(-0x2eb6afLL,0x1a96e8a4LL<<20),reale(-731282LL,0x55094ecdc0000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[266]
-      reale(0x15bd9d1LL,0x2c03fd2LL<<24),reale(-927291LL,0xd50c865cLL<<20),
-      reale(-369607LL,0xdc6fc0d8LL<<20),reale(-0x8df7bdLL,0x7c2c6fd4LL<<20),
-      reale(0x2e5691LL,0x43d2269LL<<24),reale(396000LL,0xd623804cLL<<20),
-      reale(0x214792LL,0xe725f848LL<<20),reale(-0x17beddLL,0xa31a41c4LL<<20),
-      reale(192540LL,0x32adf107c0000LL),
+      // C4[10], coeff of eps^12, polynomial in n of order 17
+      real(0x5cb8dc96LL<<20),real(0x340e1216LL<<24),real(0x2e2a4aa22aLL<<20),
+      real(0x73f12ff5634LL<<20),reale(-70024LL,0x3e7cd6beLL<<20),
+      reale(822756LL,0xd51d4108LL<<20),reale(-0x520a0fLL,0x4455852LL<<20),
+      reale(0x15f995cLL,0x470707dcLL<<20),reale(-0x42678d2LL,0xdc8064e6LL<<20),
+      reale(0x922aa2bLL,0x6b1b50bLL<<24),reale(-0xebaeb4cLL,0x43f0da7aLL<<20),
+      reale(0x10f486a1LL,0x8a758184LL<<20),
+      reale(-0xca440d6LL,0x2938770eLL<<20),reale(0x3a751baLL,0x98680058LL<<20),
+      reale(0x3e6dfcaLL,0xf9f818a2LL<<20),reale(-0x5dddfdbLL,0x636732cLL<<20),
+      reale(0x38698b1LL,0x9347fd36LL<<20),reale(-0xe18952LL,0x4a28bcab40000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[267]
-      reale(0x539f56LL,0x1e0c5ff9LL<<20),reale(-0x8dcd6bLL,0xed7bcf5aLL<<20),
-      reale(-197248LL,0x48ddbe7bLL<<20),reale(-0x19170fLL,0x21a4d53cLL<<20),
-      reale(0x3a26f5LL,0xc3eeee7dLL<<20),reale(-747955LL,0xd969e11eLL<<20),
-      reale(-145849LL,0x156d88ffLL<<20),reale(-106663LL,0x47291a5560000LL),
+      // C4[10], coeff of eps^11, polynomial in n of order 18
+      real(0x96a1e8LL<<20),real(0x35cdab4LL<<20),real(0x17a7bd4LL<<24),
+      real(0xde7dbbccLL<<20),real(0xcf9aac898LL<<20),real(0x227b02f8de4LL<<20),
+      reale(-22185LL,0x4b5805fLL<<24),reale(279989LL,0x7104d2fcLL<<20),
+      reale(-0x1e4c5cLL,0xe6ceb748LL<<20),reale(0x8ec982LL,0x97858d14LL<<20),
+      reale(-0x1e2deffLL,0x4ea41eaLL<<24),reale(0x4c35427LL,0xeda83e2cLL<<20),
+      reale(-0x9272ee4LL,0x14527df8LL<<20),reale(0xd6e9933LL,0x81a2e844LL<<20),
+      reale(-0xedeaa18LL,0xf78175LL<<24),reale(0xc0556bbLL,0x72040d5cLL<<20),
+      reale(-0x6aa01aaLL,0x57562ca8LL<<20),reale(0x23f4800LL,0xa703af74LL<<20),
+      reale(-0x5840deLL,0xcf1b122cc0000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[268]
-      reale(-0x1101f0LL,0x977496cLL<<24),reale(-0x45a30bLL,0x9957d2aLL<<24),
-      reale(0x305c71LL,0x2a8d48LL<<24),reale(68182LL,0xb14c8e6LL<<24),
-      reale(0x11e473LL,0xae8af24LL<<24),reale(-0x109dddLL,0xe616b22LL<<24),
-      reale(166307LL,0x5802f8eLL<<20),reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[269]
-      reale(0x1446d7LL,0x787f059LL<<24),reale(-550963LL,0xcb73f54LL<<24),
-      reale(0x259c43LL,0x77b42cfLL<<24),reale(-784467LL,0xcf1fa2aLL<<24),
-      reale(-93185LL,0xbea57c5LL<<24),reale(-52199LL,0x7220a476LL<<20),
+      // C4[10], coeff of eps^10, polynomial in n of order 19
+      real(57057LL<<20),real(253638LL<<20),real(0x139aebLL<<20),
+      real(478667LL<<24),real(0x35cd075LL<<20),real(0x2144529aLL<<20),
+      real(0x20d243c7fLL<<20),real(0x5cc88e6184LL<<20),
+      reale(-3998LL,0x94b46c09LL<<20),reale(54510LL,0x42c0ca6eLL<<20),
+      reale(-421910LL,0x94ee5c13LL<<20),reale(0x21847fLL,0xc3c98e58LL<<20),
+      reale(-0x7f1665LL,0x8ef9199dLL<<20),reale(0x16e6874LL,0xb3958e42LL<<20),
+      reale(-0x33611beLL,0x5ff561a7LL<<20),reale(0x5a6d78bLL,0x2e272b2cLL<<20),
+      reale(-0x7bac4e8LL,0x3d1d4131LL<<20),reale(0x7dd7c02LL,0x488ce616LL<<20),
+      reale(-0x50e6202LL,0x8837b53bLL<<20),
+      reale(0x16fb8eeLL,0xf664899ae0000LL),
       reale(0x140e3a711aLL,0x5ef39e09c8055LL),
-      // _C4x[270]
-      real(0x3079591638LL<<24),real(-0x393657246LL<<24),
-      real(0xc9608c29cLL<<24),real(-0xe7b0dee42LL<<24),
-      real(0x29d42cfe52LL<<20),reale(0x1865db4LL,0x820b055e82c23LL),
-      // _C4x[271]
-      real(0x1b00e3838d2LL<<20),real(-0xbe74a11c34LL<<20),
-      real(-0xd93dbb0baLL<<20),real(-0x66c4e2e4040000LL),
-      reale(0x1604813LL,0x49a60b16d9e77LL),
-      // _C4x[272]
-      real(0x4af0b8bLL<<24),real(-0x656d09e8LL<<20),real(0x1509670680000LL),
-      reale(59656LL,0xa639fabc960fdLL),
-      // _C4x[273]
-      real(-0x3d4bdcLL<<20),real(-0x19bc9880000LL),
-      reale(3807LL,0xdf0925caacfb9LL),
-      // _C4x[274]
-      real(0x1b7580000LL),real(0x168a4531304537LL),
-      // _C4x[275]
-      real(-13041LL<<24),real(-0x146168LL<<20),real(-662216LL<<24),
-      real(-0x6bfe398LL<<20),real(-0x737e19fLL<<24),real(-0x1633e28ec8LL<<20),
-      real(0x4153bd106aLL<<24),reale(-15650LL,0x87866b08LL<<20),
-      reale(133731LL,0xd6f7b33LL<<24),reale(-773735LL,0xc8d497d8LL<<20),
-      reale(0x3223deLL,0x58eae9cLL<<24),reale(-0xa38670LL,0xa9a4c5a8LL<<20),
-      reale(0x1a47e42LL,0xde0f285LL<<24),reale(-0x36058dfLL,0x378b8278LL<<20),
-      reale(0x58fa16eLL,0xefceeceLL<<24),reale(-0x73e7758LL,0xc0e19c48LL<<20),
-      reale(0x72107bbLL,0x72f1357LL<<24),reale(-0x47e9002LL,0xb1f8a118LL<<20),
-      reale(0x1439880LL,0x5df212b140000LL),
+      // C4[11], coeff of eps^29, polynomial in n of order 0
+      real(-0x1f26080000LL),real(0xbdc79d6e266b55fLL),
+      // C4[11], coeff of eps^28, polynomial in n of order 1
+      real(-0x20b454LL<<24),real(0x62986bLL<<20),real(0x56e2cdab4666fea1LL),
+      // C4[11], coeff of eps^27, polynomial in n of order 2
+      real(-0x672444eLL<<24),real(-0xa80833LL<<24),real(-0x5828e0280000LL),
+      reale(65338LL,0x3c271ece8bf8fLL),
+      // C4[11], coeff of eps^26, polynomial in n of order 3
+      real(-0x6f59afcLL<<28),real(0x9613a65LL<<32),real(-0x980d63f4LL<<28),
+      real(0x18d56ad118LL<<20),reale(0x12c1778LL,0xb9ff38da93b23LL),
+      // C4[11], coeff of eps^25, polynomial in n of order 4
+      reale(-768829LL,233799LL<<28),reale(0x24b2b3LL,0x9d2b5a4LL<<24),
+      reale(-595680LL,0x7a659b8LL<<24),reale(-94148LL,0x5f2330cLL<<24),
+      reale(-60456LL,0xb121a272LL<<20),reale(0x15f733d135LL,0x436c57c191ed7LL),
+      // C4[11], coeff of eps^24, polynomial in n of order 5
+      reale(-0x4cef97LL,0xd55fa1LL<<28),reale(0x2574d7LL,0xc08d4cLL<<28),
+      reale(191058LL,0x859fe7LL<<28),reale(0x12d271LL,0xb6e1b6LL<<28),
+      reale(-0xf47b4LL,0x74bffdLL<<28),reale(137539LL,0xc2c0584LL<<20),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[276]
-      real(-0x4c7f9aLL<<24),real(-0x30ae96LL<<28),real(-0x315e58a6LL<<24),
-      real(-0x8f37a5414LL<<24),reale(6318LL,0xf71dfaeLL<<24),
-      reale(-88019LL,0xc301df8LL<<24),reale(693686LL,0xbce3822LL<<24),
-      reale(-0x37e55cLL,0x7069f84LL<<24),reale(0xd5f852LL,0x9f2bf76LL<<24),
-      reale(-0x26b7d77LL,0x982e35LL<<28),reale(0x56bf82dLL,0xe33846aLL<<24),
-      reale(-0x97d842eLL,0xfcfdc1cLL<<24),reale(0xcf279d2LL,0xd6595beLL<<24),
-      reale(-0xd8c17b4LL,0x36d7ca8LL<<24),reale(0xa7eb38cLL,0x1190232LL<<24),
-      reale(-0x5a3a475LL,0x51c77b4LL<<24),reale(0x1dc1847LL,0x291d886LL<<24),
-      reale(-0x47e901LL,0xeb1f8a1180000LL),
+      // C4[11], coeff of eps^23, polynomial in n of order 6
+      reale(-0x7446e2LL,0xcf3ec68LL<<24),reale(-0x1112a3LL,0x41d329cLL<<24),
+      reale(-0x2132d1LL,0x2b503fLL<<28),reale(0x3649a5LL,0xae223c4LL<<24),
+      reale(-479219LL,0x9852d78LL<<24),reale(-128929LL,0xa73166cLL<<24),
+      reale(-115228LL,0x34390ee2LL<<20),
+      reale(0x15f733d135LL,0x436c57c191ed7LL),
+      // C4[11], coeff of eps^22, polynomial in n of order 7
+      reale(0x2e3ea5LL,0xf2ce54LL<<28),reale(0x18b054LL,874507LL<<32),
+      reale(-0x8ca6c9LL,0xf7c2dcLL<<28),reale(0x1af681LL,194126LL<<32),
+      reale(345531LL,0xbb5ec4LL<<28),reale(0x223033LL,263433LL<<32),
+      reale(-0x155d9aLL,0xc9524cLL<<28),reale(154222LL,0x8d6ad0d8LL<<20),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[277]
-      real(-0xbc4739e8LL<<24),real(-0x2058be1d1f8LL<<20),
-      reale(21507LL,0xd2cf265LL<<24),reale(-280153LL,0xf868d618LL<<20),
-      reale(0x1f3a9fLL,0x92ccb12LL<<24),reale(-0x97320aLL,0xf19bf728LL<<20),
-      reale(0x20b2df2LL,0x89df7fLL<<24),reale(-0x53f6d2bLL,0x6ec4d738LL<<20),
-      reale(0xa26103bLL,0x9df0f0cLL<<24),reale(-0xeb20174LL,0xaa2fc48LL<<20),
-      reale(0xf5a086bLL,0x152d119LL<<24),reale(-0xa3a5adeLL,0xdca2ac58LL<<20),
-      reale(0x1e9c7a3LL,0xbf47d06LL<<24),reale(0x444daa3LL,0x588f6d68LL<<20),
-      reale(-0x56cf580LL,0x3959233LL<<24),reale(0x31fe3f8LL,0xef0e8578LL<<20),
-      reale(-0xc5220eLL,0x88f9c58840000LL),
+      // C4[11], coeff of eps^21, polynomial in n of order 8
+      reale(304504LL,0xbeba70cLL<<24),reale(0x14eef75LL,0x34d46048LL<<20),
+      reale(-0x4c6015LL,0xc143319LL<<24),reale(-0x2e5cf9LL,0xcf35d858LL<<20),
+      reale(-0x5b33e8LL,0xbd68906LL<<24),reale(0x4ca422LL,0xe77fa168LL<<20),
+      reale(-45294LL,0xf8ac833LL<<24),reale(-123971LL,0xaa6e8178LL<<20),
+      reale(-222793LL,0x8dac164e40000LL),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[278]
-      reale(54399LL,0x7d7e5bLL<<28),reale(-665622LL,0xa9e8fcLL<<28),
-      reale(0x4516e6LL,0xa12949LL<<28),reale(-0x133f030LL,0x3d6c48LL<<28),
-      reale(0x3c5ddc9LL,0x4528ffLL<<28),reale(-0x895fe5fLL,0x1be074LL<<28),
-      reale(0xe304ef1LL,0x35d1adLL<<28),reale(-0x105e3c14LL,562731LL<<32),
-      reale(0xb44d7c8LL,0x2eff83LL<<28),reale(-0x905839LL,0xf8302cLL<<28),
-      reale(-0x868c3d2LL,0xc8a6b1LL<<28),reale(0x9f23759LL,0x9c0618LL<<28),
-      reale(-0x5d2f61aLL,74599LL<<28),reale(0x1afe1f8LL,0xfb81a4LL<<28),
-      reale(-0x1a0fd8LL,0x25c9d5LL<<28),reale(-691966LL,0x8d060e02LL<<20),
+      // C4[11], coeff of eps^20, polynomial in n of order 9
+      reale(-0x35d16eaLL,0x19cc9aeLL<<24),reale(0x5f5197LL,0x97e859LL<<28),
+      reale(0xae1bafLL,0x9ecb7b2LL<<24),reale(0xe030e3LL,0xbd74e4cLL<<24),
+      reale(-0xd316c9LL,0x12b9196LL<<24),reale(-0x12ffc4LL,0xb4f69c8LL<<24),
+      reale(-339986LL,0x2585d1aLL<<24),reale(0x417addLL,0x56a51c4LL<<24),
+      reale(-0x1e390eLL,0x43e1ffeLL<<24),reale(159775LL,0xd187ea4f80000LL),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[279]
-      reale(0x7fb3fdLL,0x7d8f1a2LL<<24),reale(-0x20df1d1LL,0xb5fbbf7LL<<24),
-      reale(0x5db0016LL,0xc083d94LL<<24),reale(-0xbcb0798LL,0xaa8d11LL<<24),
-      reale(0x106dd7a3LL,0xf1de306LL<<24),reale(-0xe255c04LL,0x9743a8bLL<<24),
-      reale(0x370921bLL,0x2e25b8LL<<24),reale(0x895b345LL,0xa7ba25LL<<24),
-      reale(-0xc671512LL,0x5bb796aLL<<24),reale(0x728d461LL,0xae6199fLL<<24),
-      reale(-0xc24b9aLL,0x96611dcLL<<24),reale(-0x1202f11LL,0x563ceb9LL<<24),
-      reale(0x2707aaLL,0x2d372ceLL<<24),reale(0x644aaeLL,0xa570733LL<<24),
-      reale(-0x28af73LL,0x8822702880000LL),
+      // C4[11], coeff of eps^19, polynomial in n of order 10
+      reale(0x26ef703LL,0xdf6cf1bLL<<24),reale(-0x123d1c6LL,0xb2f34918LL<<20),
+      reale(-0x30a90e5LL,0x3d857bcLL<<24),reale(0x1d39fffLL,0xb7852868LL<<20),
+      reale(0x95c49dLL,0x68acddLL<<24),reale(639236LL,0x74addeb8LL<<20),
+      reale(-0xe4250aLL,0xe8f075eLL<<24),reale(0x5a465aLL,0x48074a08LL<<20),
+      reale(0x10620cLL,0xd7d681fLL<<24),reale(80953LL,0xb5ac0858LL<<20),
+      reale(-451112LL,0xf0086f6940000LL),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[280]
-      reale(0x81325abLL,0xb23234LL<<24),reale(-0xe5bb47aLL,0x6a1a7dLL<<28),
-      reale(0x10858d4bLL,0xb84e1acLL<<24),reale(-0x92bbb1bLL,0x5728018LL<<24),
-      reale(-0x4a7469dLL,0x3d93f64LL<<24),reale(0xd5de4f7LL,0xc6fbbeLL<<28),
-      reale(-0xa112ebcLL,0xa5ce5dcLL<<24),reale(0x1830c6fLL,0xeaaada8LL<<24),
-      reale(0x206abaaLL,0x54c6f94LL<<24),reale(-0x1438d4LL,0x342a7fLL<<28),
-      reale(-0x190eaf6LL,0xfad770cLL<<24),reale(0x106613bLL,0x60f7d38LL<<24),
-      reale(-0x354e5eLL,0x2da96c4LL<<24),reale(-37172LL,0x4d64d235LL<<20),
+      // C4[11], coeff of eps^18, polynomial in n of order 11
+      reale(-0xdef5588LL,0xca0ea7LL<<28),reale(0xa9a6afdLL,0xe5a3b4LL<<28),
+      reale(-0x53b88aLL,0x76f2a5LL<<28),reale(-0x2aec778LL,825675LL<<32),
+      reale(-0x1543276LL,0xa4c90bLL<<28),reale(0x2c5876aLL,0xcc4aecLL<<28),
+      reale(-0x7fe5fcLL,0xf0df89LL<<28),reale(-0x748622LL,0x2da518LL<<28),
+      reale(-0x4df20cLL,0x9d2bcfLL<<28),reale(0x82c05aLL,0x3961e4LL<<28),
+      reale(-0x2a4294LL,0x535b8dLL<<28),reale(126172LL,0x8a3e4592LL<<20),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[281]
+      // C4[11], coeff of eps^17, polynomial in n of order 12
       reale(0xeb3d623LL,0x5926ed4LL<<24),reale(-0x30566c7LL,0x3cc3621LL<<24),
       reale(-0xab79731LL,0x9e9c766LL<<24),reale(0xd83fac8LL,0x5f60b3bLL<<24),
       reale(-0x4fd042aLL,0xfaa1138LL<<24),reale(-0x22701ebLL,0xf123475LL<<24),
@@ -6929,118 +6927,128 @@ namespace GeographicLib {
       reale(0x31320dLL,0xe57c3aeLL<<24),reale(0x11adb6LL,0x4fa2263LL<<24),
       reale(-999785LL,0x48d2892080000LL),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[282]
-      reale(-0xdef5588LL,0xca0ea7LL<<28),reale(0xa9a6afdLL,0xe5a3b4LL<<28),
-      reale(-0x53b88aLL,0x76f2a5LL<<28),reale(-0x2aec778LL,825675LL<<32),
-      reale(-0x1543276LL,0xa4c90bLL<<28),reale(0x2c5876aLL,0xcc4aecLL<<28),
-      reale(-0x7fe5fcLL,0xf0df89LL<<28),reale(-0x748622LL,0x2da518LL<<28),
-      reale(-0x4df20cLL,0x9d2bcfLL<<28),reale(0x82c05aLL,0x3961e4LL<<28),
-      reale(-0x2a4294LL,0x535b8dLL<<28),reale(126172LL,0x8a3e4592LL<<20),
-      reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[283]
-      reale(0x26ef703LL,0xdf6cf1bLL<<24),reale(-0x123d1c6LL,0xb2f34918LL<<20),
-      reale(-0x30a90e5LL,0x3d857bcLL<<24),reale(0x1d39fffLL,0xb7852868LL<<20),
-      reale(0x95c49dLL,0x68acddLL<<24),reale(639236LL,0x74addeb8LL<<20),
-      reale(-0xe4250aLL,0xe8f075eLL<<24),reale(0x5a465aLL,0x48074a08LL<<20),
-      reale(0x10620cLL,0xd7d681fLL<<24),reale(80953LL,0xb5ac0858LL<<20),
-      reale(-451112LL,0xf0086f6940000LL),
+      // C4[11], coeff of eps^16, polynomial in n of order 13
+      reale(0x81325abLL,0xb23234LL<<24),reale(-0xe5bb47aLL,0x6a1a7dLL<<28),
+      reale(0x10858d4bLL,0xb84e1acLL<<24),reale(-0x92bbb1bLL,0x5728018LL<<24),
+      reale(-0x4a7469dLL,0x3d93f64LL<<24),reale(0xd5de4f7LL,0xc6fbbeLL<<28),
+      reale(-0xa112ebcLL,0xa5ce5dcLL<<24),reale(0x1830c6fLL,0xeaaada8LL<<24),
+      reale(0x206abaaLL,0x54c6f94LL<<24),reale(-0x1438d4LL,0x342a7fLL<<28),
+      reale(-0x190eaf6LL,0xfad770cLL<<24),reale(0x106613bLL,0x60f7d38LL<<24),
+      reale(-0x354e5eLL,0x2da96c4LL<<24),reale(-37172LL,0x4d64d235LL<<20),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[284]
-      reale(-0x35d16eaLL,0x19cc9aeLL<<24),reale(0x5f5197LL,0x97e859LL<<28),
-      reale(0xae1bafLL,0x9ecb7b2LL<<24),reale(0xe030e3LL,0xbd74e4cLL<<24),
-      reale(-0xd316c9LL,0x12b9196LL<<24),reale(-0x12ffc4LL,0xb4f69c8LL<<24),
-      reale(-339986LL,0x2585d1aLL<<24),reale(0x417addLL,0x56a51c4LL<<24),
-      reale(-0x1e390eLL,0x43e1ffeLL<<24),reale(159775LL,0xd187ea4f80000LL),
+      // C4[11], coeff of eps^15, polynomial in n of order 14
+      reale(0x7fb3fdLL,0x7d8f1a2LL<<24),reale(-0x20df1d1LL,0xb5fbbf7LL<<24),
+      reale(0x5db0016LL,0xc083d94LL<<24),reale(-0xbcb0798LL,0xaa8d11LL<<24),
+      reale(0x106dd7a3LL,0xf1de306LL<<24),reale(-0xe255c04LL,0x9743a8bLL<<24),
+      reale(0x370921bLL,0x2e25b8LL<<24),reale(0x895b345LL,0xa7ba25LL<<24),
+      reale(-0xc671512LL,0x5bb796aLL<<24),reale(0x728d461LL,0xae6199fLL<<24),
+      reale(-0xc24b9aLL,0x96611dcLL<<24),reale(-0x1202f11LL,0x563ceb9LL<<24),
+      reale(0x2707aaLL,0x2d372ceLL<<24),reale(0x644aaeLL,0xa570733LL<<24),
+      reale(-0x28af73LL,0x8822702880000LL),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[285]
-      reale(304504LL,0xbeba70cLL<<24),reale(0x14eef75LL,0x34d46048LL<<20),
-      reale(-0x4c6015LL,0xc143319LL<<24),reale(-0x2e5cf9LL,0xcf35d858LL<<20),
-      reale(-0x5b33e8LL,0xbd68906LL<<24),reale(0x4ca422LL,0xe77fa168LL<<20),
-      reale(-45294LL,0xf8ac833LL<<24),reale(-123971LL,0xaa6e8178LL<<20),
-      reale(-222793LL,0x8dac164e40000LL),
+      // C4[11], coeff of eps^14, polynomial in n of order 15
+      reale(54399LL,0x7d7e5bLL<<28),reale(-665622LL,0xa9e8fcLL<<28),
+      reale(0x4516e6LL,0xa12949LL<<28),reale(-0x133f030LL,0x3d6c48LL<<28),
+      reale(0x3c5ddc9LL,0x4528ffLL<<28),reale(-0x895fe5fLL,0x1be074LL<<28),
+      reale(0xe304ef1LL,0x35d1adLL<<28),reale(-0x105e3c14LL,562731LL<<32),
+      reale(0xb44d7c8LL,0x2eff83LL<<28),reale(-0x905839LL,0xf8302cLL<<28),
+      reale(-0x868c3d2LL,0xc8a6b1LL<<28),reale(0x9f23759LL,0x9c0618LL<<28),
+      reale(-0x5d2f61aLL,74599LL<<28),reale(0x1afe1f8LL,0xfb81a4LL<<28),
+      reale(-0x1a0fd8LL,0x25c9d5LL<<28),reale(-691966LL,0x8d060e02LL<<20),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[286]
-      reale(0x2e3ea5LL,0xf2ce54LL<<28),reale(0x18b054LL,874507LL<<32),
-      reale(-0x8ca6c9LL,0xf7c2dcLL<<28),reale(0x1af681LL,194126LL<<32),
-      reale(345531LL,0xbb5ec4LL<<28),reale(0x223033LL,263433LL<<32),
-      reale(-0x155d9aLL,0xc9524cLL<<28),reale(154222LL,0x8d6ad0d8LL<<20),
+      // C4[11], coeff of eps^13, polynomial in n of order 16
+      real(-0xbc4739e8LL<<24),real(-0x2058be1d1f8LL<<20),
+      reale(21507LL,0xd2cf265LL<<24),reale(-280153LL,0xf868d618LL<<20),
+      reale(0x1f3a9fLL,0x92ccb12LL<<24),reale(-0x97320aLL,0xf19bf728LL<<20),
+      reale(0x20b2df2LL,0x89df7fLL<<24),reale(-0x53f6d2bLL,0x6ec4d738LL<<20),
+      reale(0xa26103bLL,0x9df0f0cLL<<24),reale(-0xeb20174LL,0xaa2fc48LL<<20),
+      reale(0xf5a086bLL,0x152d119LL<<24),reale(-0xa3a5adeLL,0xdca2ac58LL<<20),
+      reale(0x1e9c7a3LL,0xbf47d06LL<<24),reale(0x444daa3LL,0x588f6d68LL<<20),
+      reale(-0x56cf580LL,0x3959233LL<<24),reale(0x31fe3f8LL,0xef0e8578LL<<20),
+      reale(-0xc5220eLL,0x88f9c58840000LL),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[287]
-      reale(-0x7446e2LL,0xcf3ec68LL<<24),reale(-0x1112a3LL,0x41d329cLL<<24),
-      reale(-0x2132d1LL,0x2b503fLL<<28),reale(0x3649a5LL,0xae223c4LL<<24),
-      reale(-479219LL,0x9852d78LL<<24),reale(-128929LL,0xa73166cLL<<24),
-      reale(-115228LL,0x34390ee2LL<<20),
+      // C4[11], coeff of eps^12, polynomial in n of order 17
+      real(-0x4c7f9aLL<<24),real(-0x30ae96LL<<28),real(-0x315e58a6LL<<24),
+      real(-0x8f37a5414LL<<24),reale(6318LL,0xf71dfaeLL<<24),
+      reale(-88019LL,0xc301df8LL<<24),reale(693686LL,0xbce3822LL<<24),
+      reale(-0x37e55cLL,0x7069f84LL<<24),reale(0xd5f852LL,0x9f2bf76LL<<24),
+      reale(-0x26b7d77LL,0x982e35LL<<28),reale(0x56bf82dLL,0xe33846aLL<<24),
+      reale(-0x97d842eLL,0xfcfdc1cLL<<24),reale(0xcf279d2LL,0xd6595beLL<<24),
+      reale(-0xd8c17b4LL,0x36d7ca8LL<<24),reale(0xa7eb38cLL,0x1190232LL<<24),
+      reale(-0x5a3a475LL,0x51c77b4LL<<24),reale(0x1dc1847LL,0x291d886LL<<24),
+      reale(-0x47e901LL,0xeb1f8a1180000LL),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[288]
-      reale(-0x4cef97LL,0xd55fa1LL<<28),reale(0x2574d7LL,0xc08d4cLL<<28),
-      reale(191058LL,0x859fe7LL<<28),reale(0x12d271LL,0xb6e1b6LL<<28),
-      reale(-0xf47b4LL,0x74bffdLL<<28),reale(137539LL,0xc2c0584LL<<20),
+      // C4[11], coeff of eps^11, polynomial in n of order 18
+      real(-13041LL<<24),real(-0x146168LL<<20),real(-662216LL<<24),
+      real(-0x6bfe398LL<<20),real(-0x737e19fLL<<24),real(-0x1633e28ec8LL<<20),
+      real(0x4153bd106aLL<<24),reale(-15650LL,0x87866b08LL<<20),
+      reale(133731LL,0xd6f7b33LL<<24),reale(-773735LL,0xc8d497d8LL<<20),
+      reale(0x3223deLL,0x58eae9cLL<<24),reale(-0xa38670LL,0xa9a4c5a8LL<<20),
+      reale(0x1a47e42LL,0xde0f285LL<<24),reale(-0x36058dfLL,0x378b8278LL<<20),
+      reale(0x58fa16eLL,0xefceeceLL<<24),reale(-0x73e7758LL,0xc0e19c48LL<<20),
+      reale(0x72107bbLL,0x72f1357LL<<24),reale(-0x47e9002LL,0xb1f8a118LL<<20),
+      reale(0x1439880LL,0x5df212b140000LL),
       reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[289]
-      reale(-768829LL,233799LL<<28),reale(0x24b2b3LL,0x9d2b5a4LL<<24),
-      reale(-595680LL,0x7a659b8LL<<24),reale(-94148LL,0x5f2330cLL<<24),
-      reale(-60456LL,0xb121a272LL<<20),reale(0x15f733d135LL,0x436c57c191ed7LL),
-      // _C4x[290]
-      real(-0x6f59afcLL<<28),real(0x9613a65LL<<32),real(-0x980d63f4LL<<28),
-      real(0x18d56ad118LL<<20),reale(0x12c1778LL,0xb9ff38da93b23LL),
-      // _C4x[291]
-      real(-0x672444eLL<<24),real(-0xa80833LL<<24),real(-0x5828e0280000LL),
-      reale(65338LL,0x3c271ece8bf8fLL),
-      // _C4x[292]
-      real(-0x20b454LL<<24),real(0x62986bLL<<20),real(0x56e2cdab4666fea1LL),
-      // _C4x[293]
-      real(-0x1f26080000LL),real(0xbdc79d6e266b55fLL),
-      // _C4x[294]
-      real(127075LL<<24),real(91195LL<<28),real(0x19a7ffdLL<<24),
-      real(0x554e98faLL<<24),real(-0x1104c06029LL<<24),
-      reale(4440LL,0x88ff8c4LL<<24),reale(-41520LL,0xff11071LL<<24),
-      reale(264211LL,0xd76518eLL<<24),reale(-0x12f2c4LL,0x5871a4bLL<<24),
-      reale(0x44e724LL,0x8fd71d8LL<<24),reale(-0xc76bc0LL,0x713de5LL<<24),
-      reale(0x1d336f4LL,0xf6bb822LL<<24),reale(-0x37d345cLL,0x284e3bfLL<<24),
-      reale(0x56f84c4LL,0xf9cc2ecLL<<24),reale(-0x6cb65f7LL,0xc7c0c59LL<<24),
-      reale(0x67fc5b3LL,0xdcc20b6LL<<24),reale(-0x40789f0LL,0x7c40033LL<<24),
-      reale(0x11fa400LL,0x5381d7baLL<<20),
+      // C4[12], coeff of eps^29, polynomial in n of order 0
+      real(16904LL<<20),real(0x495846bc80a035LL),
+      // C4[12], coeff of eps^28, polynomial in n of order 1
+      real(-0x9a681aLL<<24),real(-0x5ab210cLL<<20),
+      reale(61953LL,0x75e619a89ce07LL),
+      // C4[12], coeff of eps^27, polynomial in n of order 2
+      real(0x3aca642LL<<28),real(-0x34bd5bbLL<<28),real(0x7d57dc9LL<<24),
+      reale(497138LL,0xbe8dd4238d2e7LL),
+      // C4[12], coeff of eps^26, polynomial in n of order 3
+      real(0x1e06447abLL<<28),real(-0x5a3f19aeLL<<28),real(-0x128cc8c7LL<<28),
+      real(-0xddf8d6LL<<32),reale(0x1462fc6LL,0x1d2a1f8b6ccdLL),
+      // C4[12], coeff of eps^25, polynomial in n of order 4
+      reale(590308LL,0x2dd66cLL<<28),reale(77521LL,0xf4de25LL<<28),
+      reale(426657LL,250006LL<<28),reale(-306167LL,0xaff9d7LL<<28),
+      reale(37995LL,0xc577dbbLL<<24),reale(0x7f56465c5LL,0x62a1b07dc9473LL),
+      // C4[12], coeff of eps^24, polynomial in n of order 5
+      reale(-0x1868abLL,0xedbb168LL<<24),reale(-0x28c2d7LL,0x63a582LL<<28),
+      reale(0x31b08cLL,0x7cf2cd8LL<<24),reale(-261262LL,0xc33c21LL<<28),
+      reale(-106563LL,0xf6cfe48LL<<24),reale(-120794LL,0xff048abLL<<24),
       reale(0x17e02d3150LL,0x27e511795bd59LL),
-      // _C4x[295]
-      real(0x3ede9cLL<<28),real(0xc5bfb074LL<<24),real(-0x251c8220f8LL<<24),
-      reale(9050LL,0x293775cLL<<24),reale(-78489LL,0x725735LL<<28),
-      reale(459151LL,0x559e0c4LL<<24),reale(-0x1df2ddLL,0x76c7d98LL<<24),
-      reale(0x61c892LL,0x1dd53acLL<<24),reale(-0xfa2ba9LL,0xce5d4eLL<<28),
-      reale(0x1fc4a99LL,0x878f714LL<<24),reale(-0x33727e6LL,0xca2d028LL<<24),
-      reale(0x41fef20LL,0xea431fcLL<<24),reale(-0x41d0a88LL,0xc66c67LL<<28),
-      reale(0x31282b2LL,0x1de2b64LL<<24),reale(-0x19b67d0LL,0x9da8eb8LL<<24),
-      reale(0x851a0eLL,0x6394a4cLL<<24),reale(-0x13d659LL,0xb39ec4fcLL<<20),
-      reale(0x7f56465c5LL,0x62a1b07dc9473LL),
-      // _C4x[296]
-      reale(-6505LL,0x92293b4LL<<24),reale(93075LL,0xfdd7228LL<<24),
-      reale(-752119LL,0xe75899cLL<<24),reale(0x3df976LL,0xb48d79LL<<28),
-      reale(-0xf1b6e6LL,0x79bef84LL<<24),reale(0x2c5451aLL,0x92c8cf8LL<<24),
-      reale(-0x63dbf25LL,0xce4256cLL<<24),reale(0xad6f8a8LL,0xeee7a6LL<<28),
-      reale(-0xe508b0cLL,0x7602b54LL<<24),reale(0xdb5669eLL,0x4c947c8LL<<24),
-      reale(-0x8283b03LL,0x587e13cLL<<24),reale(0x98726bLL,0x26e9d3LL<<28),
-      reale(0x4711694LL,0x15b4724LL<<24),reale(-0x5029e00LL,0xfa96298LL<<24),
-      reale(0x2c9e8d8LL,0xd04bd0cLL<<24),reale(-0xae0e62LL,0x6a163c4LL<<24),
+      // C4[12], coeff of eps^23, polynomial in n of order 6
+      reale(0x130e05LL,0x8aa00aLL<<28),reale(-0x2c180eLL,0x6a42ffLL<<28),
+      reale(234885LL,0xbf619cLL<<28),reale(66922LL,0x973059LL<<28),
+      reale(755418LL,0x1367aeLL<<28),reale(-419246LL,0x369313LL<<28),
+      reale(41213LL,0xb7cf7a7LL<<24),reale(0x7f56465c5LL,0x62a1b07dc9473LL),
+      // C4[12], coeff of eps^22, polynomial in n of order 7
+      reale(0x13eb197LL,0x4b5b07LL<<28),reale(-0x10e777LL,0xda51a6LL<<28),
+      reale(-0x242b4aLL,0xc67305LL<<28),reale(-0x641eacLL,0xd9e1c4LL<<28),
+      reale(0x414e2bLL,0xa4c103LL<<28),reale(210660LL,0x72cde2LL<<28),
+      reale(-68725LL,0xe0f901LL<<28),reale(-224556LL,0xdcd37eLL<<28),
       reale(0x17e02d3150LL,0x27e511795bd59LL),
-      // _C4x[297]
-      reale(-0x1b42ceLL,0x97fa1e8LL<<24),reale(0x88697eLL,0x5071c6cLL<<24),
-      reale(-0x1e6dfd8LL,0xa1c9c1LL<<28),reale(0x50509b8LL,0x12dc734LL<<24),
-      reale(-0x9e9ff75LL,0xa94b438LL<<24),reale(0xe77683bLL,0x21cf57cLL<<24),
-      reale(-0xeb7f87dLL,0x151256LL<<28),reale(0x852eb3aLL,0xbef7244LL<<24),
-      reale(0x1c20a31LL,0x933aa88LL<<24),reale(-0x8d28625LL,0xb8d488cLL<<24),
-      reale(0x9029bbcLL,622571LL<<28),reale(-0x4e16fa2LL,0x2c54354LL<<24),
-      reale(0x14e39e1LL,0x7555cd8LL<<24),reale(-792997LL,0xc866d9cLL<<24),
-      reale(-644310LL,0x92d390ecLL<<20),
+      // C4[12], coeff of eps^21, polynomial in n of order 8
+      reale(-0x54decfLL,0xfb5258LL<<28),reale(0x762145LL,0x443871LL<<28),
+      reale(0x1097e20LL,0xbba962LL<<28),reale(-0xa62ed3LL,0x5c0bc3LL<<28),
+      reale(-0x24239fLL,0xe4c42cLL<<28),reale(-891563LL,0x747035LL<<28),
+      reale(0x3fd622LL,786806LL<<28),reale(-0x1a6626LL,0xa35887LL<<28),
+      reale(120797LL,0x11dfcd3LL<<24),reale(0x17e02d3150LL,0x27e511795bd59LL),
+      // C4[12], coeff of eps^20, polynomial in n of order 9
+      reale(0x32da72LL,0xaace967LL<<24),reale(-0x33bb725LL,0x59030b8LL<<24),
+      reale(0x11933eeLL,0x20bc689LL<<24),reale(0xbb9523LL,0xca47e4aLL<<24),
+      reale(0x3d6a61LL,0x4b092ebLL<<24),reale(-0xddaf0fLL,0xfb2ea5cLL<<24),
+      reale(0x426269LL,0x233d90dLL<<24),reale(0x1317c7LL,0xb02256eLL<<24),
+      reale(191236LL,0x4d0b6fLL<<24),reale(-439125LL,0x1391d242LL<<20),
       reale(0x17e02d3150LL,0x27e511795bd59LL),
-      // _C4x[298]
-      reale(-0x3328892LL,0x45ae872LL<<24),reale(0x7981896LL,0x1838ef8LL<<24),
-      reale(-0xd135377LL,0xe641feLL<<24),reale(0xfa08086LL,0xbb034a4LL<<24),
-      reale(-0xae1efafLL,0x3beb0aLL<<24),reale(-0x3c5d59LL,0x16b275LL<<28),
-      reale(0xa01a759LL,0x6cbd696LL<<24),reale(-0xb425220LL,0x4e67dfcLL<<24),
-      reale(0x5760a52LL,0x308a7a2LL<<24),reale(-762368LL,0x37dcfa8LL<<24),
-      reale(-0x1136a7eLL,0xe75512eLL<<24),reale(839158LL,0x28bd354LL<<24),
-      reale(0x6245dfLL,0x392b63aLL<<24),reale(-0x250e87LL,0x15bafadcLL<<20),
+      // C4[12], coeff of eps^19, polynomial in n of order 10
+      reale(0x705c1e4LL,0x4a6fb88LL<<24),reale(0x1bf27f2LL,0x5362b64LL<<24),
+      reale(-0x204a06fLL,0x99d1daLL<<28),reale(-0x21258daLL,0x8ca3adcLL<<24),
+      reale(0x26b2689LL,0x5404bb8LL<<24),reale(-0x1b9e2dLL,0x7162cd4LL<<24),
+      reale(-0x6b0945LL,0x68402dLL<<28),reale(-0x5e0a9cLL,0x11f6e4cLL<<24),
+      reale(0x7950d6LL,0x1383fe8LL<<24),reale(-0x237620LL,0xf3f2c44LL<<24),
+      reale(80031LL,0xf5c3b6d4LL<<20),reale(0x17e02d3150LL,0x27e511795bd59LL),
+      // C4[12], coeff of eps^18, polynomial in n of order 11
+      reale(0x23ee97fLL,0xa65c9a4LL<<24),reale(-0xca93b9fLL,0xdf70b8LL<<24),
+      reale(0xb4077f0LL,0xe87daccLL<<24),reale(-0x238cc17LL,0x434fd6LL<<28),
+      reale(-0x2a0e0c8LL,0x8791bf4LL<<24),reale(0x56ec98LL,0x5016a08LL<<24),
+      reale(0x244a99aLL,0x1b4ad1cLL<<24),reale(-0x1763968LL,0x3a5debLL<<28),
+      reale(-350074LL,0x236ce44LL<<24),reale(0x2c4696LL,0x896c358LL<<24),
+      reale(0x1421baLL,0xf211f6cLL<<24),reale(-941374LL,0x1cbc174LL<<24),
       reale(0x17e02d3150LL,0x27e511795bd59LL),
-      // _C4x[299]
+      // C4[12], coeff of eps^17, polynomial in n of order 12
       reale(-0xf1a7e00LL,0xe9af59LL<<28),reale(0xe2a8b60LL,0x18fa14LL<<24),
       reale(-0x48c3081LL,0x27d1d78LL<<24),reale(-0x7fabce1LL,0xbe51b1cLL<<24),
       reale(0xd01125eLL,0x500766LL<<28),reale(-0x7a118f1LL,0x23126a4LL<<24),
@@ -7048,105 +7056,117 @@ namespace GeographicLib {
       reale(0x475db8LL,0xf57c73LL<<28),reale(-0x18a8f8bLL,0xe4c0934LL<<24),
       reale(0xe3954bLL,0x470c518LL<<24),reale(-0x29af16LL,0x387c63cLL<<24),
       reale(-76353LL,0x52dcee0cLL<<20),reale(0x17e02d3150LL,0x27e511795bd59LL),
-      // _C4x[300]
-      reale(0x23ee97fLL,0xa65c9a4LL<<24),reale(-0xca93b9fLL,0xdf70b8LL<<24),
-      reale(0xb4077f0LL,0xe87daccLL<<24),reale(-0x238cc17LL,0x434fd6LL<<28),
-      reale(-0x2a0e0c8LL,0x8791bf4LL<<24),reale(0x56ec98LL,0x5016a08LL<<24),
-      reale(0x244a99aLL,0x1b4ad1cLL<<24),reale(-0x1763968LL,0x3a5debLL<<28),
-      reale(-350074LL,0x236ce44LL<<24),reale(0x2c4696LL,0x896c358LL<<24),
-      reale(0x1421baLL,0xf211f6cLL<<24),reale(-941374LL,0x1cbc174LL<<24),
+      // C4[12], coeff of eps^16, polynomial in n of order 13
+      reale(-0x3328892LL,0x45ae872LL<<24),reale(0x7981896LL,0x1838ef8LL<<24),
+      reale(-0xd135377LL,0xe641feLL<<24),reale(0xfa08086LL,0xbb034a4LL<<24),
+      reale(-0xae1efafLL,0x3beb0aLL<<24),reale(-0x3c5d59LL,0x16b275LL<<28),
+      reale(0xa01a759LL,0x6cbd696LL<<24),reale(-0xb425220LL,0x4e67dfcLL<<24),
+      reale(0x5760a52LL,0x308a7a2LL<<24),reale(-762368LL,0x37dcfa8LL<<24),
+      reale(-0x1136a7eLL,0xe75512eLL<<24),reale(839158LL,0x28bd354LL<<24),
+      reale(0x6245dfLL,0x392b63aLL<<24),reale(-0x250e87LL,0x15bafadcLL<<20),
       reale(0x17e02d3150LL,0x27e511795bd59LL),
-      // _C4x[301]
-      reale(0x705c1e4LL,0x4a6fb88LL<<24),reale(0x1bf27f2LL,0x5362b64LL<<24),
-      reale(-0x204a06fLL,0x99d1daLL<<28),reale(-0x21258daLL,0x8ca3adcLL<<24),
-      reale(0x26b2689LL,0x5404bb8LL<<24),reale(-0x1b9e2dLL,0x7162cd4LL<<24),
-      reale(-0x6b0945LL,0x68402dLL<<28),reale(-0x5e0a9cLL,0x11f6e4cLL<<24),
-      reale(0x7950d6LL,0x1383fe8LL<<24),reale(-0x237620LL,0xf3f2c44LL<<24),
-      reale(80031LL,0xf5c3b6d4LL<<20),reale(0x17e02d3150LL,0x27e511795bd59LL),
-      // _C4x[302]
-      reale(0x32da72LL,0xaace967LL<<24),reale(-0x33bb725LL,0x59030b8LL<<24),
-      reale(0x11933eeLL,0x20bc689LL<<24),reale(0xbb9523LL,0xca47e4aLL<<24),
-      reale(0x3d6a61LL,0x4b092ebLL<<24),reale(-0xddaf0fLL,0xfb2ea5cLL<<24),
-      reale(0x426269LL,0x233d90dLL<<24),reale(0x1317c7LL,0xb02256eLL<<24),
-      reale(191236LL,0x4d0b6fLL<<24),reale(-439125LL,0x1391d242LL<<20),
+      // C4[12], coeff of eps^15, polynomial in n of order 14
+      reale(-0x1b42ceLL,0x97fa1e8LL<<24),reale(0x88697eLL,0x5071c6cLL<<24),
+      reale(-0x1e6dfd8LL,0xa1c9c1LL<<28),reale(0x50509b8LL,0x12dc734LL<<24),
+      reale(-0x9e9ff75LL,0xa94b438LL<<24),reale(0xe77683bLL,0x21cf57cLL<<24),
+      reale(-0xeb7f87dLL,0x151256LL<<28),reale(0x852eb3aLL,0xbef7244LL<<24),
+      reale(0x1c20a31LL,0x933aa88LL<<24),reale(-0x8d28625LL,0xb8d488cLL<<24),
+      reale(0x9029bbcLL,622571LL<<28),reale(-0x4e16fa2LL,0x2c54354LL<<24),
+      reale(0x14e39e1LL,0x7555cd8LL<<24),reale(-792997LL,0xc866d9cLL<<24),
+      reale(-644310LL,0x92d390ecLL<<20),
       reale(0x17e02d3150LL,0x27e511795bd59LL),
-      // _C4x[303]
-      reale(-0x54decfLL,0xfb5258LL<<28),reale(0x762145LL,0x443871LL<<28),
-      reale(0x1097e20LL,0xbba962LL<<28),reale(-0xa62ed3LL,0x5c0bc3LL<<28),
-      reale(-0x24239fLL,0xe4c42cLL<<28),reale(-891563LL,0x747035LL<<28),
-      reale(0x3fd622LL,786806LL<<28),reale(-0x1a6626LL,0xa35887LL<<28),
-      reale(120797LL,0x11dfcd3LL<<24),reale(0x17e02d3150LL,0x27e511795bd59LL),
-      // _C4x[304]
-      reale(0x13eb197LL,0x4b5b07LL<<28),reale(-0x10e777LL,0xda51a6LL<<28),
-      reale(-0x242b4aLL,0xc67305LL<<28),reale(-0x641eacLL,0xd9e1c4LL<<28),
-      reale(0x414e2bLL,0xa4c103LL<<28),reale(210660LL,0x72cde2LL<<28),
-      reale(-68725LL,0xe0f901LL<<28),reale(-224556LL,0xdcd37eLL<<28),
+      // C4[12], coeff of eps^14, polynomial in n of order 15
+      reale(-6505LL,0x92293b4LL<<24),reale(93075LL,0xfdd7228LL<<24),
+      reale(-752119LL,0xe75899cLL<<24),reale(0x3df976LL,0xb48d79LL<<28),
+      reale(-0xf1b6e6LL,0x79bef84LL<<24),reale(0x2c5451aLL,0x92c8cf8LL<<24),
+      reale(-0x63dbf25LL,0xce4256cLL<<24),reale(0xad6f8a8LL,0xeee7a6LL<<28),
+      reale(-0xe508b0cLL,0x7602b54LL<<24),reale(0xdb5669eLL,0x4c947c8LL<<24),
+      reale(-0x8283b03LL,0x587e13cLL<<24),reale(0x98726bLL,0x26e9d3LL<<28),
+      reale(0x4711694LL,0x15b4724LL<<24),reale(-0x5029e00LL,0xfa96298LL<<24),
+      reale(0x2c9e8d8LL,0xd04bd0cLL<<24),reale(-0xae0e62LL,0x6a163c4LL<<24),
       reale(0x17e02d3150LL,0x27e511795bd59LL),
-      // _C4x[305]
-      reale(0x130e05LL,0x8aa00aLL<<28),reale(-0x2c180eLL,0x6a42ffLL<<28),
-      reale(234885LL,0xbf619cLL<<28),reale(66922LL,0x973059LL<<28),
-      reale(755418LL,0x1367aeLL<<28),reale(-419246LL,0x369313LL<<28),
-      reale(41213LL,0xb7cf7a7LL<<24),reale(0x7f56465c5LL,0x62a1b07dc9473LL),
-      // _C4x[306]
-      reale(-0x1868abLL,0xedbb168LL<<24),reale(-0x28c2d7LL,0x63a582LL<<28),
-      reale(0x31b08cLL,0x7cf2cd8LL<<24),reale(-261262LL,0xc33c21LL<<28),
-      reale(-106563LL,0xf6cfe48LL<<24),reale(-120794LL,0xff048abLL<<24),
+      // C4[12], coeff of eps^13, polynomial in n of order 16
+      real(0x3ede9cLL<<28),real(0xc5bfb074LL<<24),real(-0x251c8220f8LL<<24),
+      reale(9050LL,0x293775cLL<<24),reale(-78489LL,0x725735LL<<28),
+      reale(459151LL,0x559e0c4LL<<24),reale(-0x1df2ddLL,0x76c7d98LL<<24),
+      reale(0x61c892LL,0x1dd53acLL<<24),reale(-0xfa2ba9LL,0xce5d4eLL<<28),
+      reale(0x1fc4a99LL,0x878f714LL<<24),reale(-0x33727e6LL,0xca2d028LL<<24),
+      reale(0x41fef20LL,0xea431fcLL<<24),reale(-0x41d0a88LL,0xc66c67LL<<28),
+      reale(0x31282b2LL,0x1de2b64LL<<24),reale(-0x19b67d0LL,0x9da8eb8LL<<24),
+      reale(0x851a0eLL,0x6394a4cLL<<24),reale(-0x13d659LL,0xb39ec4fcLL<<20),
+      reale(0x7f56465c5LL,0x62a1b07dc9473LL),
+      // C4[12], coeff of eps^12, polynomial in n of order 17
+      real(127075LL<<24),real(91195LL<<28),real(0x19a7ffdLL<<24),
+      real(0x554e98faLL<<24),real(-0x1104c06029LL<<24),
+      reale(4440LL,0x88ff8c4LL<<24),reale(-41520LL,0xff11071LL<<24),
+      reale(264211LL,0xd76518eLL<<24),reale(-0x12f2c4LL,0x5871a4bLL<<24),
+      reale(0x44e724LL,0x8fd71d8LL<<24),reale(-0xc76bc0LL,0x713de5LL<<24),
+      reale(0x1d336f4LL,0xf6bb822LL<<24),reale(-0x37d345cLL,0x284e3bfLL<<24),
+      reale(0x56f84c4LL,0xf9cc2ecLL<<24),reale(-0x6cb65f7LL,0xc7c0c59LL<<24),
+      reale(0x67fc5b3LL,0xdcc20b6LL<<24),reale(-0x40789f0LL,0x7c40033LL<<24),
+      reale(0x11fa400LL,0x5381d7baLL<<20),
       reale(0x17e02d3150LL,0x27e511795bd59LL),
-      // _C4x[307]
-      reale(590308LL,0x2dd66cLL<<28),reale(77521LL,0xf4de25LL<<28),
-      reale(426657LL,250006LL<<28),reale(-306167LL,0xaff9d7LL<<28),
-      reale(37995LL,0xc577dbbLL<<24),reale(0x7f56465c5LL,0x62a1b07dc9473LL),
-      // _C4x[308]
-      real(0x1e06447abLL<<28),real(-0x5a3f19aeLL<<28),real(-0x128cc8c7LL<<28),
-      real(-0xddf8d6LL<<32),reale(0x1462fc6LL,0x1d2a1f8b6ccdLL),
-      // _C4x[309]
-      real(0x3aca642LL<<28),real(-0x34bd5bbLL<<28),real(0x7d57dc9LL<<24),
-      reale(497138LL,0xbe8dd4238d2e7LL),
-      // _C4x[310]
-      real(-0x9a681aLL<<24),real(-0x5ab210cLL<<20),
-      reale(61953LL,0x75e619a89ce07LL),
-      // _C4x[311]
-      real(16904LL<<20),real(0x495846bc80a035LL),
-      // _C4x[312]
-      real(-376740LL<<28),real(-0x148bf72cLL<<24),real(0x46b70c488LL<<24),
-      real(-0x4df9d7d484LL<<24),reale(12668LL,0x17bd05LL<<28),
-      reale(-87923LL,0x676f5a4LL<<24),reale(452934LL,0x95d1e18LL<<24),
-      reale(-0x1bb530LL,0x1269c4cLL<<24),reale(0x590b33LL,0x300a2eLL<<28),
-      reale(-0xe9bd67LL,0xa1e5474LL<<24),reale(0x1fac381LL,0x6f853a8LL<<24),
-      reale(-0x38f491dLL,0x980531cLL<<24),reale(0x549e8f7LL,57943LL<<28),
-      reale(-0x661859aLL,0xae3cd44LL<<24),reale(0x5f49ed3LL,0x5d60d38LL<<24),
-      reale(-0x3a3b665LL,0x46ef7ecLL<<24),reale(0x101e27bLL,0xe0efff34LL<<20),
-      reale(0x19c926916bLL,0xc5dcb3125bdbLL),
-      // _C4x[313]
-      real(0x1f1c0d201LL<<28),reale(-8242LL,0xb3d4f6LL<<28),
-      reale(78008LL,0xc812b3LL<<28),reale(-500801LL,596156LL<<28),
-      reale(0x24145dLL,0x8fcc95LL<<28),reale(-0x8320efLL,0x6e53c2LL<<28),
-      reale(0x17908cbLL,0xae3bc7LL<<28),reale(-0x3677df5LL,242216LL<<28),
-      reale(0x65f9884LL,0x4a9c69LL<<28),reale(-0x9a9a6e4LL,0x66600eLL<<28),
-      reale(0xbc219a2LL,0x832a9bLL<<28),reale(-0xb3fe38dLL,493972LL<<28),
-      reale(0x823d817LL,0xff227dLL<<28),reale(-0x428d074LL,0xe35adaLL<<28),
-      reale(0x152cdf6LL,0x14c02fLL<<28),reale(-0x31e9c6LL,0x9aa84238LL<<20),
+      // C4[13], coeff of eps^29, polynomial in n of order 0
+      real(-0x4d6b58LL<<20),reale(3193LL,0x402148867236bLL),
+      // C4[13], coeff of eps^28, polynomial in n of order 1
+      real(-400561LL<<32),real(0xd44948LL<<24),
+      reale(66909LL,0xbcc54ee94d445LL),
+      // C4[13], coeff of eps^27, polynomial in n of order 2
+      real(-0x2f9823232LL<<28),real(-0xce4e6c05LL<<28),
+      real(-0xb74eeaa93LL<<24),reale(0x110ea712LL,0xcc6f5fc7e64c9LL),
+      // C4[13], coeff of eps^26, polynomial in n of order 3
+      real(0x6cba35ba4LL<<28),reale(10661LL,0xb5adc8LL<<28),
+      reale(-6837LL,0x66f24cLL<<28),real(0x301270d076LL<<24),
+      reale(0x35aafaf0LL,0x384bb07b32421LL),
+      // C4[13], coeff of eps^25, polynomial in n of order 4
+      reale(-0xfb9cbLL,0xa87544LL<<28),reale(976249LL,0x602e67LL<<28),
+      reale(-29215LL,0x22f602LL<<28),reale(-27194LL,0xbd75edLL<<28),
+      reale(-41364LL,0x5dde85bLL<<24),reale(0x898623079LL,0x41f43bb0c949LL),
+      // C4[13], coeff of eps^24, polynomial in n of order 5
+      reale(-0x27a2ffLL,0xf293a8LL<<28),reale(-46367LL,872446LL<<32),
+      real(0x18e85e598LL<<28),reale(754229LL,667751LL<<32),
+      reale(-376196LL,0x85e408LL<<28),reale(33027LL,0xeffa33cLL<<24),
+      reale(0x898623079LL,0x41f43bb0c949LL),
+      // C4[13], coeff of eps^23, polynomial in n of order 6
+      reale(0x1d1c37LL,0xe5435aLL<<28),reale(-0x142e2cLL,0x65e4cfLL<<28),
+      reale(-0x691fb5LL,0x5612fcLL<<28),reale(0x366a97LL,0xb81689LL<<28),
+      reale(392016LL,0x32e81eLL<<28),reale(-16025LL,0x6c5463LL<<28),
+      reale(-223531LL,0xd348095LL<<24),reale(0x19c926916bLL,0xc5dcb3125bdbLL),
+      // C4[13], coeff of eps^22, polynomial in n of order 7
+      reale(0x2a3fb3LL,0x5da06cLL<<28),reale(0x11d140fLL,0x8050a8LL<<28),
+      reale(-0x7980cbLL,0x822dc4LL<<28),reale(-0x2de785LL,546991LL<<32),
+      reale(-0x15a8e5LL,0xe6db5cLL<<28),reale(0x3d8d4bLL,0x939238LL<<28),
+      reale(-0x171002LL,0xfa02b4LL<<28),reale(90538LL,0xdce22caLL<<24),
       reale(0x19c926916bLL,0xc5dcb3125bdbLL),
-      // _C4x[314]
-      reale(268265LL,0x6119c38LL<<24),reale(-0x18669bLL,0xbe43aa4LL<<24),
-      reale(0x69edfcLL,0x4a8473LL<<28),reale(-0x15da4fcLL,0xb1d233cLL<<24),
-      reale(0x38272ddLL,0x3d1f028LL<<24),reale(-0x71792d8LL,0xe18ff54LL<<24),
-      reale(0xb3db205LL,0x7bbc22LL<<28),reale(-0xdb1e472LL,0x795b9ecLL<<24),
-      reale(0xc1bcdb4LL,0xeece818LL<<24),reale(-0x66690f6LL,0x3363e04LL<<24),
-      reale(-0x65f027LL,0xdb48d1LL<<28),reale(0x47cb5dcLL,0x208769cLL<<24),
-      reale(-0x4a081fcLL,0x97dc08LL<<24),reale(0x2814effLL,0x82b4eb4LL<<24),
-      reale(-0x9b0889LL,0xf7a5c5ecLL<<20),
+      // C4[13], coeff of eps^21, polynomial in n of order 8
+      reale(-0x30f441dLL,0xe5dcc8LL<<28),reale(0x73a875LL,0x301eb3LL<<28),
+      reale(0xbe5c31LL,0x328736LL<<28),reale(0x6ae3f9LL,0x5033a9LL<<28),
+      reale(-0xd0bcdaLL,0xf8b964LL<<28),reale(0x2e08cdLL,0x4521bfLL<<28),
+      reale(0x143398LL,0x3dc612LL<<28),reale(284896LL,0x69abb5LL<<28),
+      reale(-424637LL,0x7bbed23LL<<24),reale(0x19c926916bLL,0xc5dcb3125bdbLL),
+      // C4[13], coeff of eps^20, polynomial in n of order 9
+      reale(0x2d0fd17LL,14679LL<<32),reale(-0x119e016LL,547976LL<<32),
+      reale(-0x287e1b8LL,154713LL<<32),reale(0x1fc3b91LL,213302LL<<32),
+      reale(0x2eb440LL,842635LL<<32),reale(-0x598815LL,637892LL<<32),
+      reale(-0x69ec2eLL,199245LL<<32),reale(0x6fc4acLL,847762LL<<32),
+      reale(-0x1dcd86LL,277503LL<<32),reale(46148LL,0xd99f1c8LL<<24),
       reale(0x19c926916bLL,0xc5dcb3125bdbLL),
-      // _C4x[315]
-      reale(0xe71866LL,0x5f0d1eLL<<28),reale(-0x2b5de68LL,0xf74378LL<<28),
-      reale(0x6373082LL,0x7b6232LL<<28),reale(-0xae3a66bLL,0x3d3344LL<<28),
-      reale(0xe3c0167LL,0x8350a6LL<<28),reale(-0xcd733a9LL,361797LL<<32),
-      reale(0x5b368faLL,0x7f483aLL<<28),reale(0x37cac0cLL,0x35365cLL<<28),
-      reale(-0x8e1b223LL,0x43b8aeLL<<28),reale(0x81a19c1LL,0x886928LL<<28),
-      reale(-0x4197ae1LL,0xf911c2LL<<28),reale(0x1039cd4LL,0xe47c74LL<<28),
-      reale(-171459LL,0x5bc336LL<<28),reale(-594748LL,0xd64d235LL<<24),
+      // C4[13], coeff of eps^19, polynomial in n of order 10
+      reale(-0xd0cfcabLL,0x2be4e58LL<<24),reale(0x8a3b875LL,0x8b11e6cLL<<24),
+      reale(-0x2602eeLL,0xfc0ffeLL<<28),reale(-0x29b84eeLL,0x33a9454LL<<24),
+      reale(-0x529e72LL,0x33fd68LL<<24),reale(0x24b1568LL,0x965ecbcLL<<24),
+      reale(-0x12be25fLL,0xc8233fLL<<28),reale(-0x1f0063LL,0xe0954a4LL<<24),
+      reale(0x266a40LL,0xed09078LL<<24),reale(0x15ded3LL,0x1f1f90cLL<<24),
+      reale(-884986LL,0x26990b14LL<<20),reale(0x19c926916bLL,0xc5dcb3125bdbLL),
+      // C4[13], coeff of eps^18, polynomial in n of order 11
+      reale(0xb221aadLL,0xa08cddLL<<28),reale(-0x6bd20aLL,0x43a712LL<<28),
+      reale(-0xa0e4bdeLL,0xfd91dfLL<<28),reale(0xbe849c5LL,0xf3dc68LL<<28),
+      reale(-0x56c8e4fLL,0xa78dd1LL<<28),reale(-0xfa0633LL,0x952d3eLL<<28),
+      reale(0x1b823cdLL,0x1249d3LL<<28),reale(0x9152c8LL,0xf3d2b4LL<<28),
+      reale(-0x17c45a9LL,0x928f05LL<<28),reale(0xc528a5LL,0x3f05eaLL<<28),
+      reale(-0x209d63LL,0x542687LL<<28),reale(-100774LL,0xd5026cf8LL<<20),
       reale(0x19c926916bLL,0xc5dcb3125bdbLL),
-      // _C4x[316]
+      // C4[13], coeff of eps^17, polynomial in n of order 12
       reale(0x91ed1dbLL,0x9d0afbLL<<28),reale(-0xdb1a910LL,0x98d5fdcLL<<24),
       reale(0xe2547e2LL,0x6ca25e8LL<<24),reale(-0x79fc232LL,0xdca4434LL<<24),
       reale(-0x3238c29LL,0xaa31d2LL<<28),reale(0xaa2ec45LL,0xb75a30cLL<<24),
@@ -7155,96 +7175,106 @@ namespace GeographicLib {
       reale(-550003LL,0x59a06c8LL<<24),reale(0x5f512bLL,0xee61c94LL<<24),
       reale(-0x21de42LL,0x4de5110cLL<<20),
       reale(0x19c926916bLL,0xc5dcb3125bdbLL),
-      // _C4x[317]
-      reale(0xb221aadLL,0xa08cddLL<<28),reale(-0x6bd20aLL,0x43a712LL<<28),
-      reale(-0xa0e4bdeLL,0xfd91dfLL<<28),reale(0xbe849c5LL,0xf3dc68LL<<28),
-      reale(-0x56c8e4fLL,0xa78dd1LL<<28),reale(-0xfa0633LL,0x952d3eLL<<28),
-      reale(0x1b823cdLL,0x1249d3LL<<28),reale(0x9152c8LL,0xf3d2b4LL<<28),
-      reale(-0x17c45a9LL,0x928f05LL<<28),reale(0xc528a5LL,0x3f05eaLL<<28),
-      reale(-0x209d63LL,0x542687LL<<28),reale(-100774LL,0xd5026cf8LL<<20),
+      // C4[13], coeff of eps^16, polynomial in n of order 13
+      reale(0xe71866LL,0x5f0d1eLL<<28),reale(-0x2b5de68LL,0xf74378LL<<28),
+      reale(0x6373082LL,0x7b6232LL<<28),reale(-0xae3a66bLL,0x3d3344LL<<28),
+      reale(0xe3c0167LL,0x8350a6LL<<28),reale(-0xcd733a9LL,361797LL<<32),
+      reale(0x5b368faLL,0x7f483aLL<<28),reale(0x37cac0cLL,0x35365cLL<<28),
+      reale(-0x8e1b223LL,0x43b8aeLL<<28),reale(0x81a19c1LL,0x886928LL<<28),
+      reale(-0x4197ae1LL,0xf911c2LL<<28),reale(0x1039cd4LL,0xe47c74LL<<28),
+      reale(-171459LL,0x5bc336LL<<28),reale(-594748LL,0xd64d235LL<<24),
       reale(0x19c926916bLL,0xc5dcb3125bdbLL),
-      // _C4x[318]
-      reale(-0xd0cfcabLL,0x2be4e58LL<<24),reale(0x8a3b875LL,0x8b11e6cLL<<24),
-      reale(-0x2602eeLL,0xfc0ffeLL<<28),reale(-0x29b84eeLL,0x33a9454LL<<24),
-      reale(-0x529e72LL,0x33fd68LL<<24),reale(0x24b1568LL,0x965ecbcLL<<24),
-      reale(-0x12be25fLL,0xc8233fLL<<28),reale(-0x1f0063LL,0xe0954a4LL<<24),
-      reale(0x266a40LL,0xed09078LL<<24),reale(0x15ded3LL,0x1f1f90cLL<<24),
-      reale(-884986LL,0x26990b14LL<<20),reale(0x19c926916bLL,0xc5dcb3125bdbLL),
-      // _C4x[319]
-      reale(0x2d0fd17LL,14679LL<<32),reale(-0x119e016LL,547976LL<<32),
-      reale(-0x287e1b8LL,154713LL<<32),reale(0x1fc3b91LL,213302LL<<32),
-      reale(0x2eb440LL,842635LL<<32),reale(-0x598815LL,637892LL<<32),
-      reale(-0x69ec2eLL,199245LL<<32),reale(0x6fc4acLL,847762LL<<32),
-      reale(-0x1dcd86LL,277503LL<<32),reale(46148LL,0xd99f1c8LL<<24),
+      // C4[13], coeff of eps^15, polynomial in n of order 14
+      reale(268265LL,0x6119c38LL<<24),reale(-0x18669bLL,0xbe43aa4LL<<24),
+      reale(0x69edfcLL,0x4a8473LL<<28),reale(-0x15da4fcLL,0xb1d233cLL<<24),
+      reale(0x38272ddLL,0x3d1f028LL<<24),reale(-0x71792d8LL,0xe18ff54LL<<24),
+      reale(0xb3db205LL,0x7bbc22LL<<28),reale(-0xdb1e472LL,0x795b9ecLL<<24),
+      reale(0xc1bcdb4LL,0xeece818LL<<24),reale(-0x66690f6LL,0x3363e04LL<<24),
+      reale(-0x65f027LL,0xdb48d1LL<<28),reale(0x47cb5dcLL,0x208769cLL<<24),
+      reale(-0x4a081fcLL,0x97dc08LL<<24),reale(0x2814effLL,0x82b4eb4LL<<24),
+      reale(-0x9b0889LL,0xf7a5c5ecLL<<20),
       reale(0x19c926916bLL,0xc5dcb3125bdbLL),
-      // _C4x[320]
-      reale(-0x30f441dLL,0xe5dcc8LL<<28),reale(0x73a875LL,0x301eb3LL<<28),
-      reale(0xbe5c31LL,0x328736LL<<28),reale(0x6ae3f9LL,0x5033a9LL<<28),
-      reale(-0xd0bcdaLL,0xf8b964LL<<28),reale(0x2e08cdLL,0x4521bfLL<<28),
-      reale(0x143398LL,0x3dc612LL<<28),reale(284896LL,0x69abb5LL<<28),
-      reale(-424637LL,0x7bbed23LL<<24),reale(0x19c926916bLL,0xc5dcb3125bdbLL),
-      // _C4x[321]
-      reale(0x2a3fb3LL,0x5da06cLL<<28),reale(0x11d140fLL,0x8050a8LL<<28),
-      reale(-0x7980cbLL,0x822dc4LL<<28),reale(-0x2de785LL,546991LL<<32),
-      reale(-0x15a8e5LL,0xe6db5cLL<<28),reale(0x3d8d4bLL,0x939238LL<<28),
-      reale(-0x171002LL,0xfa02b4LL<<28),reale(90538LL,0xdce22caLL<<24),
+      // C4[13], coeff of eps^14, polynomial in n of order 15
+      real(0x1f1c0d201LL<<28),reale(-8242LL,0xb3d4f6LL<<28),
+      reale(78008LL,0xc812b3LL<<28),reale(-500801LL,596156LL<<28),
+      reale(0x24145dLL,0x8fcc95LL<<28),reale(-0x8320efLL,0x6e53c2LL<<28),
+      reale(0x17908cbLL,0xae3bc7LL<<28),reale(-0x3677df5LL,242216LL<<28),
+      reale(0x65f9884LL,0x4a9c69LL<<28),reale(-0x9a9a6e4LL,0x66600eLL<<28),
+      reale(0xbc219a2LL,0x832a9bLL<<28),reale(-0xb3fe38dLL,493972LL<<28),
+      reale(0x823d817LL,0xff227dLL<<28),reale(-0x428d074LL,0xe35adaLL<<28),
+      reale(0x152cdf6LL,0x14c02fLL<<28),reale(-0x31e9c6LL,0x9aa84238LL<<20),
       reale(0x19c926916bLL,0xc5dcb3125bdbLL),
-      // _C4x[322]
-      reale(0x1d1c37LL,0xe5435aLL<<28),reale(-0x142e2cLL,0x65e4cfLL<<28),
-      reale(-0x691fb5LL,0x5612fcLL<<28),reale(0x366a97LL,0xb81689LL<<28),
-      reale(392016LL,0x32e81eLL<<28),reale(-16025LL,0x6c5463LL<<28),
-      reale(-223531LL,0xd348095LL<<24),reale(0x19c926916bLL,0xc5dcb3125bdbLL),
-      // _C4x[323]
-      reale(-0x27a2ffLL,0xf293a8LL<<28),reale(-46367LL,872446LL<<32),
-      real(0x18e85e598LL<<28),reale(754229LL,667751LL<<32),
-      reale(-376196LL,0x85e408LL<<28),reale(33027LL,0xeffa33cLL<<24),
-      reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[324]
-      reale(-0xfb9cbLL,0xa87544LL<<28),reale(976249LL,0x602e67LL<<28),
-      reale(-29215LL,0x22f602LL<<28),reale(-27194LL,0xbd75edLL<<28),
-      reale(-41364LL,0x5dde85bLL<<24),reale(0x898623079LL,0x41f43bb0c949LL),
-      // _C4x[325]
-      real(0x6cba35ba4LL<<28),reale(10661LL,0xb5adc8LL<<28),
-      reale(-6837LL,0x66f24cLL<<28),real(0x301270d076LL<<24),
-      reale(0x35aafaf0LL,0x384bb07b32421LL),
-      // _C4x[326]
-      real(-0x2f9823232LL<<28),real(-0xce4e6c05LL<<28),
-      real(-0xb74eeaa93LL<<24),reale(0x110ea712LL,0xcc6f5fc7e64c9LL),
-      // _C4x[327]
-      real(-400561LL<<32),real(0xd44948LL<<24),
-      reale(66909LL,0xbcc54ee94d445LL),
-      // _C4x[328]
-      real(-0x4d6b58LL<<20),reale(3193LL,0x402148867236bLL),
-      // _C4x[329]
-      real(-0x1250b2e28LL<<24),real(0x15b951553LL<<28),
-      reale(-3809LL,0x7d8f088LL<<24),reale(28626LL,0x9961feLL<<28),
-      reale(-160362LL,0x853f38LL<<24),reale(702411LL,0xec72a9LL<<28),
-      reale(-0x25d7b7LL,0x97bdde8LL<<24),reale(0x6de23fLL,0x2af154LL<<28),
-      reale(-0x109d261LL,0xa90ec98LL<<24),reale(0x21ba361LL,0x6947ffLL<<28),
-      reale(-0x398cfadLL,0xafe8b48LL<<24),reale(0x5212828LL,0xeee0aaLL<<28),
-      reale(-0x60064c0LL,0xbf8d9f8LL<<24),reale(0x57b9e69LL,0x316555LL<<28),
-      reale(-0x34f02e8LL,0xcc1f8a8LL<<24),reale(0xe8ed99LL,0x2e44205LL<<24),
+      // C4[13], coeff of eps^13, polynomial in n of order 16
+      real(-376740LL<<28),real(-0x148bf72cLL<<24),real(0x46b70c488LL<<24),
+      real(-0x4df9d7d484LL<<24),reale(12668LL,0x17bd05LL<<28),
+      reale(-87923LL,0x676f5a4LL<<24),reale(452934LL,0x95d1e18LL<<24),
+      reale(-0x1bb530LL,0x1269c4cLL<<24),reale(0x590b33LL,0x300a2eLL<<28),
+      reale(-0xe9bd67LL,0xa1e5474LL<<24),reale(0x1fac381LL,0x6f853a8LL<<24),
+      reale(-0x38f491dLL,0x980531cLL<<24),reale(0x549e8f7LL,57943LL<<28),
+      reale(-0x661859aLL,0xae3cd44LL<<24),reale(0x5f49ed3LL,0x5d60d38LL<<24),
+      reale(-0x3a3b665LL,0x46ef7ecLL<<24),reale(0x101e27bLL,0xe0efff34LL<<20),
+      reale(0x19c926916bLL,0xc5dcb3125bdbLL),
+      // C4[14], coeff of eps^29, polynomial in n of order 0
+      real(41LL<<28),real(0x3fbc634a12a6b1LL),
+      // C4[14], coeff of eps^28, polynomial in n of order 1
+      real(-0x34b26a8LL<<28),real(-0x391d0abLL<<28),
+      reale(0x579206LL,0x909af11944e4bLL),
+      // C4[14], coeff of eps^27, polynomial in n of order 2
+      reale(3432LL,999202LL<<32),real(-0x7c2b19efLL<<32),
+      real(0xcb0c2aebLL<<28),reale(0x12521bbeLL,0xdb94118adae9fLL),
+      // C4[14], coeff of eps^26, polynomial in n of order 3
+      reale(287986LL,0x83a7b2LL<<28),reale(5344LL,0xddeeccLL<<28),
+      reale(-6206LL,0xa74be6LL<<28),reale(-13965LL,0xd07054cLL<<24),
+      reale(0x313caa90eLL,0xe1def252c54b5LL),
+      // C4[14], coeff of eps^25, polynomial in n of order 4
+      reale(-258062LL,17386LL<<32),reale(-74791LL,0x35a5f8LL<<28),
+      reale(745027LL,493173LL<<32),reale(-337383LL,0xf5a4a8LL<<28),
+      reale(26418LL,0x26e81f8LL<<24),reale(0x93b5ffb2cLL,0xa59cd6f84fe1fLL),
+      // C4[14], coeff of eps^24, polynomial in n of order 5
+      reale(-100053LL,0x43e1acLL<<28),reale(-0x6aae1bLL,620271LL<<32),
+      reale(0x2c4b57LL,0xd8a434LL<<28),reale(514674LL,0xa13f78LL<<28),
+      reale(32543LL,0xf86ebcLL<<28),reale(-220558LL,0xee833c8LL<<24),
       reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
-      // _C4x[330]
-      reale(-25314LL,0xe334b4LL<<28),reale(176943LL,0x89989eLL<<28),
-      reale(-914489LL,0x4ae808LL<<28),reale(0x37dcdfLL,0xf54972LL<<28),
-      reale(-0xb24506LL,0x24235cLL<<28),reale(0x1cda16dLL,0xde0c46LL<<28),
-      reale(-0x3d3da1bLL,323499LL<<32),reale(0x6af05e8LL,0x3df51aLL<<28),
-      reale(-0x992eda1LL,0x958204LL<<28),reale(0xb210586LL,0x4217eeLL<<28),
-      reale(-0xa44e042LL,642392LL<<28),reale(0x73a1795LL,0xd488c2LL<<28),
-      reale(-0x39e2728LL,0xe3f0acLL<<28),reale(0x1226765LL,0x365b96LL<<28),
-      reale(-0x2a59bfLL,0x3d67fa2LL<<24),
+      // C4[14], coeff of eps^23, polynomial in n of order 6
+      reale(0x5f5ca1LL,975799LL<<32),reale(-0x1ab5f6LL,0x630288LL<<28),
+      reale(-0x10a466LL,630138LL<<32),reale(-631633LL,0x2404b8LL<<28),
+      reale(0x139d0bLL,761149LL<<32),reale(-440348LL,610024LL<<28),
+      reale(22303LL,0x70a13b8LL<<24),reale(0x93b5ffb2cLL,0xa59cd6f84fe1fLL),
+      // C4[14], coeff of eps^22, polynomial in n of order 7
+      reale(-0x11a1b4LL,0x1f2892LL<<28),reale(0xa93ae1LL,0xc92734LL<<28),
+      reale(0x8faea8LL,0x77afd6LL<<28),reale(-0xbfaf4dLL,0x3af778LL<<28),
+      reale(0x1d134cLL,0xf3db1aLL<<28),reale(0x14346eLL,0x8257bcLL<<28),
+      reale(362851LL,0xbe025eLL<<28),reale(-408796LL,0x50d01bcLL<<24),
+      reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
+      // C4[14], coeff of eps^21, polynomial in n of order 8
+      reale(-0x2701e9LL,380968LL<<32),reale(-0x2bcc036LL,420131LL<<32),
+      reale(0x1887ec6LL,152606LL<<32),reale(0x6212afLL,738073LL<<32),
+      reale(-0x4410d3LL,731156LL<<32),reale(-0x720d87LL,206095LL<<32),
+      reale(0x6672e6LL,842762LL<<32),reale(-0x1915bdLL,212741LL<<32),
+      reale(21175LL,0x2b1d47LL<<28),reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
+      // C4[14], coeff of eps^20, polynomial in n of order 9
+      reale(0x61143caLL,0x942d58LL<<28),reale(0x1464c3cLL,213324LL<<32),
+      reale(-0x2485570LL,0x9c9c28LL<<28),reale(-0xdfcb44LL,651257LL<<32),
+      reale(0x238e73aLL,0xaa5af8LL<<28),reale(-0xe92526LL,796838LL<<32),
+      reale(-0x306fbbLL,0xcb09c8LL<<28),reale(0x204896LL,458067LL<<32),
+      reale(0x170af0LL,0xc64898LL<<28),reale(-831540LL,0x601d2dLL<<28),
       reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
-      // _C4x[331]
-      reale(-0x2c674bLL,0x16441bLL<<28),reale(0xa2d3b4LL,677972LL<<28),
-      reale(-0x1d5cb43LL,0xce7a8dLL<<28),reale(0x439464eLL,523846LL<<28),
-      reale(-0x7c884c5LL,0xf092ffLL<<28),reale(0xb655336LL,0x4e7038LL<<28),
-      reale(-0xcebd87fLL,0x380171LL<<28),reale(0xa996f57LL,0xeb522aLL<<28),
-      reale(-0x4ebf5d3LL,0x9b79e3LL<<28),reale(-0x124cae3LL,0x66481cLL<<28),
-      reale(0x4731b81LL,0xaa7055LL<<28),reale(-0x4470075LL,0xf2760eLL<<28),
-      reale(0x2437fe9LL,0x1a98c7LL<<28),reale(-0x8b26e1LL,0x809ec82LL<<24),
+      // C4[14], coeff of eps^19, polynomial in n of order 10
+      reale(0x2ff72acLL,939162LL<<32),reale(-0xb18f798LL,517169LL<<32),
+      reale(0xa69ea51LL,333128LL<<32),reale(-0x38a8f23LL,0xff25fLL<<32),
+      reale(-0x197d6c0LL,460278LL<<32),reale(0x16af76eLL,31373LL<<32),
+      reale(0xca5fc8LL,219812LL<<32),reale(-0x1692bddLL,528571LL<<32),
+      reale(0xaac14bLL,345938LL<<32),reale(-0x197e89LL,805097LL<<32),
+      reale(-115325LL,0x910d63LL<<28),reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
+      // C4[14], coeff of eps^18, polynomial in n of order 11
+      reale(-0xdb1bc1dLL,0x36339f8LL<<24),reale(0xc39ea0bLL,0xc34dd1LL<<28),
+      reale(-0x4951fdfLL,0xc638828LL<<24),reale(-0x5514b3eLL,0xf4d74LL<<28),
+      reale(0xab30921LL,0xef9c658LL<<24),reale(-0x89bd401LL,0x4fe517LL<<28),
+      reale(0x2e3ad13LL,0xc691488LL<<24),reale(0xc02159LL,0x6e4ebaLL<<28),
+      reale(-0xe1ccbbLL,0x37e92b8LL<<24),reale(-0x1940d4LL,787549LL<<28),
+      reale(0x5bd344LL,0x8c560e8LL<<24),reale(-0x1f0fccLL,0xcab0bcdLL<<24),
       reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
-      // _C4x[332]
+      // C4[14], coeff of eps^17, polynomial in n of order 12
       reale(-0x393952cLL,0xccc688LL<<28),reale(0x7498abeLL,0x1b2a12LL<<28),
       reale(-0xb812d9bLL,0x62221cLL<<28),reale(0xd9c1565LL,0xd2f126LL<<28),
       reale(-0xae36ab3LL,938907LL<<32),reale(0x36edad6LL,0x562e3aLL<<28),
@@ -7252,103 +7282,81 @@ namespace GeographicLib {
       reale(0x740878dLL,0xce6cd8LL<<28),reale(-0x373e3ddLL,0xd9da62LL<<28),
       reale(0xca1aabLL,0xa3706cLL<<28),reale(250593LL,0x663176LL<<28),
       reale(-546525LL,0x947e3c2LL<<24),reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
-      // _C4x[333]
-      reale(-0xdb1bc1dLL,0x36339f8LL<<24),reale(0xc39ea0bLL,0xc34dd1LL<<28),
-      reale(-0x4951fdfLL,0xc638828LL<<24),reale(-0x5514b3eLL,0xf4d74LL<<28),
-      reale(0xab30921LL,0xef9c658LL<<24),reale(-0x89bd401LL,0x4fe517LL<<28),
-      reale(0x2e3ad13LL,0xc691488LL<<24),reale(0xc02159LL,0x6e4ebaLL<<28),
-      reale(-0xe1ccbbLL,0x37e92b8LL<<24),reale(-0x1940d4LL,787549LL<<28),
-      reale(0x5bd344LL,0x8c560e8LL<<24),reale(-0x1f0fccLL,0xcab0bcdLL<<24),
-      reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
-      // _C4x[334]
-      reale(0x2ff72acLL,939162LL<<32),reale(-0xb18f798LL,517169LL<<32),
-      reale(0xa69ea51LL,333128LL<<32),reale(-0x38a8f23LL,0xff25fLL<<32),
-      reale(-0x197d6c0LL,460278LL<<32),reale(0x16af76eLL,31373LL<<32),
-      reale(0xca5fc8LL,219812LL<<32),reale(-0x1692bddLL,528571LL<<32),
-      reale(0xaac14bLL,345938LL<<32),reale(-0x197e89LL,805097LL<<32),
-      reale(-115325LL,0x910d63LL<<28),reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
-      // _C4x[335]
-      reale(0x61143caLL,0x942d58LL<<28),reale(0x1464c3cLL,213324LL<<32),
-      reale(-0x2485570LL,0x9c9c28LL<<28),reale(-0xdfcb44LL,651257LL<<32),
-      reale(0x238e73aLL,0xaa5af8LL<<28),reale(-0xe92526LL,796838LL<<32),
-      reale(-0x306fbbLL,0xcb09c8LL<<28),reale(0x204896LL,458067LL<<32),
-      reale(0x170af0LL,0xc64898LL<<28),reale(-831540LL,0x601d2dLL<<28),
+      // C4[14], coeff of eps^16, polynomial in n of order 13
+      reale(-0x2c674bLL,0x16441bLL<<28),reale(0xa2d3b4LL,677972LL<<28),
+      reale(-0x1d5cb43LL,0xce7a8dLL<<28),reale(0x439464eLL,523846LL<<28),
+      reale(-0x7c884c5LL,0xf092ffLL<<28),reale(0xb655336LL,0x4e7038LL<<28),
+      reale(-0xcebd87fLL,0x380171LL<<28),reale(0xa996f57LL,0xeb522aLL<<28),
+      reale(-0x4ebf5d3LL,0x9b79e3LL<<28),reale(-0x124cae3LL,0x66481cLL<<28),
+      reale(0x4731b81LL,0xaa7055LL<<28),reale(-0x4470075LL,0xf2760eLL<<28),
+      reale(0x2437fe9LL,0x1a98c7LL<<28),reale(-0x8b26e1LL,0x809ec82LL<<24),
       reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
-      // _C4x[336]
-      reale(-0x2701e9LL,380968LL<<32),reale(-0x2bcc036LL,420131LL<<32),
-      reale(0x1887ec6LL,152606LL<<32),reale(0x6212afLL,738073LL<<32),
-      reale(-0x4410d3LL,731156LL<<32),reale(-0x720d87LL,206095LL<<32),
-      reale(0x6672e6LL,842762LL<<32),reale(-0x1915bdLL,212741LL<<32),
-      reale(21175LL,0x2b1d47LL<<28),reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
-      // _C4x[337]
-      reale(-0x11a1b4LL,0x1f2892LL<<28),reale(0xa93ae1LL,0xc92734LL<<28),
-      reale(0x8faea8LL,0x77afd6LL<<28),reale(-0xbfaf4dLL,0x3af778LL<<28),
-      reale(0x1d134cLL,0xf3db1aLL<<28),reale(0x14346eLL,0x8257bcLL<<28),
-      reale(362851LL,0xbe025eLL<<28),reale(-408796LL,0x50d01bcLL<<24),
+      // C4[14], coeff of eps^15, polynomial in n of order 14
+      reale(-25314LL,0xe334b4LL<<28),reale(176943LL,0x89989eLL<<28),
+      reale(-914489LL,0x4ae808LL<<28),reale(0x37dcdfLL,0xf54972LL<<28),
+      reale(-0xb24506LL,0x24235cLL<<28),reale(0x1cda16dLL,0xde0c46LL<<28),
+      reale(-0x3d3da1bLL,323499LL<<32),reale(0x6af05e8LL,0x3df51aLL<<28),
+      reale(-0x992eda1LL,0x958204LL<<28),reale(0xb210586LL,0x4217eeLL<<28),
+      reale(-0xa44e042LL,642392LL<<28),reale(0x73a1795LL,0xd488c2LL<<28),
+      reale(-0x39e2728LL,0xe3f0acLL<<28),reale(0x1226765LL,0x365b96LL<<28),
+      reale(-0x2a59bfLL,0x3d67fa2LL<<24),
       reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
-      // _C4x[338]
-      reale(0x5f5ca1LL,975799LL<<32),reale(-0x1ab5f6LL,0x630288LL<<28),
-      reale(-0x10a466LL,630138LL<<32),reale(-631633LL,0x2404b8LL<<28),
-      reale(0x139d0bLL,761149LL<<32),reale(-440348LL,610024LL<<28),
-      reale(22303LL,0x70a13b8LL<<24),reale(0x93b5ffb2cLL,0xa59cd6f84fe1fLL),
-      // _C4x[339]
-      reale(-100053LL,0x43e1acLL<<28),reale(-0x6aae1bLL,620271LL<<32),
-      reale(0x2c4b57LL,0xd8a434LL<<28),reale(514674LL,0xa13f78LL<<28),
-      reale(32543LL,0xf86ebcLL<<28),reale(-220558LL,0xee833c8LL<<24),
+      // C4[14], coeff of eps^14, polynomial in n of order 15
+      real(-0x1250b2e28LL<<24),real(0x15b951553LL<<28),
+      reale(-3809LL,0x7d8f088LL<<24),reale(28626LL,0x9961feLL<<28),
+      reale(-160362LL,0x853f38LL<<24),reale(702411LL,0xec72a9LL<<28),
+      reale(-0x25d7b7LL,0x97bdde8LL<<24),reale(0x6de23fLL,0x2af154LL<<28),
+      reale(-0x109d261LL,0xa90ec98LL<<24),reale(0x21ba361LL,0x6947ffLL<<28),
+      reale(-0x398cfadLL,0xafe8b48LL<<24),reale(0x5212828LL,0xeee0aaLL<<28),
+      reale(-0x60064c0LL,0xbf8d9f8LL<<24),reale(0x57b9e69LL,0x316555LL<<28),
+      reale(-0x34f02e8LL,0xcc1f8a8LL<<24),reale(0xe8ed99LL,0x2e44205LL<<24),
       reale(0x1bb21ff185LL,0xf0d684e8efa5dLL),
-      // _C4x[340]
-      reale(-258062LL,17386LL<<32),reale(-74791LL,0x35a5f8LL<<28),
-      reale(745027LL,493173LL<<32),reale(-337383LL,0xf5a4a8LL<<28),
-      reale(26418LL,0x26e81f8LL<<24),reale(0x93b5ffb2cLL,0xa59cd6f84fe1fLL),
-      // _C4x[341]
-      reale(287986LL,0x83a7b2LL<<28),reale(5344LL,0xddeeccLL<<28),
-      reale(-6206LL,0xa74be6LL<<28),reale(-13965LL,0xd07054cLL<<24),
-      reale(0x313caa90eLL,0xe1def252c54b5LL),
-      // _C4x[342]
-      reale(3432LL,999202LL<<32),real(-0x7c2b19efLL<<32),
-      real(0xcb0c2aebLL<<28),reale(0x12521bbeLL,0xdb94118adae9fLL),
-      // _C4x[343]
-      real(-0x34b26a8LL<<28),real(-0x391d0abLL<<28),
-      reale(0x579206LL,0x909af11944e4bLL),
-      // _C4x[344]
-      real(41LL<<28),real(0x3fbc634a12a6b1LL),
-      // _C4x[345]
-      real(0x46a7f53aLL<<32),reale(-9148LL,209563LL<<32),
-      reale(55355LL,963460LL<<32),reale(-262941LL,404301LL<<32),
-      reale(0xf6e6eLL,58190LL<<32),reale(-0x31125eLL,24671LL<<32),
-      reale(0x82dba5LL,283736LL<<32),reale(-0x1274a99LL,718737LL<<32),
-      reale(0x2367a33LL,910946LL<<32),reale(-0x39b9ab9LL,269987LL<<32),
-      reale(0x4f6e12fLL,375084LL<<32),reale(-0x5a76405LL,883541LL<<32),
-      reale(0x511a91eLL,220278LL<<32),reale(-0x306690eLL,105319LL<<32),
-      reale(0xd3c0b9LL,0xccf81d6LL<<24),
+      // C4[15], coeff of eps^29, polynomial in n of order 0
+      real(-204761LL<<28),reale(20426LL,0xaa7b82b97d24fLL),
+      // C4[15], coeff of eps^28, polynomial in n of order 1
+      real(-138796LL<<40),real(0x326231aLL<<28),
+      reale(0x5d9c18LL,0xac3bb24726559LL),
+      // C4[15], coeff of eps^27, polynomial in n of order 2
+      reale(16894LL,439LL<<40),reale(-3397LL,43380LL<<36),
+      reale(-13998LL,0x90b723LL<<28),reale(0x34a1f41f5LL,0x6d08ce11dbba7LL),
+      // C4[15], coeff of eps^26, polynomial in n of order 3
+      reale(-50644LL,2047LL<<36),reale(243167LL,17106LL<<36),
+      reale(-100840LL,62069LL<<36),reale(7018LL,0x217e14LL<<28),
+      reale(0x34a1f41f5LL,0x6d08ce11dbba7LL),
+      // C4[15], coeff of eps^25, polynomial in n of order 4
+      reale(-0x696616LL,44157LL<<36),reale(0x231c8fLL,795724LL<<32),
+      reale(591806LL,263784LL<<32),reale(76262LL,153156LL<<32),
+      reale(-216245LL,0x4a29a78LL<<24),reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
+      // C4[15], coeff of eps^24, polynomial in n of order 5
+      reale(-0x2bc894LL,13015LL<<36),reale(-0x31ae6aLL,30260LL<<36),
+      reale(-0x2328a1LL,31713LL<<36),reale(0x37dee4LL,56522LL<<36),
+      reale(-0x11a172LL,47323LL<<36),reale(48366LL,0xcfa39dLL<<28),
       reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
-      // _C4x[346]
-      reale(114172LL,570308LL<<32),reale(-499142LL,32417LL<<36),
-      reale(0x1ab452LL,696732LL<<32),reale(-0x4c8a22LL,130808LL<<32),
-      reale(0xb5790eLL,264884LL<<32),reale(-0x166233eLL,27350LL<<36),
-      reale(0x24cdc67LL,752524LL<<32),reale(-0x322d0b6LL,526792LL<<32),
-      reale(0x3808311LL,557220LL<<32),reale(-0x3214733LL,41611LL<<36),
-      reale(0x2263a42LL,632444LL<<32),reale(-0x10e7aeaLL,302744LL<<32),
-      reale(0x53b854LL,555412LL<<32),reale(-792997LL,0xc866d9cLL<<24),
-      reale(0x9de5dc5e0LL,0x471a6a35932f5LL),
-      // _C4x[347]
-      reale(0xe74261LL,820196LL<<32),reale(-0x254ae1fLL,91461LL<<32),
-      reale(0x4e2b86cLL,279198LL<<32),reale(-0x8501d8dLL,54663LL<<32),
-      reale(0xb5983e4LL,492696LL<<32),reale(-0xc0f0741LL,81129LL<<32),
-      reale(0x9349116LL,806802LL<<32),reale(-0x3aebfbdLL,159531LL<<32),
-      reale(-0x1b2f350LL,780620LL<<32),reale(0x45be7e6LL,0xfb80dLL<<32),
-      reale(-0x3f5d44bLL,460678LL<<32),reale(0x20e7862LL,346959LL<<32),
-      reale(-0x7dbe5bLL,0xa56536LL<<24),
+      // C4[15], coeff of eps^23, polynomial in n of order 6
+      reale(0x85956bLL,883480LL<<32),reale(0xab2f27LL,998436LL<<32),
+      reale(-0xac655eLL,34449LL<<36),reale(996220LL,779132LL<<32),
+      reale(0x137773LL,333064LL<<32),reale(426630LL,382292LL<<32),
+      reale(-392369LL,0x6af8038LL<<24),reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
+      // C4[15], coeff of eps^22, polynomial in n of order 7
+      reale(-0x2be3634LL,63929LL<<36),reale(0x11a0acaLL,62242LL<<36),
+      reale(0x8267bfLL,40923LL<<36),reale(-0x2d5adcLL,48428LL<<36),
+      reale(-0x77040fLL,16221LL<<36),reale(0x5d908bLL,18102LL<<36),
+      reale(-0x15246bLL,5247LL<<36),reale(2743LL,0xcd40fcLL<<28),
       reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
-      // _C4x[348]
-      reale(0x82fd346LL,26079LL<<36),reale(-0xbc8bfb1LL,11754LL<<36),
-      reale(0xcb41663LL,51077LL<<36),reale(-0x8f7dc15LL,40456LL<<36),
-      reale(0x184463dLL,34251LL<<36),reale(0x599bf98LL,23334LL<<36),
-      reale(-0x863675dLL,41329LL<<36),reale(0x6795265LL,25092LL<<36),
-      reale(-0x2ea83acLL,2871LL<<36),reale(0x9d6c86LL,3938LL<<36),
-      reale(535285LL,33757LL<<36),reale(-501187LL,0x339d14LL<<28),
+      // C4[15], coeff of eps^21, polynomial in n of order 8
+      reale(0x225b4b6LL,1303LL<<40),reale(-0x1cbc393LL,13350LL<<36),
+      reale(-0x14d2d95LL,3700LL<<36),reale(0x21675efLL,63346LL<<36),
+      reale(-0xaeeed7LL,19896LL<<36),reale(-0x3ba146LL,41246LL<<36),
+      reale(0x1a46eaLL,5756LL<<36),reale(0x17c59cLL,37738LL<<36),
+      reale(-781447LL,0x9ea11dLL<<28),reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
+      // C4[15], coeff of eps^20, polynomial in n of order 9
+      reale(-0xb572bceLL,1709LL<<40),reale(0x8c2fc3fLL,2454LL<<40),
+      reale(-0x2004b39LL,555LL<<40),reale(-0x1ecc80bLL,49000LL<<36),
+      reale(0x117b62cLL,2115LL<<40),reale(0xf47d0aLL,2331LL<<40),
+      reale(-0x15375bfLL,713LL<<40),reale(0x93f00aLL,33144LL<<36),
+      reale(-0x13df21LL,1425LL<<40),reale(-123236LL,0x55cd8aLL<<28),
       reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
-      // _C4x[349]
+      // C4[15], coeff of eps^19, polynomial in n of order 10
       reale(0xa139d64LL,19274LL<<36),reale(-0x1e0e28cLL,48441LL<<36),
       reale(-0x6dca60bLL,6664LL<<36),reale(0xa5ff4ecLL,58071LL<<36),
       reale(-0x752bcc7LL,25286LL<<36),reale(0x1f5b6d1LL,12981LL<<36),
@@ -7356,512 +7364,516 @@ namespace GeographicLib {
       reale(-0x267c92LL,20546LL<<36),reale(0x581034LL,18225LL<<36),
       reale(-0x1c95bbLL,0x8a4991LL<<28),
       reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
-      // _C4x[350]
-      reale(-0xb572bceLL,1709LL<<40),reale(0x8c2fc3fLL,2454LL<<40),
-      reale(-0x2004b39LL,555LL<<40),reale(-0x1ecc80bLL,49000LL<<36),
-      reale(0x117b62cLL,2115LL<<40),reale(0xf47d0aLL,2331LL<<40),
-      reale(-0x15375bfLL,713LL<<40),reale(0x93f00aLL,33144LL<<36),
-      reale(-0x13df21LL,1425LL<<40),reale(-123236LL,0x55cd8aLL<<28),
+      // C4[15], coeff of eps^18, polynomial in n of order 11
+      reale(0x82fd346LL,26079LL<<36),reale(-0xbc8bfb1LL,11754LL<<36),
+      reale(0xcb41663LL,51077LL<<36),reale(-0x8f7dc15LL,40456LL<<36),
+      reale(0x184463dLL,34251LL<<36),reale(0x599bf98LL,23334LL<<36),
+      reale(-0x863675dLL,41329LL<<36),reale(0x6795265LL,25092LL<<36),
+      reale(-0x2ea83acLL,2871LL<<36),reale(0x9d6c86LL,3938LL<<36),
+      reale(535285LL,33757LL<<36),reale(-501187LL,0x339d14LL<<28),
       reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
-      // _C4x[351]
-      reale(0x225b4b6LL,1303LL<<40),reale(-0x1cbc393LL,13350LL<<36),
-      reale(-0x14d2d95LL,3700LL<<36),reale(0x21675efLL,63346LL<<36),
-      reale(-0xaeeed7LL,19896LL<<36),reale(-0x3ba146LL,41246LL<<36),
-      reale(0x1a46eaLL,5756LL<<36),reale(0x17c59cLL,37738LL<<36),
-      reale(-781447LL,0x9ea11dLL<<28),reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
-      // _C4x[352]
-      reale(-0x2be3634LL,63929LL<<36),reale(0x11a0acaLL,62242LL<<36),
-      reale(0x8267bfLL,40923LL<<36),reale(-0x2d5adcLL,48428LL<<36),
-      reale(-0x77040fLL,16221LL<<36),reale(0x5d908bLL,18102LL<<36),
-      reale(-0x15246bLL,5247LL<<36),reale(2743LL,0xcd40fcLL<<28),
+      // C4[15], coeff of eps^17, polynomial in n of order 12
+      reale(0xe74261LL,820196LL<<32),reale(-0x254ae1fLL,91461LL<<32),
+      reale(0x4e2b86cLL,279198LL<<32),reale(-0x8501d8dLL,54663LL<<32),
+      reale(0xb5983e4LL,492696LL<<32),reale(-0xc0f0741LL,81129LL<<32),
+      reale(0x9349116LL,806802LL<<32),reale(-0x3aebfbdLL,159531LL<<32),
+      reale(-0x1b2f350LL,780620LL<<32),reale(0x45be7e6LL,0xfb80dLL<<32),
+      reale(-0x3f5d44bLL,460678LL<<32),reale(0x20e7862LL,346959LL<<32),
+      reale(-0x7dbe5bLL,0xa56536LL<<24),
       reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
-      // _C4x[353]
-      reale(0x85956bLL,883480LL<<32),reale(0xab2f27LL,998436LL<<32),
-      reale(-0xac655eLL,34449LL<<36),reale(996220LL,779132LL<<32),
-      reale(0x137773LL,333064LL<<32),reale(426630LL,382292LL<<32),
-      reale(-392369LL,0x6af8038LL<<24),reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
-      // _C4x[354]
-      reale(-0x2bc894LL,13015LL<<36),reale(-0x31ae6aLL,30260LL<<36),
-      reale(-0x2328a1LL,31713LL<<36),reale(0x37dee4LL,56522LL<<36),
-      reale(-0x11a172LL,47323LL<<36),reale(48366LL,0xcfa39dLL<<28),
+      // C4[15], coeff of eps^16, polynomial in n of order 13
+      reale(114172LL,570308LL<<32),reale(-499142LL,32417LL<<36),
+      reale(0x1ab452LL,696732LL<<32),reale(-0x4c8a22LL,130808LL<<32),
+      reale(0xb5790eLL,264884LL<<32),reale(-0x166233eLL,27350LL<<36),
+      reale(0x24cdc67LL,752524LL<<32),reale(-0x322d0b6LL,526792LL<<32),
+      reale(0x3808311LL,557220LL<<32),reale(-0x3214733LL,41611LL<<36),
+      reale(0x2263a42LL,632444LL<<32),reale(-0x10e7aeaLL,302744LL<<32),
+      reale(0x53b854LL,555412LL<<32),reale(-792997LL,0xc866d9cLL<<24),
+      reale(0x9de5dc5e0LL,0x471a6a35932f5LL),
+      // C4[15], coeff of eps^15, polynomial in n of order 14
+      real(0x46a7f53aLL<<32),reale(-9148LL,209563LL<<32),
+      reale(55355LL,963460LL<<32),reale(-262941LL,404301LL<<32),
+      reale(0xf6e6eLL,58190LL<<32),reale(-0x31125eLL,24671LL<<32),
+      reale(0x82dba5LL,283736LL<<32),reale(-0x1274a99LL,718737LL<<32),
+      reale(0x2367a33LL,910946LL<<32),reale(-0x39b9ab9LL,269987LL<<32),
+      reale(0x4f6e12fLL,375084LL<<32),reale(-0x5a76405LL,883541LL<<32),
+      reale(0x511a91eLL,220278LL<<32),reale(-0x306690eLL,105319LL<<32),
+      reale(0xd3c0b9LL,0xccf81d6LL<<24),
       reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
-      // _C4x[355]
-      reale(-0x696616LL,44157LL<<36),reale(0x231c8fLL,795724LL<<32),
-      reale(591806LL,263784LL<<32),reale(76262LL,153156LL<<32),
-      reale(-216245LL,0x4a29a78LL<<24),reale(0x1d9b1951a0LL,0xd54f3ea0b98dfLL),
-      // _C4x[356]
-      reale(-50644LL,2047LL<<36),reale(243167LL,17106LL<<36),
-      reale(-100840LL,62069LL<<36),reale(7018LL,0x217e14LL<<28),
-      reale(0x34a1f41f5LL,0x6d08ce11dbba7LL),
-      // _C4x[357]
-      reale(16894LL,439LL<<40),reale(-3397LL,43380LL<<36),
-      reale(-13998LL,0x90b723LL<<28),reale(0x34a1f41f5LL,0x6d08ce11dbba7LL),
-      // _C4x[358]
-      real(-138796LL<<40),real(0x326231aLL<<28),
-      reale(0x5d9c18LL,0xac3bb24726559LL),
-      // _C4x[359]
-      real(-204761LL<<28),reale(20426LL,0xaa7b82b97d24fLL),
-      // _C4x[360]
-      reale(-18696LL,519966LL<<32),reale(95700LL,66120LL<<32),
-      reale(-398137LL,208882LL<<32),reale(0x14fc95LL,708284LL<<32),
-      reale(-0x3d1bb4LL,188998LL<<32),reale(0x978510LL,13635LL<<36),
-      reale(-0x141fac3LL,584986LL<<32),reale(0x24bf66eLL,208292LL<<32),
-      reale(-0x3992436LL,862062LL<<32),reale(0x4cc3046LL,947736LL<<32),
-      reale(-0x555d496LL,555074LL<<32),reale(0x4b447d3LL,649356LL<<32),
-      reale(-0x2c79ecfLL,521878LL<<32),reale(0xc19a43LL,0x799264LL<<28),
+      // C4[16], coeff of eps^29, polynomial in n of order 0
+      real(4424LL<<28),real(0x292ecb9a960d27d1LL),
+      // C4[16], coeff of eps^28, polynomial in n of order 1
+      real(-61453LL<<36),real(-0x1223354LL<<32),
+      reale(0x12af280LL,0x57955a5f17535LL),
+      // C4[16], coeff of eps^27, polynomial in n of order 2
+      reale(33770LL,14237LL<<36),reale(-12918LL,122440LL<<32),
+      real(0x31a67a9c8LL<<28),reale(0x80108cfaLL,0xda506166fe05fLL),
+      // C4[16], coeff of eps^26, polynomial in n of order 3
+      reale(0x1aefe7LL,9719LL<<36),reale(634098LL,32386LL<<36),
+      reale(114937LL,5021LL<<36),reale(-211036LL,146065LL<<32),
       reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
-      // _C4x[361]
-      reale(-0x227ab0LL,16142LL<<36),reale(0x6c5265LL,629784LL<<32),
-      reale(-0x11b8c1dLL,56657LL<<36),reale(0x26f5cbcLL,98952LL<<32),
-      reale(-0x482fb20LL,14772LL<<36),reale(0x709c48eLL,679416LL<<32),
-      reale(-0x92fd9b9LL,13463LL<<36),reale(0x9e6c5adLL,595048LL<<32),
-      reale(-0x89a44eaLL,61018LL<<36),reale(0x5c79070LL,789464LL<<32),
-      reale(-0x2cba02fLL,46941LL<<36),reale(0xdaf5c9LL,404040LL<<32),
-      reale(-0x1f6520LL,0x4d2688LL<<28),
+      // C4[16], coeff of eps^25, polynomial in n of order 4
+      reale(-0x2e6a1aLL,42466LL<<36),reale(-0x285574LL,539320LL<<32),
+      reale(0x34c58bLL,225LL<<36),reale(-0xf6ed0LL,814568LL<<32),
+      reale(33755LL,0x2b54a8LL<<28),reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
+      // C4[16], coeff of eps^24, polynomial in n of order 5
+      reale(0xbde12aLL,894776LL<<32),reale(-0x9842b4LL,18214LL<<36),
+      reale(264818LL,197512LL<<32),reale(0x124032LL,9587LL<<36),
+      reale(477961LL,138712LL<<32),reale(-375863LL,804917LL<<32),
       reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
-      // _C4x[362]
-      reale(-0x2d52da6LL,2991LL<<36),reale(0x57a1821LL,44906LL<<36),
-      reale(-0x8b074b6LL,45557LL<<36),reale(0xb25424eLL,64008LL<<36),
-      reale(-0xb27b4e2LL,29787LL<<36),reale(0x7efaebeLL,40358LL<<36),
-      reale(-0x2a5e0f6LL,52385LL<<36),reale(-0x21bb9a2LL,25604LL<<36),
-      reale(0x43c3e65LL,38023LL<<36),reale(-0x3ac6c50LL,22242LL<<36),
-      reale(0x1e0a4e5LL,50637LL<<36),reale(-0x724f60LL,290225LL<<32),
+      // C4[16], coeff of eps^23, polynomial in n of order 6
+      reale(0xb6aa99LL,59849LL<<36),reale(0x93ab1fLL,452760LL<<32),
+      reale(-0x1720c6LL,60902LL<<36),reale(-0x796650LL,147240LL<<32),
+      reale(0x553b28LL,62147LL<<36),reale(-0x11d6bfLL,536248LL<<32),
+      reale(-10841LL,0x50d3f8LL<<28),reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
+      // C4[16], coeff of eps^22, polynomial in n of order 7
+      reale(-0x13efe8aLL,18329LL<<36),reale(-0x19c0bfcLL,27906LL<<36),
+      reale(0x1ea3e4aLL,62715LL<<36),reale(-0x7d3b35LL,39788LL<<36),
+      reale(-0x42287eLL,44605LL<<36),reale(0x149df9LL,29526LL<<36),
+      reale(0x182860LL,44703LL<<36),reale(-734820LL,693435LL<<32),
       reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
-      // _C4x[363]
-      reale(-0xbc507a6LL,53571LL<<36),reale(0xb9cb8adLL,13336LL<<32),
-      reale(-0x7261902LL,61788LL<<36),reale(-0x128369LL,849256LL<<32),
-      reale(0x62b0258LL,52469LL<<36),reale(-0x7fb0789LL,985016LL<<32),
-      reale(0x5c56415LL,36142LL<<36),reale(-0x2783dddLL,72968LL<<32),
-      reale(0x7a756cLL,27431LL<<36),reale(724406LL,0xf6758LL<<32),
-      reale(-459368LL,0x61ea58LL<<28),reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
-      // _C4x[364]
+      // C4[16], coeff of eps^21, polynomial in n of order 8
+      reale(0x71bef35LL,52964LL<<36),reale(-0xc9306fLL,105496LL<<32),
+      reale(-0x20d47b6LL,52795LL<<36),reale(0xc5ef7aLL,496840LL<<32),
+      reale(0x112054dLL,47858LL<<36),reale(-0x13ca670LL,686712LL<<32),
+      reale(0x8042f9LL,5609LL<<36),reale(-0xf688eLL,375592LL<<32),
+      reale(-126670LL,0x8629a8LL<<28),reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
+      // C4[16], coeff of eps^20, polynomial in n of order 9
       reale(0x6f1d21LL,46177LL<<36),reale(-0x7e03f7bLL,36040LL<<36),
       reale(0x9ccd64aLL,28463LL<<36),reale(-0x622c9aaLL,38934LL<<36),
       reale(0x138cd3dLL,15997LL<<36),reale(0x10cb2afLL,57956LL<<36),
       reale(-0xa9cbb1LL,56139LL<<36),reale(-0x30bcfeLL,1714LL<<36),
       reale(0x5434b3LL,63129LL<<36),reale(-0x1a6458LL,664724LL<<32),
       reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
-      // _C4x[365]
-      reale(0x71bef35LL,52964LL<<36),reale(-0xc9306fLL,105496LL<<32),
-      reale(-0x20d47b6LL,52795LL<<36),reale(0xc5ef7aLL,496840LL<<32),
-      reale(0x112054dLL,47858LL<<36),reale(-0x13ca670LL,686712LL<<32),
-      reale(0x8042f9LL,5609LL<<36),reale(-0xf688eLL,375592LL<<32),
-      reale(-126670LL,0x8629a8LL<<28),reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
-      // _C4x[366]
-      reale(-0x13efe8aLL,18329LL<<36),reale(-0x19c0bfcLL,27906LL<<36),
-      reale(0x1ea3e4aLL,62715LL<<36),reale(-0x7d3b35LL,39788LL<<36),
-      reale(-0x42287eLL,44605LL<<36),reale(0x149df9LL,29526LL<<36),
-      reale(0x182860LL,44703LL<<36),reale(-734820LL,693435LL<<32),
+      // C4[16], coeff of eps^19, polynomial in n of order 10
+      reale(-0xbc507a6LL,53571LL<<36),reale(0xb9cb8adLL,13336LL<<32),
+      reale(-0x7261902LL,61788LL<<36),reale(-0x128369LL,849256LL<<32),
+      reale(0x62b0258LL,52469LL<<36),reale(-0x7fb0789LL,985016LL<<32),
+      reale(0x5c56415LL,36142LL<<36),reale(-0x2783dddLL,72968LL<<32),
+      reale(0x7a756cLL,27431LL<<36),reale(724406LL,0xf6758LL<<32),
+      reale(-459368LL,0x61ea58LL<<28),reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
+      // C4[16], coeff of eps^18, polynomial in n of order 11
+      reale(-0x2d52da6LL,2991LL<<36),reale(0x57a1821LL,44906LL<<36),
+      reale(-0x8b074b6LL,45557LL<<36),reale(0xb25424eLL,64008LL<<36),
+      reale(-0xb27b4e2LL,29787LL<<36),reale(0x7efaebeLL,40358LL<<36),
+      reale(-0x2a5e0f6LL,52385LL<<36),reale(-0x21bb9a2LL,25604LL<<36),
+      reale(0x43c3e65LL,38023LL<<36),reale(-0x3ac6c50LL,22242LL<<36),
+      reale(0x1e0a4e5LL,50637LL<<36),reale(-0x724f60LL,290225LL<<32),
       reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
-      // _C4x[367]
-      reale(0xb6aa99LL,59849LL<<36),reale(0x93ab1fLL,452760LL<<32),
-      reale(-0x1720c6LL,60902LL<<36),reale(-0x796650LL,147240LL<<32),
-      reale(0x553b28LL,62147LL<<36),reale(-0x11d6bfLL,536248LL<<32),
-      reale(-10841LL,0x50d3f8LL<<28),reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
-      // _C4x[368]
-      reale(0xbde12aLL,894776LL<<32),reale(-0x9842b4LL,18214LL<<36),
-      reale(264818LL,197512LL<<32),reale(0x124032LL,9587LL<<36),
-      reale(477961LL,138712LL<<32),reale(-375863LL,804917LL<<32),
+      // C4[16], coeff of eps^17, polynomial in n of order 12
+      reale(-0x227ab0LL,16142LL<<36),reale(0x6c5265LL,629784LL<<32),
+      reale(-0x11b8c1dLL,56657LL<<36),reale(0x26f5cbcLL,98952LL<<32),
+      reale(-0x482fb20LL,14772LL<<36),reale(0x709c48eLL,679416LL<<32),
+      reale(-0x92fd9b9LL,13463LL<<36),reale(0x9e6c5adLL,595048LL<<32),
+      reale(-0x89a44eaLL,61018LL<<36),reale(0x5c79070LL,789464LL<<32),
+      reale(-0x2cba02fLL,46941LL<<36),reale(0xdaf5c9LL,404040LL<<32),
+      reale(-0x1f6520LL,0x4d2688LL<<28),
       reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
-      // _C4x[369]
-      reale(-0x2e6a1aLL,42466LL<<36),reale(-0x285574LL,539320LL<<32),
-      reale(0x34c58bLL,225LL<<36),reale(-0xf6ed0LL,814568LL<<32),
-      reale(33755LL,0x2b54a8LL<<28),reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
-      // _C4x[370]
-      reale(0x1aefe7LL,9719LL<<36),reale(634098LL,32386LL<<36),
-      reale(114937LL,5021LL<<36),reale(-211036LL,146065LL<<32),
+      // C4[16], coeff of eps^16, polynomial in n of order 13
+      reale(-18696LL,519966LL<<32),reale(95700LL,66120LL<<32),
+      reale(-398137LL,208882LL<<32),reale(0x14fc95LL,708284LL<<32),
+      reale(-0x3d1bb4LL,188998LL<<32),reale(0x978510LL,13635LL<<36),
+      reale(-0x141fac3LL,584986LL<<32),reale(0x24bf66eLL,208292LL<<32),
+      reale(-0x3992436LL,862062LL<<32),reale(0x4cc3046LL,947736LL<<32),
+      reale(-0x555d496LL,555074LL<<32),reale(0x4b447d3LL,649356LL<<32),
+      reale(-0x2c79ecfLL,521878LL<<32),reale(0xc19a43LL,0x799264LL<<28),
       reale(0x1f8412b1bbLL,0xb9c7f85883761LL),
-      // _C4x[371]
-      reale(33770LL,14237LL<<36),reale(-12918LL,122440LL<<32),
-      real(0x31a67a9c8LL<<28),reale(0x80108cfaLL,0xda506166fe05fLL),
-      // _C4x[372]
-      real(-61453LL<<36),real(-0x1223354LL<<32),
-      reale(0x12af280LL,0x57955a5f17535LL),
-      // _C4x[373]
-      real(4424LL<<28),real(0x292ecb9a960d27d1LL),
-      // _C4x[374]
-      reale(152058LL,7062LL<<36),reale(-566839LL,172984LL<<32),
-      reale(0x1b4a05LL,65069LL<<36),reale(-0x49ae44LL,649320LL<<32),
-      reale(0xab8825LL,43876LL<<36),reale(-0x159dc41LL,185880LL<<32),
-      reale(0x25cc2f5LL,283LL<<36),reale(-0x3929bc8LL,142024LL<<32),
-      reale(0x4a1d656LL,7474LL<<36),reale(-0x50b0852LL,664696LL<<32),
-      reale(0x46180c2LL,52617LL<<36),reale(-0x290e15dLL,885032LL<<32),
-      reale(0xb1e7b3LL,0xa025a8LL<<28),reale(0x216d0c11d6LL,0x9e40b2104d5e3LL),
-      // _C4x[375]
-      reale(0x8bd2aeLL,64742LL<<36),reale(-0x152920eLL,25788LL<<36),
-      reale(0x2b90affLL,31138LL<<36),reale(-0x4c60300LL,4075LL<<40),
-      reale(0x71be0c9LL,64254LL<<36),reale(-0x8ed887bLL,13732LL<<36),
-      reale(0x9529b5cLL,61882LL<<36),reale(-0x7e5b3b3LL,25176LL<<36),
-      reale(0x533e4b9LL,20118LL<<36),reale(-0x27ae5baLL,23948LL<<36),
-      reale(0xc041f5LL,33362LL<<36),reale(-0x1b5ebaLL,866999LL<<32),
+      // C4[17], coeff of eps^29, polynomial in n of order 0
+      real(-0x223858LL<<28),reale(154847LL,0x4e6e7be138cdbLL),
+      // C4[17], coeff of eps^28, polynomial in n of order 1
+      real(-329724LL<<36),real(284138LL<<32),reale(989485LL,0x4511e2f2b39a3LL),
+      // C4[17], coeff of eps^27, polynomial in n of order 2
+      reale(30957LL,2723LL<<36),reale(7080LL,304568LL<<32),
+      reale(-9774LL,884536LL<<28),reale(0x1977a7ac1LL,0x13b9f01928417LL),
+      // C4[17], coeff of eps^26, polynomial in n of order 3
+      reale(-138772LL,7966LL<<36),reale(154910LL,57756LL<<36),
+      reale(-42194LL,6314LL<<36),real(0x4216e9dbLL<<32),
+      reale(0x1977a7ac1LL,0x13b9f01928417LL),
+      // C4[17], coeff of eps^25, polynomial in n of order 4
+      reale(-0x12e4f1LL,22134LL<<36),reale(-44812LL,400360LL<<32),
+      reale(156785LL,14859LL<<36),reale(74079LL,619256LL<<32),
+      reale(-51373LL,0x7bdc78LL<<28),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
+      // C4[17], coeff of eps^24, polynomial in n of order 5
+      reale(0x99759bLL,59960LL<<36),reale(-158284LL,938LL<<40),
+      reale(-0x79bdeeLL,43912LL<<36),reale(0x4d8087LL,3021LL<<40),
+      reale(-987193LL,48728LL<<36),reale(-20807LL,78972LL<<32),
       reale(0x216d0c11d6LL,0x9e40b2104d5e3LL),
-      // _C4x[376]
-      reale(0x5fcb5eeLL,5039LL<<36),reale(-0x8ed2046LL,73592LL<<32),
-      reale(0xad24cccLL,7756LL<<36),reale(-0xa3ea966LL,57352LL<<32),
-      reale(0x6caec7eLL,29289LL<<36),reale(-0x1c943bbLL,406936LL<<32),
-      reale(-0x267c089LL,38310LL<<36),reale(0x417984cLL,694824LL<<32),
-      reale(-0x36a1a06LL,7587LL<<36),reale(0x1b8c6d9LL,67512LL<<32),
-      reale(-0x68792dLL,572728LL<<28),reale(0x216d0c11d6LL,0x9e40b2104d5e3LL),
-      // _C4x[377]
-      reale(0xa6a33a7LL,28796LL<<36),reale(-0x5787a1eLL,530LL<<40),
-      reale(-0x15e2843LL,61508LL<<36),reale(0x6817531LL,3608LL<<36),
-      reale(-0x786b289LL,21196LL<<36),reale(0x524444eLL,2409LL<<40),
-      reale(-0x218e2e7LL,59796LL<<36),reale(0x5eeb26LL,56328LL<<36),
-      reale(846498LL,1564LL<<36),reale(-421215LL,879846LL<<32),
+      // C4[17], coeff of eps^23, polynomial in n of order 6
+      reale(-0x1cff2faLL,49333LL<<36),reale(0x1b90d6dLL,86712LL<<32),
+      reale(-0x53819bLL,7854LL<<36),reale(-0x453fd8LL,875016LL<<32),
+      reale(0xf6a85LL,2151LL<<36),reale(0x18479dLL,491096LL<<32),
+      reale(-691601LL,0x991dd8LL<<28),reale(0x216d0c11d6LL,0x9e40b2104d5e3LL),
+      // C4[17], coeff of eps^22, polynomial in n of order 7
+      reale(0x24068eLL,41034LL<<36),reale(-0x2095e18LL,33996LL<<36),
+      reale(0x79e54dLL,798LL<<36),reale(0x12548a5LL,22088LL<<36),
+      reale(-0x125c0c3LL,21842LL<<36),reale(0x6f4e99LL,30532LL<<36),
+      reale(-776534LL,14118LL<<36),reale(-127092LL,420189LL<<32),
       reale(0x216d0c11d6LL,0x9e40b2104d5e3LL),
-      // _C4x[378]
+      // C4[17], coeff of eps^21, polynomial in n of order 8
       reale(-0x8764bd6LL,42036LL<<36),reale(0x913afb2LL,248LL<<32),
       reale(-0x51134cbLL,10871LL<<36),reale(0xa48f07LL,593256LL<<32),
       reale(0x118661fLL,45978LL<<36),reale(-0x8fabc1LL,64216LL<<32),
       reale(-0x3890baLL,25597LL<<36),reale(0x505dc7LL,159560LL<<32),
       reale(-0x187191LL,0x890dc8LL<<28),
       reale(0x216d0c11d6LL,0x9e40b2104d5e3LL),
-      // _C4x[379]
-      reale(0x24068eLL,41034LL<<36),reale(-0x2095e18LL,33996LL<<36),
-      reale(0x79e54dLL,798LL<<36),reale(0x12548a5LL,22088LL<<36),
-      reale(-0x125c0c3LL,21842LL<<36),reale(0x6f4e99LL,30532LL<<36),
-      reale(-776534LL,14118LL<<36),reale(-127092LL,420189LL<<32),
+      // C4[17], coeff of eps^20, polynomial in n of order 9
+      reale(0xa6a33a7LL,28796LL<<36),reale(-0x5787a1eLL,530LL<<40),
+      reale(-0x15e2843LL,61508LL<<36),reale(0x6817531LL,3608LL<<36),
+      reale(-0x786b289LL,21196LL<<36),reale(0x524444eLL,2409LL<<40),
+      reale(-0x218e2e7LL,59796LL<<36),reale(0x5eeb26LL,56328LL<<36),
+      reale(846498LL,1564LL<<36),reale(-421215LL,879846LL<<32),
       reale(0x216d0c11d6LL,0x9e40b2104d5e3LL),
-      // _C4x[380]
-      reale(-0x1cff2faLL,49333LL<<36),reale(0x1b90d6dLL,86712LL<<32),
-      reale(-0x53819bLL,7854LL<<36),reale(-0x453fd8LL,875016LL<<32),
-      reale(0xf6a85LL,2151LL<<36),reale(0x18479dLL,491096LL<<32),
-      reale(-691601LL,0x991dd8LL<<28),reale(0x216d0c11d6LL,0x9e40b2104d5e3LL),
-      // _C4x[381]
-      reale(0x99759bLL,59960LL<<36),reale(-158284LL,938LL<<40),
-      reale(-0x79bdeeLL,43912LL<<36),reale(0x4d8087LL,3021LL<<40),
-      reale(-987193LL,48728LL<<36),reale(-20807LL,78972LL<<32),
+      // C4[17], coeff of eps^19, polynomial in n of order 10
+      reale(0x5fcb5eeLL,5039LL<<36),reale(-0x8ed2046LL,73592LL<<32),
+      reale(0xad24cccLL,7756LL<<36),reale(-0xa3ea966LL,57352LL<<32),
+      reale(0x6caec7eLL,29289LL<<36),reale(-0x1c943bbLL,406936LL<<32),
+      reale(-0x267c089LL,38310LL<<36),reale(0x417984cLL,694824LL<<32),
+      reale(-0x36a1a06LL,7587LL<<36),reale(0x1b8c6d9LL,67512LL<<32),
+      reale(-0x68792dLL,572728LL<<28),reale(0x216d0c11d6LL,0x9e40b2104d5e3LL),
+      // C4[17], coeff of eps^18, polynomial in n of order 11
+      reale(0x8bd2aeLL,64742LL<<36),reale(-0x152920eLL,25788LL<<36),
+      reale(0x2b90affLL,31138LL<<36),reale(-0x4c60300LL,4075LL<<40),
+      reale(0x71be0c9LL,64254LL<<36),reale(-0x8ed887bLL,13732LL<<36),
+      reale(0x9529b5cLL,61882LL<<36),reale(-0x7e5b3b3LL,25176LL<<36),
+      reale(0x533e4b9LL,20118LL<<36),reale(-0x27ae5baLL,23948LL<<36),
+      reale(0xc041f5LL,33362LL<<36),reale(-0x1b5ebaLL,866999LL<<32),
       reale(0x216d0c11d6LL,0x9e40b2104d5e3LL),
-      // _C4x[382]
-      reale(-0x12e4f1LL,22134LL<<36),reale(-44812LL,400360LL<<32),
-      reale(156785LL,14859LL<<36),reale(74079LL,619256LL<<32),
-      reale(-51373LL,0x7bdc78LL<<28),reale(0x4c66f7043LL,0x3b2dd04b78c45LL),
-      // _C4x[383]
-      reale(-138772LL,7966LL<<36),reale(154910LL,57756LL<<36),
-      reale(-42194LL,6314LL<<36),real(0x4216e9dbLL<<32),
-      reale(0x1977a7ac1LL,0x13b9f01928417LL),
-      // _C4x[384]
-      reale(30957LL,2723LL<<36),reale(7080LL,304568LL<<32),
-      reale(-9774LL,884536LL<<28),reale(0x1977a7ac1LL,0x13b9f01928417LL),
-      // _C4x[385]
-      real(-329724LL<<36),real(284138LL<<32),reale(989485LL,0x4511e2f2b39a3LL),
-      // _C4x[386]
-      real(-0x223858LL<<28),reale(154847LL,0x4e6e7be138cdbLL),
-      // _C4x[387]
-      reale(-768540LL,36525LL<<36),reale(0x223a21LL,36070LL<<36),
-      reale(-0x568badLL,25823LL<<36),reale(0xbea6b3LL,58040LL<<36),
-      reale(-0x16f00e8LL,60305LL<<36),reale(0x2697f7cLL,44170LL<<36),
-      reale(-0x388f437LL,18883LL<<36),reale(0x4785431LL,23900LL<<36),
-      reale(-0x4c659efLL,5749LL<<36),reale(0x417baccLL,51246LL<<36),
-      reale(-0x260d0dfLL,14503LL<<36),reale(0xa43857LL,40886LL<<32),
+      // C4[17], coeff of eps^17, polynomial in n of order 12
+      reale(152058LL,7062LL<<36),reale(-566839LL,172984LL<<32),
+      reale(0x1b4a05LL,65069LL<<36),reale(-0x49ae44LL,649320LL<<32),
+      reale(0xab8825LL,43876LL<<36),reale(-0x159dc41LL,185880LL<<32),
+      reale(0x25cc2f5LL,283LL<<36),reale(-0x3929bc8LL,142024LL<<32),
+      reale(0x4a1d656LL,7474LL<<36),reale(-0x50b0852LL,664696LL<<32),
+      reale(0x46180c2LL,52617LL<<36),reale(-0x290e15dLL,885032LL<<32),
+      reale(0xb1e7b3LL,0xa025a8LL<<28),reale(0x216d0c11d6LL,0x9e40b2104d5e3LL),
+      // C4[18], coeff of eps^29, polynomial in n of order 0
+      real(140LL<<32),real(0x29845c2bcb5c10d7LL),
+      // C4[18], coeff of eps^28, polynomial in n of order 1
+      reale(3628LL,36746LL<<36),reale(-4064LL,118540LL<<32),
+      reale(0xb89cd887LL,0x8a812bfedbe75LL),
+      // C4[18], coeff of eps^27, polynomial in n of order 2
+      reale(435730LL,4904LL<<36),reale(-110988LL,50292LL<<36),
+      real(0x74977e2cLL<<32),reale(0x50c49ebb4LL,0xc98833f803533LL),
+      // C4[18], coeff of eps^26, polynomial in n of order 3
+      reale(-762946LL,34357LL<<36),reale(988791LL,174LL<<36),
+      reale(550009LL,38375LL<<36),reale(-343816LL,402198LL<<32),
       reale(0x23560571f1LL,0x82b96bc817465LL),
-      // _C4x[388]
-      reale(-0x832312LL,24184LL<<36),reale(0xfeda80LL,21900LL<<36),
-      reale(-0x1a97403LL,1606LL<<40),reale(0x25ff726LL,57652LL<<36),
-      reale(-0x2e19f74LL,57928LL<<36),reale(0x2ecb0c8LL,46556LL<<36),
-      reale(-0x26beeebLL,931LL<<40),reale(0x1914217LL,62852LL<<36),
-      reale(-0xbcc7b7LL,52760LL<<36),reale(0x38a250LL,16940LL<<36),
-      reale(-524992LL,458356LL<<32),reale(0xbc75725fbLL,0x2b9323ed5d177LL),
-      // _C4x[389]
-      reale(-0x90a7089LL,32278LL<<36),reale(0xa68edd2LL,1667LL<<40),
-      reale(-0x959fbbcLL,33866LL<<36),reale(0x5c50c5dLL,16676LL<<36),
-      reale(-0x111e205LL,52094LL<<36),reale(-0x29da349LL,7192LL<<36),
-      reale(0x3f04f44LL,50610LL<<36),reale(-0x32e2a1dLL,58124LL<<36),
-      reale(0x195e094LL,34022LL<<36),reale(-0x5ff14aLL,368660LL<<32),
+      // C4[18], coeff of eps^25, polynomial in n of order 4
+      reale(0x103b40LL,54LL<<40),reale(-0x788224LL,3400LL<<36),
+      reale(0x46641dLL,699LL<<40),reale(-833937LL,64792LL<<36),
+      reale(-28055LL,293480LL<<32),reale(0x23560571f1LL,0x82b96bc817465LL),
+      // C4[18], coeff of eps^24, polynomial in n of order 5
+      reale(0x1864c0bLL,17516LL<<36),reale(-0x30f981LL,2543LL<<40),
+      reale(-0x45d925LL,41844LL<<36),reale(702466LL,12664LL<<36),
+      reale(0x18336fLL,1148LL<<36),reale(-651637LL,67464LL<<32),
       reale(0x23560571f1LL,0x82b96bc817465LL),
-      // _C4x[390]
-      reale(-0x3f4303bLL,1498LL<<40),reale(-0x2681d1aLL,396LL<<36),
-      reale(0x6ab31fdLL,38712LL<<36),reale(-0x70d7f80LL,46692LL<<36),
-      reale(0x494c416LL,3693LL<<40),reale(-0x1c90b87LL,51260LL<<36),
-      reale(0x491a22LL,39528LL<<36),reale(921311LL,17684LL<<36),
-      reale(-386622LL,321292LL<<32),reale(0x23560571f1LL,0x82b96bc817465LL),
-      // _C4x[391]
+      // C4[18], coeff of eps^23, polynomial in n of order 6
+      reale(-0x1ed3c84LL,2281LL<<40),reale(0x35b907LL,9656LL<<36),
+      reale(0x1305be4LL,518LL<<40),reale(-0x10f6c3fLL,28936LL<<36),
+      reale(0x60b1d2LL,3235LL<<40),reale(-589728LL,20056LL<<36),
+      reale(-125506LL,883240LL<<32),reale(0x23560571f1LL,0x82b96bc817465LL),
+      // C4[18], coeff of eps^22, polynomial in n of order 7
       reale(0x8473679LL,22203LL<<36),reale(-0x41f6df2LL,36590LL<<36),
       reale(0x319455LL,4577LL<<36),reale(0x11952deLL,41204LL<<36),
       reale(-0x77a138LL,33927LL<<36),reale(-0x3e6f3aLL,4346LL<<36),
       reale(0x4c9ddaLL,27565LL<<36),reale(-0x16b4d3LL,817202LL<<32),
       reale(0x23560571f1LL,0x82b96bc817465LL),
-      // _C4x[392]
-      reale(-0x1ed3c84LL,2281LL<<40),reale(0x35b907LL,9656LL<<36),
-      reale(0x1305be4LL,518LL<<40),reale(-0x10f6c3fLL,28936LL<<36),
-      reale(0x60b1d2LL,3235LL<<40),reale(-589728LL,20056LL<<36),
-      reale(-125506LL,883240LL<<32),reale(0x23560571f1LL,0x82b96bc817465LL),
-      // _C4x[393]
-      reale(0x1864c0bLL,17516LL<<36),reale(-0x30f981LL,2543LL<<40),
-      reale(-0x45d925LL,41844LL<<36),reale(702466LL,12664LL<<36),
-      reale(0x18336fLL,1148LL<<36),reale(-651637LL,67464LL<<32),
+      // C4[18], coeff of eps^21, polynomial in n of order 8
+      reale(-0x3f4303bLL,1498LL<<40),reale(-0x2681d1aLL,396LL<<36),
+      reale(0x6ab31fdLL,38712LL<<36),reale(-0x70d7f80LL,46692LL<<36),
+      reale(0x494c416LL,3693LL<<40),reale(-0x1c90b87LL,51260LL<<36),
+      reale(0x491a22LL,39528LL<<36),reale(921311LL,17684LL<<36),
+      reale(-386622LL,321292LL<<32),reale(0x23560571f1LL,0x82b96bc817465LL),
+      // C4[18], coeff of eps^20, polynomial in n of order 9
+      reale(-0x90a7089LL,32278LL<<36),reale(0xa68edd2LL,1667LL<<40),
+      reale(-0x959fbbcLL,33866LL<<36),reale(0x5c50c5dLL,16676LL<<36),
+      reale(-0x111e205LL,52094LL<<36),reale(-0x29da349LL,7192LL<<36),
+      reale(0x3f04f44LL,50610LL<<36),reale(-0x32e2a1dLL,58124LL<<36),
+      reale(0x195e094LL,34022LL<<36),reale(-0x5ff14aLL,368660LL<<32),
       reale(0x23560571f1LL,0x82b96bc817465LL),
-      // _C4x[394]
-      reale(0x103b40LL,54LL<<40),reale(-0x788224LL,3400LL<<36),
-      reale(0x46641dLL,699LL<<40),reale(-833937LL,64792LL<<36),
-      reale(-28055LL,293480LL<<32),reale(0x23560571f1LL,0x82b96bc817465LL),
-      // _C4x[395]
-      reale(-762946LL,34357LL<<36),reale(988791LL,174LL<<36),
-      reale(550009LL,38375LL<<36),reale(-343816LL,402198LL<<32),
+      // C4[18], coeff of eps^19, polynomial in n of order 10
+      reale(-0x832312LL,24184LL<<36),reale(0xfeda80LL,21900LL<<36),
+      reale(-0x1a97403LL,1606LL<<40),reale(0x25ff726LL,57652LL<<36),
+      reale(-0x2e19f74LL,57928LL<<36),reale(0x2ecb0c8LL,46556LL<<36),
+      reale(-0x26beeebLL,931LL<<40),reale(0x1914217LL,62852LL<<36),
+      reale(-0xbcc7b7LL,52760LL<<36),reale(0x38a250LL,16940LL<<36),
+      reale(-524992LL,458356LL<<32),reale(0xbc75725fbLL,0x2b9323ed5d177LL),
+      // C4[18], coeff of eps^18, polynomial in n of order 11
+      reale(-768540LL,36525LL<<36),reale(0x223a21LL,36070LL<<36),
+      reale(-0x568badLL,25823LL<<36),reale(0xbea6b3LL,58040LL<<36),
+      reale(-0x16f00e8LL,60305LL<<36),reale(0x2697f7cLL,44170LL<<36),
+      reale(-0x388f437LL,18883LL<<36),reale(0x4785431LL,23900LL<<36),
+      reale(-0x4c659efLL,5749LL<<36),reale(0x417baccLL,51246LL<<36),
+      reale(-0x260d0dfLL,14503LL<<36),reale(0xa43857LL,40886LL<<32),
       reale(0x23560571f1LL,0x82b96bc817465LL),
-      // _C4x[396]
-      reale(435730LL,4904LL<<36),reale(-110988LL,50292LL<<36),
-      real(0x74977e2cLL<<32),reale(0x50c49ebb4LL,0xc98833f803533LL),
-      // _C4x[397]
-      reale(3628LL,36746LL<<36),reale(-4064LL,118540LL<<32),
-      reale(0xb89cd887LL,0x8a812bfedbe75LL),
-      // _C4x[398]
-      real(140LL<<32),real(0x29845c2bcb5c10d7LL),
-      // _C4x[399]
-      reale(0x29ae82LL,3225LL<<40),reale(-0x637e0cLL,22152LL<<36),
-      reale(0xd0b67eLL,3540LL<<40),reale(-0x1818a00LL,20984LL<<36),
-      reale(0x272bd05LL,3215LL<<40),reale(-0x37cef07LL,8808LL<<36),
-      reale(0x44ffda2LL,362LL<<40),reale(-0x48730b7LL,472LL<<36),
-      reale(0x3d5a819LL,3333LL<<40),reale(-0x2365723LL,27208LL<<36),
-      reale(0x983437LL,728420LL<<32),reale(0x253efed20cLL,0x6732257fe12e7LL),
-      // _C4x[400]
-      reale(0x3396d84LL,3458LL<<40),reale(-0x52718c9LL,223LL<<44),
-      reale(0x7187115LL,1054LL<<40),reale(-0x8586c9eLL,596LL<<40),
-      reale(0x841a240LL,2266LL<<40),reale(-0x6b26ec6LL,2040LL<<40),
-      reale(0x4440e43LL,2550LL<<40),reale(-0x1fbb2b3LL,2332LL<<40),
-      reale(0x97062bLL,1458LL<<40),reale(-0x153cdfLL,946936LL<<32),
-      reale(0x253efed20cLL,0x6732257fe12e7LL),
-      // _C4x[401]
-      reale(0x9efff2bLL,836LL<<40),reale(-0x87dbb7aLL,5784LL<<36),
-      reale(0x4dc0e0bLL,2787LL<<40),reale(-0x79bbaaLL,38472LL<<36),
-      reale(-0x2c273bcLL,546LL<<40),reale(0x3c7f924LL,6392LL<<36),
-      reale(-0x2f7f0bfLL,289LL<<40),reale(0x1772679LL,20648LL<<36),
-      reale(-0x587d9eLL,625076LL<<32),reale(0x253efed20cLL,0x6732257fe12e7LL),
-      // _C4x[402]
-      reale(-0x339b0deLL,140LL<<44),reale(0x6b363e4LL,70LL<<44),
-      reale(-0x6942777LL,220LL<<44),reale(0x415624aLL,212LL<<44),
-      reale(-0x185f56bLL,180LL<<44),reale(0x37bb9bLL,2LL<<44),
-      reale(962676LL,68LL<<44),reale(-355363LL,5350LL<<36),
+      // C4[19], coeff of eps^29, polynomial in n of order 0
+      real(-278788LL<<32),reale(220556LL,0x6c98ea537e51fLL),
+      // C4[19], coeff of eps^28, polynomial in n of order 1
+      real(-0x25ce6eLL<<40),real(0x526878LL<<32),
+      reale(0x875e405LL,0x222cc7846d81LL),
+      // C4[19], coeff of eps^27, polynomial in n of order 2
+      reale(876102LL,3999LL<<40),reale(573743LL,11608LL<<36),
+      reale(-328616LL,988684LL<<32),reale(0x253efed20cLL,0x6732257fe12e7LL),
+      // C4[19], coeff of eps^26, polynomial in n of order 3
+      reale(-0x7616ccLL,188LL<<44),reale(0x3fe2d6LL,106LL<<44),
+      reale(-704449LL,252LL<<44),reale(-33250LL,43054LL<<36),
+      reale(0x253efed20cLL,0x6732257fe12e7LL),
+      // C4[19], coeff of eps^25, polynomial in n of order 4
+      reale(-0x14c3e1LL,3564LL<<40),reale(-0x44ac82LL,1429LL<<40),
+      reale(427896LL,598LL<<40),reale(0x17f87fLL,1191LL<<40),
+      reale(-614729LL,682264LL<<32),reale(0x253efed20cLL,0x6732257fe12e7LL),
+      // C4[19], coeff of eps^24, polynomial in n of order 5
+      reale(-379106LL,1572LL<<40),reale(0x13507daLL,139LL<<44),
+      reale(-0xfa1074LL,1276LL<<40),reale(0x541723LL,2712LL<<40),
+      reale(-439602LL,1300LL<<40),reale(-122602LL,8791LL<<36),
       reale(0x253efed20cLL,0x6732257fe12e7LL),
-      // _C4x[403]
+      // C4[19], coeff of eps^23, polynomial in n of order 6
       reale(-0x34ca7fdLL,2962LL<<40),reale(-0x26758eLL,1979LL<<40),
       reale(0x112edacLL,588LL<<40),reale(-0x61dc3eLL,3325LL<<40),
       reale(-0x42baddLL,3974LL<<40),reale(0x490036LL,2079LL<<40),
       reale(-0x1526d6LL,612696LL<<32),reale(0x253efed20cLL,0x6732257fe12e7LL),
-      // _C4x[404]
-      reale(-379106LL,1572LL<<40),reale(0x13507daLL,139LL<<44),
-      reale(-0xfa1074LL,1276LL<<40),reale(0x541723LL,2712LL<<40),
-      reale(-439602LL,1300LL<<40),reale(-122602LL,8791LL<<36),
+      // C4[19], coeff of eps^22, polynomial in n of order 7
+      reale(-0x339b0deLL,140LL<<44),reale(0x6b363e4LL,70LL<<44),
+      reale(-0x6942777LL,220LL<<44),reale(0x415624aLL,212LL<<44),
+      reale(-0x185f56bLL,180LL<<44),reale(0x37bb9bLL,2LL<<44),
+      reale(962676LL,68LL<<44),reale(-355363LL,5350LL<<36),
       reale(0x253efed20cLL,0x6732257fe12e7LL),
-      // _C4x[405]
-      reale(-0x14c3e1LL,3564LL<<40),reale(-0x44ac82LL,1429LL<<40),
-      reale(427896LL,598LL<<40),reale(0x17f87fLL,1191LL<<40),
-      reale(-614729LL,682264LL<<32),reale(0x253efed20cLL,0x6732257fe12e7LL),
-      // _C4x[406]
-      reale(-0x7616ccLL,188LL<<44),reale(0x3fe2d6LL,106LL<<44),
-      reale(-704449LL,252LL<<44),reale(-33250LL,43054LL<<36),
+      // C4[19], coeff of eps^21, polynomial in n of order 8
+      reale(0x9efff2bLL,836LL<<40),reale(-0x87dbb7aLL,5784LL<<36),
+      reale(0x4dc0e0bLL,2787LL<<40),reale(-0x79bbaaLL,38472LL<<36),
+      reale(-0x2c273bcLL,546LL<<40),reale(0x3c7f924LL,6392LL<<36),
+      reale(-0x2f7f0bfLL,289LL<<40),reale(0x1772679LL,20648LL<<36),
+      reale(-0x587d9eLL,625076LL<<32),reale(0x253efed20cLL,0x6732257fe12e7LL),
+      // C4[19], coeff of eps^20, polynomial in n of order 9
+      reale(0x3396d84LL,3458LL<<40),reale(-0x52718c9LL,223LL<<44),
+      reale(0x7187115LL,1054LL<<40),reale(-0x8586c9eLL,596LL<<40),
+      reale(0x841a240LL,2266LL<<40),reale(-0x6b26ec6LL,2040LL<<40),
+      reale(0x4440e43LL,2550LL<<40),reale(-0x1fbb2b3LL,2332LL<<40),
+      reale(0x97062bLL,1458LL<<40),reale(-0x153cdfLL,946936LL<<32),
       reale(0x253efed20cLL,0x6732257fe12e7LL),
-      // _C4x[407]
-      reale(876102LL,3999LL<<40),reale(573743LL,11608LL<<36),
-      reale(-328616LL,988684LL<<32),reale(0x253efed20cLL,0x6732257fe12e7LL),
-      // _C4x[408]
-      real(-0x25ce6eLL<<40),real(0x526878LL<<32),
-      reale(0x875e405LL,0x222cc7846d81LL),
-      // _C4x[409]
-      real(-278788LL<<32),reale(220556LL,0x6c98ea537e51fLL),
-      // _C4x[410]
-      reale(-0x705847LL,3097LL<<40),reale(0xe19d42LL,1096LL<<40),
-      reale(-0x191a1e2LL,4087LL<<40),reale(0x278fcc4LL,2166LL<<40),
-      reale(-0x36f262eLL,2453LL<<40),reale(0x42906c0LL,2084LL<<40),
-      reale(-0x44d01cbLL,2163LL<<40),reale(0x39a3603LL,1234LL<<40),
-      reale(-0x2109598LL,1041LL<<40),reale(0x8d95c8LL,42350LL<<36),
+      // C4[19], coeff of eps^19, polynomial in n of order 10
+      reale(0x29ae82LL,3225LL<<40),reale(-0x637e0cLL,22152LL<<36),
+      reale(0xd0b67eLL,3540LL<<40),reale(-0x1818a00LL,20984LL<<36),
+      reale(0x272bd05LL,3215LL<<40),reale(-0x37cef07LL,8808LL<<36),
+      reale(0x44ffda2LL,362LL<<40),reale(-0x48730b7LL,472LL<<36),
+      reale(0x3d5a819LL,3333LL<<40),reale(-0x2365723LL,27208LL<<36),
+      reale(0x983437LL,728420LL<<32),reale(0x253efed20cLL,0x6732257fe12e7LL),
+      // C4[20], coeff of eps^29, polynomial in n of order 0
+      real(8LL<<36),reale(386445LL,0x44b61aebc827LL),
+      // C4[20], coeff of eps^28, polynomial in n of order 1
+      reale(3670LL,3431LL<<40),real(-0x79ecc9eLL<<36),
+      reale(0x3e42bbf0LL,0x57ec63f8653c9LL),
+      // C4[20], coeff of eps^27, polynomial in n of order 2
+      reale(165149LL,3624LL<<40),reale(-25859LL,2212LL<<40),
+      real(-0x643c72cLL<<36),reale(0x1b3d32392LL,0x6776bbcac4a7fLL),
+      // C4[20], coeff of eps^26, polynomial in n of order 3
+      reale(-0x4244faLL,1716LL<<40),reale(185313LL,2424LL<<40),
+      reale(0x17a0b9LL,1084LL<<40),reale(-580655LL,3319LL<<40),
       reale(0x2727f83227LL,0x4baadf37ab169LL),
-      // _C4x[411]
-      reale(-0x54763dcLL,14LL<<44),reale(0x707c506LL,2132LL<<40),
-      reale(-0x80a2268LL,3880LL<<40),reale(0x7c5638eLL,956LL<<40),
-      reale(-0x62fb0c0LL,199LL<<44),reale(0x3e22c17LL,932LL<<40),
-      reale(-0x1c93423LL,952LL<<40),reale(0x86f52cLL,780LL<<40),
-      reale(-0x12e0c6LL,38044LL<<36),reale(0x2727f83227LL,0x4baadf37ab169LL),
-      // _C4x[412]
-      reale(-0x7ac7862LL,180LL<<40),reale(0x40d94faLL,3848LL<<40),
-      reale(279122LL,3420LL<<40),reale(-0x2da1937LL,11LL<<44),
-      reale(0x39fa588LL,1028LL<<40),reale(-0x2c6cf46LL,2648LL<<40),
-      reale(0x15bf3c2LL,172LL<<40),reale(-0x51f049LL,1867LL<<40),
+      // C4[20], coeff of eps^25, polynomial in n of order 4
+      reale(0x134c88bLL,149LL<<44),reale(-0xe5e8c7LL,3564LL<<40),
+      reale(0x493468LL,1320LL<<40),reale(-318600LL,2596LL<<40),
+      reale(-118862LL,50036LL<<36),reale(0x2727f83227LL,0x4baadf37ab169LL),
+      // C4[20], coeff of eps^24, polynomial in n of order 5
+      reale(-0x68d732LL,138LL<<40),reale(0x107b55fLL,2248LL<<40),
+      reale(-0x4e5e68LL,3718LL<<40),reale(-0x45c3d0LL,3044LL<<40),
+      reale(0x458b55LL,3074LL<<40),reale(-0x13c16fLL,49292LL<<36),
       reale(0x2727f83227LL,0x4baadf37ab169LL),
-      // _C4x[413]
+      // C4[20], coeff of eps^23, polynomial in n of order 6
       reale(0x6a2ccd4LL,1048LL<<40),reale(-0x61dbb7dLL,2340LL<<40),
       reale(0x3a48569LL,49LL<<44),reale(-0x14d642cLL,636LL<<40),
       reale(0x29d82eLL,2056LL<<40),reale(980372LL,2132LL<<40),
       reale(-327160LL,31972LL<<36),reale(0x2727f83227LL,0x4baadf37ab169LL),
-      // _C4x[414]
-      reale(-0x68d732LL,138LL<<40),reale(0x107b55fLL,2248LL<<40),
-      reale(-0x4e5e68LL,3718LL<<40),reale(-0x45c3d0LL,3044LL<<40),
-      reale(0x458b55LL,3074LL<<40),reale(-0x13c16fLL,49292LL<<36),
+      // C4[20], coeff of eps^22, polynomial in n of order 7
+      reale(-0x7ac7862LL,180LL<<40),reale(0x40d94faLL,3848LL<<40),
+      reale(279122LL,3420LL<<40),reale(-0x2da1937LL,11LL<<44),
+      reale(0x39fa588LL,1028LL<<40),reale(-0x2c6cf46LL,2648LL<<40),
+      reale(0x15bf3c2LL,172LL<<40),reale(-0x51f049LL,1867LL<<40),
       reale(0x2727f83227LL,0x4baadf37ab169LL),
-      // _C4x[415]
-      reale(0x134c88bLL,149LL<<44),reale(-0xe5e8c7LL,3564LL<<40),
-      reale(0x493468LL,1320LL<<40),reale(-318600LL,2596LL<<40),
-      reale(-118862LL,50036LL<<36),reale(0x2727f83227LL,0x4baadf37ab169LL),
-      // _C4x[416]
-      reale(-0x4244faLL,1716LL<<40),reale(185313LL,2424LL<<40),
-      reale(0x17a0b9LL,1084LL<<40),reale(-580655LL,3319LL<<40),
+      // C4[20], coeff of eps^21, polynomial in n of order 8
+      reale(-0x54763dcLL,14LL<<44),reale(0x707c506LL,2132LL<<40),
+      reale(-0x80a2268LL,3880LL<<40),reale(0x7c5638eLL,956LL<<40),
+      reale(-0x62fb0c0LL,199LL<<44),reale(0x3e22c17LL,932LL<<40),
+      reale(-0x1c93423LL,952LL<<40),reale(0x86f52cLL,780LL<<40),
+      reale(-0x12e0c6LL,38044LL<<36),reale(0x2727f83227LL,0x4baadf37ab169LL),
+      // C4[20], coeff of eps^20, polynomial in n of order 9
+      reale(-0x705847LL,3097LL<<40),reale(0xe19d42LL,1096LL<<40),
+      reale(-0x191a1e2LL,4087LL<<40),reale(0x278fcc4LL,2166LL<<40),
+      reale(-0x36f262eLL,2453LL<<40),reale(0x42906c0LL,2084LL<<40),
+      reale(-0x44d01cbLL,2163LL<<40),reale(0x39a3603LL,1234LL<<40),
+      reale(-0x2109598LL,1041LL<<40),reale(0x8d95c8LL,42350LL<<36),
       reale(0x2727f83227LL,0x4baadf37ab169LL),
-      // _C4x[417]
-      reale(165149LL,3624LL<<40),reale(-25859LL,2212LL<<40),
-      real(-0x643c72cLL<<36),reale(0x1b3d32392LL,0x6776bbcac4a7fLL),
-      // _C4x[418]
-      reale(3670LL,3431LL<<40),real(-0x79ecc9eLL<<36),
-      reale(0x3e42bbf0LL,0x57ec63f8653c9LL),
-      // _C4x[419]
-      real(8LL<<36),reale(386445LL,0x44b61aebc827LL),
-      // _C4x[420]
-      reale(0xf14d2aLL,242LL<<44),reale(-0x19f7773LL,3276LL<<40),
-      reale(0x27cb065LL,3544LL<<40),reale(-0x36013f8LL,164LL<<40),
-      reale(0x4038d5eLL,57LL<<44),reale(-0x4175017LL,3324LL<<40),
-      reale(0x36480daLL,840LL<<40),reale(-0x1eed84dLL,1236LL<<40),
-      reale(0x842565LL,61372LL<<36),reale(0x2910f19242LL,0x302398ef74febLL),
-      // _C4x[421]
+      // C4[21], coeff of eps^29, polynomial in n of order 0
+      real(-0xf64d18LL<<36),reale(0x89fcdedLL,0x92d5d14b2b5b9LL),
+      // C4[21], coeff of eps^28, polynomial in n of order 1
+      reale(-21807LL,8LL<<44),real(-0x6ae714LL<<40),
+      reale(0x1c915a22fLL,0x6644548ff9f4dLL),
+      // C4[21], coeff of eps^27, polynomial in n of order 2
+      real(-0x4a7828LL<<40),reale(66113LL,892LL<<40),
+      reale(-23878LL,9012LL<<36),reale(0x1c915a22fLL,0x6644548ff9f4dLL),
+      // C4[21], coeff of eps^26, polynomial in n of order 3
+      reale(-601428LL,33LL<<44),reale(181759LL,130LL<<44),
+      reale(-9603LL,251LL<<44),reale(-4984LL,43768LL<<36),
+      reale(0x1c915a22fLL,0x6644548ff9f4dLL),
+      // C4[21], coeff of eps^25, polynomial in n of order 4
+      reale(0xf974f5LL,227LL<<44),reale(-0x3d0ee8LL,916LL<<40),
+      reale(-0x47cb0fLL,920LL<<40),reale(0x424279LL,3420LL<<40),
+      reale(-0x127f61LL,61332LL<<36),reale(0x2910f19242LL,0x302398ef74febLL),
+      // C4[21], coeff of eps^24, polynomial in n of order 5
+      reale(-0x5ac25b1LL,218LL<<44),reale(0x3409bb9LL,56LL<<44),
+      reale(-0x11d875bLL,246LL<<44),reale(0x1eb2f9LL,60LL<<44),
+      reale(981374LL,50LL<<44),reale(-301722LL,3499LL<<40),
+      reale(0x2910f19242LL,0x302398ef74febLL),
+      // C4[21], coeff of eps^23, polynomial in n of order 6
+      reale(0x357280fLL,1064LL<<40),reale(0x6c5b77LL,3036LL<<40),
+      reale(-0x2e797e5LL,7LL<<44),reale(0x3780793LL,644LL<<40),
+      reale(-0x29a3644LL,696LL<<40),reale(0x143c211LL,2476LL<<40),
+      reale(-0x4c24abLL,21380LL<<36),reale(0x2910f19242LL,0x302398ef74febLL),
+      // C4[21], coeff of eps^22, polynomial in n of order 7
       reale(0x24fee78LL,189LL<<44),reale(-0x293d038LL,6LL<<44),
       reale(0x27065d3LL,151LL<<44),reale(-0x1e8a051LL,100LL<<44),
       reale(0x12eacc3LL,97LL<<44),reale(-0x89d1e9LL,130LL<<44),
       reale(0x28653fLL,187LL<<44),reale(-368525LL,32248LL<<36),
       reale(0xdb0508616LL,0x100bdda526ff9LL),
-      // _C4x[422]
-      reale(0x357280fLL,1064LL<<40),reale(0x6c5b77LL,3036LL<<40),
-      reale(-0x2e797e5LL,7LL<<44),reale(0x3780793LL,644LL<<40),
-      reale(-0x29a3644LL,696LL<<40),reale(0x143c211LL,2476LL<<40),
-      reale(-0x4c24abLL,21380LL<<36),reale(0x2910f19242LL,0x302398ef74febLL),
-      // _C4x[423]
-      reale(-0x5ac25b1LL,218LL<<44),reale(0x3409bb9LL,56LL<<44),
-      reale(-0x11d875bLL,246LL<<44),reale(0x1eb2f9LL,60LL<<44),
-      reale(981374LL,50LL<<44),reale(-301722LL,3499LL<<40),
-      reale(0x2910f19242LL,0x302398ef74febLL),
-      // _C4x[424]
-      reale(0xf974f5LL,227LL<<44),reale(-0x3d0ee8LL,916LL<<40),
-      reale(-0x47cb0fLL,920LL<<40),reale(0x424279LL,3420LL<<40),
-      reale(-0x127f61LL,61332LL<<36),reale(0x2910f19242LL,0x302398ef74febLL),
-      // _C4x[425]
-      reale(-601428LL,33LL<<44),reale(181759LL,130LL<<44),
-      reale(-9603LL,251LL<<44),reale(-4984LL,43768LL<<36),
-      reale(0x1c915a22fLL,0x6644548ff9f4dLL),
-      // _C4x[426]
-      real(-0x4a7828LL<<40),reale(66113LL,892LL<<40),
-      reale(-23878LL,9012LL<<36),reale(0x1c915a22fLL,0x6644548ff9f4dLL),
-      // _C4x[427]
-      reale(-21807LL,8LL<<44),real(-0x6ae714LL<<40),
-      reale(0x1c915a22fLL,0x6644548ff9f4dLL),
-      // _C4x[428]
-      real(-0xf64d18LL<<36),reale(0x89fcdedLL,0x92d5d14b2b5b9LL),
-      // _C4x[429]
-      reale(-0x1ab3b1eLL,2856LL<<40),reale(0x27e3b0dLL,121LL<<44),
-      reale(-0x350196eLL,4088LL<<40),reale(0x3df9fb2LL,166LL<<44),
-      reale(-0x3e5ab9aLL,3272LL<<40),reale(0x333ca85LL,211LL<<44),
-      reale(-0x1d08c5dLL,408LL<<40),reale(0x7bb613LL,715LL<<40),
+      // C4[21], coeff of eps^21, polynomial in n of order 8
+      reale(0xf14d2aLL,242LL<<44),reale(-0x19f7773LL,3276LL<<40),
+      reale(0x27cb065LL,3544LL<<40),reale(-0x36013f8LL,164LL<<40),
+      reale(0x4038d5eLL,57LL<<44),reale(-0x4175017LL,3324LL<<40),
+      reale(0x36480daLL,840LL<<40),reale(-0x1eed84dLL,1236LL<<40),
+      reale(0x842565LL,61372LL<<36),reale(0x2910f19242LL,0x302398ef74febLL),
+      // C4[22], coeff of eps^29, polynomial in n of order 0
+      real(-1832LL<<40),reale(0x1ece7bLL,0x935060fc493cdLL),
+      // C4[22], coeff of eps^28, polynomial in n of order 1
+      reale(64733LL,244LL<<44),reale(-22614LL,152LL<<40),
+      reale(0x1de5820ccLL,0x6511ed552f41bLL),
+      // C4[22], coeff of eps^27, polynomial in n of order 2
+      reale(158513LL,3LL<<48),reale(-6163LL,24LL<<44),reale(-4787LL,200LL<<40),
+      reale(0x1de5820ccLL,0x6511ed552f41bLL),
+      // C4[22], coeff of eps^26, polynomial in n of order 3
+      reale(-130439LL,1688LL<<40),reale(-208063LL,209LL<<44),
+      reale(179942LL,3976LL<<40),reale(-49467LL,3929LL<<40),
+      reale(0x1de5820ccLL,0x6511ed552f41bLL),
+      // C4[22], coeff of eps^25, polynomial in n of order 4
+      reale(0x205af6LL,24LL<<44),reale(-697804LL,178LL<<44),
+      reale(61914LL,12LL<<44),reale(42203LL,230LL<<44),
+      reale(-12121LL,3010LL<<40),reale(0x1de5820ccLL,0x6511ed552f41bLL),
+      // C4[22], coeff of eps^24, polynomial in n of order 5
+      reale(0xc22191LL,33LL<<44),reale(-0x2ed4670LL,52LL<<44),
+      reale(0x3519274LL,71LL<<44),reale(-0x271a5b7LL,26LL<<44),
+      reale(0x12e2308LL,109LL<<44),reale(-0x46fd3aLL,2422LL<<40),
       reale(0x2af9eaf25dLL,0x149c52a73ee6dLL),
-      // _C4x[430]
+      // C4[22], coeff of eps^23, polynomial in n of order 6
       reale(-0x76d66c5LL,28LL<<44),reale(0x6e4c116LL,226LL<<44),
       reale(-0x54f813bLL,104LL<<44),reale(0x33fe252LL,238LL<<44),
       reale(-0x17759d5LL,180LL<<44),reale(0x6d4e33LL,250LL<<44),
       reale(-992760LL,414LL<<40),reale(0x2af9eaf25dLL,0x149c52a73ee6dLL),
-      // _C4x[431]
-      reale(0xc22191LL,33LL<<44),reale(-0x2ed4670LL,52LL<<44),
-      reale(0x3519274LL,71LL<<44),reale(-0x271a5b7LL,26LL<<44),
-      reale(0x12e2308LL,109LL<<44),reale(-0x46fd3aLL,2422LL<<40),
+      // C4[22], coeff of eps^22, polynomial in n of order 7
+      reale(-0x1ab3b1eLL,2856LL<<40),reale(0x27e3b0dLL,121LL<<44),
+      reale(-0x350196eLL,4088LL<<40),reale(0x3df9fb2LL,166LL<<44),
+      reale(-0x3e5ab9aLL,3272LL<<40),reale(0x333ca85LL,211LL<<44),
+      reale(-0x1d08c5dLL,408LL<<40),reale(0x7bb613LL,715LL<<40),
       reale(0x2af9eaf25dLL,0x149c52a73ee6dLL),
-      // _C4x[432]
-      reale(0x205af6LL,24LL<<44),reale(-697804LL,178LL<<44),
-      reale(61914LL,12LL<<44),reale(42203LL,230LL<<44),
-      reale(-12121LL,3010LL<<40),reale(0x1de5820ccLL,0x6511ed552f41bLL),
-      // _C4x[433]
-      reale(-130439LL,1688LL<<40),reale(-208063LL,209LL<<44),
-      reale(179942LL,3976LL<<40),reale(-49467LL,3929LL<<40),
-      reale(0x1de5820ccLL,0x6511ed552f41bLL),
-      // _C4x[434]
-      reale(158513LL,3LL<<48),reale(-6163LL,24LL<<44),reale(-4787LL,200LL<<40),
-      reale(0x1de5820ccLL,0x6511ed552f41bLL),
-      // _C4x[435]
-      reale(64733LL,244LL<<44),reale(-22614LL,152LL<<40),
-      reale(0x1de5820ccLL,0x6511ed552f41bLL),
-      // _C4x[436]
-      real(-1832LL<<40),reale(0x1ece7bLL,0x935060fc493cdLL),
-      // _C4x[437]
-      reale(0x1bbca3LL,3LL<<48),reale(-0x24271bLL,72LL<<44),
-      reale(0x299ea8LL,2LL<<48),reale(-0x2960b7LL,248LL<<44),
-      reale(0x21b719LL,1LL<<48),reale(-0x130279LL,168LL<<44),
-      reale(330919LL,3958LL<<40),reale(0x1f39a9f69LL,0x63df861a648e9LL),
-      // _C4x[438]
+      // C4[23], coeff of eps^29, polynomial in n of order 0
+      reale(-4290LL,3928LL<<40),reale(0x63ebb97bLL,0x7a5fe79ee0e95LL),
+      // C4[23], coeff of eps^28, polynomial in n of order 1
+      real(-10808LL<<48),real(-234789LL<<44),
+      reale(0x63ebb97bLL,0x7a5fe79ee0e95LL),
+      // C4[23], coeff of eps^27, polynomial in n of order 2
+      reale(-209745LL,12LL<<48),reale(171585LL,6LL<<48),
+      reale(-46527LL,344LL<<40),reale(0x1f39a9f69LL,0x63df861a648e9LL),
+      // C4[23], coeff of eps^26, polynomial in n of order 3
+      reale(-599195LL,8LL<<48),reale(41297LL,0LL),reale(41388LL,8LL<<48),
+      reale(-11219LL,62LL<<44),reale(0x1f39a9f69LL,0x63df861a648e9LL),
+      // C4[23], coeff of eps^25, polynomial in n of order 4
+      reale(-0x209048LL,2LL<<48),reale(0x23540bLL,248LL<<44),
+      reale(-0x19982fLL,1LL<<48),reale(805613LL,168LL<<44),
+      reale(-189150LL,1670LL<<40),reale(0x1f39a9f69LL,0x63df861a648e9LL),
+      // C4[23], coeff of eps^24, polynomial in n of order 5
       reale(0x48559cLL,2LL<<48),reale(-0x36ec9fLL,8LL<<48),
       reale(0x213b34LL,14LL<<48),reale(-974430LL,12LL<<48),
       reale(282071LL,10LL<<48),reale(-38932LL,980LL<<40),
       reale(0x1f39a9f69LL,0x63df861a648e9LL),
-      // _C4x[439]
-      reale(-0x209048LL,2LL<<48),reale(0x23540bLL,248LL<<44),
-      reale(-0x19982fLL,1LL<<48),reale(805613LL,168LL<<44),
-      reale(-189150LL,1670LL<<40),reale(0x1f39a9f69LL,0x63df861a648e9LL),
-      // _C4x[440]
-      reale(-599195LL,8LL<<48),reale(41297LL,0LL),reale(41388LL,8LL<<48),
-      reale(-11219LL,62LL<<44),reale(0x1f39a9f69LL,0x63df861a648e9LL),
-      // _C4x[441]
-      reale(-209745LL,12LL<<48),reale(171585LL,6LL<<48),
-      reale(-46527LL,344LL<<40),reale(0x1f39a9f69LL,0x63df861a648e9LL),
-      // _C4x[442]
-      real(-10808LL<<48),real(-234789LL<<44),
-      reale(0x63ebb97bLL,0x7a5fe79ee0e95LL),
-      // _C4x[443]
-      reale(-4290LL,3928LL<<40),reale(0x63ebb97bLL,0x7a5fe79ee0e95LL),
-      // _C4x[444]
+      // C4[23], coeff of eps^23, polynomial in n of order 6
+      reale(0x1bbca3LL,3LL<<48),reale(-0x24271bLL,72LL<<44),
+      reale(0x299ea8LL,2LL<<48),reale(-0x2960b7LL,248LL<<44),
+      reale(0x21b719LL,1LL<<48),reale(-0x130279LL,168LL<<44),
+      reale(330919LL,3958LL<<40),reale(0x1f39a9f69LL,0x63df861a648e9LL),
+      // C4[24], coeff of eps^29, polynomial in n of order 0
+      real(-5756LL<<44),reale(0x2abccf4LL,0x37a4fd885dffdLL),
+      // C4[24], coeff of eps^28, polynomial in n of order 1
+      reale(32742LL,12LL<<48),reale(-8771LL,88LL<<44),
+      reale(0x682c3934LL,0x7a229fc651f8bLL),
+      // C4[24], coeff of eps^27, polynomial in n of order 2
+      reale(4928LL,8LL<<48),reale(8067LL,4LL<<48),reale(-2081LL,84LL<<44),
+      reale(0x682c3934LL,0x7a229fc651f8bLL),
+      // C4[24], coeff of eps^26, polynomial in n of order 3
+      reale(0x21c9baLL,0LL),reale(-0x182040LL,0LL),reale(755790LL,0LL),
+      reale(-177364LL,200LL<<44),reale(0x208dd1e06LL,0x62ad1edf99db7LL),
+      // C4[24], coeff of eps^25, polynomial in n of order 4
+      reale(-0x110b1bLL,0LL),reale(668788LL,12LL<<48),reale(-296918LL,8LL<<48),
+      reale(85476LL,4LL<<48),reale(-11753LL,4LL<<44),
+      reale(0xad9f0a02LL,0x20e45f9fddf3dLL),
+      // C4[24], coeff of eps^24, polynomial in n of order 5
       reale(-0x236a61LL,13LL<<48),reale(0x283148LL,4LL<<48),
       reale(-0x2785ccLL,11LL<<48),reale(0x1ff458LL,2LL<<48),
       reale(-0x11ef03LL,9LL<<48),reale(311454LL,22LL<<44),
       reale(0x208dd1e06LL,0x62ad1edf99db7LL),
-      // _C4x[445]
-      reale(-0x110b1bLL,0LL),reale(668788LL,12LL<<48),reale(-296918LL,8LL<<48),
-      reale(85476LL,4LL<<48),reale(-11753LL,4LL<<44),
-      reale(0xad9f0a02LL,0x20e45f9fddf3dLL),
-      // _C4x[446]
-      reale(0x21c9baLL,0LL),reale(-0x182040LL,0LL),reale(755790LL,0LL),
-      reale(-177364LL,200LL<<44),reale(0x208dd1e06LL,0x62ad1edf99db7LL),
-      // _C4x[447]
-      reale(4928LL,8LL<<48),reale(8067LL,4LL<<48),reale(-2081LL,84LL<<44),
-      reale(0x682c3934LL,0x7a229fc651f8bLL),
-      // _C4x[448]
-      reale(32742LL,12LL<<48),reale(-8771LL,88LL<<44),
-      reale(0x682c3934LL,0x7a229fc651f8bLL),
-      // _C4x[449]
-      real(-5756LL<<44),reale(0x2abccf4LL,0x37a4fd885dffdLL),
-      // _C4x[450]
-      reale(508963LL,0LL),reale(-495427LL,4LL<<48),reale(397689LL,8LL<<48),
-      reale(-222239LL,12LL<<48),reale(58764LL,236LL<<44),
+      // C4[25], coeff of eps^29, polynomial in n of order 0
+      real(-14828LL<<44),reale(0xc21a5bLL,0x2bd144a4925efLL),
+      // C4[25], coeff of eps^28, polynomial in n of order 1
+      real(602LL<<52),real(-2379LL<<48),reale(0x85721eaLL,0xe1fdf3124a145LL),
+      // C4[25], coeff of eps^27, polynomial in n of order 2
+      reale(-298604LL,8LL<<48),reale(142145LL,4LL<<48),reale(-33347LL,4LL<<44),
       reale(0x6c6cb8edLL,0x79e557edc3081LL),
-      // _C4x[451]
+      // C4[25], coeff of eps^26, polynomial in n of order 3
       reale(370617LL,0LL),reale(-163358LL,0LL),reale(46787LL,0LL),
       reale(-6411LL,72LL<<44),reale(0x6c6cb8edLL,0x79e557edc3081LL),
-      // _C4x[452]
-      reale(-298604LL,8LL<<48),reale(142145LL,4LL<<48),reale(-33347LL,4LL<<44),
+      // C4[25], coeff of eps^25, polynomial in n of order 4
+      reale(508963LL,0LL),reale(-495427LL,4LL<<48),reale(397689LL,8LL<<48),
+      reale(-222239LL,12LL<<48),reale(58764LL,236LL<<44),
       reale(0x6c6cb8edLL,0x79e557edc3081LL),
-      // _C4x[453]
-      real(602LL<<52),real(-2379LL<<48),reale(0x85721eaLL,0xe1fdf3124a145LL),
-      // _C4x[454]
-      real(-14828LL<<44),reale(0xc21a5bLL,0x2bd144a4925efLL),
-      // _C4x[455]
-      reale(-36491LL,8LL<<48),reale(29097LL,0LL),reale(-16196LL,8LL<<48),
-      reale(4273LL,13LL<<48),reale(0x8aadcf9LL,0x1d0ced8b7a293LL),
-      // _C4x[456]
-      reale(-11556LL,0LL),reale(3294LL,0LL),real(-7198LL<<48),
-      reale(0x8aadcf9LL,0x1d0ced8b7a293LL),
-      // _C4x[457]
+      // C4[26], coeff of eps^29, polynomial in n of order 0
+      real(-2LL<<48),reale(131359LL,0xe834f81ee20c1LL),
+      // C4[26], coeff of eps^28, polynomial in n of order 1
       reale(10305LL,0LL),reale(-2418LL,14LL<<48),
       reale(0x8aadcf9LL,0x1d0ced8b7a293LL),
-      // _C4x[458]
-      real(-2LL<<48),reale(131359LL,0xe834f81ee20c1LL),
-      // _C4x[459]
+      // C4[26], coeff of eps^27, polynomial in n of order 2
+      reale(-11556LL,0LL),reale(3294LL,0LL),real(-7198LL<<48),
+      reale(0x8aadcf9LL,0x1d0ced8b7a293LL),
+      // C4[26], coeff of eps^26, polynomial in n of order 3
+      reale(-36491LL,8LL<<48),reale(29097LL,0LL),reale(-16196LL,8LL<<48),
+      reale(4273LL,13LL<<48),reale(0x8aadcf9LL,0x1d0ced8b7a293LL),
+      // C4[27], coeff of eps^29, polynomial in n of order 0
+      real(-4058LL<<48),reale(0xffd800LL,0xd0e6a80084b19LL),
+      // C4[27], coeff of eps^28, polynomial in n of order 1
+      real(7LL<<56),real(-244LL<<48),reale(0x554800LL,0x45a238002c3b3LL),
+      // C4[27], coeff of eps^27, polynomial in n of order 2
       reale(3080LL,0LL),real(-1708LL<<52),real(7198LL<<48),
       reale(0xffd800LL,0xd0e6a80084b19LL),
-      // _C4x[460]
-      real(7LL<<56),real(-244LL<<48),reale(0x554800LL,0x45a238002c3b3LL),
-      // _C4x[461]
-      real(-4058LL<<48),reale(0xffd800LL,0xd0e6a80084b19LL),
-      // _C4x[462]
-      real(-232LL<<52),real(61LL<<52),reale(0x25e0cfLL,0x949f282aa1f11LL),
-      // _C4x[463]
+      // C4[28], coeff of eps^29, polynomial in n of order 0
       real(-2LL<<52),reale(827461LL,0x318a62b8e0a5bLL),
-      // _C4x[464]
+      // C4[28], coeff of eps^28, polynomial in n of order 1
+      real(-232LL<<52),real(61LL<<52),reale(0x25e0cfLL,0x949f282aa1f11LL),
+      // C4[29], coeff of eps^29, polynomial in n of order 0
       real(2LL<<52),reale(88602LL,0xec373d36a45dfLL),
     };
 #else
 #error "Bad value for GEOGRAPHICLIB_GEODESICEXACT_ORDER"
 #endif
-    return coeff;
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(coeff) / sizeof(real) ==
+                                (nC4_ * (nC4_ + 1) * (nC4_ + 5)) / 6,
+                                "Coefficient array size mismatch in C4coeff");
+    int o = 0, k = 0;
+    for (int l = 0; l < nC4_; ++l) {        // l is index of C4[l]
+      for (int j = nC4_ - 1; j >= l; --j) { // coeff of eps^j
+        int m = nC4_ - j - 1;               // order of polynomial in n
+        _C4x[k++] = Math::polyval(m, coeff + o, _n) / coeff[o + m + 1];
+        o += m + 2;
+      }
+    }
+    // Post condition: o == sizeof(coeff) / sizeof(real) && k == nC4x_
+    if  (!(o == sizeof(coeff) / sizeof(real) && k == nC4x_))
+      throw GeographicErr("C4 misalignment");
   }
 
 } // namespace GeographicLib
diff --git a/src/GeodesicLine.cpp b/src/GeodesicLine.cpp
index 39b1af7..0a3d686 100644
--- a/src/GeodesicLine.cpp
+++ b/src/GeodesicLine.cpp
@@ -38,15 +38,15 @@ namespace GeographicLib {
     : tiny_(g.tiny_)
     , _lat1(lat1)
     , _lon1(lon1)
-    // Guard against underflow in salp0
+    // Guard against underflow in salp0.  Also -0 is converted to +0.
     , _azi1(Math::AngRound(Math::AngNormalize(azi1)))
     , _a(g._a)
     , _f(g._f)
     , _b(g._b)
     , _c2(g._c2)
     , _f1(g._f1)
-      // Always allow latitude and azimuth
-    , _caps(caps | LATITUDE | AZIMUTH)
+      // Always allow latitude and azimuth and unrolling of longitude
+    , _caps(caps | LATITUDE | AZIMUTH | LONG_UNROLL)
   {
     real alp1 = _azi1 * Math::degree();
     // Enforce sin(pi) == 0 and cos(pi/2) == 0.  Better to face the ensuing
@@ -211,10 +211,12 @@ namespace GeographicLib {
     if (outmask & LONGITUDE) {
       // tan(omg2) = sin(alp0) * tan(sig2)
       real somg2 = _salp0 * ssig2, comg2 = csig2;  // No need to normalize
+      int E = _salp0 < 0 ? -1 : 1;                 // east-going?
       // omg12 = omg2 - omg1
-      real omg12 = outmask & LONG_NOWRAP ? sig12
-        - (atan2(ssig2, csig2) - atan2(_ssig1, _csig1))
-        + (atan2(somg2, comg2) - atan2(_somg1, _comg1))
+      real omg12 = outmask & LONG_UNROLL
+        ? E * (sig12
+               - (atan2(    ssig2, csig2) - atan2(    _ssig1, _csig1))
+               + (atan2(E * somg2, comg2) - atan2(E * _somg1, _comg1)))
         : atan2(somg2 * _comg1 - comg2 * _somg1,
                 comg2 * _comg1 + somg2 * _somg1);
       real lam12 = omg12 + _A3c *
@@ -223,7 +225,7 @@ namespace GeographicLib {
       real lon12 = lam12 / Math::degree();
       // Use Math::AngNormalize2 because longitude might have wrapped
       // multiple times.
-      lon2 = outmask & LONG_NOWRAP ? _lon1 + lon12 :
+      lon2 = outmask & LONG_UNROLL ? _lon1 + lon12 :
         Math::AngNormalize(Math::AngNormalize(_lon1) +
                            Math::AngNormalize2(lon12));
     }
@@ -232,7 +234,6 @@ namespace GeographicLib {
       lat2 = atan2(sbet2, _f1 * cbet2) / Math::degree();
 
     if (outmask & AZIMUTH)
-      // minus signs give range [-180, 180). 0- converts -0 to +0.
       azi2 = Math::atan2d(salp2, calp2);
 
     if (outmask & (REDUCEDLENGTH | GEODESICSCALE)) {
diff --git a/src/GeodesicLineExact.cpp b/src/GeodesicLineExact.cpp
index e282377..bb78a57 100644
--- a/src/GeodesicLineExact.cpp
+++ b/src/GeodesicLineExact.cpp
@@ -47,8 +47,8 @@ namespace GeographicLib {
     , _f1(g._f1)
     , _e2(g._e2)
     , _E(0, 0)
-      // Always allow latitude and azimuth
-    , _caps(caps | LATITUDE | AZIMUTH)
+      // Always allow latitude and azimuth and unrolling of longitude
+    , _caps(caps | LATITUDE | AZIMUTH | LONG_UNROLL)
   {
     real alp1 = _azi1 * Math::degree();
     // Enforce sin(pi) == 0 and cos(pi/2) == 0.  Better to face the ensuing
@@ -179,11 +179,13 @@ namespace GeographicLib {
 
     if (outmask & LONGITUDE) {
       real somg2 = _salp0 * ssig2, comg2 = csig2;  // No need to normalize
+      int E = _salp0 < 0 ? -1 : 1;                 // east-going?
       // Without normalization we have schi2 = somg2.
       real cchi2 =  _f1 * dn2 *  comg2;
-      real chi12 = outmask & LONG_NOWRAP ? sig12
-        - (atan2(ssig2, csig2) - atan2(_ssig1, _csig1))
-        + (atan2(somg2, cchi2) - atan2(_somg1, _cchi1))
+      real chi12 = outmask & LONG_UNROLL
+        ? E * (sig12
+               - (atan2(    ssig2, csig2) - atan2(    _ssig1, _csig1))
+               + (atan2(E * somg2, cchi2) - atan2(E * _somg1, _cchi1)))
         : atan2(somg2 * _cchi1 - cchi2 * _somg1,
                 cchi2 * _cchi1 + somg2 * _somg1);
       real lam12 = chi12 -
@@ -191,7 +193,7 @@ namespace GeographicLib {
       real lon12 = lam12 / Math::degree();
       // Use Math::AngNormalize2 because longitude might have wrapped
       // multiple times.
-      lon2 = outmask & LONG_NOWRAP ? _lon1 + lon12 :
+      lon2 = outmask & LONG_UNROLL ? _lon1 + lon12 :
         Math::AngNormalize(Math::AngNormalize(_lon1) +
                            Math::AngNormalize2(lon12));
     }
@@ -200,7 +202,6 @@ namespace GeographicLib {
       lat2 = atan2(sbet2, _f1 * cbet2) / Math::degree();
 
     if (outmask & AZIMUTH)
-      // minus signs give range [-180, 180). 0- converts -0 to +0.
       azi2 = Math::atan2d(salp2, calp2);
 
     if (outmask & (REDUCEDLENGTH | GEODESICSCALE)) {
diff --git a/src/GeographicLib.pro b/src/GeographicLib.pro
index 5f72f7b..d26018b 100644
--- a/src/GeographicLib.pro
+++ b/src/GeographicLib.pro
@@ -1,4 +1,4 @@
-VERSION = 14.0.3
+VERSION = 14.1.0
 
 TEMPLATE = lib
 
diff --git a/src/MGRS.cpp b/src/MGRS.cpp
index 213d46c..d801e17 100644
--- a/src/MGRS.cpp
+++ b/src/MGRS.cpp
@@ -2,7 +2,7 @@
  * \file MGRS.cpp
  * \brief Implementation for GeographicLib::MGRS class
  *
- * Copyright (c) Charles Karney (2008-2014) <charles at karney.com> and licensed
+ * Copyright (c) Charles Karney (2008-2015) <charles at karney.com> and licensed
  * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
@@ -339,15 +339,17 @@ namespace GeographicLib {
   }
 
   int MGRS::UTMRow(int iband, int icol, int irow) {
-    // Input is MGRS (periodic) row index and output is true row index.  Band
-    // index is in [-10, 10) (as returned by LatitudeBand).  Column index
-    // origin is easting = 100km.  Returns maxutmSrow_ if irow and iband are
-    // incompatible.  Row index origin is equator.
+    // Input is iband = band index in [-10, 10) (as returned by LatitudeBand),
+    // icol = column index in [0,8) with origin of easting = 100km, and irow =
+    // periodic row index in [0,20) with origin = equator.  Output is true row
+    // index in [-90, 95).  Returns maxutmSrow_ = 100, if irow and iband are
+    // incompatible.
 
     // Estimate center row number for latitude band
     // 90 deg = 100 tiles; 1 band = 8 deg = 100*8/90 tiles
     real c = 100 * (8 * iband + 4)/real(90);
     bool northp = iband >= 0;
+    // These are safe bounds on the rows
     //  iband minrow maxrow
     //   -10    -90    -81
     //    -9    -80    -72
@@ -375,10 +377,16 @@ namespace GeographicLib {
       maxrow = iband <   9 ?
       int(floor(c + real(4.4) - real(0.1) * northp)) :  94,
       baserow = (minrow + maxrow) / 2 - utmrowperiod_ / 2;
-    // Add maxutmSrow_ = 5 * utmrowperiod_ to ensure operand is positive
+    // Offset irow by the multiple of utmrowperiod_ which brings it as close as
+    // possible to the center of the latitude band, (minrow + maxrow) / 2.
+    // (Add maxutmSrow_ = 5 * utmrowperiod_ to ensure operand is positive.)
     irow = (irow - baserow + maxutmSrow_) % utmrowperiod_ + baserow;
-    if (irow < minrow || irow > maxrow) {
-      // Northing = 71*100km and 80*100km intersect band boundaries
+    if (!( irow >= minrow && irow <= maxrow )) {
+      // Outside the safe bounds, so need to check...
+      // Northing = 71e5 and 80e5 intersect band boundaries
+      //   y = 71e5 in scol = 2 (x = [3e5,4e5] and x = [6e5,7e5])
+      //   y = 80e5 in scol = 1 (x = [2e5,3e5] and x = [7e5,8e5])
+      // This holds for all the ellipsoids given in NGA.SIG.0012_2.0.0_UTMUPS.
       // The following deals with these special cases.
       int
         // Fold [-10,-1] -> [9,0]
@@ -387,6 +395,8 @@ namespace GeographicLib {
         srow = irow >= 0 ? irow : -irow - 1,
         // Fold [4,7] -> [3,0]
         scol = icol < 4 ? icol : -icol + 7;
+      // For example, the safe rows for band 8 are 71 - 79.  However row 70 is
+      // allowed if scol = [2,3] and row 80 is allowed if scol = [0,1].
       if ( ! ( (srow == 70 && sband == 8 && scol >= 2) ||
                (srow == 71 && sband == 7 && scol <= 2) ||
                (srow == 79 && sband == 9 && scol >= 1) ||
@@ -396,4 +406,63 @@ namespace GeographicLib {
     return irow;
   }
 
+  void MGRS::Check() {
+    real lat, lon, x, y, t = tile_; int zone; bool northp;
+    UTMUPS::Reverse(31, true , 1*t,  0*t, lat, lon);
+    if (!( lon <   0 ))
+      throw GeographicErr("MGRS::Check: equator coverage failure");
+    UTMUPS::Reverse(31, true , 1*t, 95*t, lat, lon);
+    if (!( lat >  84 ))
+      throw GeographicErr("MGRS::Check: UTM doesn't reach latitude = 84");
+    UTMUPS::Reverse(31, false, 1*t, 10*t, lat, lon);
+    if (!( lat < -80 ))
+      throw GeographicErr("MGRS::Check: UTM doesn't reach latitude = -80");
+    UTMUPS::Forward(56,  3, zone, northp, x, y, 32);
+    if (!( x > 1*t ))
+      throw GeographicErr("MGRS::Check: Norway exception creates a gap");
+    UTMUPS::Forward(72, 21, zone, northp, x, y, 35);
+    if (!( x > 1*t ))
+      throw GeographicErr("MGRS::Check: Svalbard exception creates a gap");
+    UTMUPS::Reverse(0, true , 20*t, 13*t, lat, lon);
+    if (!( lat <  84 ))
+      throw GeographicErr("MGRS::Check: North UPS doesn't reach latitude = 84");
+    UTMUPS::Reverse(0, false, 20*t,  8*t, lat, lon);
+    if (!( lat > -80 ))
+      throw
+        GeographicErr("MGRS::Check: South UPS doesn't reach latitude = -80");
+    // Entries are [band, x, y] either side of the band boundaries.  Units for
+    // x, y are t = 100km.
+    const short tab[] = {
+      0, 5,  0,   0, 9,  0,     // south edge of band 0
+      0, 5,  8,   0, 9,  8,     // north edge of band 0
+      1, 5,  9,   1, 9,  9,     // south edge of band 1
+      1, 5, 17,   1, 9, 17,     // north edge of band 1
+      2, 5, 18,   2, 9, 18,     // etc.
+      2, 5, 26,   2, 9, 26,
+      3, 5, 27,   3, 9, 27,
+      3, 5, 35,   3, 9, 35,
+      4, 5, 36,   4, 9, 36,
+      4, 5, 44,   4, 9, 44,
+      5, 5, 45,   5, 9, 45,
+      5, 5, 53,   5, 9, 53,
+      6, 5, 54,   6, 9, 54,
+      6, 5, 62,   6, 9, 62,
+      7, 5, 63,   7, 9, 63,
+      7, 5, 70,   7, 7, 70,   7, 7, 71,   7, 9, 71, // y = 71t crosses boundary
+      8, 5, 71,   8, 6, 71,   8, 6, 72,   8, 9, 72, // between bands 7 and 8.
+      8, 5, 79,   8, 8, 79,   8, 8, 80,   8, 9, 80, // y = 80t crosses boundary
+      9, 5, 80,   9, 7, 80,   9, 7, 81,   9, 9, 81, // between bands 8 and 9.
+      9, 5, 95,   9, 9, 95,     // north edge of band 9
+    };
+    const int bandchecks = sizeof(tab) / (3 * sizeof(short));
+    for (int i = 0; i < bandchecks; ++i) {
+      UTMUPS::Reverse(38, true, tab[3*i+1]*t, tab[3*i+2]*t, lat, lon);
+      if (!( LatitudeBand(lat) == tab[3*i+0] ))
+        throw GeographicErr("MGRS::Check: Band error, b = " +
+                            Utility::str(tab[3*i+0]) + ", x = " +
+                            Utility::str(tab[3*i+1]) + "00km, y = " +
+                            Utility::str(tab[3*i+2]) + "00km");
+    }
+  }
+
 } // namespace GeographicLib
diff --git a/src/MagneticCircle.cpp b/src/MagneticCircle.cpp
index f99e6c3..714204d 100644
--- a/src/MagneticCircle.cpp
+++ b/src/MagneticCircle.cpp
@@ -2,8 +2,8 @@
  * \file MagneticCircle.cpp
  * \brief Implementation for GeographicLib::MagneticCircle 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-2015) <charles at karney.com> and licensed
+ * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  **********************************************************************/
 
@@ -24,16 +24,19 @@ namespace GeographicLib {
     real M[Geocentric::dim2_];
     Geocentric::Rotation(_sphi, _cphi, slam, clam, M);
     real BX0, BY0, BZ0, BX1, BY1, BZ1; // Components in geocentric basis
+    real BXc = 0, BYc = 0, BZc = 0;
     _circ0(clam, slam, BX0, BY0, BZ0);
     _circ1(clam, slam, BX1, BY1, BZ1);
+    if (_constterm)
+      _circ2(clam, slam, BXc, BYc, BZc);
     if (_interpolate) {
       BX1 = (BX1 - BX0) / _dt0;
       BY1 = (BY1 - BY0) / _dt0;
       BZ1 = (BZ1 - BZ0) / _dt0;
     }
-    BX0 += _t1 * BX1;
-    BY0 += _t1 * BY1;
-    BZ0 += _t1 * BZ1;
+    BX0 += _t1 * BX1 + BXc;
+    BY0 += _t1 * BY1 + BYc;
+    BZ0 += _t1 * BZ1 + BZc;
     if (diffp) {
       Geocentric::Unrotate(M, BX1, BY1, BZ1, Bxt, Byt, Bzt);
       Bxt *= - _a;
diff --git a/src/MagneticModel.cpp b/src/MagneticModel.cpp
index 8eb65f6..d82e5b7 100644
--- a/src/MagneticModel.cpp
+++ b/src/MagneticModel.cpp
@@ -48,14 +48,15 @@ namespace GeographicLib {
     , _hmin(Math::NaN())
     , _hmax(Math::NaN())
     , _Nmodels(1)
+    , _Nconstants(0)
     , _norm(SphericalHarmonic::SCHMIDT)
     , _earth(earth)
   {
     if (_dir.empty())
       _dir = DefaultMagneticPath();
     ReadMetadata(_name);
-    _G.resize(_Nmodels + 1);
-    _H.resize(_Nmodels + 1);
+    _G.resize(_Nmodels + 1 + _Nconstants);
+    _H.resize(_Nmodels + 1 + _Nconstants);
     {
       string coeff = _filename + ".cof";
       ifstream coeffstr(coeff.c_str(), ios::binary);
@@ -68,7 +69,7 @@ namespace GeographicLib {
       id[idlength_] = '\0';
       if (_id != string(id))
         throw GeographicErr("ID mismatch: " + _id + " vs " + id);
-      for (int i = 0; i <= _Nmodels; ++i) {
+      for (int i = 0; i < _Nmodels + 1 + _Nconstants; ++i) {
         int N, M;
         SphericalEngine::coeff::readcoeffs(coeffstr, N, M, _G[i], _H[i]);
         if (!(M < 0 || _G[i][0] == 0))
@@ -96,7 +97,7 @@ namespace GeographicLib {
     if (n != string::npos)
       n -= 5;
     string version = line.substr(5, n);
-    if (version != "1")
+    if (!(version == "1" || version == "2"))
       throw GeographicErr("Unknown version in " + _filename + ": " + version);
     string key, val;
     while (getline(metastr, line)) {
@@ -120,6 +121,8 @@ namespace GeographicLib {
         _dt0 = Utility::num<real>(val);
       else if (key == "NumModels")
         _Nmodels = Utility::num<int>(val);
+      else if (key == "NumConstants")
+        _Nconstants = Utility::num<int>(val);
       else if (key == "MinTime")
         _tmin = Utility::num<real>(val);
       else if (key == "MaxTime")
@@ -155,6 +158,10 @@ namespace GeographicLib {
       throw GeographicErr("Min height exceeds max height");
     if (int(_id.size()) != idlength_)
       throw GeographicErr("Invalid ID");
+    if (_Nmodels < 1)
+      throw GeographicErr("NumModels must be positive");
+    if (!(_Nconstants == 0 || _Nconstants == 1))
+      throw GeographicErr("NumConstants must be 0 or 1");
     if (!(_dt0 > 0)) {
       if (_Nmodels > 1)
         throw GeographicErr("DeltaEpoch must be positive");
@@ -176,17 +183,20 @@ namespace GeographicLib {
     // Components in geocentric basis
     // initial values to suppress warning
     real BX0 = 0, BY0 = 0, BZ0 = 0, BX1 = 0, BY1 = 0, BZ1 = 0;
+    real BXc = 0, BYc = 0, BZc = 0;
     _harm[n](X, Y, Z, BX0, BY0, BZ0);
     _harm[n + 1](X, Y, Z, BX1, BY1, BZ1);
+    if (_Nconstants)
+      _harm[_Nmodels + 1](X, Y, Z, BXc, BYc, BZc);
     if (interpolate) {
       // Convert to a time derivative
       BX1 = (BX1 - BX0) / _dt0;
       BY1 = (BY1 - BY0) / _dt0;
       BZ1 = (BZ1 - BZ0) / _dt0;
     }
-    BX0 += t * BX1;
-    BY0 += t * BY1;
-    BZ0 += t * BZ1;
+    BX0 += t * BX1 + BXc;
+    BY0 += t * BY1 + BYc;
+    BZ0 += t * BZ1 + BZc;
     if (diffp) {
       Geocentric::Unrotate(M, BX1, BY1, BZ1, Bxt, Byt, Bzt);
       Bxt *= - _a;
@@ -208,10 +218,16 @@ namespace GeographicLib {
     _earth.IntForward(lat, 0, h, X, Y, Z, M);
     // Y = 0, cphi = M[7], sphi = M[8];
 
-    return MagneticCircle(_a, _earth._f, lat, h, t,
-                          M[7], M[8], t1, _dt0, interpolate,
-                          _harm[n].Circle(X, Z, true),
-                          _harm[n + 1].Circle(X, Z, true));
+    return (_Nconstants == 0 ?
+            MagneticCircle(_a, _earth._f, lat, h, t,
+                           M[7], M[8], t1, _dt0, interpolate,
+                           _harm[n].Circle(X, Z, true),
+                           _harm[n + 1].Circle(X, Z, true)) :
+            MagneticCircle(_a, _earth._f, lat, h, t,
+                           M[7], M[8], t1, _dt0, interpolate,
+                           _harm[n].Circle(X, Z, true),
+                           _harm[n + 1].Circle(X, Z, true),
+                           _harm[_Nmodels + 1].Circle(X, Z, true)));
   }
 
   void MagneticModel::FieldComponents(real Bx, real By, real Bz,
diff --git a/src/PolarStereographic.cpp b/src/PolarStereographic.cpp
index 3ed4b1e..482251f 100644
--- a/src/PolarStereographic.cpp
+++ b/src/PolarStereographic.cpp
@@ -17,7 +17,7 @@ namespace GeographicLib {
     : _a(a)
     , _f(f <= 1 ? f : 1/f)
     , _e2(_f * (2 - _f))
-    , _es((_f < 0 ? -1 : 0) * sqrt(abs(_e2)))
+    , _es((_f < 0 ? -1 : 1) * sqrt(abs(_e2)))
     , _e2m(1 - _e2)
     , _c( (1 - _f) * exp(Math::eatanhe(real(1), _es)) )
     , _k0(k0)
diff --git a/src/Rhumb.cpp b/src/Rhumb.cpp
index 17d4cdf..03f6069 100644
--- a/src/Rhumb.cpp
+++ b/src/Rhumb.cpp
@@ -20,90 +20,123 @@ namespace GeographicLib {
     , _exact(exact)
     , _c2(_ell.Area() / 720)
   {
-    real n = _ell._n, nx = n;
-    switch (maxpow_) {
-    case 4:
-      _R[1] = nx*(n*(n*(1772*n-5340)+6930)-4725)/14175;
-      nx *= n;
-      _R[2] = nx*((1590-1747*n)*n-630)/4725;
-      nx *= n;
-      _R[3] = nx*(104*n-31)/315;
-      nx *= n;
-      _R[4] = -41*nx/420;
-      break;
-    case 5:
-      _R[1] = nx*(n*(n*(n*(41662*n+58476)-176220)+228690)-155925)/467775;
-      nx *= n;
-      _R[2] = nx*(n*(n*(18118*n-57651)+52470)-20790)/155925;
-      nx *= n;
-      _R[3] = nx*((17160-23011*n)*n-5115)/51975;
-      nx *= n;
-      _R[4] = nx*(5480*n-1353)/13860;
-      nx *= n;
-      _R[5] = -668*nx/5775;
-      break;
-    case 6:
-      _R[1] = nx*(n*(n*(n*((56868630-114456994*n)*n+79819740)-240540300)+
-                     312161850)-212837625)/638512875;
-      nx *= n;
-      _R[2] = nx*(n*(n*(n*(51304574*n+24731070)-78693615)+71621550)-28378350)/
-        212837625;
-      nx *= n;
-      _R[3] = nx*(n*(n*(1554472*n-6282003)+4684680)-1396395)/14189175;
-      nx *= n;
-      _R[4] = nx*((3205800-4913956*n)*n-791505)/8108100;
-      nx *= n;
-      _R[5] = nx*(1092376*n-234468)/2027025;
-      nx *= n;
-      _R[6] = -313076*nx/2027025;
-      break;
-    case 7:
-      _R[1] = nx*(n*(n*(n*(n*(n*(258618446*n-343370982)+170605890)+239459220)-
-                        721620900)+936485550)-638512875)/1915538625;
-      nx *= n;
-      _R[2] = nx*(n*(n*(n*((153913722-248174686*n)*n+74193210)-236080845)+
-                     214864650)-85135050)/638512875;
-      nx *= n;
-      _R[3] = nx*(n*(n*(n*(114450437*n+23317080)-94230045)+70270200)-20945925)/
-        212837625;
-      nx *= n;
-      _R[4] = nx*(n*(n*(15445736*n-103193076)+67321800)-16621605)/170270100;
-      nx *= n;
-      _R[5] = nx*((16385640-27766753*n)*n-3517020)/30405375;
-      nx *= n;
-      _R[6] = nx*(4892722*n-939228)/6081075;
-      nx *= n;
-      _R[7] = -3189007*nx/14189175;
-      break;
-    case 8:
-      _R[1] = nx*(n*(n*(n*(n*(n*((65947703730LL-13691187484LL*n)*n-
-                                 87559600410LL)+43504501950LL)+61062101100LL)-
-                        184013329500LL)+238803815250LL)-162820783125LL)/
-        488462349375LL;
-      nx *= n;
-      _R[2] = nx*(n*(n*(n*(n*(n*(30802104839LL*n-63284544930LL)+39247999110LL)+
-                           18919268550LL)-60200615475LL)+54790485750LL)-
-                  21709437750LL)/162820783125LL;
-      nx *= n;
-      _R[3] = nx*(n*(n*(n*((5836972287LL-8934064508LL*n)*n+1189171080)-
-                        4805732295LL)+3583780200LL)-1068242175)/10854718875LL;
-      nx *= n;
-      _R[4] = nx*(n*(n*(n*(50072287748LL*n+3938662680LL)-26314234380LL)+
-                     17167059000LL)-4238509275LL)/43418875500LL;
-      nx *= n;
-      _R[5] = nx*(n*(n*(359094172*n-9912730821LL)+5849673480LL)-1255576140)/
-        10854718875LL;
-      nx *= n;
-      _R[6] = nx*((8733508770LL-16053944387LL*n)*n-1676521980)/10854718875LL;
-      nx *= n;
-      _R[7] = nx*(930092876*n-162639357)/723647925;
-      nx *= n;
-      _R[8] = -673429061*nx/1929727800;
-      break;
-    default:
-      GEOGRAPHICLIB_STATIC_ASSERT(maxpow_ >= 4 && maxpow_ <= 8,
-                                  "Bad value of maxpow_");
+    // Generated by Maxima on 2015-05-15 08:24:04-04:00
+#if GEOGRAPHICLIB_RHUMBAREA_ORDER == 4
+    static const real coeff[] = {
+      // R[0]/n^0, polynomial in n of order 4
+      691, 7860, -20160, 18900, 0, 56700,
+      // R[1]/n^1, polynomial in n of order 3
+      1772, -5340, 6930, -4725, 14175,
+      // R[2]/n^2, polynomial in n of order 2
+      -1747, 1590, -630, 4725,
+      // R[3]/n^3, polynomial in n of order 1
+      104, -31, 315,
+      // R[4]/n^4, polynomial in n of order 0
+      -41, 420,
+    };  // count = 20
+#elif GEOGRAPHICLIB_RHUMBAREA_ORDER == 5
+    static const real coeff[] = {
+      // R[0]/n^0, polynomial in n of order 5
+      -79036, 22803, 259380, -665280, 623700, 0, 1871100,
+      // R[1]/n^1, polynomial in n of order 4
+      41662, 58476, -176220, 228690, -155925, 467775,
+      // R[2]/n^2, polynomial in n of order 3
+      18118, -57651, 52470, -20790, 155925,
+      // R[3]/n^3, polynomial in n of order 2
+      -23011, 17160, -5115, 51975,
+      // R[4]/n^4, polynomial in n of order 1
+      5480, -1353, 13860,
+      // R[5]/n^5, polynomial in n of order 0
+      -668, 5775,
+    };  // count = 27
+#elif GEOGRAPHICLIB_RHUMBAREA_ORDER == 6
+    static const real coeff[] = {
+      // R[0]/n^0, polynomial in n of order 6
+      128346268, -107884140, 31126095, 354053700, -908107200, 851350500, 0,
+      2554051500LL,
+      // R[1]/n^1, polynomial in n of order 5
+      -114456994, 56868630, 79819740, -240540300, 312161850, -212837625,
+      638512875,
+      // R[2]/n^2, polynomial in n of order 4
+      51304574, 24731070, -78693615, 71621550, -28378350, 212837625,
+      // R[3]/n^3, polynomial in n of order 3
+      1554472, -6282003, 4684680, -1396395, 14189175,
+      // R[4]/n^4, polynomial in n of order 2
+      -4913956, 3205800, -791505, 8108100,
+      // R[5]/n^5, polynomial in n of order 1
+      1092376, -234468, 2027025,
+      // R[6]/n^6, polynomial in n of order 0
+      -313076, 2027025,
+    };  // count = 35
+#elif GEOGRAPHICLIB_RHUMBAREA_ORDER == 7
+    static const real coeff[] = {
+      // R[0]/n^0, polynomial in n of order 7
+      -317195588, 385038804, -323652420, 93378285, 1062161100, -2724321600LL,
+      2554051500LL, 0, 7662154500LL,
+      // R[1]/n^1, polynomial in n of order 6
+      258618446, -343370982, 170605890, 239459220, -721620900, 936485550,
+      -638512875, 1915538625,
+      // R[2]/n^2, polynomial in n of order 5
+      -248174686, 153913722, 74193210, -236080845, 214864650, -85135050,
+      638512875,
+      // R[3]/n^3, polynomial in n of order 4
+      114450437, 23317080, -94230045, 70270200, -20945925, 212837625,
+      // R[4]/n^4, polynomial in n of order 3
+      15445736, -103193076, 67321800, -16621605, 170270100,
+      // R[5]/n^5, polynomial in n of order 2
+      -27766753, 16385640, -3517020, 30405375,
+      // R[6]/n^6, polynomial in n of order 1
+      4892722, -939228, 6081075,
+      // R[7]/n^7, polynomial in n of order 0
+      -3189007, 14189175,
+    };  // count = 44
+#elif GEOGRAPHICLIB_RHUMBAREA_ORDER == 8
+    static const real coeff[] = {
+      // R[0]/n^0, polynomial in n of order 8
+      71374704821LL, -161769749880LL, 196369790040LL, -165062734200LL,
+      47622925350LL, 541702161000LL, -1389404016000LL, 1302566265000LL, 0,
+      3907698795000LL,
+      // R[1]/n^1, polynomial in n of order 7
+      -13691187484LL, 65947703730LL, -87559600410LL, 43504501950LL,
+      61062101100LL, -184013329500LL, 238803815250LL, -162820783125LL,
+      488462349375LL,
+      // R[2]/n^2, polynomial in n of order 6
+      30802104839LL, -63284544930LL, 39247999110LL, 18919268550LL,
+      -60200615475LL, 54790485750LL, -21709437750LL, 162820783125LL,
+      // R[3]/n^3, polynomial in n of order 5
+      -8934064508LL, 5836972287LL, 1189171080, -4805732295LL, 3583780200LL,
+      -1068242175, 10854718875LL,
+      // R[4]/n^4, polynomial in n of order 4
+      50072287748LL, 3938662680LL, -26314234380LL, 17167059000LL,
+      -4238509275LL, 43418875500LL,
+      // R[5]/n^5, polynomial in n of order 3
+      359094172, -9912730821LL, 5849673480LL, -1255576140, 10854718875LL,
+      // R[6]/n^6, polynomial in n of order 2
+      -16053944387LL, 8733508770LL, -1676521980, 10854718875LL,
+      // R[7]/n^7, polynomial in n of order 1
+      930092876, -162639357, 723647925,
+      // R[8]/n^8, polynomial in n of order 0
+      -673429061, 1929727800,
+    };  // count = 54
+#else
+#error "Bad value for GEOGRAPHICLIB_RHUMBAREA_ORDER"
+#endif
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(coeff) / sizeof(real) ==
+                                ((maxpow_ + 1) * (maxpow_ + 4))/2,
+                                "Coefficient array size mismatch for Rhumb");
+    real d = 1;
+    int o = 0;
+    for (int l = 0; l <= maxpow_; ++l) {
+      int m = maxpow_ - l;
+      // R[0] is just an integration constant so it cancels when evaluating a
+      // definite integral.  So don't bother computing it.  It won't be used
+      // when invoking SinCosSeries.
+      if (l)
+        _R[l] = d * Math::polyval(m, coeff + o, _ell._n) / coeff[o + m + 1];
+      o += m + 2;
+      d *= _ell._n;
     }
+    // Post condition: o == sizeof(alpcoeff) / sizeof(real)
   }
 
   const Rhumb& Rhumb::WGS84() {
@@ -331,7 +364,7 @@ namespace GeographicLib {
       if (outmask & AREA)
         S12 = _rh._c2 * lon2x *
           _rh.MeanSinXi(_psi1 * Math::degree(), psi2 * Math::degree());
-      lon2x = outmask & LONG_NOWRAP ? _lon1 + lon2x :
+      lon2x = outmask & LONG_UNROLL ? _lon1 + lon2x :
         Math::AngNormalize2(Math::AngNormalize(_lon1) + lon2x);
     } else {
       // Reduce to the interval [-180, 180)
diff --git a/src/TransverseMercator.cpp b/src/TransverseMercator.cpp
index 04d0cb7..6f477c4 100644
--- a/src/TransverseMercator.cpp
+++ b/src/TransverseMercator.cpp
@@ -63,139 +63,218 @@ namespace GeographicLib {
       throw GeographicErr("Minor radius is not positive");
     if (!(Math::isfinite(_k0) && _k0 > 0))
       throw GeographicErr("Scale is not positive");
-    // If coefficents might overflow_ an int, convert them to double (and they
-    // are all exactly representable as doubles).
-    real nx = Math::sq(_n);
-    switch (maxpow_) {
-    case 4:
-      _b1 = 1/(1+_n)*(nx*(nx+16)+64)/64;
-      _alp[1] = _n*(_n*(_n*(164*_n+225)-480)+360)/720;
-      _bet[1] = _n*(_n*((555-4*_n)*_n-960)+720)/1440;
-      _alp[2] = nx*(_n*(557*_n-864)+390)/1440;
-      _bet[2] = nx*((96-437*_n)*_n+30)/1440;
-      nx *= _n;
-      _alp[3] = (427-1236*_n)*nx/1680;
-      _bet[3] = (119-148*_n)*nx/3360;
-      nx *= _n;
-      _alp[4] = 49561*nx/161280;
-      _bet[4] = 4397*nx/161280;
-      break;
-    case 5:
-      _b1 = 1/(1+_n)*(nx*(nx+16)+64)/64;
-      _alp[1] = _n*(_n*(_n*((328-635*_n)*_n+450)-960)+720)/1440;
-      _bet[1] = _n*(_n*(_n*((-3645*_n-64)*_n+8880)-15360)+11520)/23040;
-      _alp[2] = nx*(_n*(_n*(4496*_n+3899)-6048)+2730)/10080;
-      _bet[2] = nx*(_n*(_n*(4416*_n-3059)+672)+210)/10080;
-      nx *= _n;
-      _alp[3] = nx*(_n*(15061*_n-19776)+6832)/26880;
-      _bet[3] = nx*((-627*_n-592)*_n+476)/13440;
-      nx *= _n;
-      _alp[4] = (49561-171840*_n)*nx/161280;
-      _bet[4] = (4397-3520*_n)*nx/161280;
-      nx *= _n;
-      _alp[5] = 34729*nx/80640;
-      _bet[5] = 4583*nx/161280;
-      break;
-    case 6:
-      _b1 = 1/(1+_n)*(nx*(nx*(nx+4)+64)+256)/256;
-      _alp[1] = _n*(_n*(_n*(_n*(_n*(31564*_n-66675)+34440)+47250)-100800)+
-                    75600)/151200;
-      _bet[1] = _n*(_n*(_n*(_n*(_n*(384796*_n-382725)-6720)+932400)-1612800)+
-                    1209600)/2419200;
-      _alp[2] = nx*(_n*(_n*((863232-1983433*_n)*_n+748608)-1161216)+524160)/
-        1935360;
-      _bet[2] = nx*(_n*(_n*((1695744-1118711*_n)*_n-1174656)+258048)+80640)/
-        3870720;
-      nx *= _n;
-      _alp[3] = nx*(_n*(_n*(670412*_n+406647)-533952)+184464)/725760;
-      _bet[3] = nx*(_n*(_n*(22276*_n-16929)-15984)+12852)/362880;
-      nx *= _n;
-      _alp[4] = nx*(_n*(6601661*_n-7732800)+2230245)/7257600;
-      _bet[4] = nx*((-830251*_n-158400)*_n+197865)/7257600;
-      nx *= _n;
-      _alp[5] = (3438171-13675556*_n)*nx/7983360;
-      _bet[5] = (453717-435388*_n)*nx/15966720;
-      nx *= _n;
-      _alp[6] = 212378941*nx/319334400;
-      _bet[6] = 20648693*nx/638668800;
-      break;
-    case 7:
-      _b1 = 1/(1+_n)*(nx*(nx*(nx+4)+64)+256)/256;
-      _alp[1] = _n*(_n*(_n*(_n*(_n*(_n*(1804025*_n+2020096)-4267200)+2204160)+
-                            3024000)-6451200)+4838400)/9676800;
-      _bet[1] = _n*(_n*(_n*(_n*(_n*((6156736-5406467*_n)*_n-6123600)-107520)+
-                            14918400)-25804800)+19353600)/38707200;
-      _alp[2] = nx*(_n*(_n*(_n*(_n*(4626384*_n-9917165)+4316160)+3743040)-
-                        5806080)+2620800)/9676800;
-      _bet[2] = nx*(_n*(_n*(_n*(_n*(829456*_n-5593555)+8478720)-5873280)+
-                        1290240)+403200)/19353600;
-      nx *= _n;
-      _alp[3] = nx*(_n*(_n*((26816480-67102379*_n)*_n+16265880)-21358080)+
-                    7378560)/29030400;
-      _bet[3] = nx*(_n*(_n*(_n*(9261899*_n+3564160)-2708640)-2557440)+
-                    2056320)/58060800;
-      nx *= _n;
-      _alp[4] = nx*(_n*(_n*(155912000*_n+72618271)-85060800)+24532695)/
-        79833600;
-      _bet[4] = nx*(_n*(_n*(14928352*_n-9132761)-1742400)+2176515)/79833600;
-      nx *= _n;
-      _alp[5] = nx*(_n*(102508609*_n-109404448)+27505368)/63866880;
-      _bet[5] = nx*((-8005831*_n-1741552)*_n+1814868)/63866880;
-      nx *= _n;
-      _alp[6] = (2760926233LL-12282192400LL*_n)*nx/4151347200LL;
-      _bet[6] = (268433009-261810608*_n)*nx/8302694400LL;
-      nx *= _n;
-      _alp[7] = 1522256789LL*nx/1383782400LL;
-      _bet[7] = 219941297*nx/5535129600LL;
-      break;
-    case 8:
-      _b1 = 1/(1+_n)*(nx*(nx*(nx*(25*nx+64)+256)+4096)+16384)/16384;
-      _alp[1] = _n*(_n*(_n*(_n*(_n*(_n*((37884525-75900428*_n)*_n+42422016)-
-                                    89611200)+46287360)+63504000)-135475200)+
-                    101606400)/203212800;
-      _bet[1] = _n*(_n*(_n*(_n*(_n*(_n*(_n*(31777436*_n-37845269)+43097152)-
-                                    42865200)-752640)+104428800)-180633600)+
-                    135475200)/270950400;
-      _alp[2] = nx*(_n*(_n*(_n*(_n*(_n*(148003883*_n+83274912)-178508970)+
-                                77690880)+67374720)-104509440)+47174400)/
-        174182400;
-      _bet[2] = nx*(_n*(_n*(_n*(_n*(_n*(24749483*_n+14930208)-100683990)+
-                                152616960)-105719040)+23224320)+7257600)/
-        348364800;
-      nx *= _n;
-      _alp[3] = nx*(_n*(_n*(_n*(_n*(318729724*_n-738126169)+294981280)+
-                            178924680)-234938880)+81164160)/319334400;
-      _bet[3] = nx*(_n*(_n*(_n*((101880889-232468668*_n)*_n+39205760)-
-                            29795040)-28131840)+22619520)/638668800;
-      nx *= _n;
-      _alp[4] = nx*(_n*(_n*((14967552000LL-40176129013LL*_n)*_n+6971354016LL)-
-                        8165836800LL)+2355138720LL)/7664025600LL;
-      _bet[4] = nx*(_n*(_n*(_n*(324154477*_n+1433121792LL)-876745056)-
-                        167270400)+208945440)/7664025600LL;
-      nx *= _n;
-      _alp[5] = nx*(_n*(_n*(10421654396LL*_n+3997835751LL)-4266773472LL)+
-                    1072709352LL)/2490808320LL;
-      _bet[5] = nx*(_n*(_n*(457888660*_n-312227409)-67920528)+70779852)/
-        2490808320LL;
-      nx *= _n;
-      _alp[6] = nx*(_n*(175214326799LL*_n-171950693600LL)+38652967262LL)/
-        58118860800LL;
-      _bet[6] = nx*((-19841813847LL*_n-3665348512LL)*_n+3758062126LL)/
-        116237721600LL;
-      nx *= _n;
-      _alp[7] = (13700311101LL-67039739596LL*_n)*nx/12454041600LL;
-      _bet[7] = (1979471673LL-1989295244LL*_n)*nx/49816166400LL;
-      nx *= _n;
-      _alp[8] = 1424729850961LL*nx/743921418240LL;
-      _bet[8] = 191773887257LL*nx/3719607091200LL;
-      break;
-    default:
-      GEOGRAPHICLIB_STATIC_ASSERT(maxpow_ >= 4 && maxpow_ <= 8,
-                                  "Bad value of maxpow_");
-    }
+
+    // Generated by Maxima on 2015-05-14 22:55:13-04:00
+#if GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER/2 == 2
+    static const real b1coeff[] = {
+      // b1*(n+1), polynomial in n2 of order 2
+      1, 16, 64, 64,
+    };  // count = 4
+#elif GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER/2 == 3
+    static const real b1coeff[] = {
+      // b1*(n+1), polynomial in n2 of order 3
+      1, 4, 64, 256, 256,
+    };  // count = 5
+#elif GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER/2 == 4
+    static const real b1coeff[] = {
+      // b1*(n+1), polynomial in n2 of order 4
+      25, 64, 256, 4096, 16384, 16384,
+    };  // count = 6
+#else
+#error "Bad value for GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER"
+#endif
+
+#if GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER == 4
+    static const real alpcoeff[] = {
+      // alp[1]/n^1, polynomial in n of order 3
+      164, 225, -480, 360, 720,
+      // alp[2]/n^2, polynomial in n of order 2
+      557, -864, 390, 1440,
+      // alp[3]/n^3, polynomial in n of order 1
+      -1236, 427, 1680,
+      // alp[4]/n^4, polynomial in n of order 0
+      49561, 161280,
+    };  // count = 14
+#elif GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER == 5
+    static const real alpcoeff[] = {
+      // alp[1]/n^1, polynomial in n of order 4
+      -635, 328, 450, -960, 720, 1440,
+      // alp[2]/n^2, polynomial in n of order 3
+      4496, 3899, -6048, 2730, 10080,
+      // alp[3]/n^3, polynomial in n of order 2
+      15061, -19776, 6832, 26880,
+      // alp[4]/n^4, polynomial in n of order 1
+      -171840, 49561, 161280,
+      // alp[5]/n^5, polynomial in n of order 0
+      34729, 80640,
+    };  // count = 20
+#elif GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER == 6
+    static const real alpcoeff[] = {
+      // alp[1]/n^1, polynomial in n of order 5
+      31564, -66675, 34440, 47250, -100800, 75600, 151200,
+      // alp[2]/n^2, polynomial in n of order 4
+      -1983433, 863232, 748608, -1161216, 524160, 1935360,
+      // alp[3]/n^3, polynomial in n of order 3
+      670412, 406647, -533952, 184464, 725760,
+      // alp[4]/n^4, polynomial in n of order 2
+      6601661, -7732800, 2230245, 7257600,
+      // alp[5]/n^5, polynomial in n of order 1
+      -13675556, 3438171, 7983360,
+      // alp[6]/n^6, polynomial in n of order 0
+      212378941, 319334400,
+    };  // count = 27
+#elif GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER == 7
+    static const real alpcoeff[] = {
+      // alp[1]/n^1, polynomial in n of order 6
+      1804025, 2020096, -4267200, 2204160, 3024000, -6451200, 4838400, 9676800,
+      // alp[2]/n^2, polynomial in n of order 5
+      4626384, -9917165, 4316160, 3743040, -5806080, 2620800, 9676800,
+      // alp[3]/n^3, polynomial in n of order 4
+      -67102379, 26816480, 16265880, -21358080, 7378560, 29030400,
+      // alp[4]/n^4, polynomial in n of order 3
+      155912000, 72618271, -85060800, 24532695, 79833600,
+      // alp[5]/n^5, polynomial in n of order 2
+      102508609, -109404448, 27505368, 63866880,
+      // alp[6]/n^6, polynomial in n of order 1
+      -12282192400LL, 2760926233LL, 4151347200LL,
+      // alp[7]/n^7, polynomial in n of order 0
+      1522256789, 1383782400,
+    };  // count = 35
+#elif GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER == 8
+    static const real alpcoeff[] = {
+      // alp[1]/n^1, polynomial in n of order 7
+      -75900428, 37884525, 42422016, -89611200, 46287360, 63504000, -135475200,
+      101606400, 203212800,
+      // alp[2]/n^2, polynomial in n of order 6
+      148003883, 83274912, -178508970, 77690880, 67374720, -104509440,
+      47174400, 174182400,
+      // alp[3]/n^3, polynomial in n of order 5
+      318729724, -738126169, 294981280, 178924680, -234938880, 81164160,
+      319334400,
+      // alp[4]/n^4, polynomial in n of order 4
+      -40176129013LL, 14967552000LL, 6971354016LL, -8165836800LL, 2355138720LL,
+      7664025600LL,
+      // alp[5]/n^5, polynomial in n of order 3
+      10421654396LL, 3997835751LL, -4266773472LL, 1072709352, 2490808320LL,
+      // alp[6]/n^6, polynomial in n of order 2
+      175214326799LL, -171950693600LL, 38652967262LL, 58118860800LL,
+      // alp[7]/n^7, polynomial in n of order 1
+      -67039739596LL, 13700311101LL, 12454041600LL,
+      // alp[8]/n^8, polynomial in n of order 0
+      1424729850961LL, 743921418240LL,
+    };  // count = 44
+#else
+#error "Bad value for GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER"
+#endif
+
+#if GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER == 4
+    static const real betcoeff[] = {
+      // bet[1]/n^1, polynomial in n of order 3
+      -4, 555, -960, 720, 1440,
+      // bet[2]/n^2, polynomial in n of order 2
+      -437, 96, 30, 1440,
+      // bet[3]/n^3, polynomial in n of order 1
+      -148, 119, 3360,
+      // bet[4]/n^4, polynomial in n of order 0
+      4397, 161280,
+    };  // count = 14
+#elif GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER == 5
+    static const real betcoeff[] = {
+      // bet[1]/n^1, polynomial in n of order 4
+      -3645, -64, 8880, -15360, 11520, 23040,
+      // bet[2]/n^2, polynomial in n of order 3
+      4416, -3059, 672, 210, 10080,
+      // bet[3]/n^3, polynomial in n of order 2
+      -627, -592, 476, 13440,
+      // bet[4]/n^4, polynomial in n of order 1
+      -3520, 4397, 161280,
+      // bet[5]/n^5, polynomial in n of order 0
+      4583, 161280,
+    };  // count = 20
+#elif GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER == 6
+    static const real betcoeff[] = {
+      // bet[1]/n^1, polynomial in n of order 5
+      384796, -382725, -6720, 932400, -1612800, 1209600, 2419200,
+      // bet[2]/n^2, polynomial in n of order 4
+      -1118711, 1695744, -1174656, 258048, 80640, 3870720,
+      // bet[3]/n^3, polynomial in n of order 3
+      22276, -16929, -15984, 12852, 362880,
+      // bet[4]/n^4, polynomial in n of order 2
+      -830251, -158400, 197865, 7257600,
+      // bet[5]/n^5, polynomial in n of order 1
+      -435388, 453717, 15966720,
+      // bet[6]/n^6, polynomial in n of order 0
+      20648693, 638668800,
+    };  // count = 27
+#elif GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER == 7
+    static const real betcoeff[] = {
+      // bet[1]/n^1, polynomial in n of order 6
+      -5406467, 6156736, -6123600, -107520, 14918400, -25804800, 19353600,
+      38707200,
+      // bet[2]/n^2, polynomial in n of order 5
+      829456, -5593555, 8478720, -5873280, 1290240, 403200, 19353600,
+      // bet[3]/n^3, polynomial in n of order 4
+      9261899, 3564160, -2708640, -2557440, 2056320, 58060800,
+      // bet[4]/n^4, polynomial in n of order 3
+      14928352, -9132761, -1742400, 2176515, 79833600,
+      // bet[5]/n^5, polynomial in n of order 2
+      -8005831, -1741552, 1814868, 63866880,
+      // bet[6]/n^6, polynomial in n of order 1
+      -261810608, 268433009, 8302694400LL,
+      // bet[7]/n^7, polynomial in n of order 0
+      219941297, 5535129600LL,
+    };  // count = 35
+#elif GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER == 8
+    static const real betcoeff[] = {
+      // bet[1]/n^1, polynomial in n of order 7
+      31777436, -37845269, 43097152, -42865200, -752640, 104428800, -180633600,
+      135475200, 270950400,
+      // bet[2]/n^2, polynomial in n of order 6
+      24749483, 14930208, -100683990, 152616960, -105719040, 23224320, 7257600,
+      348364800,
+      // bet[3]/n^3, polynomial in n of order 5
+      -232468668, 101880889, 39205760, -29795040, -28131840, 22619520,
+      638668800,
+      // bet[4]/n^4, polynomial in n of order 4
+      324154477, 1433121792, -876745056, -167270400, 208945440, 7664025600LL,
+      // bet[5]/n^5, polynomial in n of order 3
+      457888660, -312227409, -67920528, 70779852, 2490808320LL,
+      // bet[6]/n^6, polynomial in n of order 2
+      -19841813847LL, -3665348512LL, 3758062126LL, 116237721600LL,
+      // bet[7]/n^7, polynomial in n of order 1
+      -1989295244, 1979471673, 49816166400LL,
+      // bet[8]/n^8, polynomial in n of order 0
+      191773887257LL, 3719607091200LL,
+    };  // count = 44
+#else
+#error "Bad value for GEOGRAPHICLIB_TRANSVERSEMERCATOR_ORDER"
+#endif
+
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(b1coeff) / sizeof(real) ==
+                                maxpow_/2 + 2,
+                                "Coefficient array size mismatch for b1");
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(alpcoeff) / sizeof(real) ==
+                                (maxpow_ * (maxpow_ + 3))/2,
+                                "Coefficient array size mismatch for alp");
+    GEOGRAPHICLIB_STATIC_ASSERT(sizeof(betcoeff) / sizeof(real) ==
+                                (maxpow_ * (maxpow_ + 3))/2,
+                                "Coefficient array size mismatch for bet");
+    int m = maxpow_/2;
+    _b1 = Math::polyval(m, b1coeff, Math::sq(_n)) / (b1coeff[m + 1] * (1+_n));
     // _a1 is the equivalent radius for computing the circumference of
     // ellipse.
     _a1 = _b1 * _a;
+    int o = 0;
+    real d = _n;
+    for (int l = 1; l <= maxpow_; ++l) {
+      m = maxpow_ - l;
+      _alp[l] = d * Math::polyval(m, alpcoeff + o, _n) / alpcoeff[o + m + 1];
+      _bet[l] = d * Math::polyval(m, betcoeff + o, _n) / betcoeff[o + m + 1];
+      o += m + 2;
+      d *= _n;
+    }
+    // Post condition: o == sizeof(alpcoeff) / sizeof(real) &&
+    // o == sizeof(betcoeff) / sizeof(real)
   }
 
   const TransverseMercator& TransverseMercator::UTM() {
diff --git a/tools/CartConvert.cpp b/tools/CartConvert.cpp
index 8ad77ac..0356ca2 100644
--- a/tools/CartConvert.cpp
+++ b/tools/CartConvert.cpp
@@ -88,9 +88,8 @@ int main(int argc, char* argv[]) {
         if (++m == argc) return usage(1, true);
         cdelim = argv[m];
      } else if (arg == "--version") {
-        std::cout
-          << argv[0] << ": GeographicLib version "
-          << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        std::cout << argv[0] << ": GeographicLib version "
+                  << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
         return usage(!(arg == "-h" || arg == "--help"), arg != "--help");
diff --git a/tools/ConicProj.cpp b/tools/ConicProj.cpp
index 8d0c130..6b99014 100644
--- a/tools/ConicProj.cpp
+++ b/tools/ConicProj.cpp
@@ -128,9 +128,8 @@ int main(int argc, char* argv[]) {
         if (++m == argc) return usage(1, true);
         cdelim = argv[m];
       } else if (arg == "--version") {
-        std::cout
-          << argv[0] << ": GeographicLib version "
-          << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        std::cout << argv[0] << ": GeographicLib version "
+                  << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
         return usage(!(arg == "-h" || arg == "--help"), arg != "--help");
diff --git a/tools/GeoConvert.cpp b/tools/GeoConvert.cpp
index f77d8e3..2c8745a 100644
--- a/tools/GeoConvert.cpp
+++ b/tools/GeoConvert.cpp
@@ -17,6 +17,7 @@
 #include <GeographicLib/GeoCoords.hpp>
 #include <GeographicLib/DMS.hpp>
 #include <GeographicLib/Utility.hpp>
+#include <GeographicLib/MGRS.hpp>
 
 #if defined(_MSC_VER)
 // Squelch warnings about constant conditional expressions
@@ -119,9 +120,9 @@ int main(int argc, char* argv[]) {
         if (++m == argc) return usage(1, true);
         cdelim = argv[m];
       } else if (arg == "--version") {
-        std::cout
-          << argv[0] << ": GeographicLib version "
-          << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        std::cout << argv[0] << ": GeographicLib version "
+                  << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        MGRS::Check();
         return 0;
       } else
         return usage(!(arg == "-h" || arg == "--help"), arg != "--help");
diff --git a/tools/GeodSolve.cpp b/tools/GeodSolve.cpp
index 6c67a28..034485a 100644
--- a/tools/GeodSolve.cpp
+++ b/tools/GeodSolve.cpp
@@ -2,7 +2,7 @@
  * \file GeodSolve.cpp
  * \brief Command line utility for geodesic calculations
  *
- * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * Copyright (c) Charles Karney (2009-2015) <charles at karney.com> and licensed
  * under the MIT/X11 License.  For more information, see
  * http://geographiclib.sourceforge.net/
  *
@@ -69,7 +69,7 @@ int main(int argc, char* argv[]) {
     using namespace GeographicLib;
     Utility::set_digits();
     bool linecalc = false, inverse = false, arcmode = false,
-      dms = false, full = false, exact = false;
+      dms = false, full = false, exact = false, unroll = false;
     real
       a = Constants::WGS84_a(),
       f = Constants::WGS84_f();
@@ -111,7 +111,8 @@ int main(int argc, char* argv[]) {
           return 1;
         }
         m += 2;
-      }
+      } else if (arg == "-u")
+        unroll = true;
       else if (arg == "-d") {
         dms = true;
         dmssep = '\0';
@@ -153,9 +154,8 @@ int main(int argc, char* argv[]) {
         if (++m == argc) return usage(1, true);
         cdelim = argv[m];
       } else if (arg == "--version") {
-        std::cout
-          << argv[0] << ": GeographicLib version "
-          << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        std::cout << argv[0] << ": GeographicLib version "
+                  << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
         return usage(!(arg == "-h" || arg == "--help"), arg != "--help");
@@ -198,15 +198,27 @@ int main(int argc, char* argv[]) {
     }
     std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
 
-    const Geodesic geod(a, f);
+    // GeodesicExact mask values are the same as Geodesic
+    unsigned outmask = Geodesic::LATITUDE | Geodesic::LONGITUDE |
+      Geodesic::AZIMUTH;        // basic output quantities
+    outmask |= inverse ? Geodesic::DISTANCE : // distance-related flags
+      (arcmode ? Geodesic::NONE : Geodesic::DISTANCE_IN);
+    // longitude unrolling
+    outmask |= unroll ? Geodesic::LONG_UNROLL : Geodesic::NONE;
+    // full output -- don't use Geodesic::ALL since this includes DISTANCE_IN
+    outmask |= full ? (Geodesic::DISTANCE | Geodesic::REDUCEDLENGTH |
+                       Geodesic::GEODESICSCALE | Geodesic::AREA) :
+      Geodesic::NONE;
+
+    const Geodesic      geods(a, f);
     const GeodesicExact geode(a, f);
-    GeodesicLine l;
+    GeodesicLine      ls;
     GeodesicLineExact le;
     if (linecalc) {
       if (exact)
-        le = geode.Line(lat1, lon1, azi1);
+        le = geode.Line(lat1, lon1, azi1, outmask);
       else
-        l = geod.Line(lat1, lon1, azi1);
+        ls = geods.Line(lat1, lon1, azi1, outmask);
     }
 
     // Max precision = 10: 0.1 nm in distance, 10^-15 deg (= 0.11 nm),
@@ -235,12 +247,18 @@ int main(int argc, char* argv[]) {
           DMS::DecodeLatLon(slat1, slon1, lat1, lon1);
           DMS::DecodeLatLon(slat2, slon2, lat2, lon2);
           a12 = exact ?
-            geode.Inverse(lat1, lon1, lat2, lon2, s12, azi1, azi2,
-                          m12, M12, M21, S12) :
-            geod.Inverse(lat1, lon1, lat2, lon2, s12, azi1, azi2,
-                         m12, M12, M21, S12);
-          if (full)
+            geode.GenInverse(lat1, lon1, lat2, lon2, outmask,
+                             s12, azi1, azi2, m12, M12, M21, S12) :
+            geods.GenInverse(lat1, lon1, lat2, lon2, outmask,
+                             s12, azi1, azi2, m12, M12, M21, S12);
+          if (full) {
+            lon2 = Math::AngNormalize(lon2);
+            if (unroll)
+              lon2 = lon1 + Math::AngDiff(Math::AngNormalize(lon1), lon2);
+            else
+              lon1 = Math::AngNormalize(lon1);
             *output << LatLonString(lat1, lon1, prec, dms, dmssep) << " ";
+          }
           *output << AzimuthString(azi1, prec, dms, dmssep) << " ";
           if (full)
             *output << LatLonString(lat2, lon2, prec, dms, dmssep) << " ";
@@ -261,14 +279,11 @@ int main(int argc, char* argv[]) {
             if (str >> strc)
               throw GeographicErr("Extraneous input: " + strc);
             s12 = ReadDistance(ss12, arcmode);
-            if (arcmode)
-              exact ?
-                le.ArcPosition(s12, lat2, lon2, azi2, a12, m12, M12, M21, S12) :
-                l.ArcPosition(s12, lat2, lon2, azi2, a12, m12, M12, M21, S12);
-            else
-              a12 = exact ?
-                le.Position(s12, lat2, lon2, azi2, m12, M12, M21, S12) :
-                l.Position(s12, lat2, lon2, azi2, m12, M12, M21, S12);
+            a12 = exact ?
+              le.GenPosition(arcmode, s12, outmask,
+                             lat2, lon2, azi2, s12, m12, M12, M21, S12) :
+              ls.GenPosition(arcmode, s12, outmask,
+                             lat2, lon2, azi2, s12, m12, M12, M21, S12);
           } else {
             std::string slat1, slon1, sazi1, ss12;
             if (!(str >> slat1 >> slon1 >> sazi1 >> ss12))
@@ -279,24 +294,17 @@ int main(int argc, char* argv[]) {
             DMS::DecodeLatLon(slat1, slon1, lat1, lon1);
             azi1 = DMS::DecodeAzimuth(sazi1);
             s12 = ReadDistance(ss12, arcmode);
-            if (arcmode)
-              exact ?
-                geode.ArcDirect(lat1, lon1, azi1, s12, lat2, lon2, azi2, a12,
-                                m12, M12, M21, S12) :
-                geod.ArcDirect(lat1, lon1, azi1, s12, lat2, lon2, azi2, a12,
-                               m12, M12, M21, S12);
-            else
-              a12 = exact ?
-                geode.Direct(lat1, lon1, azi1, s12, lat2, lon2, azi2,
-                             m12, M12, M21, S12) :
-                geod.Direct(lat1, lon1, azi1, s12, lat2, lon2, azi2,
-                            m12, M12, M21, S12);
+            a12 = exact ?
+              geode.GenDirect(lat1, lon1, azi1, arcmode, s12, outmask,
+                              lat2, lon2, azi2, s12, m12, M12, M21, S12) :
+              geods.GenDirect(lat1, lon1, azi1, arcmode, s12, outmask,
+                              lat2, lon2, azi2, s12, m12, M12, M21, S12);
           }
-          if (arcmode)
-            std::swap(s12, a12);
           if (full)
-            *output << LatLonString(lat1, lon1, prec, dms, dmssep) << " "
-                    << AzimuthString(azi1, prec, dms, dmssep) << " ";
+            *output
+              << LatLonString(lat1, unroll ? lon1 : Math::AngNormalize(lon1),
+                              prec, dms, dmssep) << " "
+              << AzimuthString(azi1, prec, dms, dmssep) << " ";
           *output << LatLonString(lat2, lon2, prec, dms, dmssep) << " "
                   << AzimuthString(azi2 + azi2sense, prec, dms, dmssep);
           if (full)
diff --git a/tools/GeodesicProj.cpp b/tools/GeodesicProj.cpp
index 4077214..e13f952 100644
--- a/tools/GeodesicProj.cpp
+++ b/tools/GeodesicProj.cpp
@@ -102,9 +102,8 @@ int main(int argc, char* argv[]) {
         if (++m == argc) return usage(1, true);
         cdelim = argv[m];
       } else if (arg == "--version") {
-        std::cout
-          << argv[0] << ": GeographicLib version "
-          << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        std::cout << argv[0] << ": GeographicLib version "
+                  << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
         return usage(!(arg == "-h" || arg == "--help"), arg != "--help");
diff --git a/tools/GeoidEval.cpp b/tools/GeoidEval.cpp
index caab02c..6ee35b6 100644
--- a/tools/GeoidEval.cpp
+++ b/tools/GeoidEval.cpp
@@ -113,9 +113,8 @@ int main(int argc, char* argv[]) {
         if (++m == argc) return usage(1, true);
         cdelim = argv[m];
       } else if (arg == "--version") {
-        std::cout
-          << argv[0] << ": GeographicLib version "
-          << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        std::cout << argv[0] << ": GeographicLib version "
+                  << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else {
         int retval = usage(!(arg == "-h" || arg == "--help"), arg != "--help");
diff --git a/tools/Gravity.cpp b/tools/Gravity.cpp
index 3377da2..0a34cfb 100644
--- a/tools/Gravity.cpp
+++ b/tools/Gravity.cpp
@@ -111,9 +111,8 @@ int main(int argc, char* argv[]) {
         if (++m == argc) return usage(1, true);
         cdelim = argv[m];
       } else if (arg == "--version") {
-        std::cout
-          << argv[0] << ": GeographicLib version "
-          << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        std::cout << argv[0] << ": GeographicLib version "
+                  << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else {
         int retval = usage(!(arg == "-h" || arg == "--help"), arg != "--help");
diff --git a/tools/MagneticField.cpp b/tools/MagneticField.cpp
index 9537bda..62ce014 100644
--- a/tools/MagneticField.cpp
+++ b/tools/MagneticField.cpp
@@ -133,9 +133,8 @@ int main(int argc, char* argv[]) {
         if (++m == argc) return usage(1, true);
         cdelim = argv[m];
       } else if (arg == "--version") {
-        std::cout
-          << argv[0] << ": GeographicLib version "
-          << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        std::cout << argv[0] << ": GeographicLib version "
+                  << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else {
         int retval = usage(!(arg == "-h" || arg == "--help"), arg != "--help");
diff --git a/tools/Planimeter.cpp b/tools/Planimeter.cpp
index 45f4b8e..a175ad5 100644
--- a/tools/Planimeter.cpp
+++ b/tools/Planimeter.cpp
@@ -97,9 +97,8 @@ int main(int argc, char* argv[]) {
         if (++m == argc) return usage(1, true);
         cdelim = argv[m];
       } else if (arg == "--version") {
-        std::cout
-          << argv[0] << ": GeographicLib version "
-          << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        std::cout << argv[0] << ": GeographicLib version "
+                  << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
         return usage(!(arg == "-h" || arg == "--help"), arg != "--help");
diff --git a/tools/RhumbSolve.cpp b/tools/RhumbSolve.cpp
index 19b0faf..91854c9 100644
--- a/tools/RhumbSolve.cpp
+++ b/tools/RhumbSolve.cpp
@@ -124,9 +124,8 @@ int main(int argc, char* argv[]) {
         if (++m == argc) return usage(1, true);
         cdelim = argv[m];
       } else if (arg == "--version") {
-        std::cout
-          << argv[0] << ": GeographicLib version "
-          << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        std::cout << argv[0] << ": GeographicLib version "
+                  << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
         return usage(!(arg == "-h" || arg == "--help"), arg != "--help");
diff --git a/tools/TransverseMercatorProj.cpp b/tools/TransverseMercatorProj.cpp
index 24c5d96..211cdfe 100644
--- a/tools/TransverseMercatorProj.cpp
+++ b/tools/TransverseMercatorProj.cpp
@@ -122,9 +122,8 @@ int main(int argc, char* argv[]) {
         if (++m == argc) return usage(1, true);
         cdelim = argv[m];
       } else if (arg == "--version") {
-        std::cout
-          << argv[0] << ": GeographicLib version "
-          << GEOGRAPHICLIB_VERSION_STRING << "\n";
+        std::cout << argv[0] << ": GeographicLib version "
+                  << GEOGRAPHICLIB_VERSION_STRING << "\n";
         return 0;
       } else
         return usage(!(arg == "-h" || arg == "--help"), arg != "--help");
diff --git a/tools/geographiclib-get-magnetic.sh b/tools/geographiclib-get-magnetic.sh
index ef7bf57..b91826b 100644
--- a/tools/geographiclib-get-magnetic.sh
+++ b/tools/geographiclib-get-magnetic.sh
@@ -29,6 +29,7 @@ table:
   igrf11     13    1900-2015      7      25
   igrf12     13    1900-2020      7      26
   emm2010   740    2010-2015    3700    4400
+  emm2015   730    2000-2020     660    4300
 
 The size columns give the download and installed sizes of the datasets.
 In addition you can specify
@@ -116,6 +117,7 @@ cat > $TEMP/all <<EOF
 wmm2010
 wmm2015
 emm2010
+emm2015
 igrf11
 igrf12
 EOF
diff --git a/tools/tests.cmake b/tools/tests.cmake
index 603df1a..b31a10a 100644
--- a/tools/tests.cmake
+++ b/tools/tests.cmake
@@ -6,10 +6,10 @@ enable_testing ()
 # The tests consist of calling the various tools with --input-string and
 # matching the output against regular expressions.
 
-add_test (NAME GeoConvert0
-  COMMAND GeoConvert -p -3 -m --input-string "33.3 44.4")
-set_tests_properties (GeoConvert0
-  PROPERTIES PASS_REGULAR_EXPRESSION "38SMB4484")
+add_test (NAME GeoConvert0 COMMAND GeoConvert
+  -p -3 -m --input-string "33.3 44.4")
+set_tests_properties (GeoConvert0 PROPERTIES PASS_REGULAR_EXPRESSION
+  "38SMB4484")
 
 # I/O for boost-quadmath has a bug where precision 0 is interpreted as
 # printed all the digits of the number (instead of printing the integer
@@ -17,13 +17,13 @@ set_tests_properties (GeoConvert0
 # https://svn.boost.org/trac/boost/ticket/10103.  GeographicLib 1.42
 # includes a workaround for this bug.
 add_test (NAME GeoConvert1 COMMAND GeoConvert -d --input-string "38smb")
-set_tests_properties (GeoConvert1
-  PROPERTIES PASS_REGULAR_EXPRESSION "32d59'14\\.1\"N 044d27'53\\.4\"E")
+set_tests_properties (GeoConvert1 PROPERTIES PASS_REGULAR_EXPRESSION
+  "32d59'14\\.1\"N 044d27'53\\.4\"E")
 
-add_test (NAME GeoConvert2
-  COMMAND GeoConvert -p -2 --input-string "30d30'30\" 30.50833")
-set_tests_properties (GeoConvert2
-  PROPERTIES PASS_REGULAR_EXPRESSION "30\\.508 30\\.508")
+add_test (NAME GeoConvert2 COMMAND GeoConvert
+  -p -2 --input-string "30d30'30\" 30.50833")
+set_tests_properties (GeoConvert2 PROPERTIES PASS_REGULAR_EXPRESSION
+  "30\\.508 30\\.508")
 add_test (NAME GeoConvert3 COMMAND GeoConvert --junk)
 set_tests_properties (GeoConvert3 PROPERTIES WILL_FAIL ON)
 add_test (NAME GeoConvert4 COMMAND GeoConvert --input-string garbage)
@@ -39,38 +39,43 @@ if (NOT (MSVC AND MSVC_VERSION MATCHES "1[78].."))
   # of accuracy of the least significant bit.  The bug is fixed in VS 14.
   add_test (NAME GeoConvert6 COMMAND GeoConvert -p 9
     --input-string "0 179.99999999999998578")
-  set_tests_properties (GeoConvert6
-    PROPERTIES PASS_REGULAR_EXPRESSION  "179\\.9999999999999[7-9]")
+  set_tests_properties (GeoConvert6 PROPERTIES PASS_REGULAR_EXPRESSION
+    "179\\.9999999999999[7-9]")
 endif ()
+# This invokes MGRS::Check()
+add_test (NAME GeoConvert7 COMMAND GeoConvert --version)
+# Check fix to PolarStereographic es initialization blunder (2015-05-18)
+add_test (NAME GeoConvert8 COMMAND GeoConvert -u -p 6 --input-string "86 0")
+set_tests_properties (GeoConvert8 PROPERTIES PASS_REGULAR_EXPRESSION
+  "n 2000000\\.0* 1555731\\.570643")
 
-add_test (NAME GeodSolve0 COMMAND
-  GeodSolve -i -p 0 --input-string "40.6 -73.8 49d01'N 2d33'E")
-set_tests_properties (GeodSolve0
-  PROPERTIES PASS_REGULAR_EXPRESSION "53\\.47022 111\\.59367 5853226")
-add_test (NAME GeodSolve1 COMMAND
-  GeodSolve -p 0 --input-string "40d38'23\"N 073d46'44\"W 53d30' 5850e3")
-set_tests_properties (GeodSolve1
-  PROPERTIES PASS_REGULAR_EXPRESSION "49\\.01467 2\\.56106 111\\.62947")
+add_test (NAME GeodSolve0 COMMAND GeodSolve
+  -i -p 0 --input-string "40.6 -73.8 49d01'N 2d33'E")
+set_tests_properties (GeodSolve0 PROPERTIES PASS_REGULAR_EXPRESSION
+  "53\\.47022 111\\.59367 5853226")
+add_test (NAME GeodSolve1 COMMAND GeodSolve
+  -p 0 --input-string "40d38'23\"N 073d46'44\"W 53d30' 5850e3")
+set_tests_properties (GeodSolve1 PROPERTIES PASS_REGULAR_EXPRESSION
+  "49\\.01467 2\\.56106 111\\.62947")
 # Check fix for antipodal prolate bug found 2010-09-04
-add_test (NAME GeodSolve2 COMMAND
-  GeodSolve -i -p 0 -e 6.4e6 -1/150 --input-string "0.07476 0 -0.07476 180")
-set_tests_properties (GeodSolve2
-  PROPERTIES PASS_REGULAR_EXPRESSION "90\\.00078 90\\.00078 20106193")
+add_test (NAME GeodSolve2 COMMAND GeodSolve
+  -i -p 0 -e 6.4e6 -1/150 --input-string "0.07476 0 -0.07476 180")
+set_tests_properties (GeodSolve2 PROPERTIES PASS_REGULAR_EXPRESSION
+  "90\\.00078 90\\.00078 20106193")
 # Another check for similar bug
-add_test (NAME GeodSolve3 COMMAND
-  GeodSolve -i -p 0 -e 6.4e6 -1/150 --input-string "0.1 0 -0.1 180")
-set_tests_properties (GeodSolve3
-  PROPERTIES PASS_REGULAR_EXPRESSION "90\\.00105 90\\.00105 20106193")
+add_test (NAME GeodSolve3 COMMAND GeodSolve
+  -i -p 0 -e 6.4e6 -1/150 --input-string "0.1 0 -0.1 180")
+set_tests_properties (GeodSolve3 PROPERTIES PASS_REGULAR_EXPRESSION
+  "90\\.00105 90\\.00105 20106193")
 # Check fix for short line bug found 2010-05-21
-add_test (NAME GeodSolve4 COMMAND
-  GeodSolve -i --input-string "36.493349428792 0 36.49334942879201 .0000008")
-set_tests_properties (GeodSolve4
-  PROPERTIES PASS_REGULAR_EXPRESSION ".* .* 0\\.072")
+add_test (NAME GeodSolve4 COMMAND GeodSolve
+  -i --input-string "36.493349428792 0 36.49334942879201 .0000008")
+set_tests_properties (GeodSolve4 PROPERTIES PASS_REGULAR_EXPRESSION
+  ".* .* 0\\.072")
 # Check fix for point2=pole bug found 2010-05-03 (but only with long double)
-add_test (NAME GeodSolve5
-  COMMAND GeodSolve -p 0 --input-string "0.01777745589997 30 0 10e6")
-set_tests_properties (GeodSolve5
-  PROPERTIES PASS_REGULAR_EXPRESSION
+add_test (NAME GeodSolve5 COMMAND GeodSolve
+  -p 0 --input-string "0.01777745589997 30 0 10e6")
+set_tests_properties (GeodSolve5 PROPERTIES PASS_REGULAR_EXPRESSION
   "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)
@@ -81,39 +86,39 @@ add_test (NAME GeodSolve7 COMMAND GeodSolve -i --input-string
   "89.262080389218 0 -89.262080389218 179.992207982775375662")
 add_test (NAME GeodSolve8 COMMAND GeodSolve -i --input-string
   "89.333123580033 0 -89.333123580032997687 179.99295812360148422")
-set_tests_properties (GeodSolve6
-  PROPERTIES PASS_REGULAR_EXPRESSION ".* .* 20003898.214")
-set_tests_properties (GeodSolve7
-  PROPERTIES PASS_REGULAR_EXPRESSION ".* .* 20003925.854")
-set_tests_properties (GeodSolve8
-  PROPERTIES PASS_REGULAR_EXPRESSION ".* .* 20003926.881")
+set_tests_properties (GeodSolve6 PROPERTIES PASS_REGULAR_EXPRESSION
+  ".* .* 20003898.214")
+set_tests_properties (GeodSolve7 PROPERTIES PASS_REGULAR_EXPRESSION
+  ".* .* 20003925.854")
+set_tests_properties (GeodSolve8 PROPERTIES PASS_REGULAR_EXPRESSION
+  ".* .* 20003926.881")
 
 # Check fix for volatile x bug found 2011-06-25 (gcc 4.4.4 x86 -O3)
 add_test (NAME GeodSolve9 COMMAND GeodSolve -i --input-string
   "56.320923501171 0 -56.320923501171 179.664747671772880215")
-set_tests_properties (GeodSolve9
-  PROPERTIES PASS_REGULAR_EXPRESSION ".* .* 19993558.287")
+set_tests_properties (GeodSolve9 PROPERTIES PASS_REGULAR_EXPRESSION
+  ".* .* 19993558.287")
 
 # Check fix for adjust tol1_ bug found 2011-06-25 (Visual Studio 10 rel + debug)
 add_test (NAME GeodSolve10 COMMAND GeodSolve -i --input-string
   "52.784459512564 0 -52.784459512563990912 179.634407464943777557")
-set_tests_properties (GeodSolve10
-  PROPERTIES PASS_REGULAR_EXPRESSION ".* .* 19991596.095")
+set_tests_properties (GeodSolve10 PROPERTIES PASS_REGULAR_EXPRESSION
+  ".* .* 19991596.095")
 
 # Check fix for bet2 = -bet1 bug found 2011-06-25 (Visual Studio 10 rel + debug)
 add_test (NAME GeodSolve11 COMMAND GeodSolve -i --input-string
   "48.522876735459 0 -48.52287673545898293 179.599720456223079643")
-set_tests_properties (GeodSolve11
-  PROPERTIES PASS_REGULAR_EXPRESSION ".* .* 19989144.774")
+set_tests_properties (GeodSolve11 PROPERTIES PASS_REGULAR_EXPRESSION
+  ".* .* 19989144.774")
 
 # Check fix for inverse geodesics on extreme prolate/oblate ellipsoids
 # Reported 2012-08-29 Stefan Guenther <stefan.gunther at embl.de>; fixed 2012-10-07
-add_test (NAME GeodSolve12 COMMAND
-  GeodSolve -i -e 89.8 -1.83 -p 1 --input-string "0 0 -10 160")
-add_test (NAME GeodSolve13 COMMAND
-  GeodSolve -i -e 89.8 -1.83 -p 1 --input-string "0 0 -10 160" -E)
-set_tests_properties (GeodSolve12 GeodSolve13
-  PROPERTIES PASS_REGULAR_EXPRESSION "120\\.27.* 105\\.15.* 266\\.7")
+add_test (NAME GeodSolve12 COMMAND GeodSolve
+  -i -e 89.8 -1.83 -p 1 --input-string "0 0 -10 160")
+add_test (NAME GeodSolve13 COMMAND GeodSolve
+  -i -e 89.8 -1.83 -p 1 --input-string "0 0 -10 160" -E)
+set_tests_properties (GeodSolve12 GeodSolve13 PROPERTIES PASS_REGULAR_EXPRESSION
+  "120\\.27.* 105\\.15.* 266\\.7")
 
 if (NOT GEOGRAPHICLIB_PRECISION EQUAL 4)
   # mpfr (nan == 0 is true) and boost-quadmath (nan > 0 is true) have
@@ -123,196 +128,224 @@ if (NOT GEOGRAPHICLIB_PRECISION EQUAL 4)
   #
   # Check fix for inverse ignoring lon12 = nan
   add_test (NAME GeodSolve14 COMMAND GeodSolve -i --input-string "0 0 1 nan")
-  set_tests_properties (GeodSolve14
-    PROPERTIES PASS_REGULAR_EXPRESSION "nan nan nan")
+  set_tests_properties (GeodSolve14 PROPERTIES PASS_REGULAR_EXPRESSION
+    "nan nan nan")
 endif()
 
 # Initial implementation of Math::eatanhe was wrong for e^2 < 0.  This
 # checks that this is fixed.
-add_test (NAME GeodSolve15 COMMAND
-  GeodSolve -e 6.4e6 -1/150 -f --input-string "1 2 3 4")
-add_test (NAME GeodSolve16 COMMAND
-  GeodSolve -e 6.4e6 -1/150 -f --input-string "1 2 3 4" -E)
-set_tests_properties (GeodSolve15 GeodSolve16
-  PROPERTIES PASS_REGULAR_EXPRESSION
+add_test (NAME GeodSolve15 COMMAND GeodSolve
+  -e 6.4e6 -1/150 -f --input-string "1 2 3 4")
+add_test (NAME GeodSolve16 COMMAND GeodSolve
+  -e 6.4e6 -1/150 -f --input-string "1 2 3 4" -E)
+set_tests_properties (GeodSolve15 GeodSolve16 PROPERTIES PASS_REGULAR_EXPRESSION
   "1\\..* 2\\..* 3\\..* 1\\..* 2\\..* 3\\..* 4\\..* 0\\..* 4\\..* 1\\..* 1\\..* 23700")
 
+# Check fix for LONG_UNROLL bug found on 2015-05-07
+add_test (NAME GeodSolve17 COMMAND GeodSolve
+  -u --input-string "40 -75 -10 2e7")
+add_test (NAME GeodSolve18 COMMAND GeodSolve
+  -u --input-string "40 -75 -10 2e7" -E)
+add_test (NAME GeodSolve19 COMMAND GeodSolve
+  -u -l 40 -75 -10 --input-string "2e7")
+add_test (NAME GeodSolve20 COMMAND GeodSolve
+  -u -l 40 -75 -10 --input-string "2e7" -E)
+set_tests_properties (GeodSolve17 GeodSolve18 GeodSolve19 GeodSolve20
+  PROPERTIES PASS_REGULAR_EXPRESSION "-39\\.[0-9]* -254\\.[0-9]* -170\\.[0-9]*")
+add_test (NAME GeodSolve21 COMMAND GeodSolve
+  --input-string "40 -75 -10 2e7")
+add_test (NAME GeodSolve22 COMMAND GeodSolve
+  --input-string "40 -75 -10 2e7" -E)
+add_test (NAME GeodSolve23 COMMAND GeodSolve
+  -l 40 -75 -10 --input-string "2e7")
+add_test (NAME GeodSolve24 COMMAND GeodSolve
+  -l 40 -75 -10 --input-string "2e7" -E)
+set_tests_properties (GeodSolve21 GeodSolve22 GeodSolve23 GeodSolve24
+  PROPERTIES PASS_REGULAR_EXPRESSION "-39\\.[0-9]* 105\\.[0-9]* -170\\.[0-9]*")
+
 # Check fix for pole-encircling bug found 2011-03-16
-add_test (NAME Planimeter0
-  COMMAND Planimeter --input-string "89 0;89 90;89 180;89 270")
-add_test (NAME Planimeter1 COMMAND
-  Planimeter -r --input-string "-89 0;-89 90;-89 180;-89 270")
-add_test (NAME Planimeter2
-  COMMAND Planimeter --input-string "0 -1;-1 0;0 1;1 0")
+add_test (NAME Planimeter0 COMMAND Planimeter
+  --input-string "89 0;89 90;89 180;89 270")
+add_test (NAME Planimeter1 COMMAND Planimeter
+  -r --input-string "-89 0;-89 90;-89 180;-89 270")
+add_test (NAME Planimeter2 COMMAND Planimeter
+  --input-string "0 -1;-1 0;0 1;1 0")
 add_test (NAME Planimeter3 COMMAND Planimeter --input-string "90 0; 0 0; 0 90")
-add_test (NAME Planimeter4
-  COMMAND Planimeter -l --input-string "90 0; 0 0; 0 90")
-set_tests_properties (Planimeter0
-  PROPERTIES PASS_REGULAR_EXPRESSION
+add_test (NAME Planimeter4 COMMAND Planimeter
+  -l --input-string "90 0; 0 0; 0 90")
+set_tests_properties (Planimeter0 PROPERTIES PASS_REGULAR_EXPRESSION
   "4 631819\\.8745[0-9]+ 2495230567[78]\\.[0-9]+")
-set_tests_properties (Planimeter1
-  PROPERTIES PASS_REGULAR_EXPRESSION
+set_tests_properties (Planimeter1 PROPERTIES PASS_REGULAR_EXPRESSION
   "4 631819\\.8745[0-9]+ 2495230567[78]\\.[0-9]+")
-set_tests_properties (Planimeter2
-  PROPERTIES PASS_REGULAR_EXPRESSION "4 627598\\.2731[0-9]+ 24619419146.[0-9]+")
-set_tests_properties (Planimeter3
-  PROPERTIES PASS_REGULAR_EXPRESSION
+set_tests_properties (Planimeter2 PROPERTIES PASS_REGULAR_EXPRESSION
+  "4 627598\\.2731[0-9]+ 24619419146.[0-9]+")
+set_tests_properties (Planimeter3 PROPERTIES PASS_REGULAR_EXPRESSION
   "3 30022685\\.[0-9]+ 63758202715511\\.[0-9]+")
-set_tests_properties (Planimeter4
-  PROPERTIES PASS_REGULAR_EXPRESSION "3 20020719\\.[0-9]+")
+set_tests_properties (Planimeter4 PROPERTIES PASS_REGULAR_EXPRESSION
+  "3 20020719\\.[0-9]+")
 # Check fix for Planimeter pole crossing bug found 2011-06-24
-add_test (NAME Planimeter5
-  COMMAND Planimeter --input-string "89,0.1;89,90.1;89,-179.9")
-set_tests_properties (Planimeter5
-  PROPERTIES PASS_REGULAR_EXPRESSION
+add_test (NAME Planimeter5 COMMAND Planimeter
+  --input-string "89,0.1;89,90.1;89,-179.9")
+set_tests_properties (Planimeter5 PROPERTIES PASS_REGULAR_EXPRESSION
   "3 539297\\.[0-9]+ 1247615283[89]\\.[0-9]+")
 # Check fix for Planimeter lon12 rounding bug found 2012-12-03
-add_test (NAME Planimeter6
-  COMMAND Planimeter -p 8 --input-string "9 -0.00000000000001;9 180;9 0")
-add_test (NAME Planimeter7
-  COMMAND Planimeter -p 8 --input-string "9  0.00000000000001;9 0;9 180")
-add_test (NAME Planimeter8
-  COMMAND Planimeter -p 8 --input-string "9  0.00000000000001;9 180;9 0")
-add_test (NAME Planimeter9
-  COMMAND Planimeter -p 8 --input-string "9 -0.00000000000001;9 0;9 180")
+add_test (NAME Planimeter6 COMMAND Planimeter
+  -p 8 --input-string "9 -0.00000000000001;9 180;9 0")
+add_test (NAME Planimeter7 COMMAND Planimeter
+  -p 8 --input-string "9  0.00000000000001;9 0;9 180")
+add_test (NAME Planimeter8 COMMAND Planimeter
+  -p 8 --input-string "9  0.00000000000001;9 180;9 0")
+add_test (NAME Planimeter9 COMMAND Planimeter
+  -p 8 --input-string "9 -0.00000000000001;9 0;9 180")
 set_tests_properties (Planimeter6 Planimeter7 Planimeter8 Planimeter9
   PROPERTIES PASS_REGULAR_EXPRESSION "3 36026861\\.[0-9]+ -?0.0[0-9]+")
 # Area of Wyoming
 add_test (NAME Planimeter10 COMMAND Planimeter -R
   --input-string "41N 111:3W; 41N 104:3W; 45N 104:3W; 45N 111:3W")
-set_tests_properties (Planimeter10
-  PROPERTIES PASS_REGULAR_EXPRESSION "4 2029616\\.[0-9]+ 2535883763..\\.")
+set_tests_properties (Planimeter10 PROPERTIES PASS_REGULAR_EXPRESSION
+  "4 2029616\\.[0-9]+ 2535883763..\\.")
 # Area of arctic circle
-add_test (NAME Planimeter11
-  COMMAND Planimeter -R --input-string "66:33:44 0; 66:33:44 180")
-set_tests_properties (Planimeter11
-  PROPERTIES PASS_REGULAR_EXPRESSION "2 15985058\\.[0-9]+ 212084182523..\\.")
-add_test (NAME Planimeter12
-  COMMAND Planimeter --input-string "66:33:44 0; 66:33:44 180")
-set_tests_properties (Planimeter12
-  PROPERTIES PASS_REGULAR_EXPRESSION "2 10465729\\.[0-9]+ -?0.0")
+add_test (NAME Planimeter11 COMMAND Planimeter
+  -R --input-string "66:33:44 0; 66:33:44 180")
+set_tests_properties (Planimeter11 PROPERTIES PASS_REGULAR_EXPRESSION
+  "2 15985058\\.[0-9]+ 212084182523..\\.")
+add_test (NAME Planimeter12 COMMAND Planimeter
+  --input-string "66:33:44 0; 66:33:44 180")
+set_tests_properties (Planimeter12 PROPERTIES PASS_REGULAR_EXPRESSION
+  "2 10465729\\.[0-9]+ -?0.0")
 # Check encircling pole twice
-add_test (NAME Planimeter13 COMMAND
-  Planimeter --input-string "89 -360; 89 -240; 89 -120; 89 0; 89 120; 89 240")
-set_tests_properties (Planimeter13
-  PROPERTIES PASS_REGULAR_EXPRESSION "6 1160741\\..* 32415230256\\.")
+add_test (NAME Planimeter13 COMMAND Planimeter
+  --input-string "89 -360; 89 -240; 89 -120; 89 0; 89 120; 89 240")
+set_tests_properties (Planimeter13 PROPERTIES PASS_REGULAR_EXPRESSION
+  "6 1160741\\..* 32415230256\\.")
 
 # Check fix for AlbersEqualArea::Reverse bug found 2011-05-01
-add_test (NAME ConicProj0 COMMAND
-  ConicProj -a 40d58 39d56 -l 77d45W -r --input-string "220e3 -52e3")
-set_tests_properties (ConicProj0
-  PROPERTIES PASS_REGULAR_EXPRESSION
+add_test (NAME ConicProj0 COMMAND ConicProj
+  -a 40d58 39d56 -l 77d45W -r --input-string "220e3 -52e3")
+set_tests_properties (ConicProj0 PROPERTIES PASS_REGULAR_EXPRESSION
   "39\\.95[0-9]+ -75\\.17[0-9]+ 1\\.67[0-9]+ 0\\.99[0-9]+")
 # Check fix for AlbersEqualArea prolate bug found 2012-05-15
-add_test (NAME ConicProj1 COMMAND
-  ConicProj -a 0 0 -e 6.4e6 -0.5 -r --input-string "0 8605508")
-set_tests_properties (ConicProj1
-  PROPERTIES PASS_REGULAR_EXPRESSION "^85\\.00")
+add_test (NAME ConicProj1 COMMAND ConicProj
+  -a 0 0 -e 6.4e6 -0.5 -r --input-string "0 8605508")
+set_tests_properties (ConicProj1 PROPERTIES PASS_REGULAR_EXPRESSION
+  "^85\\.00")
 # Check fix for LambertConformalConic::Forward bug found 2012-07-14
 add_test (NAME ConicProj2 COMMAND ConicProj -c -30 -30 --input-string "-30 0")
-set_tests_properties (ConicProj2
-  PROPERTIES PASS_REGULAR_EXPRESSION "^-?0\\.0+ -?0\\.0+ -?0\\.0+ 1\\.0+")
+set_tests_properties (ConicProj2 PROPERTIES PASS_REGULAR_EXPRESSION
+  "^-?0\\.0+ -?0\\.0+ -?0\\.0+ 1\\.0+")
 # Check fixes for LambertConformalConic::Reverse overflow bugs found 2012-07-14
-add_test (NAME ConicProj3
-  COMMAND ConicProj -r -c 0 0 --input-string "1113195 -1e10")
-set_tests_properties (ConicProj3
-  PROPERTIES PASS_REGULAR_EXPRESSION "^-90\\.0+ 10\\.00[0-9]+ ")
-add_test (NAME ConicProj4
-  COMMAND ConicProj -r -c 0 0 --input-string "1113195 inf")
-set_tests_properties (ConicProj4
-  PROPERTIES PASS_REGULAR_EXPRESSION "^90\\.0+ 10\\.00[0-9]+ ")
-add_test (NAME ConicProj5
-  COMMAND ConicProj -r -c 45 45 --input-string "0 -1e100")
-set_tests_properties (ConicProj5
-  PROPERTIES PASS_REGULAR_EXPRESSION "^-90\\.0+ -?0\\.00[0-9]+ ")
+add_test (NAME ConicProj3 COMMAND ConicProj
+  -r -c 0 0 --input-string "1113195 -1e10")
+set_tests_properties (ConicProj3 PROPERTIES PASS_REGULAR_EXPRESSION
+  "^-90\\.0+ 10\\.00[0-9]+ ")
+add_test (NAME ConicProj4 COMMAND ConicProj
+  -r -c 0 0 --input-string "1113195 inf")
+set_tests_properties (ConicProj4 PROPERTIES PASS_REGULAR_EXPRESSION
+  "^90\\.0+ 10\\.00[0-9]+ ")
+add_test (NAME ConicProj5 COMMAND ConicProj
+  -r -c 45 45 --input-string "0 -1e100")
+set_tests_properties (ConicProj5 PROPERTIES PASS_REGULAR_EXPRESSION
+  "^-90\\.0+ -?0\\.00[0-9]+ ")
 add_test (NAME ConicProj6 COMMAND ConicProj -r -c 45 45 --input-string "0 -inf")
-set_tests_properties (ConicProj6
-  PROPERTIES PASS_REGULAR_EXPRESSION "^-90\\.0+ -?0\\.00[0-9]+ ")
-add_test (NAME ConicProj7
-  COMMAND ConicProj -r -c 90 90 --input-string "0 -1e150")
-set_tests_properties (ConicProj7
-  PROPERTIES PASS_REGULAR_EXPRESSION "^-90\\.0+ -?0\\.00[0-9]+ ")
+set_tests_properties (ConicProj6 PROPERTIES PASS_REGULAR_EXPRESSION
+  "^-90\\.0+ -?0\\.00[0-9]+ ")
+add_test (NAME ConicProj7 COMMAND ConicProj
+  -r -c 90 90 --input-string "0 -1e150")
+set_tests_properties (ConicProj7 PROPERTIES PASS_REGULAR_EXPRESSION
+  "^-90\\.0+ -?0\\.00[0-9]+ ")
 add_test (NAME ConicProj8 COMMAND ConicProj -r -c 90 90 --input-string "0 -inf")
-set_tests_properties (ConicProj8
-  PROPERTIES PASS_REGULAR_EXPRESSION "^-90\\.0+ -?0\\.00[0-9]+ ")
+set_tests_properties (ConicProj8 PROPERTIES PASS_REGULAR_EXPRESSION
+  "^-90\\.0+ -?0\\.00[0-9]+ ")
 
-add_test (NAME CartConvert0 COMMAND
-  CartConvert -e 6.4e6 1/100 -r --input-string "10e3 0 1e3")
-add_test (NAME CartConvert1 COMMAND
-  CartConvert -e 6.4e6 -1/100 -r --input-string "1e3 0 10e3")
-set_tests_properties (CartConvert0
-  PROPERTIES PASS_REGULAR_EXPRESSION
+add_test (NAME CartConvert0 COMMAND CartConvert
+  -e 6.4e6 1/100 -r --input-string "10e3 0 1e3")
+add_test (NAME CartConvert1 COMMAND CartConvert
+  -e 6.4e6 -1/100 -r --input-string "1e3 0 10e3")
+set_tests_properties (CartConvert0 PROPERTIES PASS_REGULAR_EXPRESSION
   "85\\.57[0-9]+ 0\\.0[0]+ -6334614\\.[0-9]+")
-set_tests_properties (CartConvert1
-  PROPERTIES PASS_REGULAR_EXPRESSION
+set_tests_properties (CartConvert1 PROPERTIES PASS_REGULAR_EXPRESSION
   "4\\.42[0-9]+ 0\\.0[0]+ -6398614\\.[0-9]+")
 
 # Test fix to bad meridian convergence at pole with
 # TransverseMercatorExact found 2013-06-26
-add_test (NAME TransverseMercatorProj0 COMMAND
-  TransverseMercatorProj -k 1 --input-string "90 75")
-set_tests_properties (TransverseMercatorProj0
-  PROPERTIES PASS_REGULAR_EXPRESSION
+add_test (NAME TransverseMercatorProj0 COMMAND TransverseMercatorProj
+  -k 1 --input-string "90 75")
+set_tests_properties (TransverseMercatorProj0 PROPERTIES PASS_REGULAR_EXPRESSION
   "^0\\.0+ 10001965\\.7293[0-9]+ 75\\.0+ 1\\.0+")
 # Test fix to bad scale at pole with TransverseMercatorExact
 # found 2013-06-30 (quarter meridian = 10001965.7293127228128889202m)
-add_test (NAME TransverseMercatorProj1 COMMAND
-  TransverseMercatorProj -k 1 -r --input-string "0 10001965.7293127228")
-set_tests_properties (TransverseMercatorProj1
-  PROPERTIES PASS_REGULAR_EXPRESSION
+add_test (NAME TransverseMercatorProj1 COMMAND TransverseMercatorProj
+  -k 1 -r --input-string "0 10001965.7293127228")
+set_tests_properties (TransverseMercatorProj1 PROPERTIES PASS_REGULAR_EXPRESSION
   "(90\\.0+ 0\\.0+ 0\\.0+|(90\\.0+|89\\.99999999999[0-9]+) -?180\\.0+ -?180\\.0+) (1\\.0000+|0\\.9999+)")
 
 # Test fix to bad handling of pole by RhumbSolve -i
 # Reported  2015-02-24 by Thomas Murray <thomas.murray56 at gmail.com>;
-add_test (NAME RhumbSolve0 COMMAND
-  RhumbSolve -p 3 -i --input-string "0 0 90 0")
-add_test (NAME RhumbSolve1 COMMAND
-  RhumbSolve -p 3 -i --input-string "0 0 90 0" -s)
-set_tests_properties (RhumbSolve0 RhumbSolve1
-  PROPERTIES PASS_REGULAR_EXPRESSION "^0\\.0+ 10001965\\.729 ")
+add_test (NAME RhumbSolve0 COMMAND RhumbSolve
+  -p 3 -i --input-string "0 0 90 0")
+add_test (NAME RhumbSolve1 COMMAND RhumbSolve
+  -p 3 -i --input-string "0 0 90 0" -s)
+set_tests_properties (RhumbSolve0 RhumbSolve1 PROPERTIES PASS_REGULAR_EXPRESSION
+  "^0\\.0+ 10001965\\.729 ")
 
 if (EXISTS ${GEOGRAPHICLIB_DATA}/geoids/egm96-5.pgm)
   # Check fix for single-cell cache bug found 2010-11-23
-  add_test (NAME GeoidEval0
-    COMMAND GeoidEval -n egm96-5 --input-string "0d1 0d1;0d4 0d4")
-  set_tests_properties (GeoidEval0
-    PROPERTIES PASS_REGULAR_EXPRESSION "^17\\.1[56]..\n17\\.1[45]..")
+  add_test (NAME GeoidEval0 COMMAND GeoidEval
+    -n egm96-5 --input-string "0d1 0d1;0d4 0d4")
+  set_tests_properties (GeoidEval0 PROPERTIES PASS_REGULAR_EXPRESSION
+    "^17\\.1[56]..\n17\\.1[45]..")
 endif ()
 
 if (EXISTS ${GEOGRAPHICLIB_DATA}/magnetic/wmm2010.wmm)
   # Test case from WMM2010_Report.pdf, Sec 1.5, pp 14-15:
   # t = 2012.5, lat = -80, lon = 240, h = 100e3
-  add_test (NAME MagneticField0 COMMAND
-    MagneticField -n wmm2010 -p 10 -r --input-string "2012.5 -80 240 100e3")
-  add_test (NAME MagneticField1 COMMAND
-    MagneticField -n wmm2010 -p 10 -r -t 2012.5 --input-string "-80 240 100e3")
-  add_test (NAME MagneticField2 COMMAND
-    MagneticField -n wmm2010 -p 10 -r -c 2012.5 -80 100e3 --input-string "240")
-  set_tests_properties (MagneticField0
-    PROPERTIES PASS_REGULAR_EXPRESSION
+  add_test (NAME MagneticField0 COMMAND MagneticField
+    -n wmm2010 -p 10 -r --input-string "2012.5 -80 240 100e3")
+  add_test (NAME MagneticField1 COMMAND MagneticField
+    -n wmm2010 -p 10 -r -t 2012.5 --input-string "-80 240 100e3")
+  add_test (NAME MagneticField2 COMMAND MagneticField
+    -n wmm2010 -p 10 -r -c 2012.5 -80 100e3 --input-string "240")
+  set_tests_properties (MagneticField0 PROPERTIES PASS_REGULAR_EXPRESSION
     " 5535\\.5249148687 14765\\.3703243050 -50625\\.9305478794 .*\n.* 20\\.4904268023 1\\.0272592716 83\\.5313962281 ")
-  set_tests_properties (MagneticField1
-    PROPERTIES PASS_REGULAR_EXPRESSION
+  set_tests_properties (MagneticField1 PROPERTIES PASS_REGULAR_EXPRESSION
     " 5535\\.5249148687 14765\\.3703243050 -50625\\.9305478794 .*\n.* 20\\.4904268023 1\\.0272592716 83\\.5313962281 ")
-  set_tests_properties (MagneticField2
-    PROPERTIES PASS_REGULAR_EXPRESSION
+  set_tests_properties (MagneticField2 PROPERTIES PASS_REGULAR_EXPRESSION
     " 5535\\.5249148687 14765\\.3703243050 -50625\\.9305478794 .*\n.* 20\\.4904268023 1\\.0272592716 83\\.5313962281 ")
 endif ()
 
+if (EXISTS ${GEOGRAPHICLIB_DATA}/magnetic/emm2015.wmm)
+  # Tests from EMM2015_TEST_VALUES.txt including cases of linear
+  # interpolation and extrapolation.
+  add_test (NAME MagneticField3 COMMAND MagneticField
+    -n emm2015 -r --input-string "2009.2 -85.9 -116.5 0")
+  add_test (NAME MagneticField4 COMMAND MagneticField
+    -n emm2015 -r -c 2009.2 -85.9 0 --input-string -116.5)
+  add_test (NAME MagneticField5 COMMAND MagneticField
+    -n emm2015 -r --input-string "2015.7 78.3 123.7 100e3")
+  add_test (NAME MagneticField6 COMMAND MagneticField
+    -n emm2015 -r -c 2015.7 78.3 100e3 --input-string 123.7)
+  set_tests_properties (MagneticField3 MagneticField4
+    PROPERTIES PASS_REGULAR_EXPRESSION
+    "79\\.70 -72\\.74 16532\\.1 2956\\.1 16265\\.7 -53210\\.7 55719\\.7\n-0\\.1. 0\\.0. 13\\.1 34\\.1 7\\.1 81\\.7 -74\\.1")
+  set_tests_properties (MagneticField5 MagneticField6
+    PROPERTIES PASS_REGULAR_EXPRESSION
+    "-8\\.73 86\\.82 3128\\.9 3092\\.6 -474\\.7 56338\\.9 56425\\.8\n-0\\.2. 0\\.0. -20\\.7 -22\\.3 -9\\.2 26\\.5 25\\.3")
+endif ()
+
 if (EXISTS ${GEOGRAPHICLIB_DATA}/gravity/egm2008.egm)
   # Verify no overflow at poles with high degree model
-  add_test (NAME Gravity0
-    COMMAND Gravity -n egm2008 -p 6 --input-string "90 110 0")
-  set_tests_properties (Gravity0
-    PROPERTIES PASS_REGULAR_EXPRESSION "-0\\.000146 0\\.000078 -9\\.832294")
+  add_test (NAME Gravity0 COMMAND Gravity
+    -n egm2008 -p 6 --input-string "90 110 0")
+  set_tests_properties (Gravity0 PROPERTIES PASS_REGULAR_EXPRESSION
+    "-0\\.000146 0\\.000078 -9\\.832294")
   # Check fix for invR bug in GravityCircle found by Mathieu Peyrega on
   # 2013-04-09
-  add_test (NAME Gravity1
-    COMMAND Gravity -n egm2008 -A -c -18 4000 --input-string "-86")
-  set_tests_properties (Gravity1
-    PROPERTIES PASS_REGULAR_EXPRESSION "-7\\.438 1\\.305 -1\\.563")
-  add_test (NAME Gravity2
-    COMMAND Gravity -n egm2008 -D -c -18 4000 --input-string "-86")
-  set_tests_properties (Gravity2
-    PROPERTIES PASS_REGULAR_EXPRESSION "7\\.404 -6\\.168 7\\.616")
+  add_test (NAME Gravity1 COMMAND Gravity
+    -n egm2008 -A -c -18 4000 --input-string "-86")
+  set_tests_properties (Gravity1 PROPERTIES PASS_REGULAR_EXPRESSION
+    "-7\\.438 1\\.305 -1\\.563")
+  add_test (NAME Gravity2 COMMAND Gravity
+    -n egm2008 -D -c -18 4000 --input-string "-86")
+  set_tests_properties (Gravity2 PROPERTIES PASS_REGULAR_EXPRESSION
+    "7\\.404 -6\\.168 7\\.616")
 endif ()

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