> it must be real if you do W * W.conf()
> It'd use np.abs(W) ** 2 unless it's slower.

It's real, yes, but still of type complex, i.e.
12.345 + 0j