INNER CODE UNIT · Python
getTop
herumi/mcl · misc/mul-approx.py:67
def getTop(self, x):
"""
return (x0, x1) such that x = x0 * 2**(a-d) + x1 where a = x.bit_length()
"""
if x < self.p:
return (0, x)
a = x.bit_length()
t = 1<<(a-self.d)
return divmod(x, t)
def quot(self, x):
(x0, x1) = self.getTop(x)
a = x.bit_length()
s= 2*self.d -(a - self.l + 1)
return (x0 * self.p0) >> s
def check(self, x):
(x0, x1) = self.getTop(x)