Ë
    7^(ho  ã                   óÖ  — 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 d dlmZmZmZmZmZmZmZ d dl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# d dl$m%Z%m&Z& d d	l m'Z' d d
lm(Z( d dl)Z) ed«      \  Z*Z+Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d„ Z?d „ Z@d!„ ZAd"„ ZBd#„ ZCd$„ ZDd%„ ZEd&„ ZFd'„ ZGd(„ ZHd)„ ZId*„ ZJd+„ ZKd,„ ZLd-„ ZMd.„ ZNd/„ ZOd0„ ZPd1„ ZQy)2é    )ÚpiÚsymbolsÚRationalÚIntegerÚGoldenRatioÚ
EulerGammaÚCatalanÚLambdaÚDummyÚEqÚNeÚLeÚLtÚGtÚGe)Ú	PiecewiseÚsinÚcosÚAbsÚexpÚceilingÚsqrt)ÚraisesÚwarns_deprecated_sympy)ÚGLSLPrinter)Ú
StrPrinter)Úimplemented_function)ÚIndexedBaseÚIdx)ÚMatrixÚMatrixSymbol)ÚTuple©Ú	glsl_codeNzx,y,zc                  ó>   — t        t        t        «      «      dk(  sJ ‚y )Núabs(x))r$   r   Úx© ó    ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/printing/tests/test_glsl.pyÚtest_printmethodr+      s   € Ü”Sœ“VÓ Ò(Ð(Ñ(r)   c                  óì  — t        t        t        z  d¬«      dk(  sJ ‚t        t        t        z  t        z   d¬«      dk(  sJ ‚t        t        t        t        z   z  d¬«      dk(  sJ ‚t        t        t        t        z   z  d¬«      dk(  sJ ‚t        t        t        t        t        dz  z  z   z  d¬«      dk(  sJ ‚t        t         t        z
  dd¬	«      d
k(  sJ ‚t        t         t        z
  d¬«      dk(  sJ ‚y )NF)Úuse_operatorsz	mul(x, y)zadd(pow(x, y), z)zmul(x, add(y, z))ç      à?zmul(x, add(y, pow(z, sqrt(y))))zzero())r-   Úzerozsub(zero(), add(x, y))zsub(0.0, add(x, y))©r$   r'   ÚyÚzr(   r)   r*   Útest_print_without_operatorsr3      sÕ   € Ü”Q”q‘S¨Ô/°;Ò>Ð>Ð>Ü”Qœ‘Tœ!‘V¨EÔ2Ð6IÒIÐIÐIÜ”Qœœ!™‘W¨UÔ3Ð7JÒJÐJÐJÜ”Qœœ!™‘W¨UÔ3Ð7JÒJÐJÐJÜ”Qœœ!œQ ™V™)™‘_°UÔ;Ð?`Ò`Ð`Ð`Ü”a�Rœ‘T¨°XÔ>ÐBZÒZÐZÐZÜ”a�Rœ‘T¨Ô/Ð3HÒHÐHÑHr)   c                  ó¦   — t        t        t        «      «      dk(  sJ ‚t        t        dz  «      dk(  sJ ‚t        t        t        «      «      dk(  sJ ‚y )Nzsqrt(x)r.   )r$   r   r'   r(   r)   r*   Útest_glsl_code_sqrtr5      sG   € Ü”Tœ!“WÓ Ò*Ð*Ð*Ü”Q˜‘VÓ 	Ò)Ð)Ð)Ü”Tœ!“WÓ Ò*Ð*Ñ*r)   c                  ój  — t        dt        t        dt        z  «      «      } t        t        dz  «      dk(  sJ ‚t        t        t        dz  z  «      dk(  sJ ‚t        d | t        «      dz  t        t        t        z  z
  z  z  t        dz  t        z   z  «      dk(  sJ ‚t        t        d	z  «      d
k(  sJ ‚y )NÚgé   é   zpow(x, 3.0)zpow(x, pow(y, 3.0))é   g      @z.pow(3.5*2*x, -x + pow(y, x))/(pow(x, 2.0) + y)g      ð¿z1.0/x)r   r
   r'   r$   r1   )r7   s    r*   Útest_glsl_code_Powr;   #   s¢   € Ü˜S¤&¬¨A¬a©C£.Ó1€AÜ”Q˜‘T‹?˜mÒ+Ð+Ð+Ü”Qœ˜A™‘YÓÐ#8Ò8Ð8Ð8Ü�Q™œ!›˜S™¤A¬¬1©¡HÑ-Ñ-¬q°!©t´a©xÑ8Ó9Ø8ò9ð 9ð 9ä”Q˜‘WÓ Ò(Ð(Ñ(r)   c                  óœ  — t        t        t        t        «      «      dk(  sJ ‚t        t	        t        t        «      «      dk(  sJ ‚t        t        t        t        «      «      dk(  sJ ‚t        t        t        t        «      «      dk(  sJ ‚t        t        t        t        «      «      dk(  sJ ‚t        t        t        t        «      «      dk(  sJ ‚y )Nzx == yzx != yzx <= yzx < yzx > yzx >= y)	r$   r   r'   r1   r   r   r   r   r   r(   r)   r*   Útest_glsl_code_Relationalr=   ,   s˜   € Ü”Rœœ1“XÓ (Ò*Ð*Ð*Ü”Rœœ1“XÓ (Ò*Ð*Ð*Ü”Rœœ1“XÓ (Ò*Ð*Ð*Ü”Rœœ1“XÓ 'Ò)Ð)Ð)Ü”Rœœ1“XÓ 'Ò)Ð)Ð)Ü”Rœœ1“XÓ (Ò*Ð*Ñ*r)   c                  ó^   — t        t        d«      «      dk(  sJ ‚t        t        «      dk(  sJ ‚y )Nr:   zfloat E = 2.71828183;
Ezfloat pi = 3.14159265;
pi)r$   r   r   r(   r)   r*   Útest_glsl_code_constants_mathhr?   5   s-   € Ü”S˜“VÓÐ :Ò:Ð:Ð:Ü”R‹=Ð8Ò8Ð8Ñ8r)   c                  óŽ   — t        dt        z  «      dk(  sJ ‚t        dt        z  «      dk(  sJ ‚t        dt        z  «      dk(  sJ ‚y )Nr8   z-float GoldenRatio = 1.61803399;
2*GoldenRatioz&float Catalan = 0.915965594;
2*Catalanz,float EulerGamma = 0.577215665;
2*EulerGamma)r$   r   r	   r   r(   r)   r*   Útest_glsl_code_constants_otherrA   <   sJ   € Ü�Q”{‘]Ó#Ð'WÒWÐWÐWÜ�Q”w‘YÓÐ#LÒLÐLÐLÜ�Q”z‘\Ó"Ð&UÒUÐUÑUr)   c                  óÔ   — t        t        dd«      «      dk(  sJ ‚t        t        dd«      «      dk(  sJ ‚t        t        dd«      «      dk(  sJ ‚t        t        d	d«      «      dk(  sJ ‚y )
Nr9   é   z3.0/7.0é   é	   Ú2iùÿÿÿz-3.0/7.0éýÿÿÿ)r$   r   r(   r)   r*   Útest_glsl_code_RationalrH   B   sg   € Ü”X˜a “^Ó$¨	Ò1Ð1Ð1Ü”X˜b !“_Ó%¨Ò,Ð,Ð,Ü”X˜a “_Ó%¨Ò3Ð3Ð3Ü”X˜b "Ó%Ó&¨)Ò3Ð3Ñ3r)   c                  óh   — t        t        d«      «      dk(  sJ ‚t        t        d«      «      dk(  sJ ‚y )NéC   Ú67éÿÿÿÿz-1)r$   r   r(   r)   r*   Útest_glsl_code_IntegerrM   I   s0   € Ü”W˜R“[Ó! TÒ)Ð)Ð)Ü”W˜R“[Ó! TÒ)Ð)Ñ)r)   c                  ó^   — t        t        t        «      t        t        «      z  «      dk(  sJ ‚y )Nzpow(sin(x), cos(x)))r$   r   r'   r   r(   r)   r*   Útest_glsl_code_functionsrO   N   s#   € Ü”Sœ“Vœs¤1›vÑ%Ó&Ð*?Ò?Ð?Ñ?r)   c            	      ó¨  — t        d«      } t        dt        | d| z  «      «      }t         || «      «      dk(  sJ ‚t        dt        | d| z  t        z  «      «      }t         || «      «      dk(  sJ ‚t        d«      }t        dt        dd	¬
«      «      }t        dt        | | d| z   z  d| z   z  «      «      }t         |||   «      ||   ¬«      dk(  sJ ‚y )Nr'   r7   r8   z2*xz(float Catalan = 0.915965594;
2*x/CatalanÚAÚiÚnT©Úintegerr:   ©Ú	assign_toz@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'   r7   rQ   rR   s       r*   Útest_glsl_code_inline_functionrX   R   sÔ   € Ü�‹€AÜ˜S¤&¨¨A¨a©C£.Ó1€AÜ‘Q�q“T‹?˜eÒ#Ð#Ð#Ü˜S¤&¨¨A¨a©C´©KÓ"8Ó9€AÜ‘Q�q“T‹?ÐIÒIÐIÐIÜ�CÓ€AÜˆC”˜ dÔ+Ó,€AÜ˜S¤&¨¨A¨q°1©u©I°q¸1±uÑ,=Ó">Ó?€AÜ‘Q�q˜‘t“W¨¨!©Ô-ð	òð ñ r)   c                  óx   — t        t        t        «      «      dk(  sJ ‚t        t        t        «      «      dk(  sJ ‚y )Nzceil(x)r&   )r$   r   r'   r   r(   r)   r*   Útest_glsl_code_exceptionsrZ   b   s0   € Ü”WœQ“ZÓ  IÒ-Ð-Ð-Ü”Sœ“VÓ Ò(Ð(Ñ(r)   c                  óª  — t        t        t        z  «      dk(  sJ ‚t        t        t        z  «      dk(  sJ ‚t        t         «      dk(  sJ ‚t        t        t        z  t        z  «      dk(  sJ ‚t        t        t        z  t        z  «      dk(  sJ ‚t        t        t        z  t        z  «      dk(  sJ ‚t        t        t        z  t        z  «      dk(  sJ ‚y )Nzx && yzx || yz!xzx && y && zzx || y || zzz || x && yzz && (x || y)r0   r(   r)   r*   Útest_glsl_code_booleanr\   g   s°   € Ü”Qœ‘UÓ˜xÒ'Ð'Ð'Ü”Qœ‘UÓ˜xÒ'Ð'Ð'Ü”a�R‹=˜DÒ Ð Ð Ü”Qœ‘UœQ‘YÓ =Ò0Ð0Ð0Ü”Qœ‘UœQ‘YÓ =Ò0Ð0Ð0Ü”aœ!‘eœq‘[Ó! ]Ò2Ð2Ð2Ü”aœ!‘eœq‘[Ó! _Ò4Ð4Ñ4r)   c                  ó<  ‡— t        t        t        dk  ft        dz  df«      Št        ‰«      } d}| |k(  sJ ‚t        ‰d¬«      dk(  sJ ‚t        t        t        dk  ft        dz  t        dkD  ft        t        «      t        dkD  f«      Št	        t
        ˆfd	„«       y )
Nr:   r8   Tz)((x < 1) ? (
   x
)
: (
   pow(x, 2.0)
))ÚcrV   z5if (x < 1) {
   c = x;
}
else {
   c = pow(x, 2.0);
}r   c                  ó   •— t        ‰ «      S ©Nr#   )Úexprs   €r*   ú<lambda>z*test_glsl_code_Piecewise.<locals>.<lambda>‡   s   ø€ œy¨›€ r)   )r   r'   r$   r   r   Ú
ValueError)ÚpÚsra   s     @r*   Útest_glsl_code_Piecewiserf   q   s˜   ø€ Ü”aœ˜Q™�Z¤! Q¡$¨ Ó.€DÜ�$‹€Aðð ð �Š6€Mˆ6Ü�T SÔ)ðò	ð 	ð 	ô ”aœ˜Q™�Z¤! Q¡$¬¨A© ´´Q³¼¸Q¹°Ó@€DÜ
Œ:Ó.Õ/r)   c                  ór   — t        dt        t        t        dk  ft        dz  df«      z  «      } d}| |k(  sJ ‚y )Nr8   r:   Tz+2*((x < 1) ? (
   x
)
: (
   pow(x, 2.0)
)))r$   r   r'   )rd   re   s     r*   Útest_glsl_code_Piecewise_deeprh   Š   s?   € Ü�!”Iœq¤! a¡%˜j¬1¨a©4°¨,Ó7Ñ7Ó8€Aðð ð �Š6€M‰6r)   c                  ó&   — t        t        d„ «       y )Nc                  ó6   — t        t        t        «      d¬«      S )NÚgarbage)Úmethod)r$   r   r'   r(   r)   r*   rb   z)test_glsl_code_settings.<locals>.<lambda>™   s   € œi¬¬A«°yÔA€ r)   )r   Ú	TypeErrorr(   r)   r*   Útest_glsl_code_settingsrn   ˜   s   € Ü
Œ9ÑAÕBr)   c                  óê  — t        dd¬«      \  } }}t        d| «      t        d|«      t        d|«      }}}t        «       }t        «       |_        t        d«      |   }|j                  |«      dk(  sJ ‚t        d	«      ||f   }|j                  |«      d
||z  |z   z  k(  sJ ‚t        d«      |||f   }	|j                  |	«      d||z  |z  ||z  z   |z   z  k(  sJ ‚|j                  t        «       k(  sJ ‚y )Nzn m oTrT   rR   ÚjÚkr'   zx[j]rQ   zA[%s]ÚBzB[%s])r   r   r   ÚsetÚ_not_cr   Ú_print_Indexed)
rS   ÚmÚorR   rp   rq   rd   r'   rQ   rr   s
             r*   Útest_glsl_code_Indexedrx   œ   sÿ   € Ü�g tÔ,�G€A€qˆ!Ü�#�q‹kœ3˜s A›;¬¨C°«ˆ!€q€AÜ‹€AÜ‹u€A„Hä�CÓ˜Ñ€AØ×Ñ˜AÓ &Ò(Ð(Ð(Ü�CÓ˜˜A˜Ñ€AØ×Ñ˜AÓ '¨Q¨q©S°©UÑ"3Ò3Ð3Ð3Ü�CÓ˜˜A˜q˜Ñ!€AØ×Ñ˜AÓ '¨Q¨q©S°©U°1°Q±3©Y°q©[Ñ"9Ò9Ð9Ð9à�8‰8”s“uÒÐÑr)   c                  ó  — t        g d¢«      dk(  sJ ‚t        g d¢d¬«      dk(  sJ ‚t        g d¢«      t        d«      k(  sJ ‚t        g d¢«      t        t        ddd	«      «      k(  sJ ‚t        d
d	d«      } t        | d   | d   g«      sJ ‚y )N)r:   r8   r9   é   zvec4(1, 2, 3, 4)©r:   r8   r9   F)Ú
glsl_typeszfloat[3](1, 2, 3)r:   r8   r9   rQ   rz   r   )r$   r"   r!   )rv   s    r*   Útest_glsl_code_list_tuple_Tupler}   «   sŒ   € Ü’YÓÐ#5Ò5Ð5Ð5Ü’W¨Ô.Ð2EÒEÐEÐEÜ’WÓ¤¨7Ó!3Ò3Ð3Ð3Ü’WÓ¤¬5°°1°Q«<Ó!8Ò8Ð8Ð8ä�S˜˜1Ó€AÜ�a˜‘d˜1˜Q™4�[Ô!Ð!Ñ!r)   c                  óÞ   — t        dd¬«      \  } }t        d«      }t        d«      }t        d«      }t        d|«      }t        d| «      }d	}t        |||f   ||   z  ||   ¬
«      }||k(  sJ ‚y )Nún mTrT   rQ   r'   r1   rR   rp   zŠ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];
   }
}rV   ©r   r   r   r$   )	rS   rv   rQ   r'   r1   rR   rp   re   r^   s	            r*   Ú"test_glsl_code_loops_matrix_vectorr�   ´   s}   € Ü�5 $Ô'�D€A€qÜ�CÓ€AÜ�CÓ€AÜ�CÓ€AÜˆC�‹€AÜˆC�‹€Að	ð ô 	�!�A�q�D‘'˜!˜A™$‘,¨!¨A©$Ô/€AØ�Š6€M‰6r)   c                  óò   — t        ddt        ¬«      \  } }t        d«      }t        d«      }t        | |«      } d| j                  j
                  |j
                  dœz  }t        ||    ||    ¬«      }||k(  sJ ‚y )	Nzi mT)rU   Úclsr'   r1   zlfor (int i_%(icount)i=0; i_%(icount)i<m_%(mcount)i; i_%(icount)i++){
   y[i_%(icount)i] = x[i_%(icount)i];
})ÚicountÚmcountrV   )r   r   r   r   ÚlabelÚdummy_indexr$   )rR   rv   r'   r1   ÚexpectedÚcodes         r*   Útest_dummy_loopsrŠ   Ë   s|   € Ü�5 $¬EÔ2�D€A€qÜ�CÓ€AÜ�CÓ€AÜˆAˆq‹	€Að	ð —7‘7×&Ñ&°!·-±-Ñ@ñ	A€Hô
 �Q�q‘T Q q¡TÔ*€DØ�8ÒÐÑr)   c                  ó  — t        dd¬«      \  } }t        d«      }t        d«      }t        d«      }t        d«      }t        d|«      }t        d	| «      }d
}t        |||f   ||   z  ||   z   ||   z   ||   ¬«      }	|	|k(  sJ ‚y )Nr   TrT   rQ   r'   r1   r2   rR   rp   z’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];
   }
}rV   r€   )
rS   rv   rQ   r'   r1   r2   rR   rp   re   r^   s
             r*   Útest_glsl_code_loops_addrŒ   Ú   s™   € Ü�5 $Ô'�D€A€qÜ�CÓ€AÜ�CÓ€AÜ�CÓ€AÜ�CÓ€AÜˆC�‹€AÜˆC�‹€Að	ð ô 	�!�A�q�D‘'˜!˜A™$‘,  1¡Ñ%¨¨!©Ñ,¸¸!¹Ô=€AØ�Š6€M‰6r)   c                  ó„  — t        dd¬«      \  } }}}t        d«      }t        d«      }t        d«      }t        d|«      }t        d| «      }t        d	|«      }	t        d
