
    biB                        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.                  j1                  deeg      ej.                  j1                  dej2                  ej                  ej4                  ej6                  g      d               Zej.                  j1                  deeg      ej.                  j1                  dej:                  ej<                  ej>                  g      d               Z  G d d      Z! G d d      Z" G d d      Z#y)    )	factorialN)assert_allcloseassert_equalassert_array_less)AAAFloaterHormannInterpolatorBarycentricInterpolatorg     @     num
     )baser   methoddtypec                    t        j                  |      j                  dz  dz  }| t        u r|dz  }t         j                  j                  d      }t        j                  dd|      } | |t        j                  |            }|j                  ddd      j                  |      }t         ||      t        j                  |      |        ||      j                  |k(  sJ | t        u re|j                  j                  |k(  sJ |j                  j                  |k(  sJ |j                  j                  |j                   j                  k(  sJ |j"                  j                  |k(  sJ |j%                         j                  t        j&                  |d	      k(  sJ |j)                         j                  t        j&                  |d	      k(  sJ |j+                         j                  t        j&                  |d	      k(  sJ y )
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          e/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_bary_rational.pytest_dtype_preservationr4   (   s    88E?$&,D++
))

 1
2C
B'Aq"&&)A	R	%	,	,U	3BAbE266":D1R5;;%}%%...%%...xx~~---99??e###779??bnnUB7777::<r!::::779??bnnUB7777    c                 T   t        j                  d|      } | ||      }|j                  j                  t        j                  |d      k(  sJ | t
        u r|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                         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 y )Nr   r         ?r   )r   aranger*   r   r,   r   r&   r'   r(   r+   r-   r.   )r   r   r0   r1   s       r3   test_integer_promotionr9   A   s>    			"E"Aq!A99??bnnUC8888}%%s)CCCC%%s)CCCCxx~~s!;;;;779??bnnUB7777::<r!::::779??bnnUB7777Q4::s3333r5   c                   R   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zej                  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                  j                  dd d d  d! d" d# d$ d% d& g	      d'        Zd( Zd) Zd* Zy+),TestAAAc                    t        j                  t        d      5  t        dgddg       d d d        t        j                  t        d      5  t        dgdggdgdgg       d d d        t        j                  t        d      5  t        t        j
                  gdg       d d d        t        j                  t              5  t        dgdgd       d d d        t        j                  t        d	      5  t        dgdgd
       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)N `x` be of size 2 but got size 1.matchr   r   z1-Dfiniter7   	max_termsgreaterr
   )pytestraises
ValueErrorr   r   inf	TypeErrorselfs    r3   test_input_validationzTestAAA.test_input_validationS   s   ]]:-OP 	aV	]]:U3 	(!qc
aS1#J'	(]]:X6 	1#	]]9% 	)aSC(	)]]:Y7 	(aSB'	( 	(	 		( 	(	 		) 	)	( 	(s;   DDD+D79EDD(+D47E Ec                     t        j                  t        d      5  t        t        t        j                  t              d       d d d        y # 1 sw Y   y xY w)Nz
AAA failedr>   r   rA   )rD   warnsRuntimeWarningr   UNIT_INTERVALr   exprI   s    r3   test_convergence_errorzTestAAA.test_convergence_error_   s>    \\.= 	Drvvm4C	D 	D 	Ds   *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 y )NatolgMbP?r   )r   rP   rO   r   r   TOLr   nanisfiniterG   r&   r   )rJ   fr1   m1s       r3   test_expzTestAAA.test_expe   s    FF=!q!-(!#6QrvvY'{{1RVV9%%%""qt,$$r)))r5   c                 D   t        j                  t         j                  t        z        }t	        t        |      }t         |t              |dt        z  d       t        t        j                  t        j                  |j                                     dd       t        t        j                  t        j                  |j                         dz
              dt               t        j                  t        j                  |j                                     dkD  sJ y )	Nr   gz]ʂ>rT   r   r   gLa㧝=rS         ?vIh%<=)r   tanpirO   r   r   rU   minabsr.   r+   r-   rJ   rX   r1   s      r3   test_tanzTestAAA.test_tanq   s    FF255=()q!-(!"s(Hrvvaggi0115Arvvaggi#o67EvvbffQZZ\*+e333r5   c                    t        j                  ddg      }t        j                  ddg      }t        ||d      }t         ||      |t               t        |j                         d       t        |j                         d       t        |j                         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                  |j                               t        j                  ddg             t        t        j                  |j                               t        j                  ddg             t        t        j                  |j                               t        j                  ddg             t        |j                  |       t        |j                  |       t        |j                  g d       t        |j                  g d       y )Nr   r      r^   r   rS   r]   g      ?gUUUUUU?g;f?)r   r   rf   )r   r   r   gȢ<?gÙt?gfMvg7п)3Ey?rg   rg   )r   r   r   )r   arrayr   r   rU   r+   r-   r.   r   r&   r'   r*   r(   sort)rJ   r0   rX   r1   s       r3   test_short_caseszTestAAA.test_short_cases{   s    HHaVHHaV15!!ac*	3'

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

-!35G HI	K	*BGGQFO<Q%%q)Q%%q)		 $7 	8QXXy)r5   c                    t        j                  dd      }t        j                  |      dz  }t        ||      }t        |ddz  |z  j	                  t         j
                              }t        |d|z  j	                  t         j
                              }t         |d      d |d      z         t         |d      ddz   |d      z         y )	Ng333333?g      ?      ?      ?rf   i7  g      ,y        ?gffffff?)r   r"   rP   r   r%   
