I use "atan2(x,y)". It's not 100% what you're looking for (measured (-pi,pi] from the x-axis clockwise) but it does all of the "hard work" in the standard library so it should be efficient in the general case. The conversion from there to what you want is straight forward.
Don't feed it (0,0)
Wikipedia gives a good description.
How do
you?