U
    ZÊ¹j3  ã                   @   s  d Z ddl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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mZ ddlmZmZmZmZmZm Z m!Z!m"Z" dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd„ Z'dd„ Z(dd„ Z)dd„ Z*dd„ Z+dd „ Z,d!d"„ Z-d#S )$z;Tests for Gosper's algorithm for hypergeometric summation. é    )ÚRationalÚpi)ÚS)ÚSymbol)ÚbinomialÚ	factorial)ÚexpÚlog)Úsqrt)Úgamma)ÚPoly)Úsimplify)Úgosper_normalÚ
gosper_sumÚgosper_term)ÚaÚbÚjÚkÚmÚnÚrÚxc                  C   s¢   dt  d ddt  d  dt  d  t f} t| Ž ttddƒt ƒtt tddƒ ƒtt tddƒ ƒfksht‚t| ddiŽtddƒt tddƒ t tddƒ fksžt‚d S )Né   é   é   é   é   ZpolysF)r   r   r   r   ÚAssertionError)Úeq© r    ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/concrete/tests/test_gosper.pyÚtest_gosper_normal   s    *0ÿ"ÿr"   c                   C   sL   t dt d ttƒ tdt d ƒ tƒt tj ttddƒ  ksHt‚d S )Nr   r   r   )r   r   r   r   ÚHalfr   r   r    r    r    r!   Útest_gosper_term   s    ÿÿÿÿr$   c                   C   sD  t dtdtfƒdt kst‚t ttdtfƒtdt  d ks@t‚t td tdtfƒtdt  ddt   d kstt‚t td tdtfƒtd dt d  d ks¤t‚t dt tdtfƒddt  d ksÌt‚t ttƒtdtfƒd ksèt‚t tttƒtdtfƒd k�st‚t ttƒtd  tdtfƒd k�s.t‚t td ttƒ tdtfƒd k�sTt‚t tttƒ tƒttƒk�stt‚t tttƒ tdtfƒtttƒ ttƒ d k�sªt‚t dt tttƒ tdtfƒdk�sÒt‚t dt tttƒ tdtfƒdt  tt  tttƒ t k�st‚t dt d ttƒ tdt d ƒ tdtfƒdtdt d ƒ ttƒ tdt d ƒ k�sxt‚t ttt t  tt  tt  ttt ƒttt ƒ  tdtfƒ 	¡ t
tttƒ tttƒ  ƒ ttd ƒ ttd ƒ ttƒttƒ ttt d ƒ ttt d ƒ  dttƒttƒ   k�s@t‚d S )Nr   r   r   é   r   r   éÿÿÿÿ)r   r   r   r   r   r   r   r   r   r   r   r	   r   r    r    r    r!   Útest_gosper_sum   sT    $40( && 
 ÿÿ
( ÿÿÿÿ
.*ÿ
6þ(
ÿ.ÿþþr'   c                   C   s   t ttƒttd  d kst‚t td tƒttd  dt d  d ksLt‚t dttd   tƒdt ksnt‚t dtd  dtd   d	td   d
t  d  tdt d ƒ ddt d  tdt d ƒ  tƒdt d td dt  d  tdt d ƒ tdt d ƒ k�st‚d S )Nr   r   r%   r&   é   r   éž   r   i®  i¦  i½  é   r   )r   r   r   r   r    r    r    r!   Útest_gosper_sum_indefinite>   s    .":ÿÿÿ>þr+   c                   C   s�   t ttjtt d ƒttjtt ƒ tdtfƒtdt t  ddt  dt   ttjdt t ƒ ttjtt ƒ tddt    ksŒt‚d S )Nr   r&   r   )r   r   r   r#   r   r   r   r   r    r    r    r!   Útest_gosper_sum_parametricH   s    .6ÿÿÿr,   c                   C   sL   t td tdƒ tdtfƒtd dtd  t dtdƒ   d ksHt‚d S )Nr   r   r   r%   )r   r   r
   r   r   r    r    r    r!   Útest_gosper_sum_algebraicN   s     ÿ&ÿr-   c                  C   s^  t dt tƒdt  } ddt  t dt tƒ dt  }ddt  ddt   t dt tƒ ddt   }ddt  ddt   ddt   t dt tƒ ddt   }ddt  ddt   ddt   ddt   t dt tƒ ddt   }t| td	tfƒ|k�st‚t|td	tfƒ|k�s&t‚t|td	tfƒ|k�s@t‚t|td	tfƒ|k�sZt‚d S )
Nr   r   r   r   r   é   r*   éi   r   )r   r   r   r   r   )Úf1Úf2Zf3Zf4Zf5r    r    r!   Útest_gosper_sum_iteratedS   s    "2>Jr2   c                  C   sÐ  t d } t d dt   }dt d tdƒt   d  }t d dt   tdt  t ƒ }tdt  ƒtt ƒtt d ƒ tt d ƒ dt    }tdt  t ƒd t d ddt     }dt  d tdt  t ƒd  dt  d d ddt     }t tt tj ƒd  tt d ƒd  }ttd  dt d  dtd  dt  d  d }ddtd  td dtd   d	t  d
   }	td ttd dt  d  tdƒ dtd  dtd   dt  d   dtd  tdƒ td  dtd   d  d }
