a
    <b*                     @   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 g dks"J d S )Nc                 S   s   g | ]}t |qS  r   .0kr   r   o/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/concrete/tests/test_guess.py
<listcomp>       z6test_find_simple_recurrence_vector.<locals>.<listcomp>   )   r   )r   ranger   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sLJ t d}td}g d} td	D ].}| d
| d  d| d   d| d    qlt| ||dd|| d||d   d
||d   ||d  ksJ tg ddksJ d S )Nanc                 S   s   g | ]}t |qS r   r   r   r   r   r   r      r   z/test_find_simple_recurrence.<locals>.<listcomp>r   r      )r   r   r         r         )ANi)r   r"   r#   J   r   r%   r   r   r"   U      r$   ?   r   )r	   r   r   r   append)r    r!   fir   r   r   r   test_find_simple_recurrence   s     86
r2   c                  C   s   ddl m} m}m} t| |d tjks.J t|dtddksHJ t|dtddksbJ t|dd	td
dks|J d S )Nr   cospimpfr%   z0.333333333333333r   z-0.333333333333333r      )Zmaxcoeffic  q   )Zmpmathr4   r5   r6   r   r   Halfr
   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sBJ 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   'test_guess_generating_function_rational1   s    r=   c                  C   s8  t d} tdd tddD d d|  d | d  |  d	  ksFJ tg d
d d	| d d| d   d|   d	  tj ksJ ttdd | tdd d| d  d|   d	  ksJ tdd tdD dgdd d	|  d	  ksJ tdd tdD dgd| d	 t|  | d | d	  dks4J 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   )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]   c                 S   s   g | ]}t |qS r   )r   r   r   r   r   r   A   r   r   egf)typesc                 S   s   g | ]}|d  qS )r   r   r   r   r   r   r   C   r   )rB   Zlgdegf)r   r   r   r   r9   r   r
   r   r<   r   r   r   test_guess_generating_function7   sD    ($ rD   c               	   C   sT  t d\} }tg dddt|d |d| d fgks:J tg dtd| d gksZJ tg d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J tg dg ksJ t d\}}tg d||gdtd|d gksPJ d S )Nzi0 i1)r   r"         x   F)evaluater   r"   )r   r"      *   i  i  iT i r-   )Zniter      r%   r$   rI   )r   r   r"   zx y)	variables)r   r   r   r   r
   )Zi0i1r;   yr   r   r   
test_guessG   s*    . ( 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    