a
    ¬<bå  ã                   @   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 ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZmZmZmZmZ ddl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)Úsqrt)Úgamma)ÚPoly)Úsimplify)ÚaÚbÚjÚkÚmÚnÚrÚx)Úgosper_normalÚ
gosper_sumÚgosper_termc                  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   úp/Users/vegardjervell/Documents/master/model/venv/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   s4  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d ƒ t	td ƒ t	tƒt	tƒ t	tt d ƒ t	tt d ƒ  dt	tƒt	tƒ   ks0J ‚d S )Nr   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_parametricG   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_algebraicM   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_iteratedR   s    "2>Jr/   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_part1b   s`    4&:&40$"ÿ*ÿÿ<ÿÿÿ 
ÿ*ÿ6 F       r?   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ÿ
ÿÿ*ÿ  rA   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ÿ.ÿrC   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   é   é   r2   r#   é   r5   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
ÿ$*(.    rH   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.miscellaneousr   Z'sympy.functions.special.gamma_functionsr	   Zsympy.polys.polytoolsr
   Zsympy.simplify.simplifyr   Z	sympy.abcr   r   r   r   r   r   r   r   Zsympy.concrete.gosperr   r   r   r   r!   r$   r(   r)   r*   r/   r?   rA   rC   rH   r   r   r   r   Ú<module>   s*   (!
*