ó
¡¼™\c           @   s!  d  d l  m Z d  d l m Z d  d l Z e d ƒ rM d  d l j j Z n e	 Z
 d  d l 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 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d S(   iÿÿÿÿ(   t   import_module(   t   raisesNt   llvmlite(   t   at   bt   nc         C   s.   d } d } t  |  | ƒ | | t  | ƒ k S(   Ngñhãˆµøä>g:Œ0âŽyE>(   t   abs(   R   R   t   rtolt   atol(    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   isclose   s    c          C   sf   t  d }  t j t  g |  ƒ } t |  j i d t  6ƒ j ƒ  ƒ } | d ƒ } t | | ƒ sb t ‚ d  S(   Ng      ð?g      @(   R   t   gt   llvm_callablet   floatt   subst   evalfR	   t   AssertionError(   t   et   ft   rest   jit_res(    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_simple_expr   s
    
"c          C   s{   d t  t d }  t j t  t g |  ƒ } t |  j i d t  6d t 6ƒ j ƒ  ƒ } | d d ƒ } t | | ƒ sw t ‚ d  S(   Ng      @g      @(	   R   R   R
   R   R   R   R   R	   R   (   R   R   R   R   (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_two_arg    s
    )c          C   sp   d t  j t ƒ }  t j t g |  ƒ } t |  j i d t 6ƒ j ƒ  ƒ } | d ƒ } t | | ƒ sl t	 ‚ d  S(   Ng      @g      ø?(
   t   sympyt   expR   R
   R   R   R   R   R	   R   (   R   R   R   R   (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt	   test_func)   s
    "c          C   sŠ   d t  j t ƒ t  j t ƒ }  t j t t g |  ƒ } t |  j i d t 6d t 6ƒ j ƒ  ƒ } | d d ƒ } t	 | | ƒ s† t
 ‚ d  S(   Ng      @g      ø?g       @(   R   R   R   R   R
   R   R   R   R   R	   R   (   R   R   R   R   (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_two_func2   s
    !)c          C   s‰   d t  j t ƒ t  j t ƒ }  t j t t g |  ƒ } t |  j i d t 6d t 6ƒ j ƒ  ƒ } | d d ƒ } t	 | | ƒ s… t
 ‚ d  S(   Ng      @g      ø?g       @(   R   t   sqrtR   R   R
   R   R   R   R   R	   R   (   R   R   R   R   (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_two_sqrt;   s
     )c          C   s{   t  d t d }  t j t  t g |  ƒ } t |  j i d t  6d t 6ƒ j ƒ  ƒ } | d d ƒ } t | | ƒ sw t ‚ d  S(   Ng      ø?i   g       @(	   R   R   R
   R   R   R   R   R	   R   (   R   R   R   R   (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_two_powD   s
    )c          C   s¡   t  d }  t j t  g |  d d ƒ} t j d ƒ } t j d } i d t  6} | | t  ƒ } | | | ƒ } t |  j | ƒ j ƒ  ƒ } t	 | | ƒ s t
 ‚ d  S(   Ng333333ó?t   callback_types   scipy.integrate.testi   gš™™™™™@(   R   R
   R   t   ctypest   c_intt   c_doubleR   R   R   R	   R   (   R   R   t   mt
   array_typet   inpt   arrayR   R   (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_callbackM   s    
c    	      C   sÌ   t  d }  t j t  g |  d d ƒ} t j d ƒ } t j d } i d t  6} | | t  ƒ } | d ƒ } | | | d  | | ƒ } | d k s” t ‚ t |  j	 | ƒ j
 ƒ  ƒ } t | d | ƒ sÈ t ‚ d  S(   Ng333333ó?R   t   cubaturei   gš™™™™™@g        i    (   R   R
   R   R   R   R    t   NoneR   R   R   R   R	   (	   R   R   R!   R"   R#   R$   t	   out_arrayt   jit_retR   (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_callback_cubature[   s    
c          C   s¶   d t  t }  t j t  t g |  d d ƒ} t j d ƒ } t j d } i d t  6d t 6} | | t  | t ƒ } | | | ƒ } t |  j | ƒ j	 ƒ  ƒ } t
 | | ƒ s² t ‚ d  S(   Ni   R   s   scipy.integrate.testi   gš™™™™™É?g333333û?(   R   R   R
   R   R   R   R    R   R   R   R	   R   (   R   R   R!   R"   R#   R$   R   R   (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_callback_twol   s    c    	      C   sÝ   t  j d ƒ }  d |  d |  d } t j t |  g | d d ƒ} t j d ƒ } t j d } i d |  d 6d	 |  d 6} | | |  d | |  d ƒ } | | | ƒ } t | j	 | ƒ j
 ƒ  ƒ } t | | ƒ sÙ t ‚ d  S(
   Nt   di   i    i   R   s   scipy.integrate.testi   gš™™™™™É?g333333û?(   R   t   IndexedBaseR
   R   R   R   R   R    R   R   R   R	   R   (	   R,   R   R   R!   R"   R#   R$   R   R   (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_callback_alt_twoz   s    c    
      C   s  t  d t f g t  d g g }  t j t g |  ƒ } |  d d d j i d t 6ƒ } t |  d d j i | t  6ƒ j ƒ  ƒ } | d ƒ } t | | ƒ s¢ t ‚ t j t g |  d d ƒ} t	 j
 d ƒ } t	 j d } | d ƒ } | | | ƒ }	 t |	 | ƒ s	t ‚ d  S(   Ng      @i   i    i   g      ø?R   s   scipy.integrate.test(   R   R   R
   R   R   R   R   R	   R   R   R   R    (
   R   R   t   b_valR   R   t
   f_callbackR!   R"   R$   t   jit_callback_res(    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_multiple_statements‰   s     "*c          C   s¤   t  t  t t t j t  t  t t ƒ }  t j |  ƒ } t j t  t g | ƒ } t |  j i d t  6d t 6ƒ j	 ƒ  ƒ } | d d ƒ } t
 | | ƒ s  t ‚ d  S(   Ngffffff@gš™™™™™¹?(   R   R   R   R   t   cseR
   R   R   R   R   R	   R   (   R   t   e2R   R   R   (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_cseš   s    ,)c         C   sy   t  ƒ  } x@ |  d D]4 \ } } | j | ƒ } | j | ƒ } | | | <q Wg  |  d D] }  |  j | ƒ j | ƒ ^ qW S(   Ni    i   (   t   dictR   (   R   t   sub_dictt   tmp_dictt   tmp_namet   tmp_exprR4   t   e3(    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   eval_cse¤   s    	c             sá   t  t  }  t  t  t t } t j |  | g ƒ ‰  t t ‡  f d †  ƒ t j t  t g ˆ  ƒ } | d d ƒ } t | ƒ d k s† t	 ‚ t
 ˆ  i d t  6d t 6ƒ } t | d | d ƒ sÀ t	 ‚ t | d | d ƒ sÝ t	 ‚ d  S(   Nc              s   t  j t t g ˆ  d d ƒS(   NR   s   scipy.integrate(   R
   R   R   R   (    (   R;   (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   <lambda>³   t    gš™™™™™¹?g      ø?i   i    i   (   R   R   R   R3   R   t   NotImplementedErrorR
   R   t   lenR   R<   R	   (   t   e1R4   R   R   R   (    (   R;   s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_cse_multiple­   s    
c          C   sb  t  t  }  t  t  t t } t j |  | d | g ƒ } t j t  t g | d d ƒ} d } d } t j | ƒ } t j | ƒ } t j | } t j | }	 i d t  6d t 6}
 | |
 t  |
 t ƒ } |	 ƒ  } | | | d  | | ƒ } | d k sø t
 ‚ t | |
 ƒ } t | d | d ƒ s$t
 ‚ t | d	 | d	 ƒ sAt
 ‚ t | d | d ƒ s^t
 ‚ d  S(
   Ni   R   R&   i   i   gš™™™™™É?g      ø?i    i   (   R   R   R   R3   R
   R   R   R   R    R'   R   R<   R	   (   RA   R4   R;   R   t   ndimt   outdimR!   t   fdimR"   t   out_array_typeR#   R$   R(   R)   R   (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_callback_cubature_multiple½   s&    
	c              s(   t  t  t ‰  t t ‡  f d †  ƒ d  S(   Nc              s   t  j t g ˆ  ƒ S(   N(   R
   R   R   (    (   R   (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyR=   Ü   R>   (   R   R   R   t   LookupError(    (    (   R   s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_symbol_not_foundÚ   s    c              s    t  ‰  t t ‡  f d †  ƒ d  S(   Nc              s   t  j t g ˆ  d d ƒS(   NR   t   bad_callback(   R
   R   R   (    (   R   (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyR=   á   R>   (   R   R   t
   ValueError(    (    (   R   s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   test_bad_callbackß   s    ("   t   sympy.externalR    t   sympy.utilities.pytestR   R   t   sympy.printing.llvmjitcodet   printingt   llvmjitcodeR
   t   Truet   disabledR   t	   sympy.abcR   R   R   R	   R   R   R   R   R   R   R%   R*   R+   R.   R2   R5   R<   RB   RG   RI   RL   (    (    (    s@   lib/python2.7/site-packages/sympy/printing/tests/test_llvmjit.pyt   <module>   s2   																			
					