ivory-stdlib-0.1.0.0: src/Ivory/Stdlib/Trig.hs
module Ivory.Stdlib.Trig
( iAtan2
) where
import Ivory.Language
-- spec: http://en.wikipedia.org/wiki/Atan2
iAtan2 :: (IvoryOrd a, Floating a) => a -> a -> a
iAtan2 y x = ((x >? 0)?( atan(y/x)
,((y >=? 0).&&(x <? 0))?( atan(y/x) + pi
,((y <? 0).&&(x <? 0))?( atan(y/x) - pi
,((y >? 0).&&(x ==? 0))?( pi/2
,((y <? 0).&&(x ==? 0))?( -1*(pi/2)
,0))))))