Could this copy be removed by using a Cython fused type? It might create a problem with integer overflow when squaring...