tddƒddt  td  dtd  dtd   dtd   dt  d  dtdt tƒ   }tddƒdtd  dt  d tdt d ƒ ddt  ttƒ ttd ƒ ttd ƒ   }dt d d tdt tƒd  ddt  td   }tdt tƒd  ddt   }dt dt d d dt d  tttj ƒd  ttd ƒd   }t	| t dtfƒ}|d k	�rrt
|| ƒdk�svt‚t	|t dtfƒ}|d k	�r¢t
||	 ƒdk�s¦t‚t	|t dtfƒ}|d k	�rÒt
||
 ƒdk�sÖt‚t	|t dtfƒ}|d k	�rt
|| ƒdk�st‚t	|t dtfƒ}|d k	�r2t
|| ƒdk�s6t‚t	|t dtfƒ}|d k	�rbt
|| ƒdk�sft‚t	|t dtfƒ}|d k	�r’t
|| ƒdk�s–t‚t	|t dtfƒ}|d k	�rÈt
|| ƒ t¡dk�sÌt‚d S )Nr   r   r   r   r   r(   é   é   é	   é   r*   é   r%   éþÿÿÿéç   é?   ép   é   é   iµ  i÷ÿÿÿéQ   i  éÈ   é(   r   )r   r
   r   r   r   r#   r   r   r   r   r   r   Zrewriter   )Zf1aZf1bZf1cZf1dZf1eZf1fZf1gZf1hZg1aZg1bZg1cZg1dZg1eZg1fZg1gZg1hÚgr    r    r!   Útest_gosper_sum_AeqB_part1c   s`    4&:&40$"ÿ*ÿÿ<ÿÿÿ 
ÿ*ÿ6 F       rB   c                  C   sÊ  t d tt   } t td  ttt ƒ }tt d ƒd tt t ƒtt t ƒ  }t td  td d  ttd  td td  dt td   td  dt t  dt  t d  td d   }tt tttƒ d }tdt ƒtdt ƒ }d| ddtd    ttƒd td ttt ƒ ttt ƒ   }t| t dtfƒ}|d k	�rbt|| ƒdk�sft	‚t|t dtfƒ}|d k	�r’t|| ƒdk�s–t	‚t|t dtfƒ}|d k	�rÂt|| ƒdk�sÆt	‚d S )Nr   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )Zf2aZf2bZf2cZg2aZg2bÚffZg2crA   r    r    r!   Útest_gosper_sum_AeqB_part2�   s.    (ÿBÿ
ÿÿ*ÿ  rD   c                  C   sÜ   t ddd�} t ddd�}t ddd�}t ddd�}|||  |  | |  ||  t||  ƒt|| ƒ  }dt| d ƒt|d ƒ  | |d  ||d   t| | ƒt|| ƒ   }t||d	|fƒ}t|| ƒd	ksØt‚d S )
Nr   T)Zpositiver   r   )Úintegerr   r   r   )r   r   r   r   r   )r   r   r   r   Zf2dZg2drA   r    r    r!   Útest_gosper_nan¡   s    8ÿ.ÿrF   c                  C   s8  dt d  } dt  d dt d  dt d   dt d   dt   d  }dt  t d dt   d  t d t d d   }t d dt   t d t d   }dt  t d  }dt d  t d dt   d  t d t d d  t d d  t d d   }t d dt d   dt   d	 dt   t d t d d  t d d  t d d   }ttd  dtd  dt  d  }dt td  d }tddƒdtd  td  td  d  }	td
dƒdtd d td d     }
tdd	ƒdtd  td d td d    }t| t dtfƒ}|d k�st‚t|t dtfƒ}|d k	�rJt|| ƒdk�sNt‚t|t dtd fƒ}|d k	�r~t|| ƒdk�s‚t‚t|t dtfƒ}|d k	�r®t||	 ƒdk�s²t‚t|t dtd fƒ}|d k�sÔt‚t|t dtfƒ}|d k	�r t||
 ƒdk�st‚t|t dtfƒ}|d k	�r0t|| ƒdk�s4t‚d S )Nr   r   r%   r   é   r   é   é   r5   r&   é   r8   r   )r   r   r   r   r   r   )Zf3aZf3bZf3cZf3dZf3eZf3fZf3gZg3bZg3cZg3dZg3fZg3grA   r    r    r!   Útest_gosper_sum_AeqB_part3­   s8    <0 LD
ÿ$*(.    rK   N).Ú__doc__Zsympy.core.numbersr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   Z(sympy.functions.combinatorial.factorialsr   r   Z&sympy.functions.elementary.exponentialr   r	   Z(sympy.functions.elementary.miscellaneousr
   Z'sympy.functions.special.gamma_functionsr   Zsympy.polys.polytoolsr   Zsympy.simplify.simplifyr   Zsympy.concrete.gosperr   r   r   Z	sympy.abcr   r   r   r   r   r   r   r   r"   r$   r'   r+   r,   r-   r2   rB   rD   rF   rK   r    r    r    r!   Ú<module>   s,   (!
*