complex128r   )rJ   r0   rX   r1r2r3s         r3   test_scale_invariancezTestAAA.test_scale_invariance   s    KKS!FF1I AYQVaZ''67Wq[((78RXwD12RWafr#w./r5   c                     t         j                  j                  d      }|j                  d      d|j                  d      z  z   }d }t	        | ||            }t         |d       |d      t               y )Nl   (pg98B i'  y              @c                 D    t        j                  d| z
        d| dz  z   z  S )N   r   rf   )r   logr0   s    r3   rX   z TestAAA.test_log_func.<locals>.f   s!    66!a%=A1H--r5   r   rS   )r   r    r!   standard_normalr   r   rU   )rJ   r/   r0   rX   r1   s        r3   test_log_funczTestAAA.test_log_func   sf    ii##$78&c.A.A%.H)HH	. 1Q4L!ad-r5   c                     t        j                  dd      }t        |t        j                  j                  |            }t         |d      t        j                  j                  d      d       y )Nr
   r   g)\(?V瞯<rS   )r   r"   r   scipyspecialgammar   rJ   r0   r1   s      r3   test_infinite_datazTestAAA.test_infinite_data   sL    KKA5==&&q)*$!4!4T!:Gr5   c                 "   t        j                  dd      }t        j                  d      5  t        j                  |      |z  }d d d        t	        |      }t         |d      t        j                  d      dz  d       y # 1 sw Y   @xY w)Nr      ignore)invalidrf   rz   rS   )r   r"   errstater#   r   r   )rJ   xrX   r1   s       r3   test_nanzTestAAA.test_nan   sk    KK2[[* 	q	AA	1I!bffQi!m%8	 	s   BBc                 "   t        j                  ddd      }t        |t        j                  |      |z        }t        j                  t        j
                  |j                               dk        }t        |j                         |   dd       t        |d	t        j                  j                  |      z        }t        j                  t        |j                         d
z
        dk        }t        |j                         |   dd       y )Ng1Zdrf   i  r   :0yE>r   rz   rS   rl   r
   y            )r   r"   r   rP   flatnonzerorb   r+   r   r-   r{   r|   r}   )rJ   r   r1   iis       r3   test_residueszTestAAA.test_residues   s    KKs+266!9q=!^^BFF1779-45

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

