
    Ui5                     0   d dl Z d dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZ ej                            dd          ej                            dd	          ej                            d
d           G d d                                              ZdS )    N)array_namespace)xp_assert_closexp_assert_lessxp_assert_equal)_continued_fractionarray_api_strictzNo fancy indexing assignmentreasonz	jax.numpyzDon't support mutationz
dask.arrayzdask has issues with the shapesc                      e Zd Zej                            d          Ze                    ddd          ZddZ	ddZ
d Zd	 Zd
 Zej                            dg d          ej                            dg d          d                         Zej                            dd          ej                            dddg          ej                            dg d          d                                     Zd Zd Zd Zd Zd ZdS )TestContinuedFractionl   Q [    
   )size      ?c                     |dk    rd|z  }n|dk    r|}n|dz   }t          j        |          r%t           j        dk     rt          j        ||          }|S )Nr   r      2.0npisscalar__version__	full_like)selfnxys       /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/scipy/stats/tests/test_continued_fraction.pya1zTestContinuedFraction.a1   sc    66!AA!VVAAAA;q>> 	#bnu44Q""A    c                     |dk    rd|z  }n||z  }|d|z  dz
  z  }t          j        |          r%t           j        dk     rt          j        ||          }|S )Nr   r   r   r   r   )r   r   r   r   ones        r   b1zTestContinuedFraction.b1    sb    66!AAA#CqsQwA;q>> 	#bnu44Q""Ar   c                 0   t          |          }|dk    r<|                    ||                    t          j        |j                             }nD|dk    r|                    |          }n(d|                    |          z  t          j        dz  z   }|S )Nr   dtyper   r                 ?)r   r   asarraymathinfr%   logpi)r   r   r   xpr   s        r   log_a1zTestContinuedFraction.log_a1*   s    Q66QDHAG!D!D DEEAA!VVq		AABFF1II",Ar   c                     t          |          }|dk    r<|                    ||                    t          j        |j                             }n"||z
  }|t          j        d|z  dz
            z   }|S )Nr   r$   r   r   )r   r   r'   r(   r)   r%   r*   )r   r   r   r,   r   r!   s         r   log_b1zTestContinuedFraction.log_b14   sn    Q66QDHAG!D!D DEEAAa%Cdhq1uqy)))Ar   c                 z   | j         }| j        }d}t          j        t          |          5  t          d|           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ||ddi           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||dt          j        i           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||ddid	
           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||ddi           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||dt          j        i           d d d            n# 1 swxY w Y   t          j        t          |          5  t          ||dt          j        id	
           d d d            n# 1 swxY w Y   t          |
                    d          d	d          }t          ||fdddii| t          ||fdddii| d}t          j        t          |          5  t          ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ||d           d d d            d S # 1 swxY w Y   d S )Nz`a` and `b` must be callable.)matchr   z=`eps` and `tiny` must be \(or represent the logarithm of\)...epsi)
tolerancesy      ?      ?T)r3   r*   tinyr   y      ?        )argsr*   maxiterr3   z)`maxiter` must be a non-negative integer.r6   z`log` must be boolean.r   )r*   )r   r"   pytestraises
ValueErrorr   r   nanr)   dictr'   )r   r,   r   r"   messagekwargss         r   test_input_validationz+TestContinuedFraction.test_input_validation=   s   WW1]:W555 	' 	'2&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	']:W555 	' 	'A&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' S]:W555 	A 	ABE3<@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A]:W555 	D 	DBE26?CCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D]:W555 	L 	LBE4=dKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L]:W555 	@ 	@BFA;????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@]:W555 	E 	EBFBF3CDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E]:W555 	O 	OBFBF3CNNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 2::f--4CCCBFFs|FvFFFBGG}GGGG=]:W555 	4 	4B3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 +]:W555 	/ 	/BA....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   A		AA/BBB4CCC;D&&D*-D*E..E25E2F55F9<F9HH
H
, III	K((K,/K,L00L47L4r%   )float32float64	complex64
complex128shape) )r   )   )rG   r   c                 $   t          t          |          }t          ||          }t          j                            d          }|                    |                              |          }|                    d          r.||                    |                              |          dz  z   n|}|                    ||          }t          | j        | j	        |f          }|
                    |          }	t          |j        |	           d S )N    8eE cr&   r$   r5   )getattrr   randomdefault_rngastype
startswithr'   r   r   r"   tanr   f)
r   rE   r%   r,   np_dtypexp_dtyperngr   resrefs
             r   
test_basicz TestContinuedFraction.test_basica   s     2u%%2u%%i##$455JJu$$X..9>9I9I#9N9NUA

