ó
¡¼™\c           @   s   d  d l  Z  d  d l m Z m 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 m Z m Z m Z 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' d  d l( m) Z) d  d l* m+ Z+ d  d l, m- Z- m. Z. m/ Z/ d  d	 l0 m1 Z1 m2 Z2 d  d
 l3 m4 Z4 e) d ƒ Z5 e) d ƒ Z6 d „  Z7 e2 d „  ƒ Z8 e2 d „  ƒ Z9 e2 d „  ƒ Z: e2 d „  ƒ Z; e2 d „  ƒ Z< d „  Z= d „  Z> d „  Z? d „  Z@ d „  ZA e2 d „  ƒ ZB d S(   iÿÿÿÿN(   t   Symbolt   symbols(   t
   Assignmentt   Printt   Declarationt   FunctionDefinitiont   Returnt   realt   FunctionCallt   Variablet   Elementt   integert   value_const(   t   allocatablet   ArrayConstructort   isignt   dsignt   cmplxt   kindt
   literal_dpt   Programt   Modulet   uset
   Subroutinet	   dimensiont   assumed_extentt   ImpliedDoLoopt
   intent_outt   sizet   Dot   SubroutineCallt   sum_t   arrayR   R   t   bind_C(   t   render_as_module(   t   import_module(   t   fcode(   t   has_fortrant   compile_run_stringst   compile_link_import_strings(   t   TemporaryDirectoryt	   may_xfail(   t   skipt   cythont   numpyc          C   s@   t  d d t ƒ}  t |  ƒ } t | d d ƒd k s< t ‚ d  S(   Nt   xR   t   source_formatt   frees   size(x)(   R    t   TrueR   R$   t   AssertionError(   R-   t   sx(    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt	   test_size   s    c          C   s  t  ƒ  s t d ƒ n  t d d t ƒ}  t t |  d ƒ t |  ƒ d ƒ g } t |  d d g d d	 ƒ} t t	 d
 | g | ƒ } t
 | g d ƒ } t d t
 | g d ƒ f d g d t ƒ\ \ } } } d | k sÜ t ‚ | d k sî t ‚ | d t j k st ‚ d  S(   Ns   No fortran compiler found.t   aR   i   g      à?t   dimt   :t   intentt   int   rmst   mod_rmss   rms.f90s   main.f90sƒ   program myprog
use mod_rms, only: rms
real*8, dimension(4), parameter :: x = [4, 2, 2, 2]
print *, dsqrt(7d0) - rms(x)
end program
t   cleans   0.00000t    t   exit_status(   s   main.f90sƒ   program myprog
use mod_rms, only: rms
real*8, dimension(4), parameter :: x = [4, 2, 2, 2]
print *, dsqrt(7d0) - rms(x)
end program
(   R%   R*   R    R0   R   R   R   R    R   R   R"   R&   R1   t   ost   EX_OK(   R4   t   bodyt   arrt   fdt   f_modt   stdoutt   stderrt   info(    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt   test_size_assumed_shape   s    	' 	c    
      C   sD  t  ƒ  s t d ƒ n  t d d t ƒ\ }  } t | d | d d d ƒ } t d | d g ƒ } t |  d	 d
 g d t g ƒ}  t d |  j	 ƒ  t
 |  | ƒ t |  g ƒ g ƒ } t | d d d d ƒ} t d | f g d t ƒ\ \ } } } x& d j ƒ  D] }	 |	 | k sù t ‚ qù W| d k s't ‚ | d t j k s@t ‚ d  S(   Ns   No fortran compiler found.s   a iR   i   iýÿÿÿi   iäÿÿÿi   R5   R6   t   attrst   idlprogt   standardiÓ  R.   R/   s   main.f90R;   s   -28 -27 -1 1 27 28R<   R=   (   R%   R*   R   R0   R   R   R    R   R   t   as_DeclarationR   R   R$   R&   t   splitR1   R>   R?   (
   R4   t   it   idlt   act   progt   fsrcRD   RE   RF   t   numstr(    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt   test_ImpliedDoLoop6   s     		'c          C   s÷   t  d d t ƒ}  t j |  d ƒ } t | ƒ } t |  |  d g ƒ } t d | | g ƒ } t ƒ  sq t d ƒ n  t	 d t
 | d d	 ƒf g d
 t ƒ\ \ } } } d | k s¶ t ‚ d | k sÈ t ‚ | d k sÚ t ‚ | d t j k só t ‚ d  S(   NR-   R   i*   i   t   foos   No fortran compiler found.s   main.f90RJ   iZ   R;   t   42t   43R<   R=   (   R    R0   R	   t   deducedR   R   R   R%   R*   R&   R$   R1   R>   R?   (   R-   t   vxt   declt   prntRP   RD   RE   RF   (    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt   test_ProgramL   s    	3c    	      C   s;  t  d d t ƒ}  t j |  ƒ } t t d | g t |  d ƒ g ƒ } t d g  | g ƒ } t d d g ƒ } t	 d t
 d d d g ƒt d	 | g ƒ g ƒ } t ƒ  s³ t d
 ƒ n  t d t | d d ƒf d t | d d ƒf g d t ƒ\ \ } } } d | k st ‚ t d ƒ | k s%t ‚ | d k s7t ‚ d  S(   NR-   R   t   sqri   t   mod_sqg      E@t   foobart   onlys   "Square of 42 = "s   No fortran compiler found.s
   mod_sq.f90RJ   iZ   s   main.f90R;   RU   i*   R<   iä  (   R    R0   R	   RW   R   R   R   R   R   R   R   R   R%   R*   R&   R$   R1   t   str(	   R-   t   v_xt   sqR]   t   sq_callt   prg_sqRD   RE   RF   (    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt   test_Module]   s"    %	c       	   C   sZ  t  d d t ƒ}  t  d d t ƒ} t j |  d t t ƒ t f ƒ} t j | ƒ } t d t ƒ } t t	 t
 |  | g ƒ t d ƒ | d ƒ g | d | ƒ } t d	 | g t | ƒ t | ƒ t	 | t |  ƒ ƒ | g ƒ } t  d
 d t ƒ} t j | d t d ƒ g ƒ} t d d | g ƒ}	 t d t |	 d | g ƒt | ƒ t | | g ƒ t t | ƒ | g ƒ g ƒ }
 t ƒ  sƒt d ƒ n  t d t |	 d d ƒf d t |
 d d ƒf g d t ƒ\ \ } } } g  t d d ƒ D] } d | d ^ qÛ} t t | ƒ ƒ d  | k st ‚ x* | D]" } t | ƒ d  | k st ‚ qW| d k sVt ‚ d  S(   Nt   rR   RM   R   RH   t   ni   i   t   fR-   i   t   mymodt   definitionsRT   R_   s   No fortran compiler found.s   a.f90RJ   iZ   s   b.f90R;   i   g      ð?iýÿÿÿR<   (   R    R0   R	   RW   R   R   R   R   R   R   R
   R   R   R   R   R   R   R   R   R   R   R%   R*   R&   R$   t   rangeR`   t   sumR1   (   Rf   RM   t   v_rt   v_it   v_nt   do_loopt   subR-   t   v_x3t   modRP   RD   RE   RF   t   reft   _(    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt   test_Subroutines   s@    !)				*" c          C   sg   t  d d t ƒ}  t d |  ƒ t d |  ƒ k s6 t ‚ t t d |  ƒ d d d d ƒd k sc t ‚ d  S(	   NR-   R   i   RJ   i_   R.   R/   s   isign(1, x)(   R    R0   R   R1   R$   (   R-   (    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt
   test_isign   s    $c          C   sg   t  d ƒ }  t d |  ƒ t d |  ƒ k s0 t ‚ t t t d ƒ |  ƒ d d d d ƒd k sc t ‚ d  S(   NR-   i   RJ   i_   R.   R/   s   dsign(1d0, x)(   R    R   R1   R$   R   (   R-   (    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt
   test_dsign£   s    $c          C   s4   t  d ƒ }  t d |  ƒ t d |  ƒ k s0 t ‚ d  S(   NR-   i   (   R    R   R1   (   R-   (    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt
   test_cmplx©   s    c          C   s.   t  d ƒ }  t |  ƒ t |  ƒ k s* t ‚ d  S(   NR-   (   R    R   R1   (   R-   (    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt	   test_kind®   s    c           C   s(   t  t d ƒ d d ƒd k s$ t ‚ d  S(   Ni    R.   R/   t   0d0(   R$   R   R1   (    (    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt   test_literal_dp³   s    c    	      C   sL  t  ƒ  s t d ƒ n  t s) t d ƒ n  t s< t d ƒ n  t d d t ƒ}  t d d t ƒ} t t |  d ƒ | d	 ƒ g } t |  d
 | g d d ƒ} t	 t
 d | | g | d t d ƒ g ƒ} t | g d ƒ } t ƒ  e } t d | f d g d | ƒ\ } } t | j t j d d d d g ƒ ƒ d ƒ d k  sBt ‚ Wd  QXd  S(   Ns   No fortran compiler found.s   Cython not found.s   NumPy not found.R4   R   t   sR   i   g      à?R5   R7   R8   R9   RH   R:   s   rms.f90s   _rms.pyxss   cdef extern double rms(double*, int*)
def py_rms(double[::1] x):
    cdef int s = x.size
    return rms(&x[0], &s)
t	   build_dirg       @g      @i   g›+¡†›„=(   s   _rms.pyxss   cdef extern double rms(double*, int*)
def py_rms(double[::1] x):
    cdef int s = x.size
    return rms(&x[0], &s)
gêøÒ©*@(   R%   R*   R+   t   npR    R0   R   R   R    R   R   R!   R"   R(   R'   t   abst   py_rmsR1   (	   R4   R}   R@   RA   RB   RC   t   folderRs   RF   (    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt   test_bind_C·   s&    	!*	 	(C   R>   t   sympyR    R   t   sympy.codegen.astR   R   R   R   R   R   R   R	   R
   R   R   t   sympy.codegen.fnodesR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   t   sympy.codegen.futilsR"   t   sympy.externalR#   t   sympy.printing.fcodeR$   t   sympy.utilities._compilationR%   R&   R'   t!   sympy.utilities._compilation.utilR(   R)   t   sympy.utilities.pytestR*   R+   R   R3   RG   RS   R[   Re   Rv   Rw   Rx   Ry   Rz   R|   Rƒ   (    (    (    s>   lib/python2.7/site-packages/sympy/codegen/tests/test_fnodes.pyt   <module>   s.   L”	*					