
    \h"                         S SK Jr  S SKJrJrJrJrJrJrJ	r	J
r
JrJrJrJrJrJrJr  S SKJr  S rS rS rS rS rS	 rS
 rS rS rS rS rS rS r S r!S r"g)    )permutations)	bit_scan1remove	bit_scan0is_fermat_prpis_euler_prpis_strong_prpgcdext_lucas_sequenceis_fibonacci_prpis_lucas_prpis_selfridge_prpis_strong_lucas_prpis_strong_selfridge_prpis_bpsw_prpis_strong_bpsw_prp)raisesc                  \   [        S5      b   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5       H.  n [        SU -  5      U :X  d   e[        SU -  S-  5      U :X  a  M.   e   [        S	5       H  n SS	-  SU -  -   n[        U5      U :X  a  M   e   [        SS
-  5      S
:X  d   e[        SS-  S-  5      S:X  d   e[        SS5       H#  n SU -  n[        U* 5      [        U5      :X  a  M#   e   g )Nr            id   iiz  i  iAB i$. l   >qKwl/-:
   )r   range)inbigs      Y/var/www/auris/envauris/lib/python3.13/site-packages/sympy/external/tests/test_ntheory.pytest_bit_scan1r       sG   Q<Q<1R=AQ<1Q<1R=A3Za A%%%!q&E)*a///  3Z#X!q&!|q     Q'\"g---a6k5()V3331b\1f#)C.000     c                      [        S5      b   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   eg )Nr   r   r   )r    r!   r   test_bit_scan0r%       sH    R=   Q<1Q<1R=Ar!   c                      [        [        S 5        [        SS5      S:X  d   e[        SS5       H7  n [        SS5       H$  nS H  n[        X U-  -  U 5      X!4:X  a  M   e   M&     M9     g )	Nc                      [        SS5      $ )Nr   )r   r$   r!   r   <lambda>test_remove.<locals>.<lambda>(   s
    va|r!   r      )r   r   r   r   i  )r      e   i  )r   
ValueErrorr   r   )fyzs      r   test_remover1   '   sh    
:+,!Q<6!!!1b\q$A'a1fa(QF222 (   r!   c                     [        SS5      S:X  d   e[        SS5      S:X  d   e[        SS5      S:X  d   e[        SS5       H  n [        U S5      [        U * S5      s=:X  a  S	:X  d   e   e[        U S
5      [        U * S
5      s=:X  a  S:X  d   e   e[        X 5      [        U * U 5      s=:X  a
  U SS4:X  d   e   e[        X * 5      [        U * U * 5      s=:X  a  U SS
4:X  a  M   e   e   [        SS5       HQ  n [        SU 5      [        SU * 5      s=:X  a  S:X  d   e   e[        S
U 5      [        S
U * 5      s=:X  a	  S:X  a  MN   e   e   [        / SQS5       H,  u  p[        X5      u  p4nX1U-  X%-  -   s=:X  a	  S:X  a  M)   e   e   g )Nr   )r   r   r   r*   )r*   r   r      )r3   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   )r   r   r   )    r*      1      )r
   r   r   )r   abgxr/   s         r   test_gcdextr<   0   s   !Q<9$$$!Q<9$$$!Q<9$$$1b\a|vqb!}9	99999a}r2<*<<<<<a|vqb!}9Aq	99999a}rA2<1a*<<<<<	  1b\a|va!}9	99999b!}rA2<*<<<<<  3Q7,aaC!#I"""""" 8r!   c                     [        [        S 5        [        [        S 5        [        SS5      (       a   e[        SS5      (       d   e[        SS5      (       d   e[        SS5      (       d   e[        SS	5      (       d   e/ S
