24 lines
506 B
Python
24 lines
506 B
Python
from util import Object
|
|
|
|
import numpy as np
|
|
|
|
CURVE_LINSPACE = np.linspace(-10, 30, num=1000)
|
|
|
|
DEFAULT_CURVE = (3, 3)
|
|
NSA_CURVE = (3, 0)
|
|
BTC_CURVE = (0, 7)
|
|
|
|
class EllipticCurve(Object):
|
|
def __init__(self, a, b):
|
|
self.a = a
|
|
self.b = b
|
|
self.xl = CURVE_LINSPACE
|
|
self.yl = self._x2y()
|
|
def _x2y(self):
|
|
r = np.empty((self.xl.size, 2))
|
|
for i, xi in enumerate(self.xl):
|
|
r[i][0] = np.sqrt((xi**3) + (self.a * xi**2) + self.b)
|
|
for i in range(self.xl.size):
|
|
r[i][1] = -r[i][0]
|
|
return r
|