ó
¡¼™\c           @   s  d  d l  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 d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z m Z d  d l m Z m  Z  d  d	 l  m! Z! d  d
 l" m# Z# e d ƒ \ Z$ Z% Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 d „  Z2 d „  Z3 d „  Z4 d „  Z5 d „  Z6 d „  Z7 d „  Z8 d „  Z9 d „  Z: d  „  Z; d! „  Z< d" „  Z= d# „  Z> d$ „  Z? d% „  Z@ d& „  ZA d' „  ZB d( S()   iÿÿÿÿ(
   t   pit   oot   symbolst   Rationalt   Integert   GoldenRatiot
   EulerGammat   Catalant   Lambdat   Dummy(   t	   Piecewiset   sint   cost   Abst   expt   ceilingt   sqrt(   t   raises(   t   GLSLPrinter(   t
   StrPrinter(   t   implemented_function(   t   IndexedBaset   Idx(   t   Matrixt   MatrixSymbol(   t   Tuple(   t	   glsl_codes   x,y,zc           C   s"   t  t t ƒ ƒ d k s t ‚ d  S(   Ns   abs(x)(   R   R   t   xt   AssertionError(    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_printmethod   s    c           C   sÆ   t  t t d t ƒd k s" t ‚ t  t t t d t ƒd k sH t ‚ t  t t t d t ƒd k sn t ‚ t  t t t d t ƒd k s” t ‚ t  t t t t d d t ƒd k sÂ t ‚ d  S(   Nt   use_operatorss	   mul(x, y)s   add(pow(x, y), z)s   mul(x, add(y, z))g      à?s   mul(x, add(y, pow(z, sqrt(y))))(   R   R   t   yt   FalseR   t   z(    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_print_without_operators   s
    "&&&c           C   s\   t  t t ƒ ƒ d k s t ‚ t  t d ƒ d k s: t ‚ t  t t ƒ ƒ d k sX t ‚ d  S(   Ns   sqrt(x)g      à?(   R   R   R   R   (    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_sqrt   s    c          C   s¶   t  d t t d t ƒ ƒ }  t t d ƒ d k s8 t ‚ t t t d ƒ d k sX t ‚ t d |  t ƒ d t t t t d t ƒ d k s– t ‚ t t d	 ƒ d
 k s² t ‚ d  S(   Nt   gi   i   s   pow(x, 3.0)s   pow(x, pow(y, 3.0))i   g      @s.   pow(3.5*2*x, -x + pow(y, x))/(pow(x, 2.0) + y)g      ð¿s   1.0/x(   R   R   R   R   R   R   (   R$   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_Pow   s     /c           C   s:   t  t d ƒ ƒ d k s t ‚ t  t ƒ d k s6 t ‚ d  S(   Ni   s   float E = 2.71828183;
Es   float pi = 3.14159265;
pi(   R   R   R   R    (    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_constants_mathh(   s    c           C   sX   t  d t ƒ d k s t ‚ t  d t ƒ d k s8 t ‚ t  d t ƒ d k sT t ‚ d  S(   Ni   s-   float GoldenRatio = 1.61803399;
2*GoldenRatios&   float Catalan = 0.915965594;
2*Catalans,   float EulerGamma = 0.577215665;
2*EulerGamma(   R   R   R   R   R   (    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_constants_other/   s    c           C   sˆ   t  t d d ƒ ƒ d k s! t ‚ t  t d d ƒ ƒ d k sB t ‚ t  t d d ƒ ƒ d k sc t ‚ t  t d	 d ƒ ƒ d k s„ t ‚ d  S(
   Ni   i   s   3.0/7.0i   i	   t   2iùÿÿÿs   -3.0/7.0iýÿÿÿ(   R   R   R   (    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_Rational5   s    !!!c           C   s@   t  t d ƒ ƒ d k s t ‚ t  t d ƒ ƒ d k s< t ‚ d  S(   NiC   t   67iÿÿÿÿs   -1(   R   R   R   (    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_Integer<   s    c           C   s,   t  t t ƒ t t ƒ ƒ d k s( t ‚ d  S(   Ns   pow(sin(x), cos(x))(   R   R   R   R   R   (    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_functionsA   s    c          C   s  t  d ƒ }  t d t |  d |  ƒ ƒ } t | |  ƒ ƒ d k sF t ‚ t d t |  d |  t ƒ ƒ } t | |  ƒ ƒ 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   R$   i   s   2*xs(   float Catalan = 0.915965594;
2*x/Catalant   At   it   nt   integeri   t	   assign_tos@   for (int i=0; i<n; i++){
   A[i] = (A[i] + 1)*(A[i] + 2)*A[i];
}(	   R   R   R   R   R   R   R   R   t   True(   R   R$   R-   R.   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_inline_functionE   s     (c           C   s@   t  t t ƒ ƒ d k s t ‚ t  t t ƒ ƒ d k s< t ‚ d  S(   Ns   ceil(x)s   abs(x)(   R   R   R   R   R   (    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_exceptionsU   s    c           C   sÕ   t  t t @ƒ d k s t ‚ t  t t Bƒ d k s8 t ‚ t  t ƒ d k sQ t ‚ t  t t @t @ƒ d k sq t ‚ t  t t Bt Bƒ d k s‘ t ‚ t  t t @t Bƒ d k s± t ‚ t  t t Bt @ƒ d k sÑ t ‚ d  S(   Ns   x && ys   x || ys   !xs   x && y && zs   x || y || zs   z || x && ys   z && (x || y)(   R   R   R   R   R!   (    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_booleanZ   s       c             sÁ   t  t t d k  f t d t f ƒ ‰  t ˆ  ƒ }  d } |  | k sI t ‚ t ˆ  d d ƒd k sg t ‚ t  t t d k  f t d t d k f t t ƒ t d k f ƒ ‰  t t ‡  f d †  ƒ d  S(	   Ni   i   s)   ((x < 1) ? (
   x
)
: (
   pow(x, 2.0)
))R1   t   cs5   if (x < 1) {
   c = x;
}
else {
   c = pow(x, 2.0);
}i    c              s
   t  ˆ  ƒ S(   N(   R   (    (   t   expr(    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   <lambda>z   t    (   R
   R   R2   R   R   R   R   t
   ValueError(   t   pt   s(    (   R7   s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_Piecewised   s    %	@c          C   sK   t  d t t t d k  f t d t f ƒ ƒ }  d } |  | k sG t ‚ d  S(   Ni   i   s+   2*((x < 1) ? (
   x
)
: (
   pow(x, 2.0)
))(   R   R
   R   R2   R   (   R;   R<   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_Piecewise_deep}   s    /	c           C   s   t  t d „  ƒ d  S(   Nc           S   s   t  t t ƒ d d ƒS(   Nt   methodt   garbage(   R   R   R   (    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyR8   Œ   R9   (   R   t	   TypeError(    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_settings‹   s    c          C   sU  d d l  m }  m } d d l m } | d d t ƒ\ } } } | d | ƒ | d | ƒ | d | ƒ } } } t ƒ  }	 t ƒ  |	 _ |  d	 ƒ | }
 |	 j	 |
 ƒ d
 k s° t
 ‚ |  d ƒ | | f } |	 j	 | ƒ d | | | k sí t
 ‚ |  d ƒ | | | f } |	 j	 | ƒ d | | | | | | k s9t
 ‚ |	 j t ƒ  k sQt
 ‚ d  S(   Niÿÿÿÿ(   R   R   (   R   s   n m oR0   R.   t   jt   kR   s   x[j]R-   s   A[%s]t   Bs   B[%s](   t   sympy.tensorR   R   t   sympyR   R2   R   t   sett   _not_ct   _print_IndexedR   (   R   R   R   R/   t   mt   oR.   RC   RD   R;   R   R-   RE   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_Indexed   s    /	'3c          C   sÛ   t  d d d d g ƒ d k s$ t ‚ t  d d d g d t ƒd k sK t ‚ t  d d d g ƒ t  d
 ƒ k sr t ‚ t  d d d g ƒ t  t d d d ƒ ƒ k s¥ t ‚ t d d d ƒ }  t  |  d	 |  d g ƒ s× t ‚ d  S(   Ni   i   i   i   s   vec4(1, 2, 3, 4)t
   glsl_typess   float[3](1, 2, 3)R-   i    (   i   i   i   (   R   R   R    R   R   (   RK   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_list_tuple_Tuple    s    $''3c    	      C   sž   t  d d t ƒ\ }  } t d ƒ } t d ƒ } t d ƒ } t d | ƒ } t d |  ƒ } d } t | | | f | | d	 | | ƒ} | | k sš t ‚ d  S(
   Ns   n mR0   R-   R   R   R.   RC   sŠ   for (int i=0; i<m; i++){
   y[i] = 0.0;
}
for (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      y[i] = A[n*i + j]*x[j] + y[i];
   }
}R1   (   R   R2   R   R   R   R   (	   R/   RK   R-   R   R   R.   RC   R<   R6   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt"   test_glsl_code_loops_matrix_vector©   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	 | |  ƒ} | | k s’ t ‚ d  S(
   Ns   i mR0   t   clsR   R   sl   for (int i_%(icount)i=0; i_%(icount)i<m_%(mcount)i; i_%(icount)i++){
   y[i_%(icount)i] = x[i_%(icount)i];
}t   icountt   mcountR1   (	   R   R2   R	   R   R   t   labelt   dummy_indexR   R   (   R.   RK   R   R   t   expectedt   code(    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_dummy_loopsÀ   s    c          C   sà   d d l  m }  m } d d l m } | d d t ƒ\ } } |  d ƒ } |  d ƒ } |  d ƒ } |  d	 ƒ } | d
 | ƒ }	 | d | ƒ }
 d } t | |	 |
 f | |
 | |	 | |	 d | |	 ƒ} | | k sÜ t ‚ d  S(   Niÿÿÿÿ(   R   R   (   R   s   n mR0   R-   R   R   R!   R.   RC   s’   for (int i=0; i<m; i++){
   y[i] = x[i] + z[i];
}
for (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      y[i] = A[n*i + j]*x[j] + y[i];
   }
}R1   (   RF   R   R   RG   R   R2   R   R   (   R   R   R   R/   RK   R-   R   R   R!   R.   RC   R<   R6   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_loops_addÏ   s    	8c          C   s=  d d l  m }  m } d d l m } | d d t ƒ\ } } } } |  d ƒ } |  d ƒ } |  d ƒ }	 | d	 | ƒ }
 | d
 | ƒ } | d | ƒ } | d | ƒ } d |
 | | | | | | | | | | | | | | | f d } t | | | | f | |
 | | | f d |	 |
 ƒ} | | k s9t ‚ d  S(   Niÿÿÿÿ(   R   R   (   R   s   n m o pR0   t   at   bR   R.   RC   RD   t   lsÇ   for (int i=0; i<m; i++){
   y[i] = 0.0;
}
for (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      for (int k=0; k<o; k++){
         for (int l=0; l<p; l++){
            y[i] = a[%s]*b[%s] + y[i];
s            }
      }
   }
}R1   (   RF   R   R   RG   R   R2   R   R   (   R   R   R   R/   RK   RL   R;   RZ   R[   R   R.   RC   RD   R\   R<   R6   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt*   test_glsl_code_loops_multiple_contractionsè   s    B7c          C   s„  d d l  m }  m } d d l m } | d d t ƒ\ } } } } |  d ƒ } |  d ƒ } |  d ƒ }	 |  d	 ƒ }
 | d
 | ƒ } | d | ƒ } | d | ƒ } | d | ƒ } d | | | | | | | | | | | | | | | | | | | | | | | | | | f d } t | | | | | f | | | | | f |	 | | | f d |
 | ƒ}	 |	 | k s€t ‚ d  S(   Niÿÿÿÿ(   R   R   (   R   s   n m o pR0   RZ   R[   R6   R   R.   RC   RD   R\   sÑ   for (int i=0; i<m; i++){
   y[i] = 0.0;
}
for (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      for (int k=0; k<o; k++){
         for (int l=0; l<p; l++){
            y[i] = (a[%s] + b[%s])*c[%s] + y[i];
s            }
      }
   }
}R1   (   RF   R   R   RG   R   R2   R   R   (   R   R   R   R/   RK   RL   R;   RZ   R[   R6   R   R.   RC   RD   R\   R<   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_glsl_code_loops_addfactor  s     iKc          C   s  d d l  m }  m } d d l m } | d d t ƒ\ } } } } |  d ƒ } |  d ƒ } |  d ƒ }	 |  d	 ƒ }
 | d
 | ƒ } | d | ƒ } | d | ƒ } d } d | | | | | | d } d | | | d } d | | | d } t | | | | | f | | | | | f | | | | |	 | | | f d |
 | ƒ}	 |	 | | | | d  k s|	 | | | | d  k s|	 | | | | d  k s|	 | | | | d  k s|	 | | | | d  k s|	 | | | | d  k st ‚ d  S(   Niÿÿÿÿ(   R   R   (   R   s   n m o pR0   RZ   R[   R6   R   R.   RC   RD   s*   for (int i=0; i<m; i++){
   y[i] = 0.0;
}
s|   for (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      for (int k=0; k<o; k++){
         y[i] = b[j]*b[k]*c[%s] + y[i];
s         }
   }
}
sU   for (int i=0; i<m; i++){
   for (int k=0; k<o; k++){
      y[i] = a[%s]*b[k] + y[i];
s      }
}
sU   for (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      y[i] = a[%s]*b[j] + y[i];
R1   (   RF   R   R   RG   R   R2   R   R   (   R   R   R   R/   RK   RL   R;   RZ   R[   R6   R   R.   RC   RD   t   s0t   s1t   s2t   s3(    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt#   test_glsl_code_loops_multiple_terms%  s8    \c          C   s¤  t  t t t d t t d k f t t f ƒ t t ƒ g ƒ }  t d d d ƒ } t |  d | ƒd k sn t	 ‚ t t  | d | d g ƒ ƒ s” t	 ‚ t d | d t d k f | d t f ƒ t | d ƒ | d } t | ƒ 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(   Ni   i    R-   i   i   R1   s\   A[0][0] = x*y;
if (y > 0) {
   A[1][0] = x + 2;
}
else {
   A[1][0] = y;
}
A[2][0] = sin(z);sF   ((x > 0) ? (
   2*A[2][0]
)
: (
   A[2][0]
)) + sin(A[1][0]) + A[0][0]t   qi   t   Mi   s¨   M[0][0] = sin(q[1]);
M[0][1] = 0;
M[0][2] = cos(q[2]);
M[1][0] = q[1] + q[2];
M[1][1] = q[3];
M[1][2] = 5;
M[2][0] = 2*q[4]/q[1];
M[2][1] = sqrt(q[0]) + 4;
M[2][2] = 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   R   R   R
   R2   R   R!   R   R   R   R   R   (   t   matR-   R7   Rd   Re   RK   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_Matrix_printingW  s    >&C	#3	c          C   sa   t  }  t d d d d d d d g ƒ } |  | ƒ d k s? t ‚ |  | j ƒ  ƒ d k s] t ‚ d  S(	   Ni   i   i   i   i   i   i   s   float[7](1, 2, 3, 4, 5, 6, 7)(   R   R   R   t	   transpose(   t   glR-   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_Matrices_1x7‚  s    !c          C   s  t  }  xt d d ƒ D]ô } t t | ƒ ƒ } |  | j ƒ  ƒ |  | ƒ k sR t ‚ |  | d t ƒ|  | ƒ k sv t ‚ | d k r | d k rÌ |  | ƒ d | d j d „  t | ƒ Dƒ ƒ f k st ‚ q
|  | ƒ d | d j d	 „  t | ƒ Dƒ ƒ f k s
t ‚ q q Wd  S(
   Ni   i
   t   mat_transposei   s	   vec%s(%s)s   , c         s   s   |  ] } t  | ƒ Vq d  S(   N(   t   str(   t   .0R<   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pys	   <genexpr>  s    s   float[%s](%s)c         s   s   |  ] } t  | ƒ Vq d  S(   N(   Rl   (   Rm   R<   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pys	   <genexpr>’  s    (   R   t   rangeR   Rh   R   R2   t   join(   Ri   R.   R-   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_1xN_vecsˆ  s    $$>c       
   C   s‹  d }  xIt  d d ƒ D]8} x/t  d d ƒ D]} t g  t  | ƒ D]- } g  t  | ƒ D] } | | | ^ qU ^ qB ƒ } t | ƒ } t | d t ƒ} |  d t ƒ  j | ƒ d 7}  |  d | d 7}  |  d	 | d
 7}  |  d 7}  |  d 7}  | d k r| d k r| d k sJt ‚ q, | d k r~| d k r~| d k r~| d k r~| j d | ƒ sbt ‚ | j d | ƒ sJt ‚ q, | d k r®| d k r®| j d ƒ sJt ‚ q, | d k rÞ| d k rÞ| j d ƒ sJt ‚ q, | d k r'| j d | | ƒ st ‚ | j d | | ƒ sJt ‚ q, | d k rp| j d | | ƒ sPt ‚ | j d | | ƒ sJt ‚ q, | j d | | ƒ st ‚ | j d | | ƒ sªt ‚ t | d t ƒ} t | d t d t ƒ}	 | j d | | f ƒ sót ‚ |	 j d | | f ƒ st ‚ |  d | d 7}  |  d |	 d
 7}  |  d 7}  |  d 7}  q, Wq Wt }
 |
 r‡t	 d d ƒ } | j
 |  ƒ | j ƒ  n  d  S(   Ns   def test_misc_mats():
i   i   Rk   s
       mat = s   

s       gl = '''s   '''
s       glTransposed = '''s   '''

s        assert glsl_code(mat) == gl
s=       assert glsl_code(mat,mat_transpose=True) == glTransposed
t   0i   s   mat%st   vecs
   float[%s](t
   mat_nesteds   float[%s][%s]s       glNested = '''s       glNestedTransposed = '''s6       assert glsl_code(mat,mat_nested=True) == glNested
sT       assert glsl_code(mat,mat_nested=True,mat_transpose=True) == glNestedTransposed

s   test_glsl_generated_matrices.pyt   w(   Rn   R   R   R2   R   t   _printR   t
   startswithR    t   opent   writet   close(   t   generatedAssertionsR.   RC   R   R   R-   Ri   t   glTransposedt   glNestedt   glNestedTransposedt   generateAssertionst   gen(    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_MxN_mats”  sR    F

0  
c       
   C   sH  t  d g g ƒ }  d } d } t |  ƒ | k s6 t ‚ t |  d t ƒ| k sT t ‚ t  d d g g ƒ }  d } d } t |  ƒ | k s t ‚ t |  d t ƒ| k s« t ‚ t  d d d g g ƒ }  d } d } t |  ƒ | k sç t ‚ t |  d t ƒ| k st ‚ t  d d d d g g ƒ }  d	 } d	 } t |  ƒ | k sDt ‚ t |  d t ƒ| k sbt ‚ t  d d d d d
 g g ƒ }  d } d } t |  ƒ | k s¤t ‚ t |  d t ƒ| k sÂt ‚ t  d g d g g ƒ }  d } d } t |  ƒ | k sþt ‚ t |  d t ƒ| k st ‚ t  d d g d d g g ƒ }  d } d } t |  ƒ | k s^t ‚ t |  d t ƒ| k s|t ‚ t  d d d g d d
 d g g ƒ }  d } d } t |  ƒ | k sÄt ‚ t |  d t ƒ| k sât ‚ t  d d d d g d
 d d d g g ƒ }  d } d } t |  ƒ | k s0t ‚ t |  d t ƒ| k sNt ‚ t  d d d d d
 g d d d d d g g ƒ }  d } d } t |  ƒ | k s¢t ‚ t |  d t ƒ| k sÀt ‚ d } d } t |  d t ƒ| k sêt ‚ t |  d t d t ƒ| k st ‚ t  d g d g d g g ƒ }  d } d } t |  ƒ | k sPt ‚ t |  d t ƒ| k snt ‚ t  d d g d d g d
 d g g ƒ }  d } d } t |  ƒ | k s¹t ‚ t |  d t ƒ| k s×t ‚ t  d d d g d d
 d g d d d g g ƒ }  d } d } t |  ƒ | k s+t ‚ t |  d t ƒ| k sIt ‚ t  d d d d g d
 d d d g d d d  d! g g ƒ }  d" } d# } t |  ƒ | k s¦t ‚ t |  d t ƒ| k sÄt ‚ t  d d d d d
 g d d d d d g d  d! d$ d% d& g g ƒ }  d' } d( } t |  ƒ | k s*t ‚ t |  d t ƒ| k sHt ‚ d) } d* } t |  d t ƒ| k srt ‚ t |  d t d t ƒ| k s–t ‚ t  d g d g d g d g g ƒ }  d	 } d	 } t |  ƒ | k sÞt ‚ t |  d t ƒ| k süt ‚ t  d d g d d g d
 d g d d g g ƒ }  d+ } d, } t |  ƒ | k sPt ‚ t |  d t ƒ| k snt ‚ t  d d d g d d
 d g d d d g d d  d! g g ƒ }  d- } d. } t |  ƒ | k sÎt ‚ t |  d t ƒ| k sìt ‚ t  d d d d g d
 d d d g d d d  d! g d$ d% d& d/ g g ƒ }  d0 } d1 } t |  ƒ | k sXt ‚ t |  d t ƒ| k svt ‚ t  d d d d d
 g d d d d d g d  d! d$ d% d& g d/ d2 d3 d4 d5 g g ƒ }  d6 } d7 } t |  ƒ | k sît ‚ t |  d t ƒ| k s	t ‚ d8 } d9 } t |  d t ƒ| k s6	t ‚ t |  d t d t ƒ| k sZ	t ‚ t  d g d g d g d g d
 g g ƒ }  d } d } t |  ƒ | k s¨	t ‚ t |  d t ƒ| k sÆ	t ‚ t  d d g d d g d
 d g d d g d d g g ƒ }  d: } d; } t |  ƒ | k s#