R('>r5   zfunc,atol,rtolc                 8    t        j                  | dz   dz         S )Nr]   y        {Gz?r   rb   r   s    r3   <lambda>zTestAAA.<lambda>   s    C%)@ r5   g-a=gHz>c                 8    t        j                  dd| z
  z        S )Nr   g?)r   r#   r   s    r3   r   zTestAAA.<lambda>   s    4!8)= r5   vIh%L=c                 8    t        j                  d| dz  z        S )Nr
   rf   r   rP   r   s    r3   r   zTestAAA.<lambda>   s    AqD	): r5   g8J==r   c                 8    t        j                  d| dz  z        S )Nirf   r   r   s    r3   r   zTestAAA.<lambda>   s    QT	): r5   g-=c                 8    t        j                  dd| z
  z        S )Ng333333?r   r   s    r3   r   zTestAAA.<lambda>   s    S1W)> r5   +=c                 D    ddt        j                  d| dz   z        z   z  S )Nr   r   r]   r   r   s    r3   r   zTestAAA.<lambda>   s!    AbffS!c'].C,C)D r5   c                 2    t        j                  | dz
        S )Ngffffff?r   r   s    r3   r   zTestAAA.<lambda>   s    D)9 r5   ư>c           	          t        j                  d      5   |t              }d d d        t         t	        t
         |t
                    t              ||       y # 1 sw Y   ;xY w)Nr   )divider\   )r   r   PTSr   r   rO   )rJ   funcrT   r   rX   s        r3   test_basic_functionszTestAAA.test_basic_functions   sS     [[) 	S	A	?M4+>?D4	1	 	s   AA'c                    d }t        t         |t                    }t        t        j                  |j                         |j                         z         dd       d }t        t         |t                    }t        |j                         j                         dd       t        t        t        j                  dt        j                  z  t        z              }t        t        j                  t        j                  |j                                     d   d	d       d
 }t        t         |t                    }t        |j                         d   |j                         d   z  dd       y )Nc                 0    | dz   | dz   z  | dz   | dz   z  z  S )Nr   rf          rv   s    r3   rX   z,TestAAA.test_poles_zeros_residues.<locals>.f   s%    aCAaC=QqSQqSM22r5   r   -q=rS   c                 $    dd| z   z  d| dz
  z  z   S )Nrf   r   rt   y               @r   rv   s    r3   rX   z,TestAAA.test_poles_zeros_residues.<locals>.f   s    a!e9q!b&z))r5   r   r      g?c                     | dz
  | dz   z  S )Ny      @      @rf   r   rv   s    r3   rX   z,TestAAA.test_poles_zeros_residues.<locals>.f   s    L1q5))r5   r   y            )r   rO   r   r   sumr+   r.   r-   prodr#   r`   ri   rb   rc   s      r3   test_poles_zeros_residuesz!TestAAA.test_poles_zeros_residues   s    	3q/0qwwy177945sG	*q/0

))+Rd;rvvbh}&<=>qwwy 1226%H	*q/0	!QWWYq\1EFr5   r   c                 ,    t        j                  |       S N)r   
zeros_likerv   s    r3   r   zTestAAA.<lambda>   s    a(8 r5   c                     | S r   r   rv   s    r3   r   zTestAAA.<lambda>   s    A r5   c                     d| z  S )Nr   r   rv   s    r3   r   zTestAAA.<lambda>   s    QSTUQU r5   c                     | dz  | z   S )Nrf   r   rv   s    r3   r   zTestAAA.<lambda>   s    1q r5   c                     | dz  | z   S )Nr   r   rv   s    r3   r   zTestAAA.<lambda>   s    AqD1H r5   c                     dd| z   z  S )Nr   g?r   rv   s    r3   r   zTestAAA.<lambda>   s    37 r5   c                     ddd| z  z   z  S )Nr   r   r   rv   s    r3   r   zTestAAA.<lambda>   s    q!bd(| r5   c                     dd| z   | dz  z   z  S )Nr   r   rf   r   rv   s    r3   r   zTestAAA.<lambda>   s    1q51a4<(8 r5   c                     dd| dz  z   z  S )Nr   g)\(?r   r   rv   s    r3   r   zTestAAA.<lambda>   s    AtaQRd{O r5   c           	      x    t         t        t         |t                    t               |t              d       y )Nr   rS   )r   r   rO   r   )rJ   r   s     r3    test_polynomials_and_reciprocalsz(TestAAA.test_polynomials_and_reciprocals   s+     	?M4+>?DS		/r5   c                 v   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                  |j                                     d d g dd	
       y )N      r]                 .@r   r   rf   r   )r   r   r   r   g1E2>r   )
r   rP   r"   r`   r   r_   r   ri   rb   r+   r~   s      r3   test_spiralzTestAAA.test_spiral   su    FF2;;tS3ruu9_$?@266"%%'!)$%qwwy 122A64Pr5   c                 :   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        t        j                  t        j                  j                               dk        }t	        j
                  t              5  |j                         dk\  sJ 	 d d d        t        j                  t        j                  |j                               dk        |k  sJ t         ||      t        j                  t         j                  |z  dz        dd       y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r]   r   r   r   rf   r   <   F)r   rB   clean_upr   r   gAfc=gAfc=r\   )r   rP   r"   r`   rD   rM   rN   r   r_   r   rb   r-   r   r   )rJ   r0   r1   
