U
    9%e*                     @   s   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d Zdd Zdd Zdd Zdd Zdd Z dS )    )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                   C   s(   t dd tdD dddgks$td S )Nc                 S   s   g | ]}t |qS  r   .0kr   r   ^/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/concrete/tests/test_guess.py
<listcomp>   s     z6test_find_simple_recurrence_vector.<locals>.<listcomp>      )r   rangeAssertionErrorr   r   r   r   "test_find_simple_recurrence_vector   s
    r   c                  C   s  t d} td}tdd tdD | | | |d  | |d  ksLtt d}td}dddg} tdD ].}| d	| d
  d| d   d| d    qnt| ||dd|| d||d   d	||d   ||d  ksttdddddddddddd	dgdkstd S )Nanc                 S   s   g | ]}t |qS r   r   r   r   r   r   r      s     z/test_find_simple_recurrence.<locals>.<listcomp>r   r            r         )ANir   J   U      ?   )r	   r   r   r   r   append)r    r!   fir   r   r   r   test_find_simple_recurrence   s.     
 ,6     r2   c                  C   s   ddl m} m}m} t| |d tjks.tt|dtddksHtt|dtddksbtt|dd	td
dks|td S )Nr   cospimpfr%   z0.333333333333333r   z-0.333333333333333r      )Zmaxcoeffic  q   )	Zmpmathr4   r5   r6   r   r   Halfr   r
   r3   r   r   r   test_rationalize)   s
    r:   c                  C   sF   t d} tdd tddD d|  d | d  |  d  ksBtd S )	Nxc                 S   s   g | ]}t |qS r   r   r   r   r   r   r   3   s   z;test_guess_generating_function_rational.<locals>.<listcomp>r$   r#   r%   r"   r   )r   r   r   r   r;   r   r   r   'test_guess_generating_function_rational1   s    r=   c                  C   sL  t d} tdd tddD d d|  d | d  |  d	  ksFttd	ddd
dddddddgd d	| d d| d   d|   d	  tj kstttdd | tdd d| d  d|   d	  ksttdd tdD dgdd d	|  d	  ksttdd tdD dgd| d	 t|  | d | d	  dksHtd S )Nr;   c                 S   s   g | ]}t |qS r   r   r   r   r   r   r   9   s   z2test_guess_generating_function.<locals>.<listcomp>r$   r#   Zogfr%   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]   c                 S   s   g | ]}t |qS r   )r   r   r   r   r   r   A   s     r   egf)typesc                 S   s   g | ]}|d  qS )r   r   r   r   r   r   r   C   s     )rB   Zlgdegf)	r   r   r   r   r   r9   r   r
   r   r<   r   r   r   test_guess_generating_function7   sD    ($
 rD   c               	   C   st  t d\} }tdddddgddt|d |d| d fgks@ttdddddgtd| d gksfttddd	d
ddddgddd| d  tdd| d d d|  d  d   tttdd|d ttd	d|d  ttdd|d ttdd|d   |d| d f gksttdddgg ks4tt d\}}tdddddg||gdtd|d gksptd S )Nzi0 i1r   r"         x   F)evaluate   *   i  i  iT i r-   )Zniter      r%   r$   r   zx y)	variables)r   r   r   r   r   r
   )Zi0i1r;   yr   r   r   
test_guessG   s*    4&( rP   N)!Zsympy.concrete.guessr   r   r   r   r   r   Zsympy.concrete.productsr   Zsympy.core.functionr	   Zsympy.core.numbersr
   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.core.sympifyr   Z(sympy.functions.combinatorial.factorialsr   r   Z%sympy.functions.combinatorial.numbersr   Z&sympy.functions.elementary.exponentialr   r   r2   r:   r=   rD   rP   r   r   r   r   <module>   s    