t ‚ t |  d t ƒ| k sA
t ‚ d< } d= } t |  d t ƒ| k sk
t ‚ t |  d t d t ƒ| k s
t ‚ t  d d d g d d
 d g d d d g d d  d! g d$ d% d& g g ƒ }  d> } d? } t |  ƒ | k sû
t ‚ t |  d t ƒ| k st ‚ d@ } dA } t |  d t ƒ| k sCt ‚ t |  d t d t ƒ| k sgt ‚ t  d d d d g d
 d d d g d d d  d! g d$ d% d& d/ g d2 d3 d4 d5 g g ƒ }  dB } dC } t |  ƒ | k sât ‚ t |  d t ƒ| k s t ‚ dD } dE } t |  d t ƒ| k s*t ‚ t |  d t d t ƒ| k sNt ‚ t  d d d d d
 g d d d d d g d  d! d$ d% d& g d/ d2 d3 d4 d5 g dF dG dH dI dJ g g ƒ }  dK } dL } t |  ƒ | k sØt ‚ t |  d t ƒ| k söt ‚ dM } dN } t |  d t ƒ| k s t ‚ t |  d t d t ƒ| k sDt ‚ d  S(O   Ni    Rq   Rk   i   s
   vec2(0, 1)i   s   vec3(0, 1, 2)i   s   vec4(0, 1, 2, 3)i   s   float[5](0, 1, 2, 3, 4)s   mat2(0, 1, 2, 3)s   mat2(0, 2, 1, 3)i   s   mat3x2(0, 1, 2, 3, 4, 5)s   mat2x3(0, 3, 1, 4, 2, 5)i   i   s   mat4x2(0, 1, 2, 3, 4, 5, 6, 7)s   mat2x4(0, 4, 1, 5, 2, 6, 3, 7)i   i	   sB   float[10](
   0, 1, 2, 3, 4,
   5, 6, 7, 8, 9
) /* a 2x5 matrix */sK   float[10](
   0, 5,
   1, 6,
   2, 7,
   3, 8,
   4, 9
) /* a 5x2 matrix */sC   float[2][5](
   float[](0, 1, 2, 3, 4),
   float[](5, 6, 7, 8, 9)
)sg   float[5][2](
   float[](0, 5),
   float[](1, 6),
   float[](2, 7),
   float[](3, 8),
   float[](4, 9)
)Rs   s   mat2x3(0, 1, 2, 3, 4, 5)s   mat3x2(0, 2, 4, 1, 3, 5)s   mat3(0, 1, 2, 3, 4, 5, 6, 7, 8)s   mat3(0, 3, 6, 1, 4, 7, 2, 5, 8)i
   i   s0   mat4x3(0, 1,  2,  3, 4, 5,  6,  7, 8, 9, 10, 11)s.   mat3x4(0, 4,  8, 1, 5,  9, 2, 6, 10, 3, 7, 11)i   i   i   sa   float[15](
   0,  1,  2,  3,  4,
   5,  6,  7,  8,  9,
   10, 11, 12, 13, 14
) /* a 3x5 matrix */s_   float[15](
   0, 5, 10,
   1, 6, 11,
   2, 7, 12,
   3, 8, 13,
   4, 9, 14
) /* a 5x3 matrix */sm   float[3][5](
   float[]( 0,  1,  2,  3,  4),
   float[]( 5,  6,  7,  8,  9),
   float[](10, 11, 12, 13, 14)
)s{   float[5][3](
   float[](0, 5, 10),
   float[](1, 6, 11),
   float[](2, 7, 12),
   float[](3, 8, 13),
   float[](4, 9, 14)
)s   mat2x4(0, 1, 2, 3, 4, 5, 6, 7)s   mat4x2(0, 2, 4, 6, 1, 3, 5, 7)s2   mat3x4(0,  1,  2, 3,  4,  5, 6,  7,  8, 9, 10, 11)s-   mat4x3(0, 3, 6,  9, 1, 4, 7, 10, 2, 5, 8, 11)i   sD   mat4( 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15)s<   mat4(0, 4,  8, 12, 1, 5,  9, 13, 2, 6, 10, 14, 3, 7, 11, 15)i   i   i   i   sx   float[20](
   0,  1,  2,  3,  4,
   5,  6,  7,  8,  9,
   10, 11, 12, 13, 14,
   15, 16, 17, 18, 19
) /* a 4x5 matrix */ss   float[20](
   0, 5, 10, 15,
   1, 6, 11, 16,
   2, 7, 12, 17,
   3, 8, 13, 18,
   4, 9, 14, 19
) /* a 5x4 matrix */s   float[4][5](
   float[]( 0,  1,  2,  3,  4),
   float[]( 5,  6,  7,  8,  9),
   float[](10, 11, 12, 13, 14),
   float[](15, 16, 17, 18, 19)
)s   float[5][4](
   float[](0, 5, 10, 15),
   float[](1, 6, 11, 16),
   float[](2, 7, 12, 17),
   float[](3, 8, 13, 18),
   float[](4, 9, 14, 19)
)sK   float[10](
   0, 1,
   2, 3,
   4, 5,
   6, 7,
   8, 9
) /* a 5x2 matrix */sB   float[10](
   0, 2, 4, 6, 8,
   1, 3, 5, 7, 9
) /* a 2x5 matrix */sg   float[5][2](
   float[](0, 1),
   float[](2, 3),
   float[](4, 5),
   float[](6, 7),
   float[](8, 9)
)sC   float[2][5](
   float[](0, 2, 4, 6, 8),
   float[](1, 3, 5, 7, 9)
)se   float[15](
   0,  1,  2,
   3,  4,  5,
   6,  7,  8,
   9, 10, 11,
   12, 13, 14
) /* a 5x3 matrix */sZ   float[15](
   0, 3, 6,  9, 12,
   1, 4, 7, 10, 13,
   2, 5, 8, 11, 14
) /* a 3x5 matrix */s…   float[5][3](
   float[]( 0,  1,  2),
   float[]( 3,  4,  5),
   float[]( 6,  7,  8),
   float[]( 9, 10, 11),
   float[](12, 13, 14)
)sd   float[3][5](
   float[](0, 3, 6,  9, 12),
   float[](1, 4, 7, 10, 13),
   float[](2, 5, 8, 11, 14)
)sz   float[20](
   0,  1,  2,  3,
   4,  5,  6,  7,
   8,  9, 10, 11,
   12, 13, 14, 15,
   16, 17, 18, 19
) /* a 5x4 matrix */sr   float[20](
   0, 4,  8, 12, 16,
   1, 5,  9, 13, 17,
   2, 6, 10, 14, 18,
   3, 7, 11, 15, 19
) /* a 4x5 matrix */s™   float[5][4](
   float[]( 0,  1,  2,  3),
   float[]( 4,  5,  6,  7),
   float[]( 8,  9, 10, 11),
   float[](12, 13, 14, 15),
   float[](16, 17, 18, 19)
)s…   float[4][5](
   float[](0, 4,  8, 12, 16),
   float[](1, 5,  9, 13, 17),
   float[](2, 6, 10, 14, 18),
   float[](3, 7, 11, 15, 19)
)i   i   i   i   i   s   float[25](
   0,  1,  2,  3,  4,
   5,  6,  7,  8,  9,
   10, 11, 12, 13, 14,
   15, 16, 17, 18, 19,
   20, 21, 22, 23, 24
) /* a 5x5 matrix */s‡   float[25](
   0, 5, 10, 15, 20,
   1, 6, 11, 16, 21,
   2, 7, 12, 17, 22,
   3, 8, 13, 18, 23,
   4, 9, 14, 19, 24
) /* a 5x5 matrix */s­   float[5][5](
   float[]( 0,  1,  2,  3,  4),
   float[]( 5,  6,  7,  8,  9),
   float[](10, 11, 12, 13, 14),
   float[](15, 16, 17, 18, 19),
   float[](20, 21, 22, 23, 24)
)s£   float[5][5](
   float[](0, 5, 10, 15, 20),
   float[](1, 6, 11, 16, 21),
   float[](2, 7, 12, 17, 22),
   float[](3, 8, 13, 18, 23),
   float[](4, 9, 14, 19, 24)
)(   R   R   R   R2   (   Rf   Ri   R{   R|   R}   (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   test_misc_matsÃ  s¾   	$		$			$				$$$N(C   t
   sympy.coreR    R   R   R   R   R   R   R   R   R	   t   sympy.functionsR
   R   R   R   R   R   R   t   sympy.utilities.pytestR   t   sympy.printing.glslR   t   sympy.printing.strR   t   sympy.utilities.lambdifyR   RF   R   R   t   sympy.matricesR   R   R   RG   R   R   R   R!   R   R"   R#   R%   R&   R'   R)   R+   R,   R3   R4   R5   R=   R>   RB   RM   RO   RP   RX   RY   R]   R^   Rc   Rg   Rj   Rp   R€   R   (    (    (    s=   lib/python2.7/site-packages/sympy/printing/tests/test_glsl.pyt   <module>   sL   F4													
												2	+			/