
    >qj                     \   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      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 shapesFprivatec                      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  }|S |dk(  r|}|S |dz   }|S )Nr   r       )selfnxys       h/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/scipy/stats/tests/test_continued_fraction.pya1zTestContinuedFraction.a1   s@    6!A
 	 !VA  AA    c                 >    |dk(  rd|z  }|S ||z  }|d|z  dz
  z  }|S )Nr   r   r   r   )r   r   r   r   ones        r   b1zTestContinuedFraction.b1   s:    6!A  A#CqsQw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   	full_like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_b11   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)r/   r&   tinyr   y      ?        )argsr&   maxiterr/   z)`maxiter` must be a non-negative integer.r2   z`log` must be boolean.r   )r&   )r   r   pytestraises
ValueErrorr   np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   )r   )   )rC   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   r1   )getattrr8   randomdefault_rngastype
startswithr#   r   r   r   tanr   f)
r   rB   r    r(   np_dtypexp_dtyperngr   resrefs
             r   
test_basicz TestContinuedFraction.test_basic^   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>   r?   c                    t        t        |      }t        j                  j                  d      }|j                  |      j	                  |      }|j                  |      }t        | j                  | j                  |dz   fd      }|j                  |      }t        |j                  |j                  |j                              |       y )NrE   y                T)r1   r&   )rH   r8   rI   rJ   rK   r#   r   r)   r+   rM   r   exprealrN   )	r   rB   r    r(   rO   rQ   r   rR   rS   s	            r   test_logzTestContinuedFraction.test_logm   s     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 )NrE   r   rC   r1   r2      )r8   rI   rJ   r#   r?   rM   r   r   r   nitr   absrN   )r   r(   rQ   r   rS   res1res2s          r   test_maxiterz"TestContinuedFraction.test_maxiterz   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   r.   gư>)r1   r/   rG   )
r#   r?   rM   r   r   r   r   r]   r^   rN   )r   r(   r   rS   r_   r`   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   rj   z+TestContinuedFraction.test_feval.<locals>.a       FFaKFq5Lr   c                 8    xj                   dz  c_         | |z  S rg   rh   )r   r   bs     r   rm   z+TestContinuedFraction.test_feval.<locals>.b   rk   r   )r   r         ?rG   r   )ri   r   r#   r]   )r   r(   rR   rj   rm   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#   r8   r9   r?   r   r   r   r   successstatusint32)r   r(   r   rR   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 Nr   r   r   s    r   <lambda>z:TestContinuedFraction.test_special_cases.<locals>.<lambda>   s    C r   c                     S rz   r   r{   s    r   r|   z:TestContinuedFraction.test_special_cases.<locals>.<lambda>   s    3 r   r   r4   rn   )r#   r   r   rN   r]   ri   )r   r(   rR   r   s      @r   test_special_casesz(TestContinuedFraction.test_special_cases   sY    jjm!-Jrzz"~.ww#((Q,+!+++++r   N)rc   )__name__
__module____qualname__r8   rI   rJ   rQ   uniformpr   r   r)   r+   r=   r5   markparametrizerT   skip_xp_backendsrY   ra   rd   ro   rw   r~   r   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$   r5   numpyr8   scipy._lib._array_apir   scipy._lib._array_api_no_0dr   r   r   scipy.stats._continued_fractionr   r   r   uses_xp_capabilitiesr   r   r   r   <module>r      s       1 X X ? 09WXk2JK l3TU!!%	!:V, V, ; V	 L YV,r   