
    MZd                         d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZ d dl	mZ d dlmZ d d	lm Z  d
 Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+y)    )IRationalnanzoo)S)Symbol)sieveSieve)limit)isprimetotientmobius	randprime	nextprime	prevprime
primerangeprimepiprime	primorial	compositecompositepireduced_totient)cycle_length)mr)raisesc                  2   t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d	      d
k(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        t        d        t        j                  d       t        d      dk(  sJ t        t        d        y )N                  9   i  (  i  /  i    i9k     iٗ  #  iqp a  imb i iͱ
iiszyc                      t        d      S Nr   r        C/usr/lib/python3/dist-packages/sympy/ntheory/tests/test_generate.py<lambda>ztest_prime.<locals>.<lambda>   s
    uQx r.   i  i
  c                      t        d      S )Nr,   r-   r.   r/   r0   ztest_prime.<locals>.<lambda>   s
    uRy r.   )r   r   
ValueErrorr	   extendr-   r.   r/   
test_primer5      s   8q==8q==8r>>9??9::;%;%;%<6!!!?i'''?j(((
:'(	LL:
:()r.   c                     t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        t        dd            dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d	      dk(  sJ t        d
      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        j                  d       t        d      dk(  sJ t	        d       } t        |       j                  | d      dk(  sJ t	        d!d"#      }t        |      j                  |d      dk(  sJ t        t        j                        t        j                  u sJ t        t        j                        dk(  sJ t        t        |       | d$      d%k(  sJ t        t        d&        t        t        d'        t        t        d(        t        t        d)        y )*Nr2   r   r   r      g      @r    r   r!   r#      r$   >   r%   f   r&   i  r'   i4  r(   ih  r)   i
   iW ein    j ii  i/  nrT)reald      c                       t        t              S Nr   r   r-   r.   r/   r0   ztest_primepi.<locals>.<lambda>A   s
    wqz r.   c                  &    t        dt        z         S Nr   rE   r-   r.   r/   r0   ztest_primepi.<locals>.<lambda>B   s    wq1u~ r.   c                       t        t              S rD   )r   r   r-   r.   r/   r0   ztest_primepi.<locals>.<lambda>C   
    ws| r.   c                       t        t              S rD   )r   r   r-   r.   r/   r0   ztest_primepi.<locals>.<lambda>D   rI   r.   )r   r   r	   r4   r   subsr   InfinityNegativeInfinityr   r   r3   )r>   r?   s     r/   test_primepirN   !   s   2;!1:??1:??8Aq>"a'''3<11:??2;!2;"3<23<34=C4=C4=D   5>T!!!5>W$$$9))):)+++	LL4=CsA1:??1a A%%%sA1:??1a A%%%1::!**,,,1%%&!+++Q$***
:)*
:-.
:+,
:+,r.   c                  8   ddl m}   | j                          t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d	      d
k(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ  | j                  d       t        d      dk(  sJ t        d      dk(  sJ t        t        d        y ) Nr   r	   r      r      r    
   r!      )   :   r#   P   r$   ir  r%   i  r&   i  r'   i  r(   i(  r)   im  i  i  i
  i  c                      t        d      S r+   )r   r-   r.   r/   r0   z test_composite.<locals>.<lambda>Y   
    y| r.   )sympy.ntheory.generater	   _resetr   r4   r   r3   rP   s    r/   test_compositer\   G   s&   ,ELLNQ<1Q<1Q<2R=BR=BR=BS>S   S>S   T?d"""T?d"""T?e###Uu$$$ELLT?d"""T?d"""
