ó
¡¼™\c           @   sD  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 d  d l m Z m Z d  d l m Z d  d l m Z m Z e d ƒ Z e d d e ƒ\ Z Z e d	 ƒ \ Z Z Z  d
 „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( e d „  ƒ Z) d S(   iÿÿÿÿ(   t   Eqt	   factorialt   Functiont   Lambdat   rft   St   sqrtt   symbolst   It   expand_funct   binomialt   gamma(   t   rsolvet   rsolve_hypert   rsolve_polyt   rsolve_ratio(   t   raisest   slow(   t   range(   t   at   bt   ys   n,kt   integers   C0,C1,C2c           C   sƒ  t  d d d g d t ƒ d k s' t ‚ t  d d d g d t ƒ d k sN t ‚ t  d t d g t t ƒ d k sv t ‚ t  d d g t t ƒ t t d t d k sª t ‚ t  t d t g d t ƒ t t d k sÛ t ‚ t  d t d d g d t d t ƒ d k st ‚ t  d d g t d t d t ƒ t t d d t d d t d d	 t d	 d	 d t d d k st ‚ d  S(
   Niÿÿÿÿi   i    i   iüÿÿÿi   i   i   i   (   R   t   nt   AssertionErrort   C0t   C1(    (    (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyt   test_rsolve_poly   s    ''(414!c       
   C   sk  t  d t d t d d t d d t d t d d t d t d d t d d t d d t d d	 t d d
 t d g d t ƒ }  |  t d t d t d d d t d ƒ d t d d t d t d t d ƒ d t d d t d t d t d ƒ d t d d t d t d t d ƒ d t d d t d t d g k sgt ‚ d  S(   Niþÿÿÿi   i   i   i   i   i   i	   i   i   i   i    iýÿÿÿiÿÿÿÿ(   R   R   R   R   t   C2R   (   t   solution(    (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyt   test_rsolve_ratio   s    =U)))c           C   s¢  t  d d d g d t ƒ t t j t j t d ƒ t t t j t j t d ƒ t t t j t j t d ƒ t t t j t j t d ƒ t g k s¥ t ‚ t  t d d d t d d g d t ƒ t t t d ƒ t ƒ t t t d ƒ t ƒ t t t d ƒ t ƒ t t t d ƒ t ƒ g k s8t ‚ t  t d t	 d t d d g d t ƒ t t t t	 ƒ t ƒ t t t t	 ƒ t ƒ t t t t	 ƒ t ƒ t t t t	 ƒ t ƒ g k sËt ‚ t  d t t d t d d t d t d g d t ƒ t t
 t ƒ t d t k s)t ‚ t  t d d t d d t d d	 t d
 t d g d t ƒ d  k syt ‚ t  t d d d g d t ƒ d  k s¥t ‚ t  d d g t t ƒ j ƒ  t t d d t d k sãt ‚ t  d d g d t t ƒ j ƒ  t t d d t d k s%t ‚ t  d d g d t t d t ƒ j ƒ  t t d t k sgt ‚ t  t d g d t ƒ j ƒ  t t t k sšt ‚ t  t d d g d t ƒ j ƒ  d t t t t d t t t d k sìt ‚ t  d d d g d t ƒ j ƒ  t t d ƒ d t d ƒ t d t t t d ƒ d t d ƒ t d t k sgt ‚ t  d d t t d t d g d t ƒ d  k sžt ‚ d  S(   Niÿÿÿÿi   i    i   i   iþÿÿÿi   i   i3   i'   (   R   R   R   R   t   HalfR   R   R   R   t   kR   t   Nonet   expandR   R   (    (    (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyt   test_rsolve_hyper&   s,    ?N(.=(.=[M,>BB3R]c            s)   t  ‡  ‡ f d †  t t ˆ  ƒ ƒ Dƒ ƒ S(   s9   Compute RHS of recurrence in f(n) with coefficients in c.c         3   s-   |  ]# } ˆ  | ˆ j  t t | ƒ Vq d  S(   N(   t   subsR   (   t   .0t   i(   t   ct   f(    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pys	   <genexpr>P   s    (   t   sumR   t   len(   R'   R(   (    (   R'   R(   s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyt   recurrence_termN   s    c       
   C   s  t  t  d t  d t  d t  d t  t  d d t  d t  d d t  d d t  d d t  d g }  d	 d g d	 d
 d g d
 d d d
 d g t  d g t  d t  d d g g } x^ |  D]V } xM | D]E } t | | ƒ } | j t  ƒ rÇ t | | t  ƒ | k st ‚ qÇ qÇ Wqº Wd S(   s   Some bulk-generated tests.i   i   i   i   i   i4   i   i   iþÿÿÿiÿÿÿÿN(   R   R+   t   is_polynomialR   R   (   t   funcst   coeffst   pR'   t   q(    (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyt   test_rsolve_bulkS   s    *=1c          C   s¶  t  t d ƒ t  t d ƒ t  t ƒ }  t d ƒ t j t j t d ƒ t t d ƒ t j t j t d ƒ t } t |  t  t ƒ ƒ t t j t j t d ƒ t t t j t j t d ƒ t t t j t j t d ƒ t t t j t j t d ƒ t g k st ‚ t |  t  t ƒ d d g ƒ | k s?t ‚ t |  t  t ƒ i d d 6d d 6ƒ | k sqt ‚ t |  t  t ƒ i d t  d ƒ 6d t  d ƒ 6ƒ | k s¯t ‚ t t  t ƒ t  t d ƒ t  t d ƒ t  t ƒ d d g ƒ | k sût ‚ t t	 t  t ƒ t  t d ƒ t  t d ƒ ƒ t  t ƒ d d g ƒ | k sLt ‚ |  j
 t  t t t |  t  t ƒ ƒ j
 t t ƒ ƒ ƒ j ƒ  d k s”t ‚ t d t  t d ƒ t d d t d t  t d ƒ d t t d t  t ƒ }  t t t ƒ t d t } d t t ƒ d d t } t |  t  t ƒ ƒ | k sAt ‚ t |  t  t ƒ g  ƒ | k set ‚ t |  t  t ƒ i  ƒ | k s‰t ‚ t |  t  t ƒ d d g ƒ | k s³t ‚ t |  t  t ƒ i d d 6d d 6ƒ | k såt ‚ t |  t  t ƒ i d t  d ƒ 6d t  d ƒ 6ƒ | k s#t ‚ |  j
 t  t t t |  t  t ƒ ƒ j
 t t ƒ ƒ ƒ j ƒ  d k skt ‚ t  t ƒ t  t d ƒ d }  t |  t  t ƒ i d t  d ƒ 6ƒ d t k s¾t ‚ t |  t  t ƒ i d t  d ƒ 6ƒ d t d k s÷t ‚ t |  t  t ƒ i d t  d ƒ 6d t  d ƒ 6ƒ d  k s5t ‚ |  j
 t  t t t |  t  t ƒ ƒ j
 t t ƒ ƒ ƒ j ƒ  d k s}t ‚ d t  t d ƒ t  t ƒ d }  t |  t  t ƒ i d t  d ƒ 6ƒ d t d t j k sàt ‚ t |  t  t ƒ i d t  d ƒ 6ƒ d t d t j k s t ‚ t |  t  t ƒ i d t  d ƒ 6ƒ d d t d t j k sdt ‚ |  j
 t  t t t |  t  t ƒ ƒ j
 t t ƒ ƒ ƒ j ƒ  d k s¬t ‚ t  t ƒ d t t  t d ƒ }  t |  t  t ƒ ƒ t t t ƒ k sùt ‚ |  j
 t  t t t |  t  t ƒ ƒ j
 t t ƒ ƒ ƒ j ƒ  d k sAt ‚ t  t ƒ d t t  t d ƒ d }  t |  t  t ƒ ƒ d  k sˆt ‚ d t  t d ƒ d t t  t ƒ t }  t |  t  t ƒ i d t  d ƒ 6ƒ d t d t k sït ‚ t |  t  t ƒ i d t  d ƒ 6ƒ d t d t d k s0t ‚ t |  t  t ƒ i d t  d ƒ 6ƒ d t d t d k sqt ‚ |  j
 t  t t t |  t  t ƒ ƒ j
 t t ƒ ƒ ƒ j ƒ  d k s¹t ‚ t d t d t  t d ƒ t d t d t  t ƒ }  t |  t  t ƒ i d t  d ƒ 6d t  d	 ƒ 6ƒ t t d t d k sA	t ‚ t |  t  t ƒ i d t  d ƒ 6d
 t  d	 ƒ 6ƒ t t d t d d t k s˜	t ‚ |  j
 t  t t t |  t  t ƒ ƒ j
 t t ƒ ƒ ƒ j ƒ  d k sà	t ‚ t t	 t  t d ƒ t t  t ƒ ƒ t  t ƒ i t t  d ƒ 6ƒ j ƒ  t t k s8
t ‚ t t  t ƒ t t  t d ƒ t  t ƒ i t t ƒ t t t  d ƒ 6t t t t  d ƒ 6ƒ j ƒ  t t d d t t t k sÃ
t ‚ d t d d t d t  t d ƒ d	 t d d t d t  t ƒ }  t t |  t  t ƒ i t d t d d ƒ t  d ƒ 6ƒ j t ƒ ƒ j ƒ  d d t t d t d d	 t d d d k st ‚ t t  t ƒ t t  t d ƒ t  t d ƒ d t  t ƒ ƒ t t t d d ƒ d t t t t t d d ƒ d t t j ƒ  d k s(t ‚ t t d t  t ƒ t  t ƒ ƒ d  k sWt ‚ t t d t  t ƒ t d t  t d ƒ t d t  t d ƒ t  t ƒ ƒ d  k s²t ‚ d  S(   Ni   i   i   i    i   iýÿÿÿi   i   i   ièÿÿÿiÿÿÿÿiðÿÿÿi    i   i	   (   R   R   R   R   R   R   R   R   R   R    R$   R   R    t   simplifyR   R!   R   R   R	   R
   t   rewriteR   (   R(   t   ht   g(    (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyt   test_rsolved   sz    (%)?N*2>LQHT!$$*2>H59>H"A@DH"+H&!*=AAH:NTHX'<(J6;<":/Lc              sr   t  d ƒ ‰  t t d „  ƒ t t ‡  f d †  ƒ t t ‡  f d †  ƒ t t d „  ƒ t t ‡  f d †  ƒ d  S(   Nt   xc           S   s'   t  t t ƒ t t d ƒ t t ƒ ƒ S(   Ni   (   R   R   R   R    (    (    (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyt   <lambda>Â   t    c              s'   t  t t ƒ t t d ƒ ˆ  t ƒ ƒ S(   Ni   (   R   R   R   (    (   R7   (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyR8   Ã   R9   c              s'   t  t t ƒ ˆ  t d ƒ t t ƒ ƒ S(   Ni   (   R   R   R   (    (   R7   (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyR8   Ä   R9   c           S   s1   t  t t ƒ t t ƒ t t d ƒ t t ƒ ƒ S(   Ni   (   R   R   R   R   (    (    (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyR8   Å   R9   c              s7   t  t t ƒ t t d ƒ t t ƒ i d ˆ  d ƒ 6ƒ S(   Ni   i    (   R   R   R   (    (   R7   (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyR8   Æ   R9   (   R   R   t
   ValueError(    (    (   R7   s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyt   test_rsolve_raisesÀ   s    c          C   s­   t  t d ƒ t  t d ƒ t  t ƒ d }  t |  t  t ƒ ƒ d t t t t k s^ t ‚ t |  t  t ƒ i d t  d ƒ 6d t  d ƒ 6ƒ d d t t k s© t ‚ d  S(   Ni   i   i   i    (   R   R   R   R   R   R   (   R(   (    (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyt   test_issue_6844É   s    ,2c          C   s½   t  t ƒ d t  t d ƒ d t  t d ƒ d t  t d ƒ d t  t d ƒ d t  t d	 ƒ d t  t d
 ƒ d t  t d ƒ t  t d ƒ }  t |  t  t ƒ ƒ d  k	 s¹ t ‚ d  S(   Ni   i   i  i   iD  i   i  i   i   i   i   i   (   R   R   R   R!   R   (   R(   (    (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyt   test_issue_15751Ï   s    ˜N(*   t   sympyR    R   R   R   R   R   R   R   R   R	   R
   R   t   sympy.solvers.recurrR   R   R   R   t   sympy.utilities.pytestR   R   t   sympy.core.compatibilityR   t	   sympy.abcR   R   R   t   TrueR   R    R   R   R   R   R   R#   R+   R1   R6   R;   R<   R=   (    (    (    s>   lib/python2.7/site-packages/sympy/solvers/tests/test_recurr.pyt   <module>   s    R"			(			\			