Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 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)