
    g*                         d dl 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 dlmZ d dlmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d Zd Zd Zd Zd Zd Z y)    )find_simple_recurrence_vectorfind_simple_recurrencerationalize"guess_generating_function_rationalguess_generating_functionguess)Product)Function)Rational)S)Symbolsymbols)sympify)RisingFactorial	factorial)	fibonacci)expc                  r    t        t        d      D  cg c]  } t        |        c}       g dk(  sJ y c c} w )N   )   r   )r   ranger   )ks    T/var/www/openai/venv/lib/python3.12/site-packages/sympy/concrete/tests/test_guess.py"test_find_simple_recurrence_vectorr      s9    (#(9-9aYq\9-/2=> > >-s   4c                  .   t        d      } t        d      }t        t        d      D cg c]  }t	        |       c}       | |        | |dz         z
   | |dz         z   k(  sJ t        d      }t        d      }g d} t        d      D ]+  }| j                  d| d	   z  d
| d   z  z
  d| d   z  z          - t        | ||      d ||      z  d
 ||dz         z  z   d ||dz         z  z
   ||d
z         z   k(  sJ t        g d      dk(  sJ y c c}w )Nanr   r      )r   r   r         r         )ANi)r   r   r    J   r   r"   r   r   r   U      r!   ?   r   )r
   r   r   r   r   append)r   r   r   fis        r   test_find_simple_recurrencer/      s/   AsA!r"CA9Q<"CD	
1!a%1QU8#% % % 	AsAA2Y1R51R51R5!89Y!!qA.
1Q4!Aa!eH*q1q5z)Aa!eH46 6 6! #8 9<=> > > #Ds   Dc                     ddl m} m}m} t	         | |dz              t
        j                  k(  sJ t	         |d            t        dd      k(  sJ t	         |d            t        dd      k(  sJ t	        |d	      t        d
d      k(  sJ y )Nr   cospimpfr"   z0.333333333333333r   z-0.333333333333333r      )maxcoeffic  q   )mpmathr2   r3   r4   r   r   Halfr   r1   s      r   test_rationalizer:   )   s    ##s2a4y!QVV+++s./0HQNBBBs/01Xb!_DDDrc*hsC.@@@@    c                      t        d      } t        t        dd      D cg c]  }t        |       c}      d| z  dz   | dz   | z
  dz   z  k(  sJ y c c}w )Nxr!   r    r"   r   r   )r   r   r   r   r=   r   s     r   'test_guess_generating_function_rationalr?   1   sj    sA-q"/A 09|/  %&qS1W1uqy1}$=? ? ? /s   Ac                     t        d      } t        t        dd      D cg c]  }t        |       c}      d   d| z  dz   | dz   | z
  dz   z  k(  sJ t        g d      d   d| d	z  d| dz  z  z   d	| z  z
  dz   z  t        j
                  z  k(  sJ t        t        d
            d   | t        dd      z   d| dz  z  d| z  z
  dz   z  k(  sJ t        t        d      D cg c]  }t        |       c}dg      d   d|  dz   z  k(  sJ t        t        d      D cg c]  }|dz   	 c}dg      | dz   t        |       z  | dz   | dz   z  dk(  sJ y c c}w c c}w c c}w )Nr=   r!   r    ogfr"   r   r   )r   r   r!      )   |   i  i  i  iZ/  i  r*   zF[3/2, 11/2, 0, -121/2, -363/2, 121, 4719/2, 11495/2, -8712, -178717/2]   r   egf)types)rF   lgdegf)
r   r   r   r   r   r9   r   r   r   r   r>   s     r   test_guess_generating_functionrI   7   s   sA$q"&A '0l&   %',-aC!Gq!teai!m+DF F F$=??DF	
AqD1QT6MAaC!#	$qvv-/ / / %WO&Q 		A&AqD1Q3):;< < < %E"I%FIqilI%FW !A26
+ + +$59%=9aac9%=W"#a%QAEAE?KL L L& &G%=s   EEEc                     t        d      \  } }t        g dd      t        |dz   |d| dz
  f      gk(  sJ t        g d      t        d| dz
        gk(  sJ t        g dd	      d| dz
  z  t	        d
d      | dz  dz  d| z  dz  z
  dz   z  z  t        t        t	        dd      |dz
        t        t	        dd      |dz
        z  t        t	        dd      |dz
        t        t	        dd      |dz
        z  z  |d| dz
  f      z  gk(  sJ t        g d      g k(  sJ t        d      \  }}t        g d||g      t        d|dz
        gk(  sJ y )Nzi0 i1)r   r         x   F)evaluater   r   )r   r      *   i  i  iT i r*   )niter      r"   r!   rO   )r   r   r   zx y)	variables)r   r   r	   r   r   )i0i1r=   ys       r   
test_guessrX   G   s   WFB#e4a"aQSVWQW9Y8ZZZZ#$BF)C(DDDD;1E	BFXb"%Qq1R46)9	*
  	?8Aq>26:?8TUWX>[]
\ < hq!nb1f5ohqRSnVX	W
 7 !R!V_	J   
 r!!!5>DAq#1v6?1aRSe;T:UUUUr;   N)!sympy.concrete.guessr   r   r   r   r   r   sympy.concrete.productsr	   sympy.core.functionr
   sympy.core.numbersr   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.sympifyr   (sympy.functions.combinatorial.factorialsr   r   %sympy.functions.combinatorial.numbersr   &sympy.functions.elementary.exponentialr   r   r/   r:   r?   rI   rX    r;   r   <module>rd      sM   
 
 , ( ' " / & Q ; 6>
> A?L Vr;   