ó
¡¼™\c           @   sQ  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 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  d l$ m% Z% m& Z& m' Z' m( Z( m) Z) m* Z* m+ Z+ m, Z, m- Z- m. Z. m/ Z/ m0 Z0 d  d l1 m2 Z2 d  d l3 m4 Z4 d  d l5 m6 Z6 m7 Z7 m8 Z8 m9 Z9 m: Z: d  d l; m< Z< m= Z= d  d l> m? Z? m@ Z@ d  d	 lA mB ZB mC ZC d  d
 lD mE ZE d  d lF mG ZG d „  ZH d „  ZI d „  ZJ d „  ZK d „  ZL d „  ZM d „  ZN d „  ZO d „  ZP d „  ZQ d „  ZR d „  ZS d „  ZT d „  ZU d „  ZV d „  ZW d „  ZX d „  ZY d „  ZZ d „  Z[ d  „  Z\ d! „  Z] d" „  Z^ d# „  Z_ d$ „  Z` d% „  Za d& „  Zb d' „  Zc d( „  Zd d) „  Ze d* „  Zf d+ „  Zg d, „  Zh d- „  Zi d. „  Zj d/ „  Zk d0 „  Zl d1 „  Zm d2 „  Zn d3 „  Zo d4 „  Zp d5 S(6   iÿÿÿÿ(   t   sint   cost   atan2t   logt   expt   gammat	   conjugatet   sqrtt	   factorialt   Integralt	   Piecewiset   Addt   difft   symbolst   St   Floatt   Dummyt   Eqt   Ranget   Catalant
   EulerGammat   Et   GoldenRatiot   It   pit   Functiont   Rationalt   Integert   Lambdat   signt   Mod(   t   Fort
   Assignmentt
   aug_assign(   t   Declarationt   Variablet   float32t   float64t   value_constt   realt   bool_t   Whilet   FunctionPrototypet   FunctionDefinitiont   integert   Return(   t   range(   t
   Relational(   t   Andt   Ort   Nott
   Equivalentt   Xor(   t   Matrixt   MatrixSymbol(   t   fcodet   FCodePrinter(   t   IndexedBaset   Idx(   t   implemented_function(   t   raisesc          C   sD   t  d ƒ }  d t f d „  ƒ  Y} t | |  ƒ ƒ d k s@ t ‚ d  S(   Nt   xt   nintc           B   s   e  Z d  „  Z RS(   c         S   s   d | j  |  j d ƒ S(   Ns   nint(%s)i    (   t   _printt   args(   t   selft   printer(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   _fcode   s    (   t   __name__t
   __module__RC   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyR>      s   s         nint(x)(   R   R   R7   t   AssertionError(   R=   R>   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_printmethod   s    c             sÈ   t  d ƒ ‰  t  d d t ƒ}  t  d d t ƒ} t t ˆ  ƒ d d d d	 ƒd
 k sZ t ‚ t t |  ƒ d d d d	 ƒd k s„ t ‚ t t | ƒ d d d d	 ƒd k s® t ‚ t t ‡  f d †  ƒ d  S(   NR=   t   yR,   t   zt   complext   standardi_   t   source_formatt   frees#   merge(0d0, dsign(1d0, x), x == 0d0)s   merge(0, isign(1, y), y == 0)s/   merge(cmplx(0d0, 0d0), z/abs(z), abs(z) == 0d0)c              s   t  t ˆ  ƒ ƒ S(   N(   R7   R   (    (   R=   (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   <lambda>%   t    (   R   t   TrueR7   R   RF   R<   t   NotImplementedError(   RH   RI   (    (   R=   s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_sign   s    ***c          C   sœ  t  d ƒ \ }  } t  d d t ƒ} t |  d ƒ d k s@ t ‚ t |  | d ƒ d k s` t ‚ t d t |  ƒ d |  | |  |  d	 | ƒ d
 k sž t ‚ t t |  ƒ ƒ d k s¼ t ‚ t t | ƒ ƒ d k sÚ t ‚ t |  d ƒ d k sö t ‚ t t |  ƒ ƒ d k st ‚ t t d ƒ ƒ d k s2t ‚ t |  d ƒ d k sNt ‚ t |  d d d d ƒd k sst ‚ t |  t d d ƒ ƒ d k s˜t ‚ d  S(   Ns   x,yt   nR,   i   s
         x**3s         x**(y**3)i   g      @i   s,         (3.5d0*sin(x))**(-x + y**x)/(x**2 + y)s         sqrt(x)s         sqrt(dble(n))g      à?i
   s         sqrt(10.0d0)g      ð¿s         1d0/xg       ÀRH   RL   RM   s   y = x**(-2.0d0)i   s         x**(3.0d0/7.0d0)(   R   RP   R7   RF   R    R   R   (   R=   RH   RS   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_Pow(   s     /%c          C   sÞ   t  d ƒ }  t t d d ƒ ƒ d k s- t ‚ t t d d ƒ ƒ d k sN t ‚ t t d d ƒ ƒ d	 k so t ‚ t t d
 d ƒ ƒ d k s t ‚ t |  t d d ƒ ƒ d k sµ t ‚ t t d d ƒ |  ƒ d k sÚ t ‚ d  S(   NR=   i   i   s         3.0d0/7.0d0i   i	   s         2iùÿÿÿs         -3.0d0/7.0d0iýÿÿÿs         x + 3.0d0/7.0d0s         (3.0d0/7.0d0)*x(   R   R7   R   RF   (   R=   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_Rational:   s    !!!!%c           C   s@   t  t d ƒ ƒ d k s t ‚ t  t d ƒ ƒ d k s< t ‚ d  S(   NiC   s         67iÿÿÿÿs         -1(   R7   R   RF   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_IntegerD   s    c           C   s@   t  t d ƒ ƒ d k s t ‚ t  t d ƒ ƒ d k s< t ‚ d  S(   Ng      E@s         42.0000000000000d0g@Œµx¯Äs         -1.00000000000000d+20(   R7   R   RF   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_FloatI   s    c             s  t  d ƒ \ ‰  ‰ t t ˆ  ƒ t ˆ ƒ ƒ d k s: t ‚ t t ‡  ‡ f d †  ƒ t t ‡  ‡ f d †  ƒ t t ‡  ‡ f d †  ƒ t t ‡  ‡ f d †  ƒ xc d d d	 d
 g D]O }  t t ˆ  ˆ ƒ d |  ƒd k sÞ t ‚ t ˆ  ˆ d |  ƒd k s± t ‚ q± Wd  S(   Ns   x,ys         sin(x)**cos(y)c              s   t  t ˆ  ˆ ƒ d d ƒS(   NRK   iB   (   R7   R   (    (   R=   RH   (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyRN   Q   RO   c              s   t  ˆ  ˆ d d ƒS(   NRK   iB   (   R7   (    (   R=   RH   (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyRN   R   RO   c              s   t  t ˆ  ˆ ƒ d d ƒS(   NRK   iM   (   R7   R   (    (   R=   RH   (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyRN   S   RO   c              s   t  ˆ  ˆ d d ƒS(   NRK   iM   (   R7   (    (   R=   RH   (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyRN   T   RO   iZ   i_   iÓ  iØ  RK   s         modulo(x, y)(   R   R7   R    R   RF   R<   RQ   R   (   RK   (    (   R=   RH   s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_functionsN   s    ('c          C   s  t  ƒ  }  t d ƒ \ } } } } } } } t t | ƒ t | | ƒ t | | ƒ ƒ d k sd t ‚ t t | ƒ d | | | t d d ƒ ƒ d k sŸ t ‚ t t | ƒ t | | ƒ t | | ƒ d t ƒd k sß t ‚ t | t | ƒ d t ƒd k st ‚ |  j	 | t | ƒ | d	 d
 ƒd k s6t ‚ |  j	 | t | ƒ d	 d ƒd k sat ‚ |  j	 | d	 d ƒd k s‚t ‚ t d d t
 ƒ\ } }	 t d ƒ }
 t d ƒ } t d ƒ } t d |	 ƒ } t d | ƒ } t |
 | | f | | d	 | | d d ƒd k st ‚ d  S(   Ns   x,x_,x__,y,X,X_,Ys&         exp(x_) + sin(x*y) + cos(X__*Y_)i   i   s(         2*X_**(7.0d0/2.0d0)*Y*x + exp(x__)t   name_manglings#         exp(x_) + sin(x*y) + cos(X*Y)s         x - cos(X)t	   assign_tot   mes         me = X*sin(x_) + x__t   mus         mu = X*sin(x_)t   ads         ad = x__s   n,mR,   t   AR=   RH   t   iR   RL   RM   sn   do i = 1, m
   y(i) = 0
end do
do i = 1, m
   do I_ = 1, n
      y(i) = A(i, I_)*x(I_) + y(i)
   end do
end do(   R8   R   R7   R   R    R   RF   R   t   Falset   doprintRP   R9   R:   (   t   obR=   t   x_t   x__RH   t   Xt   X_t   YRS   t   mR^   R_   R   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt	   test_caseZ   s(    	!+,1(/+!+c          C   sZ  t  d ƒ }  t d ƒ j d ƒ } d } t |  t d ƒ ƒ d | k sM t ‚ t |  t d ƒ ƒ d | k ss t ‚ t |  t t d ƒ ƒ ƒ d | k sŸ t ‚ t t t d ƒ ƒ ƒ d | k sÇ t ‚ t t d ƒ ƒ d t d ƒ j d ƒ k sø t ‚ t |  t t d ƒ ƒ ƒ d | k s$t ‚ t |  t t t d ƒ ƒ ƒ ƒ d | k sVt ‚ d  S(   NR=   i
   i   s   0.8340324452479558d0s         x*%sd0s
         %sd0s
         x*%s(   R   R   t   evalfR7   RF   R   R   (   R=   t   log10_17t   loglog10_17(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt"   test_fcode_functions_with_integersy   s    &&,(1,c          C   sÑ  d }  t  ƒ  } t t ƒ d t j |  ƒ k s4 t ‚ t t ƒ d t j |  ƒ k sY t ‚ t t ƒ d t j |  ƒ k s~ t ‚ t t ƒ d t j |  ƒ k s£ t ‚ t t ƒ d t j |  ƒ k sÈ t ‚ t t d d ƒd t j d ƒ k só t ‚ t t d	 t	 ƒt
 t | j t j |  ƒ ƒ f g ƒ t
 g  ƒ d
 f k sAt ‚ t t d	 t	 ƒt
 t | j t j |  ƒ ƒ f g ƒ t
 g  ƒ d f k st ‚ t t d	 t	 ƒt
 t | j t j |  ƒ ƒ f g ƒ t
 g  ƒ d f k sÝt ‚ t t d	 t	 ƒt
 t | j t j |  ƒ ƒ f g ƒ t
 g  ƒ d f k s+t ‚ t t d	 t	 ƒt
 t | j t j |  ƒ ƒ f g ƒ t
 g  ƒ d f k syt ‚ t t d d d	 t	 ƒt
 t | j t j d ƒ ƒ f g ƒ t
 g  ƒ d f k sÍt ‚ d  S(   Ni   s.         parameter (Catalan = %sd0)
      Catalans4         parameter (EulerGamma = %sd0)
      EulerGammas"         parameter (E = %sd0)
      Es6         parameter (GoldenRatio = %sd0)
      GoldenRatios$         parameter (pi = %sd0)
      pit	   precisioni   t   humans         Catalans         EulerGammas         Es         GoldenRatios         pi(   R8   R7   R   Rj   RF   R   R   R   R   R`   t   setR?   (   t   prect   p(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_NumberSymbol†   s*    	%%%%%(<3?3?c          C   s.  t  t ƒ d k s t ‚ t d ƒ }  t  d t ƒ d k s@ t ‚ t  d d t ƒ d k s` t ‚ t  d d t |  ƒ d k s„ t ‚ t  t |  ƒ d k s  t ‚ t  d d t |  ƒ d	 k sÄ t ‚ t d d
 t ƒ}  t  d |  ƒ d k sò t ‚ t  t |  ƒ d k st ‚ t  d |  ƒ d k s*t ‚ d  S(   Ns         cmplx(0,1)R=   i   s         cmplx(0,4)i   s         cmplx(3,4)s         cmplx(3,4) + xs         cmplx(0,1)*xs         cmplx(3,4) - xt	   imaginaryi   s	         5*xs         x + 3(   R7   R   RF   R   RP   (   R=   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_complexž   s     $$c          C   ss   t  d ƒ \ }  } t t |  ƒ ƒ d k s0 t ‚ t t |  | ƒ ƒ d k sQ t ‚ t t |  ƒ ƒ d k so t ‚ d  S(   Ns   x,ys         sin(x)s         atan2(x, y)s         conjg(x)(   R   R7   R    RF   R   R   (   R=   RH   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_implicit¬   s    !c          C   s‚   t  d ƒ }  t d ƒ } t t |  ƒ ƒ } | d k s< t ‚ t t t |  ƒ ƒ ƒ d k s` t ‚ t | |  ƒ ƒ d k s~ t ‚ d  S(   NR=   t   gs:   C     Not supported in Fortran:
C     gamma
      gamma(x)sH   C     Not supported in Fortran:
C     Integral
      Integral(sin(x), x)s2   C     Not supported in Fortran:
C     g
      g(x)(   R   R   R7   R   RF   R	   R    (   R=   Rw   t   gamma_f(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_not_fortran³   s    $c          C   sæ   t  d ƒ }  t t |  ƒ d i d d 6ƒd k s7 t ‚ t  d ƒ }  t t |  ƒ d i d d 6ƒd k sn t ‚ t d	 ƒ } t | |  ƒ d i d
 d	 6ƒd k s¥ t ‚ t  d d t ƒ} t t | ƒ d i d d 6ƒd k sâ t ‚ d  S(   NR=   t   user_functionst   zsinR    s         zsin(x)t   mygammaR   s         mygamma(x)Rw   t   greats         great(x)RS   R,   t   fctR   s         fct(n)(   R   R7   R    RF   R   R   RP   R   (   R=   Rw   RS   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_user_functions¼   s    +(+c          C   s  t  d ƒ }  t d t |  d |  ƒ ƒ } t | |  ƒ ƒ d k sF t ‚ t d t |  d t |  ƒ ƒ } t | |  ƒ ƒ d t j d ƒ k s‘ t ‚ t d ƒ } t d t  d	 d
 t	 ƒƒ } t d t |  |  d |  d |  ƒ ƒ } t | | | ƒ d | | ƒd k st ‚ d  S(   NR=   Rw   i   s	         2*xs(         parameter (pi = %sd0)
      2*pi/xi   R^   R_   RS   R,   i   RZ   sI         do i = 1, n
         A(i) = (A(i) + 1)*(A(i) + 2)*A(i)
      end do(
   R   R;   R   R7   RF   R   Rj   R9   R:   RP   (   R=   Rw   R^   R_   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_inline_functionÉ   s     (c          C   s4   t  d ƒ }  t t |  ƒ d d ƒd k s0 t ‚ d  S(   NR=   RZ   t   ss         s = sin(x)(   R   R7   R    RF   (   R=   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_assign_toÜ   s    c          C   sƒ   t  d ƒ \ }  } t |  | d j ƒ  d d ƒd k s> t ‚ g  t d ƒ D] } |  | ^ qK } t t | Œ  ƒ d k s t ‚ d  S(   Ns   x,yi
   RZ   t   vars¯         var = x**10 + 10*x**9*y + 45*x**8*y**2 + 120*x**7*y**3 + 210*x**6*
     @ y**4 + 252*x**5*y**5 + 210*x**4*y**6 + 120*x**3*y**7 + 45*x**2*y
     @ **8 + 10*x*y**9 + y**10i   sR         x**10 + x**9 + x**8 + x**7 + x**6 + x**5 + x**4 + x**3 + x**2 + x
     @ + 1(   R   R7   t   expandRF   R.   R   (   R=   RH   R_   t   e(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_line_wrappingá   s    #c          C   sø   t  d ƒ \ }  } t t |  | k  | |  d k  ƒ d d ƒd k sI t ‚ t t |  | k  | |  d k  ƒ d d ƒd k s€ t ‚ t t |  | k  | |  d k  d t ƒd d ƒd k s½ t ‚ t t |  | k  | |  d k  ƒ d d ƒd	 k sô t ‚ d  S(
   Ns   x yi   RL   RM   s   x < y .and. y < x + 1s   x < y .or. y < x + 1t   evaluates   x < y .neqv. y < x + 1s   x < y .eqv. y < x + 1(   R   R7   R0   RF   R1   R4   R`   R3   (   R=   RH   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_precedenceï   s    ((((c          C   s  t  d ƒ \ }  } } t t |  ƒ d d ƒd k s9 t ‚ t t |  | ƒ d d ƒd k s` t ‚ t t |  t | ƒ ƒ d d ƒd k s t ‚ t t t |  ƒ | ƒ d d ƒd k sº t ‚ t t t |  ƒ t | ƒ ƒ d d ƒd k sí t ‚ t t t |  | ƒ d	 t ƒd d ƒd
 k s t ‚ t t |  | ƒ d d ƒd k sGt ‚ t t |  t | ƒ ƒ d d ƒd k stt ‚ t t t |  ƒ | ƒ d d ƒd k s¡t ‚ t t t |  ƒ t | ƒ ƒ d d ƒd k sÔt ‚ t t t |  | ƒ d	 t ƒd d ƒd k st ‚ t t t | | ƒ |  ƒ d d ƒd k s7t ‚ t t t | |  ƒ | ƒ d d ƒd k sgt ‚ t t t |  | ƒ | ƒ d d ƒd k s—t ‚ t t t | | ƒ |  ƒ d d ƒd k sÇt ‚ t t t | |  ƒ | ƒ d d ƒd k s÷t ‚ t t t |  | ƒ | ƒ d d ƒd k s't ‚ t t |  | | ƒ d d ƒd k sQt ‚ t t |  | t | ƒ ƒ d d ƒd k st ‚ t t |  t | ƒ | ƒ d d ƒd k s±t ‚ t t t |  ƒ | | ƒ d d ƒd k sát ‚ t t t |  | | ƒ d	 t ƒd d ƒd k st ‚ t t |  | | ƒ d d ƒd k sAt ‚ t t |  | t | ƒ ƒ d d ƒd k sqt ‚ t t |  t | ƒ | ƒ d d ƒd k s¡t ‚ t t t |  ƒ | | ƒ d d ƒd k sÑt ‚ t t t |  | | ƒ d	 t ƒd d ƒd k st ‚ d  S(    Ns   x y zRL   RM   s   .not. xs	   x .and. ys   x .and. .not. ys   y .and. .not. xs   .not. x .and. .not. yR‡   s   .not. (x .and. y)s   x .or. ys   x .or. .not. ys   y .or. .not. xs   .not. x .or. .not. ys   .not. (x .or. y)s   x .and. (y .or. z)s   y .and. (x .or. z)s   z .and. (x .or. y)s   x .or. y .and. zs   y .or. x .and. zs   z .or. x .and. ys   x .and. y .and. zs   x .and. y .and. .not. zs   x .and. z .and. .not. ys   y .and. z .and. .not. xs   .not. (x .and. y .and. z)s   x .or. y .or. zs   x .or. y .or. .not. zs   x .or. z .or. .not. ys   y .or. z .or. .not. xs   .not. (x .or. y .or. z)(   R   R7   R2   RF   R0   R`   R1   (   R=   RH   RI   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_Logicalû   sP    $'--$$'--$$000000*!!!'*!!!'c          C   sã  t  d ƒ \ }  } } t t |  | d t ƒd d ƒd k sB t ‚ t t |  t | ƒ d t ƒd d ƒd k su t ‚ t t t |  ƒ | d t ƒd d ƒd k s¨ t ‚ t t t |  ƒ t | ƒ d t ƒd d ƒd k sá t ‚ t t t |  | d t ƒd t ƒd d ƒd	 k st ‚ t t |  | ƒ d d ƒd
 k sAt ‚ t t |  t | ƒ ƒ d d ƒd k snt ‚ t t t |  ƒ | ƒ d d ƒd k s›t ‚ t t t |  ƒ t | ƒ ƒ d d ƒd k sÎt ‚ t t t |  | ƒ d t ƒd d ƒd k st ‚ t t t | | ƒ |  ƒ d d ƒd k s1t ‚ t t t | |  ƒ | ƒ d d ƒd k sat ‚ t t t |  | ƒ | ƒ d d ƒd k s‘t ‚ t t t | | ƒ |  ƒ d d ƒd k sÁt ‚ t t t | |  ƒ | ƒ d d ƒd k sñt ‚ t t t |  | ƒ | ƒ d d ƒd k s!t ‚ t t t | | ƒ |  ƒ d d ƒd k sQt ‚ t t t | |  ƒ | ƒ d d ƒd k st ‚ t t t |  | ƒ | ƒ d d ƒd k s±t ‚ t t t | | ƒ |  ƒ d d ƒd k sát ‚ t t t | |  ƒ | ƒ d d ƒd k st ‚ t t t |  | ƒ | ƒ d d ƒd k sAt ‚ t t t | | d t ƒ|  ƒ d d ƒd k swt ‚ t t t | |  d t ƒ| ƒ d d ƒd k s­t ‚ t t t |  | d t ƒ| ƒ d d ƒd k sãt ‚ t t t | | ƒ |  d t ƒd d ƒd k st ‚ t t t | |  ƒ | d t ƒd d ƒd k sOt ‚ t t t |  | ƒ | d t ƒd d ƒd  k s…t ‚ t t t | | ƒ |  d t ƒd d ƒd! k s»t ‚ t t t | |  ƒ | d t ƒd d ƒd" k sñt ‚ t t t |  | ƒ | d t ƒd d ƒd# k s't ‚ t t t | | d t ƒ|  ƒ d d ƒd$ k s]t ‚ t t t | |  d t ƒ| ƒ d d ƒd% k s“t ‚ t t t |  | d t ƒ| ƒ d d ƒd& k sÉt ‚ t t t | | ƒ |  d t ƒd d ƒd' k sÿt ‚ t t t | |  ƒ | d t ƒd d ƒd( k s5t ‚ t t t |  | ƒ | d t ƒd d ƒd) k skt ‚ t t t | | d t ƒ|  ƒ d d ƒd* k s¡t ‚ t t t | |  d t ƒ| ƒ d d ƒd+ k s×t ‚ t t t |  | d t ƒ| ƒ d d ƒd, k st ‚ t t |  | | d t ƒd d ƒd- k s=t ‚ t t |  | t | ƒ d t ƒd d ƒd. k sst ‚ t t |  t | ƒ | d t ƒd d ƒd/ k s©t ‚ t t t |  ƒ | | d t ƒd d ƒd0 k sßt ‚ d  S(1   Ns   x y zR‡   RL   RM   s
   x .neqv. ys   x .neqv. .not. ys   y .neqv. .not. xs   .not. x .neqv. .not. ys   .not. (x .neqv. y)s	   x .eqv. ys   x .eqv. .not. ys   y .eqv. .not. xs   .not. x .eqv. .not. ys   .not. (x .eqv. y)s   x .eqv. y .and. zs   y .eqv. x .and. zs   z .eqv. x .and. ys   x .and. (y .eqv. z)s   y .and. (x .eqv. z)s   z .and. (x .eqv. y)s   x .eqv. y .or. zs   y .eqv. x .or. zs   z .eqv. x .or. ys   x .or. (y .eqv. z)s   y .or. (x .eqv. z)s   z .or. (x .eqv. y)s   x .eqv. (y .neqv. z)s   y .eqv. (x .neqv. z)s   z .eqv. (x .neqv. y)s   x .neqv. (y .eqv. z)s   y .neqv. (x .eqv. z)s   z .neqv. (x .eqv. y)s   x .neqv. y .and. zs   y .neqv. x .and. zs   z .neqv. x .and. ys   x .and. (y .neqv. z)s   y .and. (x .neqv. z)s   z .and. (x .neqv. y)s   x .neqv. y .or. zs   y .neqv. x .or. zs   z .neqv. x .or. ys   x .or. (y .neqv. z)s   y .or. (x .neqv. z)s   z .or. (x .neqv. y)s   x .neqv. y .neqv. zs   x .neqv. y .neqv. .not. zs   x .neqv. z .neqv. .not. ys   y .neqv. z .neqv. .not. x(	   R   R7   R4   R`   RF   R2   R3   R0   R1   (   R=   RH   RI   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_Xlogical,  s°    $$$$'$!!!!!!!!!!!!!!!!!!''''''''''''!'''c          C   s  t  d ƒ \ }  } t t |  | d ƒ d d ƒd k s< t ‚ t t |  | d ƒ d d ƒd k sf t ‚ t t |  | d ƒ d d ƒd	 k s t ‚ t t |  | d
 ƒ d d ƒd k sº t ‚ t t |  | d ƒ d d ƒd k sä t ‚ t t |  | d ƒ d d ƒd k st ‚ d  S(   Ns   x ys   ==RL   RM   s   x == ys   !=s   x /= ys   >=s   x >= ys   <=s   x <= yt   >s   x > yt   <s   x < y(   R   R7   R/   RF   (   R=   RH   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_Relational  s    *****c             s   t  d ƒ }  t |  |  d k  f |  d t f ƒ ‰  t t ‡  f d †  ƒ t ˆ  d d ƒ} d } | | k sq t ‚ t t |  |  d k  f |  d t f ƒ d d	 ƒd
 k s® t ‚ t |  ƒ |  } t |  ƒ |  } x2 t	 d ƒ D]$ } t
 | |  ƒ } t
 | |  ƒ } qÛ Wd } t t | |  d k  f | t f ƒ d d ƒ} | | k sHt ‚ t t |  |  d k  f |  d |  d k f t |  ƒ t f ƒ d d ƒ} d } | | k s¦t ‚ t |  |  d k  f |  d |  d k f t |  ƒ |  d k f ƒ ‰  t t ‡  f d †  ƒ d  S(   NR=   i   i   c              s
   t  ˆ  ƒ S(   N(   R7   (    (   t   expr(    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyRN     RO   RK   i_   s         merge(x, x**2, x < 1)RZ   Rƒ   sR         if (x < 1) then
         var = x
      else
         var = x**2
      end ifi
   s/        if (x < 0) then
         weird_name = -cos(x)/x + 10*sin(x)/x**2 + 90*cos(x)/x**3 - 720*
     @ sin(x)/x**4 - 5040*cos(x)/x**5 + 30240*sin(x)/x**6 + 151200*cos(x
     @ )/x**7 - 604800*sin(x)/x**8 - 1814400*cos(x)/x**9 + 3628800*sin(x
     @ )/x**10 + 3628800*cos(x)/x**11
      else
         weird_name = -sin(x)/x - 10*cos(x)/x**2 + 90*sin(x)/x**3 + 720*
     @ cos(x)/x**4 - 5040*sin(x)/x**5 - 30240*cos(x)/x**6 + 151200*sin(x
     @ )/x**7 + 604800*cos(x)/x**8 - 1814400*sin(x)/x**9 - 3628800*cos(x
     @ )/x**10 + 3628800*sin(x)/x**11
      end ifi    t
   weird_names1         merge(x, merge(x**2, sin(x), x > 1), x < 1)c              s
   t  ˆ  ƒ S(   N(   R7   (    (   RŽ   (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyRN   Á  RO   (   R   R
   RP   R<   RQ   R7   RF   R   R    R.   R   t
   ValueError(   R=   t   codet   expectedt   at   bR_   (    (   RŽ   s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_Piecewise™  s*    %.-F@c          C   s(  t  ƒ  }  d d d d d d d d d	 d
 d d d d d g } |  j | ƒ } d d d d d d d d d d d d d d d d d d d d d d d d d d  d! d d" d# g } x& | D] } t | ƒ d$ k s² t ‚ q² Wx/ t | | ƒ D] \ } } | | k sä t ‚ qä Wt | ƒ t | ƒ k s$t ‚ d  S(%   Nsb   C     This is a long comment on a single line that must be wrapped properly to produce nice outputsf         this = is + a + long + and + nasty + fortran + statement + that * must + be + wrapped + properlysg         this = is + a + long + and + nasty + fortran + statement +  that * must + be + wrapped + properlysh         this = is + a + long + and + nasty + fortran + statement +   that * must + be + wrapped + properlysd         this = is + a + long + and + nasty + fortran + statement + that*must + be + wrapped + properlysf         this = is + a + long + and + nasty + fortran + statement +   that*must + be + wrapped + properlysg         this = is + a + long + and + nasty + fortran + statement +    that*must + be + wrapped + properlysh         this = is + a + long + and + nasty + fortran + statement +     that*must + be + wrapped + properlyse         this = is + a + long + and + nasty + fortran + statement + that**must + be + wrapped + properlysf         this = is + a + long + and + nasty + fortran + statement +  that**must + be + wrapped + properlysg         this = is + a + long + and + nasty + fortran + statement +   that**must + be + wrapped + properlysh         this = is + a + long + and + nasty + fortran + statement +    that**must + be + wrapped + properlysi         this = is + a + long + and + nasty + fortran + statement +     that**must + be + wrapped + properlysc         this = is + a + long + and + nasty + fortran + statement(that)/must + be + wrapped + properlysg         this = is + a + long + and + nasty + fortran +     statement(that)/must + be + wrapped + properlysB   C     This is a long comment on a single line that must be wrappeds%   C     properly to produce nice outputsG         this = is + a + long + and + nasty + fortran + statement + that *s%        @ must + be + wrapped + properlysH         this = is + a + long + and + nasty + fortran + statement +  that *sG         this = is + a + long + and + nasty + fortran + statement +   thats'        @ * must + be + wrapped + properlysF         this = is + a + long + and + nasty + fortran + statement + that*sH         this = is + a + long + and + nasty + fortran + statement +   that*sH         this = is + a + long + and + nasty + fortran + statement +    thats&        @ *must + be + wrapped + properlys@         this = is + a + long + and + nasty + fortran + statement +s*        @ that*must + be + wrapped + properlysG         this = is + a + long + and + nasty + fortran + statement + that**sH         this = is + a + long + and + nasty + fortran + statement +  that**s'        @ **must + be + wrapped + properlys+        @ that**must + be + wrapped + properlysE         this = is + a + long + and + nasty + fortran + statement(that)/sH         this = is + a + long + and + nasty + fortran +     statement(that)s&        @ /must + be + wrapped + properlyiH   (   R8   t   _wrap_fortrant   lenRF   t   zip(   RB   t   linest   wrapped_linest   expected_linest   linet   wR…   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_wrap_fortranÄ  sh    			c          C   sg   t  ƒ  }  d d d d d d g } d d d d	 d d
 d d d d d g } |  j | ƒ | k sc t ‚ d  S(   NsH         this_variable_is_very_long_because_we_try_to_test_line_break=1.0d0sI         this_variable_is_very_long_because_we_try_to_test_line_break =1.0d0sK         this_variable_is_very_long_because_we_try_to_test_line_break  = 1.0d0sL         this_variable_is_very_long_because_we_try_to_test_line_break   = 1.0d0sM         this_variable_is_very_long_because_we_try_to_test_line_break    = 1.0d0sK         this_variable_is_very_long_because_we_try_to_test_line_break = 10.0d0sD         this_variable_is_very_long_because_we_try_to_test_line_break =s        @ 1.0d0sE         this_variable_is_very_long_because_we_try_to_test_line_break  =sF         this_variable_is_very_long_because_we_try_to_test_line_break   =sG         this_variable_is_very_long_because_we_try_to_test_line_break    =s        @ 10.0d0(   R8   R–   RF   (   RB   R™   R’   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_wrap_fortran_keep_d0   s&    			c           C   s   t  t d „  ƒ d  S(   Nc           S   s   t  t d ƒ d d ƒS(   Ni   t   methodt   garbage(   R7   R   (    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyRN     RO   (   R<   t	   TypeError(    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_settings  s    c          C   sD   t  d ƒ \ }  } t t |  ƒ t | ƒ d d ƒd k s@ t ‚ d  S(   Ns   x,yRL   RM   s   sin(y) + cos(x)(   R   R7   R   R    RF   (   R=   RH   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_free_form_code_line  s    c          C   sZ   t  d ƒ \ }  } t t |  ƒ t | ƒ d j ƒ  d d ƒ} d } | | k sV t ‚ d  S(   Ns   x,yi   RL   RM   sµ   sin(y)**7 + 7*sin(y)**6*cos(x) + 21*sin(y)**5*cos(x)**2 + 35*sin(y)**4* &
      cos(x)**3 + 35*sin(y)**3*cos(x)**4 + 21*sin(y)**2*cos(x)**5 + 7* &
      sin(y)*cos(x)**6 + cos(x)**7(   R   R7   R   R    R„   RF   (   R=   RH   t   resultR’   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt    test_free_form_continuation_line#  s    ,c          C   sG   t  i d d 6ƒ }  d g } d d g } |  j | ƒ | k sC t ‚ d  S(   NRM   RL   s^   ! This is a long comment on a single line that must be wrapped properly to produce nice outputsG   ! This is a long comment on a single line that must be wrapped properlys   ! to produce nice output(   R8   R–   RF   (   RB   R™   R’   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_free_form_comment_line.  s
    		c    	      C   sô   t  d d t ƒ\ }  } t d ƒ } t d ƒ } t d ƒ } t d | ƒ } t d |  ƒ } d } t | | | f | | d	 | | d
 d ƒ} | | i d d 6k sð | | i d d 6k sð | | i d d 6k sð | | i d d 6k sð t ‚ d  S(   Ns   n,mR,   R^   R=   RH   R_   t   js_   do i = 1, m
   y(i) = 0
end do
do i = 1, m
   do j = 1, n
      y(i) = %(rhs)s
   end do
end doRZ   RL   RM   s   y(i) + A(i, j)*x(j)t   rhss   y(i) + x(j)*A(i, j)s   x(j)*A(i, j) + y(i)s   A(i, j)*x(j) + y(i)(   R   RP   R9   R:   R7   RF   (	   RS   Rh   R^   R=   RH   R_   R¨   R’   R‘   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt
   test_loops7  s    
.c          C   sœ   t  d d t d t ƒ\ }  } t d ƒ } t d ƒ } t |  | ƒ }  d i |  j j d 6| j d 6} t | |  d	 | |  d
 d ƒ} | | k s˜ t ‚ d  S(   Ns   i mR,   t   clsR=   RH   sM   do i_%(icount)i = 1, m_%(mcount)i
   y(i_%(icount)i) = x(i_%(icount)i)
end dot   icountt   mcountRZ   RL   RM   (	   R   RP   R   R9   R:   t   labelt   dummy_indexR7   RF   (   R_   Rh   R=   RH   R’   R‘   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_dummy_loopsQ  s     c          C   sÊ   d }  t  d d |  f ƒ} t  d d |  f ƒ} t  d d |  d f ƒ} t d |  d ƒ } t | | | | d | | | | d | | ƒ } t | j d | j d	 t ƒ} | j d
 ƒ sÆ t ‚ d  S(   Ni   RH   t   shapeR=   t   Dyi   R_   RZ   t   contracts+   Dy(i) = (y(i + 1) - y(i))/(x(i + 1) - x(i))(	   R9   R:   R   R7   R©   t   lhsR`   t   endswithRF   (   t   len_yRH   R=   R²   R_   R…   t   code0(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt2   test_fcode_Indexed_without_looking_for_contraction_  s    7c          C   sS   d t  f d „  ƒ  Y}  |  ƒ  } t d ƒ } | j t | ƒ d ƒ d k sO t ‚ d  S(   Nt   MyFancyFCodePrinterc           B   s   e  Z e j j ƒ  Z RS(    (   RD   RE   R8   t   _default_settingst   copy(    (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyR¹   k  s   R=   t   borks         bork = sin(x)(   R8   R   Ra   R    RF   (   R¹   RB   R=   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_derived_classesj  s    	c          C   sD   d }  d } t  i d d 6ƒ } | j |  ƒ } | | k s@ t ‚ d  S(   Nsu  subroutine test(a)
integer :: a, i, j

do
do 
do j = 1, 5
if (a>b) then
if(b>0) then
a = 3
donot_indent_me = 2
do_not_indent_me_either = 2
ifIam_indented_something_went_wrong = 2
if_I_am_indented_something_went_wrong = 2
end should not be unindented here
end if
endif
end do
end do
enddo
end subroutine

subroutine test2(a)
integer :: a
do
a = a + 1
end do 
end subroutine
s  subroutine test(a)
integer :: a, i, j

do
   do 
      do j = 1, 5
         if (a>b) then
            if(b>0) then
               a = 3
               donot_indent_me = 2
               do_not_indent_me_either = 2
               ifIam_indented_something_went_wrong = 2
               if_I_am_indented_something_went_wrong = 2
               end should not be unindented here
            end if
         endif
      end do
   end do
enddo
end subroutine

subroutine test2(a)
integer :: a
do
   a = a + 1
end do 
end subroutine
RM   RL   (   R8   t   indent_codeRF   (   t	   codelinesR’   Rr   R¥   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_indents  s
    c    	      C   s–  t  d ƒ \ }  } } t |  | t d |  | d k f | t f ƒ t | ƒ g ƒ } t d d d ƒ } t | | ƒ d k s€ t ‚ t d | d |  d k f | d t f ƒ t | d ƒ | d } t | d d	 ƒd
 k sá t ‚ t d d d ƒ } t d d d ƒ } t t | d ƒ d t | d ƒ g | d | d | d d g d | d | d t	 | d ƒ d d g g ƒ } t | | ƒ d k s’t ‚ d  S(   Ns   x,y,zi   i    R^   i   i   s†         A(1, 1) = x*y
      if (y > 0) then
         A(2, 1) = x + 2
      else
         A(2, 1) = y
      end if
      A(3, 1) = sin(z)RK   i_   s?         merge(2*A(3, 1), A(3, 1), x > 0) + sin(A(2, 1)) + A(1, 1)t   qi   t   Mi   sí         M(1, 1) = sin(q(2, 1))
      M(2, 1) = q(2, 1) + q(3, 1)
      M(3, 1) = 2*q(5, 1)/q(2, 1)
      M(1, 2) = 0
      M(2, 2) = q(4, 1)
      M(3, 2) = sqrt(q(1, 1)) + 4
      M(1, 3) = cos(q(3, 1))
      M(2, 3) = 5
      M(3, 3) = 0(   i   i    (   i   i    (   i   i    (   i    i    (   i   i    (   i   i    (   i   i    (   i   i    (   i   i    (   i   i    (   i   i    (   i    i    (
   R   R5   R
   RP   R    R6   R7   RF   R   R   (	   R=   RH   RI   t   matR^   RŽ   RÁ   RÂ   Rh   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_Matrix_printing²  s    >C#3c          C   sb   t  d ƒ \ }  } t |  t d d d ƒ t | |  | ƒ g ƒ } t | ƒ } | d k s^ t ‚ d  S(   Ns   x yi    i
   i   s3         do x = 0, 10, 2
         y = x*y
      end do(   R   R   R   R    R7   RF   (   R=   RH   t   ft   sol(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_ForÕ  s    .c    
      C   s	  d „  }  t  d d t ƒ} t j | ƒ } t | ƒ } |  | d ƒ t  d ƒ \ } } t | t d d d t h ƒ} t | ƒ } |  | d	 ƒ t | d
 t ƒ} t | ƒ }	 |  |	 d ƒ |  t d ƒ |  t d ƒ |  t	 d d i t t	 6ƒ|  t	 d d i t t	 6ƒd  S(   Nc         [   s+   t  |  d d d d | | k s' t ‚ d  S(   NRK   i_   RL   RM   (   R7   RF   (   RŽ   t   reft   kwargs(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   checkà  s    R_   R,   s   integer*4 :: is   x yt   valuei*   t   attrss   real*4, parameter :: x = 42t   types   logical :: ys   real*4s   real*8t   type_aliases(
   R   RP   R#   t   deducedR"   R$   R&   R(   R%   R'   (
   RÊ   R_   t   var1t   dcl1R=   RH   t   var2t   dcl2bt   var3t   dcl3(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_fcode_Declarationß  s     	c          C   s¨   t  d d d ƒ }  t  d d d ƒ } t  d d d ƒ } t |  d
 ƒ d k sR t ‚ t d |  d ƒ d k sr t ‚ | d j | |  | ƒ } t | ƒ d	 k s¤ t ‚ d  S(   NR^   i   i   t   Bt   Ci    s         A(1, 1)s         3*A(1, 1)s         (A - B)(1, 1)(   i    i    (   i    i    (   i    i    (   R6   R7   RF   t   subs(   R^   R×   RØ   t   F(    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_MatrixElement_printingø  s     c          C   s:   t  d ƒ }  t t |  d d ƒ d d ƒd k s6 t ‚ d  S(   NR=   t   +i   RL   RM   s	   x = x + 1(   R   R7   R!   RF   (   R=   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_aug_assign  s    c          C   sR   t  d ƒ }  t t t |  ƒ d k t |  d d ƒ g ƒ d d ƒd k sN t ‚ d  S(   NR=   i   t   -RL   RM   s)   do while (abs(x) > 1)
   x = x - 1
end do(   R   R7   R)   t   absR!   RF   (   R=   (    (    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt
   test_While
  s    3c             st   t  d ƒ }  t  d d t ƒ} t |  d t ƒ} t | d t ƒ} t t d | | g ƒ ‰  t t ‡  f d †  ƒ d  S(   NR=   RS   R,   RÍ   t   powerc              s
   t  ˆ  ƒ S(   N(   R7   (    (   t   fp1(    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyRN     RO   (   R   RP   R#   R'   R,   R*   R<   RQ   (   R=   RS   t   vxt   vn(    (   Râ   s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_FunctionPrototype_print  s    c             s–   t  d ƒ }  t  d d t ƒ} t |  d t ƒ} t | d t ƒ} t |  |  | ƒ t |  ƒ g } t t d | | g | ƒ ‰  t t	 ‡  f d †  ƒ d  S(   NR=   RS   R,   RÍ   Rá   c              s
   t  ˆ  ƒ S(   N(   R7   (    (   t   fd1(    s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyRN   '  RO   (
   R   RP   R#   R'   R,   R    R-   R+   R<   RQ   (   R=   RS   Rã   Rä   t   body(    (   Ræ   s>   lib/python2.7/site-packages/sympy/printing/tests/test_fcode.pyt   test_FunctionDefinition_print  s    N(q   t   sympyR    R   R   R   R   R   R   R   R   R	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   sympy.codegenR   R    R!   t   sympy.codegen.astR"   R#   R$   R%   R&   R'   R(   R)   R*   R+   R,   R-   t   sympy.core.compatibilityR.   t   sympy.core.relationalR/   t   sympy.logic.boolalgR0   R1   R2   R3   R4   t   sympy.matricesR5   R6   t   sympy.printing.fcodeR7   R8   t   sympy.tensorR9   R:   t   sympy.utilities.lambdifyR;   t   sympy.utilities.pytestR<   RG   RR   RT   RU   RV   RW   RX   Ri   Rm   Rs   Ru   Rv   Ry   R   R€   R‚   R†   Rˆ   R‰   RŠ   R   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_fcode.pyt   <module>   sf   ÄR(			
		
																1	c	
	+	<												?	#	
						