def kloosterman_sum(self, arg): a, b = map(int, arg.split(',')) modulus, number = self.modulus, self.number if modulus == 1: # there is a bug in sage for modulus = 1 return r""" \( \displaystyle K(%s,%s,\chi_{1}(1,·)) = \sum_{r \in \Z/\Z} \chi_{1}(1,r) 1^{%s r + %s r^{-1}} = 1 \) """ % (a, b, a, b) chi_values_data = db.char_dir_values.lookup( "{}.{}".format(modulus, number) ) chi_valuepairs = chi_values_data['values_gens'] chi_genvalues = [int(v) for g, v in chi_valuepairs] chi = self.chi.sage_character(self.order, chi_genvalues) k = chi.kloosterman_sum_numerical(100, a, b) k = complex2str(k, 10) return r""" \( \displaystyle K(%s,%s,\chi_{%s}(%s,·)) = \sum_{r \in \Z/%s\Z} \chi_{%s}(%s,r) e\left(\frac{%s r + %s r^{-1}}{%s}\right) = %s \)""" % (a, b, modulus, number, modulus, modulus, number, a, b, modulus, k)
def gauss_sum(self, val): val = int(val) mod, num = self.modulus, self.number g = self.chi.gauss_sum_numerical(val) g = complex2str(g) x = Rational('%s/%s' % (val, mod)) n = x.numerator() n = str(n) + "r" if not n == 1 else "r" d = x.denominator() Gtex = r'\Z/%s\Z' % mod chitex = self.char2tex(mod, num, tag=False) chitexr = self.char2tex(mod, num, 'r', tag=False) deftex = r'\sum_{r\in %s} %s e\left(\frac{%s}{%s}\right)'%(Gtex,chitexr,n,d) return r"\(\displaystyle \tau_{%s}(%s) = %s = %s \)" % (val, chitex, deftex, g)
def gauss_sum(self, val): val = int(val) mod, num = self.modulus, self.number chi = self.chi.sage_character() g = chi.gauss_sum_numerical(100, val) g = complex2str(g) from sage.rings.rational import Rational x = Rational('%s/%s' % (val, mod)) n = x.numerator() n = str(n) + "r" if not n == 1 else "r" d = x.denominator() Gtex = '\Z/%s\Z' % mod chitex = self.char2tex(mod, num, tag=False) chitexr = self.char2tex(mod, num, 'r', tag=False) deftex = r'\sum_{r\in %s} %s e\left(\frac{%s}{%s}\right)'%(Gtex,chitexr,n,d) return r"\(\displaystyle \tau_{%s}(%s) = %s = %s. \)" % (val, chitex, deftex, g)
def kloosterman_sum(self, arg): a, b = map(int, arg.split(',')) modulus, number = self.modulus, self.number if modulus == 1: # there is a bug in sage for modulus = 1 return r""" \( \displaystyle K(%s,%s,\chi_{1}(1,·)) = \sum_{r \in \Z/\Z} \chi_{1}(1,r) 1^{%s r + %s r^{-1}} = 1 \) """ % (a, b, a, b) chi = self.chi.sage_character() k = chi.kloosterman_sum_numerical(100, a, b) k = complex2str(k, 10) return r""" \( \displaystyle K(%s,%s,\chi_{%s}(%s,·)) = \sum_{r \in \Z/%s\Z} \chi_{%s}(%s,r) e\left(\frac{%s r + %s r^{-1}}{%s}\right) = %s. \)""" % (a, b, modulus, number, modulus, modulus, number, a, b, modulus, k)