ó
~9­\c           @@ sý   d  d l  m Z m Z d  d l m Z m Z m Z m Z m Z d  d l	 m
 Z
 d  d l 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 d  d l m Z d „  Z d „  Z d	 „  Z e d
 „  ƒ Z d „  Z d „  Z d „  Z  d S(   i    (   t   absolute_importt   print_function(   t   logt   expt   Symbolt   Powt   sin(   t   ccode(   t   log2t   exp2t   expm1t   log1p(   t   optimizet   log2_optt   exp2_optt	   expm1_optt	   log1p_optt
   optims_c99t   create_expand_pow_optimization(   t   XFAILc          C@ si  t  d ƒ }  d t d |  d ƒ t d ƒ } t | t g ƒ } | d t d |  d ƒ k sd t ‚ | j t ƒ | k s t ‚ d t d |  d ƒ d t d ƒ } t | t g ƒ } | d t d |  d ƒ d k sß t ‚ | j t ƒ | k sú t ‚ t |  ƒ t d ƒ } t | t g ƒ } | t |  ƒ k s:t ‚ | j t ƒ | k sUt ‚ t |  ƒ t d ƒ t |  d ƒ } t | t g ƒ } | t |  ƒ t d ƒ t |  d ƒ k s»t ‚ | j t ƒ | k sÖt ‚ t d ƒ }	 t |	 t g ƒ }
 |
 |	 k st ‚ t |  d ƒ t d ƒ } t | t g ƒ } t | ƒ d	 k sJt ‚ | j t ƒ | k set ‚ d  S(
   Nt   xi   i   i   i   i   i   i   s   log2(x + 3)(   R   R   R   R   R   t   AssertionErrort   rewritet   str(   R   t   expr1t   opt1t   expr2t   opt2t   expr3t   opt3t   expr4t   opt4t   expr5t   opt5t   expr6t   opt6(    (    sA   lib/python2.7/site-packages/sympy/codegen/tests/test_rewriting.pyt   test_log2_opt   s0    "$&($0c          C@ s“   t  d ƒ }  d d |  } t | t g ƒ } | d t |  ƒ k sH t ‚ | j t ƒ | k sc t ‚ d d |  } | t | t g ƒ k s t ‚ d  S(   NR   i   i   i   (   R   R   R   R	   R   R   R   (   R   R   R   R   (    (    sA   lib/python2.7/site-packages/sympy/codegen/tests/test_rewriting.pyt   test_exp2_opt.   s    c    
      C@ sÎ  t  d ƒ }  t |  ƒ d } t | t g ƒ } t |  ƒ | d k sJ t ‚ | j t ƒ | k se t ‚ d t |  ƒ d } t | t g ƒ } d t |  ƒ | k s§ t ‚ | j t ƒ | k sÂ t ‚ d t |  ƒ d } | t | t g ƒ k sô t ‚ d t |  ƒ t |  ƒ d } t | t g ƒ } d t |  ƒ t |  ƒ | k sJt ‚ | j t ƒ | k set ‚ d t d |  ƒ d } t | t g ƒ }	 d t d |  ƒ |	 k s¯t ‚ |	 j t ƒ | k sÊt ‚ d  S(   NR   i   i    i   i   i   (   R   R   R   R   R
   R   R   R   (
   R   R   R   R   R   R   R   R   R    R!   (    (    sA   lib/python2.7/site-packages/sympy/codegen/tests/test_rewriting.pyt   test_expm1_opt9   s&    & c          C@ sm   t  t d j ƒ  ƒ \ }  } t |  ƒ t | ƒ d } t | t g ƒ } | t |  ƒ t | ƒ k si t ‚ d  S(   Ns   x yi   (   t   mapR   t   splitR   R   R   R
   R   (   R   t   yR   R   (    (    sA   lib/python2.7/site-packages/sympy/codegen/tests/test_rewriting.pyt   test_expm1_two_exp_termsT   s    c    	      C@ sq  t  d ƒ }  t |  d ƒ } t | t g ƒ } t |  ƒ | d k sJ t ‚ | j t ƒ | k se t ‚ t d |  d ƒ } t | t g ƒ } t |  ƒ t d ƒ | k s­ t ‚ | j t ƒ | j ƒ  d k sÒ t ‚ t d |  d ƒ } t | t g ƒ } t d |  ƒ | d k st ‚ | j t ƒ | k s3t ‚ t |  d ƒ } t | t g ƒ } t | ƒ d k smt ‚ d  S(   NR   i   i    i   i   s
   log(x + 3)(	   R   R   R   R   R   R   R   t   simplifyR   (	   R   R   R   R   R   R   R   R   R   (    (    sA   lib/python2.7/site-packages/sympy/codegen/tests/test_rewriting.pyt   test_log1p_opt\   s     "% c          C@ s"  t  d ƒ }  d |  t |  ƒ t d ƒ t |  d ƒ t |  ƒ d } t | t ƒ j ƒ  } | t |  ƒ t |  ƒ t |  ƒ t	 |  ƒ k s‘ t
 ‚ | j t ƒ j t ƒ j t ƒ | k s¾ t
 ‚ t |  ƒ t d ƒ t |  d ƒ } t | t ƒ } | t |  ƒ t |  ƒ k st
 ‚ | j t ƒ | k s.t
 ‚ t |  ƒ t d ƒ t d |  d ƒ } t | t ƒ } | t |  ƒ t d ƒ t |  ƒ } | d k s›t
 ‚ | j t ƒ | j ƒ  d k sÀt
 ‚ d |  d t d |  d ƒ d	 t d ƒ d
 t |  ƒ d
 t d |  d ƒ } t | t ƒ j ƒ  }	 |	 t |  ƒ d t d |  d ƒ d	 d
 t	 |  ƒ t d ƒ t |  ƒ }
 |
 d k s…t
 ‚ |	 j t ƒ j t ƒ j t ƒ | j ƒ  d k s¼t
 ‚ d t d |  ƒ d } t | t ƒ } | d t	 d |  ƒ } | d k st
 ‚ | j t ƒ | k s(t
 ‚ t d |  ƒ d } t | t ƒ } | t d |  ƒ d } | d k sut
 ‚ t d |  d ƒ } t | t ƒ } | t d ƒ t |  ƒ } | d k sÄt
 ‚ | j t ƒ | j ƒ  d k sét
 ‚ t d |  d ƒ } t | t ƒ } | | k st
 ‚ d  S(   NR   i   i   i   i    i   i   i   i   i   (   R   R   R   R   R   R+   R	   R   R   R
   R   R   R   (   R   R   R   R   R   R   R   t   delta3R   R   t   delta4R    R!   t   delta5R"   R#   t   delta6t   expr7t   opt7t   delta7t   expr8t   opt8(    (    sA   lib/python2.7/site-packages/sympy/codegen/tests/test_rewriting.pyt   test_optims_c99r   sH    :6-$"($%RL7%c          C@ sÖ   t  d ƒ }  t d ƒ } t t | d |  g ƒ ƒ d k s@ t ‚ | d | d } t t | |  g ƒ ƒ d k sv t ‚ t | ƒ d } t t | |  g ƒ ƒ d k sª t ‚ t t | d |  g ƒ ƒ d k sÒ t ‚ d  S(	   Ni   R   s   x*x*x*xi   s   pow(x, 5) + x*x*x*xs   pow(sin(x), 4)iüÿÿÿs
   pow(x, -4)(   R   R   R   R   R   R   (   t   my_optR   t   x5x4t   sin4x(    (    sA   lib/python2.7/site-packages/sympy/codegen/tests/test_rewriting.pyt#   test_create_expand_pow_optimization¡   s    ($$N(!   t
   __future__R    R   t   sympyR   R   R   R   R   t   sympy.printing.ccodeR   t   sympy.codegen.cfunctionsR   R	   R
   R   t   sympy.codegen.rewritingR   R   R   R   R   R   R   t   sympy.utilities.pytestR   R$   R%   R&   R*   R,   R6   R:   (    (    (    sA   lib/python2.7/site-packages/sympy/codegen/tests/test_rewriting.pyt   <module>   s   ("4	 				/