При вычислении композиции можно избавиться от вычисления инверсии, если в качестве координат использовать рациональные числа, производя вычисления отдельно с числителем и знаменателем. Наиболее выгодным оказалось взвешенное проективное представление координат:
Формулы вычисления x3 и y3:
Алгоритм:
ВХОД: P1 = (X1,Y1,Z1), P2 = (X2,Y2,Z2), P1, P2 ≠ O, P1 ≠ ±P2
ВЫХОД: P3 = (X3,Y3,Z3) = P1 + P2
λ1 = X1Z22
λ2 = X2Z12
λ3 = λ2 – λ1
λ4 = Y1Z23
λ5 = Y2Z13
λ6 = λ5 – λ4
λ7 = λ1 + λ2
λ8 = λ4 + λ5
Z3 = Z1 Z2 λ3
X3 = λ62 – λ7λ32
λ9 = λ7λ32 – 2X3
Y3 = (λ9λ6 – λ8λ33) / 2
Пример.
P1 = (5,1,1), P2 = (4,6,1)
λ1 = 5 · 1 = 5,
λ2 = 4 · 1 = 4,
λ3 = 4 – 5 = 6,
λ4 = 1 · 1 = 1,
λ5 = 6 · 1 = 6,
λ6 = 6 – 1 = 5,
λ7 = 5 + 4 = 2,
λ8 = 1 + 6 = 0,
Z3 = 1 · 1 · 6 = 6,
X3 = 52 – 2 · 62 = 2,
λ9 = 2 · 62 – 2 · 2 = 2 – 4 = 5,
Y3 = (5 · 5 – 0 · 63) / 2 = 25 / 2 = (25+7) / 2 = 16 = 2.
P3 = (2,2,6) = (2/62, 2/63) = (2·6-2, 2·6-3) = (2·1, 2·6) = (2, 5).
Удвоение в проективном представлении
Формулы вычисления x3 и y3:
Алгоритм:
ВХОД: P1 = (X1,Y1,Z1), P1≠ O
ВЫХОД: P3 = (X3,Y3,Z3) = [2] P1
λ1 = 3X12 + aZ14
λ2 = 4X1Y12
Z3 = 2Y1Z1
X3 = λ12 - 2λ2
|
|
λ3 = 8Y14
Y3 = λ1(λ2 – X3) – λ3