
    Џkh5                        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                  j                  dd      ej                  j                  dd	      ej                  j                  d
d       G d d                           Zy)    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                  j                  d      Zej                  ddd      ZddZ	ddZ
d Zd Zd	 Zej                  j!                  d
g d      ej                  j!                  dg d      d               Zej                  j%                  dd      ej                  j!                  d
ddg      ej                  j!                  dg d      d                      Zd Zd Zd Zd Zd Zy)TestContinuedFractionl   Q [    
   )sizec                     |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       e/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/stats/tests/test_continued_fraction.pya1zTestContinuedFraction.a1   sT    6!A!VAAA;;q>bnnu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    sW    6!AA#CqsQwA;;q>bnnu4Q"Ar   c                 "   t        |      }|dk(  r>|j                  ||j                  t        j                  |j
                               }|S |dk(  r|j                  |      }|S d|j                  |      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6QDHHAGG!D DEA
 	 !Vq	A  BFF1I",Ar   c                     t        |      }|dk(  r>|j                  ||j                  t        j                  |j
                               }|S ||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   sm    Q6QDHHAGG!D DEA  a%Cdhhq1uqy))Ar   c                    | j                   }| j                  }d}t        j                  t        |      5  t        d|       d d d        t        j                  t        |      5  t        |d       d d d        d}t        j                  t        |      5  t        ||ddi       d d d        t        j                  t        |      5  t        ||dt        j                  i       d d d        t        j                  t        |      5  t        ||ddid	
       d d d        t        j                  t        |      5  t        ||ddi       d d d        t        j                  t        |      5  t        ||dt        j                  i       d d d        t        j                  t        |      5  t        ||dt        j                  id	
       d d d        t        |j                  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        d}t        j                  t        |      5  t        ||d       d d d        y # 1 sw Y   Hx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   xxY w# 1 sw Y   Cx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`a` and `b` must be callable.)matchr   z=`eps` and `tiny` must be \(or represent the logarithm of\)...epsi)
tolerancesy      ?      ?T)r2   r)   tinyr   y      ?        )argsr)   maxiterr2   z)`maxiter` must be a non-negative integer.r5   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   WWWW1]]:W5 	'2&	']]:W5 	'A&	' S]]:W5 	ABE3<@	A]]:W5 	DBE266?C	D]]:W5 	LBE4=dK	L]]:W5 	@BFA;?	@]]:W5 	EBFBFF3CD	E]]:W5 	OBFBFF3CN	O 2::f-4CBFs|FvFBG}GG=]]:W5 	4B3	4 +]]:W5 	/BA.	/ 	/9	' 	'	' 	'	A 	A	D 	D	L 	L	@ 	@	E 	E	O 	O	4 	4	/ 	/sw   J	&JJ#J0J=K
7K9 K$=K11K=	JJ #J-0J:=K
KK!$K.1K:=Lr$   )float32float64	complex64
complex128shape) )r   )   )rF   r   c                    t        t        |      }t        ||      }t        j                  j                  d      }|j                  |      j	                  |      }|j                  d      r&||j                  |      j	                  |      dz  z   n|}|j                  ||      }t        | j                  | j                  |f      }|j                  |      }	t        |j                  |	       y )N    8eE cr%   r#   r4   )getattrr   randomdefault_rngastype
startswithr&   r   r   r!   tanr   f)
r   rD   r$   r+   np_dtypexp_dtyperngr   resrefs
             r   
test_basicz TestContinuedFraction.test_basica   s     2u%2u%ii##$45JJu$$X.9>9I9I#9NA

