B
    î&]\2  ã               @   sT   d dl mZmZmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZ dgZddd„ZdS )é    )ÚdivisionÚprint_functionÚabsolute_import)ÚzerosÚasarrayÚeyeÚpoly1dÚhstackÚr_)ÚlinalgÚpadeNc             C   sx  t | ƒ} |dkr0t| ƒd | }|dk r0tdƒ‚|dk r@tdƒ‚|| }|t| ƒd kr`tdƒ‚| d|d … } t|d |d ƒ}t|d |fdƒ}x:td|d ƒD ](}| d|… ddd…  ||d|…f< q¤W xBt|d |d ƒD ],}| || |… ddd…  ||dd…f< qäW t||fƒ}t || ¡}|d|d … }	t	d	||d d… f }
t
|	ddd… ƒt
|
ddd… ƒfS )
a‘  
    Return Pade approximation to a polynomial as the ratio of two polynomials.

    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)-m``.
    
    Returns
    -------
    p, q : Polynomial class
        The Pade approximation of the polynomial defined by `an` is
        ``p(x)/q(x)``.

    Examples
    --------
    >>> 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

    Né   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).Údéÿÿÿÿg      ð?)r   ÚlenÚ
ValueErrorr   r   Úranger	   r   Zsolver
   r   )ZanÚmÚnÚNZAkjZBkjÚrowÚCZpqÚpÚq© r   ú6lib/python3.7/site-packages/scipy/interpolate/_pade.pyr      s,    &(,)N)Z
__future__r   r   r   Znumpyr   r   r   r   r	   r
   Zscipyr   Ú__all__r   r   r   r   r   Ú<module>   s    