:+,r.   c                     t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      d	k(  sJ t        d
      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        j                  d       t        d      dk(  sJ y )Nr   r   r   r    r!   r#   (   r$      r%   i  r&   i	
  r'   i  r(   i  r)   iV  r;   iPr<   i؇Gr=   l   >e i	  i  )r   r	   r4   r-   r.   r/   test_compositepir`   \   s&   q>Qq>Qq>Qr?ar?b   ss"""ss"""t$$$t$$$t$$$u&&&u)))y!Y...z"j000	LLt$$$r.   c            	      ^   ddl m}   | j                          t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      d	k(  sJ t	        d      dk(  sJ t	        d      dk(  sJ t	        d	      d
k(  sJ t	        d      dk(  sJ t	        d      dk(  sJ  | j
                  d       | j                  d   dk(  sJ | j                  d   dk  sJ d| v sJ t        d      dk(  sJ t        ddz        ddz  dz   k(  sJ t	        d      dk(  sJ t	        ddz        ddz  dz
  k(  sJ t         | j                  dd            g k(  sJ t         | j                  dd            ddgk(  sJ  | j                  d       t         | j                  dd	            g dk(  sJ t         | j                  d	            g dk(  sJ t         | j                  d            g dk(  sJ t         | j                  d            g k(  sJ t         | j                  d            g d k(  sJ t         | j                  d!            g d"k(  sJ t         | j                  dd#            g d$k(  sJ  | j                  d%       t         | j                  dd	            g d&k(  sJ t         | j                  d'd(            t        d'd(      D cg c]  }t        |       c}k(  sJ t         | j                  dd            g k(  sJ t         | j                  dd            dgk(  sJ t         | j                  dd#            g d)k(  sJ  | j                  d*       t         | j                  dd	            g d+k(  sJ t         | j                  d,d-            t        d,d-      D cg c]  }t        |       c}k(  sJ t         | j                  dd            g k(  sJ t         | j                  dd            dgk(  sJ t        t        dd            g k(  sJ t        t        dd            g d.k(  sJ t        t        dd            g dk(  sJ t        t        d,d-            g d/k(  sJ t               }t        d0d1d2      D ]Q  }t        dd3d4      D ]?  }t        |j                  |||z               }t        t        |||z               }||k(  r?J  S t               }|d   dk(  sJ t        dd      dk(  sJ t        t         d5        t        t         d6        t        t         d7        t#        ddg      d8u sJ d9 }t%        t'        |d:            d;k(  sJ t        t'        |d:d<            g d=k(  sJ t%        t'        |d:d>            d?k(  sJ t        t'        |d:dd@            g dAk(  sJ  | j(                  dB       t        dC      dDk(  sJ t	        dE      dFk(  sJ t        t         dG        t        t         dH        y c c}w c c}w )INr   rP   r   r   r    r7         r!         rT   	   r2      r"   Z   a   rS   r^   y   Y   r   Tr,   )r   r   r    r7   r!      r   r   r    r7      )	r   r   r    r7   r!   rd   rf   re   rh   "   )r   r   r    r7   r!   rd   rf   re   rh   rp   r"      )
rQ   r   rR   rQ   rR   rQ   rS   rQ   rc   rR   r   )
r   r   rQ   r   rR   rQ   rR   rQ   rS   rQ   i    )
r2   r   r2   r   r   r   r2   r   r2   r   )r   )
r2   r   r2   r   r2   r   r   r   r2   r   i  iL  )r   r   r    )i  i%  i'  i-  i?  iC  iE  iI     i.	  ix  i  is  c                      t        d      S r+   rs   r-   r.   r/   r0   ztest_generate.<locals>.<lambda>   s
    wqz r.   c                      t        d      S r+   )r   r-   r.   r/   r0   ztest_generate.<locals>.<lambda>   s    q1 r.   c                      t        d      S r+   r   r-   r.   r/   r0   ztest_generate.<locals>.<lambda>   rY   r.   Fc                     | dz  dz   dz  S )Nr   r   3   r-   )is    r/   r0   ztest_generate.<locals>.<lambda>   s    adQh"_ r.   rQ   )rR   r   )values)rf   #   r   r          ,   2   r   r    r   r   )nmax)r    N)r   r}   )rf   r~   r   r    r   r&   i  i  ir  io  c                      t        d      S rG   r   r-   r.   r/   r0   ztest_generate.<locals>.<lambda>   rY   r.   c                      t        d      S )Nrb   r   r-   r.   r/   r0   ztest_generate.<locals>.<lambda>   s
    y} r.   )rZ   r	   r[   r   r   extend_to_no_listlistr   totientrangeranger   mobiusranger   r
   r   r3   r   nextr   r4   )r	   xsr|   jABfuncs           r/   test_generater   o   sM   ,ELLNR=AQ<1Q<1R=BQ<1Q<1R=BR=BR=BEq;;r?b   ;;r?R;;R=BRVR#...R=BRVR"---   Q'(B...   A&'Aq6111ELLt   B'(,<<<<   $%)9999   #$444   $%+++   $%)IIII   $%)QQQQ"""1b)*.NNNNELL"""1b)*.MMMM"""3-.uSRVGW2X!71:2XXXX"""1a()R///"""1a()aS000!!!!R()-OOOOELL!!!!R()-OOOO!!!$-.eDRVFW2X6!92XXXX!!!!Q'(B...!!!!Q'(QC///
2q!"b(((
1a !Y...
1b!"l222
4&' ,, , , ,A2tS! q$% 	AQ\\!QU+,AZ1q5)*A6M6	
 	AR5B;;Q?a
:)*
:12
:+,a!:$DT1%&&000T1T2345 5 5T11-.);;;T11T:;  ELLT?d"""T?d"""
:+,
:,-] 3Y 3Ys   X%<X*c                     t        dd      J t        dd      J t        dd      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        t        d        t        t        d        t        t        d	        t        t        d
        t        t        d        dD ]7  } dD ]0  }t        | | |z         }| |cxk  r| |z   k  rn J t        |      r0J  9 y )NrS   r   r   r   r    c                      t        dd      S )Niro   r   r-   r.   r/   r0   z test_randprime.<locals>.<lambda>   s    yb1 r.   c                      t        dd      S )Nir   r   r-   r.   r/   r0   z test_randprime.<locals>.<lambda>   s    ya0 r.   c                      t        dd      S )NrT      r   r-   r.   r/   r0   z test_randprime.<locals>.<lambda>   s    yR0 r.   c                      t        dd      S )Nr   r   r   r-   r.   r/   r0   z test_randprime.<locals>.<lambda>       yA r.   c                      t        dd      S )Nr   r   r   r-   r.   r/   r0   z test_randprime.<locals>.<lambda>   r   r.   )rA   i,  i  i )r   r   r3   r   )abps      r/   test_randprimer      s    R###Q###Q?aQ?aQ?a
