y^2=x^4+2*a*x^2+1
Doubling-oriented XYZ coordinates [database entry] make the additional assumptions
a^2+c^2=1and represent x y as X Y Z satisfying the following equations:
x=X/Z
y=Y/Z^2
| Operation | Assumptions | Cost | Readdition cost |
|---|---|---|---|
| addition | Z1=1 and Z2=1 | 5M + 2S + 1*a | 5M + 2S + 1*a |
| addition | Z2=1 | 8M + 3S + 1*a | 8M + 3S + 1*a |
| addition | 10M + 3S + 1*a | 9M + 3S + 1*a | |
| addition | 8M + 6S + 1*a | 8M + 3S + 1*a | |
| addition | 10M + 4S + 1*a | 9M + 2S + 1*a | |
| addition | b=-2*a | 10M + 4S + 1*b | 9M + 2S + 1*b |
| addition | 19M + 8S + 1*a | 18M + 6S + 1*a | |
| addition | Z1=1 and Z2=1 | 2I + 11M + 5S + 1*a | 2I + 11M + 4S + 1*a |
| doubling | a2=2*a and Z1=1 | 1M + 4S + 1*a2 | |
| doubling | a2=2*a and c2=2*c | 1M + 7S + 1*a2 + 1*c2 + 1*c | |
| doubling | b=4-4*a^2 | 2M + 6S + 1*a + 1*b | |
| doubling | a2=2*a | 2M + 6S + 1*a2 | |
| doubling | a2=2*a | 3M + 6S + 2*a2 | |
| doubling | 1M + 9S + 1*a | ||
| doubling | a2=2*a | 2M + 5S + 1^4 + 1*a2 + 2*c | |
| doubling | 19M + 8S + 1*a | ||
| doubling | 19M + 8S + 1*a | ||
| scaling | 1I + 2M + 1S |
T7 = Y1+X1
T8 = Y2+X2
T2 = Y1*Y2
T7 = T7*T8
T7 = T7-T2
T5 = X1*X2
T6 = T5
X3 = T7-T6
T1 = X1+X2
T3 = T1^2
T6 = 2*T6
T3 = T3-T6
T3 = T3*T6
T4 = a*T6
T2 = T2+T4
T8 = T5^2
T5 = T8+1
T2 = T2*T5
Y3 = T2+T3
Z3 = 1-T8
T1 = X1
T2 = Y1
T3 = Z1
T4 = X2
T5 = Y2
T7 = T1*T3
T7 = T2+T7
T8 = T4
T8 = T5+T8
T2 = T2*T5
T7 = T7*T8
T7 = T7-T2
T5 = T1*T4
T1 = T1+T3
T8 = T3
T4 = T4+1
T6 = T5*T8
T7 = T7-T6
T1 = T1*T4
T1 = T1-T5
T1 = T1-T8
T3 = T1^2
T6 = 2*T6
T3 = T3-T6
T3 = T3*T6
T4 = a*T6
T2 = T2+T4
T4 = T8^2
T8 = T5^2
T5 = T4+T8
T2 = T2*T5
T2 = T2+T3
T5 = T4-T8
X3 = T7
Y3 = T2
Z3 = T5
T1 = X1
T2 = Y1
T3 = Z1
T4 = X2
T5 = Y2
T6 = Z2
T7 = T1*T3
T7 = T2+T7
T8 = T4*T6
T8 = T5+T8
T2 = T2*T5
T7 = T7*T8
T7 = T7-T2
T5 = T1*T4
T1 = T1+T3
T8 = T3*T6
T4 = T4+T6
T6 = T5*T8
T7 = T7-T6
T1 = T1*T4
T1 = T1-T5
T1 = T1-T8
T3 = T1^2
T6 = 2*T6
T3 = T3-T6
T3 = T3*T6
T4 = a*T6
T2 = T2+T4
T4 = T8^2
T8 = T5^2
T5 = T4+T8
T2 = T2*T5
T2 = T2+T3
T5 = T4-T8
X3 = T7
Y3 = T2
Z3 = T5
A2 = X2^2
C2 = Z2^2
D2 = A2+C2
B2 = (X2+Z2)^2-D2
E2 = B2+Y2
A1 = X1^2
C1 = Z1^2
D1 = A1+C1
B1 = (X1+Z1)^2-D1
E1 = B1+Y1
A1A2 = A1*A2
B1B2 = B1*B2
C1C2 = C1*C2
Y1Y2 = Y1*Y2
F = C1C2+A1A2
G = 2*B1B2
X3 = E1*E2-B1B2-Y1Y2
Y3 = F*(4*Y1Y2+a*G)+(D1*D2-F)*G
Z3 = 2*(C1C2-A1A2)
A2 = X2^2
B2 = X2*Z2
C2 = Z2^2
A1 = X1^2
B1 = X1*Z1
C1 = Z1^2
A1A2 = A1*A2
B1B2 = B1*B2
C1C2 = C1*C2
Y1Y2 = Y1*Y2
E = C1C2+A1A2
F = (A1+C1)*(A2+C2)-E
G = 2*B1B2
X3 = (B1+Y1)*(B2+Y2)-B1B2-Y1Y2
Y3 = E*(Y1Y2+a*G)+G*F
Z3 = C1C2-A1A2
T1 = X1^2
T2 = X2^2
T3 = X1*Z1
T4 = X2*Z2
T5 = Z1^2
T6 = Z2^2
T7 = Y1
T8 = Y2
T9 = T7*T8
T7 = T7+T3
T8 = T8+T4
T3 = T3*T4
T7 = T7*T8
T7 = T7-T9
T7 = T7-T3
T4 = T1*T2
T8 = T5*T6
T1 = T1+T5
T2 = T2+T6
T5 = T1*T2
T5 = T5-T4
T5 = T5-T8
T1 = T8-T4
T2 = T8+T4
T6 = b*T3
T6 = T9-T6
T6 = T6*T2
T3 = 2*T3
T3 = T5*T3
T8 = T6+T3
X3 = T7
Y3 = T8
Z3 = T1
X3 = X1*Z1*Y2+Y1*X2*Z2
Y3 = ((Z1*Z2)^2+(X1*X2)^2)*(Y1*Y2+2*a*X1*X2*Z1*Z2)+2*X1*X2*Z1*Z2*(X1^2*Z2^2+Z1^2*X2^2)
Z3 = (Z1*Z2)^2-(X1*X2)^2
r = 1-(X1*X2)^2
X3 = (X1*Y2+Y1*X2)/r
Y3 = ((1+(X1*X2)^2)*(Y1*Y2+2*a*X1*X2)+2*X1*X2*(X1^2+X2^2))/r^2
Z3 = 1
U1 = (X1+Y1)^2
U2 = Y1^2
S1 = X1^2
V1 = S1^2
aS1 = a2*S1
T = U2-V1-aS1
X3 = U1-U2-S1
Y3 = (T+V1)*(U2+aS1)+4*V1
Z3 = T-V1
XX1 = X1^2
XZ1 = X1*Z1
T1 = XZ1^2
T2 = Y1^2
S1 = (T2+c2*T1)^2
X3 = (XZ1+Y1)^2-T1-T2
V = X3^2
Y3 = S1-c*V
Z3 = T2-a2*T1-2*XX1^2
T0 = X1*Z1
X3 = T0*Y1
X3 = X3+X3
T0 = T0^2
T1 = 2*a*T0
T2 = Y1^2
Z3 = T2-T1
Y3 = T0^2
Y3 = b*Y3
T0 = T2^2
Y3 = Y3+T0
T0 = X1^2
T0 = T0^2
Z3 = Z3-T0
Z3 = Z3-T0
XZ1 = X1*Z1
U1 = (XZ1+Y1)^2
U2 = Y1^2
V1 = (X1^2)^2
S1 = XZ1^2
aS1 = a2*S1
T = U2-V1-aS1
X3 = U1-U2-S1
Y3 = (T+V1)*(U2+aS1)+(2*S1)^2
Z3 = T-V1
U1 = (X1*Z1+Y1)^2
U2 = Y1^2
V1 = (X1^2)^2
S1 = (X1*Z1)^2
T = U2-V1-a2*S1
X3 = U1-U2-S1
Y3 = (T+V1)*(U2+a2*S1)+4*S1^2
Z3 = T-V1
XX = X1^2
XXXX = XX^2
YY = Y1^2
ZZ = Z1^2
ZZZZ = ZZ^2
M = XX+ZZ
XZ = (X1+Z1)^2-M
XZXZ = XZ^2
X3 = (Y1+XZ)^2-YY-XZXZ
Y3 = (ZZZZ+XXXX)*(4*YY+2*a*XZXZ)+XZXZ^2
Z3 = 2*(ZZZZ-XXXX)
T1 = (X1*Z1)^2
T2 = Y1^2
S1 = (T2+2*c*T1)^2
U = (X1*Z1+Y1)^2-T1-T2
V = U^2
X3 = U
Y3 = S1-c*V
Z3 = T2-a2*T1-2*X1^4
X3 = X1*Z1*Y1+Y1*X1*Z1
Y3 = ((Z1*Z1)^2+(X1*X1)^2)*(Y1*Y1+2*a*X1*X1*Z1*Z1)+2*X1*X1*Z1*Z1*(X1^2*Z1^2+Z1^2*X1^2)
Z3 = (Z1*Z1)^2-(X1*X1)^2
X2 = X1
Y2 = Y1
Z2 = Z1
X3 = X1*Z1*Y2+Y1*X2*Z2
Y3 = ((Z1*Z2)^2+(X1*X2)^2)*(Y1*Y2+2*a*X1*X2*Z1*Z2)+2*X1*X2*Z1*Z2*(X1^2*Z2^2+Z1^2*X2^2)
Z3 = (Z1*Z2)^2-(X1*X2)^2
A = 1/Z1
X3 = X1*A
Y3 = Y1*A^2
Z3 = 1