diff --git a/src/mpblock.c b/src/mpblock.c index 610594c..37c0175 100644 --- a/src/mpblock.c +++ b/src/mpblock.c @@ -44,12 +44,11 @@ long double meridian_arc(long double lat0, long double lat1) c += sqr(double_fac(2 * j - 3) / double_fac(2 * j) * powl(FLAT_3, j)); m = c * (lat1 - lat0); - for (k = 1; k < 6; k++) { + for (k = 1; k < 11; k++) { c = 0; for (j = 0; j < 11; j++) c += double_fac(2 * j - 3) / double_fac(2 * j) * double_fac(2 * j + 2 * k - 3) / double_fac(2 * j + 2 * k) * powl(FLAT_3, k + 2 * j); - c /= k; - c *= powl(-1.0l, k) * (1 - sqr(2 * k)); + c *= powl(-1.0l, k) * (1 - sqr(2 * k)) / k; m += c * (sin(2.0l * k * lat1) - sin(2.0l * k * lat0)); } diff --git a/src/vincenty.c b/src/vincenty.c index 984c31a..99d0926 100644 --- a/src/vincenty.c +++ b/src/vincenty.c @@ -62,7 +62,7 @@ long double helmertA(long double calp) usq = calp * ECC2; k1 = sqrtl(1.0l + usq); k1 = (k1 - 1.0l) / (k1 + 1.0l); - for (k = 0; k < 11; k++) + for (k = 0; k < 8; k++) A += sqr(double_fac(2 * k - 3) / double_fac(2 * k) * powl(k1, k)); A /= (1 - k1); return A;