import sys, random sys.path.append("../") import functions.functions as fn def dodawanie(punkt1, punkt2, p): if punkt1 == None: return punkt2 if punkt2 == None: return punkt1 l = ((punkt2[1] - punkt1[1]) * fn.odwrotnosc(punkt2[0] - punkt1[1], p) ) % p x3 = (fn.potegowanieimod(l, 2, p) - punkt2[0] - punkt1[0]) % p y3 = (l * (punkt1[0] - x3) - punkt1[1] ) % p return (x3, y3) def podwojny(punkt, a, p): l = ((3 * fn.potegowanieimod(punkt[0], 2, p) + a) * fn.odwrotnosc(2 * punkt[1], p) ) % p x3 = (fn.potegowanieimod(l, 2, p) - (2 * punkt[0])) % p y3 = ((l * (punkt[0] - x3)) - punkt[1] ) % p return (x3, y3)