
    Cpj                     D   S SK r S SKrS SKrS SKJr  S SKJrJrJ	r	  S SK
Jr  \R                  R                  SSS9\R                  R                  SS	S9\R                  R                  S
SS9\R                  R                  SSS9 " S S5      5       5       5       5       rg)    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                      \ rS rSr\R
                  R                  S5      r\R                  SSSS9r	SS jr
SS jrS rS	 rS
 r\R                   R#                  S/ SQ5      \R                   R#                  S/ SQ5      S 5       5       r\R                   R'                  SSS9\R                   R#                  SSS/5      \R                   R#                  S/ SQ5      S 5       5       5       rS rS rS rS rS rSrg)TestContinuedFraction   l   Q [    
   )sizec                 @    US:X  a  SU-  nU$ US:X  a  UnU$ US-  * nU$ )Nr   r       )selfnxys       e/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/stats/tests/test_continued_fraction.pya1TestContinuedFraction.a1   s@    6!A
 	 !VA  AA    c                 >    US:X  a  SU-  nU$ X"-  nUSU-  S-
  -  nU$ )Nr   r   r   r   )r   r   r   r   ones        r   b1TestContinuedFraction.b1   s8    6!A  #CqsQwAr   c                    [        U5      nUS:X  a:  UR                  X#R                  [        R                  UR
                  S9* 5      nU$ US:X  a  UR                  U5      nU$ SUR                  U5      -  [        R                  S-  -   nU$ )Nr   dtyper   r                 ?)r   	full_likeasarraymathinfr#   logpi)r   r   r   xpr   s        r   log_a1TestContinuedFraction.log_a1'   s    Q6QDHHAGG!D DEA
 	 !Vq	A  BFF1I",Ar   c                     [        U5      nUS:X  a:  UR                  X#R                  [        R                  UR
                  S9* 5      nU$ X"-
  nU[        R                  " SU-  S-
  5      -   nU$ )Nr   r"   r   r   )r   r%   r&   r'   r(   r#   r)   )r   r   r   r+   r   r   s         r   log_b1TestContinuedFraction.log_b11   si    Q6QDHHAGG!D DEA  %Cdhhq1uqy))Ar   c                    U R                   nU R                  nSn[        R                  " [        US9   [        SU5        S S S 5        [        R                  " [        US9   [        US5        S S S 5        Sn[        R                  " [        US9   [        X#SS0S9  S S S 5        [        R                  " [        US9   [        X#S[        R                  0S9  S S S 5        [        R                  " [        US9   [        X#SS0S	S
9  S S S 5        [        R                  " [        US9   [        X#SS0S9  S S S 5        [        R                  " [        US9   [        X#S[        R                  0S9  S S S 5        [        R                  " [        US9   [        X#S[        R                  0S	S
9  S S S 5        [        UR                  S5      S	SS9n[        X#4SSS00UD6  [        X#4SSS00UD6  Sn[        R                  " [        US9   [        X#SS9  S S S 5        Sn[        R                  " [        US9   [        X#SS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNy= f! , (       d  f       GNO= f! , (       d  f       GN$= f! , (       d  f       N= f! , (       d  f       g = f)Nz`a` and `b` must be callable.)matchr   z=`eps` and `tiny` must be \(or represent the logarithm of\)...epsi)
tolerancesy      ?      ?T)r4   r)   tinyr   y      ?        )argsr)   maxiterr4   z)`maxiter` must be a non-negative integer.r7   z`log` must be boolean.r   )r)   )r   r   pytestraises
ValueErrorr   npnanr(   dictr&   )r   r+   r   r   messagekwargss         r   test_input_validation+TestContinuedFraction.test_input_validation:   s   WWWW1]]:W52& 6]]:W5A& 6 S]]:W5E3<@ 6]]:W5E266?C 6]]:W5E4=dK 6]]:W5FA;? 6]]:W5FBFF3CD 6]]:W5FBFF3CN 6 2::f-4CBFs|FvFBG}GG=]]:W53 6 +]]:W5A. 659 6555 655555555555 65 65sw   I"I"I4 J<J+J*J<KK <K1
I"
I14
J
J
J'*
J9<
K
K 
K.1
K?r#   )float32float64	complex64
complex128shape)r   )r   )   )rI   r   c                    [        [        U5      n[        X25      n[        R                  R                  S5      nUR                  U5      R	                  U5      nUR                  S5      (       a%  XvR                  U5      R	                  U5      S-  -   OUnUR                  XuS9n[        U R                  U R                  U4S9nUR                  U5      n	[        UR                  U	5        g )N    8eE cr$   r"   r6   )getattrr=   randomdefault_rngastype
startswithr&   r   r   r   tanr   f)
r   rH   r#   r+   np_dtypexp_dtyperngr   resrefs
             r   
test_basic TestContinuedFraction.test_basic^   s     2u%2%ii##$45JJu$$X.9>9I9I#9N9NA

5!((2255TUJJqJ)!$''477!>ffQis#r   torchzpytorch/pytorch#136063r	   rD   rE   c                    [        [        U5      n[        R                  R                  S5      nUR                  U5      R	                  U5      nUR                  U5      n[        U R                  U R                  US-   4SS9nUR                  U5      n[        UR                  UR                  UR                  5      5      U5        g )NrK   y                T)r6   r)   )rN   r=   rO   rP   rQ   r&   r   r,   r/   rS   r   exprealrT   )	r   rH   r#   r+   rU   rW   r   rX   rY   s	            r   test_logTestContinuedFraction.test_logm   s     2u%ii##$45JJu$$X.JJqM!$++t{{!b&PTUffQirwwsuu~.4r   c                    [         R                  R                  S5      nUR                  UR                  5       UR                  S9nUR                  U5      n[        U R                  U R                  U4SS9nUR                  S:X  d   e[        U R                  U R                  U4SS9nUR                  S:X  d   e[        UR                  UR                  U-
  5      UR                  UR                  U-
  5      5        g )NrK   r"   rI   r6   r7      )r=   rO   rP   r&   rE   rS   r   r   r   nitr   absrT   )r   r+   rW   r   rY   res1res2s          r   test_maxiter"TestContinuedFraction.test_maxiterz   s    ii##$45JJszz|2::J6ffQi"477DGG1$Jxx1}}"477DGG1$Jxx1}}rvvdffsl+RVVDFFSL-ABr   c                    UR                  SUR                  S9nUR                  U5      n[        U R                  U R
                  U4SS0S9n[        U R                  U R
                  U4S9n[        UR                  UR                  5        [        UR                  UR                  U-
  5      UR                  UR                  U-
  5      5        g )N      ?r"   r3   gư>)r6   r4   rM   )
r&   rE   rS   r   r   r   r   re   rf   rT   )r   r+   r   rY   rg   rh   s         r   test_epsTestContinuedFraction.test_eps   s    JJs"**J-ffQi"477DGG1$/4dm="477DGG1$?txx*rvvdffsl+RVVDFFSL-ABr   c                    ^^ U4S jmU4S jmSu  Tl         Tl         [        TTUR                  S5      4S9nUR                   TR                   s=:X  a%  TR                   s=:X  a  UR                  S-   :X  d   e   eg )Nc                 6   > T=R                   S-  sl         X-  $ Nr   nfev)r   r   as     r   rt   +TestContinuedFraction.test_feval.<locals>.a       FFaKF5Lr   c                 6   > T=R                   S-  sl         X-  $ rq   rr   )r   r   bs     r   rx   +TestContinuedFraction.test_feval.<locals>.b   rv   r   )r   r         ?rM   r   )rs   r   r&   re   )r   r+   rX   rt   rx   s      @@r   
test_feval TestContinuedFraction.test_feval   sg    		 !!Qbjjn->?xx166:QVV:sww{:::::r   c                 J   UR                  SS[        R                  /UR                  S9n[	        U R
                  U R                  U4SS9n[        UR                  UR                  / SQ5      5        [        UR                  UR                  / SQUR                  S95        g )Nr   r   r"      rc   )TFF)r   )r&   r=   r>   rE   r   r   r   r   successstatusint32)r   r+   r   rX   s       r   test_status!TestContinuedFraction.test_status   ss    JJ2rvvbjjJ9!$''477!rJRZZ0D%EF

BJJ{"((J$KLr   c                    ^ UR                  S5      m[        U4S jU4S jSS9n[        UR                  UR                  S5      5        UR                  UR
                  S-
  s=:X  a  S:X  d   e   eg )Nr   c                    > T$ Nr   r   r   s    r   <lambda>:TestContinuedFraction.test_special_cases.<locals>.<lambda>   s    Cr   c                    > T$ r   r   r   s    r   r   r      s    3r   r   r9   rz   )r&   r   r   rT   re   rs   )r   r+   rX   r   s      @r   test_special_cases(TestContinuedFraction.test_special_cases   sY    jjm!-Jrzz"~.ww#((Q,+!+++++r   r   N)rl   )__name__
__module____qualname____firstlineno__r=   rO   rP   rW   uniformpr   r   r,   r/   rB   r:   markparametrizerZ   skip_xp_backendsr`   ri   rm   r{   r   r   __static_attributes__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'   r:   numpyr=   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   