|«      }
d|| z  |z  |z  ||z  |z  z   |	|z  z   |
z   ›d||z  |z  |	|z  z   |
z   ›d�dz   }t        |||	|
f   ||||	|
f   z  ||   ¬«      }||k(  sJ ‚y )Nún m o pTrT   ÚaÚbr1   rR   rp   rq   Úlzµ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[z]*b[ú
] + y[i];
ú         }
      }
   }
}rV   r€   )rS   rv   rw   rd   r�   r�   r1   rR   rp   rq   r‘   re   r^   s                r*   Ú*test_glsl_code_loops_multiple_contractionsr”   ñ   sù   € Ü˜¨DÔ1�J€A€qˆ!ˆQÜ�CÓ€AÜ�CÓ€AÜ�CÓ€AÜˆC�‹€AÜˆC�‹€AÜˆC�‹€AÜˆC�‹�Að 78¸±c¸!±e¸A±gÀÀ!ÁÀAÁ±oÈÈ!ÉÑ6KÈaÓ6OÐQRÐSTÑQTÐUVÑQVÐYZÐ[\ÑY\ÑQ\Ð_`ÓQ`ð	bð	ñ	ð ô 	�!�A�q˜!�G‘*˜Q˜q ! Q¨˜z™]Ñ*°a¸±dÔ;€AØ�Š6€M‰6r)   c                  óê  — t        dd¬«      \  } }}}t        d«      }t        d«      }t        d«      }t        d«      }t        d|«      }t        d	| «      }	t        d
|«      }
t        d|«      }d|| z  |z  |z  |	|z  |z  z   |
|z  z   |z   ›d|| z  |z  |z  |	|z  |z  z   |
|z  z   |z   ›d|	|z  |z  |
|z  z   |z   ›d�dz   }t        |||	|
|f   |||	|
|f   z   ||	|
|f   z  ||   ¬«      }||k(  sJ ‚y )NrŽ   TrT   r�   r�   r^   r1   rR   rp   rq   r‘   z¶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[z] + b[z])*c[r’   r“   rV   r€   )rS   rv   rw   rd   r�   r�   r^   r1   rR   rp   rq   r‘   re   s                r*   Útest_glsl_code_loops_addfactorr–     sg  € Ü˜¨DÔ1�J€A€qˆ!ˆQÜ�CÓ€AÜ�CÓ€AÜ�CÓ€AÜ�CÓ€AÜˆC�‹€AÜˆC�‹€AÜˆC�‹€AÜˆC�‹�Að ABÀ!ÁÀAÁÀaÁÈ!ÈAÉ#ÈaÉ%ÁÐRSÐTUÑRUÑ@UÐXYÓ@YÐ[\Ð]^Ñ[^Ð_`Ñ[`ÐabÑ[bÐefÐghÑehÐijÑejÑ[jÐmnÐopÑmpÑ[pÐstÓ[tÐvwÐxyÑvyÐz{Ñv{Ð~ð  ABñ  Bñ  wBð  EFó  wFð	Gð	ñ	ð ô 	�1�Q˜˜1˜a�Z‘= 1 Q¨¨1¨a Z¡=Ñ0°!°A°q¸!°G±*Ñ<ÈÈ!ÉÔM€AØ�Š6€M‰6r)   c                  óˆ  — t        dd¬«      \  } }}}t        d«      }t        d«      }t        d«      }t        d«      }t        d|«      }t        d	| «      }	t        d
|«      }
d}d|| z  |z  |	|z  z   |
z   z  dz   }d||z  |
z   z  dz   }d|| z  |	z   z  dz   }t        ||	   |||	f   z  ||
   |||
