[x] I added an entry to CHANGES.md if knowledge of this change could be valuable to users.
Currently HaversineDestination sometimes produces output points with longitudes that aren't within [-180,180]. This PR adds logic to ensure that they're correctly wrapped.
Note: the wrapping logic is branchless so it's nice and speedy, but a drawback is that it slightly twiddles some floating-point results out like 10 places after the decimal, even for longitudes that don't need wrapping, which required adding some epsilon = whatever to some existing tests. If a branch-y version that only touches out of bounds longitudes is preferred, let me know, and I can make the swap (probably in this branch and also in #1090 , which uses the same new function).
[x] I added an entry to
CHANGES.md
if knowledge of this change could be valuable to users.Currently
HaversineDestination
sometimes produces output points with longitudes that aren't within [-180,180]. This PR adds logic to ensure that they're correctly wrapped.Note: the wrapping logic is branchless so it's nice and speedy, but a drawback is that it slightly twiddles some floating-point results out like 10 places after the decimal, even for longitudes that don't need wrapping, which required adding some
epsilon = whatever
to some existing tests. If a branch-y version that only touches out of bounds longitudes is preferred, let me know, and I can make the swap (probably in this branch and also in #1090 , which uses the same new function).fixes #1074