code: def pade(ctx, a, L, M):
      r"""
      Computes a Pade approximation of degree `(L, M)` to a function.
      Given at least `L+M+1` Taylor coefficients `a` approximating
      a function `A(x)`, :func:`~mpmath.pade` returns coefficients of
      polynomials `P, Q` satisfying
  
      .. math ::
  
          P = \sum_{k=0}^L p_k x^k
  
          Q = \sum_{k=0}^M q_k x^k
  
          Q_0 = 1
  
          A(x) Q(x) = P(x) + O(x^{L+M+1})
  
      `P(x)/Q(x)` can provide a good approximation to an analytic function
      beyond the radius of convergence of its Taylor series (example
      from G.A. Baker 'Essentials of Pade Approximants' Academic Press,
      Ch.1A)::
  
          >>> from mpmath import *
          >>> mp.dps = 15; mp.pretty = True
          >>> one = mpf(1)
          >>> def f(x):
          ...     return sqrt((one + 2*x)/(one + x))
          ...
          >>> a = taylor(f, 0, 6)
          >>> p, q = pade(a, 3, 3)
          >>> x = 10
          >>> polyval(p[::-1], x)/polyval(q[::-1], x)
          1.38169105566806
          >>> f(x)
          1.38169855941551
  
      """
      # To determine L+1 coefficients of P and M coefficients of Q
      # L+M+1 coefficients of A must be provided
      if len(a) < L + M + 1:
          raise ValueError("L+M+1 Coefficients should be provided")
  
      if M == 0:
          if L == 0:
              return [ctx.one], [ctx.one]
          else:
              return a[: L + 1], [ctx.one]
  
      # Solve first
      # a[L]*q[1] + ... + a[L-M+1]*q[M] = -a[L+1]
      # ...
      # a[L+M-1]*q[1] + ... + a[L]*q[M] = -a[L+M]
      A = ctx.matrix(M)
      for j in range(M):
          for i in range(min(M, L + j + 1)):
              A[j, i] = a[L + j - i]
      v = -ctx.matrix(a[(L + 1) : (L + M + 1)])
      x = ctx.lu_solve(A, v)
      q = [ctx.one] + list(x)
      # compute p
      p = [0] * (L + 1)
      for i in range(L + 1):
          s = a[i]
          for j in range(1, min(M, i) + 1):
              s += q[j] * a[i - j]
          p[i] = s
      return p, q
  
file_path: catboost/contrib/python/mpmath/py3/mpmath/calculus/differentiation.py
imports: from ..libmp.backend import xrange
  from .calculus import defun
label_desc: Use image node_id 13 for calling a global function with example usage: pade(ctx, a, L, M) and returns: p,  q, list,  list, a,  list