o
    hX<                     @   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rz2 r/   ^/var/www/vscode/kcb/lib/python3.10/site-packages/scipy/interpolate/tests/test_bary_rational.pytest_dtype_preservation(   s"   r1   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/   r0   test_integer_promotionA   s   
r4   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finiter2   	max_termsgreaterr	   )pytestraises
ValueErrorr   r   inf	TypeErrorselfr/   r/   r0   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 failedr6   r
   r9   )r<   warnsRuntimeWarningr   UNIT_INTERVALr   exprA   r/   r/   r0   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   rG   rF   r   r   TOLr   nanisfiniter?   r"   r   )rB   fr-   m1r/   r/   r0   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]ʂ>rJ   r   r   gLa㧝=rI         ?vIh%<=)r   tanpirF   r   r   rK   minabsr*   r'   r)   rB   rN   r-   r/   r/   r0   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
      rS   r   rI   rR   g      ?gUUUUUU?g;f?)r   r
   rZ   )r
   r   r   gȢ<?gÙt?gfMvg7п)3Ey?r[   r[   )r
   r
   r   )r   arrayr   r   rK   r'   r)   r*   r   r"   r#   r&   r$   sort)rB   r,   rN   r-   r/   r/   r0   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      ?      ?      ?rZ   i7  g      ,y        ?gffffff?)r   r   rG   r   r!   
complex128r   )rB   r,   rN   r1r2r3r/   r/   r0   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
   rZ   )r   logr,   r/   r/   r0   rN         z TestAAA.test_log_func.<locals>.fr   rI   )r   r   r   standard_normalr   r   rK   )rB   r+   r,   rN   r-   r/   r/   r0   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瞯<rI   )r   r   r   scipyspecialgammar   rB   r,   r-   r/   r/   r0   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)invalidrZ   rk   rI   )r   r   errstater   r   r   )rB   xrN   r-   r/   r/   r0   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ZdrZ   i  r   :0yE>r
   rk   rI   r_   r	   y            )r   r   r   rG   flatnonzerorW   r'   r   r)   rl   rm   rn   )rB   ru   r-   iir/   r/   r0   test_residues   s   zTestAAA.test_residueszfunc,atol,rtolc                 C   s   t | d d S )NrR   y        {Gz?r   rW   ru   r/   r/   r0   <lambda>       zTestAAA.<lambda>g-a=gHz>c                 C      t dd|   S )Nr
   g?)r   r   r|   r/   r/   r0   r}      r~   vIh%L=c                 C   s   t d| d  S )Nr	   rZ   r   rG   r|   r/   r/   r0   r}      r~   gG@
X=r   c                 C   s   t d| d  S )NirZ   r   r|   r/   r/   r0   r}      r~   gvIh%l=c                 C   r   )Ng333333?r   r|   r/   r/   r0   r}      r~   +=c                 C   s   ddt d| d    S )Nr
   r   rR   r   r|   r/   r/   r0   r}      s    c                 C   s   t | d S )Ngffffff?r{   r|   r/   r/   r0   r}      s    ư>c                 C   sV   t jdd |t}W d    n1 sw   Y  ttt|tt|||d d S )Nrr   )dividerQ   )r   rt   PTSr   r   rF   )rB   funcrJ   r   rN   r/   r/   r0   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
   rZ         r/   rg   r/   r/   r0   rN      s    z,TestAAA.test_poles_zeros_residues.<locals>.fr   -q=rI   c                 S   s   dd|   d| d   S )NrZ   r   re   y               @r/   rg   r/   r/   r0   rN      s   r   rw      g?c                 S   s   | d | d  S )Ny      @      @rZ   r/   rg   r/   r/   r0   rN         r   y            )r   rF   r   r   sumr'   r*   r)   prodr   rU   r]   rW   rX   r/   r/   r0   test_poles_zeros_residues   s    "&z!TestAAA.test_poles_zeros_residuesr   c                 C   s
   t | S N)r   
