pj_inv_mlfn.js 625 B

12345678910111213141516171819202122
  1. import pj_mlfn from "./pj_mlfn";
  2. import {EPSLN} from '../constants/values';
  3. var MAX_ITER = 20;
  4. export default function(arg, es, en) {
  5. var k = 1 / (1 - es);
  6. var phi = arg;
  7. for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */
  8. var s = Math.sin(phi);
  9. var t = 1 - es * s * s;
  10. //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;
  11. //phi -= t * (t * Math.sqrt(t)) * k;
  12. t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;
  13. phi -= t;
  14. if (Math.abs(t) < EPSLN) {
  15. return phi;
  16. }
  17. }
  18. //..reportError("cass:pj_inv_mlfn: Convergence error");
  19. return phi;
  20. }