y^^{2}=x^^{3}+a*x+b
Jacobian coordinates [database entry] represent x y as X Y Z satisfying the following equations:
x=X/Z^^{2} y=Y/Z^^{3}
Operation | Assumptions | Cost | Readdition cost |
---|---|---|---|
addition | Z1=1 and Z2=1 | 4M + 2S | 4M + 2S |
addition | Z1=Z2 | 5M + 2S | 5M + 2S |
addition | Z2=1 | 7M + 4S | 7M + 4S |
addition | Z2=1 | 8M + 3S | 8M + 3S |
addition | Z2=1 | 8M + 3S | 8M + 3S |
addition | Z2=1 | 8M + 3S | 8M + 3S |
addition | 11M + 5S | 10M + 4S | |
addition | 12M + 4S | 11M + 3S | |
addition | 12M + 4S | 11M + 3S | |
addition | half*2=1 | 12M + 4S + 1*half | 11M + 3S + 1*half |
addition | 8M + 6S + 2^^{3} | 8M + 5S + 1^^{3} | |
addition | 10M + 5S + 3^^{3} | 10M + 4S + 2^^{3} | |
addition | 10M + 5S + 4^^{3} | 10M + 4S + 3^^{3} | |
doubling | Z1=1 | 1M + 5S | |
doubling | 1M + 8S + 1*a | ||
doubling | 3M + 6S + 1*a | ||
doubling | half*2=1 | 3M + 6S + 1*half + 1*a | |
doubling | 3M + 3S + 2^^{4} + 1*a | ||
doubling | 3M + 3S + 2^^{4} + 1*a | ||
tripling | 5M + 10S + 1*a | ||
tripling | 8M + 7S + 1*a | ||
tripling | 9M + 5S + 1^^{3} + 2^^{4} + 1*a | ||
scaling | 1I + 3M + 1S |
H = X2-X1 HH = H^^{2} I = 4*HH J = H*I r = 2*(Y2-Y1) V = X1*I X3 = r^^{2}-J-2*V Y3 = r*(V-X3)-2*Y1*J Z3 = 2*H
A = (X2-X1)^^{2} B = X1*A C = X2*A D = (Y2-Y1)^^{2} X3 = D-B-C Y3 = (Y2-Y1)*(B-X3)-Y1*(C-B) Z3 = Z1*(X2-X1)
Z1Z1 = Z1^^{2} U2 = X2*Z1Z1 S2 = Y2*Z1*Z1Z1 H = U2-X1 HH = H^^{2} I = 4*HH J = H*I r = 2*(S2-Y1) V = X1*I X3 = r^^{2}-J-2*V Y3 = r*(V-X3)-2*Y1*J Z3 = (Z1+H)^^{2}-Z1Z1-HH
T1 = Z1^^{2} T2 = T1*Z1 T1 = T1*X2 T2 = T2*Y2 T1 = T1-X1 T2 = T2-Y1 Z3 = Z1*T1 T3 = T1^^{2} T4 = T3*T1 T3 = T3*X1 T1 = 2*T3 X3 = T2^^{2} X3 = X3-T1 X3 = X3-T4 T3 = T3-X3 T3 = T3*T2 T4 = T4*Y1 Y3 = T3-T4
T1 = Z1^^{2} T2 = T1*Z1 T1 = T1*X2 T2 = T2*Y2 T1 = X1-T1 T2 = T2-Y1 Z3 = Z1*T1 T4 = T1^^{2} T1 = T1*T4 T4 = T4*X1 X3 = T2^^{2} X3 = X3+T1 Y3 = T1*Y1 T1 = 2*T4 X3 = X3-T1 T4 = X3-T4 T4 = T4*T2 Y3 = T4-Y3
Z1Z1 = Z1^^{2} U2 = X2*Z1Z1 S2 = Y2*Z1*Z1Z1 H = U2-X1 I = (2*H)^^{2} J = H*I r = 2*(S2-Y1) V = X1*I X3 = r^^{2}-J-2*V Y3 = r*(V-X3)-2*Y1*J Z3 = 2*Z1*H
Z1Z1 = Z1^^{2} Z2Z2 = Z2^^{2} U1 = X1*Z2Z2 U2 = X2*Z1Z1 S1 = Y1*Z2*Z2Z2 S2 = Y2*Z1*Z1Z1 H = U2-U1 I = (2*H)^^{2} J = H*I r = 2*(S2-S1) V = U1*I X3 = r^^{2}-J-2*V Y3 = r*(V-X3)-2*S1*J Z3 = ((Z1+Z2)^^{2}-Z1Z1-Z2Z2)*H
Z1Z1 = Z1^^{2} Z2Z2 = Z2^^{2} U1 = X1*Z2Z2 U2 = X2*Z1Z1 S1 = Y1*Z2*Z2Z2 S2 = Y2*Z1*Z1Z1 H = U2-U1 HH = H^^{2} HHH = H*HH r = S2-S1 V = U1*HH X3 = r^^{2}-HHH-2*V Y3 = r*(V-X3)-S1*HHH Z3 = Z1*Z2*H
ZZ1 = Z1^^{2} ZZZ1 = Z1*ZZ1 ZZ2 = Z2^^{2} ZZZ2 = Z2*ZZ2 A = X1*ZZ2 B = X2*ZZ1-A c = Y1*ZZZ2 d = Y2*ZZZ1-c e = B^^{2} f = B*e g = A*e h = Z1*Z2 f2g = 2*g+f X3 = d^^{2}-f2g Z3 = B*h gx = g-X3 Y3 = d*gx-c*f
R1 = X1 R2 = Y1 R3 = Z1 R4 = X2 R5 = Y2 R6 = Z2 R7 = R6^^{2} R1 = R1*R7 R7 = R6*R7 R2 = R2*R7 R7 = R3^^{2} R8 = R4*R7 R7 = R3*R7 R7 = R5*R7 R2 = R2-R7 R7 = 2*R7 R7 = R2+R7 R1 = R1-R8 R8 = 2*R8 R8 = R1+R8 R3 = R3*R6 R3 = R3*R1 R7 = R7*R1 R1 = R1^^{2} R8 = R8*R1 R7 = R7*R1 R1 = R2^^{2} R1 = R1-R8 R8 = R8-R1 R8 = R8-R1 R8 = R8*R2 R2 = R8-R7 R2 = half*R2 X3 = R1 Y3 = R2 Z3 = R3
U1 = X1*Z2^^{2} U2 = X2*Z1^^{2} S1 = Y1*Z2^^{3} S2 = Y2*Z1^^{3} P = U2-U1 R = S2-S1 X3 = R^^{2}-(U1+U2)*P^^{2} Y3 = (R*(-2*R^^{2}+3*P^^{2}*(U1+U2))-P^^{3}*(S1+S2))/2 Z3 = Z1*Z2*P
U1 = X1*Z2^^{2} U2 = X2*Z1^^{2} S1 = Y1*Z2^^{3} S2 = Y2*Z1^^{3} P = U2-U1 R = S2-S1 X3 = R^^{2}-(U1+U2)*P^^{2} Y3 = R*(U1*P^^{2}-X3)-S1*P^^{3} Z3 = Z1*Z2*P
U1 = X1*Z2^^{2} U2 = X2*Z1^^{2} S1 = Y1*Z2^^{3} S2 = Y2*Z1^^{3} H = U2-U1 r = S2-S1 X3 = r^^{2}-H^^{3}-2*U1*H^^{2} Y3 = r*(U1*H^^{2}-X3)-S1*H^^{3} Z3 = Z1*Z2*H
XX = X1^^{2} YY = Y1^^{2} YYYY = YY^^{2} S = 2*((X1+YY)^^{2}-XX-YYYY) M = 3*XX+a T = M^^{2}-2*S X3 = T Y3 = M*(S-T)-8*YYYY Z3 = 2*Y1
XX = X1^^{2} YY = Y1^^{2} YYYY = YY^^{2} ZZ = Z1^^{2} S = 2*((X1+YY)^^{2}-XX-YYYY) M = 3*XX+a*ZZ^^{2} T = M^^{2}-2*S X3 = T Y3 = M*(S-T)-8*YYYY Z3 = (Y1+Z1)^^{2}-YY-ZZ
XX = X1^^{2} YY = Y1^^{2} ZZ = Z1^^{2} S = 4*X1*YY M = 3*XX+a*ZZ^^{2} T = M^^{2}-2*S X3 = T Y3 = M*(S-T)-8*YY^^{2} Z3 = 2*Y1*Z1
R1 = X1 R2 = Y1 R3 = Z1 R4 = R3^^{2} R3 = R2*R3 R3 = 2*R3 R4 = R4^^{2} R4 = a*R4 R5 = R1^^{2} R4 = R4+R5 R5 = 2*R5 R4 = R4+R5 R2 = 2*R2 R2 = R2^^{2} R5 = R2^^{2} R5 = half*R5 R2 = R2*R1 R1 = R4^^{2} R1 = R1-R2 R1 = R1-R2 R2 = R2-R1 R2 = R2*R4 R2 = R2-R5 X3 = R1 Y3 = R2 Z3 = R3
S = 4*X1*Y1^^{2} M = 3*X1^^{2}+a*Z1^^{4} T = M^^{2}-2*S X3 = T Y3 = M*(S-T)-8*Y1^^{4} Z3 = 2*Y1*Z1
S = 4*X1*Y1^^{2} M = 3*X1^^{2}+a*Z1^^{4} T = M^^{2}-2*S X3 = T Y3 = M*(S-T)-8*Y1^^{4} Z3 = 2*Y1*Z1
XX = X1^^{2} YY = Y1^^{2} ZZ = Z1^^{2} YYYY = YY^^{2} M = 3*XX+a*ZZ^^{2} MM = M^^{2} E = 6*((X1+YY)^^{2}-XX-YYYY)-MM EE = E^^{2} T = 16*YYYY U = (M+E)^^{2}-MM-EE-T X3 = 4*(X1*EE-4*YY*U) Y3 = 8*Y1*(U*(T-U)-E*EE) Z3 = (Z1+E)^^{2}-ZZ-EE
ZZ = Z1^^{2} YY = Y1^^{2} C = 2*YY M = 3*X1^^{2}+a*ZZ^^{2} E = 6*X1*C-M^^{2} EE = E^^{2} T = 2*C^^{2} U = M*E-T U4 = 4*U X3 = X1*EE-C*U4 Y3 = Y1*(U4*(T-U)-E*EE) Z3 = Z1*E
M = 3*X1^^{2}+a*Z1^^{4} E = 12*X1*Y1^^{2}-M^^{2} T = 8*Y1^^{4} X3 = 8*Y1^^{2}*(T-M*E)+X1*E^^{2} Y3 = Y1*(4*(M*E-T)*(2*T-M*E)-E^^{3}) Z3 = Z1*E
A = 1/Z1
AA = A^^{2}
X3 = X1*AA
Y3 = Y1*AA*A
Z3 = 1