diff options
author | Mattias Andrée <m@maandree.se> | 2024-10-19 18:21:54 +0200 |
---|---|---|
committer | Mattias Andrée <m@maandree.se> | 2024-10-19 18:21:54 +0200 |
commit | 3ce34980d7ba2bddbf3e9a1bd6f98cbc855bddc2 (patch) | |
tree | 7724cc9cb9c3b2ce5ee60d2e012d1fbeb80aacfb /libtellurian_normal_gravity_radians.c | |
download | libtellurian-3ce34980d7ba2bddbf3e9a1bd6f98cbc855bddc2.tar.gz libtellurian-3ce34980d7ba2bddbf3e9a1bd6f98cbc855bddc2.tar.bz2 libtellurian-3ce34980d7ba2bddbf3e9a1bd6f98cbc855bddc2.tar.xz |
First commit
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to 'libtellurian_normal_gravity_radians.c')
-rw-r--r-- | libtellurian_normal_gravity_radians.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libtellurian_normal_gravity_radians.c b/libtellurian_normal_gravity_radians.c new file mode 100644 index 0000000..3fdb037 --- /dev/null +++ b/libtellurian_normal_gravity_radians.c @@ -0,0 +1,18 @@ +/* See LICENSE file for copyright and license details. */ +#include "common.h" + + +double +libtellurian_normal_gravity_radians(double latitude) +{ + double a = LIBTELLURIAN_EQUATORIAL_RADIUS; + double b = LIBTELLURIAN_POLAR_RADIUS; + double neg_e2 = fma(b / a, b / a, -1.0); + double ag = a * LIBTELLURIAN_EQUATORIAL_GRAVITY; + double bg = b * LIBTELLURIAN_POLAR_GRAVITY; + double k = bg / ag - 1.0; + double sin2_phi = sin(latitude) * sin(latitude); + double num = fma(k, sin2_phi, 1.0); + double denom2 = fma(neg_e2, sin2_phi, 1.0); + return LIBTELLURIAN_EQUATORIAL_GRAVITY * num / sqrt(denom2); +} |