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