o
    ŕ8VaŘ  ă                   @   sÔ   d Z ddlmZmZmZmZ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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. é    )ÚbinomialÚ	factorialÚgammaÚPolyÚSÚsimplifyÚsqrtÚexpÚlogÚSymbolÚpiÚRational)Ú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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   úB/usr/lib/python3/dist-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sJ d S )Nr   r   r$   r%   é   r   é   r   iŽ  iŚ  i˝  é   r   )r   r   r   r   r   r   r    Útest_gosper_sum_indefinite7   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_parametricA   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_algebraicG   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sJ 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_iteratedL   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_part1\   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g2bZffZg2cr@   r   r   r    Útest_gosper_sum_AeqB_part2   s.   (˙B˙
˙˙*˙ rB   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   )Z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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
˙$*(.    $rH   N)&Ú__doc__Zsympyr   r   r   r   r   r   r   r	   r
   r   r   r   Z	sympy.abcr   r   r   r   r   r   r   r   Zsympy.concrete.gosperr   r   r   r!   r#   r&   r*   r+   r,   r1   rA   rB   rC   rH   r   r   r   r    Ú<module>   s    8(!
*