# Complex argument of a symbolic expression

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?

edit retag close merge delete

Sort by » oldest newest most voted

Yeah you are right (2+3I).arg() does not work, but arg(2+3I) works.

But if you want a answer of the form 0.9827 you need arg(2+3*I).n()

more