source 2007 Bernstein--Lange assume Z1 = 1 assume Z2 = 1 compute C = X1 X2 compute D = Y1 Y2 compute E = C D compute H = C-D compute I = (X1+Y1) (X2+Y2)-C-D compute X3 = c (E+d) H compute Y3 = c (E-d) I compute Z3 = H I