5!((2255TUJJqJ)!$''477!>ffQis#r   torchzpytorch/pytorch#136063r	   r@   rA   c                    t         j                  dk  r|dk(  rt        j                  d       t	        t         |      }t         j
                  j                  d      }|j                  |      j                  |      }|j                  |      }t        | j                  | j                  |dz   fd      }|j                  |      }t        |j                  |j                  |j                               |       y )N2r@   z*Scalar dtypes only respected after NEP 50.rH   y                T)r4   r)   )r   r   r8   skiprK   rL   rM   rN   r&   r   r,   r.   rP   r   exprealrQ   )	r   rD   r$   r+   rR   rT   r   rU   rV   s	            r   test_logzTestContinuedFraction.test_logp   s     NNS u	'9KKDE2u%ii##$45JJu$$X.JJqM!$++t{{!b&PTUffQirwwsuu~.4r   c                    t         j                  j                  d      }|j                  |j                         |j                        }|j                  |      }t        | j                  | j                  |fd      }|j                  dk(  sJ t        | j                  | j                  |fd      }|j                  dk(  sJ t        |j                  |j                  |z
        |j                  |j                  |z
               y )NrH   r#   rF   r4   r5      )r   rL   rM   r&   rA   rP   r   r   r!   nitr   absrQ   )r   r+   rT   r   rV   res1res2s          r   test_maxiterz"TestContinuedFraction.test_maxiter   s    ii##$45JJszz|2::J6ffQi"477DGG1$Jxx1}}"477DGG1$Jxx1}}rvvdffsl+RVVDFFSL-ABr   c                    |j                  d|j                        }|j                  |      }t        | j                  | j
                  |fddi      }t        | j                  | j
                  |f      }t        |j                  |j                         t        |j                  |j                  |z
        |j                  |j                  |z
               y )N      ?r#   r1   gư>)r4   r2   rJ   )
r&   rA   rP   r   r   r!   r   rb   rc   rQ   )r   r+   r   rV   rd   re   s         r   test_epszTestContinuedFraction.test_eps   s    JJs"**J-ffQi"477DGG1$/4dm="477DGG1$?txx*rvvdffsl+RVVDFFSL-ABr   c                     fdfdd\  _         _         t        |j                  d      f      }|j                   j                   cxk(  r#j                   cxk(  r|j                  dz   k(  sJ  J y )Nc                 8    xj                   dz  c_         | |z  S Nr   nfev)r   r   as     r   ro   z+TestContinuedFraction.test_feval.<locals>.a       FFaKFq5Lr   c                 8    xj                   dz  c_         | |z  S rl   rm   )r   r   bs     r   rr   z+TestContinuedFraction.test_feval.<locals>.b   rp   r   )r   r         ?rJ   r   )rn   r   r&   rb   )r   r+   rU   ro   rr   s      @@r   
test_fevalz TestContinuedFraction.test_feval   sg    		 !!Qbjjn->?xx166:QVV:sww{:::::r   c                 \   |j                  ddt        j                  g|j                        }t	        | j
                  | j                  |fd      }t        |j                  |j                  g d             t        |j                  |j                  g d|j                               y )Nr   r   r#      r`   )TFF)r   )r&   r   r;   rA   r   r   r!   r   successstatusint32)r   r+   r   rU   s       r   test_statusz!TestContinuedFraction.test_status   ss    JJ2rvvbjjJ9!$''477!rJRZZ0D%EF

BJJ{"((J$KLr   c                     |j                  d      t        fdfdd      }t        |j                  |j                  d             |j                  |j
                  dz
  cxk(  rdk(  sJ  J y )Nr   c                     S NrE   r   r    s    r   <lambda>z:TestContinuedFraction.test_special_cases.<locals>.<lambda>   s    C r   c                     S r   rE   r   s    r   r   z:TestContinuedFraction.test_special_cases.<locals>.<lambda>   s    3 r   r   r7   rs   )r&   r   r   rQ   rb   rn   )r   r+   rU   r    s      @r   test_special_casesz(TestContinuedFraction.test_special_cases   sY    jjm!-Jrzz"~.ww#((Q,+!+++++r   N)rh   )__name__
__module____qualname__r   rL   rM   rT   uniformpr   r!   r,   r.   r?   r8   markparametrizerW   skip_xp_backendsr^   rf   ri   rt   r|   r   rE   r   r   r   r      s    ))

 3
4CAr#A	"/H [[W&WX[[W&>?$ @ Y$ [[!!'2J!K[[Wy)&<=[[W&>?
5 @ > L
5CC;M,r   r   )r'   r8   numpyr   scipy._lib._array_apir   scipy._lib._array_api_no_0dr   r   r   scipy.stats._continued_fractionr   r   r   r   rE   r   r   <module>r      s       1 X X ? 09WXk2JK l3TU\, \, V	 L Y\,r   