Qn U  H  n[        US5      (       a  M   e   / SQn U  H  n[        US5      (       a  M   e   g )Nc                      [        SS5      $ Nr   r   r   r$   r!   r   r(   $test_is_fermat_prp.<locals>.<lambda>F       }Q3r!   c                      [        SS5      $ Nr5   r   r@   r$   r!   r   r(   rA   G       }Q2r!   r   r*   r   r3   r7   r5   )U  1    Q  k    q    	  i
        i  i  I  )   U   [   rG   i  i  rH   rI     rJ   i  i  rK   i-  i  rL   c  rM   )r   r-   r   pseudorpimer   s     r   test_is_fermat_prpr[   D   s    
:34
:23 Q"""" AAQ!$$$$CKQ"""" CKQ"""" r!   c                     [        [        S 5        [        [        S 5        [        SS5      (       a   e[        SS5      (       d   e[        SS5      (       d   e[        SS5      (       d   e[        SS	5      (       d   e/ S
Qn U  H  n[        US5      (       a  M   e   / SQn U  H  n[        US5      (       a  M   e   g )Nc                      [        SS5      $ r?   r   r$   r!   r   r(   #test_is_euler_prp.<locals>.<lambda>a   s    |Ar2r!   c                      [        SS5      $ rD   r^   r$   r!   r   r(   r_   b   s    |Aq1r!   r   r*   r   r3   r7   rF   r5   )rH   rJ   rL   rM   rN   rO   rQ   rR   rS        i!!  Y)  i2  =  )y   rW   rL   rX   rP     i     "  rc   s0  ia<  rd   @  !I  )r   r-   r   rY   s     r   test_is_euler_prprl   _   s    
:23
:12 Aq!!!! 11A####@KAq!!!! CKAq!!!! r!   c                     [        [        S 5        [        [        S 5        [        SS5      (       a   e[        SS5      (       d   e[        SS5      (       d   e[        SS5      (       d   e[        SS	5      (       d   e/ S
Qn U  H  n[        US5      (       a  M   e   / SQn U  H  n[        US5      (       a  M   e   g )Nc                      [        SS5      $ r?   r	   r$   r!   r   r(   $test_is_strong_prp.<locals>.<lambda>|   rB   r!   c                      [        SS5      $ rD   ro   r$   r!   r   r(   rp   }   rE   r!   r   r*   r   r3   r7   rF   r5   )rN   rQ   rR   rS   rb   rd   ir  i/  i  i  i  i# i: )re   rW   rX   rf   rg   rh   rc   ri   rj   rk   iK  i[  i{  i  i]  )r   r-   r	   rY   s     r   test_is_strong_prprr   z   s    
:34
:23 Q"""" AAQ!$$$$=KQ"""" DKQ"""" r!   c            
      l   S n S nSn[        SS5       H  n[        SS5       H  nUS-  SU-  -
  nUS:X  a  M  U " X4U5      nU" X4U5      n[        S	S
S5       HP  n[        U5       H>  n	[        XXI5      u  pnXU	   U-  :X  d   eXU	   U-  :X  d   e[        XIU5      U:X  a  M>   e   MR     M     M     g )Nc                 p    S/U-  nSUS'   [        SU5       H  nXUS-
     -  XUS-
     -  -
  X4'   M     U$ )Nr   r   r   r   PQlengtharrayks        r   lucas_u$test_lucas_sequence.<locals>.lucas_u   sN    faq&!AQ<'!AEl*::EH "r!   c                 x    S/U-  nSUS'   XS'   [        SU5       H  nXUS-
     -  XUS-
     -  -
  X4'   M     U$ )Nr   r   r   ru   rv   s        r   lucas_v$test_lucas_sequence.<locals>.lucas_v   sU    faaq&!AQ<'!AEl*::EH "r!      ir   r   r3   r   r*   r   )r   r   pow)r|   r   ry   rw   rx   Dusvsr   r{   UVQks                r   test_lucas_sequencer      s     F3^sBA1qs
AAvv&Bv&B1c1%vA.qQ:HA"1	>)>1	>)>qQ<2---	 ' &   r!   c                     [        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        SSS5      (       a   e[        SSS5      (       d   e[        SS	S
5      (       d   e[        SSS5      (       d   e[        SSS
5      (       d   e/ SQn U  H  n[        USS
5      (       a  M   e   g )Nc                      [        SSS5      $ Nr*   r   r   r   r$   r!   r   r(   'test_is_fibonacci_prp.<locals>.<lambda>       /1a8r!   c                      [        SSS5      $ )Nr*   r   r   r$   r!   r   r(   r      s    /2q9r!   c                      [        SSS5      $ )Nr*   r5   r   r   r$   r!   r   r(   r      r   r!   c                      [        SSS5      $ Nr   r5   r   r   r$   r!   r   r(   r      s    /1b9r!   r   r*   r   r5      r   r7   r   rF      )i  rO   i
  i  U    A  }*  3  ;  i_  iar  i  )r   r-   r   rY   s     r   test_is_fibonacci_prpr      s    
:89
:9:
:89
:9:  1a(((( Aq!$$$$Aq"%%%%B1%%%%GQ++++=K1b)))) r!   c                  t   [        [        S 5        [        [        S 5        [        [        S 5        [        SSS5      (       a   e[        SSS5      (       d   e[        SSS	5      (       d   e[        S
SS5      (       d   e[        SSS5      (       d   e/ SQn U  H  n[        USS	5      (       a  M   e   g )Nc                      [        SSS5      $ r   r   r$   r!   r   r(   #test_is_lucas_prp.<locals>.<lambda>   s    |Aq!4r!   c                      [        SSS5      $ r   r   r$   r!   r   r(   r      s    |Aq"5r!   c                      [        SSS5      $ NrT   r*   r   r   r$   r!   r   r(   r      s    |B15r!   r   r*   r   r5   r   r   r7   r   rF   r   )C  y  rX     r   r   ra   r   i  r   -  r   i6  r   iB  )r   r-   r   rY   s     r   test_is_lucas_prpr      s    
:45
:56
:56 Aq!$$$$ 1a    1b!!!!Aq!!!!B''''CKAq"%%%% r!   c                     [        [        S 5        [        S5      (       a   e[        S5      (       d   e[        S5      (       d   e[        S5      (       d   e[        S5      (       d   e/ SQn U  H  n[        U5      (       a  M   e   g )Nc                      [        S5      $ Nr   )r   r$   r!   r   r(   'test_is_selfridge_prp.<locals>.<lambda>   s
    /2r!   r   r   r*   r7   rF   )r   r   i  i%  r   S  r   io#  i#  r   i,  r   i_6  i9  >  )r   r-   r   rY   s     r   test_is_selfridge_prpr      s    
:23  """" AABG$$$$CK"""" r!   c                  2   [        [        S 5        [        [        S 5        [        [        S 5        [        SSS5      (       a   e[        SSS5      (       d   e[        SSS	5      (       d   e[        S
SS5      (       d   e[        SSS5      (       d   eg )Nc                      [        SSS5      $ r   r   r$   r!   r   r(   *test_is_strong_lucas_prp.<locals>.<lambda>   s    21a;r!   c                      [        SSS5      $ r   r   r$   r!   r   r(   r      s    21a<r!   c                      [        SSS5      $ r   r   r$   r!   r   r(   r      s    22q!<r!   r   r*   r   r5   r   r   r7   r   rF   r   r   )r   r-   r   r$   r!   r   test_is_strong_lucas_prpr      s    
:;<
:<=
:<= #1a++++ q!Q''''q!R((((r1a((((w2....r!   c                     [        [        S 5        [        S5      (       a   e[        S5      (       d   e[        S5      (       d   e[        S5      (       d   e[        S5      (       d   e/ SQn U  H  n[        U5      (       a  M   e   g )Nc                      [        S5      $ r   )r   r$   r!   r   r(   .test_is_strong_selfridge_prp.<locals>.<lambda>  s
    6q9r!   r   r   r*   r7   rF   )r   r   r   r   iJ  iW  i_  iob  iu  i  iE% i| i i )r   r-   r   rY   s     r   test_is_strong_selfridge_prpr     s    
:9: 'q)))) #1%%%%"1%%%%"2&&&&"7++++FK&q)))) r!   c                      [        [        S 5        [        S5      (       a   e[        S5      (       d   e[        S5      (       d   e[        S5      (       d   e[        S5      (       d   eg )Nc                      [        S5      $ r   )r   r$   r!   r   r(   "test_is_bpsw_prp.<locals>.<lambda>  s    {1~r!   r   r   r*   r7   rF   )r   r-   r   r$   r!   r   test_is_bpsw_prpr     s[    
:-. 1~~ q>>>q>>>r???wr!   c                      [        [        S 5        [        S5      (       a   e[        S5      (       d   e[        S5      (       d   e[        S5      (       d   e[        S5      (       d   eg )Nc                      [        S5      $ r   )r   r$   r!   r   r(   )test_is_strong_bpsw_prp.<locals>.<lambda>*  s
    1!4r!   r   r   r*   r7   rF   )r   r-   r   r$   r!   r   test_is_strong_bpsw_prpr   (  sf    
:45 "!$$$$ a    a    b!!!!g&&&&r!   N)#	itertoolsr   sympy.external.ntheoryr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   sympy.testing.pytestr   r    r%   r1   r<   r[   rl   rr   r   r   r   r   r   r   r   r   r$   r!   r   <module>r      sw    "E E E E E
 (1*3#(#6"6#6.@*.&,#(/ *( 'r!   