Phase angle operator, Implemention and drawbacks
As mentioned in my comment, you need the atan2 function. If it is not implemented in the library you're using, you can implement it yourself quite easily according to this definition. If your signal is $x(t)=x_r(t)+jx_i(t)$, where $x_r(t)$ and $x_i(t)$ are the real and imaginary parts, respectively, then for a given time $t$, the phase is computed as $\phi(t)=\text{atan2}(x_i(t),x_r(t))$.

The computation of the phase of a signal is indeed sensitive to noise. Note that - no matter how you implement it - there is always some direct or approximate computation of the ratio of the imaginary and the real part of the signal, and since both are corrupted by noise, the ratio can be very noisy. The computation of the ratio can also become numerically problematic if the denominator (i.e. the real part) becomes very small.