Exemplo n.º 1
0
def info_from_db_orbit(orbit):
    mod = orbit['modulus']
    conductor = orbit['conductor']
    orbit_index = orbit['orbit_index']
    orbit_letter = cremona_letter_code(orbit_index - 1)
    orbit_label = "{}.{}".format(mod, orbit_letter)
    order = orbit['order']
    is_odd = parity_string(orbit['parity'])
    is_prim = _is_primitive(orbit['is_primitive'])
    results = []
    for num in orbit['galois_orbit']:
        results.append(
            (mod, num, conductor, orbit_label, order, is_odd, is_prim,
             WebDirichlet.char2tex(mod, num)))
    return results
Exemplo n.º 2
0
    def __init__(self, query):
        self.modulus = query.get('modulus')
        self.conductor = query.get('conductor')
        self.order = query.get('order')
        self.parity = query.get('parity')
        if self.parity in ["Odd","odd"]:
            self.parity = parity_string(-1)
        if self.parity in ["Even","even"]:
            self.parity = parity_string(1)
        self.limit = parse_limit(query.get('limit'))
        if self.parity and not self.parity in [parity_string(-1),parity_string(1)]:
            flash_error("%s is not a valid value for parity.  It must be '%s' or '%s'", self.parity, parity_string(-1), parity_string(1))
            raise ValueError('parity')
        self.primitive = query.get('primitive')
        if self.primitive in ["Yes","yes"]:
            self.primitive = bool_string(True)
        if self.primitive in ["No","no"]:
            self.primitive = bool_string(False)
        if self.primitive and not self.primitive in [bool_string(True),bool_string(False)]:
            flash_error("%s is not a valid value for primitive.  It must be %s or %s", self.primitive, bool_string(True), bool_string(False))
            raise ValueError('primitive')
        self.mmin, self.mmax = parse_interval(self.modulus,'modulus') if self.modulus else (1, 9999)
        if self.mmax > 9999:
            flash_error("Searching is limited to characters of modulus less than $10^4$")
            raise ValueError('modulus')
        if self.order and self.mmin > 999:
            flash_error("For order searching the minimum modulus needs to be less than $10^3$")
            raise ValueError('modulus')

        self.cmin, self.cmax = parse_interval(self.conductor, 'conductor') if self.conductor else (1, self.mmax)
        self.omin, self.omax = parse_interval(self.order, 'order') if self.order else (1, self.cmax)
        self.cmax = min(self.cmax,self.mmax)
        self.omax = min(self.omax,self.cmax)
        if self.primitive == bool_string(True):
            self.cmin = max([self.cmin,self.mmin])
        self.cmin += 1 if self.cmin%4 == 2 else 0
        self.cmax -= 1 if self.cmax%4 == 2 else 0
        if self.primitive == bool_string(True):
            self.mmin = max([self.cmin,self.mmin])
            self.mmax = min([self.cmax,self.mmax])
            self.cmin,self.cmax = self.mmin,self.mmax
        if self.parity == parity_string(-1):
            self.omin += 1 if self.omin%2 else 0
            self.omax -= 1 if self.omax%2 else 0
        self.mmin = max(self.mmin,self.cmin,self.omin)

        if self.parity:
            self.is_odd = True if self.parity == parity_string(-1) else False
        if self.primitive:
            self.is_primitive = True if self.primitive == bool_string(True) else False

        self.start = int(query.get('start', '0'))
Exemplo n.º 3
0
 def test_even_odd(self):
     W = self.tc.get('/Character/Dirichlet/?modulus=35')
     assert '>%s</t' % (parity_string(1)) in W.get_data(as_text=True)
     assert '>%s</t' % (parity_string(-1)) in W.get_data(as_text=True)
Exemplo n.º 4
0
 def test_dirichletchar99999999999999999lfunc(self):
     """ Check Dirichlet character with very large modulus"""
     W = self.tc.get('/Character/Dirichlet/99999999999999999999/2')
     assert parity_string(-1) in W.get_data(
         as_text=True) and '536870912' in W.get_data(as_text=True)
     assert '/SatoTateGroup/0.1.3748806900' in W.get_data(as_text=True)