code: function inverse$11(p) {
          p.x -= this.x0;
          p.y -= this.y0;
          var x = p.x / this.a;
          var y = p.y / this.a;
          var phi, lam;
  
          if (this.sphere) {
              var dd = y + this.lat0;
              phi = Math.asin(Math.sin(dd) * Math.cos(x));
              lam = Math.atan2(Math.tan(x), Math.cos(dd));
          }
          else {
              /* ellipsoid */
              var ml1 = this.ml0 / this.a + y;
              var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);
              if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {
                  p.x = this.long0;
                  p.y = HALF_PI;
                  if (y < 0) {
                      p.y *= -1;
                  }
                  return p;
              }
              var nl1 = gN(this.a, this.e, Math.sin(phi1));
  
              var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);
              var tl1 = Math.pow(Math.tan(phi1), 2);
              var dl = x * this.a / nl1;
              var dsq = dl * dl;
              phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);
              lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);
  
          }
  
          p.x = adjust_lon(lam + this.long0);
          p.y = adjust_lat(phi);
          return p;
  
      }
docs: /* Inverse equations
  -----------------