U
    ZÊ¹j*  ã                   @   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/bwave/python/venv/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sèt‚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ÚNiøÿÿÿr   é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s–t‚ttdƒƒd | tddƒ d| d  d|   d	  ksÐt‚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  iìT 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    