x^2+y^2=c^2*(1+d*x^2*y^2)
YZ coordinates with square d [database entry] make the additional assumptions
c=1
d=r^2
and
represent
x
y
as
Y
Z
satisfying the following equations:
r*y=Y/Z
The following formulas are the outcome of a discussion in 2009 among Daniel J. Bernstein, David Kohel, and Tanja Lange. The core ideas were published by Pierrick Gaudry in 2006.
| Operation | Assumptions | Cost | Readdition cost |
|---|---|---|---|
| doubling | s=(1+r)/(1-r) and r2=2*r and Z1=1 | 2S + 1*r2 + 1*s | |
| doubling | s=(1+r)/(1-r) and Z1=1 | 3S + 1*s | |
| doubling | s=(1+r)/(1-r) | 4S + 1*r + 1*s | |
| doubling | s=(1+r)/(1-r) | 6S + 2*r + 1*s | |
| diffadd | s=(1+r)/(1-r) and Z1=1 | 3M + 4S + 3*r + 1*s | |
| diffadd | s=(1+r)/(1-r) | 4M + 4S + 3*r + 1*s | |
| diffadd | s=(1+r)/(1-r) | 4M + 8S + 5*r + 1*s | |
| ladder | s=(1+r)/(1-r) and Z1=1 | 3M + 6S + 3*r + 2*s | |
| ladder | s=(1+r)/(1-r) | 4M + 6S + 3*r + 2*s | |
| ladder | s=(1+r)/(1-r) | 4M + 14S + 7*r + 2*s | |
| scaling | 1I + 1M |
YY = Y1^2
A = r2*YY
B = d+YY^2
V = s*(B-A)
W = B+A
Y3 = W-V
Z3 = W+V
YY = Y1^2
B = d+YY^2
W = (r+YY)^2
V = s*(2*B-W)
Y3 = W-V
Z3 = W+V
YY = Y1^2
ZZ = r*Z1^2
V = s*(ZZ-YY)^2
W = (ZZ+YY)^2
Y3 = W-V
Z3 = W+V
V = s*(r*Z1^2-Y1^2)^2
W = (r*Z1^2+Y1^2)^2
Y3 = W-V
Z3 = W+V
YY2 = Y2^2
ZZ2 = r*Z2^2
YY3 = Y3^2
ZZ3 = r*Z3^2
V = s*(ZZ2-YY2)*(ZZ3-YY3)
W = (ZZ2+YY2)*(ZZ3+YY3)
Y5 = r*(W-V)
Z5 = Y1*(W+V)
YY2 = Y2^2
ZZ2 = r*Z2^2
YY3 = Y3^2
ZZ3 = r*Z3^2
V = s*(ZZ2-YY2)*(ZZ3-YY3)
W = (ZZ2+YY2)*(ZZ3+YY3)
Y5 = (r*Z1)*(W-V)
Z5 = Y1*(W+V)
V = s*(r*Z2^2-Y2^2)*(r*Z3^2-Y3^2)
W = (r*Z2^2+Y2^2)*(r*Z3^2+Y3^2)
Y5 = r*Z1*(W-V)
Z5 = Y1*(W+V)
YY2 = Y2^2
ZZ2 = r*Z2^2
A = ZZ2-YY2
B = ZZ2+YY2
YY3 = Y3^2
ZZ3 = r*Z3^2
V2 = s*A^2
W2 = B^2
Y4 = W2-V2
Z4 = W2+V2
V = s*A*(ZZ3-YY3)
W = B*(ZZ3+YY3)
Y5 = r*(W-V)
Z5 = Y1*(W+V)
YY2 = Y2^2
ZZ2 = r*Z2^2
A = ZZ2-YY2
B = ZZ2+YY2
YY3 = Y3^2
ZZ3 = r*Z3^2
V2 = s*A^2
W2 = B^2
Y4 = W2-V2
Z4 = W2+V2
V = s*A*(ZZ3-YY3)
W = B*(ZZ3+YY3)
Y5 = (r*Z1)*(W-V)
Z5 = Y1*(W+V)
V2 = s*(r*Z2^2-Y2^2)^2
W2 = (r*Z2^2+Y2^2)^2
Y4 = W2-V2
Z4 = W2+V2
V = s*(r*Z2^2-Y2^2)*(r*Z3^2-Y3^2)
W = (r*Z2^2+Y2^2)*(r*Z3^2+Y3^2)
Y5 = r*Z1*(W-V)
Z5 = Y1*(W+V)
Y3 = Y1/Z1
Z3 = 1