f   z  z   ||	   ||
   z  |||	|
f   z  z   ||   ¬«      }|||z   |z   |d d z   k(  s\|||z   |z   |d d z   k(  sJ|||z   |z   |d d z   k(  s8|||z   |z   |d d z   k(  s&|||z   |z   |d d z   k(  s|||z   |z   |d d z   k(  sJ ‚y y y y y y )NrŽ   TrT   r�   r�   r^   r1   rR   rp   rq   z*for (int i=0; i<m; i++){
   y[i] = 0.0;
}
z|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];
z      }
   }
}
zUfor (int i=0; i<m; i++){
   for (int k=0; k<o; k++){
      y[i] = a[%s]*b[k] + y[i];
z   }
}
zUfor (int i=0; i<m; i++){
   for (int j=0; j<n; j++){
      y[i] = a[%s]*b[j] + y[i];
rV   rL   r€   )rS   rv   rw   rd   r�   r�   r^   r1   rR   rp   rq   Ús0Ús1Ús2Ús3s                  r*   Ú#test_glsl_code_loops_multiple_termsrœ   *  s	  € Ü˜¨DÔ1�J€A€qˆ!ˆQÜ�CÓ€AÜ�CÓ€AÜ�CÓ€AÜ�CÓ€AÜˆC�‹€AÜˆC�‹€AÜˆC�‹€Að	ð ð	4ð 89¸±s¸1±u¸qÀ¹s±{ÀQ±ñ	Hð	ñ		ð ð	,à/0°©s°Q©wñ	8ð	ñ	ð ð	,à/0°©s°Q©wñ	8ð	ñ	ð ô 	Ø	ˆ!‰ˆQˆq�!ˆt‰W‰�q˜‘t˜A˜a ˜d™G‘|Ñ# a¨¡d¨1¨Q©4¡i°°!°Q¸°'±
Ñ&:Ñ:ÀaÈÁdô	L€Aà��b‘˜2‘  3 B Ñ'Ò'Ø��b‘˜2‘  3 B Ñ'Ò'Ø��b‘˜2‘  3 B Ñ'Ò'Ø��b‘˜2‘  3 B Ñ'Ò'Ø��b‘˜2‘  3 B Ñ'Ò'Ø��b‘˜2‘  3 B Ñ'Ò'ð)ð (ð
 (ð (ð (ð (ð (ð (r)   c            	      ó–  — t        t        t        z  t        dt        z   t        dkD  ft        df«      t	        t
        «      g«      } t        ddd«      }t        | |¬«      dk(  sJ ‚t        t        |d   |d   g«      «      sJ ‚t        d|d	   z  t        dkD  f|d	   df«      t	        |d
   «      z   |d   z   }t        |«      dk(  sJ ‚t        ddd«      }t        ddd«      }t        t	        |d
   «      dt        |d	   «      g|d
   |d	   z   |d   dgd|d   z  |d
   z  t        |d   «      dz   dgg«      }t        ||«      dk(  sJ ‚y )Nr8   r   TrQ   r9   r:   rV   z\A[0][0] = x*y;
if (y > 0) {
   A[1][0] = x + 2;
}
else {
   A[1][0] = y;
}
A[2][0] = sin(z);)r8   r   )r:   r   )r   r   zF((x > 0) ? (
   2*A[2][0]
)
: (
   A[2][0]
)) + sin(A[1][0]) + A[0][0]Úqé   ÚM)r9   r   )rz   r   rz   z¨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;)
r    r'   r1   r   r   r2   r!   r$   r   r   )ÚmatrQ   ra   rž   r    rv   s         r*   Útest_Matrix_printingr¢   Z  s~  € ô ”!”A‘#”y !¤a¡%¬¨1© ´°4¨yÓ9¼3¼q»6ÐBÓ
C€CÜ�S˜!˜QÓ€AÜ�S AÔ&ðòð ð ô ”V˜Q˜q™T ! A¡$˜KÓ(Ô)Ð)Ð)ä�a˜˜$™‘i¤ Q¡Ð'¨!¨D©'°4¨Ó9¼CÀÀ$Á»LÑHÈ1ÈTÉ7ÑR€DÜ�T‹?ðò!ð !ð !ô 	�S˜!˜QÓ€AÜ�S˜!˜QÓ€AÜ”�Q�s‘V“˜a¤ Q s¡V£Ð-Ø	
ˆ3‰�!�C‘&‰˜!˜D™' 1Ð%Ø	
ˆ1ˆT‰7‰�1�S‘6Ñ	œ4  #¡›<¨!Ñ+¨QÐ/ð1ó 	2€Aô �Q�q‹>ðò

