o
    iX<                     @   s*  d dl mZ d dlZd dlmZmZmZ d dlZd dl	Z	d dl
mZmZmZ deejj Zejdddd	Zejd
d dddZeeddd  d gegZejdeegejdejejejejgdd Zejdeegejdejejejgdd Z G dd dZ!G dd dZ"dS )    )	factorialN)assert_allcloseassert_equalassert_array_less)AAAFloaterHormannInterpolatorBarycentricInterpolatorg     @     numi
   i  )baser   methoddtypec                 C   s.  t |jd d }| tu r|d9 }t jd}t jdd|d}| |t |}|jdddd	|}t
||t ||d ||j|ksHJ | tu rf|jj|ksTJ |jj|ks\J |jj|jjksfJ |jj|ksnJ | jt |d	ks{J | jt |d	ksJ | jt |d	ksJ d S )
Ng      ?d   l   dwr	   r
   r   sizertol              ?)npfinfoepsr   randomdefault_rnglinspacesinuniformastyper   r   r   support_pointssupport_valueserrorsrealweightspolesresult_typeresiduesroots)r   r   r   rngzrZz2 r.   d/home/kim/smarthome/.venv/lib/python3.10/site-packages/scipy/interpolate/tests/test_bary_rational.pytest_dtype_preservation(   s"   r0   c                 C   s   t jd|d}| ||}|jjt |dksJ | tu r@|jjt |dks(J |jjt |dks4J |jjt |dks@J |	 jt |dksMJ |
 jt |dksZJ | jt |dksgJ ||jt |dkstJ d S )Nr   r         ?r   )r   aranger&   r   r(   r   r"   r#   r$   r'   r)   r*   )r   r   r,   r-   r.   r.   r/   test_integer_promotionA   s   
r3   c                   @   s:  e Zd Zdd Zejjdd Zdd Zdd Z	d	d
 Z
dd Zdd Zdd Zdd Zdd Zejddd ddfdd ddfdd ddfdd d dfd!d d"dfd#d ddfd$d d%dfgd&d' Zd(d) Zejd*d+d d,d d-d d.d d/d d0d d1d d2d d3d g	d4d5 Zd6d7 Zejjd8d9 Zd:S );TestAAAc                 C   sF  t jtdd tdgddg W d    n1 sw   Y  t jtdd tdgdggdgdgg W d    n1 s>w   Y  t jtdd ttjgdg W d    n1 s]w   Y  t t tdgdgdd W d    n1 s{w   Y  t jtd	d tdgdgd
d W d    d S 1 sw   Y  d S )Nz	same sizematchr   r
   z1-Dfiniter1   	max_termsZgreaterr	   )pytestraises
ValueErrorr   r   inf	TypeErrorselfr.   r.   r/   test_input_validationS   s   "zTestAAA.test_input_validationc                 C   sH   t jtdd ttttdd W d    d S 1 sw   Y  d S )Nz
AAA failedr5   r
   r8   )r:   warnsRuntimeWarningr   UNIT_INTERVALr   expr?   r.   r.   r/   test_convergence_error_   s   "zTestAAA.test_convergence_errorc                 C   sv   t t}tt|}t|t|td t|t jt j t |t j	s&J |j
j}tt|dd}|j
j|k s9J d S )NatolgMbP?r   )r   rE   rD   r   r   TOLr   nanisfiniter=   r"   r   )r@   fr-   m1r.   r.   r/   test_expf   s   

zTestAAA.test_expc                 C   s   t t jt }tt|}t|t|dt dd tt t |	 ddd tt t |
 d dtd t t | dksGJ d S )	Nr   gz]ʂ>rH   r   r   gLa㧝=rG         ?vIh%<=)r   tanpirD   r   r   rI   minabsr*   r'   r)   r@   rL   r-   r.   r.   r/   test_tanr   s   
