Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Simplifying symbolic complex norm

sage: x,y = var('x,y', domain=RR)
sage: (x^2 + y^2 - abs(x + i*y)^2).simplify_full ()
x^2 + y^2 - abs(x + I*y)^2

How can I ensure sage expands the square-absolute value and simplify this down to zero? I'm aware that using (x + i*y).norm() instead of abs(x + i*y)^2 helps in this particular example, but that solution doesn't generalize. For instance, when I stick expressions involving x, y into vectors and compute the vector norm, the vector norm is expressed in terms of absolute values, so I still need a way to deal with the abs.

Simplifying symbolic complex norm

Sage's simplifier seems to have trouble expanding the square-absolute value of complex numbers:

sage: x,y = var('x,y', domain=RR)
sage: (x^2 + y^2 - abs(x + i*y)^2).simplify_full ()
x^2 + y^2 - abs(x + I*y)^2

How can I ensure sage expands the square-absolute value and simplify this down to zero? I'm aware that using (x + i*y).norm() instead of abs(x + i*y)^2 helps in this particular example, but that solution doesn't generalize. For instance, when I stick expressions involving x, y into vectors and compute the vector norm, the vector norm is expressed in terms of absolute values, so I still need a way to deal with the abs.