# 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`

.

I just want to bump this question.

I'd like this to give me

`x^2 + y^2`

, but it doesn't. As the OP writes, one can get the symbolic magnitude using`sqrt(z.norm())`

, but this is inelegant. (Also, note that for reasons drawn from algebraic field theory, the`.norm()`

here gives only the magnitudesquaredof the complex number.)