a
    kº”h3  ã                   @   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shJ ‚t| ddiŽtddƒt tddƒ t tddƒ fksžJ ‚d S )Né   é   é   é   é   ZpolysF)r   r   r   r   )Úeq© r   úN/var/www/auris/lib/python3.9/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sHJ ‚d S )Nr   r   r   )r   r   r   r   ÚHalfr   r   r   r   r    Útest_gosper_term   s    ÿÿÿÿr#   c                   C   sD  t dtdtfƒdt ksJ ‚t ttdtfƒtdt  d ks@J ‚t td tdtfƒtdt  ddt   d kstJ ‚t td tdtfƒtd dt d  d ks¤J ‚t dt tdtfƒddt  d ksÌJ ‚t ttƒtdtfƒd u sèJ ‚t tttƒtdtfƒd u sJ ‚t ttƒtd  tdtfƒd u s.J ‚t td ttƒ tdtfƒd u sTJ ‚t tttƒ tƒttƒkstJ ‚t tttƒ tdtfƒtttƒ ttƒ d ksªJ ‚t dt tttƒ tdtfƒdksÒJ ‚t dt tttƒ tdtfƒdt  tt  tttƒ t ksJ ‚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sxJ ‚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@J ‚d S )Nr   r   r   é   r   r   éÿÿÿÿ)r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r    Útest_gosper_sum   sP    $40( && ÿÿ
(ÿÿÿÿ
.*ÿ
6þ(
ÿ.ÿþþr&   c                   C   s   t ttƒttd  d ksJ ‚t td tƒttd  dt d  d ksLJ ‚t dttd   tƒdt ksnJ ‚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J ‚d S )Nr   r   r$   r%   é   r   éž   r   i®  i¦  i½  é   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ŒJ ‚d S )Nr   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sHJ ‚d S )Nr   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J ‚t|td	tfƒ|ks&J ‚t|td	tfƒ|ks@J ‚t|td	tfƒ|ksZJ ‚d S )
Nr   r   r   r   r   é   r)   éi   r   )r   r   r   r   )Úf1Úf2Zf3Zf4Zf5r   r   r    Útest_gosper_sum_iteratedS   s    "2>Jr1   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 urrt
|| ƒdksvJ ‚t	|t dtfƒ}|d ur¢t
||	 ƒdks¦J ‚t	|t dtfƒ}|d urÒt
||
 ƒdksÖJ ‚t	|t dtfƒ}|d urt
|| ƒdksJ ‚t	|t dtfƒ}|d ur2t
|| ƒdks6J ‚t	|t dtfƒ}|d urbt
|| ƒdksfJ ‚t	|t dtfƒ}|d ur’t
|| ƒdks–J ‚t	|t dtfƒ}|d urÈt
|| ƒ t¡dksÌJ ‚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   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       rA   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 urbt|| ƒdksfJ ‚t|t dtfƒ}|d ur’t|| ƒdks–J ‚t|t dtfƒ}|d urÂt|| ƒdksÆJ ‚d S )Nr   r   r   r   )	r   r   r   r   r   r   r   r   r   )Zf2aZf2bZf2cZg2aZg2bÚffZg2cr@   r   r   r    Útest_gosper_sum_AeqB_part2   s.    (ÿBÿ
ÿÿ*ÿ  rC   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ØJ ‚d S )
Nr   T)Zpositiver   r   )Úintegerr   r   r   )r   r   r   r   )r   r   r   r   Zf2dZg2dr@   r   r   r    Útest_gosper_nan¡   s    8ÿ.ÿrE   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 u sJ ‚t|t dtfƒ}|d urJt|| ƒdksNJ ‚t|t dtd fƒ}|d ur~t|| ƒdks‚J ‚t|t dtfƒ}|d ur®t||	 ƒdks²J ‚t|t dtd fƒ}|d u sÔJ ‚t|t dtfƒ}|d ur t||
 ƒdksJ ‚t|t dtfƒ}|d ur0t|| ƒdks4J ‚d S )Nr   r   r$   r   é   r   é   é   r4   r%   é   r7   r   )r   r   r   r   r   )Zf3aZf3bZf3cZf3dZf3eZf3fZf3gZg3bZg3cZg3dZg3fZg3gr@   r   r   r    Útest_gosper_sum_AeqB_part3­   s8    <0 LD
ÿ$*(.    rJ   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,   r1   rA   rC   rE   rJ   r   r   r   r    Ú<module>   s,   (!
*