source 2007 Hisil--Carter--Dawson compute A = XX1^2 compute B = ZZ1^2 compute C = A+B compute D = 2((XX1+ZZ1)^2-C) compute E = A-B compute F = 2 A compute G = 2 B compute J = a D+2 C compute K = J+E compute L = J-E compute M = C E compute N = G K compute P = F L compute X3 = X1(M-N) compute Y3 = Y1((M+N)(P-M)+(D E)^2) compute Z3 = Z1(P+M) compute XX3 = X3^2 compute ZZ3 = Z3^2 compute R3 = (X3+Z3)^2-XX3-ZZ3