o
    FZŽ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s4J ‚t| ddiŽtddƒt tddƒ t tddƒ fksOJ ‚d S )Né   é   é   é   é   ZpolysF)r   r   r   r   )Úeq© r   úO/var/www/auris/lib/python3.10/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s$J ‚d S )Nr   r   r   )r   r   r   r   ÚHalfr   r   r   r   r    Útest_gosper_term   s   ÿÿÿÿr#   c                   C   s8  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s:J ‚t td tdtfƒtd dt d  d ksRJ ‚t dt tdtfƒddt  d ksfJ ‚t ttƒtdtfƒd u stJ ‚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 s§J ‚t tttƒ tƒttƒks¶J ‚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s6J ‚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s&J ‚t dttd   tƒdt ks7J ‚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sJ ‚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sFJ ‚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s$J ‚d S )Nr   r   r   r$   )r   r   r
   r   r   r   r   r    Útest_gosper_sum_algebraicN   s
   ÿ&ÿr,   c                  C   sV  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sJ ‚t|td	tfƒ|ks©J ‚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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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r1t
|| ƒdks3J ‚t	|t dtfƒ}|d urIt
|| ƒdksKJ ‚t	|t dtfƒ}|d urdt
|| ƒ t¡dksfJ ‚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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 ‚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slJ ‚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r%t|| ƒdks'J ‚t|t dtd fƒ}|d ur?t|| ƒdksAJ ‚t|t dtfƒ}|d urWt||	 ƒdksYJ ‚t|t dtd fƒ}|d u sjJ ‚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   é   é   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.    (!
*