diff options
Diffstat (limited to '')
-rw-r--r-- | libtellurian_gaussian_radius_radians.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libtellurian_gaussian_radius_radians.c b/libtellurian_gaussian_radius_radians.c new file mode 100644 index 0000000..d61319a --- /dev/null +++ b/libtellurian_gaussian_radius_radians.c @@ -0,0 +1,16 @@ +/* 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; +} |