ó
¡¼™\c           @   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 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 „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d S(   s;   Tests for Gosper's algorithm for hypergeometric summation. iÿÿÿÿ(   t   binomialt	   factorialt   gammat   Polyt   St   simplifyt   sqrtt   expt   logt   Symbolt   pi(   t   at   bt   jt   kt   mt   nt   rt   x(   t   gosper_normalt
   gosper_sumt   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 s‹ t ‚ t d t |  Œ t d ƒ d t  t d ƒ d t  t d ƒ d f k sØ t ‚ d  S(   Ni   i   i   i   i   t   polys(   R   R   R   R   t   AssertionErrort   False(   t   eq(    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   test_gosper_normal	   s
    /	Sc           C   sd   t  d t d t t ƒ t d t d ƒ t ƒ t t d ƒ d t t d ƒ d k s` t ‚ d  S(   Ni   i   i   (   R   R   R   R   R   (    (    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   test_gosper_term   s    c           C   s#  t  d t d t f ƒ d t k s( t ‚ t  t t d t f ƒ t d t d k sX t ‚ t  t d t d t f ƒ t d t d d t d k s˜ t ‚ t  t d t d t f ƒ t d d t d d k sÔ t ‚ t  d t t d t f ƒ d d t d k st ‚ t  t t ƒ t d t f ƒ d  k s2t ‚ t  t t t ƒ t d t f ƒ d  k s_t ‚ t  t t ƒ t d t d t f ƒ d  k s‘t ‚ t  t d t t ƒ t d t f ƒ d  k sÃt ‚ t  t t t ƒ t ƒ t t ƒ k sît ‚ t  t t t ƒ t d t f ƒ t t t ƒ t t ƒ d k s4t ‚ t  d t t t t ƒ t d t f ƒ d k sit ‚ t  d t t t t ƒ t d t f ƒ d t t t t t t ƒ t k s¼t ‚ 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 s2t ‚ t  t t t t	 t t t	 t t t t ƒ t t t	 ƒ t d t f ƒ j
 ƒ  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t ‚ d  S(   Ni   i    i   i   i   i   iÿÿÿÿ(   R   R   R   R   R   t   NoneR    R   R   R   R   R   R   R   (    (    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   test_gosper_sum   s,    (0@<4*-22+C5P9=;vc           C   sI  t  t t ƒ t t d d k s' t ‚ t  t d t ƒ t t d d t d d k s^ t ‚ t  d t t d t ƒ d t k s‰ t ‚ 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 sEt ‚ d  S(   Ni   i   i   iÿÿÿÿi   i   iž   i   i®  i¦  i½  i   i   (   R   R   R   R   (    (    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   test_gosper_sum_indefinite7   s    '7+jc           C   sÈ   t  t t d ƒ d t t d ƒ t t d ƒ d t t ƒ t d t f ƒ t d t t d d t d t t t d ƒ d d t t ƒ t t d ƒ d t t ƒ t d d t k sÄ t ‚ d  S(   Ni   i   iÿÿÿÿ(   R   R    R   R   R   R   R   (    (    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   test_gosper_sum_parametricA   s    Kc           C   s\   t  t d t d ƒ t d t f ƒ t d d t d t d t d ƒ d k sX t ‚ d  S(   Ni   i    i   i   (   R   R   R   R   R   (    (    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   test_gosper_sum_algebraicG   s    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/t ‚ t | t d	 t f ƒ | k sSt ‚ t | t d	 t f ƒ | k swt ‚ t | t d	 t f ƒ | k s›t ‚ d  S(
   Ni   i   i   i   i   i   i   ii   i    (   R    R   R   R   R   (   t   f1t   f2t   f3t   f4t   f5(    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   test_gosper_sum_iteratedL   s    '7CO$$$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 d ƒ d ƒ 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 d ƒ d ƒ d t t d ƒ d } t |  t  d t f ƒ } | d  k	 rét	 | | ƒ d k sït
 ‚ t | t  d t f ƒ } | d  k	 r)t	 | |	 ƒ d k s/t
 ‚ t | t  d t f ƒ } | d  k	 rit	 | |
 ƒ d k sot
 ‚ t | t  d t f ƒ } | d  k	 r©t	 | | ƒ d k s¯t
 ‚ t | t  d t f ƒ } | d  k	 rét	 | | ƒ d k sït
 ‚ t | t  d t f ƒ } | d  k	 r)t	 | | ƒ d k s/t
 ‚ t | t  d t f ƒ } | d  k	 rit	 | | ƒ d k sot
 ‚ t | t  d t f ƒ } | d  k	 r²t	 | | ƒ j t ƒ d k s¸t
 ‚ d  S(   Ni   i   i   i   i   i   i   i   i	   i   i   i   i   iç   i?   ip   i   i   iµ  iQ   i  iÈ   i(   i    (   R   R   R    R   R   R   R
   R   R   R   R   t   rewriteR   (   t   f1at   f1bt   f1ct   f1dt   f1et   f1ft   f1gt   f1ht   g1at   g1bt   g1ct   g1dt   g1et   g1ft   g1gt   g1ht   g(    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   test_gosper_sum_AeqB_part1\   sD    
 #>+?462‚\_;$T(((((((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  k	 r“t	 | | ƒ d k s™t
 ‚ t | t  d t f ƒ } | d  k	 rÓt	 | | ƒ d k sÙt
 ‚ t | t  d t f ƒ } | d  k	 rt	 | | ƒ d k st
 ‚ d  S(   Ni   i   i   i    (   R   R   R   R    R   R   R   R   R   R   R   (   t   f2at   f2bt   f2ct   g2at   g2bt   fft   g2cR8   (    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   test_gosper_sum_AeqB_part2†   s    0_E((c          C   s  t  d d t ƒ}  t  d d t ƒ} t  d d t ƒ} t  d d t ƒ} | | |  | |  | | | t | |  ƒ t | | ƒ } d t |  d ƒ t | d ƒ |  | d | | d t |  | ƒ t | | ƒ } t | | d | f ƒ } t | | ƒ d k st ‚ d  S(	   NR   t   positiveR   R   t   integerR   i   i    (   R	   t   TrueR   R   R   R   (   R   R   R   R   t   f2dt   g2dR8   (    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   test_gosper_nanš   s    >Cc          C   sÅ  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  k sOt ‚ t | t  d t f ƒ } | d  k	 r‰t | | ƒ d k st ‚ t | t  d t d f ƒ } | d  k	 rÍt | | ƒ d k sÓt ‚ t | t  d t f ƒ } | d  k	 rt | |	 ƒ d k st ‚ t | t  d t d f ƒ } | d  k sAt ‚ t | t  d t f ƒ } | d  k	 r{t | |
 ƒ d k st ‚ t | t  d t f ƒ } | d  k	 r»t | | ƒ d k sÁt ‚ d  S(   Ni   i   i   i   i   i   i   i   i	   i   i    (   R   R   R   R   R   R   R   (   t   f3at   f3bt   f3ct   f3dt   f3et   f3ft   f3gt   g3bt   g3ct   g3dt   g3ft   g3gR8   (    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   test_gosper_sum_AeqB_part3¦   s6    >2"NF&0.5((((N(%   t   __doc__t   sympyR    R   R   R   R   R   R   R   R   R	   R
   t	   sympy.abcR   R   R   R   R   R   R   R   t   sympy.concrete.gosperR   R   R   R   R   R   R   R   R    R&   R9   RA   RG   RT   (    (    (    s?   lib/python2.7/site-packages/sympy/concrete/tests/test_gosper.pyt   <module>   s   L:			!	
				*		