n_spuriouss       r3   test_spiral_cleanupzTestAAA.test_spiral_cleanup   s"   FF2;;tS3ruu9_$?@ \\.) 	PArvvbeeAgai(qBOA	PVVBFF1::<0589
\\.) 	%::<1$$$	% vvbffQZZ\*U23j@@@!bffRUU1WQY/e%H	P 	P	% 	%s   8F+FFFc                     t        j                  ddd      }t        j                  |      }t        ||      }t        j                  ddd      }t	         ||      t        j                  |      d       y )Nr   r   i,  r   g?̔>r   )r   logspacesqrtr   r   )rJ   r0   rX   r1   zzs        r3   test_diag_scalingzTestAAA.test_diag_scaling  sV    KKQ$GGAJ1I[[a%"rwwr{6r5   N)__name__
__module____qualname__rK   rQ   rZ   rd   rj   rq   rx   r   r   r   rD   markparametrizer   r   r   r   r   r   r   r5   r3   r;   r;   R   s   
(D
*4*B0.H
9? [[-@%N=udK:GQG:E1E>qIDeTR94FHI1I1G& [[V8+~02D35K8:SUV
/V
/Q
I7r5   r;   c                       e Zd Zd Zd Zy)BatchFloaterHormannc                     t        j                  ||d      }|j                  d d | _        |j	                  d|j                  d         D cg c]  }t        ||       c}| _        || _        y c c}w Nr
   )r   moveaxisshape_batch_shapereshaper   _interps_axis)rJ   r   yaxisyis        r3   __init__zBatchFloaterHormann.__init__  sf    KK4$GGCRL#$99R#=? 4Ar; ?
?s   A0c                    | j                   D cg c]
  } ||       }}t        j                  || j                  |j                  z         }|j                  r!t        j
                  |d| j                        S |S c c}w r   )r   r   r   r   r   r   r   )rJ   r   interpr   s       r3   __call__zBatchFloaterHormann.__call__  sc    %)]]36VAY33JJq$++agg5612r{{1b$**-?a? 4s   A<N)r   r   r   r   r   r   r5   r3   r   r     s    @r5   r   c            
          e Zd Zd Zd Zd Zej                  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                  j                  d e
d            d        Zd Zd Zej                  j                  dg d      ej                  j                  dddg      d               Zd Zd Zej                  j                  dg d      ej                  j                  dg d       d!               Zy")#TestFloaterHormannc                     dd|dz  z   z  S )Nr   rf   r   )rJ   r0   s     r3   rungezTestFloaterHormann.runge   s    !ad(|r5   c                 P    dt        j                  |      |z   z  t        |      z  S r   )r   r8   r   )rJ   nds      r3   scalezTestFloaterHormann.scale#  s#    biilQ&')A,66r5   c                    t        j                  t        d      5  t        dggdgd       d d d        t        j                  t        d      5  t        dgdd       d d d        t        j                  t        d      5  t        dgddgddggd       d d d        t        j                  t        d      5  t        t        j
                  gdgd       d d d        t        j                  t        d	      5  t        dgdgd
       d d d        t        j                  t        d	      5  t        dgdgd       d d d        t        j                  t              5  t        dgdgd       d d d        y # 1 sw Y   SxY w# 1 sw Y   -xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   y xY w)Nz`x`r>   r   r   z`y`r=   r   r@   z`d`r
   r           )rD   rE   rF   r   r   rG   rH   rI   s    r3   test_ivzTestFloaterHormann.test_iv&  s~   ]]:U3 	8&uqcQ7	8]]:U3 	4&sA3	4]]:-OP 	C&saVaV,<B	C]]:X6 	;&x!:	;]]:U3 	7&sQC26	7]]:U3 	7&sQC26	7]]9% 	8&sQC37	8 	8	8 	8	4 	4	C 	C	; 	;	7 	7	7 	7	8 	8sS   E?FF=F&?F23F>%G
?F	FF#&F/2F;>G
Gz
d,expectedr   )r   r   r   r   r   r   r   r   r   r   r   r   )r   rf   rf   rf   rf   rf   rf   rf   rf   rf   r   rf   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r         r   r   r   r   r   r   r   r   )r   rt            r   r   r   r   rt   r   c                     t        j                  d      }t        |d|z  |      }t        |j                  j                         | j                  |j                  |      z  |dd       y )Nr   r   r   rz   r   rT   )r   r8   r   r   r*   ravelr   r   )rJ   r   expectedr   r1   s        r3   test_uniform_gridz$TestFloaterHormann.test_uniform_grid7  sS     IIbM&q#a%15		)$**QVVQ*??"	0r5   r   r   c                    t        j                  ddd      }t         j                  j                  d      }|j	                  ddd      }| j                  |      }|d   |d   z
  }t        |||      }d||dz   z  z  }t         ||      | j                  |      d	|
       t         ||      | j                  |             y )Nr   r   3   l   M+RYr   r   r   r   g|=r\   )	r   r"   r    r!   r$   r   r   r   r   )	rJ   r   r   r/   xxr   hr1   tols	            r3   
