
    _MhX<                        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j        ej                  j        z  Z ej        ddd	          Z ej        d
d dd          Z ej        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                         Zej                            deeg          ej                            dej        ej        ej        g          d                         Z  G d d          Z! G d d          Z"dS )    )	factorialN)assert_allcloseassert_equalassert_array_less)AAAFloaterHormannInterpolatorBarycentricInterpolatorg     @     numi
   i  )baser   methoddtypec                    t          j        |          j        dz  dz  }| t          u r|dz  }t           j                            d          }t          j        dd|          } | |t          j        |                    }|                    ddd          	                    |          }t           ||          t          j        |          |            ||          j        |k    sJ | t          u r@|j        j        |k    sJ |j        j        |k    sJ |j        j        |j        j        k    sJ |j        j        |k    sJ |                                j        t          j        |d	          k    sJ |                                j        t          j        |d	          k    sJ |                                j        t          j        |d	          k    sJ 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z2s          j/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/interpolate/tests/test_bary_rational.pytest_dtype_preservationr2   (   s    8E??$&,D+++
)

 1
2
2C
B'''Aq"&))A	R	%	%	,	,U	3	3BAAbEE26"::D11111R55;%}}%....%....x~----9?e####7799?bnUB777777::<<r!:!:::::7799?bnUB77777777    c                    t          j        d|          } | ||          }|j        j        t          j        |d          k    sJ | t
          u ro|j        j        t          j        |d          k    sJ |j        j        t          j        |d          k    sJ |j        j        t          j        |d          k    sJ |	                                j        t          j        |d          k    sJ |
                                j        t          j        |d          k    sJ |                                j        t          j        |d          k    sJ  ||          j        t          j        |d          k    sJ d S )Nr   r         ?r   )r   aranger(   r   r*   r   r$   r%   r&   r)   r+   r,   )r   r   r.   r/   s       r1   test_integer_promotionr7   A   s[    		"E"""Aq!A9?bnUC888888}}%s)C)CCCCC%s)C)CCCCCx~s!;!;;;;;7799?bnUB777777::<<r!:!:::::7799?bnUB7777771Q44:s33333333r3   c                      e Zd Zd Zej        j        d             Zd Zd Z	d Z
d Zd Zd Zd	 Zd
 Zej                            dd ddfd ddfd ddfd ddfd ddfd ddfd ddfg          d             Zd Zej                            dd d d  d! d" d# d$ d% d& g	          d'             Zd( Zej        j        d)             Zd*S )+TestAAAc                    t          j        t          d          5  t          dgddg           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dgdggdgdgg           d d d            n# 1 swxY w Y   t          j        t          d          5  t          t          j        gdg           d d d            n# 1 swxY w Y   t          j        t                    5  t          dgdgd           d d d            n# 1 swxY w Y   t          j        t          d	          5  t          dgdgd
           d d d            d S # 1 swxY w Y   d S )Nz	same sizematchr   r   z1-Dfiniter5   	max_termsgreaterr
   )pytestraises
ValueErrorr   r   inf	TypeErrorselfs    r1   test_input_validationzTestAAA.test_input_validationS   s   ]:[999 	 	aV	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:U333 	( 	(!qc
aS1#J'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(]:X666 	 	1#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9%% 	) 	)aSC((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)]:Y777 	( 	(aSB''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(sW   <A A "BBB-CCC:DD"DE##E'*E'c                     t          j        t          d          5  t          t          t          j        t                    d           d d d            d S # 1 swxY w Y   d S )Nz
AAA failedr;   r   r>   )rA   warnsRuntimeWarningr   UNIT_INTERVALr   exprF   s    r1   test_convergence_errorzTestAAA.test_convergence_error_   s    \.=== 	D 	Drvm44CCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   /AAAc                    t          j        t                    }t          t          |          }t	           |t                    |t
                     t           |t           j                  t           j                   t          j         |t           j	                            sJ |j
        j        }t          t          |d          }|j
        j        |k     sJ d S )NatolgMbP?r   )r   rM   rL   r   r   TOLr   nanisfiniterD   r$   r   )rG   fr/   m1s       r1   test_expzTestAAA.test_expf   s    F=!!q!!-((!#6666QQrvYY'''{11RV99%%%%%"qt,,,$r))))))r3   c                 z   t          j        t           j        t          z            }t	          t          |          }t           |t                    |dt          z  d           t          t          j        t          j        |	                                                    dd           t          t          j        t          j        |
                                dz
                      dt                     t          j        t          j        |                                                    dk    sJ d S )	Nr   gz]ʂ>rQ   r   r   gLa㧝=rP         ?vIh%<=)r   tanpirL   r   r   rR   minabsr,   r)   r+   rG   rU   r/   s      r1   test_tanzTestAAA.test_tanr   s    F25=())q!!-((!"s(HHHHrvaggii001115AAAArvaggii#o6677EEEEvbfQZZ\\**++e333333r3   c                 Z   t          j        ddg          }t          j        ddg          }t          ||d          }t           ||          |t                     t          |                                d           t          |                                d           t          |                                d	           t          |j	        |           t          |j
        |           t          |j        d
d
g           t          |j        ddg           t          j        g d          }t          j        g d          }t          ||d          }t           ||          |t                     t          t          j        |                                          t          j        ddg                     t          t          j        |                                          t          j        ddg                     t          t          j        |                                          t          j        ddg                     t          |j	        |           t          |j
        |           t          |j        g d           t          |j        g d           d S )Nr   r      r[   r   rP   rZ   g      ?gUUUUUU?g;f?)r   r   rc   )r   r   r   gȢ<?gÙt?gfMvg7п)3Ey?rd   rd   )r   r   r   )r   arrayr   r   rR   r)   r+   r,   r   r$   r%   r(   r&   sort)rG   r.   rU   r/   s       r1   test_short_caseszTestAAA.test_short_cases|   s`    HaVHaV15!!!!ac****		3'''

d+++		3'''Q%q)))Q%q)))	$57H#IJJJQX1v&&& HYYYHYYY15!!!!ac****		**!24E FGG	I 	I 	I

--!35G HII	K 	K 	K		**BGQFOO<<<Q%q)))Q%q)))	 $7 $7 $7 	8 	8 	8QXyyy)))))r3   c                    t          j        dd          }t          j        |          dz  }t          ||          }t          |ddz  |z                      t           j                            }t          |d|z                      t           j                            }t           |d          d |d          z             t           |d          ddz   |d          z             d S )	Ng333333?g      ?      ?      ?rc   i7  g      ,y        ?gffffff?)r   r    rM   r   r#   
complex128r   )rG   r.   rU   r1r2r3s         r1   test_scale_invariancezTestAAA.test_scale_invariance   s    KS!!F1II AYYQVaZ''6677Wq[((7788RRXXwD1222RRWWafrr#ww./////r3   c                 *   t           j                            d          }|                    d          d|                    d          z  z   }d }t	          | ||                    }t           |d           |d          t                     d S )Nl   (pg98B i'  y              @c                 B    t          j        d| z
            d| dz  z   z  S )N   r   rc   )r   logr.   s    r1   rU   z TestAAA.test_log_func.<locals>.f   s!    6!a%==A1H--r3   r   rP   )r   r   r   standard_normalr   r   rR   )rG   r-   r.   rU   r/   s        r1   test_log_funczTestAAA.test_log_func   s    i##$788&&c.A.A%.H.H)HH	. 	. 	. 11Q44LL!aadd------r3   c                     t          j        dd          }t          |t          j                            |                    }t           |d          t          j                            d          d           d S )Nr
   r   g)\(?V瞯<rP   )r   r    r   scipyspecialgammar   rG   r.   r/   s      r1   test_infinite_datazTestAAA.test_infinite_data   se    KA5=&&q))**$!4!4T!:!:GGGGGGr3   c                 8   t          j        dd          }t          j        d          5  t          j        |          |z  }d d d            n# 1 swxY w Y   t	          ||          }t           |d          t          j        d          dz  d           d S )Nr      ignore)invalidrc   rw   rP   )r   r    errstater!   r   r   )rG   xrU   r/   s       r1   test_nanzTestAAA.test_nan   s    K2[*** 	 	q		AA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	1II!bfQii!m%888888s   AAAc                 r   t          j        ddd          }t          |t          j        |          |z            }t          j        t          j        |                                          dk               }t          |                                |         dd           t          |d	t          j
                            |          z            }t          j        t          |                                d
z
            dk               }t          |                                |         dd           d S )Ng1Zdrc   i  r   :0yE>r   rw   rP   ri   r
   y            )r   r    r   rM   flatnonzeror_   r)   r   r+   rx   ry   rz   )rG   r   r/   iis       r1   test_residueszTestAAA.test_residues   s    Ks+++26!99q=!!^BF17799--455

R(!%8888Fem11!44455^C		R 011D899

R('>>>>>>r3   zfunc,atol,rtolc                 6    t          j        | dz   dz             S )NrZ   y        {Gz?r   r_   r   s    r1   <lambda>zTestAAA.<lambda>   s    C%)@)@ r3   g-a=gHz>c                 6    t          j        dd| z
  z            S )Nr   g?)r   r!   r   s    r1   r   zTestAAA.<lambda>   s    4!8)=)= r3   vIh%L=c                 6    t          j        d| dz  z            S )Nr
   rc   r   rM   r   s    r1   r   zTestAAA.<lambda>   s    AqD	):): r3   gG@
X=r   c                 6    t          j        d| dz  z            S )Nirc   r   r   s    r1   r   zTestAAA.<lambda>   s    QT	):): r3   gvIh%l=c                 6    t          j        dd| z
  z            S )Ng333333?r   r   s    r1   r   zTestAAA.<lambda>   s    S1W)>)> r3   +=c                 B    ddt          j        d| dz   z            z   z  S )Nr   r   rZ   r   r   s    r1   r   zTestAAA.<lambda>   s"    AbfS!c'].C.C,C)D r3   c                 0    t          j        | dz
            S )Ngffffff?r   r   s    r1   r   zTestAAA.<lambda>   s    D)9)9 r3   ư>c           	         t          j        d          5   |t                    }d d d            n# 1 swxY w Y   t           t	          t
           |t
                              t                    |||           d S )Nr   )dividerY   )r   r   PTSr   r   rL   )rG   funcrQ   r   rU   s        r1   test_basic_functionszTestAAA.test_basic_functions   s     [))) 	 	S		A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	?M44+>+>??DD4	1 	1 	1 	1 	1 	1s   377c                    d }t          t           |t                              }t          t          j        |                                |                                z             dd           d }t          t           |t                              }t          |                                                                dd           t          t          t          j	        dt          j
        z  t          z                      }t          t          j        t          j        |                                                    d         d	d           d
 }t          t           |t                              }t          |                                d         |                                d         z  dd           d S )Nc                 0    | dz   | dz   z  | dz   | dz   z  z  S )Nr   rc          rs   s    r1   rU   z,TestAAA.test_poles_zeros_residues.<locals>.f   s%    aCAaC=QqSQqSM22r3   r   -q=rP   c                 $    dd| z   z  d| dz
  z  z   S )Nrc   r   rq   y               @r   rs   s    r1   rU   z,TestAAA.test_poles_zeros_residues.<locals>.f   s    a!e9q!b&z))r3   r   r      g?c                     | dz
  | dz   z  S )Ny      @      @rc   r   rs   s    r1   rU   z,TestAAA.test_poles_zeros_residues.<locals>.f   s    L1q5))r3   r   y            )r   rL   r   r   sumr)   r,   r+   prodr!   r]   rf   r_   r`   s      r1   test_poles_zeros_residuesz!TestAAA.test_poles_zeros_residues   si   	3 	3 	3qq//00qwwyy17799455sGGGG	* 	* 	*qq//00

))++Rd;;;;rvbh}&<==>>qwwyy 1 12226%HHHH	* 	* 	*qq//00		!QWWYYq\1EFFFFFFr3   r   c                 *    t          j        |           S N)r   
zeros_likers   s    r1   r   zTestAAA.<lambda>   s    a(8(8 r3   c                     | S r   r   rs   s    r1   r   zTestAAA.<lambda>   s    A r3   c                     d| z  S )Nr   r   rs   s    r1   r   zTestAAA.<lambda>   s    QSTUQU r3   c                     | dz  | z   S )Nrc   r   rs   s    r1   r   zTestAAA.<lambda>   s    1q r3   c                     | dz  | z   S )Nr   r   rs   s    r1   r   zTestAAA.<lambda>   s    AqD1H r3   c                     dd| z   z  S )Nr   g?r   rs   s    r1   r   zTestAAA.<lambda>   s    37 r3   c                     ddd| z  z   z  S )Nr   r   r   rs   s    r1   r   zTestAAA.<lambda>   s    q!bd(| r3   c                     dd| z   | dz  z   z  S )Nr   r   rc   r   rs   s    r1   r   zTestAAA.<lambda>   s    1q51a4<(8 r3   c                     dd| dz  z   z  S )Nr   g)\(?r   r   rs   s    r1   r   zTestAAA.<lambda>   s    AtaQRd{O r3   c           	          t           t          t           |t                              t                     |t                    d           d S )Nr   rP   )r   r   rL   r   )rG   r   s     r1    test_polynomials_and_reciprocalsz(TestAAA.test_polynomials_and_reciprocals   sS     	?M44+>+>??DDS			/ 	/ 	/ 	/ 	/ 	/r3   c                    t          j        t          j        dddt           j        z  z   d                    }t	          |t          j        t           j        |z  dz                      }t          t          j        t          j        |	                                                    d d         g dd	
           d S )N      rZ                 .@r   r   rc   r   )r   r   r   r   g1E2>r   )