ð 

ñ 

r)   c                  óz   — t         } t        g d¢«      } | |«      dk(  sJ ‚ | |j                  «       «      dk(  sJ ‚y )N©r:   r8   r9   rz   rŸ   é   rC   zfloat[7](1, 2, 3, 4, 5, 6, 7))r$   r    Ú	transpose©ÚglrQ   s     r*   Útest_Matrices_1x7r©   …  s>   € Ü	€BÜŠÓ€AÙˆa‹5Ð3Ò3Ð3Ð3Ùˆa�k‰k‹mÓÐ ?Ò?Ð?Ñ?r)   c                  óH   — t         } t        g d¢«      } | |d¬«      dk(  sJ ‚y )Nr¤   Úint)Ú
array_typezint[7](1, 2, 3, 4, 5, 6, 7))r$   r    r§   s     r*   Ú test_Matrices_1x7_array_type_intr­   ‹  s'   € Ü	€BÜŠÓ€AÙˆa˜EÔ"Ð&CÒCÐCÑCr)   c                  óF   — t         } t        d«      } | |dd¬«      dk(  sJ ‚y )Núa b cÚAbcTypeF)r¬   r|   zAbcType[3](a, b, c))r$   r   r§   s     r*   Útest_Tuple_array_type_customr±   �  s)   € Ü	€BÜ�Ó€AÙˆa˜I°%Ô8Ð<QÒQÐQÑQr)   c                  ó„   — t         } t        g d¢«      }t        d«      } | ||¬«      t        j                  d«      k(  sJ ‚y )Nr¤   zx.a x.b x.c x.d x.e x.f x.grV   zv        x.a = 1;
        x.b = 2;
        x.c = 3;
        x.d = 4;
        x.e = 5;
        x.f = 6;
        x.g = 7;)r$   r    r   ÚtextwrapÚdedent)r¨   rQ   rW   s      r*   Ú*test_Matrices_1x7_spread_assign_to_symbolsrµ   •  sE   € Ü	€BÜŠÓ€AÜÐ5Ó6€IÙˆa˜9Ô%¬¯©ð :ó *ò ð ñ r)   c                  ó„   — t         } d}t        d«      t        d«      f} | ||¬«      t        j                  d«      k(  sJ ‚y )N)r{   r{   r¯   úx y zrV   úY        a = 1;
        b = 2;
        c = 3;
        x = 1;
        y = 2;
        z = 3;©r$   r   r³   r´   ©r¨   ra   rW   s      r*   Ú$test_spread_assign_to_nested_symbolsr»   £  sI   € Ü	€BØ€DÜ˜Ó!¤7¨7Ó#3Ð4€IÙˆd˜iÔ(¬H¯O©Oð =ó -ò ð ñ r)   c                  ó”   — t         } t        d«      \  }}}}}}d}||f|f||f|ff} | ||¬«      t        j                  d«      k(  sJ ‚y )Nza b c x y z)©©r:   r8   r9   r½   rV   r¸   r¹   )	r¨   r�   r�   r^   r'   r1   r2   ra   rW   s	            r*   Ú+test_spread_assign_to_deeply_nested_symbolsr¿   °  sf   € Ü	€BÜ˜}Ó-Ñ€A€qˆ!ˆQ��1Ø!€DØ�a�&˜!�  1˜v q˜kÐ*€IÙˆd˜iÔ(¬H¯O©Oð =ó -ò ð ñ r)   c                  ó  — t         } t        «       5  t        ddgddgg«      }d d d «       t        d«      t        d«      t        d«      t        d«      f} | |«      t	        j
                  d	«      k(  sJ ‚y # 1 sw Y   ŒUxY w)
Nr¾   )r9   rz   )rŸ   r¥   )rC   é   za bzc dze fzg hzw        a = 1;
        b = 2;
        c = 3;
        d = 4;
        e = 5;
        f = 6;
        g = 7;
        h = 8;)r$   r   r    r   r³   r´   rº   s      r*   Ú.test_matrix_of_tuples_spread_assign_to_symbolsrÂ   ¾  s€   € Ü	€BÜ	Ó	!ñ 5Ü˜˜e�} e¨E ]Ð3Ó4ˆ÷5ä˜“¤¨£´¸³ÄÈÃÐP€IÙˆd�IÓ¤(§/¡/ð 3ó 	#ò 	ð 	ñ 	÷5ð 5ús   ‘A7Á7B c                  óJ   ‡ ‡— dŠt        d«      Š t        t        ˆ ˆfd„«       y )Nr¾   r·   c                  ó   •— t        ‰‰ «      S r`   r#   ©rW   ra   s   €€r*   rb   z?test_cannot_assign_to_cause_mismatched_length.<locals>.<lambda>Ñ  s   ø€ œy¨¨yÓ9€ r)   )r   r   rc   rÅ   s   @@r*   Ú-test_cannot_assign_to_cause_mismatched_lengthrÆ   Î  s   ù€ Ø€DÜ˜Ó €IÜ
Œ:Ô9Õ:r)   c                  óÀ   — t         } t        ddd«      t        ddd«      z  t        ddd«      z   }t        ddd«      } | ||¬«      t        j                  d«      k(  sJ ‚y )NrQ   rz   rr   ÚCÚXrV   a/          X[0][0] = A[0][0]*B[0][0] + A[0][1]*B[1][0] + A[0][2]*B[2][0] + A[0][3]*B[3][0] + C[0][0];
        X[0][1] = A[0][0]*B[0][1] + A[0][1]*B[1][1] + A[0][2]*B[2][1] + A[0][3]*B[3][1] + C[0][1];
        X[0][2] = A[0][0]*B[0][2] + A[0][1]*B[1][2] + A[0][2]*B[2][2] + A[0][3]*B[3][2] + C[0][2];
        X[0][3] = A[0][0]*B[0][3] + A[0][1]*B[1][3] + A[0][2]*B[2][3] + A[0][3]*B[3][3] + C[0][3];
        X[1][0] = A[1][0]*B[0][0] + A[1][1]*B[1][0] + A[1][2]*B[2][0] + A[1][3]*B[3][0] + C[1][0];
        X[1][1] = A[1][0]*B[0][1] + A[1][1]*B[1][1] + A[1][2]*B[2][1] + A[1][3]*B[3][1] + C[1][1];
        X[1][2] = A[1][0]*B[0][2] + A[1][1]*B[1][2] + A[1][2]*B[2][2] + A[1][3]*B[3][2] + C[1][2];
        X[1][3] = A[1][0]*B[0][3] + A[1][1]*B[1][3] + A[1][2]*B[2][3] + A[1][3]*B[3][3] + C[1][3];
        X[2][0] = A[2][0]*B[0][0] + A[2][1]*B[1][0] + A[2][2]*B[2][0] + A[2][3]*B[3][0] + C[2][0];
        X[2][1] = A[2][0]*B[0][1] + A[2][1]*B[1][1] + A[2][2]*B[2][1] + A[2][3]*B[3][1] + C[2][1];
        X[2][2] = A[2][0]*B[0][2] + A[2][1]*B[1][2] + A[2][2]*B[2][2] + A[2][3]*B[3][2] + C[2][2];
        X[2][3] = A[2][0]*B[0][3] + A[2][1]*B[1][3] + A[2][2]*B[2][3] + A[2][3]*B[3][3] + C[2][3];
        X[3][0] = A[3][0]*B[0][0] + A[3][1]*B[1][0] + A[3][2]*B[2][0] + A[3][3]*B[3][0] + C[3][0];
        X[3][1] = A[3][0]*B[0][1] + A[3][1]*B[1][1] + A[3][2]*B[2][1] + A[3][3]*B[3][1] + C[3][1];
        X[3][2] = A[3][0]*B[0][2] + A[3][1]*B[1][2] + A[3][2]*B[2][2] + A[3][3]*B[3][2] + C[3][2];
        X[3][3] = A[3][0]*B[0][3] + A[3][1]*B[1][3] + A[3][2]*B[2][3] + A[3][3]*B[3][3] + C[3][3];)r$   r!   r³   r´   rº   s      r*   Útest_matrix_4x4_assignrÊ   Ó  si   € Ü	€BÜ˜˜A˜aÓ ¤<°°A°aÓ#8Ñ8¼<ÈÈAÈaÓ;PÑP€DÜ˜S  1Ó%€IÙˆd˜iÔ(¬H¯O©Oð =fó -ò ð ñ r)   c                  óª  — t         } t        dd«      D ]¾  }t        t        |«      «      } | |j                  «       «       | |«      k(  sJ ‚ | |d¬«       | |«      k(  sJ ‚|dkD  sŒS|dk  r4 | |«      d|›ddj	                  d	„ t        |«      D «       «      ›d
