Closed ericagol closed 5 years ago
I found that using compensated summation to compute the integration time steps worked beautifully, and this gives as good precision as carrying out the time step computation in BigFloat
, and converting back to Float64
. So, I think this is the way to go, and it was easy to add to the code, and has fixed the problem with the kinks in the transit times at small time steps.
In the routine
stepsize_precision.jl
inpaper/figures
, when the integration time is sufficiently long, there appear to be jumps in the ephemerides.I tracked this down to a roundoff error in computing the integration time with small step sizes: when the stepsize is sufficiently small, then the rounding error is more severe. This causes jumps at the points that the rounding error for the total time reaches a large value of the rounding precision.
I'm going to write a routine to experiment with this: it either calls for computing the timing of the simulation at higher precision, or perhaps for compensated summation, ala Kahan.