module Data.Astro.Sun.SunInternals
(
solveKeplerEquation
)
where
solveKeplerEquation :: Double -> Double -> Double -> Double
solveKeplerEquation :: Double -> Double -> Double -> Double
solveKeplerEquation Double
e Double
m Double
eps = Double -> Double
iter Double
m
where iter :: Double -> Double
iter Double
x =
let delta :: Double
delta = Double
x Double -> Double -> Double
forall a. Num a => a -> a -> a
- Double
eDouble -> Double -> Double
forall a. Num a => a -> a -> a
*(Double -> Double
forall a. Floating a => a -> a
sin Double
x) Double -> Double -> Double
forall a. Num a => a -> a -> a
- Double
m
dx :: Double
dx = Double
delta Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ (Double
1 Double -> Double -> Double
forall a. Num a => a -> a -> a
- Double
eDouble -> Double -> Double
forall a. Num a => a -> a -> a
*(Double -> Double
forall a. Floating a => a -> a
cos Double
x))
in if Double -> Double
forall a. Num a => a -> a
abs Double
delta Double -> Double -> Bool
forall a. Ord a => a -> a -> Bool
< Double
eps
then Double
x
else Double -> Double
iter (Double
xDouble -> Double -> Double
forall a. Num a => a -> a -> a
-Double
dx)