�k(  rŒŠJ ‚ | |«      d|›ddj	                  d„ t        |«      D «       «      ›d
�k(  rŒ¾J ‚ y )Nr:   é
   T©Úmat_transposerz   Úvecú(z, c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr`   ©Ústr©Ú.0re   s     r*   ú	<genexpr>z test_1xN_vecs.<locals>.<genexpr>ò  s   è ø€ Ò:TÀa¼3¸q¿6Ñ:Tùó   ‚ú)úfloat[z](c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr`   rÒ   rÔ   s     r*   rÖ   z test_1xN_vecs.<locals>.<genexpr>ô  s   è ø€ Ò>XÈ!¼sÀ1¿vÑ>Xùr×   )r$   Úranger    r¦   Újoin)r¨   rR   rQ   s      r*   Útest_1xN_vecsrÝ   ê  sÆ   € Ü	€BÜ�1�R‹[ò ZˆÜ”5˜“8ÓˆÙ�!—+‘+“-Ó ¡B q£EÒ)Ð)Ð)Ù�! $Ô'©2¨a«5Ò0Ð0Ð0Øˆq‹5Ø�AŠvÙ˜!”uªq°·±Ñ:TÌ5ÐQRË8Ô:TÕ1TÐ UÓUÐUÐUá˜!”u²1°T·Y±YÑ>XÌuÐUVËxÔ>XÕ5XÐ YÓYÐYÐYñZr)   c                  óL  — d} t        dd«      D �]U  }t        dd«      D �]B  }t        t        |«      D ��cg c]!  }t        |«      D �cg c]
  }|||z  z   ‘Œ c}‘Œ# c}}«      }t        |«      }t        |d¬«      }| dt        «       j	                  |«      z   dz   z  } | d|z   d	z   z  } | d
