private void ZetaInv(double taup, double lam, out double u, out double v) { double psi = Asinh(taup), scal = 1 / Hypot(1, taup); if (ZetaInv0(psi, lam, out u, out v)) { return; } var stol2 = tol2_ / Sq(Max(psi, 1)); // min iterations = 2, max iterations = 6; mean = 4.0 for (int i = 0, trip = 0; i < numit_ || GEOGRAPHICLIB_PANIC; ++i) { _Eu.Sncndn(u, out var snu, out var cnu, out var dnu); _Ev.Sncndn(v, out var snv, out var cnv, out var dnv); Zeta(u, snu, cnu, dnu, v, snv, cnv, dnv, out var tau1, out var lam1); DwdZeta(u, snu, cnu, dnu, v, snv, cnv, dnv, out var du1, out var dv1); tau1 -= taup; lam1 -= lam; tau1 *= scal; double delu = tau1 * du1 - lam1 * dv1, delv = tau1 * dv1 + lam1 * du1; u -= delu; v -= delv; if (trip != 0) { break; } var delw2 = Sq(delu) + Sq(delv); if (!(delw2 >= stol2)) { ++trip; } } }