o
    *ήc                     @   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 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)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               polysF)r   r   r
   r   )eq r   G/tmp/pip-target-vg8gfxp4/lib/python/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   s(  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 sJ t tttd  tdtfd u sJ t td tt tdtfd u sJ t ttt tttksJ t ttt tdtfttt tt d ksJ t dt ttt tdtfdksJ 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d  t	td  t	tt	t t	tt d  t	tt d   dt	tt	t   ksJ 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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_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s$J d S )Nr   r   r   r#   )r   r   r   r   r   r   r   r   test_gosper_sum_algebraicM   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sJ t|td	tf|ksJ t|td	tf|ksJ t|td	tf|ksJ d S )
Nr   r   r   r   r      r(   i   r   )r   r   r   r   )f1f2f3f4f5r   r   r   test_gosper_sum_iteratedR   s   "2>Jr3   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rt
|| dksJ t	|t dtf}|d urt
||	 dksJ t	|t dtf}|d urt
||
 dksJ 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  iQ   i     (   r   )r   r   r   r   r   r!   r   r   r   r   r   rewriter	   )f1af1bf1cf1df1ef1ff1gf1hg1ag1bg1cg1dg1eg1fg1gg1hgr   r   r   test_gosper_sum_AeqB_part1b   s`   4&:&40$"*< 
*6 F       *rT   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rt|| dksJ t|t dtf}|d urt|| dksJ t|t dtf}|d urt|| dksJ d S )Nr   r   r   r   )	r   r   r   r   r   r   r   r   r   )f2af2bf2cg2ag2bffg2crS   r   r   r   test_gosper_sum_AeqB_part2   s.   (B
* r\   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)positiver   r   )integerr   r   r   )r   r   r   r   )r   r   r   r   f2dg2drS   r   r   r   test_gosper_nan   s   8.ra   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rt||
 dksJ t|t dtf}|d urt|| dksJ d S )Nr   r   r#   r      r         r6   r$      r9   r   )r   r   r   r   r   )f3af3bf3cf3df3ef3ff3gg3bg3cg3dg3fg3grS   r   r   r   test_gosper_sum_AeqB_part3   s8   <0 LD
$*(.    $rr   N)+__doc__sympy.core.numbersr   r   sympy.core.singletonr   sympy.core.symbolr   (sympy.functions.combinatorial.factorialsr   r   (sympy.functions.elementary.miscellaneousr   'sympy.functions.special.gamma_functionsr	   sympy.polys.polytoolsr
   sympy.simplify.simplifyr   sympy.concrete.gosperr   r   r   	sympy.abcr   r   r   r   r   r   r   r   r    r"   r%   r)   r*   r+   r3   rT   r\   ra   rr   r   r   r   r   <module>   s,    (!
*