|z   dz   z  } | dz  } | dz  } |dk(  r|dk(  r|dk(  rŒ¯J ‚|dk  r<|dk  r7|dkD  r2|dkD  r-|j                  d|z  «      sJ ‚|j                  d|z  «      rŒðJ ‚|dk(  r|dk  r|j                  d«      r�ŒJ ‚|dk(  r|dk  r|j                  d«      r�Œ.J ‚|dk(  r4|j                  d|z  |z  «      sJ ‚|j                  d|z  |z  «      r�ŒgJ ‚|dk(  r4|j                  d|z  |z  «      sJ ‚|j                  d|z  |z  «      r�Œ J ‚|j                  d||z  z  «      sJ ‚|j                  d||z  z  «      sJ ‚t        |d¬«      }t        |dd¬«      }	|j                  d|›d|›d�«      sJ ‚|	j                  d|›d|›d�«      sJ ‚| d|z   d	z   z  } | d|	z   dz   z  } | dz  } | dz  } �ŒE �ŒX d}
|
r.t        dd«      }|j                  | «       |j                  «        y y c c}w c c}}w )Nzdef test_misc_mats():
r:   r¥   TrÍ   z
    mat = z

z    gl = '''z'''
z    glTransposed = '''z'''

z     assert glsl_code(mat) == gl
z=    assert glsl_code(mat,mat_transpose=True) == glTransposed
Ú0rz   zmat%srÏ   z
float[%s](©Ú
mat_nested)rÎ   rá   rÙ   z][ú]z    glNested = '''z    glNestedTransposed = '''z6    assert glsl_code(mat,mat_nested=True) == glNested
zT    assert glsl_code(mat,mat_nested=True,mat_transpose=True) == glNestedTransposed

