module Math.Eyptian ( egyptian ) where import Data.Ratio -- | If given @0@ as input, returns @[]@. egyptian :: (Integral a) => Ratio a -> [Ratio a] egyptian z = if x == 0 then [] else 1 % ceiling (f y / f x) : egyptian (((-y) `mod` x) % (y * ceiling (f y / f x))) where x = numerator z y = denominator z f = (%1)