:12
:01
:01
:./
:./$ 3( 	3A!QU#A#QU#22
22	33r.   c                      t        d      dk(  sJ t        dd      dk(  sJ t        d      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ y )Nr   r   r   )nthrR   rQ   ry   r-   r.   r/   test_primorialr      se    Q<1QA!###Q<1QA!###QA!###r.   c                  |    dt         v sJ dt         vsJ dt         vsJ ddz  t         vsJ t        t        d        y )Nr   g @r   rt   c                  ,    t        j                  d      S rG   )r	   searchr-   r.   r/   r0   ztest_search.<locals>.<lambda>   s    u||A r.   )r	   r   r3   r-   r.   r/   test_searchr      sE    ::eE>>d7%
:./r.   c                     t         d   dk(  sJ t        t         dd       t        dd      D  cg c]  } t         |     c} k(  sJ t        t         ddd         t        ddd      D  cg c]  } t         |     c} k(  sJ t        t         dd       g dk(  sJ t        t        d        t        t        d        t        t        d	        y c c} w c c} w )
Nr    r!   rS   r   r   rn   c                      t         d d S )Nr    rP   r-   r.   r/   r0   z"test_sieve_slice.<locals>.<lambda>   s    uRay r.   c                      t         d   S r+   rP   r-   r.   r/   r0   z"test_sieve_slice.<locals>.<lambda>   s
    uQx r.   c                      t         dd S )Nr   r    rP   r-   r.   r/   r0   z"test_sieve_slice.<locals>.<lambda>   s    uQqz r.   )r	   r   r   r   
IndexError)r   s    r/   test_sieve_slicer      s    8r>>a5B< @aq @@@@a1fU1b!_"E58"EEEEa
|+++
:()
:'(
:)* !A"Es   C(Cc                  |    g } t         D ]  }|dkD  r n| j                  |        | t        t         dd       k(  sJ y )Nr7   r   r    )r	   appendr   )r}   values     r/   test_sieve_iterr      sG    F 19e T%!*%%%%r.   c                  P    dt        t              v sJ dt        t              v sJ y )Nr	   r   )reprr	   r-   r.   r/   test_sieve_reprr      s&    d5k!!!d5k!!!r.   N),sympy.core.numbersr   r   r   r   sympy.core.singletonr   sympy.core.symbolr   rZ   r	   r
   sympy.series.limitsr   sympy.ntheoryr   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.ntheory.primetestr   sympy.testing.pytestr   r5   rN   r\   r`   r   r   r   r   r   r   r   r-   r.   r/   <module>r      sr    6 6 " $ 1 %S S S S / & '*(#-L-*%&S.l3"$0+&"r.   