if subset:
(index, outof) = subset
mat = _build_matrix(path, mincyclicity=outof)
- first = (mat.size() / outof) * index
+ first = (mat.size() // outof) * index
if index == outof or index == outof - 1:
matlimit = mat.size()
else:
- matlimit = (mat.size() / outof) * (index + 1)
+ matlimit = (mat.size() // outof) * (index + 1)
else:
first = 0
mat = _build_matrix(path)
mat = matrix.Product(item, submats)
if mat and mat.cyclicity() < mincyclicity:
mat = matrix.Cycle(
- (mincyclicity + mat.cyclicity() - 1) / mat.cyclicity(), mat
+ (mincyclicity + mat.cyclicity() - 1) // mat.cyclicity(), mat
)
return mat
else:
continue
if submat.cyclicity() < mincyclicity:
submat = matrix.Cycle(
- ((mincyclicity + submat.cyclicity() - 1) /
+ ((mincyclicity + submat.cyclicity() - 1) //
submat.cyclicity()),
submat)
submats.append(submat)
import random
import heapq
from fractions import gcd
+from functools import reduce
def lcm(a, b):
return a*b // gcd(a, b)
rsize = submats[0][0]
cycles = gcd(rsize, lsize)
- clen = (rsize * lsize) / cycles
- off = (i / clen) % cycles
+ clen = (rsize * lsize) // cycles
+ off = (i // clen) % cycles
def combine(r, s=frozenset()):
if isinstance(r, frozenset):
self._pseudo_size = lcml((i.size() for i in _submats)) * len(_submats)
self._size = sum((i.size() for i in _submats))
self._submats = [
- ((i, self._pseudo_size / s.size()), s) for (i, s) in \
+ ((i, self._pseudo_size // s.size()), s) for (i, s) in \
zip(range(len(_submats)), _submats)
]
- def sm_to_pmsl(((offset, multiple), submat)):
+ def sm_to_pmsl(offset_multiple_submat):
"""
- submat tuple to pseudo minscanlen
+ offset_multiple_submat tuple to pseudo minscanlen
"""
+ ((offset, multiple), submat) = offset_multiple_submat
+
return submat.minscanlen() * multiple
def index_to_pindex_generator(submats):
self._minscanlen = self.pseudo_index_to_index(
max(map(sm_to_pmsl, self._submats)))
- def pi_to_sis(self, pi, (offset, multiple)):
+ def pi_to_sis(self, pi, offset_multiple):
"""
+ offset_multiple tuple of offset and multiple
+
max(i) s.t. offset + i*multiple <= pi
"""
+ (offset, multiple) = offset_multiple
if pi < offset:
return -1
- return (pi - offset) / multiple
+ return (pi - offset) // multiple
def pseudo_index_to_index(self, pi):
"""