예제 #1
0
    def _compute(self):
        WebHecke._compute(self)
        self.number = self.label2number(self.numlabel)
        assert len(self.number) == self.G.ngens()
        self.chi = HeckeChar(self.H, self.number)

        self.zetaorder = 0  # FIXME H.zeta_order()
예제 #2
0
    def _compute(self):
        WebHecke._compute(self) 
        self.number = self.label2number(self.numlabel)
        assert len(self.number) == self.G.ngens()
        self.chi = HeckeChar(self.H, self.number)

        self.zetaorder = 0 # FIXME H.zeta_order()
예제 #3
0
class WebHeckeCharacter(WebChar, WebHecke):

    def _compute(self):
        WebHecke._compute(self) 
        self.number = self.label2number(self.numlabel)
        assert len(self.number) == self.G.ngens()
        self.chi = HeckeChar(self.H, self.number)

        self.zetaorder = 0 # FIXME H.zeta_order()

    @property
    def codeinit(self):
        kpol = self.k.polynomial()
        return {
                'sage':  ['k.<a> = NumberField(%s)'%kpol,
                          'm = k.ideal(%s)'%self.modulus,
                          'G = RayClassGroup(k,m)',
                          'H = G.dual_group()',
                          'chi = H(%s)'%self.number],
                'pari':  ['k=bnfinit(%s)'%kpol,
                           'g=bnrinit(k,m,1)',
                           'chi = %s'%self.number]
                }

    @property
    def title(self):
      return r"Hecke Character: %s modulo %s" % (self.texname, self.modulus)

    @property
    def codecond(self):
        return {
                'sage': 'chi.conductor()',
                'pari': 'bnrconductorofchar(G,chi)'
                }

    @property
    def inducing(self):
        #return lmfdb_hecke2tex(self.conductor(),self.indlabel())
        return None

    @property
    def indlabel(self):
        #return chi.primitive_character().number()
        return None

    @property
    def genvalues(self):
        logvals = self.chi.logvalues_on_gens()
        return self.textuple( map(self.texlogvalue, logvals))

    @property
    def galoisorbit(self):
        prim = self.isprimitive
        return  [ self._char_desc(c, prim=prim) for c in self.chi.galois_orbit() ]

    def value(self, val):
        chartex = self.char2tex(self.chi,val=val,tag=False)
        val = self.label2group(val)
        val = self.texlogvalue(self.chi.logvalue(val))
        return '\(%s=%s\)'%(chartex,val)

    def char4url(self, chi):
        # FIXME: call url_character and only return (label, url)
        if chi is None:
            return ('', {})
        label = self.char2tex(chi)
        args = {'type': 'Hecke',
                'number_field': self.nflabel,
                'modulus': self.ideal2label(chi.modulus()),
                'number': self.number2label(chi.exponents())}
        return (label, args)

    @property
    def previous(self):
        psi = self.chi.prev_character()
        return self.char4url(psi)

    @property
    def next(self):
        psi = self.chi.next_character()
        return self.char4url(psi)
예제 #4
0
class WebHeckeCharacter(WebChar, WebHecke):
    def _compute(self):
        WebHecke._compute(self)
        self.number = self.label2number(self.numlabel)
        assert len(self.number) == self.G.ngens()
        self.chi = HeckeChar(self.H, self.number)

        self.zetaorder = 0  # FIXME H.zeta_order()

    @property
    def codeinit(self):
        kpol = self.k.polynomial()
        return {
            'sage': [
                'k.<a> = NumberField(%s)' % kpol,
                'm = k.ideal(%s)' % self.modulus, 'G = RayClassGroup(k,m)',
                'H = G.dual_group()',
                'chi = H(%s)' % self.number
            ],
            'pari': [
                'k=bnfinit(%s)' % kpol, 'g=bnrinit(k,m,1)',
                'chi = %s' % self.number
            ]
        }

    @property
    def title(self):
        return r"Hecke Character: %s modulo %s" % (self.texname, self.modulus)

    @property
    def codecond(self):
        return {'sage': 'chi.conductor()', 'pari': 'bnrconductorofchar(G,chi)'}

    @property
    def inducing(self):
        #return lmfdb_hecke2tex(self.conductor(),self.indlabel())
        return None

    @property
    def indlabel(self):
        #return chi.primitive_character().number()
        return None

    @property
    def genvalues(self):
        logvals = self.chi.logvalues_on_gens()
        return self.textuple(map(self.texlogvalue, logvals))

    @property
    def galoisorbit(self):
        prim = self.isprimitive
        return [self._char_desc(c, prim=prim) for c in self.chi.galois_orbit()]

    def value(self, val):
        chartex = self.char2tex(self.chi, val=val, tag=False)
        val = self.label2group(val)
        val = self.texlogvalue(self.chi.logvalue(val))
        return '\(%s=%s\)' % (chartex, val)

    def char4url(self, chi):
        # FIXME: call url_character and only return (label, url)
        if chi is None:
            return ('', {})
        label = self.char2tex(chi)
        args = {
            'type': 'Hecke',
            'number_field': self.nflabel,
            'modulus': self.ideal2label(chi.modulus()),
            'number': self.number2label(chi.exponents())
        }
        return (label, args)

    @property
    def previous(self):
        psi = self.chi.prev_character()
        return self.char4url(psi)

    @property
    def next(self):
        psi = self.chi.next_character()
        return self.char4url(psi)