source 2007 Bernstein--Lange; note that the improvement from 12M+4S to 11M+5S was already mentioned in 2001 Bernstein http://cr.yp.to/talks.html#2001.10.29
unified
compute Z1Z1 = Z1^2
compute Z2Z2 = Z2^2
compute U1 = X1 Z2Z2
compute U2 = X2 Z1Z1
compute S1 = Y1 Z2 Z2Z2
compute S2 = Y2 Z1 Z1Z1
compute H = U2-U1
compute I = (2 H)^2
compute J = H I
compute r = 2 (S2-S1)
compute V = U1 I
compute X3 = r^2-J-2 V
compute Y3 = r (V-X3)-2 S1 J
compute Z3 = ((Z1+Z2)^2-Z1Z1-Z2Z2) H