r   rM   r    r]   r   r\   r   rf   r_   r)   r{   s      r1   test_spiralzTestAAA.test_spiral   s    F2;tS3ru9_$???@@26"%'!)$$%%qwwyy 1 1222A264PPPPPPr3   c                 V   t          j        t          j        dddt           j        z  z   d                    }t	          j        t                    5  t          |t          j        t           j        |z  dz            ddd	
          }d d d            n# 1 swxY w Y   t          j	        t          j
        |                                          dk               }t	          j        t                    5  |                                dk    sJ 	 d d d            n# 1 swxY w Y   t          j	        t          j
        |                                          dk               |k     sJ t           ||          t          j        t           j        |z  dz            dd           d S )Nr   rZ   r   r   r   rc   r   <   F)r   r?   clean_upr   r   gAfc=gAfc=rY   )r   rM   r    r]   rA   rJ   rK   r   r\   r   r_   r+   r   r   )rG   r.   r/   
n_spuriouss       r1   test_spiral_cleanupzTestAAA.test_spiral_cleanup   s   F2;tS3ru9_$???@@ \.)) 	P 	PArvbeAgai((qBOOOA	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	PVBF1::<<005899
\.)) 	% 	%::<<1$$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% vbfQZZ\\**U233j@@@@!bfRU1WQY//e%HHHHHHs$   7BBB6DD"%D"N)__name__
__module____qualname__rH   rA   markthread_unsaferN   rW   ra   rg   rn   ru   r|   r   r   parametrizer   r   r   r   r   r   r3   r1   r9   r9   R   s       
( 
( 
( [D D D
* 
* 
*4 4 4* * *B0 0 0. . .H H H
9 9 9? ? ? [-@@%N==udK::GQG::E1E>>qIDDeTR994FHI I1 1I I1G G G& [V88++~~002D2D335K5K88:S:SUV V
/ /V V
/Q Q Q
 [I I I I Ir3   r9   c            
          e Zd Zd Zd Z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             Z	ej                            d e
d                    d             Zd Zd Zej                            dg d          ej                            dddg          d                         Zd Zd ZdS )TestFloaterHormannc                     dd|dz  z   z  S )Nr   rc   r   )rG   r.   s     r1   rungezTestFloaterHormann.runge
  s    !ad(|r3   c                 V    dt          j        |          |z   z  t          |          z  S )Nr
   )r   r6   r   )rG   nds      r1   scalezTestFloaterHormann.scale  s%    billQ&')A,,66r3   c                    t          j        t          d          5  t          dggdgd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dgdd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          dgddgddggd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          t          j        gdgd           d d d            n# 1 swxY w Y   t          j        t          d	          5  t          dgdgd
           d d d            n# 1 swxY w Y   t          j        t          d	          5  t          dgdgd           d d d            n# 1 swxY w Y   t          j        t                    5  t          dgdgd           d d d            d S # 1 swxY w Y   d S )Nz`x`r;   r   r   z`y`	dimensionr   r=   z`d`r
   r           )rA   rB   rC   r   r   rD   rE   rF   s    r1   test_ivzTestFloaterHormann.test_iv  s   ]:U333 	8 	8&uqcQ7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]:U333 	4 	4&sA3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4]:[999 	C 	C&saVaV,<BBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C]:X666 	; 	;&x!::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;]:U333 	7 	7&sQC26666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]:U333 	7 	7&sQC26666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]9%% 	8 	8&sQC37777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s{   >AA$BBB*CCC6D!!D%(D%E((E,/E,F//F36F3G55G9<G9z
d,expectedr   )r   r   r   r   r   r   r   r   r   r   r   r   )r   rc   rc   rc   rc   rc   rc   rc   rc   rc   r   rc   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r         r   r   r   r   r   r   r   r   )r   rq            r   r   r   r   rq   r   c                     t          j        d          }t          |d|z  |          }t          |j                                        |                     |j        |          z  |dd           d S )Nr   r   r   rw   r   rQ   )r   r6   r   r   r(   ravelr   r   )rG   r   expectedr   r/   s        r1   test_uniform_gridz$TestFloaterHormann.test_uniform_grid!  st     IbMM&q#a%1555	))$**QVQ*?*??"	0 	0 	0 	0 	0 	0r3   r   r   c                    t          j        ddd          }t           j                            d          }|                    ddd          }|                     |          }|d         |d         z
  }t          |||          }d||dz   z  z  }t           ||          |                     |          d	|
           t           ||          |                     |                     d S )Nr   r   3   l   M+RYr   r   r   r   g|=rY   )	r   r    r   r   r"   r   r   r   r   )	rG   r   r   r-   xxyhr/   tols	            r1   
