Spaces Data
Minimal test - lines (81, 105)
path: .spaces[2].metrics.loc.cloc
old: 19.0
new: 20.0
path: .spaces[2].metrics.loc.sloc
old: 24.0
new: 25.0
path: .spaces[2].metrics.mi.mi_visual_studio
old: 55.672368953028176
new: 55.28563426809945
path: .spaces[2].metrics.mi.mi_sei
old: 111.026305146664
new: 110.14011844411324
path: .spaces[2].metrics.mi.mi_original
old: 95.1997509096782
new: 94.53843459845004
Code
def byte_size(number):
'''
Returns the number of bytes required to hold a specific long number.
The number of bytes is rounded up.
Usage::
>>> byte_size(1 << 1023)
128
>>> byte_size((1 << 1024) - 1)
128
>>> byte_size(1 << 1024)
129
:param number:
An unsigned integer
:returns:
The number of bytes required to hold a specific long number.
'''
quanta, mod = divmod(bit_size(number), 8)
if mod or number == 0:
quanta += 1
return quanta
#return int(math.ceil(bit_size(number) / 8.0))
Minimal test - lines (108, 128)
path: .spaces[3].metrics.mi.mi_sei
old: 98.09165007675044
new: 99.2862198393522
path: .spaces[3].metrics.loc.cloc
old: 10.0
new: 11.0
Code
def extended_gcd(a, b):
'''Returns a tuple (r, i, j) such that r = gcd(a, b) = ia + jb
'''
# r = gcd(a,b) i = multiplicitive inverse of a mod b
# or j = multiplicitive inverse of b mod a
# Neg return values for i or j are made positive mod b or a respectively
# Iterateive Version is faster and uses much less stack space
x = 0
y = 1
lx = 1
ly = 0
oa = a #Remember original a/b to remove
ob = b #negative values from return results
while b != 0:
q = a // b
(a, b) = (b, a % b)
(x, lx) = ((lx - (q * x)),x)
(y, ly) = ((ly - (q * y)),y)
if (lx < 0): lx += ob #If neg wrap modulo orignal b
if (ly < 0): ly += oa #If neg wrap modulo orignal a
return (a, lx, ly) #Return only positive values