I was a bit surprised that simply entering a complex number and asking for its argument doesn't seem to work. Not even in the case where all numbers are known and algebraic, even integers:
(2+3*I).arg()
AttributeError: 'sage.symbolic.expression.Expression' object has no attribute 'arg'
I found out that in order to compute the argument, I'll have to manually cast my number from the symbolic ring into some complex field, e.g.
sage: CC(2+3*I).arg()
0.982793723247329
But I believe that this should work without me having to think too much about the type system. It should even work for completely symbolic expressions, as stuff like real_part
, imag_part
and atan2
are all symbolic functions which may be returned in their unevaluated form if evaluation is not possible.
Is there some other way to compute the complex argument, which I missed so far, ans which works for symbolic expressions as well as elements of a complex number field?