From 47860978222d247453af7738d18912eaa85e41ee Mon Sep 17 00:00:00 2001 From: bert hubert Date: Wed, 23 Oct 2019 10:32:03 +0200 Subject: [PATCH] due to rounding errors arccos can sometimes get fed 1.0000000002, which is bad. --- ephemeris.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ephemeris.cc b/ephemeris.cc index cd11348..b3ecb3c 100644 --- a/ephemeris.cc +++ b/ephemeris.cc @@ -42,7 +42,10 @@ std::pair getLongLat(double x, double y, double z) longitude *= -1; Vector toUs{core, pos}; - double latitude = acos( flat.inner(toUs) / (toUs.length() * flat.length())); + double inp = flat.inner(toUs) / (toUs.length() * flat.length()); + if(inp > 1.0 && inp < 1.0000001) // this happens because of rounding errors + inp=1.0; + double latitude = acos( inp); if(z < 0) latitude *= -1;