/* See LICENSE file for copyright and license details. */ #include "common.h" double libtellurian_gaussian_radius_radians(double latitude) { double a = LIBTELLURIAN_EQUATORIAL_RADIUS; double b = LIBTELLURIAN_POLAR_RADIUS; double f = 1.0 - b / a; double neg_e2 = (f - 2.0) * f; double neg_e2_plus_1 = fma(f - 2.0, f, 1.0); double s = sin(latitude); double denom = fma(neg_e2, s * s, 1.0); return a * sqrt(neg_e2_plus_1) / denom; }