y^2=x^4+2*a*x^2+1
Doubling-oriented XXYZZ coordinates [database entry] make the additional assumptions
a^2+c^2=1and represent x y as X XX Y Z ZZ satisfying the following equations:
x=X/Z y=Y/ZZ XX=X^2 ZZ=Z^2
| Operation | Assumptions | Cost | Readdition cost |
|---|---|---|---|
| addition | Z2=1 and k=a-1 | 6M + 3S + 1*k | 6M + 3S + 1*k |
| addition | k=a-1 | 7M + 4S + 1*k | 7M + 3S + 1*k |
| doubling | Z1=1 | 6S + 1*a | |
| doubling | Z1=1 | 1M + 5S | |
| doubling | 2M + 5S + 1*a | ||
| doubling | 3M + 4S | ||
| doubling | 8S + 1*a + 2*c | ||
| doubling | 1M + 8S + 1*a | ||
| doubling | a2=2*a | 3M + 8S + 1*a2 + 1*a | |
| doubling | a2=2*a | 2M + 7S + 1^4 + 1*a2 + 2*c | |
| tripling | 8M + 6S + 1*a | ||
| tripling | b=a^2-1 | 4M + 11S + 1*a + 1*b | |
| scaling | 1I + 2M + 2S |
R1 = (X1+Z1)^2-XX1-ZZ1
R2 = 2*X2
A = 2*XX1*XX2
B = 2*ZZ1
C = R1*R2
D = Y1*Y2
X3 = (R1+Y1)*(R2+Y2)-C-D
Z3 = B-A
XX3 = X3^2
ZZ3 = Z3^2
F = A+B+C
G = 2*((XX1+ZZ1)*(XX2+1)+D)+k*C
H = XX3+ZZ3
Y3 = F*G-H
R1 = (X1+Z1)^2-XX1-ZZ1
R2 = (X2+Z2)^2-XX2-ZZ2
A = 2*XX1*XX2
B = 2*ZZ1*ZZ2
C = R1*R2
D = Y1*Y2
X3 = (R1+Y1)*(R2+Y2)-C-D
Z3 = B-A
XX3 = X3^2
ZZ3 = Z3^2
F = A+B+C
G = 2*((XX1+ZZ1)*(XX2+ZZ2)+D)+k*C
H = XX3+ZZ3
Y3 = F*G-H
YY1 = Y1^2
X3 = (X1+Y1)^2-XX1-YY1
Z3 = 1-XX1^2
XX3 = X3^2
ZZ3 = Z3^2
Y3 = 2*YY1^2-a*XX3-ZZ3
A = XX1^2
B = Y1^2
X3 = XX1+B-(X1+Y1)^2
Z3 = A-1
XX3 = X3^2
ZZ3 = Z3^2
T3 = XX3+ZZ3
Y3 = 2*B*(A+2*XX1+1)-T3
R1 = (X1+Z1)^2-XX1-ZZ1
YY1 = Y1^2
X3 = Y1*R1
Z3 = (ZZ1-XX1)*(ZZ1+XX1)
XX3 = X3^2
ZZ3 = Z3^2
Y3 = 2*YY1^2-a*XX3-ZZ3
B = XX1-ZZ1
T1 = XX1+ZZ1
C = Y1*T1
X3 = C-Y1*(X1+Z1)^2
Z3 = T1*B
XX3 = X3^2
ZZ3 = Z3^2
T3 = XX3+ZZ3
Y3 = 2*C^2-T3
R1 = (X1+Z1)^2-XX1-ZZ1
Y12 = 2*Y1
T1 = R1^2
T12 = 2*T1
T2 = Y12^2
X3 = (R1+Y12)^2-T1-T2
XX3 = X3^2
Y3 = (T2+c*T12)^2-c*XX3
Z3 = T2-a*T12-8*XX1^2
ZZ3 = Z3^2
R1 = (X1+Z1)^2-XX1-ZZ1
A1 = (R1+2*Y1)^2
A2 = 4*Y1^2
Q1 = XX1^2
S1 = R1^2
S12 = 2*S1
M = a*S12
A2M = A2-M
X3 = A1-A2-S1
Y3 = A2M*(A2+M)+S12^2
Z3 = A2M-8*Q1
XX3 = X3^2
ZZ3 = Z3^2
A1 = (X1*Z1+Y1)^2
A2 = Y1^2
Q1 = (X1^2)^2
S1 = (X1*Z1)^2
T = A2-Q1-2*a*S1
X3 = A1-A2-S1
Y3 = (T+Q1)*(A2+a2*S1)+4*S1^2
Z3 = T-Q1
XX3 = X3^2
ZZ3 = Z3^2
T3 = XX3+ZZ3
T1 = (X1*Z1)^2
T2 = Y1^2
S1 = (T2+2*c*T1)^2
U = (X1*Z1+Y1)^2-T1-T2
Q = U^2
X3 = U
Y3 = S1-c*Q
Z3 = T2-a2*T1-2*X1^4
XX3 = X3^2
ZZ3 = Z3^2
A = XX1^2
B = ZZ1^2
C = A+B
D = 2*((XX1+ZZ1)^2-C)
E = A-B
F = 2*A
G = 2*B
J = a*D+2*C
K = J+E
L = J-E
M = C*E
N = G*K
P = F*L
X3 = X1*(M-N)
Y3 = Y1*((M+N)*(P-M)+(D*E)^2)
Z3 = Z1*(P+M)
XX3 = X3^2
ZZ3 = Z3^2
UU = XX1^2
WW = ZZ1^2
RR = ((X1+Z1)^2-XX1-ZZ1)^2
A = 4*(UU-WW)
AA = A^2
B = 2*(UU+WW)+a*RR
BB = B^2
AB = (A+B)^2-AA-BB
C = b*RR^2
Q = 2*(BB-C)
X3 = X1*(AB-Q)
Z3 = Z1*(AB+Q)
Y3 = Y1*(Q^2-4*AA*C)
XX3 = X3^2
ZZ3 = Z3^2
A = 1/Z1
X3 = X1*A
XX3 = X3^2
Y3 = Y1*A^2
Z3 = 1
ZZ3 = 1