Fztest_glsl_generated_matrices.pyÚw)	rÛ   r    r$   r   Ú_printÚ
startswithÚopenÚwriteÚclose)ÚgeneratedAssertionsrR   rp   r1   r'   rQ   r¨   ÚglTransposedÚglNestedÚglNestedTransposedÚgenerateAssertionsÚgens               r*   Útest_MxN_matsrï   ö  s  € Ø1ÐÜ�1�Q‹Zó #~ˆÜ�q˜“ó "	~ˆAÜ¼UÀ1»X×F¸¬%°«(Ö3 Q˜˜Q˜q™S›Ô3ÓFÓGˆAÜ˜1“ˆBÜ$ Q°TÔ:ˆLØ ¬j«l×.AÑ.AÀ!Ó.DÑ!DÀVÑ!KÑKÐØÐ!2°2Ñ!5°jÑ!@Ñ@ÐØÐ!<¸\Ñ!IÈ,Ñ!VÑVÐØÐ!DÑDÐØÐ!aÑaÐØ�AŠv˜!˜qš&Ø˜S“yÐ �yØ�a’˜A šF q¨¢s¨q°ªsØ—}‘} W¨q¡[Ô1Ð1Ð1Ø#×.Ñ.¨w¸©{Õ;Ð;Ð;Ø�a’˜A šFØ—}‘} UÖ+Ð+Ð+Ø�a’˜A šFØ—}‘} UÖ+Ð+Ð+Ø�a’Ø—}‘} \°1¡_°QÑ%6Ô7Ð7Ð7Ø#×.Ñ.¨|¸Q©¸qÑ/@ÖAÐAÐAØ�a’Ø—}‘} \°1¡_°QÑ%6Ô7Ð7Ð7Ø#×.Ñ.¨|¸Q©¸qÑ/@ÖAÐAÐAà—}‘} \°Q°q±SÑ%9Ô:Ð:Ð:Ø#×.Ñ.¨|¸qÀ¹sÑ/CÔDÐDÐDÜ$ Q°$Ô7�Ü%.¨q¸tÈtÔ%TÐ"Ø×*Ò*ºaÂÐ+BÔCÐCÐCØ)×4Ò4ÊÊ!Ð5LÔMÐMÐMØ#Ð%<¸XÑ%EÀjÑ%PÑPÐ#Ø#Ð%FÐGYÑ%YÐZfÑ%fÑfÐ#Ø#Ð%^Ñ^Ð#Ø#Ð%}Ñ}Ò#òE"	~ð#~ðH ÐÙÜÐ4°SÓ9ˆØ�	‰	Ð%Ô&Ø�	‰	�ð ùòG 4ùÓFs   ¶J ÁJÁJ ÊJ c                  óx  — t        dgg«      } d}d}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        ddgg«      } d}d}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d¢g«      } d}d}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d	¢g«      } d
}d
}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d¢g«      } d}d}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        dgdgg«      } d}d}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        ddgddgg«      } d}d}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d¢g d¢g«      } d}d}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d	¢g d¢g«      } d}d}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d¢g d¢g«      } d}d}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚d}d}t        | d¬«      |k(  sJ ‚t        | dd¬«      |k(  sJ ‚t        dgdgdgg«      } d}d}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        ddgddgddgg«      } d }d!}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d¢g d¢g d"¢g«      } d#}d$}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d	¢g d¢g d%¢g«      } d&}d'}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d¢g d¢g d(¢g«      } d)}d*}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚d+}d,}t        | d¬«      |k(  sJ ‚t        | dd¬«      |k(  sJ ‚t        dgdgdgdgg«      } d
}d
}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        ddgddgddgd-d.gg«      } d/}d0}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d¢g d¢g d"¢g d1¢g«      } d2}d3}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d	¢g d¢g d%¢g d4¢g«      } d5}d6}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        g d¢g d¢g d(¢g d7¢g«      } d8}d9}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚d:}d;}t        | d¬«      |k(  sJ ‚t        | dd¬«      |k(  sJ ‚t        dgdgdgdgdgg«      } d}d}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚t        ddgddgddgd-d.gd<d=gg«      } d>}d?}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚d@}dA}t        | d¬«      |k(  sJ ‚t        | dd¬«      |k(  sJ ‚t        g d¢g d¢g d"¢g d1¢g dB¢g«      } dC}dD}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚dE}dF}t        | d¬«      |k(  sJ ‚t        | dd¬«      |k(  sJ ‚t        g d	¢g d¢g d%¢g d4¢g dG¢g«      } dH}dI}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚dJ}dK}t        | d¬«      |k(  sJ ‚t        | dd¬«      |k(  sJ ‚t        g d¢g d¢g d(¢g d7¢g dL¢g«      } dM}dN}t        | «      |k(  sJ ‚t        | d¬«      |k(  sJ ‚dO}dP}t        | d¬«      |k(  sJ ‚t        | dd¬«      |k(  sJ ‚y )QNr   rß   TrÍ   r:   z
vec2(0, 1))r   r:   r8   zvec3(0, 1, 2))r   r:   r8   r9   zvec4(0, 1, 2, 3))r   r:   r8   r9   rz   zfloat[5](0, 1, 2, 3, 4)r8   r9   zmat2(0, 1, 2, 3)zmat2(0, 2, 1, 3))r9   rz   rŸ   zmat3x2(0, 1, 2, 3, 4, 5)zmat2x3(0, 3, 1, 4, 2, 5))rz   rŸ   r¥   rC   zmat4x2(0, 1, 2, 3, 4, 5, 6, 7)zmat2x4(0, 4, 1, 5, 2, 6, 3, 7))rŸ   r¥   rC   rÁ   rE   zBfloat[10](
   0, 1, 2, 3, 4,
   5, 6, 7, 8, 9
) /* a 2x5 matrix */zKfloat[10](
   0, 5,
   1, 6,
   2, 7,
   3, 8,
   4, 9
) /* a 5x2 matrix */zCfloat[2][5](
   float[](0, 1, 2, 3, 4),
   float[](5, 6, 7, 8, 9)
)zgfloat[5][2](
   float[](0, 5),
   float[](1, 6),
   float[](2, 7),
   float[](3, 8),
   float[](4, 9)
)rà   )rá   rÎ   rz   rŸ   zmat2x3(0, 1, 2, 3, 4, 5)zmat3x2(0, 2, 4, 1, 3, 5))r¥   rC   rÁ   zmat3(0, 1, 2, 3, 4, 5, 6, 7, 8)zmat3(0, 3, 6, 1, 4, 7, 2, 5, 8))rÁ   rE   rÌ   é   z0mat4x3(0, 1,  2,  3, 4, 5,  6,  7, 8, 9, 10, 11)z.mat3x4(0, 4,  8, 1, 5,  9, 2, 6, 10, 3, 7, 11))rÌ   rñ   é   é   é   zafloat[15](
   0,  1,  2,  3,  4,
   5,  6,  7,  8,  9,
   10, 11, 12, 13, 14
) /* a 3x5 matrix */z_float[15](
   0, 5, 10,
   1, 6, 11,
   2, 7, 12,
   3, 8, 13,
   4, 9, 14
) /* a 5x3 matrix */zmfloat[3][5](
   float[]( 0,  1,  2,  3,  4),
   float[]( 5,  6,  7,  8,  9),
   float[](10, 11, 12, 13, 14)
)z{float[5][3](
   float[](0, 5, 10),
   float[](1, 6, 11),
   float[](2, 7, 12),
   float[](3, 8, 13),
   float[](4, 9, 14)
)r¥   rC   zmat2x4(0, 1, 2, 3, 4, 5, 6, 7)zmat4x2(0, 2, 4, 6, 1, 3, 5, 7))rE   rÌ   rñ   z2mat3x4(0,  1,  2, 3,  4,  5, 6,  7,  8, 9, 10, 11)z-mat4x3(0, 3, 6,  9, 1, 4, 7, 10, 2, 5, 8, 11))rò   ró   rô   é   zDmat4( 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15)z<mat4(0, 4,  8, 12, 1, 5,  9, 13, 2, 6, 10, 14, 3, 7, 11, 15))rõ   é   é   rD   é   zxfloat[20](
   0,  1,  2,  3,  4,
   5,  6,  7,  8,  9,
   10, 11, 12, 13, 14,
   15, 16, 17, 18, 19
) /* a 4x5 matrix */zsfloat[20](
   0, 5, 10, 15,
   1, 6, 11, 16,
   2, 7, 12, 17,
   3, 8, 13, 18,
   4, 9, 14, 19
) /* a 5x4 matrix */z�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)
)z�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)
)rÁ   rE   zKfloat[10](
   0, 1,
   2, 3,
   4, 5,
   6, 7,
   8, 9
) /* a 5x2 matrix */zBfloat[10](
   0, 2, 4, 6, 8,
   1, 3, 5, 7, 9
) /* a 2x5 matrix */zgfloat[5][2](
   float[](0, 1),
   float[](2, 3),
   float[](4, 5),
   float[](6, 7),
   float[](8, 9)
)zCfloat[2][5](
   float[](0, 2, 4, 6, 8),
   float[](1, 3, 5, 7, 9)
))rò   ró   rô   zefloat[15](
   0,  1,  2,
   3,  4,  5,
   6,  7,  8,
   9, 10, 11,
   12, 13, 14
) /* a 5x3 matrix */zZfloat[15](
   0, 3, 6,  9, 12,
   1, 4, 7, 10, 13,
   2, 5, 8, 11, 14
) /* a 3x5 matrix */z…float[5][3](
   float[]( 0,  1,  2),
   float[]( 3,  4,  5),
   float[]( 6,  7,  8),
   float[]( 9, 10, 11),
   float[](12, 13, 14)
)zdfloat[3][5](
   float[](0, 3, 6,  9, 12),
   float[](1, 4, 7, 10, 13),
   float[](2, 5, 8, 11, 14)
))rö   r÷   rD   rø   zzfloat[20](
   0,  1,  2,  3,
   4,  5,  6,  7,
   8,  9, 10, 11,
   12, 13, 14, 15,
   16, 17, 18, 19
) /* a 5x4 matrix */zrfloat[20](
   0, 4,  8, 12, 16,
   1, 5,  9, 13, 17,
   2, 6, 10, 14, 18,
   3, 7, 11, 15, 19
) /* a 4x5 matrix */z™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)
)z…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)
))é   é   é   é   é   z�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 */z‡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 */z­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)
)z£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¡   r¨   rê   rë   rì   s        r*   Útest_misc_matsrþ   %  sX	  € ä
�1�#�‹-€Cà	€BØ€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
�1�a�&�Ó
€Cà	€BØ#€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
’)�Ó
€Cà	€BØ&€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
’,�Ó
 €Cà	€BØ)€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
