14 # pragma warning (disable: 4127)
22 return es > T(0) ? es * atanh(es * x) : -es * atan(es * x);
26 T tau1 = hypot(T(1), tau),
27 sig = sinh( eatanhe(tau / tau1, es ) );
28 return hypot(T(1), sig) * tau - sig * tau1;
32 static const int numit = 5;
33 static const T tol = sqrt(numeric_limits<T>::epsilon()) / T(10);
34 T e2m = T(1) - sq(es),
43 stol = tol * max(T(1), abs(taup));
46 T taupa = taupf(tau, es),
47 dtau = (taup - taupa) * (1 + e2m * sq(tau)) /
48 ( e2m * hypot(T(1), tau) * hypot(T(1), taupa) );
50 if (!(abs(dtau) >= stol))