zeros_likerg   r/   r/   r0   r}      s   
 c                 C   s   | S r   r/   rg   r/   r/   r0   r}      s    c                 C   s   d|  S )Nr   r/   rg   r/   r/   r0   r}      s    c                 C      | d |  S )NrZ   r/   rg   r/   r/   r0   r}          c                 C   r   )Nr   r/   rg   r/   r/   r0   r}      r   c                 C   s   dd|   S )Nr
   g?r/   rg   r/   r/   r0   r}      r   c                 C   s   ddd|    S )Nr
   r   r/   rg   r/   r/   r0   r}          c                 C   s   dd|  | d   S )Nr
   r   rZ   r/   rg   r/   r/   r0   r}      s    c                 C   s   dd| d   S )Nr
   g)\(?r   r/   rg   r/   r/   r0   r}      r   c                 C   s$   t tt|tt|tdd d S )Nr   rI   )r   r   rF   r   )rB   r   r/   r/   r0    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      rR                 .@r   r   rZ   r   )r
   r
   r   r   g1E2>r   )
r   rG   r   rU   r   rT   r   r]   rW   r'   ro   r/   r/   r0   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   rR   r   r   r   rZ   r   <   F)r   r:   clean_upr   r
   gAfc=gAfc=rQ   )r   rG   r   rU   r<   rD   rE   r   rT   r   rW   r)   r   r   )rB   r,   r-   
n_spuriousr/   r/   r0   test_spiral_cleanup   s    $ (zTestAAA.test_spiral_cleanupN)__name__
__module____qualname__rC   r<   markthread_unsaferH   rP   rY   r^   rd   rj   rp   rv   rz   parametrizer   r   r   r   r   r/   r/   r/   r0   r5   R   sF    

!	


r5   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
   rZ   r/   )rB   r,   r/   r/   r0   runge
  r   zTestFloaterHormann.rungec                 C   s   dt ||  t| S )Nr	   )r   r3   r   )rB   ndr/   r/   r0   scale  rh   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`r6   r   r   z`y`	dimensionr
   r8   z`d`r	   r           )r<   r=   r>   r   r   r?   r@   rA   r/   r/   r0   test_iv  s*   "zTestFloaterHormann.test_ivz
d,expectedr   )r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   )r
   rZ   rZ   rZ   rZ   rZ   rZ   rZ   rZ   rZ   r
   rZ   )r
   r   r   r   r   r   r   r   r   r   r
   r   )r
   r         r   r   r   r   r   r   r
   r   )r
   re            r   r   r   r   re   r
   c                 C   sD   t d}t|d| |d}t|j | |j| |ddd d S )Nr   r   r   rk   r   rJ   )r   r3   r   r   r&   ravelr   r   )rB   r   expectedru   r-   r/   r/   r0   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|=rQ   )	r   r   r   r   r    r   r   r   r   )	rB   r   ru   r+   xxyhr-   tolr/   r/   r0   
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   )rB   ru   r,   r-   r   zzr/   r/   r0   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   )rB   ru   r   r   r-   pr/   r/   r0   test_polyinterpF  s   

z"TestFloaterHormann.test_polyinterpy_shape))rZ   )rZ   r   r
   )r
   re      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   broadcast_toexpand_dimsr   tuplerangelenshaper   r   r   ndimr   )
rB   r   r   ru   r   r-   r+   r   yyrrr/   r/   r0   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   )axisgh㈵>)r   r   r   r   rU   rW   subtractouterr*   r3   rV   r   )rB   ru   r-   errr/   r/   r0   
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
   rZ   r   r   )r   r   r   r'   r%   rW   imagr   )rB   ru   r-   r   maskr/   r/   r0   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/   r0   r   	  s*    






	r   )#mathr   numpyr   numpy.testingr   r   r   r<   rl   scipy.interpolater   r   r   r   float64r   rK   r   rF   logspacer   concatenater   r   float32	complex64r`   r1   int16int32int64r4   r5   r   r/   r/   r/   r0   <module>   s&    8