’/Ð"Ó
#€Cà	&€BØ0€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ø€Ø€ðó €Cð 
€BØ#€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ø€A€Ø€A€ðó 	€Cð 
 €BØ)€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ú 	Ú 	ðó €Cð 
(€BØ1€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ú Ú ðó €Cð 
.€BØ7€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ú Ú ðó €Cð
€Bð€Lô �S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ð€HðÐô �S DÔ)¨XÒ5Ð5Ð5Ü�S D°tÔ<Ð@RÒRÐRÐRä
Ø€Ø€Ø€ðó €Cð
 
€BØ&€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ø€A€Ø€A€Ø€A€ðó 	€Cð
 
(€BØ1€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ú 	Ú 	Ú 	ðó €Cð
 
/€BØ8€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ú Ú Ú ðó €Cð
 
@€BØG€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ú Ú Ú ðó €Cð

€Bð
€Lô �S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ð€Hð
Ðô �S DÔ)¨XÒ5Ð5Ð5Ü�S D°tÔ<Ð@RÒRÐRÐRä
Ø€Ø€Ø€Ø€ð	ó €Cð 
 €BØ)€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ø€A€Ø€A€Ø€A€Ø€A€ð	ó 	€Cð 
.€BØ7€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ú Ú Ú Ú ð	ó €Cð 
B€BØF€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ú Ú Ú Ú ð	ó €Cð 
T€BØU€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ú Ú Ú Ú ð	ó €Cð
€Bð€Lô �S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ð€HðÐô �S DÔ)¨XÒ5Ð5Ð5Ü�S D°tÔ<Ð@RÒRÐRÐRä
Ø€Ø€Ø€Ø€Ø€ðó €Cð 
'€BØ0€Lä�S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ä
Ø€A€Ø€A€Ø€A€Ø€A€Ø€A€ðó 	€Cð
€Bð€Lô
 �S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ð€HðÐô
 �S DÔ)¨XÒ5Ð5Ð5Ü�S D°tÔ<Ð@RÒRÐRÐRä
Ú Ú Ú Ú Ú ðó €Cð
€Bð€Lô �S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ð€HðÐô �S DÔ)¨XÒ5Ð5Ð5Ü�S D°tÔ<Ð@RÒRÐRÐRä
Ú Ú Ú Ú Ú ðó €Cð
€Bð€Lô �S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ð€HðÐô �S DÔ)¨XÒ5Ð5Ð5Ü�S D°tÔ<Ð@RÒRÐRÐRä
Ú Ú Ú Ú Ú ðó €Cð
€Bð€Lô �S‹>˜RÒÐÐÜ�S tÔ,°Ò<Ð<Ð<ð€HðÐô �S DÔ)¨XÒ5Ð5Ð5Ü�S D°tÔ<Ð@RÒRÐRÑRr)   )RÚ
sympy.corer   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Úsympy.functionsr   r   r   r   r   r   r   Úsympy.testing.pytestr   r   Úsympy.printing.glslr   Úsympy.printing.strr   Úsympy.utilities.lambdifyr   Úsympy.tensorr   r   Úsympy.matricesr    r!   r"   r$   r³   r'   r1   r2   r+   r3   r5   r;   r=   r?   rA   rH   rM   rO   rX   rZ   r\   rf   rh   rn   rx   r}   r�   rŠ   rŒ   r”   r–   rœ   r¢   r©   r­   r±   rµ   r»   r¿   rÂ   rÆ   rÊ   rÝ   rï   rþ   r(   r)   r*   ú<module>r     s  ð÷H÷ H÷ H÷ Hñ Hç H× HÑ Hß ?Ý +Ý )Ý 9ß )ß /Ý Ý )Û á
�'Ó
�€€1€aò)òIò+ò)ò+ò9òVò4ò*ò
@òò )ò
5ò0ò2òCòò"òò.òò.ò8ò:-)ò`)
òV@òDò
Rò
òòòò ;ò
ò.
Zò*ó^ASr)   