" zTestAAA.test_tanc                 C   sp  t ddg}t ddg}t||dd}t|||td t| d t| d t| d	 t|j	| t|j
| t|jd
d
g t|jddg t g d}t g d}t||dd}t|||td tt | t ddg tt | t ddg tt | t ddg t|j	| t|j
| t|jg d t|jg d d S )Nr   r
      rQ   r   rG   rP   g      ?gUUUUUU?g;f?)r   r
   rX   )r
   r   r   gȢ<?gÙt?gfMvg7п)3Ey?rY   rY   )r
   r
   r   )r   arrayr   r   rI   r'   r)   r*   r   r"   r#   r&   r$   sort)r@   r,   rL   r-   r.   r.   r/   test_short_cases|   s4   zTestAAA.test_short_casesc                 C   s   t dd}t |d }t||}t|dd | t j}t|d| t j}t|dd|d  t|ddd |d  d S )	Ng333333?g      ?      ?      ?rX   i7  g      ,y        ?gffffff?)r   r   rE   r   r!   
complex128r   )r@   r,   rL   r1r2Zr3r.   r.   r/   test_scale_invariance   s   
zTestAAA.test_scale_invariancec                 C   sT   t jd}|dd|d  }dd }t|||}t|d|dtd d S )Nl   (pg98B i'  y              @c                 S   s   t d|  d| d   S )N   r
   rX   )r   logr,   r.   r.   r/   rL         z TestAAA.test_log_func.<locals>.fr   rG   )r   r   r   Zstandard_normalr   r   rI   )r@   r+   r,   rL   r-   r.   r.   r/   test_log_func   s
   zTestAAA.test_log_funcc                 C   s<   t dd}t|tj|}t|dtjddd d S )Nr	   r
   g)\(?V瞯<rG   )r   r   r   scipyspecialgammar   r@   r,   r-   r.   r.   r/   test_infinite_data   s   zTestAAA.test_infinite_datac                 C   sp   t dd}t jdd t || }W d    n1 sw   Y  t||}t|dt dd dd d S )Nr      ignore)invalidrX   rg   rG   )r   r   errstater   r   r   )r@   xrL   r-   r.   r.   r/   test_nan   s   
 zTestAAA.test_nanc                 C   s   t jdddd}t|t || }t t | dk }t| | ddd t|d	t	j
| }t t| d
 dk }t| | ddd d S )Ng1ZdrX   i  r   :0yE>r
   rg   rG   r]   r	   y            )r   r   r   rE   ZflatnonzerorU   r'   r   r)   rh   ri   rj   )r@   rq   r-   iir.   r.   r/   test_residues   s   zTestAAA.test_residueszfunc,atol,rtolc                 C   s   t | d d S )NrP   y        {Gz?r   rU   rq   r.   r.   r/   <lambda>       zTestAAA.<lambda>g-a=gHz>c                 C      t dd|   S )Nr
   g?)r   r   rw   r.   r.   r/   rx      ry   vIh%L=c                 C   s   t d| d  S )Nr	   rX   r   rE   rw   r.   r.   r/   rx      ry   gG@
X=r   c                 C   s   t d| d  S )NirX   r|   rw   r.   r.   r/   rx      ry   gvIh%l=c                 C   rz   )Ng333333?r|   rw   r.   r.   r/   rx      ry   +=c                 C   s   ddt d| d    S )Nr
   r   rP   r|   rw   r.   r.   r/   rx      s    c                 C   s   t | d S )Ngffffff?rv   rw   r.   r.   r/   rx      s    ư>c                 C   sV   t jdd |t}W d    n1 sw   Y  ttt|tt|||d d S )Nrn   )dividerO   )r   rp   PTSr   r   rD   )r@   funcrH   r   rL   r.   r.   r/   test_basic_functions   s   	

zTestAAA.test_basic_functionsc                 C   s   dd }t t|t}tt| |  ddd dd }t t|t}t|  ddd t tt	dtj
 t }ttt| d	 d
