diff options
Diffstat (limited to 'src/PJ_lsat.c')
| -rw-r--r-- | src/PJ_lsat.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/PJ_lsat.c b/src/PJ_lsat.c index 665c0662..a141d568 100644 --- a/src/PJ_lsat.c +++ b/src/PJ_lsat.c @@ -42,23 +42,30 @@ static XY e_forward (LP lp, PJ *P) { /* Ellipsoidal, forward */ struct pj_opaque *Q = P->opaque; int l, nn; double lamt = 0.0, xlam, sdsq, c, d, s, lamdp = 0.0, phidp, lampp, tanph; - double lamtp, cl, sd, sp, fac, sav, tanphi; + double lamtp, cl, sd, sp, sav, tanphi; if (lp.phi > M_HALFPI) lp.phi = M_HALFPI; else if (lp.phi < -M_HALFPI) lp.phi = -M_HALFPI; - lampp = lp.phi >= 0. ? M_HALFPI : M_PI_HALFPI; + if (lp.phi >= 0. ) + lampp = M_HALFPI; + else + lampp = M_PI_HALFPI; tanphi = tan(lp.phi); for (nn = 0;;) { + double fac; sav = lampp; lamtp = lp.lam + Q->p22 * lampp; cl = cos(lamtp); if (fabs(cl) < TOL) lamtp -= TOL; - fac = lampp - sin(lampp) * (cl < 0. ? -M_HALFPI : M_HALFPI); - for (l = 50; l; --l) { + if( cl < 0 ) + fac = lampp + sin(lampp) * M_HALFPI; + else + fac = lampp - sin(lampp) * M_HALFPI; + for (l = 50; l >= 0; --l) { lamt = lp.lam + Q->p22 * sav; c = cos(lamt); if (fabs(c) < TOL) |
