
    ^j	                     r    d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
 d dlmZ dgZ ed      d	d       Zy)
    N)zerosasarrayeyepoly1dhstackr_)linalg)xp_capabilitiespadeT)out_of_scopec                 ,   t         j                  j                  t              f}d}t	        j
                  |t        |       t        |       } |!t        |       dz
  |z
  }|dk  rt        d      |dk  rt        d      ||z   }|t        |       dz
  kD  rt        d      | d|dz    } t        |dz   |dz   | j                  	      }t        |dz   |f| j                  	      }t        d|dz         D ]  }| d| ddd
    ||d|f<    t        |dz   |dz         D ]  }| ||z
  | ddd
    ||ddf<    t        ||f      }	t        j                   |	|       }
|
d|dz    }t"        d|
|dz   d f   }t%        |ddd
         t%        |ddd
         fS )a1  
    Return Pade approximation to a polynomial as the ratio of two polynomials.

    .. deprecated:: 1.18.0
        This function is deprecated and will be removed in SciPy 1.20.0. Use
        `mpmath.pade` instead.

    Parameters
    ----------
    an : (N,) array_like
        Taylor series coefficients.
    m : int
        The order of the returned approximating polynomial `q`.
    n : int, optional
        The order of the returned approximating polynomial `p`. By default,
        the order is ``len(an)-1-m``.

    Returns
    -------
    p, q : Polynomial class
        The Pade approximation of the polynomial defined by `an` is
        ``p(x)/q(x)``.

    Examples
    --------
    >>> import numpy as np
    >>> from scipy.interpolate import pade
    >>> e_exp = [1.0, 1.0, 1.0/2.0, 1.0/6.0, 1.0/24.0, 1.0/120.0]
    >>> p, q = pade(e_exp, 2)

    >>> e_exp.reverse()
    >>> e_poly = np.poly1d(e_exp)

    Compare ``e_poly(x)`` and the Pade approximation ``p(x)/q(x)``

    >>> e_poly(1)
    2.7166666666666668

    >>> p(1)/q(1)
    2.7179487179487181

    zT`pade` is deprecated and will be removed in SciPy 1.20.0. Use `mpmath.pade` instead.)skip_file_prefixesN   r   z.Order of q <m> must be smaller than len(an)-1.z&Order of p <n> must be greater than 0.z0Order of q+p <m+n> must be smaller than len(an).)dtypeg      ?)ospathdirname__file__warningswarnDeprecationWarningr   len
ValueErrorr   r   r   ranger   r	   solver   r   )anmn_warn_skipsmsgNAkjBkjrowCpqpqs                P/opt/ringagent/.cad-venv/lib/python3.12/site-packages/scipy/interpolate/_pade.pyr   r   
   s   X 77??8,.K$CMM#)kJ	ByGaK!Oq5MNN1uABB	AA3r719}KLL	DQqSB
ac1Q3bhh
'C
1a
)CQ!} *Tc(DbD))CH*QqS!A# ,#a%}dd++CE
,SzA	a	B
4AaCA
31Q34=A!DbD'?F1TrT7O++    )N)r   r   numpyr   r   r   r   r   r   scipyr	   scipy._lib._array_apir
   __all__r    r+   r*   <module>r1      s7     	 9 9  1(d#D, $D,r+   