dd dd }t t|t}t| d | d  ddd d S )Nc                 S   s    | d | d  | d | d   S )Nr
   rX         r.   rd   r.   r.   r/   rL      s    z,TestAAA.test_poles_zeros_residues.<locals>.fr}   -q=rG   c                 S   s   dd|   d| d   S )NrX   r   rb   y               @r.   rd   r.   r.   r/   rL      s   r   rs      g?c                 S   s   | d | d  S )Ny      @      @rX   r.   rd   r.   r.   r/   rL         r   y            )r   rD   r   r   sumr'   r*   r)   prodr   rS   r[   rU   rV   r.   r.   r/   test_poles_zeros_residues   s    "&z!TestAAA.test_poles_zeros_residuesr   c                 C   s
   t | S N)r   Z
zeros_likerd   r.   r.   r/   rx      s   
 c                 C   s   | S r   r.   rd   r.   r.   r/   rx      s    c                 C   s   d|  S )Nr   r.   rd   r.   r.   r/   rx      s    c                 C      | d |  S )NrX   r.   rd   r.   r.   r/   rx          c                 C   r   )Nr   r.   rd   r.   r.   r/   rx      r   c                 C   s   dd|   S )Nr
   g?r.   rd   r.   r.   r/   rx      r   c                 C   s   ddd|    S )Nr
   r   r.   rd   r.   r.   r/   rx          c                 C   s   dd|  | d   S )Nr
   r   rX   r.   rd   r.   r.   r/   rx      s    c                 C   s   dd| d   S )Nr
   g)\(?r   r.   rd   r.   r.   r/   rx      r   c                 C   s$   t tt|tt|tdd d S )Nr{   rG   )r   r   rD   r   )r@   r   r.   r.   r/    test_polynomials_and_reciprocals   s   
z(TestAAA.test_polynomials_and_reciprocalsc                 C   sh   t t jdddt j  dd}t|t t j| d }tt t |	 d d g dd	d
 d S )N      rP                 .@r   r   rX   r   )r
   r
   r   r   g1E2>r   )
r   rE   r   rS   r   rR   r   r[   rU   r'   rk   r.   r.   r/   test_spiral   s    .zTestAAA.test_spiralc                 C   s  t t jdddt j  dd}tt t|t t j| d ddd	d
}W d    n1 s1w   Y  t 	t 
| dk }tt | dksPJ W d    n1 sZw   Y  t 	t 
| dk |k soJ t||t t j| d ddd d S )Nr   rP   r   r   r   rX   r   <   F)r   r9   clean_upr~   r
   gAfc=gAfc=rO   )r   rE   r   rS   r:   rB   rC   r   rR   r   rU   r)   r   r   )r@   r,   r-   Z
n_spuriousr.   r.   r/   test_spiral_cleanup   s    $ (zTestAAA.test_spiral_cleanupN)__name__
__module____qualname__rA   r:   markZthread_unsaferF   rN   rW   r\   ra   rf   rl   rr   ru   parametrizer   r   r   r   r   r.   r.   r.   r/   r4   R   sF    

!	


r4   c                
   @   s   e Zd Zdd Zdd Zdd Zejddg d	fd