test_rungezTestFloaterHormann.test_runge/  s    K1b!!i##$677[[AD[))JJqMMaD1Q4K&q!q111QqSk"tzz"~~EDDDDQQqTT4::a==)))))r3   c                     t          j        dd          }||dz  z   }t          |t          j        |          d          }t          j        ddd          }||dz  z   }t	           ||          t          j        |          d	           d S )
Nr
   r   r      r   r   r   r   r   )r   r    r   r!   r   )rG   r   r.   r/   r   zzs         r1   test_complexzTestFloaterHormann.test_complex>  s    KA"H&q"&))r:::[QD)))"R%Z"rvbzz666666r3   c                 $   t          j        ddd          }t          j        ddd          }t          j        |          }t          |||j        dz
            }t          ||          }t           ||           ||          dd           d S )Nr   r   r   i  r   r   r   )r   r    r!   r   r   r	   r   )rG   r   r   r   r/   ps         r1   test_polyinterpz"TestFloaterHormann.test_polyinterpF  s    K1b!![At$$F1II&q!qvax888#Aq))"qquu5u======r3   y_shape))rc   )rc   r   r   )r   rq      r   xx_shaper   )r   r   c                    t          j        dd          }t          j        t          j        t          j        |          t          t          dt          |          dz                                 |j        |z             }t          ||          }t           j
                            d          }|
                    |          }t          j        t          j        t          j        |          t          t          |j        t          |          |j        z                                 |j        |z             } ||          }	|	j        |j        |z   k    sJ t          |	|d           d S )Nr   r   l   wcBMYr   r   )r   r    broadcast_toexpand_dimsr!   tuplerangelenshaper   r   r   ndimr   )
