source 2008 Bernstein-–Lange-–Rezaeian Farashahi compute W1 = X1 + Y1 compute W2 = X2 + Y2 compute A = X1(X1+Z1) compute B = Y1(Y1+Z1) compute C = Z1 Z2 compute D = W2 Z2 compute E = d1 C^2 compute H = (d1 Z2 + d2 W2)W1 C compute I = d1 C Z1 compute U = E + A D compute V = E + B D compute S = U V compute X3 = S Y1 + (H + X2(I + A(Y2+Z2)))V Z1 compute Y3 = S X1 + (H + Y2(I + B(X2+Z2)))U Z1 compute Z3 = S Z1