U
    —9%e3  ã                   @   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/Darija-Ai-API/env/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,   (!
*