5!!((222555TUJJqJ))!$'47!>>>ffQiis#####r   torchzpytorch/pytorch#136063r	   rA   rB   c                    t           j        dk     r|dk    rt          j        d           t	          t           |          }t           j                            d          }|                    |                              |          }|                    |          }t          | j
        | j        |dz   fd          }|                    |          }t          |                    |                    |j                            |           d S )N2rA   z*Scalar dtypes only respected after NEP 50.rI   y                T)r5   r*   )r   r   r9   skiprL   rM   rN   rO   r'   r   r-   r/   rQ   r   exprealrR   )	r   rE   r%   r,   rS   rU   r   rV   rW   s	            r   test_logzTestContinuedFraction.test_logp   s     NS  u	'9'9KDEEE2u%%i##$455JJu$$X..JJqMM!$+t{!b&PTUUUffQiirwwsu~~..44444r   c                    t           j                            d          }|                    |                                |j                  }|                    |          }t          | j        | j        |fd          }|j	        dk    sJ t          | j        | j        |fd          }|j	        dk    sJ t          |                    |j        |z
            |                    |j        |z
                       d S )NrI   r$   rG   r5   r6      )r   rM   rN   r'   rB   rQ   r   r   r"   nitr   absrR   )r   r,   rU   r   rW   res1res2s          r   test_maxiterz"TestContinuedFraction.test_maxiter   s    i##$455JJszz||2:J66ffQii"47DG1$JJJx1}}}}"47DG1$JJJx1}}}}rvvdfsl++RVVDFSL-A-ABBBBBr   c                    |                     d|j                  }|                    |          }t          | j        | j        |fddi          }t          | j        | j        |f          }t          |j        |j                   t          |                    |j	        |z
            |                    |j	        |z
                       d S )Nr   r$   r2   gư>)r5   r3   rK   )
r'   rB   rQ   r   r   r"   r   rc   rd   rR   )r   r,   r   rW   re   rf   s         r   test_epszTestContinuedFraction.test_eps   s    JJs"*J--ffQii"47DG1$/4dm= = ="47DG1$???tx***rvvdfsl++RVVDFSL-A-ABBBBBr   c                     fdfdd\  _         _         t          |                    d          f          }|j         j         cxk    rj         cxk    r|j        dz   k    sn J d S )Nc                 .    xj         dz  c_         | |z  S Nr   nfev)r   r   as     r   ro   z+TestContinuedFraction.test_feval.<locals>.a       FFaKFFq5Lr   c                 .    xj         dz  c_         | |z  S rl   rm   )r   r   bs     r   rr   z+TestContinuedFraction.test_feval.<locals>.b   rp   r   )r   r         ?rK   r   )rn   r   r'   rc   )r   r,   rV   ro   rr   s      @@r   
test_fevalz TestContinuedFraction.test_feval   s    	 	 	 	 		 	 	 	 	 !!Qbjjnn->???x16::::QV::::sw{::::::::r   c                 J   |                     ddt          j        g|j                  }t	          | j        | j        |fd          }t          |j        |                     g d                     t          |j	        |                     g d|j
                             d S )Nr   r   r$      ra   )TFF)r   )r'   r   r<   rB   r   r   r"   r   successstatusint32)r   r,   r   rV   s       r   test_statusz!TestContinuedFraction.test_status   s    JJ2rvbjJ99!$'47!rJJJRZZ0D0D0D%E%EFFF
BJJ{{{"(J$K$KLLLLLr   c                     |                     d          t          fdfdd          }t          |j        |                     d                     |j        |j        dz
  cxk    rdk    sn J d S )Nr   c                     S NrF   r   r!   s    r   <lambda>z:TestContinuedFraction.test_special_cases.<locals>.<lambda>   s    C r   c                     S r   rF   r   s    r   r   z:TestContinuedFraction.test_special_cases.<locals>.<lambda>   s    3 r   r   r8   rs   )r'   r   r   rR   rc   rn   )r   r,   rV   r!   s      @r   test_special_casesz(TestContinuedFraction.test_special_cases   s    jjmm!----JJJrzz"~~...w#(Q,++++!++++++++r   N)r   )__name__
__module____qualname__r   rM   rN   rU   uniformpr   r"   r-   r/   r@   r9   markparametrizerX   skip_xp_backendsr_   rg   ri   rt   r|   r   rF   r   r   r   r      s        )

 3
4
4CAr##A	 	 	 	       "/ "/ "/H [W&W&W&WXX[W&>&>&>??$ $ @? YX$ [!!'2J!KK[Wy)&<==[W&>&>&>??
5 
5 @? >= LK
5C C CC C C; ; ;M M M, , , , ,r   r   )r(   r9   numpyr   scipy._lib._array_apir   scipy._lib._array_api_no_0dr   r   r   scipy.stats._continued_fractionr   r   r   r   rF   r   r   <module>r      s         1 1 1 1 1 1 X X X X X X X X X X ? ? ? ? ? ? 09WXXk2JKK l3TUU\, \, \, \, \, \, \, VU	 LK YX\, \, \,r   