| 123456789101112131415161718192021222324252627282930313233 |
- q = 61
- K = GF(q)
- E = EllipticCurve(K, [8, 1])
- P = E(57,24)
- Q = E(25,37)
- R = E(17,32)
- S = E(42,35)
- inf = E(0)
- D1 = ((1, P), (1, Q), (1, R))
- D2 = ((4, inf), (-1, S))
- # D1 ~ D2 <=> D1 = D2 + div(f)
- # sum(div(f)) = O, deg(div(f)) = 0
- def dsum(D):
- P = inf
- for order, pnt in D:
- P += order * pnt
- return P
- def degree(D):
- return sum(order for order, _ in D)
- def neg(D):
- return tuple((-order, pnt) for order, pnt in D)
- # This means D1 ~ D2 because D1 - D2 ∈ Pic(E)
- D = D1 + neg(D2)
- assert degree(D) == 0
- assert dsum(D) == inf
|