test_rungezTestFloaterHormann.test_rungeE  s    KK1b!ii##$67[[AD[)JJqMaD1Q4K&q!q1QqSk"tzz"~EDQqT4::a=)r5   c                    t        j                  dd      }||dz  z   }t        |t        j                  |      d      }t        j                  ddd      }||dz  z   }t	         ||      t        j                  |      d	       y )
Nr
   r   r      r   r   r   r   r   )r   r"   r   r#   r   )rJ   r   r0   r1   r   r   s         r3   test_complexzTestFloaterHormann.test_complexT  sl    KKA"H&q"&&)r:[[QD)"R%Z"rvvbz6r5   c                    t        j                  ddd      }t        j                  ddd      }t        j                  |      }t        |||j                  dz
        }t        ||      }t         ||       ||      dd       y )Nr   r   r   i  r   r   r   )r   r"   r#   r   r   r	   r   )rJ   r   r   r   r1   ps         r3   test_polyinterpz"TestFloaterHormann.test_polyinterp\  sk    KK1b![[At$FF1I&q!qvvax8#Aq)"qu5u=r5   y_shape))rf   )rf   r   r   )r   rt      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                  j                  d      }|j                  |      }t        j                  t        j                  t        j                  |      t        t        |j                  t        |      |j                  z                     |j                  |z         } ||      }	|	j                  |j                  |z   k(  sJ t        |	|d       y )Nr   r   l   wcBMYr   r   )r   r"   broadcast_toexpand_dimsr#   tuplerangelenr   r   r    r!   ndimr   )
rJ   r   r  r   r   r1   r/   r   yyrrs
             r3   test_trailing_dimz$TestFloaterHormann.test_trailing_dime  s	    KK1OONN266!9eE!S\A5E,F&GHGGg

 'q!,ii##$BCZZ!__NN266":uU277CL277<R-S'TUHHw
 rUxx288g----BT*r5   c                 t   t        j                  ddd      }t        |t        j                  t         j                  |z              }t        j
                  t         j                  j                  |j                         t        j                  d                  j                  d      }t        |d       y )Nr   r   r   r   r   r   gh㈵>)r   r"   r   r#   r`   rb   subtractouterr.   r8   ra   r   )rJ   r   r1   errs       r3   
test_zeroszTestFloaterHormann.test_zeros{  su    KK23'&q"&&q/:ffR[[&&qwwy"))B-@AEE1EM#t$r5   c                 ,   t        j                  dd      }t        |d|dz  z        }|j                         }|j                  dk\  |j                  dk  z  t        j
                  |j                        dk  z  }t        j                  |      dk(  sJ y )Nr
   r   rf   r   r   )r   r"   r   r+   r)   rb   imagr   )rJ   r   r1   r   masks        r3   test_no_polesz TestFloaterHormann.test_no_poles  sw    KKA&q!AqD&1GGI"1-&1HIvvd|q   r5   
eval_shape)r   )r   )r   r   )r
   r   r   c                    t         j                  j                  d      }d}ddd|f}d}t        j                  g || }t        j                  |j                  |      d|      }t        |||      }	t        |||      }
 |j                  |d	|i}t         |	|       |
|             t        j                  t        |	j                         t        j                  t        |	j                         y )
Nl   UU{ r   rf   r   r   )r   r   r
   r  r   )r   r    r!   r"   r   r   r   r$   r   rD   rE   NotImplementedErrorr.   r-   )rJ   r  r   r/   r   r   domainr   r   resrefs              r3   
test_batchzTestFloaterHormann.test_batch  s     ii##$45Aq!KK###KK

5)2t4(AD9!!QT2CKK1j1AA')3995)3<<8r5   N)r   r   r   r   r   r   rD   r   r   r   r  r   r   r   r  r  r  r  r   r5   r3   r   r     s)   78" [[\	
-.	
-.	
-.	
-.	
45, 00 [[S%),* -*7> [[Y(GH[[Z3):;+ < I+(%! [[\+;<[[VZ09 1 =9r5   r   )$mathr   numpyr   numpy.testingr   r   r   rD   r{   scipy.interpolater   r   r	   r   float64r   rU   r"   rO   r   r   concatenater   r   float32	complex64rm   r4   int16int32int64r9   r;   r   r   r   r5   r3   <module>r(     sh  4   J J   V V	HBHHRZZ $$$Bt,bkk#qrs+bnns4R4yj1#s+, C)C#DE2::rzz2<<"WX8 Y F8. C)C#DE288RXXrxx"@A4 B F4{7 {7|@ @|9 |9r5   