CORDIC-like method for solving Kepler’s equation
Transcript of CORDIC-like method for solving Kepler’s equation
A&A 619, A128 (2018)https://doi.org/10.1051/0004-6361/201833162c© ESO 2018
Astronomy&Astrophysics
CORDIC-like method for solving Kepler’s equationM. Zechmeister
Institut für Astrophysik, Georg-August-Universität, Friedrich-Hund-Platz 1, 37077 Göttingen, Germanye-mail: [email protected]
Received 4 April 2018 / Accepted 14 August 2018
ABSTRACT
Context. Many algorithms to solve Kepler’s equations require the evaluation of trigonometric or root functions.Aims. We present an algorithm to compute the eccentric anomaly and even its cosine and sine terms without usage of other transcen-dental functions at run-time. With slight modifications it is also applicable for the hyperbolic case.Methods. Based on the idea of CORDIC, our method requires only additions and multiplications and a short table. The table is inde-pendent of eccentricity and can be hardcoded. Its length depends on the desired precision.Results. The code is short. The convergence is linear for all mean anomalies and eccentricities e (including e = 1). As a stand-alonealgorithm, single and double precision is obtained with 29 and 55 iterations, respectively. Half or two-thirds of the iterations can besaved in combination with Newton’s or Halley’s method at the cost of one division.
Key words. celestial mechanics – methods: numerical
1. Introduction
Kepler’s equation relates the mean anomaly M and the eccentricanomaly E in orbits with eccentricity e. For elliptic orbits it isgiven by
E − e sin E = M(E). (1)
The function is illustrated for eccentricities 0, 0.1, 0.5, 0.9, and 1in Fig. 1. It is straightforward to compute M(E). But in practiceM is usually given and the inverse function E(M) must be solved.
The innumerable publications about the solution of Kepler’sequation (Colwell 1993) highlight its importance in many fieldsof astrophysics (e.g. exoplanet search, planet formation, andstar cluster evolution), astrodynamics, and trajectory optimisa-tion. N-body hybrid algorithms also make use of this analyticsolution of the two-body problem (Wisdom & Holman 1991).Nowadays, computers can solve Eq. (1) quickly. But the speedincrease is counterbalanced by large data sets, simulations, andextensive data analysis (e.g. with Markov chain Monte Carlo).This explains ongoing efforts to accelerate the computation withsoftware and hardware, for example by parallelising and use ofgraphic processing units (GPUs; Ford 2009).
The Newton-Raphson iteration is a common method to solveEq. (1) and employs the derivative E′. In each step n the solutionis refined by
En+1 = En + E′(Mn)(M − Mn) = En −En − e sin En − M
1 − e cos En· (2)
A simple starting estimate might be E0 = M + 0.85e (Danby1987). Each iteration comes at the cost of evaluating one cosineand one sine function. Hence one tries to minimise the numberof iterations. This can be done with a better starting estimate. Forexample, Markley (1995) provides a starting estimate better than10−4 by inversion of a cubic polynomial which however requiresalso transcendental functions (four roots). Boyd (2007) furtherpolynomialise Kepler’s equation through Chebyshev polynomial
expansion of the sine term and yielded with root finding methodsa maximum error of 10−10 after inversion of a fifteen-degreepolynomial. Another possibility to reduce the iteration is to usehigher order corrections. For instance Padé approximation oforder [1/1] leads to Halley’s method.
Pre-computed tables can be an alternative way for fastcomputation of E. Fukushima (1997) used a table equallyspaced in E to accelerate a discretised Newton method, whileFeinstein & McLaughlin (2006) proposed an equal spacing inM, that is, a direct lookup table which must be e-dependent andtherefore two-dimensional. Both tables can become very largedepending on the desired accuracy.
So the solution of the transcendental Eq. (1) often comesback to other transcendental equations which themselves need tobe solved in each iteration. This poses questions as to how thoseoften built-in functions are solved and whether there is a way toapply a similar, more direct algorithm to Kepler’s equation.
The implementation details of those built-in functions arehardware and software dependent. But sine and cosine are oftencomputed with Taylor expansion. After range reduction andfolding into an interval around zero, Taylor expansion is herequite efficient yielding 10−16 with 17th degree at π
4 . Kepler’sequation can also be Taylor expanded (Stumpff 1968) but that isless efficient, in particular for e = 1 and around M = 0 where thederivative becomes infinite. Similarly, root or arcsine functionsare other examples where the convergence of the Taylor expan-sion is slow. For root-like functions, one again applies Newton-Raphson or bisection methods. The arcsine can be computed asarcsin(x) = arctan( x
√1−x2
) where Taylor expansion of the arctan-gent function is efficient and one root evaluation is needed.
An interesting alternative method to compute trigonomet-ric functions is the Coordinate Rotation Digital Computer(CORDIC) algorithm which was developed by Volder (1959) forreal-time computation of sine and cosine functions and whichfor instance found application in pocket calculators. CORDICcan compute those trigonometric and other elementary functions
Article published by EDP Sciences A128, page 1 of 9
A&A 619, A128 (2018)
0
π–4
π–2
3π–4
π
0 π–4π–2
3π–4 π
ecce
ntric
ano
mal
y E
mean anomaly M
E - e sin E = M
e = 0e = 0.1e = 0.5e = 0.9e = 1
Fig. 1. Kepler’s equation for five different eccentricities.
in a simple and efficient way. In this work we study whether andhow the CORDIC algorithm can be applied to Kepler’s equation.
2. Scale-free CORDIC algorithm for Kepler’sequation
Analogous to CORDIC, we compose our angle of interest, E, bya number of positive or negative rotations σi = ±1 with angle αi
En =
n∑i=1
σiαi. (3)
The next iteration n is then
En+1 = En + σn+1αn+1. (4)
The rotation angle αn is halved in each iteration
αn+1 =αn
2=α1
2n (5)
so that we successively approach E. The direction of the nextrotationσn+1 is selected depending on the mean anomaly Mn cal-culated from En via Eq. (1). If Mn = En − e sin En overshoots thetarget value M, then En+1 will be decreased, otherwise increased
σn+1 =
{−1 En − e sin En > M+1 else.
(6)
Equations (4)–(6) provide the iteration scheme which so faris a binary search or bisection method (with respect to E) to findthe inverse of M(E). Choosing as start value E0 = 0 and startrotation α1 = π
2 , we can cover the range E ∈ [−π, π] and pre-compute the values of rotation angles with Eq. (5)
αn =π
2n · (7)
The main difference of our algorithm from the CORDIC sineis the modified decision for the rotation direction in Eq. (6) con-sisting of the additional term e sin E. For the special case e = 0,the eccentric and mean anomalies unify and the iteration con-verges to En → E = M.
E0
E1
E2
E3E4
E5
M0
M1
M2
M3
M4 M5
ME
Fig. 2. Example of five CORDIC rotations given M = 2−sin 2 ≈ 62.49◦and e = 1. Starting with M0 = 0 and E0 = 0, Mn and En approach Mand E = 2 ≈ 114.59◦. The arcs indicates the current rotation angle αnand direction at each step.
One major key point of CORDIC is that, besides the angleEn, it propagates simultaneously the Cartesian representation,which are cosine and sine terms of En. The next iterations areobtained through trigonometric addition theorems
cos En+1 = cos(En + σn+1αn+1) (8)= cos En cosαn+1 − σn+1 sin En sinαn+1 (9)
sin En+1 = sin(En + σn+1αn+1) (10)= σn+1 cos En sinαn+1 + sin En cosαn+1, (11)
which is a multiplication with a rotation matrix(cn+1sn+1
)=
[cosαn+1 −σn+1 sinαn+1
σn+1 sinαn+1 cosαn+1
] (cnsn
). (12)
Here we introduced the abbreviations cn = cos En and sn =sin En.
Since the iteration starts with E0 = 0, we simply have c0 =cos E0 = 1 and s0 = sin E0 = 0. The cosαn and sinαn terms canalso be pre-computed using αn from Eq. (7) and stored in a tablelisting the triples (αn, cosαn, sinαn). Now we have eliminatedall function calls for sine and cosine of E and α in the iteration.This is also true and important for the sin En term in Eq. (6)which is simply gathered during the iteration process as sn viaEq. (12). Figures 2 and 3 illustrate the convergence for inputM = 2 − sin 2 ≈ 1.0907 and e = 1 towards E = 2.
In Appendix A we provide a short python code which imple-ments the algorithm described in this section. A slightly moreelegant formulation is possible with complex numbers zn =exp(iEn) = cos En +i sin En and an = exp(iαn) = cosαn +i sinαn.Then Eq. (12) becomes zn+1 = an+1zn or zn+1 = a∗n+1zn dependingon σn and in Eq. (6) the substitution sin En = Im(zn) has to bedone.
A more detailed comparison with CORDIC is givenAppendix B. Before analysing the performance in Sect. 5.3, weoutline some optimisation possibilities in Sect. 3.
3. Variants and refinements
3.1. Minimal rotation base
The algorithms in Sect. 2 and Appendix B use always positiveor negative rotation directions. While after n rotations the max-imum error should be smaller then αn, previous iterations canstill be closer to the convergence limit. In Fig. 2, for instance,
A128, page 2 of 9
M. Zechmeister: CORDIC-like method for solving Kepler’s equation
0
π–4
π–2
3π–4
π
0 π–4π–2
3π–4 π
ecce
ntric
ano
mal
y E
mean anomaly M
M(E), EE3(M)E5(M)
En(Mn)M=2-sin 2, E=2 0
1
2
3
4
5
itera
tion
nFig. 3. CORDIC-like approximation of Kepler’s equation (e = 1). Thecurves E3 and E5 illustrate the convergence towards Kepler’s equationafter three and five iterations. The coloured points Mn, En are passedduring the iterations to find E(M = 2− sin 2) (same colour-coding as inFig. 2).
E3 is closer to E than E4 and E5. Consecutive rotations willcompensate this. A very extreme case is M = 0, where E0 = 0 isalready the exact value, but the first rotation brings it to E1 = 90◦followed by only negative rotation towards zero.
The CORDIC algorithm requires positive and negative rota-tions to have always the same scale Kn after n iterations(Appendix B). But since we could not pull out Kn from theiteration, we can depart from this concept and allow for onlyzero and positive rotations which could be called unidirectional(Jain et al. 2013) or one-sided (Maharatna et al. 2004). The deci-sion to rotate or not to rotate becomes
σn+1 =
{1 (En + αn+1) − e sin(En + αn+1) < M0 else.
(13)
Thereby we compose En in Eq. (3) by minimal rotations and canexpect also a better propagation of precision. Moreover, whilethe term sin(En + αn+1) = snca + cnsa still needs to be computedin each iteration to derive for σn+1, the term cn+1 is updated onlywhen σn+1 = 1 which will be on average in about 50% of thecases. We note also that with the minimal rotation base the curvein Eq. (1) is approached from below.
3.2. CORDIC-like Newton method
The convergence of the CORDIC-like algorithms in Sects. 2 and3.1 is linear, while Newton’s method is quadratic. Of course,our algorithm can serve start values (and their cosine and sineterms) for other root finders at any stage. The quadratic conver-gence should bring the accuracy from, for example, 10−8 downto 10−16 at the cost of mainly one division. We think this shouldbe preferred over the other possible optimisations mentioned inAppendix B.
Still, we do not want to lose the ability to provide the cosineand sine terms after one (or more) Newton iterations. We canpropagate them simultaneously in a similar manner as in Eqs. (4)and (12) but now using small angle approximations. Newton’smethod Eq. (2) directly proposes a rotation angle
αn+1 = En+1 − En =M − En + esn
1 − ecn· (14)
This means that there is no need to check for a rotation directionσn. For small angles, there are the approximations sinα ≈ αand cosα ≈ 1. If one works with double precision (2−53), theerror ε(α) = |1 − cosα| < α2
2 is negligible, meaning smaller than2−54 ≈ 5.5 × 10−17, when |α| < 7.5 × 10−9 (given for a29). Thenwe can write
cn+1 = cn + αn+1sn (15)sn+1 = sn + αn+1cn. (16)
3.3. Halley’s method
Halley’s method has a cubic convergence. Ignoring third orderterms, one can apply the approximations sinα ≈ α and cosα ≈1 − α2
2 . The error ε(α) = |α − sinα| < |α3
6 | is negligible in doubleprecision, when α <
3√6 × 2−54 = 6.93 × 10−6 given for α19 ≈
5.99 × 10−6. Similar to Sect. 3.2, the iteration scheme with co-rotation for Halley’s method is
αn+1 =(1 − ecn)(M − Mn)
(1 − ecn)2 + 12 esn(M − Mn)
(17)
sn+1 =
1 − α2n+1
2
sn + αn+1cn (18)
cn+1 =
1 − α2n+1
2
cn + αn+1sn. (19)
4. Hyperbolic mode
For eccentricities e ≥ 1, Kepler’s equation is
M = e sinh H − H. (20)
This case can be treated as being similar to the elliptic case, whenthe trigonometric terms are replaced by hyperbolic analogues.Equations (6), (7), and (12) become
σn+1 =
{−1 e sinh Hn − Hn > M+1 else
(21)
αn =4 ln 2
2n (22)(cn+1sn+1
)=
[coshαn+1 σn+1 sinhαn+1
σn+1 sinhαn+1 coshαn+1
] (cnsn
). (23)
where a sign change in Eq. (23) leads to hyperbolic rotations.This equation set covers a range of H ∈ [−4 ln 2, 4 ln 2]. How-ever, H extends to infinity. In the elliptic case, this is handled byan argument reduction which makes use of the periodicity. In thehyperbolic case, the corresponding nice base points H0 are
H0 = m ln 2 (24)
c0 = cosh H0 =12
[exp H0 + exp(−H0)] = 2m−1 + 2−m−1 (25)
s0 = sinh H0 =12
[exp H0 − exp(−H0)] = 2m−1 − 2−m−1. (26)
For m = 0, this becomes H0 = 0, c0 = 1, and s0 = 0, in otherwords similar to the elliptic case. For m , 0, the start triple isstill simple to compute using only additions and bitshifts.
A128, page 3 of 9
A&A 619, A128 (2018)
hype
rbol
ic a
nom
aly
H
mean anomaly M
H0 ± 4ln2H0
sinh(H)-H, Hm = 0, ±1, ±2, ...
ln(2M/e)ln(2M/e+1)
-3
-2
-1
0
1
2
3
4
-5 0 5 10 15 20
Fig. 4. Range extension for hyperbolic Kepler’s equation (black curve)in case e = 1. The start value H0 (blue thick line) and the convergencedomain of ±4 ln 2 (shaded area) covers Kepler’s equation. Nice basepoints (black dots) and two approximations (dotted and dashed curves)are also indicated.
The main challenge is to obtain the integer m from meananomaly M. In elliptic case, this needs a division with 2π; inhyperbolic case, it becomes a logarithmic operation. Figure 4and Appendix D show that
m = sign M ·max[0,floor
(1 + log2
∣∣∣∣∣ Me∣∣∣∣∣)] (27)
provides start values with the required coarse accuracy of bet-ter than 4 ln 2. In floating point representation (IEEE 754), thesecond argument in the maximum function of Eq. (27) extractssimply the exponent of M/e. In fixed point representation, it isthe most significant non-zero bit (Walther 1971). This means alogarithm call is not necessary (cf. Appendix A.2).
The hyperbolic iterations do not return cos H and sin H, butcosh H and sinh H which are the quantities needed to computedistance, velocity, and Cartesian position.
5. Accuracy and performance study
5.1. Accuracy of the minimal rotation base algorithm
The CORDIC-like algorithms have a linear convergence rate.The maximum error for En in iteration n is given by αn. Forinstance, we expect from Eq. (7) α22 < 10−6, α29 < 10−8 (sin-gle precision), α42 < 10−12 and α55 < 10−16 (double precision).To verify if double precision can be achieved in practice, weforward-calculated with Eq. (1) 1000 (M(E), E) pairs uniformlysampled in E over [0, π]. Here E might be seen as the true value.Then we injected M into our algorithms to solve the inverseproblem E(M).
The differences between re-computed and true eccentricanomaly, δ55 = |E55 − E|, are shown in Fig. 5 for the casese = 0.5, 0.9, and 1. For M & 0.25 and e ≤ 1, the devia-tions are smaller than 10−15 and close to machine precision εas indicated by the grey lines. Towards M = 0 and e > 0.9,the scatter increases. Figure 6 greatly magnifies this corner byplotting the deviations against the logarithm of E for e = 0.5,0.999 999 999 9, and 1.
10-17
10-16
10-15
10-14
10-13
10-12
0 0.5 1 1.5 2 2.5 3
abso
lute
dev
iatio
n δ
= |E
55 -
E|
mean anomaly M
e = 1.0e = 0.9e = 0.53·10-8
10-16
10-16E/(1-e)2·10-16/E
10-16E
Fig. 5. Accuracy. For visibility, zero deviations (δ = 0) within machineprecision were lifted to δ = 2 × 10−17.
The deviations δ55 become large in this corner, because theinversion of Eq. (1) is ill-posed. For e = 1, third order expansionof Eq. (1) is M = E − (E − 1
6 E3) = 16 E3. If the quadratic term in
1 − 16 E2 is below machine precision ε, it cannot be propagated
numerically in the subtraction and leads to a maximum deviationof E <
√6ε ≈ 10−8 at E = 10−8 (M = 10−24).
Figure 7 illustrates the ill-posed problem. For e = 1 and verysmall M, the cubic approximation provides a very accurate ref-erence. For comparison, we overplot our E55 solution as well ascomputer generated pairs E-sin(E),E. Both exhibit a discreti-sation of 10−8 in E. We conclude that Newton’s, Halley’s, andother methods which directly try to solve Eq. (1) are as wellonly accurate to 10−8 in this corner when operating with doubleprecision! Therefore, the M, E pairs mentioned above were notgenerated with built-in sin()-function but using a Taylor expan-sion of Kepler’s equations
M = E(1 − e) − e(−
E3
3!+
E5
5!− · · ·
)· (28)
We may call the term in brackets rest function of sine. It dif-fers by a factor of −E−3 compared to its first naming in Stumpff(1959); see also Eq. (32).
We find that the deviations approximately follow the form
δ55(E, e) = |E55 − E| ≈ 10−16 + 10−16 E1 − e cos E
+ 10−16E, (29)
as indicated by the curves in Figs. 5 and 6. For very smallM and E, the constant term 10−16 dominates. Then the mid-dle term, which is related to the derivative of Eq. (1), sets in.Finally, the linear term 10−16E takes over which describes theaccuracy to which E can be stored. The middle term leads to anascending and a descending branch which can be approximatedby 10−16 E
1−e and 10−16 2E and forms a local maximum. The two
lines intersect at E ≈√
2(1 − e) and δ55(e) ≈ 10−16√
21−e . For
highest resolvable eccentricity below one, this provides δ(e =
1 − 10−16) ≈√
2 × 10−8.
A128, page 4 of 9
M. Zechmeister: CORDIC-like method for solving Kepler’s equation
10-17
10-16
10-15
10-14
10-13
10-12
10-11
10-10
10-9
10-8
0.01 110-25 10-20 10-15 10-10 10-5
abso
lute
dev
iatio
n δ
= |E
55 -
E|
mean anomaly M
e = 1.0e = 0.9999999999
e = 0.5
1
- 10
-14
e =
1 - 1
0-1
2
1 - 1
0-1
0
0.99
9999
990.
9999
99
0.99
99
0.99
3·10-8
10-16
10-16E/(1-e)2·10-16/E
10-16E
Fig. 6. Similar to Fig. 4, but with logarithmic scaling.
0
1·10-8
2·10-8
3·10-8
4·10-8
5·10-8
6·10-8
7·10-8
0 1·10-23 2·10-23 3·10-23 4·10-23 5·10-23
ecce
ntric
ano
mal
y E
mean anomaly M
E-sin(E), E
E55(M)
(6M)1/3
Fig. 7. The ill-posed Kepler equation in the corner M = 0 and e = 1.Comparison of the computer approximations M(E) = E − e sin E (red)and our algorithm E55(M) (blue) with a cubic root (black; from well-posed inversion of a third-order Taylor expansion).
5.2. Accuracy of algorithm variants
We find that the algorithm with positive and negative rotations(E+−
n , Sect. 2) provides slightly worse accuracy for all eccentric-ities (Fig. C.2). For instance for e = 0.9, it is limited to 10−15 andit ranges up to 10−5 for e = 1 at M = 10−16 (E = 10−5).
The combination of one final Newton iteration with E29 assuggested in Sect. 3.2 has a similar accuracy as E55 (in par-ticular at e = 1) and provides therefore an alternative short-cut. The combination of one Halley iteration with E19 hasgenerally similar performance, but for high eccentricities itapproaches 10−6.
5.3. Performance
Before we discuss some performance results, we should mentionthat a comparison of the algorithm speed is not simple. Depend-ing on the hardware, multiplications might be little or much more
expensive than additions. Then there is the question about thelevel of optimisation done in the code, by the compiler, or inbuilt-in routines.
It can be also instructive to count the number of floating pointoperations. In Appendix A we see five multiplications, four addi-tions, and one comparison in each iteration. For single precisionthis must be executed 29 times. On the other hand, a Newtoniteration in Eq. (2) has one division, two multiplications, fouradditions, and one sine and cosine term. In case the latter twoterms are computed via Taylor expansion to 17th order and witha Horner scheme, each will contribute additional nine multipli-cations and nine additions. Furthermore, the cosine and sine rou-tines have to check the need for range reduction each time. Actu-ally, also an additional final sine and cosine operation should beloaded to Newton’s methods, since sin E and cos E are usuallyneeded in subsequent calculations.
Given same weight to all listed operations, we count approx-imately ten operations per CORDIC iteration vs. about per 43operation per Newton iteration. Then we estimate that fourCORDIC iteration are as expensive as one Newton iteration.
We have implemented both CORDIC-like and Newton’smethod in a C program. The Newton’s method used the startguess E0 = M + 0.85e and called cos and sin function from thestandard math.h library. The run time was measured with pythontimeit feature for α29 (10−8) and for 1000 mean anomalies uni-formly sampled from 0 to π. The run-time of the CORDIC-like algorithm is independent of e, while Newton’s methodis fast for small eccentricities and slower for high eccentrici-ties. We measured that our CORDIC-like method has double,same, and half speed for e = 1, 0.01, and 0, respectively, orthat 14 CORDIC-like iteration are as expensive as one Newtoniteration.
5.4. Comparison with Fukushima (1997)
There are some similarities between this and the work ofFukushima (1997), and a comparison can be enlightening anduseful to put our method in context. Fukushima (1997) uses a128 long table sampled uniformly in E which provides an accu-racy of 1/128. In contrast, we need a table of length log2 128 = 7to obtain this accuracy and higher accuracy is not limited by ahuge table. While Fukushima (1997) likely needs fewer itera-tions due to the use of discretised Newton method, we have nodivisions.
Fukushima (1997) developed an iterative scheme with trun-cated Taylor series of Newton’s method to avoid recomputa-tion of sine and cosine angles. Similar, our methods outlinedin Sects. 3.2 and 3.3 avoids such recomputations by using trun-cated Taylor series for sine and cosine for small angles αn. Ourmethod appears less complex since it needs only three shortequations.
5.5. Universal Kepler’s equation
Our algorithms can solve eccentric and hyperbolic Kepler’sequations. The two are very similar and could be unified, sim-ilar to the method in Walther (1971). Both algorithm includesalso the eccentricity e = 1 (which are the limits for rectilinearellipse and hyperbola, i.e. radial cases). The question is, there-fore, whether our algorithm can also be applied to universalKepler’s equation.
Following Fukushima (1999) and using the Stumpff func-tion of third degree, c3 (Stumpff 1959), the universal Kepler’sequation can be written as
A128, page 5 of 9
A&A 619, A128 (2018)
L = G + κG3c3(λG2) (30)
= G + κ
√λG − sin
√λG
√λ3
(31)
= G + κ
[G3
3!−λG5
5!+λ2G7
7!− · · ·
](32)
with universal mean anomaly L, universal eccentric anomaly G,Brunnow’s parameter λ = 1−e
1+e , and κ = e1+e . In parabolic case
(e = 1, λ = 0), it becomes a cubic equation. Using Eq. (31) andthe relations L = 1+λ
2√λ3 M and E =
√λG, one can derive Kepler’s
equation, Eq. (1) (see Appendix A in Fukushima 1999).Equation (31) is expressed with a sine term. However, the
application of a CORDIC-like algorithm to solve for G seemsnot possible due to the scaling term
√λ inside the sine function.
6. Summary
We show that the eccentric anomaly E from Kepler’s equationcan be computed by a CORDIC-like approach and is an interest-ing alternative to other existing tools. The start vector E0 = 0◦and its Cartesian representation (cos E0 = 1 and sin E0 = 0) arerotated using a set of basis angles. The basis angles αn and itstrigonometric function values can be pre-computed and storedin an auxiliary table. Since the table is short and independent ofe, it can be also hard-coded.
Our method provides E, sin E, and cos E without calling anytranscendental function at run-time. The precision is adjustablevia the number of iterations. For instance, single precision isobtained with n = 29 iterations. Using double precision arith-
metic, we found the accuracy is limited to ∼10−15√
21−e in the
extreme corner (M = 0, e = 1). For accuracy and speed we re-commend the one-sided algorithm described in Sect. 3.1.
Our method is very flexible. As a stand-alone method it canprovide high accuracy, but it can be also serve start value forother refinement routines and coupled with Newton’s and Hal-ley’s method. In this context we proposed in Sects. 3.2 and 3.3to propagate cosine and sine terms simultaneously using smallangle approximations in the trigonometric addition theorems andderived the limits when they can be applied without accuracyloss.
Though the number of iterations appears relatively large,the computational load per iteration is small. Indeed, a withsimple software implementation we find a performance that
is good competition for Newton’s method. However, CORDICalgorithms utilise their full potential when implemented in hard-ware, that is, directly as a digital circuit. So-called field pro-grammable gate arrays (FGPA) might be a possibility to installour algorithm closer to machine layout. Indeed, hardware ori-ented approaches can be very successful. This was shown bythe GRAvity PipelinE (GRAPE) project (Hut & Makino 1999),which tackled N-body problems. By implementing Newtonianpair-wise forces efficiently in hardware, it demonstrated a hugeperformance boost and solved new astrodynamical problems(Sugimoto et al. 2003).
Though we could not completely transfer the originalCORDIC algorithm to Kepler’s equation, it might benefit fromongoing developments and improvement of CORDIC algorithmswhich is still an active field. In the light of CORDIC, solvingKepler’s equations appears almost as simple as computing a sinefunction.
Acknowledgements. The author thanks the referee Kleomenis Tsiganis for use-ful comments and M. Kürster and S. Reffert for manuscript reading. This work issupported by the Deutsche Forschungsgemeinschaft under DFG RE 1664/12-1and Research Unit FOR2544 “Blue Planets around Red Stars”, project no. RE1664/14-1.
ReferencesBoyd, J. P. 2007, Appl. Numer. Math., 57, 12Burkardt, T. M., & Danby, J. M. A. 1983, Celest. Mech., 31, 317Colwell, P. 1993, Solving Kepler’s Equation over three Centuries (Richmond,
VA: Willmann-Bell)Danby, J. M. A. 1987, Celest. Mech., 40, 303Feinstein, S. A., & McLaughlin, C. A. 2006, Celest. Mech. Dyn. Astron., 96,
49Ford, E. B. 2009, New Ast., 14, 406Fukushima, T. 1997, Celest. Mech. Dyn. Astron., 66, 309Fukushima, T. 1999, Celest. Mech. Dyn. Astron., 75, 201Hachaïchi, Y., & Lahbib, Y. 2016, ArXiv e-prints [arXiv: 1606.02468]Hut, P., & Makino, J. 1999, Science, 283, 501Jain, A., Khare, K., & Aggarwal, S. 2013, Int. J. Comput. Appl., 63, 1Maharatna, K., Troya, A., Banerjee, S., & Grass, E. 2004, IEE Proc. Comput.
Digital Tech., 151, 448Markley, F. L. 1995, Celest. Mech. Dyn. Astron., 63, 101Stumpff, K. 1959, Himmelsmechanik (Berlin: VEB )Stumpff, K. 1968, Rep. NASA Tech. Note, 29, 4460Sugimoto, D. 2003, in Astrophysical Supercomputing using Particle
Simulations, eds. J. Makino, & P. Hut, IAU Symp., 208, 1Volder, J. E. 1959, IRE Trans. Electron. Comput., 330Walther, J. S. 1971, in Proceedings of the May 18–20, 1971, Spring Joint
Computer Conference (New York: ACM), AFIPS 71, 379Wisdom, J., & Holman, M. 1991, AJ, 102, 1528
A128, page 6 of 9
M. Zechmeister: CORDIC-like method for solving Kepler’s equation
Appendix A: Illustrative python code
The following codes implement the two-sided algorithmsdescribed in Sects. 2 and 4.
A.1. Elliptic case
1 # initialise cos-sin look-up table2 from math import pi, cos, sin, floor3 divtwopi = 1 / (2*pi)4 acs = [(a, cos(a), sin(a)) for a in \5 [pi/2**i for i in range(1,60)]]67 def Ecs(M, e, n=29):8 E = 2 * pi * floor(M*divtwopi+0.5)9 cosE, sinE = 1., 0.
10 for a,cosa,sina in acs[:n]:11 if E-e*sinE > M:12 a, sina = -a, -sina13 E += a14 cosE, sinE = cosE*cosa - sinE*sina,\15 cosE*sina + sinE*cosa16 return E, cosE, sinE
As an example, calling the function with Ecs(2-sin(2), 1)should return the triple (1.99999999538762,-0.4161468323531165, 0.9092974287451092).
We note that this pure python code illustrates the function-ality and low complexity (not performance). An implementationin C (including a wrapper to python) and gnuplot with algorithmvariants (e.g. one-sided for improved accuracy and speed) areavailable online1.
A.2. Hyperbolic case
1 # initialise cosh-sinh look-up table2 from math import log, cosh, sinh, frexp, ldexp3 ln2 = log(2)4 acsh = [(a, cosh(a), sinh(a)) for a in \5 [4*ln2/2**i for i in range(1,60)]]67 def Hcs(M, e, n=29):8 m = max(0, frexp(M/e)[1])9 if M < 0: m = -m
10 H = m * ln211 coshH = ldexp(1, m-1) + ldexp(1, -m-1)12 sinhH = ldexp(1, m-1) - ldexp(1, -m-1)13 for a,cosha,sinha in acsh[:n]:14 if e*sinhH-H > M:15 a, sinha = -a, -sinha16 H += a17 coshH, sinhH = coshH*cosha + sinhH*sinha,\18 coshH*sinha + sinhH*cosha19 return H, coshH, sinhH
Calling Hcs(sinh(2)-2, 1) returns the triple(1.9999999991222275, 3.7621956879000753,3.626860404544669).
1 https://github.com/mzechmeister/ke
The function frexp returns the mantissa and the exponent ofa floating point number. Vice versa, the function ldexp needs amantissa and an exponent to create a floating point number.
Appendix B: Comparison with original CORDICalgorithm for the sine
The CORDIC algorithm for the sine function is in practice fur-ther optimised to work solely with additive operation and bitshiftoperation and without multiplication or even division. The rota-tion angles αn are slightly modified for this purpose such thatnow for n > 1
tanαn =1
2n−2 · (B.1)
As in Sect. 2, the first iteration starts with α1 = 90◦ (tanα1 =∞). The second angle is also the same α2 = 45◦ (tanα2 = 1),while all other angles are somewhat larger than in Eq. (7) andthe convergence range is
∑∞n = 1 αn = 1.0549π = 189.9◦. Using
Eq. (B.1) we can write Eq. (12) as(cn+1sn+1
)= cosαn+1
[1 −σn+1
12n−1
σn+11
2n−1 1
] (cnsn
). (B.2)
The next move in CORDIC is to take out the factor cosαnfrom this equation and to accumulate it separately. This savestwo multiplications, but changes the magnitude of the vector bycosαn in each iteration and after n iteration by
Kn =
n∏i = 2
cosαi =
n∏i = 2
1√1 + tan2 αi
=
n−2∏i = 0
1√
1 + 4−i· (B.3)
This scale correction factor Kn can be applied once after the lastiteration. The iteration scheme for the scale dependent vectorXn,Yn (where cn = KnXn and sn = KnYn) becomes
Xn+1 = Xn − Ynσn+1
2n−1 (B.4)
Yn+1 = Yn + Xnσn+1
2n−1 · (B.5)
This could be applied for the solution of Eq. (1), too. However,the check for rotation direction in Eq. (6) requires then a scalecorrection (En − eKnXn > M). So one multiplication remains,while one multiplication can still be saved. The additional mul-tiplication with e could be saved by including it into the startvector (i.e. z0 = e exp(iE0) = e = X0 for E0 = 0).
The final move in CORDIC is to map float values to inte-ger values which has the great advantage that the division bya power of two can replaced by bit shifts. But since we couldnot eliminate all multiplications, the full concept of CORDIC isunfortunately not directly applicable to solve Kepler’s equation.Therefore, we call our method CORDIC-like.
However, it should be noted that also scale-free CORDICalgorithms have been developed (Hachaïchi & Lahbib 2016) atthe expense of some additional bitshift operations. Furthermore,the scale correction Kn, which converges to K∞ ≈ 0.607253 ≈1/1.64676, does not change in double precision for n = 26. Thismeans from iteration n = 26 onwards, the concept of CORDICis applicable, when setting the magnitude of the start vector toK26e. Similar, for n = 29, the cosine term becomes one in dou-ble precision (cosαn = 1), which also indicates a quasi-constantscale factor and means that we can save this multiplication. InSects. 3.2 and 3.3 we exploit this fact in another way.
A128, page 7 of 9
A&A 619, A128 (2018)
Appendix C: Accuracy plots
10-17
10-16
10-15
10-14
10-13
10-12
0 0.5 1 1.5 2 2.5 3
abso
lute
dev
iatio
n δ
= |E
55 -
E|
eccentric anomaly E
e = 1.0e = 0.9999999999
e = 0.53·10-8
10-16
10-16E/(1-e)2·10-16/E
10-16E
10-17
10-16
10-15
10-14
10-13
10-12
10-11
10-10
10-9
10-8
0.01 110-16 10-14 10-12 10-10 10-8 10-6 10-4ab
solu
te d
evia
tion
δ =
|E55
- E
|
eccentric anomaly E
e = 1.0e = 0.9e = 0.5
1 - 1
0-1
6
1 -
10-1
4e
= 1
- 10
-12
1 - 1
0-1
00.
9999
9999
0.99
9999
0.99
990.
99
3·10-8
10-16
10-16E/(1-e)2·10-16/E
10-16E
Fig. C.1. Similar to Figs. 5 and 6, but as function of E.
10-16
10-14
10-12
10-10
10-8
10-6
10-4
0.01 110-16 10-14 10-12 10-10 10-8 10-6 10-4
abso
lute
dev
iatio
n δ
= |E
55 -
E|
eccentric anomaly E
e = 0.9E55
+-
E55E29 + 1xNewton
E19 + 1xHalley10-16/(1-e cos E)+10-16E
10-16E
10-16
10-14
10-12
10-10
10-8
10-6
10-4
0.01 110-16 10-14 10-12 10-10 10-8 10-6 10-4
abso
lute
dev
iatio
n δ
= |E
55 -
E|
eccentric anomaly E
e = 1E55
+-
E55E29 + 1xNewton
E19 + 1xHalley10-16/(1-e cos E)+10-16E
10-16E
Fig. C.2. Accuracy comparison of algorithm variants.
A128, page 8 of 9
M. Zechmeister: CORDIC-like method for solving Kepler’s equation
Appendix D: Starting estimate for the hyperboliccase
It can be shown that Eq. (27) always provides a lower bound forH in case of M ≥ 0. Starting with Kepler’s equation Eq. (20) andusing the identity sinh x = 1
2 [exp x−exp(−x)] and the inequationexp(−x) ≥ 1 − 2x (for x ≥ 0), we obtain
M = e sinh H − H =e2
[exp H − exp(−H) − 2
He
]≤
e2
[exp H − 1 + 2H
(1 −
1e
)]≤
e2
[exp H − 1].
For large values H, the approximation becomes more accu-rate. Further reforming and introduction of the binary logarithmyields
H ≥ ln(
2Me
+ 1)
= ln 2 · log2
(2Me
+ 1). (D.1)
The right side of Eq. (D.1) is plotted in Fig. 4 as a reddotted line. It belongs to the family of start guesses given inBurkardt & Danby (1983) (H0 = ln( 2M
e + k)). For Me = 1
2 , e = 1,and H0 = 0, the deviation is H −H0 ≈ 1.396 = 2.014 ln 2. Since,unfortunately, the pre-factor is slightly larger than two, the con-vergence range is expanded to 4 ln 2 by setting α1 = 2 ln 2 inEq. (22).
For this large convergence range, we can further simply thestart guess by omitting the additive one in Eq. (D.1)
H > ln2Me
= ln 2 · log22Me
= ln 2 ·(1 + log2
Me
)(D.2)
> ln 2 · floor(1 + log2
Me
)(D.3)
which finally leads to the start value for m in Eq. (27). The rightfunction in Eq. (D.2) is plotted is in Fig. 4 as a blue dashed line.At M
e = 1 and e = 1, the hyperbolic anomaly is H ≈ 1.729 =2.495 ln 2 and thus inside our convergence domain.
The simple start guess developed here is valid for all e ≥ 1and a lower bound for M ≥ 0, meaning that it is suitable forone-sided algorithms.
A128, page 9 of 9