Exemple #1
0
def oneEpsAsDeltas(eps, **tempOverride):
    '''Takes an instance of Eps and rewrites it as Deltas'''
    dim, indexRange = delta.getTempDimAndIndexRange(**tempOverride)
    if not isinstance(eps,Eps):
        raise TypeError('Error: input must be an Eps(*indecis)')
    if not len(eps.index)==dim:
        raise TypeError('Error: Eps must have dim number of indices')
    termList=[]
    for perm in permute_all(eps.index):
        factorList=[ perm['parity'] ]
        for (pos,index) in enumerate(perm['perm']):
            factorList.append( delta.Delta(pos+1,index) )
        termList.append(sympy.Mul(*factorList))  
    return sympy.Add(*termList)
Exemple #2
0
def simplify_OneEps(eps, evalLevel=2, **tempOverride):
    '''Takes an instance of Eps and tries to simplify. Returns 0 if any two indecis are equal. Rewrite eps as Deltas if the number of loose idecis (not in indexRange) of eps is equal to or less than evalLevel.'''
    indexRange = delta.getTempDimAndIndexRange(**tempOverride)[1]
    if not isinstance(eps,Eps):
        raise TypeError('Error: input must be an Eps(*indecis)')
    ints = 0
    for (pos,ind) in enumerate(eps.index):
        if ind in eps.index[ind+1:]:
            return 0
        if ind in indexRange:
            if ind>len(eps.index) or ind<1:
                ints += 1
    if len(eps.index) - ints > evalLevel:
        return eps
    return delta.contractDeltas(epsAsDeltas(eps, **tempOverride),
                                **tempOverride)