I have been working on a program that Calculates the third divisor, D3, on a HyperElliptic curve given D1 and D2 in a FINITE FIELD. I have taken many approaches and have decided on using Cantors Algorithm to do so.
In order to use Cantors Algorithm, you need two divisors written in Mumford Representation, D[u(x), v(x)]
Example: Mumford representation takes the x-values of two points and uses them as roots for u(x).
u(x) for P1(2, 5) and P2(3, 6) would be written as x^2 - 5x + 6
Then, using a system of equations, you calculate v(x) as the solution to y1 = ax1 + b = y2 = ax2 + b where you plug in the x and y values of P1 and P2 to create two equations. Doing so, you get
5 = a2 + b
6 = a3 + b
Setting these equal to each other will solve for the 'a' and 'b' values for v(x)
Now that anyone who stumbles upon this page can generally understand Mumfords form, I will get into my main problem.
Using the Example problem as a reference under the Cantors algorithm section on the Imaginary HyperElliptic Curve wiki page, I do not know how to properly calculate 'e1', 'e2', 'c1', or 'c2'.
They use this Example Equation and give the first and second divisor in Mumford representation. I am able to calculate d1 = gcd(u1, u2) but do not understand how they go from
x - 1 = e1u1 + e2u2
to
e1 = 1/2, e2 = -1/2
Does anyone have any idea how to properly calculate these values? I read into the Diophantine equation but have no idea how to implement something like this in python. I am using Sympy to do the rest of my calculations.
The most confusing part about this whole thing is figuring out how to do this in a FINITE FIELD
I will also link this work by Peter Birkner. I am specifically looking at pages 11 and 12. Any help is greatly appreciated!