o
    `^h                     @   s^   d Z ddlZzddlZddlmZ W n	 ey   Y nw dd Zdd Z	e
dkr-e	  dS dS )zCompute a Pade approximation for the principal branch of the
Lambert W function around 0 and compare it to various other
approximations.

    Nc                  C   s,   dd t dD } t| dd\}}||fS )Nc                 S   s   g | ]}t jt jd |dqS )r   )n)mpmathdifflambertw).0r    r   `/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/scipy/special/_precompute/lambertw.py
<listcomp>   s    z!lambertw_pade.<locals>.<listcomp>         )ranger   pade)derivspqr   r   r   lambertw_pade   s   r   c                  C   sd  t t td* t \} }| d d d |d d d } }t d|   t d|  W d    n1 s6w   Y  tdddtddd}}t||\}}|d|  }g }| D ]}|	t
t| q^t||j}tjd	d
d\}}tdd | D } tdd |D }t| |t|| }	t|	| }
|d |||
 t|tt| }t|| }|d
 ||| tdtd
| d
  } d|  | d d	  }t|| }|d |||}|j||  d t  tjd
d
d\}}|
|k }||||}tdd}|dt| d |d |j||d t  d S )N2   zp = zq = g      g      ?K   y              ?r      )nrowsncolsc                 S      g | ]}t |qS r   float)r   p0r   r   r   r	   '       zmain.<locals>.<listcomp>c                 S   r   r   r   )r   q0r   r   r   r	   (   r   r   r   )axg333333ӿg333333?g      g?r)print__doc__r   workdpsr   nplinspacemeshgridflattenappendcomplexr   arrayreshapeshapepltsubplotspolyvalabs
pcolormeshlogsqrtexpcolorbarraveltolistshowplot)r   r   xyzlambertw_stdz0figaxespade_approxpade_err
asy_approxasy_errseries_approx
series_errimr   pade_bettertr   r   r   main   sH   
rJ   __main__)r"   numpyr$   r   matplotlib.pyplotpyplotr-   ImportErrorr   rJ   __name__r   r   r   r   <module>   s    .