g dfdg dfdg dfdg dfgdd Z	ejde
ddd Zdd Zdd Zejdg dejddd gd!d" Zd#d$ Zd%d& Zd'S )(TestFloaterHormannc                 C   s   dd|d   S )Nr
   rX   r.   )r@   r,   r.   r.   r/   runge
  r   zTestFloaterHormann.rungec                 C   s   dt ||  t| S )Nr	   )r   r2   r   )r@   ndr.   r.   r/   scale  re   zTestFloaterHormann.scalec                 C   s  t jtdd tdggdgdd W d    n1 sw   Y  t jtdd tdgddd W d    n1 s;w   Y  t jtdd tdgddgddggdd W d    n1 s`w   Y  t jtdd ttjgdgdd W d    n1 sw   Y  t jtd	d tdgdgd
d W d    n1 sw   Y  t jtd	d tdgdgdd W d    n1 sw   Y  t t tdgdgdd W d    d S 1 sw   Y  d S )Nz`x`r5   r   r   z`y`	dimensionr
   r7   z`d`r	   r           )r:   r;   r<   r   r   r=   r>   r?   r.   r.   r/   test_iv  s*   "zTestFloaterHormann.test_ivz
d,expectedr   )r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   )r
   rX   rX   rX   rX   rX   rX   rX   rX   rX   r
   rX   )r
   r   r   r   r   r   r   r   r   r   r
   r   )r
   r         r   r   r   r   r   r   r
   r   )r
   rb            r   r   r   r   rb   r
   c                 C   sD   t d}t|d| |d}t|j | |j| |ddd d S )Nr   r   r   rg   r   rH   )r   r2   r   r   r&   Zravelr   r   )r@   r   expectedrq   r-   r.   r.   r/   test_uniform_grid!  s
   
	
z$TestFloaterHormann.test_uniform_gridr   r   c           	      C   s   t ddd}t jd}|jdddd}| |}|d |d  }t|||d}d||d   }t||| |d	|d
 t||| | d S )Nr   r
   3   l   M+RYr   r   r   r   g|=rO   )	r   r   r   r   r    r   r   r   r   )	r@   r   rq   r+   xxyhr-   Ztolr.   r.   r/   
test_runge/  s   
zTestFloaterHormann.test_rungec                 C   sd   t dd}||d  }t|t |dd}t jdddd}||d  }t||t |dd	 d S )
Nr	   r
   r      r   r   r   r   r   )r   r   r   r   r   )r@   rq   r,   r-   r   zzr.   r.   r/   test_complex>  s   zTestFloaterHormann.test_complexc                 C   s`   t ddd}t ddd}t |}t|||jd d}t||}t||||ddd d S )Nr   r
   r   i  r   r   r   )r   r   r   r   r   r   r   )r@   rq   r   r   r-   pr.   r.   r/   test_polyinterpF  s   

z"TestFloaterHormann.test_polyinterpy_shape))rX   )rX   r   r
   )r
   rb      r   xx_shaper   )r   r   c           
   
   C   s   t dd}t t t |ttdt|d |j| }t	||}t j
d}|
|}t t t |tt|jt||j |j| }||}	|	j|j| ksXJ t|	|dd d S )Nr   r
   l   wcBMYr   r   )r   r   Zbroadcast_toZexpand_dimsr   tuplerangelenshaper   r   r   ndimr   )
r@   r   r   rq   r   r-   r+   r   yyZrrr.   r.   r/   test_trailing_dimO  s   "

&z$TestFloaterHormann.test_trailing_dimc                 C   sZ   t jdddd}t|t t j| }t t j| t 	dj
dd}t|d d S )Nr   r   r   r   r   )Zaxisgh㈵>)r   r   r   r   rS   rU   subtractouterr*   r2   rT   r   )r@   rq   r-   errr.   r.   r/   
test_zerosd  s   &zTestFloaterHormann.test_zerosc                 C   s`   t dd}t|d|d  }| }|jdk|jdk@ t |jdk @ }t |dks.J d S )Nr	   r
   rX   r   r   )r   r   r   r'   r%   rU   imagr   )r@   rq   r-   r   maskr.   r.   r/   test_no_polesk  s
   $z TestFloaterHormann.test_no_polesN)r   r   r   r   r   r   r:   r   r   r   r   r   r   r   r   r   r   r.   r.   r.   r/   r   	  s*    






	r   )#mathr   numpyr   Znumpy.testingr   r   r   r:   rh   Zscipy.interpolater   r   r   r   Zfloat64r   rI   r   rD   Zlogspacer   Zconcatenater   r   Zfloat32Z	complex64r^   r0   Zint16Zint32Zint64r3   r4   r   r.   r.   r.   r/   <module>   s&    8