def index_mode(self): index_mode = [] for i, fi in zip(self, self.findices): if q_monoaffine(i, fi, self.findices): index_mode.append(AFFINE) else: dims = {i for i in i.free_symbols if isinstance(i, Dimension)} try: # There's still hope it's regular if a DerivedDimension is used candidate = dims.pop() if candidate.root is fi and q_monoaffine(i, candidate, self.findices): index_mode.append(AFFINE) continue except (KeyError, AttributeError): pass index_mode.append(IRREGULAR) return tuple(index_mode)
def index_mode(self): index_mode = [] for i, fi in zip(self, self.findices): if q_monoaffine(i, fi, self.findices): index_mode.append(AFFINE) else: dims = {i for i in i.free_symbols if isinstance(i, Dimension)} try: # There's still hope it's regular if a DerivedDimension is used candidate = dims.pop() if candidate.root == fi and q_monoaffine(i, candidate, self.findices): index_mode.append(AFFINE) continue except (KeyError, AttributeError): pass index_mode.append(IRREGULAR) return tuple(index_mode)
def aindices(self): aindices = [] for i, fi in zip(self, self.findices): if q_monoaffine(i, fi, self.findices): aindices.append(fi) else: dims = {i for i in i.free_symbols if isinstance(i, Dimension)} aindices.append(dims.pop() if len(dims) == 1 else None) return EnrichedTuple(*aindices, getters=self.findices)
def aindices(self): aindices = [] for i, fi in zip(self, self.findices): if q_monoaffine(i, fi, self.findices): aindices.append(fi) else: dims = {i for i in i.free_symbols if isinstance(i, Dimension)} aindices.append(dims.pop() if len(dims) == 1 else None) return EnrichedTuple(*aindices, getters=self.findices)