示例#1
0
def str_to_CBF(s):
    # in sage 8.2 or earlier this is equivalent to CBF(s)
    s = str(s) # to convert from unicode
    try:
        return CBF(s)
    except TypeError:
        sign = 1
        s = s.lstrip('+')
        if '+' in s:
            a, b = s.rsplit('+', 1)
        elif '-' in s:
            a, b = s.rsplit('-',1)
            sign = -1
        else:
            a = ''
            b = s
        a = a.lstrip(' ')
        b = b.lstrip(' ')
        if 'I' in a:
            b, a = a, b
        assert 'I' in b or b == ''
        if b == 'I':
            b = '1'
        else:
            b = b.rstrip(' ').rstrip('I').rstrip('*')

        res = CBF(0)
        if a:
            res += CBF(a)
        if b:
            res  +=  sign * CBF(b)* CBF.gens()[0]
        return res
示例#2
0
 def _get_alpha(self, m, p, i):
     theta = CBF(self.cc_data[m]['angles'][p])
     unit = (2 * theta).exppii()
     if i == 0:
         res =  unit
     else:
         # it is very likely that the real or imag part are a half integer
         # as it returns a CDF, we need to convert it to CBF again
         chival = CBF(round_CBF_to_half_int(CBF(self.character_values[p][(m-1) // self.rel_dim][1])))
         res =  chival / unit
     return round_CBF_to_half_int(res)
示例#3
0
文件: utilities.py 项目: LMFDB/lmfdb
def str_to_CBF(s):
    # in sage 8.2 or earlier this is equivalent to CBF(s)
    s = str(s) # to convert from unicode
    try:
        return CBF(s)
    except TypeError:
        sign = 1
        s = s.lstrip('+')
        if '+' in s:
            a, b = s.rsplit('+', 1)
        elif '-' in s:
            a, b = s.rsplit('-',1)
            sign = -1
        else:
            a = ''
            b = s
        a = a.lstrip(' ')
        b = b.lstrip(' ')
        if 'I' in a:
            b, a = a, b
        assert 'I' in b or b == ''
        if b == 'I':
            b = '1'
        else:
            b = b.rstrip(' ').rstrip('I').rstrip('*')
        
        res = CBF(0)
        if a:
            res += CBF(a)
        if b:
            res  +=  sign * CBF(b)* CBF.gens()[0]
        return res
示例#4
0
def str_to_CBF(s):
    # in sage 8.2 or earlier this is equivalent to CBF(s)
    s = str(s)  # to convert from unicode
    try:
        return CBF(s)
    except TypeError:
        # Need to deal with scientific notation
        # Replace e+ and e- with placeholders so that we can split on + and -
        s = s.replace("e+", "P").replace("E+",
                                         "P").replace("e-",
                                                      "M").replace("E-", "M")
        sign = 1
        s = s.lstrip('+')
        if '+' in s:
            a, b = s.rsplit('+', 1)
        elif '-' in s:
            a, b = s.rsplit('-', 1)
            sign = -1
        else:
            a = ''
            b = s
        a = a.lstrip(' ')
        b = b.lstrip(' ')
        if 'I' in a:
            b, a = a, b
        assert 'I' in b or b == ''
        if b == 'I':
            b = '1'
        else:
            b = b.rstrip().rstrip('I').rstrip('*')
        a = a.replace("M", "e-").replace("P", "e+")
        b = b.replace("M", "e-").replace("P", "e+")

        res = CBF(0)
        if a:
            res += CBF(a)
        if b:
            res += sign * CBF(b) * CBF.gens()[0]
        return res