[Git][debian-gis-team/proj][upstream] New upstream version 5.0.0~rc3

Bas Couwenberg gitlab at salsa.debian.org
Wed Feb 14 06:52:49 UTC 2018


Bas Couwenberg pushed to branch upstream at Debian GIS Project / proj


Commits:
1e4ca627 by Bas Couwenberg at 2018-02-14T07:27:23+01:00
New upstream version 5.0.0~rc3
- - - - -


26 changed files:

- cmake/CMakeLists.txt
- cmake/project-config.cmake.in
- man/man3/pj_init.3
- nad/README
- nad/testvarious
- nad/tv_out.dist
- src/PJ_pipeline.c
- src/cct.c
- src/gie.c
- src/lib_proj.cmake
- src/pj_datums.c
- src/pj_fwd.c
- src/pj_geocent.c
- src/pj_gridinfo.c
- src/pj_init.c
- src/pj_inv.c
- src/proj.def
- src/proj.h
- src/proj_4D_api.c
- src/proj_api.h
- src/proj_internal.h
- src/projects.h
- test/gie/4D-API_cs2cs-style.gie
- test/gie/GDA.gie
- test/gie/builtins.gie
- test/gie/more_builtins.gie


Changes:

=====================================
cmake/CMakeLists.txt
=====================================
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -21,3 +21,7 @@ install (FILES
 install (EXPORT targets
   FILE ${PROJECT_NAME_LOWER}-targets.cmake
   DESTINATION "${CMAKECONFIGDIR}")
+install (EXPORT targets
+  NAMESPACE ${PROJECT_NAME}::
+  FILE ${PROJECT_NAME_LOWER}-namespace-targets.cmake
+  DESTINATION "${CMAKECONFIGDIR}")


=====================================
cmake/project-config.cmake.in
=====================================
--- a/cmake/project-config.cmake.in
+++ b/cmake/project-config.cmake.in
@@ -23,6 +23,7 @@ set (@PROJECT_NAME at _BINARY_DIRS "${_ROOT}/@BINDIR@")
 set (@PROJECT_NAME at _LIBRARIES proj)
 # Read in the exported definition of the library
 include ("${_DIR}/@PROJECT_NAME_LOWER at -targets.cmake")
+include ("${_DIR}/@PROJECT_NAME_LOWER at -namespace-targets.cmake")
 
 unset (_ROOT)
 unset (_DIR)


=====================================
man/man3/pj_init.3
=====================================
--- a/man/man3/pj_init.3
+++ b/man/man3/pj_init.3
@@ -1,6 +1,6 @@
 .\" @(#)pj_init.3 - 5.0.0
 .\"
-.TH PJ_INIT 3U "2018/02/15 Rel. 5.0.0"
+.TH PJ_INIT 3 "2018/02/15 Rel. 5.0.0"
 .ad b
 .hy 1
 .SH NAME


=====================================
nad/README
=====================================
--- a/nad/README
+++ b/nad/README
@@ -70,3 +70,7 @@ WO.lla.Z    --- Washington, Oregon, N. California
 	Other grid shift files
 ntv1_can.dat	--- Canadian NTv1 grid shift file (NAD27-->NAD83)
 ntf_r93.gsb	--- French NTv2 grid shift file (NTF-->RGF93)
+BETA2007.gsb	--- German NTv2 grid shift file (DE_DHDN-->ETRS89) :
+					http://crs.bkg.bund.de/crseu/crs/descrtrans/BeTA/de_dhdn2etrs_beta.php
+					Confirmed with Uwe Schmitz <uwe.schmitz at bezreg-koeln.nrw.de> that free
+					redistribution is allowed and welcome.


=====================================
nad/testvarious
=====================================
--- a/nad/testvarious
+++ b/nad/testvarious
@@ -782,11 +782,11 @@ EOF
 echo  "##############################################################" >> ${OUT}
 echo  "Test SCH inverse projection" >> ${OUT}
 #
-$EXE -f '%.7f' \
+$EXE -f '%.6f' \
     +proj=sch +datum=WGS84 +plat_0=30.0 +plon_0=45.0 +phdg_0=-12.0 +nodefs +to \
     +proj=latlong +datum=WGS84 \
  -E >> ${OUT} <<EOF
-0. 0.
+0. 0. 2.
 0. 1000.
 1000. 0.
 1000. 1000.


=====================================
nad/tv_out.dist
=====================================
--- a/nad/tv_out.dist
+++ b/nad/tv_out.dist
@@ -389,10 +389,10 @@ Test SCH forward projection
 30.0 45.0	1974596.2356203	787409.8217445 773.0028577
 ##############################################################
 Test SCH inverse projection
-0. 0.	45.0000000	30.0000000 0.0000000
-0. 1000.	44.9898625	29.9981240 -0.0003617
-1000. 0.	44.9978450	30.0088238 -0.0000000
-1000. 1000.	44.9877066	30.0069477 -0.0005228
+0. 0. 2.	45.000000	30.000000 2.000000
+0. 1000.	44.989863	29.998124 -0.000362
+1000. 0.	44.997845	30.008824 -0.000000
+1000. 1000.	44.987707	30.006948 -0.000523
 ##############################################################
 Test issue #316 (switch utm to use etmerc)
 0 83	145723.870553	9300924.845226 0.000000


=====================================
src/PJ_pipeline.c
=====================================
--- a/src/PJ_pipeline.c
+++ b/src/PJ_pipeline.c
@@ -240,11 +240,13 @@ static PJ *pj_create_pipeline (PJ *P, size_t steps) {
 
 
 
-/* count the number of args in pipeline definition */
+/* count the number of args in pipeline definition, and mark all args as used */
 static size_t argc_params (paralist *params) {
     size_t argc = 0;
-    for (; params != 0; params = params->next)
+    for (; params != 0; params = params->next) {
         argc++;
+        params->used = 1;
+    }
     return ++argc;  /* one extra for the sentinel */
 }
 
@@ -414,7 +416,7 @@ PJ *OPERATION(pipeline,0) {
         err = proj_errno_reset (P);
 
         next_step = proj_create_argv (P->ctx, current_argc, current_argv);
-        proj_log_trace (P, "Pipeline: Step %d at %p", i, next_step);
+        proj_log_trace (P, "Pipeline: Step %d (%s) at %p", i, current_argv[0], next_step);
 
         if (0==next_step) {
             /* The step init failed, but possibly without setting errno. If so, we say "malformed" */
@@ -436,7 +438,7 @@ PJ *OPERATION(pipeline,0) {
 
         P->opaque->pipeline[i+1] = next_step;
 
-        proj_log_trace (P, "Pipeline at [%p]:    step at [%p] done", P, next_step);
+        proj_log_trace (P, "Pipeline at [%p]:    step at [%p] (%s) done", P, next_step, current_argv[0]);
     }
 
     /* Require a forward path through the pipeline */


=====================================
src/cct.c
=====================================
--- a/src/cct.c
+++ b/src/cct.c
@@ -151,6 +151,7 @@ static const char usage[] = {
 int main(int argc, char **argv) {
     PJ *P;
     PJ_COORD point;
+    PJ_PROJ_INFO info;
     OPTARGS *o;
     FILE *fout = stdout;
     char *buf;
@@ -222,6 +223,11 @@ int main(int argc, char **argv) {
         return 1;
     }
 
+    if (verbose > 4) {
+        info = proj_pj_info (P);
+        fprintf (stdout, "Final: %s argc=%d pargc=%d\n", info.definition, argc, o->pargc);
+    }
+
     if (direction==-1) {
         /* fail if an inverse operation is not available */
         if (!proj_pj_info(P).has_inverse) {


=====================================
src/gie.c
=====================================
--- a/src/gie.c
+++ b/src/gie.c
@@ -681,7 +681,7 @@ back/forward transformation pairs.
             banner (T.operation);
         fprintf (T.fout, "%s", T.op_ko? "     -----\n": delim);
         fprintf (T.fout, "     FAILURE in %s(%d):\n", opt_strip_path (T.curr_file), (int) F->lineno);
-        fprintf (T.fout, "     roundtrip deviation: %.3f mm, expected: %.3f mm\n", 1000*r, 1000*d);
+        fprintf (T.fout, "     roundtrip deviation: %.6f mm, expected: %.6f mm\n", 1000*r, 1000*d);
     }
     return another_failure ();
 }
@@ -700,13 +700,13 @@ static int expect_message (double d, const char *args) {
 
     fprintf (T.fout, "     FAILURE in %s(%d):\n", opt_strip_path (T.curr_file), (int) F->lineno);
     fprintf (T.fout, "     expected: %s\n", args);
-    fprintf (T.fout, "     got:      %.9f   %.9f", T.b.xy.x,  T.b.xy.y);
+    fprintf (T.fout, "     got:      %.12f   %.12f", T.b.xy.x,  T.b.xy.y);
     if (T.b.xyzt.t!=0 || T.b.xyzt.z!=0)
         fprintf (T.fout, "   %.9f", T.b.xyz.z);
     if (T.b.xyzt.t!=0)
         fprintf (T.fout, "   %.9f", T.b.xyzt.t);
     fprintf (T.fout, "\n");
-    fprintf (T.fout, "     deviation:  %.3f mm,  expected:  %.3f mm\n", 1000*d, 1000*T.tolerance);
+    fprintf (T.fout, "     deviation:  %.6f mm,  expected:  %.6f mm\n", 1000*d, 1000*T.tolerance);
     return 1;
 }
 
@@ -829,42 +829,35 @@ Tell GIE what to expect, when transforming the ACCEPTed input
     /* expected angular values, probably in degrees */
     ce = proj_angular_output (T.P, T.dir)? torad_coord (T.P, T.dir, T.e): T.e;
     if (T.verbosity > 3)
-        printf ("EXPECTS  %.4f  %.4f  %.4f  %.4f\n", ce.v[0],ce.v[1],ce.v[2],ce.v[3]);
+        printf ("EXPECTS  %.12f  %.12f  %.12f  %.12f\n", ce.v[0],ce.v[1],ce.v[2],ce.v[3]);
 
     /* input ("accepted") values, also probably in degrees */
     ci = proj_angular_input (T.P, T.dir)? torad_coord (T.P, T.dir, T.a): T.a;
     if (T.verbosity > 3)
-        printf ("ACCEPTS  %.4f  %.4f  %.4f  %.4f\n", ci.v[0],ci.v[1],ci.v[2],ci.v[3]);
+        printf ("ACCEPTS  %.12f  %.12f  %.12f  %.12f\n", ci.v[0],ci.v[1],ci.v[2],ci.v[3]);
 
     /* angular output from proj_trans comes in radians */
     co = expect_trans_n_dim (ci);
     T.b = proj_angular_output (T.P, T.dir)? todeg_coord (T.P, T.dir, co): co;
     if (T.verbosity > 3)
-        printf ("GOT      %.4f  %.4f  %.4f  %.4f\n", co.v[0],co.v[1],co.v[2],co.v[3]);
-
-    /* but there are a few more possible input conventions... */
-    if (proj_angular_output (T.P, T.dir)) {
-        double e = HUGE_VAL;
-        d = proj_lpz_dist (T.P, ce.lpz, co.lpz);
-        /* check whether input was already in radians */
-        if (d > T.tolerance)
-            e = proj_lpz_dist (T.P, T.e.lpz, co.lpz);
-        if (e < d)
-            d = e;
-
-        /* or the tolerance may be based on euclidean distance */
-        if (d > T.tolerance)
-            e = proj_xyz_dist (T.b.xyz, T.e.xyz);
-        if (e < d)
-            d = e;
+        printf ("GOT      %.12f  %.12f  %.12f  %.12f\n", co.v[0],co.v[1],co.v[2],co.v[3]);
+
+#if 0
+    /* We need to handle unusual axis orders - that'll be an item for version 5.1 */
+    if (T.P->axisswap) {
+        ce = proj_trans (T.P->axisswap, T.dir, ce);
+        co = proj_trans (T.P->axisswap, T.dir, co);
     }
+#endif
+    if (proj_angular_output (T.P, T.dir))
+        d = proj_lpz_dist (T.P, ce, co);
     else
-        d = proj_xyz_dist (T.b.xyz, T.e.xyz);
+        d = proj_xyz_dist (co, ce);
+
     if (d > T.tolerance)
         return expect_message (d, args);
 
     another_success ();
-
     return 0;
 }
 
@@ -1439,13 +1432,13 @@ static int pj_horner_selftest (void) {
 
     /* Forward projection */
     b = proj_trans (P, PJ_FWD, a);
-    dist = proj_xy_dist (b.xy, c.xy);
+    dist = proj_xy_dist (b, c);
     if (dist > 0.001)
         return 2;
 
     /* Inverse projection */
     b = proj_trans (P, PJ_INV, c);
-    dist = proj_xy_dist (b.xy, a.xy);
+    dist = proj_xy_dist (b, a);
     if (dist > 0.001)
         return 3;
 
@@ -1527,7 +1520,7 @@ static int pj_cart_selftest (void) {
     /* Forward again, to get two linear items for comparison */
     a = proj_trans (P, PJ_FWD, a);
 
-    dist = proj_xy_dist (a.xy, b.xy);
+    dist = proj_xy_dist (a, b);
     if (dist > 2e-9)
         return 3;
 
@@ -1778,7 +1771,7 @@ static int pj_cart_selftest (void) {
     a.lp.lam = PJ_TORAD(12);
     a.lp.phi = PJ_TORAD(55);
 
-    factors = proj_factors(P, a.lp);
+    factors = proj_factors(P, a);
     if (proj_errno(P))
         return 85; /* factors not created correctly */
 
@@ -1843,12 +1836,12 @@ static int pj_cart_selftest (void) {
 
     /* linear in and out */
     P = proj_create(PJ_DEFAULT_CTX,
-        " +proj=helmert +ellps=GRS80"
+        " +proj=helmert"
         " +x=0.0127 +y=0.0065 +z=-0.0209 +s=0.00195"
         " +rx=-0.00039 +ry=0.00080 +rz=-0.00114"
         " +dx=-0.0029 +dy=-0.0002 +dz=-0.0006 +ds=0.00001"
         " +drx=-0.00011 +dry=-0.00019 +drz=0.00007"
-        " +t_epoch=1988.0 +transpose"
+        " +t_epoch=1988.0 +transpose +no_defs"
     );
     if (0==P) return 0;
     if (proj_angular_input (P, PJ_FWD))  return 116;
@@ -1860,8 +1853,12 @@ static int pj_cart_selftest (void) {
     if (proj_angular_input (P, PJ_INV))  return 121;
     if (proj_angular_output (P, PJ_FWD)) return 122;
     if (proj_angular_output (P, PJ_INV)) return 123;
-    proj_destroy(P);
 
+    /* We specified "no_defs" but didn't give any ellipsoid info */
+    /* pj_init_ctx should defualt to WGS84 */
+    if (P->a != 6378137.0) return 124;
+    if (P->f != 1.0/298.257223563) return 125;
+    proj_destroy(P);
 
     return 0;
 }
@@ -1869,9 +1866,6 @@ static int pj_cart_selftest (void) {
 
 
 
-
-
-
 static int test_time(const char* args, double tol, double t_in, double t_exp) {
     PJ_COORD in, out;
     PJ *P = proj_create(PJ_DEFAULT_CTX, args);


=====================================
src/lib_proj.cmake
=====================================
--- a/src/lib_proj.cmake
+++ b/src/lib_proj.cmake
@@ -284,6 +284,10 @@ add_library( ${PROJ_CORE_TARGET}
                     ${ALL_LIBPROJ_HEADERS}
                     ${PROJ_RESOURCES}  )
 
+if (NOT CMAKE_VERSION VERSION_LESS 2.8.11)
+  target_include_directories (${PROJ_CORE_TARGET} INTERFACE
+    $<INSTALL_INTERFACE:${INCLUDEDIR}>)
+endif ()
 
 if(WIN32)
   set_target_properties(${PROJ_CORE_TARGET}


=====================================
src/pj_datums.c
=====================================
--- a/src/pj_datums.c
+++ b/src/pj_datums.c
@@ -47,7 +47,8 @@ C_NAMESPACE_VAR const struct PJ_DATUMS pj_datums[] = {
 {"NAD27",   "nadgrids=@conus, at alaska, at ntv2_0.gsb, at ntv1_can.dat",
                                                      "clrk66",
                                                               "North_American_Datum_1927"},
-{"potsdam", "towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7",
+{"potsdam", /*"towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7",*/
+            "nadgrids=@BETA2007.gsb",
                                                      "bessel",
                                                               "Potsdam Rauenberg 1950 DHDN"},
 {"carthage","towgs84=-263.0,6.0,431.0",              "clrk80ign",


=====================================
src/pj_fwd.c
=====================================
--- a/src/pj_fwd.c
+++ b/src/pj_fwd.c
@@ -73,11 +73,13 @@ static PJ_COORD pj_fwd_prepare (PJ *P, PJ_COORD coo) {
             coo = proj_trans (P->hgridshift, PJ_INV, coo);
         else if (P->helmert) {
             coo = proj_trans (P->cart_wgs84, PJ_FWD, coo); /* Go cartesian in WGS84 frame */
-            coo = proj_trans (P->helmert,    PJ_FWD, coo); /* Step into local frame */
+            coo = proj_trans (P->helmert,    PJ_INV, coo); /* Step into local frame */
             coo = proj_trans (P->cart,       PJ_INV, coo); /* Go back to angular using local ellps */
         }
+        if (coo.lp.lam==HUGE_VAL)
+            return coo;
         if (P->vgridshift)
-            coo = proj_trans (P->vgridshift, PJ_FWD, coo);
+            coo = proj_trans (P->vgridshift, PJ_FWD, coo); /* Go orthometric from geometric */
 
         /* Distance from central meridian, taking system zero meridian into account */
         coo.lp.lam = (coo.lp.lam - P->from_greenwich) - P->lam0;
@@ -92,7 +94,7 @@ static PJ_COORD pj_fwd_prepare (PJ *P, PJ_COORD coo) {
 
     /* We do not support gridshifts on cartesian input */
     if (INPUT_UNITS==PJ_IO_UNITS_CARTESIAN && P->helmert)
-            return proj_trans (P->helmert, PJ_FWD, coo);
+            return proj_trans (P->helmert, PJ_INV, coo);
     return coo;
 }
 
@@ -139,14 +141,18 @@ static PJ_COORD pj_fwd_finalize (PJ *P, PJ_COORD coo) {
             coo.lpz.lam = adjlon(coo.lpz.lam);
 
         if (P->vgridshift)
-            coo = proj_trans (P->vgridshift, PJ_INV, coo);
+            coo = proj_trans (P->vgridshift, PJ_FWD, coo); /* Go orthometric from geometric */
+        if (coo.lp.lam==HUGE_VAL)
+            return coo;
         if (P->hgridshift)
-            coo = proj_trans (P->hgridshift, PJ_FWD, coo);
+            coo = proj_trans (P->hgridshift, PJ_INV, coo);
         else if (P->helmert) {
             coo = proj_trans (P->cart_wgs84, PJ_FWD, coo); /* Go cartesian in WGS84 frame */
-            coo = proj_trans (P->helmert,    PJ_FWD, coo); /* Step into local frame */
+            coo = proj_trans (P->helmert,    PJ_INV, coo); /* Step into local frame */
             coo = proj_trans (P->cart,       PJ_INV, coo); /* Go back to angular using local ellps */
         }
+        if (coo.lp.lam==HUGE_VAL)
+            return coo;
 
         /* If input latitude was geocentrical, convert back to geocentrical */
         if (P->geoc)


=====================================
src/pj_geocent.c
=====================================
--- a/src/pj_geocent.c
+++ b/src/pj_geocent.c
@@ -48,7 +48,7 @@ static LP inverse(XY xy, PJ *P) {
     return lp;
 }
 
-PJ *PROJECTION(geocent) {
+PJ *CONVERSION (geocent, 0) {
     P->is_geocent = 1;
     P->x0 = 0.0;
     P->y0 = 0.0;


=====================================
src/pj_gridinfo.c
=====================================
--- a/src/pj_gridinfo.c
+++ b/src/pj_gridinfo.c
@@ -564,7 +564,7 @@ static int pj_gridinfo_init_ntv2( projCtx ctx, PAFile fid, PJ_GRIDINFO *gilist )
 
             gi->gridname = pj_strdup( gilist->gridname );
             gi->filename = pj_strdup( gilist->filename );
-            if (!gi->gridname || gi->filename) {
+            if (!gi->gridname || !gi->filename) {
                 pj_gridinfo_free(ctx, gi);
                 pj_dalloc(ct);
                 pj_gridinfo_free(ctx, gilist);


=====================================
src/pj_init.c
=====================================
--- a/src/pj_init.c
+++ b/src/pj_init.c
@@ -470,22 +470,20 @@ pj_init(int argc, char **argv) {
 }
 
 
-typedef    PJ *(constructor)(PJ *);
-
-static constructor *pj_constructor (const char *name) {
+static PJ_CONSTRUCTOR pj_locate_constructor (const char *name) {
     int i;
     char *s;
     for (i = 0; (s = pj_list[i].id) && strcmp(name, s) ; ++i) ;
     if (0==s)
         return 0;
-    return (constructor *) pj_list[i].proj;
+    return (PJ_CONSTRUCTOR) pj_list[i].proj;
 }
 
 
 PJ *
 pj_init_ctx(projCtx ctx, int argc, char **argv) {
     char *s, *name;
-    constructor *proj;
+    PJ_CONSTRUCTOR proj;
     paralist *curr, *init, *start;
     int i;
     int err;
@@ -511,7 +509,7 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) {
             n_inits++;
     }
 
-    /* can't have nested pipeline directly */
+    /* can't have nested pipelines directly */
     if (n_pipelines > 1) {
         pj_ctx_set_errno (ctx, PJD_ERR_MALFORMED_PIPELINE);
         return 0;
@@ -559,7 +557,7 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) {
         return pj_dealloc_params (ctx, start, PJD_ERR_PROJ_NOT_NAMED);
     name += 5;
 
-    proj = pj_constructor (name);
+    proj = pj_locate_constructor (name);
     if (0==proj)
         return pj_dealloc_params (ctx, start, PJD_ERR_UNKNOWN_PROJECTION_ID);
 
@@ -593,17 +591,26 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) {
     if (pj_datum_set(ctx, start, PIN))
         return pj_default_destructor (PIN, proj_errno(PIN));
 
-    if (PIN->need_ellps) {
-        int ret = pj_ellipsoid (PIN);
-        if (0 != ret) {
+    err = pj_ellipsoid (PIN);
+
+    if (err) {
+        /* Didn't get an ellps, but doesn't need one: Get a free WGS84 */
+        if (PIN->need_ellps) {
             pj_log (ctx, PJ_LOG_DEBUG_MINOR, "pj_init_ctx: Must specify ellipsoid or sphere");
             return pj_default_destructor (PIN, proj_errno(PIN));
         }
-        PIN->a_orig = PIN->a;
-        PIN->es_orig = PIN->es;
-        if (pj_calc_ellipsoid_params (PIN, PIN->a, PIN->es))
-            return pj_default_destructor (PIN, PJD_ERR_ECCENTRICITY_IS_ONE);
+        else {
+            if (PJD_ERR_MAJOR_AXIS_NOT_GIVEN==proj_errno (PIN))
+                proj_errno_reset (PIN);
+            PIN->f = 1.0/298.257223563;
+            PIN->a_orig  = PIN->a  = 6378137.0;
+            PIN->es_orig = PIN->es = PIN->f*(2-PIN->f);
+        }
     }
+    PIN->a_orig = PIN->a;
+    PIN->es_orig = PIN->es;
+    if (pj_calc_ellipsoid_params (PIN, PIN->a, PIN->es))
+        return pj_default_destructor (PIN, PJD_ERR_ECCENTRICITY_IS_ONE);
 
     /* Now that we have ellipse information check for WGS84 datum */
     if( PIN->datum_type == PJD_3PARAM


=====================================
src/pj_inv.c
=====================================
--- a/src/pj_inv.c
+++ b/src/pj_inv.c
@@ -80,11 +80,13 @@ static PJ_COORD pj_inv_prepare (PJ *P, PJ_COORD coo) {
             coo = proj_trans (P->hgridshift, PJ_FWD, coo);
         else if (P->helmert) {
             coo = proj_trans (P->cart,       PJ_FWD, coo); /* Go cartesian in local frame */
-            coo = proj_trans (P->helmert,    PJ_INV, coo); /* Step into WGS84 */
+            coo = proj_trans (P->helmert,    PJ_FWD, coo); /* Step into WGS84 */
             coo = proj_trans (P->cart_wgs84, PJ_INV, coo); /* Go back to angular using WGS84 ellps */
         }
+        if (coo.lp.lam==HUGE_VAL)
+            return coo;
         if (P->vgridshift)
-            coo = proj_trans (P->vgridshift, PJ_INV, coo);
+            coo = proj_trans (P->vgridshift, PJ_INV, coo); /* Go geometric from orthometric */
         return coo;
     }
 
@@ -99,9 +101,8 @@ static PJ_COORD pj_inv_prepare (PJ *P, PJ_COORD coo) {
         coo.xyz.y = P->to_meter * coo.xyz.y - P->y0;
         coo.xyz.z = P->to_meter * coo.xyz.z - P->z0;
 
-        if (P->is_geocent) {
+        if (P->is_geocent)
             coo = proj_trans (P->cart, PJ_INV, coo);
-        }
 
         return coo;
 
@@ -148,14 +149,18 @@ static PJ_COORD pj_inv_finalize (PJ *P, PJ_COORD coo) {
                 coo.lpz.lam = adjlon(coo.lpz.lam);
 
             if (P->vgridshift)
-                coo = proj_trans (P->vgridshift, PJ_INV, coo);
+                coo = proj_trans (P->vgridshift, PJ_INV, coo); /* Go geometric from orthometric */
+            if (coo.lp.lam==HUGE_VAL)
+                return coo;
             if (P->hgridshift)
                 coo = proj_trans (P->hgridshift, PJ_FWD, coo);
             else if (P->helmert) {
                 coo = proj_trans (P->cart,       PJ_FWD, coo); /* Go cartesian in local frame */
-                coo = proj_trans (P->helmert,    PJ_INV, coo); /* Step into WGS84 */
+                coo = proj_trans (P->helmert,    PJ_FWD, coo); /* Step into WGS84 */
                 coo = proj_trans (P->cart_wgs84, PJ_INV, coo); /* Go back to angular using WGS84 ellps */
             }
+            if (coo.lp.lam==HUGE_VAL)
+                return coo;
         }
 
         /* If input latitude was geocentrical, convert back to geocentrical */


=====================================
src/proj.def
=====================================
--- a/src/proj.def
+++ b/src/proj.def
@@ -152,3 +152,6 @@ EXPORTS
 
     proj_angular_input             @138
     proj_angular_output            @139
+
+    proj_geod                      @140
+    proj_context_errno             @141


=====================================
src/proj.h
=====================================
--- a/src/proj.h
+++ b/src/proj.h
@@ -112,13 +112,7 @@
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  *****************************************************************************/
-/*
-#ifdef _MSC_VER
-#ifndef _USE_MATH_DEFINES
-#define _USE_MATH_DEFINES
-#endif
-#endif
-#include <math.h>    For M_PI */
+
 #include <stddef.h>  /* For size_t */
 
 
@@ -151,11 +145,6 @@ typedef union PJ_COORD PJ_COORD;
 struct PJ_AREA;
 typedef struct PJ_AREA PJ_AREA;
 
-/* The slimmed down PROJ 5.0.0 version of struct FACTORS  */
-/* Will take over the world and the name when we can rid  */
-/* the library for deprecated stuff, but it's the typedef */
-/* which is userspace useful, so it does not do much of a */
-/* difference */
 struct P5_FACTORS {                  /* Common designation */
     double meridional_scale;               /* h */
     double parallel_scale;                 /* k */
@@ -210,15 +199,16 @@ typedef struct { double   u,   v,  w, t; }  PJ_UVWT;
 typedef struct { double lam, phi,  z, t; }  PJ_LPZT;
 typedef struct { double o, p, k; }          PJ_OPK;  /* Rotations: omega, phi, kappa */
 typedef struct { double e, n, u; }          PJ_ENU;  /* East, North, Up */
+typedef struct { double s, a1, a2; }        PJ_GEOD; /* Geodesic length, fwd azi, rev azi */
 
-/* Classic proj.4 pair/triplet types */
-typedef struct { double   u,   v; }  UV;
-typedef struct { double   x,   y; }  XY;
-typedef struct { double lam, phi; }  LP;
+/* Classic proj.4 pair/triplet types - moved into the PJ_ name space */
+typedef struct { double   u,   v; }  PJ_UV;
+typedef struct { double   x,   y; }  PJ_XY;
+typedef struct { double lam, phi; }  PJ_LP;
 
-typedef struct { double   x,   y,  z; }  XYZ;
-typedef struct { double   u,   v,  w; }  UVW;
-typedef struct { double lam, phi,  z; }  LPZ;
+typedef struct { double   x,   y,  z; }  PJ_XYZ;
+typedef struct { double   u,   v,  w; }  PJ_UVW;
+typedef struct { double lam, phi,  z; }  PJ_LPZ;
 
 
 /* Avoid preprocessor renaming and implicit type-punning: Use a union to make it explicit */
@@ -227,14 +217,15 @@ union PJ_COORD {
     PJ_XYZT xyzt;
     PJ_UVWT uvwt;
     PJ_LPZT lpzt;
+    PJ_GEOD geod;
      PJ_OPK opk;
      PJ_ENU enu;
-        XYZ xyz;
-        UVW uvw;
-        LPZ lpz;
-         XY xy;
-         UV uv;
-         LP lp;
+     PJ_XYZ xyz;
+     PJ_UVW uvw;
+     PJ_LPZ lpz;
+      PJ_XY xy;
+      PJ_UV uv;
+      PJ_LP lp;
 };
 
 
@@ -263,8 +254,8 @@ struct PJ_GRID_INFO {
     char        gridname[32];       /* name of grid                         */
     char        filename[260];      /* full path to grid                    */
     char        format[8];          /* file format of grid                  */
-    LP          lowerleft;          /* Coordinates of lower left corner     */
-    LP          upperright;         /* Coordinates of upper right corner    */
+    PJ_LP       lowerleft;          /* Coordinates of lower left corner     */
+    PJ_LP       upperright;         /* Coordinates of upper right corner    */
     int         n_lon, n_lat;       /* Grid size                            */
     double      cs_lon, cs_lat;     /* Cell size of grid                    */
 };
@@ -336,26 +327,31 @@ PJ_COORD proj_coord (double x, double y, double z, double t);
 double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coo);
 
 /* Geodesic distance between two points with angular 2D coordinates */
-double proj_lp_dist (const PJ *P, LP a, LP b);
+double proj_lp_dist (const PJ *P, PJ_COORD a, PJ_COORD b);
 
 /* The geodesic distance AND the vertical offset */
-double proj_lpz_dist (const PJ *P, LPZ a, LPZ b);
+double proj_lpz_dist (const PJ *P, PJ_COORD a, PJ_COORD b);
 
 /* Euclidean distance between two points with linear 2D coordinates */
-double proj_xy_dist (XY a, XY b);
+double proj_xy_dist (PJ_COORD a, PJ_COORD b);
 
 /* Euclidean distance between two points with linear 3D coordinates */
-double proj_xyz_dist (XYZ a, XYZ b);
+double proj_xyz_dist (PJ_COORD a, PJ_COORD b);
+
+/* Geodesic distance (in meter) + fwd and rev azimuth between two points on the ellipsoid */
+PJ_COORD proj_geod (const PJ *P, PJ_COORD a, PJ_COORD b);
+
 
 
 /* Set or read error level */
+int  proj_context_errno (PJ_CONTEXT *ctx);
 int  proj_errno (const PJ *P);
 int  proj_errno_set (const PJ *P, int err);
 int  proj_errno_reset (const PJ *P);
 int  proj_errno_restore (const PJ *P, int err);
 
 /* Scaling and angular distortion factors */
-PJ_FACTORS proj_factors(PJ *P, LP lp);
+PJ_FACTORS proj_factors(PJ *P, PJ_COORD lp);
 
 /* Info functions - get information about various PROJ.4 entities */
 PJ_INFO proj_info(void);


=====================================
src/proj_4D_api.c
=====================================
--- a/src/proj_4D_api.c
+++ b/src/proj_4D_api.c
@@ -67,32 +67,47 @@ int proj_angular_output (PJ *P, enum PJ_DIRECTION dir) {
 }
 
 
+/* Geodesic distance (in meter) + fwd and rev azimuth between two points on the ellipsoid */
+PJ_COORD proj_geod (const PJ *P, PJ_COORD a, PJ_COORD b) {
+    PJ_COORD c;
+    /* Note: the geodesic code takes arguments in degrees */
+    geod_inverse (P->geod,
+        PJ_TODEG(a.lpz.phi), PJ_TODEG(a.lpz.lam),
+        PJ_TODEG(b.lpz.phi), PJ_TODEG(b.lpz.lam),
+        c.v, c.v+1, c.v+2
+    );
+
+    return c;
+}
+
+
 /* Geodesic distance (in meter) between two points with angular 2D coordinates */
-double proj_lp_dist (const PJ *P, LP a, LP b) {
+double proj_lp_dist (const PJ *P, PJ_COORD a, PJ_COORD b) {
     double s12, azi1, azi2;
     /* Note: the geodesic code takes arguments in degrees */
-    geod_inverse (P->geod, PJ_TODEG(a.phi), PJ_TODEG(a.lam), PJ_TODEG(b.phi), PJ_TODEG(b.lam), &s12, &azi1, &azi2);
+    geod_inverse (P->geod,
+        PJ_TODEG(a.lpz.phi), PJ_TODEG(a.lpz.lam),
+        PJ_TODEG(b.lpz.phi), PJ_TODEG(b.lpz.lam),
+        &s12, &azi1, &azi2
+    );
     return s12;
 }
 
 /* The geodesic distance AND the vertical offset */
-double proj_lpz_dist (const PJ *P, LPZ a, LPZ b) {
-    PJ_COORD aa, bb;
-    aa.lpz = a;
-    bb.lpz = b;
-    if (HUGE_VAL==a.lam || HUGE_VAL==b.lam)
+double proj_lpz_dist (const PJ *P, PJ_COORD a, PJ_COORD b) {
+    if (HUGE_VAL==a.lpz.lam || HUGE_VAL==b.lpz.lam)
         return HUGE_VAL;
-    return hypot (proj_lp_dist (P, aa.lp, bb.lp), a.z - b.z);
+    return hypot (proj_lp_dist (P, a, b), a.lpz.z - b.lpz.z);
 }
 
 /* Euclidean distance between two points with linear 2D coordinates */
-double proj_xy_dist (XY a, XY b) {
-    return hypot (a.x - b.x, a.y - b.y);
+double proj_xy_dist (PJ_COORD a, PJ_COORD b) {
+    return hypot (a.xy.x - b.xy.x, a.xy.y - b.xy.y);
 }
 
 /* Euclidean distance between two points with linear 3D coordinates */
-double proj_xyz_dist (XYZ a, XYZ b) {
-    return hypot (hypot (a.x - b.x, a.y - b.y), a.z - b.z);
+double proj_xyz_dist (PJ_COORD a, PJ_COORD b) {
+    return hypot (proj_xy_dist (a, b), a.xyz.z - b.xyz.z);
 }
 
 
@@ -125,9 +140,9 @@ double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coo) {
 
     /* checking for angular *input* since we do a roundtrip, and end where we begin */
     if (proj_angular_input (P, direction))
-        return proj_lpz_dist (P, org.lpz, t.lpz);
+        return proj_lpz_dist (P, org, t);
 
-    return proj_xyz_dist (org.xyz, t.xyz);
+    return proj_xyz_dist (org, t);
 }
 
 
@@ -399,6 +414,8 @@ static int pj_cs2cs_emulation_setup (PJ *P) {
 If any cs2cs style modifiers are given (axis=..., towgs84=..., ) create the 4D API
 equivalent operations, so the preparation and finalization steps in the pj_inv/pj_fwd
 invocators can emulate the behaviour of pj_transform and the cs2cs app.
+
+Returns 1 on success, 0 on failure
 **************************************************************************************/
     PJ *Q;
     paralist *p;
@@ -473,12 +490,13 @@ invocators can emulate the behaviour of pj_transform and the cs2cs app.
         def = malloc (100+n);
         if (0==def)
             return 0;
-        sprintf (def, "break_cs2cs_recursion     proj=helmert %s", s);
+        sprintf (def, "break_cs2cs_recursion     proj=helmert %s transpose", s);
         Q = proj_create (P->ctx, def);
+        pj_inherit_ellipsoid_def (P, Q);
         free (def);
         if (0==Q)
             return 0;
-        P->helmert = skip_prep_fin(Q);
+        P->helmert = skip_prep_fin (Q);
 
         break;
     }
@@ -486,25 +504,25 @@ invocators can emulate the behaviour of pj_transform and the cs2cs app.
     /* We also need cartesian/geographical transformations if we are working in */
     /* geocentric/cartesian space or we need to do a Helmert transform.         */
     if (P->is_geocent || P->helmert) {
-        char def[100];
-        sprintf (def, "break_cs2cs_recursion     proj=cart");
+        char def[150];
+        sprintf (def, "break_cs2cs_recursion     proj=cart   a=%40.20g  f=%40.20g", P->a, P->f);
         Q = proj_create (P->ctx, def);
         if (0==Q)
             return 0;
-        pj_inherit_ellipsoid_def(P, Q);
-        P->cart = skip_prep_fin(Q);
+        P->cart = skip_prep_fin (Q);
 
         sprintf (def, "break_cs2cs_recursion     proj=cart  ellps=WGS84");
         Q = proj_create (P->ctx, def);
         if (0==Q)
             return 0;
-        P->cart_wgs84 = skip_prep_fin(Q);
+        P->cart_wgs84 = skip_prep_fin (Q);
     }
 
     return 1;
 }
 
 
+
 /*************************************************************************************/
 PJ *proj_create (PJ_CONTEXT *ctx, const char *definition) {
 /**************************************************************************************
@@ -633,11 +651,26 @@ PJ *proj_destroy (PJ *P) {
     return 0;
 }
 
+/*****************************************************************************/
 int proj_errno (const PJ *P) {
+/******************************************************************************
+    Read an error level from the context of a PJ.
+******************************************************************************/
     return pj_ctx_get_errno (pj_get_ctx ((PJ *) P));
 }
 
 /*****************************************************************************/
+int proj_context_errno (PJ_CONTEXT *ctx) {
+/******************************************************************************
+    Read an error directly from a context, without going through a PJ
+    belonging to that context.
+******************************************************************************/
+    if (0==ctx)
+        ctx = pj_get_default_ctx();
+    return pj_ctx_get_errno (ctx);
+}
+
+/*****************************************************************************/
 int proj_errno_set (const PJ *P, int err) {
 /******************************************************************************
     Set context-errno, bubble it up to the thread local errno, return err
@@ -995,7 +1028,7 @@ PJ_INIT_INFO proj_init_info(const char *initname){
 
 
 /*****************************************************************************/
-PJ_FACTORS proj_factors(PJ *P, LP lp) {
+PJ_FACTORS proj_factors(PJ *P, PJ_COORD lp) {
 /******************************************************************************
     Cartographic characteristics at point lp.
 
@@ -1011,7 +1044,7 @@ PJ_FACTORS proj_factors(PJ *P, LP lp) {
     if (0==P)
         return factors;
 
-    if (pj_factors(lp, P, 0.0, &f))
+    if (pj_factors(lp.lp, P, 0.0, &f))
         return factors;
 
     factors.meridional_scale  =  f.h;


=====================================
src/proj_api.h
=====================================
--- a/src/proj_api.h
+++ b/src/proj_api.h
@@ -25,8 +25,6 @@
  * DEALINGS IN THE SOFTWARE.
  *****************************************************************************/
 
-
-
  /*
   * This version number should be updated with every release!
   *
@@ -84,10 +82,18 @@ extern int pj_errno;    /* global error return code */
     /* These make the function declarations below conform with classic proj */
     typedef PJ *projPJ;          /* projPJ is a pointer to PJ */
     typedef struct projCtx_t *projCtx;  /* projCtx is a pointer to projCtx_t */
-#   define projXY        XY
+#ifdef PROJ_H
+#   define projXY       PJ_XY
+#   define projLP       PJ_LP
+#   define projXYZ      PJ_XYZ
+#   define projLPZ      PJ_LPZ
+#else
+#   define projXY       XY
 #   define projLP       LP
 #   define projXYZ      XYZ
 #   define projLPZ      LPZ
+#endif
+
 #else
     /* i.e. proj_api invoked as primary API */
     typedef struct { double u, v; } projUV;


=====================================
src/proj_internal.h
=====================================
--- a/src/proj_internal.h
+++ b/src/proj_internal.h
@@ -91,9 +91,9 @@ PJ_COORD pj_approx_3D_trans (PJ *P, PJ_DIRECTION direction, PJ_COORD coo);
 /* Grid functionality */
 int             proj_vgrid_init(PJ *P, const char *grids);
 int             proj_hgrid_init(PJ *P, const char *grids);
-double          proj_vgrid_value(PJ *P, LP lp);
-LP              proj_hgrid_value(PJ *P, LP lp);
-LP              proj_hgrid_apply(PJ *P, LP lp, PJ_DIRECTION direction);
+double          proj_vgrid_value(PJ *P, PJ_LP lp);
+PJ_LP           proj_hgrid_value(PJ *P, PJ_LP lp);
+PJ_LP           proj_hgrid_apply(PJ *P, PJ_LP lp, PJ_DIRECTION direction);
 
 /* High level functionality for handling thread contexts */
 enum proj_log_level {


=====================================
src/projects.h
=====================================
--- a/src/projects.h
+++ b/src/projects.h
@@ -157,10 +157,6 @@ typedef struct { double u, v, w; } projUVW;
 #define XYZ projUVW
 #define LPZ projUVW
 
-/* Yes, this is ridiculous, but a consequence of an old and bad decision about implicit type-punning through preprocessor abuse */
-typedef struct { double u, v; }        UV;
-typedef struct { double u, v, w; }     UVW;
-
 #else
 typedef struct { double x, y; }        XY;
 typedef struct { double x, y, z; }     XYZ;
@@ -169,6 +165,15 @@ typedef struct { double lam, phi, z; } LPZ;
 typedef struct { double u, v; }        UV;
 typedef struct { double u, v, w; }     UVW;
 #endif  /* ndef PJ_LIB__ */
+
+#else
+typedef PJ_XY XY;
+typedef PJ_LP LP;
+typedef PJ_UV UV;
+typedef PJ_XYZ XYZ;
+typedef PJ_LPZ LPZ;
+typedef PJ_UVW UVW;
+
 #endif  /* ndef PROJ_H   */
 
 
@@ -213,6 +218,37 @@ struct PJ_AREA {
 struct projCtx_t;
 typedef struct projCtx_t projCtx_t;
 
+/*****************************************************************************
+
+    Some function types that are especially useful when working with PJs
+
+******************************************************************************
+
+PJ_CONSTRUCTOR:
+
+    A function taking a pointer-to-PJ as arg, and returning a pointer-to-PJ.
+    Historically called twice: First with a 0 argument, to allocate memory,
+    second with the first return value as argument, for actual setup.
+
+PJ_DESTRUCTOR:
+
+    A function taking a pointer-to-PJ and an integer as args, then first
+    handling the deallocation of the PJ, afterwards handing the integer over
+    to the error reporting subsystem, and finally returning a null pointer in
+    support of the "return free (P)" (aka "get the hell out of here") idiom.
+
+PJ_OPERATOR:
+
+    A function taking a PJ_COORD and a pointer-to-PJ as args, applying the
+    PJ to the PJ_COORD, and returning the resulting PJ_COORD.
+
+*****************************************************************************/
+typedef    PJ       *(* PJ_CONSTRUCTOR) (PJ *);
+typedef    void     *(* PJ_DESTRUCTOR)  (PJ *, int);
+typedef    PJ_COORD  (* PJ_OPERATOR)    (PJ_COORD, PJ *);
+/****************************************************************************/
+
+
 
 /* base projection data structure */
 struct PJconsts {
@@ -262,10 +298,10 @@ struct PJconsts {
     LP  (*inv)(XY,    PJ *);
     XYZ (*fwd3d)(LPZ, PJ *);
     LPZ (*inv3d)(XYZ, PJ *);
-    PJ_COORD (*fwd4d)(PJ_COORD, PJ *);
-    PJ_COORD (*inv4d)(PJ_COORD, PJ *);
+    PJ_OPERATOR fwd4d;
+    PJ_OPERATOR inv4d;
 
-    void *(*destructor)(PJ *, int);
+    PJ_DESTRUCTOR destructor;
 
 
     /*************************************************************************************


=====================================
test/gie/4D-API_cs2cs-style.gie
=====================================
--- a/test/gie/4D-API_cs2cs-style.gie
+++ b/test/gie/4D-API_cs2cs-style.gie
@@ -12,74 +12,57 @@ but provided through a different interface.
 <gie>
 
 -------------------------------------------------------------------------------
-Test the handling of the +towgs84 parameter
+Test the handling of the +towgs84 parameter.
 -------------------------------------------------------------------------------
-This example is from Lotti Jivall: "Simplified transformations from
-ITRF2008/IGS08 to ETRS89 for maritime applications". The original
-XYZ data (cf. more_builtins.gie) have been transformed to LPZ using
-this command: echo x_val y_val z_val | cct -It0 proj=cart ellps=GRS80 --
+(additional tests of the towgs84 handling can be found in DHDN_ETRS89.gie)
+-------------------------------------------------------------------------------
+
 
-NOTE: Here, the ellipsoid has been swapped to WGS84, to align with
-      the WGS84 ellipsoid used in the cs2cs emulation introduced by
-      pj_cs2cs_emulation_setup()
 -------------------------------------------------------------------------------
-operation proj=latlong ellps=WGS84
-          towgs84 =  0.676780,  0.654950, -0.528270,
-                    -0.022742,  0.012667,  0.022704, -0.010700
+This example is from Lotti Jivall: "Simplified transformations from
+ITRF2008/IGS08 to ETRS89 for maritime applications" (see also more_builtins.gie)
 -------------------------------------------------------------------------------
-tolerance 0.05 mm
-direction forward
-
-accept    13.4999969828397   54.9999995493206   -0.6034
-expect    13.4999906103972   54.9999957469562   -0.6374
+operation  proj=geocent
+           towgs84 = 0.676780, 0.654950, -0.528270,
+                    -0.022742, 0.012667,  0.022704,
+                    -0.01070
+-------------------------------------------------------------------------------
+tolerance 1 um
 
 direction inverse
 
-accept    13.4999906103972   54.9999957469562   -0.6374
-expect    13.4999969828397   54.9999995493206   -0.6034
+accept     3565285.00000000  855949.00000000  5201383.00000000
+expect     3565285.41342351  855948.67986759  5201382.72939791
 -------------------------------------------------------------------------------
 
 
-
 -------------------------------------------------------------------------------
 This example is a random point, transformed from ED50 to ETRS89 using KMStrans2.
-
-NOTE: Signs swapped wrt. KMStrans2, which apparently uses frame rotation.
 -------------------------------------------------------------------------------
 operation proj=latlong ellps=intl
-          towgs84 =  081.07030, 089.36030, 115.75260,
-                     000.48488, 000.02436, 000.41321, 0.540645
+          towgs84 =  -081.07030, -089.36030, -115.75260,
+                      000.48488, 000.02436, 000.41321, -0.540645
 -------------------------------------------------------------------------------
-tolerance  0.1 mm
-# echo SWAPPED and trimmed - expect succcess
-# accept     16.819999997    55.170000002        61.0
+tolerance  25 mm
+
 accept     16.82    55.17        61.0
 expect     16.8210462130   55.1705688946       29.0317
 -------------------------------------------------------------------------------
-This commented-out version of the example above was used to detect the sign
-discrepancy between KMSTrans2 and PROJ.
--------------------------------------------------------------------------------
-operation proj=latlong ellps=intl
-          towgs84 =  -081.07030, -089.36030, -115.75260,
-                     -000.48488, -000.02436, -000.41321, -0.540645
--------------------------------------------------------------------------------
-# echo NOT SWAPPED - Expect failure
-# accept     16.8210462130   55.1705688946       29.0317
-# expect     16.819999997    55.170000002        61.0
--------------------------------------------------------------------------------
 
 
 
 -------------------------------------------------------------------------------
 operation  proj=latlong nadgrids=nzgd2kgrid0005.gsb  ellps=GRS80
 -------------------------------------------------------------------------------
-tolerance 1 nm
+This functionality is also tested in DHDN_ETRS89.gie
+-------------------------------------------------------------------------------
+tolerance 1 mm
 ignore    pjd_err_failed_to_load_grid
-accept    173                 -45                  0 0
-expect    172.999892181021551 -45.001620431954613  0 0
+accept    173                 -45
+expect    172.999892181021551 -45.001620431954613
 direction inverse
-accept    172.999892181021551 -45.001620431954613  0 0
-expect    173                 -45                  0 0
+accept    172.999892181021551 -45.001620431954613
+expect    173                 -45
 -------------------------------------------------------------------------------
 
 
@@ -89,9 +72,12 @@ operation  proj=latlong geoidgrids=egm96_15.gtx  ellps=GRS80
 -------------------------------------------------------------------------------
 tolerance 15 cm      # lax tolerance due to widespread bad egm96 file
 ignore    pjd_err_failed_to_load_grid
+
 accept    12.5 55.5   0
 expect    12.5 55.5 -36.0213
+
 direction inverse
+
 accept    12.5 55.5 -36.0213
 expect    12.5 55.5  0
 -------------------------------------------------------------------------------
@@ -111,6 +97,10 @@ expect    12.5 55.5 0
 -------------------------------------------------------------------------------
 Same as the two above, but also do axis swapping.
 -------------------------------------------------------------------------------
+NOTE: A number of the tests below are commented out. The actually do the
+right thing, but the gie distance computation is not yet able to cope
+with "unusual" axis orders
+-------------------------------------------------------------------------------
 operation  proj=latlong geoidgrids=egm96_15.gtx  axis=neu ellps=GRS80
 -------------------------------------------------------------------------------
 tolerance 15 cm      # lax tolerance due to widely distributed, bad egm96 file
@@ -125,11 +115,11 @@ operation  proj=latlong geoidgrids=egm96_15.gtx  axis=dne ellps=GRS80
 -------------------------------------------------------------------------------
 tolerance 15 cm      # lax tolerance due to widely distributed, bad egm96 file
 ignore    pjd_err_failed_to_load_grid
-accept    12.5 55.5  0
-expect    36.0213 55.5 12.5
-direction inverse
-accept    36.0213 55.5 12.5
-expect    12.5 55.5  0
+# accept    12.5 55.5  0
+# expect    36.0213 55.5 12.5
+# direction inverse
+# accept    36.0213 55.5 12.5
+# expect    12.5 55.5  0
 -------------------------------------------------------------------------------
 operation  proj=merc geoidgrids=egm96_15.gtx  ellps=GRS80
 -------------------------------------------------------------------------------
@@ -152,9 +142,9 @@ tolerance 15 cm      # lax tolerance due to widely distributed, bad egm96 file
 ignore    pjd_err_failed_to_load_grid
 accept    12.5 55.5 0
 expect    55.5 -36.0213 12.5
-direction inverse
-accept    55.5 -36.0213 12.5
-expect    12.5 55.5 0
+# direction inverse
+# accept    55.5 -36.0213 12.5
+# expect    12.5 55.5 0
 -------------------------------------------------------------------------------
 operation  proj=merc geoidgrids=egm96_15.gtx axis=sue ellps=GRS80
 -------------------------------------------------------------------------------
@@ -162,8 +152,38 @@ tolerance 15 cm
 ignore    pjd_err_failed_to_load_grid
 accept    12.5 55.5 0
 expect    -7424275.1946 -36.0213  1391493.6349 0.0000
-direction inverse
-accept    -7424275.1946 -36.0213  1391493.6349 0.0000
-expect    12.5 55.5 0
+# direction inverse
+# accept    -7424275.1946 -36.0213  1391493.6349 0.0000
+# expect    12.5 55.5 0
+-------------------------------------------------------------------------------
+
+
+
+-------------------------------------------------------------------------------
+A test case from a comment by Github user c0nk
+-------------------------------------------------------------------------------
+operation  proj=somerc
+           lat_0=46.95240555555556 lon_0=7.439583333333333 k_0=1
+           x_0=2600000 y_0=1200000 ellps=bessel
+           towgs84=674.374,15.056,405.346 no_defs
+-------------------------------------------------------------------------------
+tolerance 20 cm
+accept    7.438632495 46.951082877
+expect    2600000.0  1200000.0
+-------------------------------------------------------------------------------
+Same test, but now implemented as a pipeline. This is for testing a nasty bug,
+where, at the end of pipeline creation, a false warning about missing ellps was
+left behind from the creation of the Helmert step  (now repaired in pj_init).
+-------------------------------------------------------------------------------
+operation proj=pipeline
+     step proj=cart ellps=WGS84 no_defs
+     step proj=helmert x=674.37400 y=15.05600 z=405.34600 inv no_defs
+     step proj=cart ellps=bessel no_defs inv
+     step proj=somerc lat_0=46.95240555555556 lon_0=7.439583333333333
+                      k_0=1 x_0=2600000 y_0=1200000 ellps=bessel units=m no_defs
+-------------------------------------------------------------------------------
+tolerance 20 cm
+accept    7.438632495 46.951082877
+expect    2600000.0  1200000.0
 -------------------------------------------------------------------------------
 </gie>


=====================================
test/gie/GDA.gie
=====================================
--- a/test/gie/GDA.gie
+++ b/test/gie/GDA.gie
@@ -50,6 +50,7 @@ operation proj = pipeline ellps=GRS80;
                z  = -0.04019;   rz = -0.0328979;  s = -0.009994;
           step proj = cart inv;
 -----------------------------------------------------------------------------------
+tolerance  2 mm
 accept    133.88551329 -23.67012389  603.3466  0   # Alice Springs GDA94
 expect    133.8855216  -23.67011014  603.2489  0   # Alice Springs GDA2020
 -------------------------------------------------------------------------------


=====================================
test/gie/builtins.gie
=====================================
--- a/test/gie/builtins.gie
+++ b/test/gie/builtins.gie
@@ -20,7 +20,7 @@ Albers Equal Area
 -------------------------------------------------------------------------------
 operation +proj=aea   +ellps=GRS80  +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222571.608757106 110653.326743030
 accept  2 -1
@@ -43,7 +43,7 @@ expect  -0.001796630 -0.000904370
 -------------------------------------------------------------------------------
 operation +proj=aea   +R=6400000    +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223334.085170885 111780.431884472
 accept  2 -1
@@ -73,7 +73,7 @@ Azimuthal Equidistant
 -------------------------------------------------------------------------------
 operation +proj=aeqd   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222616.522190052 110596.996549550
 accept  2 -1
@@ -96,7 +96,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=aeqd   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223379.456047271 111723.757570854
 accept  2 -1
@@ -126,7 +126,7 @@ Airy
 -------------------------------------------------------------------------------
 operation +proj=airy   +a=6400000    +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  189109.886908621 94583.752387504
 accept  2 -1
@@ -145,7 +145,7 @@ Aitoff
 -------------------------------------------------------------------------------
 operation +proj=aitoff   +R=6400000    +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223379.458811696 111706.742883853
 accept  2 -1
@@ -174,7 +174,7 @@ Mod. Stereographic of Alaska
 -------------------------------------------------------------------------------
 operation +proj=alsk +ellps=clrk66
 -------------------------------------------------------------------------------
-tolerance 0.00001 mm
+tolerance 0.1 mm
 accept  -160.000000000 55.000000000
 expect  -513253.146950842 -968928.031867943
 accept  -160.000000000 70.000000000
@@ -197,7 +197,7 @@ expect  -144.758985461 60.202929201
 -------------------------------------------------------------------------------
 operation +proj=alsk +R=6370997
 -------------------------------------------------------------------------------
-tolerance 0.0001 mm
+tolerance 0.1 mm
 accept  -160.000000000 55.000000000
 expect  -511510.319410844 -967150.991676078
 accept  -160.000000000 70.000000000
@@ -226,7 +226,7 @@ Apian Globular I
 -------------------------------------------------------------------------------
 operation +proj=apian   +a=6400000    +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223374.577355253 111701.072127637
 accept  2 -1
@@ -245,7 +245,7 @@ August Epicycloidal
 -------------------------------------------------------------------------------
 operation +proj=august   +a=6400000    +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223404.978180972 111722.340289763
 accept  2 -1
@@ -264,7 +264,7 @@ Bacon Globular
 -------------------------------------------------------------------------------
 operation +proj=bacon   +a=6400000    +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223334.132555965 175450.725922666
 accept  2 -1
@@ -283,7 +283,7 @@ Bipolar conic of western hemisphere
 -------------------------------------------------------------------------------
 operation +proj=bipc   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  2452160.217725756 -14548450.759654747
 accept  2 -1
@@ -306,7 +306,7 @@ expect  -73.034496627 17.246832896
 -------------------------------------------------------------------------------
 operation +proj=bipc   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  2460565.740974965 -14598319.989330800
 accept  2 -1
@@ -335,7 +335,7 @@ Boggs Eumorphic
 -------------------------------------------------------------------------------
 operation +proj=boggs   +a=6400000    +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  211949.700808182 117720.998305411
 accept  2 -1
@@ -355,7 +355,7 @@ Bonne (Werner lat_1=90)
 -------------------------------------------------------------------------------
 operation +proj=bonne   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222605.296097157 55321.139565495
 accept  2 -1
@@ -378,7 +378,7 @@ expect  -0.001796698 0.499095631
 -------------------------------------------------------------------------------
 operation +proj=bonne   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223368.115572528 55884.555246394
 accept  2 -1
@@ -407,7 +407,7 @@ Cal Coop Ocean Fish Invest Lines/Stations
 -------------------------------------------------------------------------------
 operation +proj=calcofi   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +no_defs
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  508.444872150 -1171.764860418
 accept  2 -1
@@ -430,7 +430,7 @@ expect  -62.486322854 87.980755945
 -------------------------------------------------------------------------------
 operation +proj=calcofi   +R=6400000    +lat_1=0.5 +lat_2=2 +no_defs
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  507.090507488 -1164.727375198
 accept  2 -1
@@ -459,7 +459,7 @@ Cassini
 -------------------------------------------------------------------------------
 operation +proj=cass   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222605.285776991 110642.229253999
 accept  2 -1
@@ -482,7 +482,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=cass   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223368.105203484 111769.145040586
 accept  2 -1
@@ -513,7 +513,7 @@ operation +proj=pipeline +R=6390000
     +step +proj=ccon +lat_1=52 +lat_0=52 +lon_0=19 +x_0=330000 +y_0=-350000
 	+step +proj=axisswap +order=1,-2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept 24 55
 expect 650031.54109413219363 4106.1617770643609028
 accept 15 49
@@ -544,7 +544,7 @@ Central Cylindrical
 -------------------------------------------------------------------------------
 operation +proj=cc   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223402.144255274 111712.415540593
 accept  2 -1
@@ -574,7 +574,7 @@ Equal Area Cylindrical
 -------------------------------------------------------------------------------
 operation +proj=cea   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222638.981586547 110568.812396267
 accept  2 -1
@@ -597,7 +597,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=cea   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223402.144255274 111695.401198614
 accept  2 -1
@@ -627,7 +627,7 @@ Chamberlin Trimetric
 -------------------------------------------------------------------------------
 operation +proj=chamb   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  -27864.779586801 -223364.324593274
 accept  2 -1
@@ -646,7 +646,7 @@ Collignon
 -------------------------------------------------------------------------------
 operation +proj=collg   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  249872.921577930 99423.174788460
 accept  2 -1
@@ -675,7 +675,7 @@ Compact Miller
 -------------------------------------------------------------------------------
 operation +proj=comill   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223402.144255274 110611.859089459
 accept  2 -1
@@ -704,7 +704,7 @@ Craster Parabolic (Putnins P4)
 -------------------------------------------------------------------------------
 operation +proj=crast   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  218280.142056781 114306.045604280
 accept  2 -1
@@ -733,7 +733,7 @@ Denoyer Semi-Elliptical
 -------------------------------------------------------------------------------
 operation +proj=denoy   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223377.422876954 111701.072127637
 accept  2 -1
@@ -752,7 +752,7 @@ Eckert I
 -------------------------------------------------------------------------------
 operation +proj=eck1   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  204680.888202951 102912.178426065
 accept  2 -1
@@ -781,7 +781,7 @@ Eckert II
 -------------------------------------------------------------------------------
 operation +proj=eck2   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  204472.870907960 121633.734975242
 accept  2 -1
@@ -810,7 +810,7 @@ Eckert III
 -------------------------------------------------------------------------------
 operation +proj=eck3   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  188652.015721538 94328.919337031
 accept  2 -1
@@ -839,7 +839,7 @@ Eckert IV
 -------------------------------------------------------------------------------
 operation +proj=eck4   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  188646.389356416 132268.540174065
 accept  2 -1
@@ -868,7 +868,7 @@ Eckert V
 -------------------------------------------------------------------------------
 operation +proj=eck5   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  197031.392134061 98523.198847227
 accept  2 -1
@@ -897,7 +897,7 @@ Eckert VI
 -------------------------------------------------------------------------------
 operation +proj=eck6   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  197021.605628992 126640.420733174
 accept  2 -1
@@ -927,7 +927,7 @@ Equidistant Cylindrical (Plate Caree)
 -------------------------------------------------------------------------------
 operation +proj=eqc   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223402.144255274 111701.072127637
 accept  2 -1
@@ -957,7 +957,7 @@ Equidistant Conic
 -------------------------------------------------------------------------------
 operation +proj=eqdc   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222588.440269286 110659.134907347
 accept  2 -1
@@ -980,7 +980,7 @@ expect  -0.001796358 -0.000904370
 -------------------------------------------------------------------------------
 operation +proj=eqdc   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223351.088175114 111786.108747174
 accept  2 -1
@@ -1010,7 +1010,7 @@ Euler
 -------------------------------------------------------------------------------
 operation +proj=euler   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222597.634659108 111404.240549919
 accept  2 -1
@@ -1033,7 +1033,7 @@ expect  -0.001796279 -0.000898316
 -------------------------------------------------------------------------------
 operation +proj=euler   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223360.655598694 111786.112389791
 accept  2 -1
@@ -1064,7 +1064,7 @@ lat_0=(0)
 -------------------------------------------------------------------------------
 operation +proj=etmerc   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5 +zone=30
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222650.796797586 110642.229411933
 accept  2 -1
@@ -1093,7 +1093,7 @@ Fahey
 -------------------------------------------------------------------------------
 operation +proj=fahey   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  182993.344649124 101603.193569884
 accept  2 -1
@@ -1122,7 +1122,7 @@ Foucaut
 -------------------------------------------------------------------------------
 operation +proj=fouc   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222588.120675892 111322.316700694
 accept  2 -1
@@ -1145,7 +1145,7 @@ expect  -0.001796631 -0.000898315
 -------------------------------------------------------------------------------
 operation +proj=fouc   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223351.109003414 111703.907721713
 accept  2 -1
@@ -1174,7 +1174,7 @@ Foucaut Sinusoidal
 -------------------------------------------------------------------------------
 operation +proj=fouc_s   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223402.144255274 111695.401198614
 accept  2 -1
@@ -1203,7 +1203,7 @@ Gall (Gall Stereographic)
 -------------------------------------------------------------------------------
 operation +proj=gall   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  157969.171134520 95345.249178386
 accept  2 -1
@@ -1232,7 +1232,7 @@ Geocentric
 -------------------------------------------------------------------------------
 operation +proj=geocent   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1 0
 expect  6373287.27950247        222560.09599219 110568.77482092
 accept  2 -1 0
@@ -1255,7 +1255,7 @@ expect  -0.001796631 -0.000898315
 -------------------------------------------------------------------------------
 operation +proj=geocent   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 
 
 ===============================================================================
@@ -1267,7 +1267,7 @@ Geostationary Satellite View
 -------------------------------------------------------------------------------
 operation +proj=geos   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +h=35785831
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222527.070365800 110551.303413329
 accept  2 -1
@@ -1290,7 +1290,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=geos   +R=6400000    +lat_1=0.5 +lat_2=2 +h=35785831
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223289.457635795 111677.657456537
 accept  2 -1
@@ -1319,7 +1319,7 @@ Ginsburg VIII (TsNIIGAiK)
 -------------------------------------------------------------------------------
 operation +proj=gins8   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  194350.250939590 111703.907635335
 accept  2 -1
@@ -1339,7 +1339,7 @@ General Sinusoidal Series
 -------------------------------------------------------------------------------
 operation +proj=gn_sinu   +a=6400000    +lat_1=0.5 +lat_2=2 +m=1 +n=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223385.132504696 111698.236447187
 accept  2 -1
@@ -1368,7 +1368,7 @@ Gnomonic
 -------------------------------------------------------------------------------
 operation +proj=gnom   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223492.924747185 111780.509206593
 accept  2 -1
@@ -1397,7 +1397,7 @@ Goode Homolosine
 -------------------------------------------------------------------------------
 operation +proj=goode   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223368.119026632 111701.072127637
 accept  2 -1
@@ -1426,7 +1426,7 @@ Mod. Stereographic of 48 U.S.
 -------------------------------------------------------------------------------
 operation +proj=gs48 +R=6370997
 -------------------------------------------------------------------------------
-tolerance 0.0001 mm
+tolerance 0.1 mm
 accept  -119.000000000 40.000000000
 expect  -1923908.446529346 355874.658944479
 accept  -70.000000000 64.000000000
@@ -1455,7 +1455,7 @@ Mod. Stereographic of 50 U.S.
 -------------------------------------------------------------------------------
 operation +proj=gs50 +ellps=clrk66
 -------------------------------------------------------------------------------
-tolerance 0.0001 mm
+tolerance 0.1 mm
 accept  -160.000000000 65.000000000
 expect  -1874628.537740233 2660907.942291015
 accept  -130.000000000 45.000000000
@@ -1478,7 +1478,7 @@ expect  -75.550660091 34.191114076
 -------------------------------------------------------------------------------
 operation +proj=gs50 +R=6370997
 -------------------------------------------------------------------------------
-tolerance 0.0001 mm
+tolerance 0.1 mm
 accept  -160.000000000 65.000000000
 expect  -1867268.253460009 2656506.230401823
 accept  -130.000000000 45.000000000
@@ -1508,7 +1508,7 @@ Hammer & Eckert-Greifendorff
 -------------------------------------------------------------------------------
 operation +proj=hammer   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223373.788703241 111703.907397767
 accept  2 -1
@@ -1537,7 +1537,7 @@ Hatano Asymmetrical Equal Area
 -------------------------------------------------------------------------------
 operation +proj=hatano   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  189878.878946528 131409.802440626
 accept  2 -1
@@ -1566,7 +1566,7 @@ HEALPix
 -------------------------------------------------------------------------------
 operation +proj=healpix   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222390.103949239 130406.588664482
 accept  2 -1
@@ -1589,7 +1589,7 @@ expect  -0.001798641 -0.000766795
 -------------------------------------------------------------------------------
 operation +proj=healpix   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223402.144255274 131588.044441999
 accept  2 -1
@@ -1619,7 +1619,7 @@ rHEALPix
 -------------------------------------------------------------------------------
 operation +proj=rhealpix   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222390.103949239 130406.588664482
 accept  2 -1
@@ -1642,7 +1642,7 @@ expect  -0.001798641 -0.000766795
 -------------------------------------------------------------------------------
 operation +proj=rhealpix   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223402.144255274 131588.044441999
 accept  2 -1
@@ -1671,7 +1671,7 @@ Interrupted Goode Homolosine
 -------------------------------------------------------------------------------
 operation +proj=igh   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223878.497456271 111701.072127637
 accept  2 -1
@@ -1701,7 +1701,7 @@ International Map of the World Polyconic
 -------------------------------------------------------------------------------
 operation +proj=imw_p   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222588.441139376 55321.128653810
 accept  2 -1
@@ -1730,7 +1730,7 @@ Icosahedral Snyder Equal Area
 -------------------------------------------------------------------------------
 operation +proj=isea   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  -1097074.948022474 3442909.309037183
 accept  2 -1
@@ -1749,7 +1749,7 @@ Kavraisky V
 -------------------------------------------------------------------------------
 operation +proj=kav5   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  200360.905308829 123685.082476998
 accept  2 -1
@@ -1772,7 +1772,7 @@ expect  -0.001996259 -0.000808483
 -------------------------------------------------------------------------------
 operation +proj=kav5   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  201047.703110878 124109.050629171
 accept  2 -1
@@ -1801,7 +1801,7 @@ Kavraisky VII
 -------------------------------------------------------------------------------
 operation +proj=kav7   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  193462.974943729 111701.072127637
 accept  2 -1
@@ -1830,7 +1830,7 @@ Krovak
 -------------------------------------------------------------------------------
 operation +proj=krovak +ellps=GRS80  +no_defs
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  -3196535.232563641 -6617878.867551444
 accept  2 -1
@@ -1860,7 +1860,7 @@ Laborde
 -------------------------------------------------------------------------------
 operation +proj=labrd   +ellps=GRS80  +lon_0=0.5 +lat_0=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  166973.166090228 -110536.912730266
 accept  2 -1
@@ -1889,7 +1889,7 @@ Lambert Azimuthal Equal Area
 -------------------------------------------------------------------------------
 operation +proj=laea   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222602.471450095 110589.827224410
 accept  2 -1
@@ -1912,7 +1912,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=laea   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223365.281370125 111716.668072916
 accept  2 -1
@@ -1942,7 +1942,7 @@ Lagrange
 -------------------------------------------------------------------------------
 operation +proj=lagrng   +a=6400000 +W=2   +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  111703.375917226 27929.831908033
 accept  2 -1
@@ -1961,7 +1961,7 @@ Larrivee
 -------------------------------------------------------------------------------
 operation +proj=larr   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223393.637624201 111707.215961256
 accept  2 -1
@@ -1980,7 +1980,7 @@ Laskowski
 -------------------------------------------------------------------------------
 operation +proj=lask   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  217928.275907355 112144.329220142
 accept  2 -1
@@ -2000,7 +2000,7 @@ Lambert Conformal Conic
 -------------------------------------------------------------------------------
 operation +proj=lcc   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222588.439735968 110660.533870800
 accept  2 -1
@@ -2030,7 +2030,7 @@ Lambert Conformal Conic Alternative
 -------------------------------------------------------------------------------
 operation +proj=lcca   +ellps=GRS80  +lat_0=1 +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222605.285770237 67.806007272
 accept  2 -1
@@ -2060,7 +2060,7 @@ Lambert Equal Area Conic
 -------------------------------------------------------------------------------
 operation +proj=leac   +ellps=GRS80  +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  220685.140542979 112983.500889396
 accept  2 -1
@@ -2083,7 +2083,7 @@ expect  -0.001796616 -0.000904387
 -------------------------------------------------------------------------------
 operation +proj=leac   +R=6400000    +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  221432.868592852 114119.454526532
 accept  2 -1
@@ -2112,7 +2112,7 @@ Lee Oblated Stereographic
 -------------------------------------------------------------------------------
 operation +proj=lee_os   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.0010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  -25564478.952605054 154490848.828625500
 accept  2 -1
@@ -2141,7 +2141,7 @@ Loximuthal
 -------------------------------------------------------------------------------
 operation +proj=loxim   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223382.295791339 55850.536063819
 accept  2 -1
@@ -2171,7 +2171,7 @@ Space oblique for LANDSAT
 -------------------------------------------------------------------------------
 operation +proj=lsat +ellps=GRS80 +lat_1=0.5 +lat_2=2 +lsat=1 +path=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  18241950.014558550 9998256.839822935
 accept  2 -1
@@ -2200,7 +2200,7 @@ McBryde-Thomas Flat-Polar Sine (No. 1)
 -------------------------------------------------------------------------------
 operation +proj=mbt_s   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  204131.517850273 121400.330225508
 accept  2 -1
@@ -2223,7 +2223,7 @@ expect  -0.001959383 -0.000823699
 -------------------------------------------------------------------------------
 operation +proj=mbt_s   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  204831.240570992 121816.466696035
 accept  2 -1
@@ -2252,7 +2252,7 @@ McBryde-Thomas Flat-Pole Sine (No. 2)
 -------------------------------------------------------------------------------
 operation +proj=mbt_fps   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  198798.176129850 125512.017254531
 accept  2 -1
@@ -2281,7 +2281,7 @@ McBride-Thomas Flat-Polar Parabolic
 -------------------------------------------------------------------------------
 operation +proj=mbtfpp   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  206804.786929820 120649.762565793
 accept  2 -1
@@ -2310,7 +2310,7 @@ McBryde-Thomas Flat-Polar Quartic
 -------------------------------------------------------------------------------
 operation +proj=mbtfpq   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  209391.854738393 119161.040199055
 accept  2 -1
@@ -2339,7 +2339,7 @@ McBryde-Thomas Flat-Polar Sinusoidal
 -------------------------------------------------------------------------------
 operation +proj=mbtfps   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  204740.117478572 121864.729719340
 accept  2 -1
@@ -2369,7 +2369,7 @@ Mercator
 -------------------------------------------------------------------------------
 operation +proj=merc   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222638.981586547 110579.965218250
 accept  2 -1
@@ -2392,7 +2392,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=merc   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223402.144255274 111706.743574944
 accept  2 -1
@@ -2421,7 +2421,7 @@ Miller Oblated Stereographic
 -------------------------------------------------------------------------------
 operation +proj=mil_os   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  -1908527.949594205 -1726237.473061448
 accept  2 -1
@@ -2450,7 +2450,7 @@ Miller Cylindrical
 -------------------------------------------------------------------------------
 operation +proj=mill   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223402.144255274 111704.701754394
 accept  2 -1
@@ -2480,7 +2480,7 @@ Space oblique for MISR
 -------------------------------------------------------------------------------
 operation +proj=misrsom   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +path=1
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  18556630.368369825 9533394.675311271
 accept  2 -1
@@ -2503,7 +2503,7 @@ expect  127.761567257 -0.001735150
 -------------------------------------------------------------------------------
 operation +proj=misrsom   +R=6400000    +lat_1=0.5 +lat_2=2 +path=1
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  18641249.279170386 9563342.532334166
 accept  2 -1
@@ -2532,7 +2532,7 @@ Mollweide
 -------------------------------------------------------------------------------
 operation +proj=moll   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  201113.698641813 124066.283433860
 accept  2 -1
@@ -2562,7 +2562,7 @@ Murdoch I
 -------------------------------------------------------------------------------
 operation +proj=murd1   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222600.813473554 111404.244180546
 accept  2 -1
@@ -2585,7 +2585,7 @@ expect  -0.001796254 -0.000898316
 -------------------------------------------------------------------------------
 operation +proj=murd1   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223363.845309492 111786.116032863
 accept  2 -1
@@ -2615,7 +2615,7 @@ Murdoch II
 -------------------------------------------------------------------------------
 operation +proj=murd2   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222588.099751230 111426.140027412
 accept  2 -1
@@ -2638,7 +2638,7 @@ expect  -0.001796356 -0.000897888
 -------------------------------------------------------------------------------
 operation +proj=murd2   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223351.088007027 111808.086934388
 accept  2 -1
@@ -2668,7 +2668,7 @@ Murdoch III
 -------------------------------------------------------------------------------
 operation +proj=murd3   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222600.814077577 111404.246601372
 accept  2 -1
@@ -2691,7 +2691,7 @@ expect  -0.001796254 -0.000898316
 -------------------------------------------------------------------------------
 operation +proj=murd3   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223363.845915585 111786.118461987
 accept  2 -1
@@ -2720,7 +2720,7 @@ Natural Earth
 -------------------------------------------------------------------------------
 operation +proj=natearth   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  194507.265257889 112508.737358295
 accept  2 -1
@@ -2749,7 +2749,7 @@ Natural Earth 2
 -------------------------------------------------------------------------------
 operation +proj=natearth2   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  189255.172934731 113022.495810907
 accept  2 -1
@@ -2778,7 +2778,7 @@ Nell
 -------------------------------------------------------------------------------
 operation +proj=nell   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223385.132504696 111698.236447187
 accept  2 -1
@@ -2807,7 +2807,7 @@ Nell-Hammer
 -------------------------------------------------------------------------------
 operation +proj=nell_h   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223385.131640953 111698.236533562
 accept  2 -1
@@ -2836,7 +2836,7 @@ Nicolosi Globular
 -------------------------------------------------------------------------------
 operation +proj=nicol   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223374.561814140 111732.553988545
 accept  2 -1
@@ -2856,7 +2856,7 @@ Near-sided perspective
 -------------------------------------------------------------------------------
 operation +proj=nsper   +a=6400000  +h=1000000
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222239.816114100 111153.763991925
 accept  2 -1
@@ -2885,7 +2885,7 @@ New Zealand Map Grid
 -------------------------------------------------------------------------------
 operation +proj=nzmg   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  3352675144.747425100 -7043205391.100243600
 accept  2 -1
@@ -2918,7 +2918,7 @@ General Oblique Transformation
 -------------------------------------------------------------------------------
 operation +proj=ob_tran +R=6400000 +o_proj=latlon +o_lon_p=20 +o_lat_p=20 +lon_0=180
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  -2.685687214 1.237430235
 accept  2 -1
@@ -2948,7 +2948,7 @@ Oblique Cylindrical Equal Area
 -------------------------------------------------------------------------------
 operation +proj=ocea   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  19994423.837934088 223322.760576728
 accept  2 -1
@@ -2978,7 +2978,7 @@ Oblated Equal Area
 -------------------------------------------------------------------------------
 operation +proj=oea   +a=6400000    +lat_1=0.5 +lat_2=2 +n=1 +m=2 +theta=3
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  228926.872097864 99870.488430076
 accept  2 -1
@@ -3009,7 +3009,7 @@ Oblique Mercator
 -------------------------------------------------------------------------------
 operation +proj=omerc   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222650.796885261 110642.229314984
 accept  2 -1
@@ -3038,7 +3038,7 @@ Ortelius Oval
 -------------------------------------------------------------------------------
 operation +proj=ortel   +a=6400000    +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223374.577355253 111701.072127637
 accept  2 -1
@@ -3057,7 +3057,7 @@ Orthographic
 -------------------------------------------------------------------------------
 operation +proj=ortho   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223322.760576727 111695.401198614
 accept  2 -1
@@ -3087,7 +3087,7 @@ Perspective Conic
 -------------------------------------------------------------------------------
 operation +proj=pconic   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222588.098841617 111416.604770067
 accept  2 -1
@@ -3110,7 +3110,7 @@ expect  -0.001796356 -0.000897965
 -------------------------------------------------------------------------------
 operation +proj=pconic   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223351.087094295 111798.518992055
 accept  2 -1
@@ -3139,7 +3139,7 @@ Patterson Cylindrical
 -------------------------------------------------------------------------------
 operation +proj=patterson   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223402.144255274 113354.250397780
 accept  2 -1
@@ -3168,7 +3168,7 @@ Polyconic (American)
 -------------------------------------------------------------------------------
 operation +proj=poly   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222605.285770237 110642.194561440
 accept  2 -1
@@ -3191,7 +3191,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=poly   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223368.105210219 111769.110491225
 accept  2 -1
@@ -3220,7 +3220,7 @@ Putnins P1
 -------------------------------------------------------------------------------
 operation +proj=putp1   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  211642.762754160 105831.180787330
 accept  2 -1
@@ -3249,7 +3249,7 @@ Putnins P2
 -------------------------------------------------------------------------------
 operation +proj=putp2   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  211638.039634339 117895.033043380
 accept  2 -1
@@ -3278,7 +3278,7 @@ Putnins P3
 -------------------------------------------------------------------------------
 operation +proj=putp3   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  178227.115507794 89124.560786088
 accept  2 -1
@@ -3307,7 +3307,7 @@ Putnins P3'
 -------------------------------------------------------------------------------
 operation +proj=putp3p   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  178238.118539985 89124.560786088
 accept  2 -1
@@ -3336,7 +3336,7 @@ Putnins P4'
 -------------------------------------------------------------------------------
 operation +proj=putp4p   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  195241.477349386 127796.782307926
 accept  2 -1
@@ -3365,7 +3365,7 @@ Putnins P5
 -------------------------------------------------------------------------------
 operation +proj=putp5   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  226367.213380562 113204.568558475
 accept  2 -1
@@ -3394,7 +3394,7 @@ Putnins P5'
 -------------------------------------------------------------------------------
 operation +proj=putp5p   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  226388.175248756 113204.568558475
 accept  2 -1
@@ -3423,7 +3423,7 @@ Putnins P6
 -------------------------------------------------------------------------------
 operation +proj=putp6   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  226369.395133403 110218.523796521
 accept  2 -1
@@ -3452,7 +3452,7 @@ Putnins P6'
 -------------------------------------------------------------------------------
 operation +proj=putp6p   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  198034.195132195 125989.475461323
 accept  2 -1
@@ -3481,7 +3481,7 @@ Quartic Authalic
 -------------------------------------------------------------------------------
 operation +proj=qua_aut   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222613.549033097 111318.077887984
 accept  2 -1
@@ -3504,7 +3504,7 @@ expect  -0.001796631 -0.000898315
 -------------------------------------------------------------------------------
 operation +proj=qua_aut   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223376.624524029 111699.654379186
 accept  2 -1
@@ -3533,7 +3533,7 @@ Quadrilateralized Spherical Cube
 -------------------------------------------------------------------------------
 operation +proj=qsc   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  304638.450843852 164123.870923794
 accept  2 -1
@@ -3556,7 +3556,7 @@ expect  -0.001321341 -0.000610653
 -------------------------------------------------------------------------------
 operation +proj=qsc   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  305863.792402891 165827.722754715
 accept  2 -1
@@ -3585,7 +3585,7 @@ Robinson
 -------------------------------------------------------------------------------
 operation +proj=robin   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  189588.423282508 107318.530350703
 accept  2 -1
@@ -3614,7 +3614,7 @@ Roussilhe Stereographic
 -------------------------------------------------------------------------------
 operation +proj=rouss   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222644.894131617 110611.091868370
 accept  2 -1
@@ -3644,7 +3644,7 @@ Rectangular Polyconic
 -------------------------------------------------------------------------------
 operation +proj=rpoly   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223368.098302014 111769.110486991
 accept  2 -1
@@ -3663,7 +3663,7 @@ Sinusoidal (Sanson-Flamsteed)
 -------------------------------------------------------------------------------
 operation +proj=sinu   +ellps=GRS80  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222605.299539466 110574.388554153
 accept  2 -1
@@ -3686,7 +3686,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=sinu   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223368.119026632 111701.072127637
 accept  2 -1
@@ -3716,7 +3716,7 @@ Swiss. Obl. Mercator
 -------------------------------------------------------------------------------
 operation +proj=somerc   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222638.981586547 110579.965218249
 accept  2 -1
@@ -3739,7 +3739,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=somerc   +R=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223402.144255274 111706.743574944
 accept  2 -1
@@ -3769,7 +3769,7 @@ Stereographic
 -------------------------------------------------------------------------------
 operation +proj=stere   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222644.854550117 110610.883474174
 accept  2 -1
@@ -3792,7 +3792,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=stere   +R=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223407.810259507 111737.938996443
 accept  2 -1
@@ -3821,7 +3821,7 @@ Oblique Stereographic Alternative
 -------------------------------------------------------------------------------
 operation +proj=sterea   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222644.894109198 110611.091871737
 accept  2 -1
@@ -3844,7 +3844,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=sterea   +R=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223407.810259507 111737.938996443
 accept  2 -1
@@ -3874,7 +3874,7 @@ Gauss-Schreiber Transverse Mercator (aka Gauss-Laborde Reunion)
 -------------------------------------------------------------------------------
 operation +proj=gstmerc   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223413.466406322 111769.145040586
 accept  2 -1
@@ -3903,7 +3903,7 @@ Transverse Central Cylindrical
 -------------------------------------------------------------------------------
 operation +proj=tcc   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223458.844192458 111769.145040586
 accept  2 -1
@@ -3922,7 +3922,7 @@ Transverse Cylindrical Equal Area
 -------------------------------------------------------------------------------
 operation +proj=tcea   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223322.760576727 111769.145040586
 accept  2 -1
@@ -3951,7 +3951,7 @@ Times
 -------------------------------------------------------------------------------
 operation +proj=times +ellps=sphere
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  0.000000000 0.000000000
 expect  0.000000000 0.000000000
 accept  80.000000000 70.000000000
@@ -3985,7 +3985,7 @@ Tissot
 -------------------------------------------------------------------------------
 operation +proj=tissot   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222641.078699631 54347.828487281
 accept  2 -1
@@ -4008,7 +4008,7 @@ expect  -0.001796279 0.511648325
 -------------------------------------------------------------------------------
 operation +proj=tissot   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223404.248556849 54534.122161158
 accept  2 -1
@@ -4037,7 +4037,7 @@ Transverse Mercator
 -------------------------------------------------------------------------------
 operation +proj=tmerc   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222650.796795778 110642.229411927
 accept  2 -1
@@ -4060,7 +4060,7 @@ expect  -0.001796631 -0.000904369
 -------------------------------------------------------------------------------
 operation +proj=tmerc   +R=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223413.466406322 111769.145040597
 accept  2 -1
@@ -4090,7 +4090,7 @@ Two Point Equidistant
 -------------------------------------------------------------------------------
 operation +proj=tpeqd   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.15 mm
 accept  2 1
 expect  -27750.758831679 -222599.403691777
 accept  2 -1
@@ -4113,7 +4113,7 @@ expect  0.000898554 1.248203369
 -------------------------------------------------------------------------------
 operation +proj=tpeqd   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  -27845.882978485 -223362.430695260
 accept  2 -1
@@ -4143,7 +4143,7 @@ Tilted perspective
 -------------------------------------------------------------------------------
 operation +proj=tpers   +a=6400000  +h=1000000 +azi=20
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  170820.288955531 180460.865555805
 accept  2 -1
@@ -4173,7 +4173,7 @@ Universal Polar Stereographic
 -------------------------------------------------------------------------------
 operation +proj=ups   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  2433455.563438467 -10412543.301512826
 accept  2 -1
@@ -4203,7 +4203,7 @@ Urmaev V
 -------------------------------------------------------------------------------
 operation +proj=urm5   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223393.638433964 111696.818785117
 accept  2 -1
@@ -4223,7 +4223,7 @@ Urmaev Flat-Polar Sinusoidal
 -------------------------------------------------------------------------------
 operation +proj=urmfps   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  196001.708134192 127306.843329993
 accept  2 -1
@@ -4253,7 +4253,7 @@ Universal Transverse Mercator (UTM)
 -------------------------------------------------------------------------------
 operation +proj=utm   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5 +zone=30
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  1057002.405491298 110955.141175949
 accept  2 -1
@@ -4282,7 +4282,7 @@ van der Grinten (I)
 -------------------------------------------------------------------------------
 operation +proj=vandg   +a=6400000    +lat_1=0.5 +lat_2=2 +no_defs
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223395.249543407 111704.596633675
 rem     223395.249543407 111704.596633675    osgeo
@@ -4315,7 +4315,7 @@ van der Grinten II
 -------------------------------------------------------------------------------
 operation +proj=vandg2   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223395.247850437 111718.491037226
 accept  2 -1
@@ -4334,7 +4334,7 @@ van der Grinten III
 -------------------------------------------------------------------------------
 operation +proj=vandg3   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223395.249552831 111704.519904421
 accept  2 -1
@@ -4353,7 +4353,7 @@ van der Grinten IV
 -------------------------------------------------------------------------------
 operation +proj=vandg4   +R=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.01 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223374.577294355 111701.195484154
 accept  2 -1
@@ -4373,7 +4373,7 @@ Vitkovsky I
 -------------------------------------------------------------------------------
 operation +proj=vitk1   +ellps=GRS80  +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  222607.171211458 111404.251442435
 accept  2 -1
@@ -4396,7 +4396,7 @@ expect  -0.001796202 -0.000898316
 -------------------------------------------------------------------------------
 operation +proj=vitk1   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223370.224840471 111786.123319644
 accept  2 -1
@@ -4425,7 +4425,7 @@ Wagner I (Kavraisky VI)
 -------------------------------------------------------------------------------
 operation +proj=wag1   +a=6400000    +lat_1=0.5 +lat_2=2 +n=0.5
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  195986.781561158 127310.075060660
 accept  2 -1
@@ -4454,7 +4454,7 @@ Wagner II
 -------------------------------------------------------------------------------
 operation +proj=wag2   +a=6400000  +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  206589.888099962 120778.040357547
 accept  2 -1
@@ -4484,7 +4484,7 @@ Wagner III
 -------------------------------------------------------------------------------
 operation +proj=wag3   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223387.021718166 111701.072127637
 accept  2 -1
@@ -4513,7 +4513,7 @@ Wagner IV
 -------------------------------------------------------------------------------
 operation +proj=wag4   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  192801.218662384 129416.216394803
 accept  2 -1
@@ -4542,7 +4542,7 @@ Wagner V
 -------------------------------------------------------------------------------
 operation +proj=wag5   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  203227.051925325 138651.631442713
 accept  2 -1
@@ -4571,7 +4571,7 @@ Wagner VI
 -------------------------------------------------------------------------------
 operation +proj=wag6   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  211652.562164410 105831.180787330
 accept  2 -1
@@ -4600,7 +4600,7 @@ Wagner VII
 -------------------------------------------------------------------------------
 operation +proj=wag7   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  198601.876957312 125637.045714171
 accept  2 -1
@@ -4619,7 +4619,7 @@ Werenskiold I
 -------------------------------------------------------------------------------
 operation +proj=weren   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223378.515757634 146214.093042288
 accept  2 -1
@@ -4649,7 +4649,7 @@ Winkel I
 -------------------------------------------------------------------------------
 operation +proj=wink1   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223385.131640953 111701.072127637
 accept  2 -1
@@ -4679,7 +4679,7 @@ Winkel II
 -------------------------------------------------------------------------------
 operation +proj=wink2   +a=6400000    +lat_1=0.5 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223387.396433786 124752.032797445
 accept  2 -1
@@ -4699,7 +4699,7 @@ Winkel Tripel
 -------------------------------------------------------------------------------
 operation +proj=wintri   +a=6400000    +lat_1=0 +lat_2=2
 -------------------------------------------------------------------------------
-tolerance 0.00010 mm
+tolerance 0.1 mm
 accept  2 1
 expect  223390.801533485 111703.907505745
 accept  2 -1


=====================================
test/gie/more_builtins.gie
=====================================
--- a/test/gie/more_builtins.gie
+++ b/test/gie/more_builtins.gie
@@ -208,23 +208,26 @@ expect    failure errno failed_to_load_grid
 
 
 
-
 -------------------------------------------------------------------------------
 Some tests from PJ_hgridshift.c
 -------------------------------------------------------------------------------
 operation  proj=hgridshift +grids=nzgd2kgrid0005.gsb  ellps=GRS80
 -------------------------------------------------------------------------------
-tolerance 1 nm
-ignore    pjd_err_failed_to_load_grid
-accept    173 -45 0 0
-roundtrip 100
+Note: These data are home grown and suitable for regression testing only
+We need a set of authoritative test cases to test the nzgd2000 grid.
 -------------------------------------------------------------------------------
-expect    172.999892181021551 -45.001620431954613  0 0
+tolerance 1 mm
+ignore    pjd_err_failed_to_load_grid
+accept    172.999892181021551 -45.001620431954613
+expect    173                 -45
 direction inverse
-accept    172.999892181021551 -45.001620431954613  0 0
-expect    173 -45 0 0
+accept    173                 -45
+expect    172.999892181021551 -45.001620431954613
 -------------------------------------------------------------------------------
 
+
+
+-------------------------------------------------------------------------------
 # Fail on purpose: open non-existing grid:
 operation proj=hgridshift grids=@nonexistinggrid.gsb,anothernonexistinggrid.gsb
 expect    failure errno failed_to_load_grid



View it on GitLab: https://salsa.debian.org/debian-gis-team/proj/commit/1e4ca627c2ac3b9197e0d31c3c4c96aaf6d81ab4

---
View it on GitLab: https://salsa.debian.org/debian-gis-team/proj/commit/1e4ca627c2ac3b9197e0d31c3c4c96aaf6d81ab4
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/pkg-grass-devel/attachments/20180214/54476830/attachment-0001.html>


More information about the Pkg-grass-devel mailing list