def taylor_series(self, s, k=6, var='z'): r""" Return the first `k` terms of the Taylor series expansion of the `L`-series about `s`. This is returned as a formal power series in ``var``. INPUT: - ``s`` -- complex number; point about which to expand - ``k`` -- optional integer (default: 6), series is `O(``var``^k)` - ``var`` -- optional string (default: 'z'), variable of power series EXAMPLES:: sage: from sage.lfunctions.pari import lfun_number_field, LFunction sage: lf = lfun_number_field(QQ) sage: L = LFunction(lf) sage: L.taylor_series(2, 3) 1.64493406684823 - 0.937548254315844*z + 0.994640117149451*z^2 + O(z^3) sage: E = EllipticCurve('37a') sage: L = E.lseries().dokchitser(algorithm="pari") sage: L.taylor_series(1) 0.000000000000000 + 0.305999773834052*z + 0.186547797268162*z^2 - 0.136791463097188*z^3 + 0.0161066468496401*z^4 + 0.0185955175398802*z^5 + O(z^6) We compute a Taylor series where each coefficient is to high precision:: sage: E = EllipticCurve('389a') sage: L = E.lseries().dokchitser(200,algorithm="pari") sage: L.taylor_series(1,3) 2...e-63 + (...e-63)*z + 0.75931650028842677023019260789472201907809751649492435158581*z^2 + O(z^3) Check that :trac:`25402` is fixed:: sage: L = EllipticCurve("24a1").modular_form().lseries() sage: L.taylor_series(-1, 3) 0.000000000000000 - 0.702565506265199*z + 0.638929001045535*z^2 + O(z^3) """ pt = pari.Ser([s, 1], d=k) # s + x + O(x^k) B = PowerSeriesRing(self._CC, var) return B(pari.lfun(self._L, pt, precision=self.prec))
def derivative(self, s, D=1): """ Return the derivative of the L-function at point s and order D. INPUT: - ``s`` -- complex number - ``D`` -- optional integer (default 1) EXAMPLES:: sage: from sage.lfunctions.pari import lfun_number_field, LFunction sage: L = LFunction(lfun_number_field(QQ)) sage: L.derivative(2) -0.937548254315844 """ s = self._CCin(s) R = self._CC return R(pari.lfun(self._L, s, D, precision=self.prec))
def __call__(self, s): r""" Return the value of the L-function at point ``s``. INPUT: - ``s`` -- complex number .. NOTE:: Evaluation of the function takes a long time, so each evaluation is cached. Call :meth:`_clear_value_cache` to clear the evaluation cache. EXAMPLES:: sage: E = EllipticCurve('5077a') sage: L = E.lseries().dokchitser(100, algorithm="pari") sage: L(1) 0.00000000000000000000000000000 sage: L(1+I) -1.3085436607849493358323930438 + 0.81298000036784359634835412129*I """ s = self._CC(s) try: return self.__values[s] except AttributeError: self.__values = {} except KeyError: pass try: value = self._CC(pari.lfun(self._L, s, precision=self.prec)) except NameError: raise ArithmeticError('pole here') else: return value