rG   r   r   r   r   r/   r-   r   yyrrs
             r1   test_trailing_dimz$TestFloaterHormann.test_trailing_dimO  s3    K1ON26!99eE!S\\A5E,F,F&G&GHHGg
 

 'q!,,i##$BCCZZ!!_N26"::uU27CLL27<R-S-S'T'TUUHw
 
 QrUUx28g-----BT******r3   c                    t          j        ddd          }t          |t          j        t           j        |z                      }t          j        t           j                            |                                t          j	        d                              
                    d          }t          |d           d S )Nr   r   r   r   r   )axisgh㈵>)r   r    r   r!   r]   r_   subtractouterr,   r6   r^   r   )rG   r   r/   errs       r1   
test_zeroszTestFloaterHormann.test_zerosd  s    K23'''&q"&q//::fR[&&qwwyy")B--@@AAEE1EMM#t$$$$$r3   c                 "   t          j        dd          }t          |d|dz  z            }|                                }|j        dk    |j        dk    z  t          j        |j                  dk     z  }t          j        |          dk    sJ d S )Nr
   r   rc   r   r   )r   r    r   r)   r'   r_   imagr   )rG   r   r/   r   masks        r1   test_no_polesz TestFloaterHormann.test_no_polesk  s    KA&q!AqD&11GGII"1-&1HIvd||q      r3   N)r   r   r   r   r   r   rA   r   r   r   r   r   r   r   r   r   r  r   r3   r1   r   r   	  s         7 7 78 8 8" [\	
---.	
---.	
---.	
---.	
4445,  0 0 0 [S%%)),,* * -,*7 7 7> > > [Y(G(G(GHH[Z3):;;+ + <; IH+&% % %! ! ! ! !r3   r   )#mathr   numpyr   numpy.testingr   r   r   rA   rx   scipy.interpolater   r   r	   r   float64r   rR   r    rL   logspacer   concatenater   r   float32	complex64rj   r2   int16int32int64r7   r9   r   r   r3   r1   <module>r     s  4           J J J J J J J J J J   V V V V V V V V V V	HBHRZ  $$Bt,,,bk#qrs+++bns44R4yj1#s+,, C)C#DEE2:rz2<"WXX8 8 YX FE8. C)C#DEE28RXrx"@AA4 4 BA FE4tI tI tI tI tI tI tI tIng! g! g! g! g! g! g! g! g! g!r3   