aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Evers <kristianevers@gmail.com>2018-08-24 17:00:32 +0200
committerKristian Evers <kristianevers@gmail.com>2018-08-24 20:41:06 +0200
commit62b81642ae5226d8aefcc1da7e30cc2d2e65e697 (patch)
treeb610279080f54bb06eec9e435a15976724926c6e
parent502bc55cf4f8dd4b9f3cc1a06d7f52c9ba1e9ff5 (diff)
downloadPROJ-62b81642ae5226d8aefcc1da7e30cc2d2e65e697.tar.gz
PROJ-62b81642ae5226d8aefcc1da7e30cc2d2e65e697.zip
Improve numerical precision of inverse spherical mercator
Complements f2b3604
-rw-r--r--src/PJ_merc.c2
-rw-r--r--test/gie/builtins.gie10
2 files changed, 11 insertions, 1 deletions
diff --git a/src/PJ_merc.c b/src/PJ_merc.c
index 46cd4b3d..1998234e 100644
--- a/src/PJ_merc.c
+++ b/src/PJ_merc.c
@@ -57,7 +57,7 @@ static LP e_inverse (XY xy, PJ *P) { /* Ellipsoidal, inverse */
static LP s_inverse (XY xy, PJ *P) { /* Spheroidal, inverse */
LP lp = {0.0,0.0};
- lp.phi = M_HALFPI - 2. * atan(exp(-xy.y / P->k0));
+ lp.phi = atan(sinh(xy.y / P->k0));
lp.lam = xy.x / P->k0;
return lp;
}
diff --git a/test/gie/builtins.gie b/test/gie/builtins.gie
index 3e2059c1..b5dc3ab1 100644
--- a/test/gie/builtins.gie
+++ b/test/gie/builtins.gie
@@ -2928,6 +2928,16 @@ accept -200 -100
expect -0.001790493 -0.000895247
+-------------------------------------------------------------------------------
+operation +proj=merc +R=1
+-------------------------------------------------------------------------------
+Test the numerical stability of the inverse spherical Mercator
+-------------------------------------------------------------------------------
+tolerance 1e-15 m
+accept 0 1e-15
+expect 0 1e-15
+
+
===============================================================================
Miller Oblated Stereographic
Azi(mod)