o
    oho                     @   s  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d Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd Z3dd Z4dd Z5dd  Z6d!d" Z7d#d$ Z8d%d& Z9d'd( Z:d)d* Z;d+d, Z<d-d. Z=d/d0 Z>d1d2 Z?d3d4 Z@d5d6 ZAd7d8 ZBd9d: ZCd;d< ZDd=d> ZEd?d@ ZFdAdB ZGdCdD ZHdEdF ZIdGdH ZJdIdJ ZKdKdL ZLdMdN ZMdOdP ZNdQdR ZOdSdT ZPdUdV ZQdS )W    )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                   C   s   t ttdks
J d S )Nabs(x))r#   r   x r&   r&   r/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/printing/tests/test_glsl.pytest_printmethod   s   r(   c                   C   s   t tt dddksJ t tt t dddksJ t ttt  dddks(J t ttt  dddks6J t ttttd    dddksHJ t t t ddd	d
ksVJ t t t dddkscJ d S )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&   r'   test_print_without_operators   s   $r/   c                   C   s@   t ttdks
J t td dksJ t ttdksJ d S )Nzsqrt(x)r*   )r#   r   r%   r&   r&   r&   r'   test_glsl_code_sqrt      r0   c                  C   s   t dttdt } ttd dksJ tttd  dks J td| td ttt    td t  dks:J ttd	 d
ksDJ d S )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#   r-   )r2   r&   r&   r'   test_glsl_code_Pow#   s   *r6   c                   C   s   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s7J t tttdksBJ d S )Nzx == yzx != yzx <= yzx < yzx > yzx >= y)	r#   r   r%   r-   r   r   r   r   r   r&   r&   r&   r'   test_glsl_code_Relational,   s   r7   c                   C   s(   t tddks
J t tdksJ d S )Nr5   zfloat E = 2.71828183;
Ezfloat pi = 3.14159265;
pi)r#   r   r   r&   r&   r&   r'   test_glsl_code_constants_mathh5   s   r8   c                   C   s@   t dt dks
J t dt dksJ t dt dksJ d S )Nr3   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&   r'   test_glsl_code_constants_other<   r1   r9   c                   C   s\   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 d S )
Nr4      z3.0/7.0   	   2iz-3.0/7.0)r#   r   r&   r&   r&   r'   test_glsl_code_RationalB   s   r?   c                   C   s,   t tddks
J t tddksJ d S )NC   67z-1)r#   r   r&   r&   r&   r'   test_glsl_code_IntegerI      rC   c                   C   s    t tttt dksJ d S )Nzpow(sin(x), cos(x)))r#   r   r%   r   r&   r&   r&   r'   test_glsl_code_functionsN   s    rE   c                  C   s   t d} tdt| d|  }t|| dksJ tdt| d|  t }t|| dks.J td}tdt dd	d
}tdt| | d|   d|   }t||| || ddks[J d S )Nr%   r2   r3   z2*xz(float Catalan = 0.915965594;
2*x/CatalanAinTintegerr5   	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%   r2   rF   rG   r&   r&   r'   test_glsl_code_inline_functionR   s    rM   c                   C   s,   t ttdks
J t ttdksJ d S )Nzceil(x)r$   )r#   r   r%   r   r&   r&   r&   r'   test_glsl_code_exceptionsb   rD   rN   c                   C   s   t tt@ dks
J t ttB dksJ t t dksJ t tt@ t@ dks)J t ttB tB dks5J t tt@ tB dksAJ t ttB t@ dksMJ d S )Nzx && yzx || yz!xzx && y && zzx || y || zzz || x && yzz && (x || y)r,   r&   r&   r&   r'   test_glsl_code_booleang   s   rO   c                     s   t ttdk ftd df t } d}| |ksJ t dddks#J t ttdk ftd tdkftttdkf tt fd	d
 d S )Nr5   r3   Tz)((x < 1) ? (
   x
)
: (
   pow(x, 2.0)
))crK   z5if (x < 1) {
   c = x;
}
else {
   c = pow(x, 2.0);
}r   c                      s   t  S Nr"   r&   exprr&   r'   <lambda>   s    z*test_glsl_code_Piecewise.<locals>.<lambda>)r   r%   r#   r   r   
ValueErrorpsr&   rR   r'   test_glsl_code_Piecewiseq   s   	
,rY   c                  C   s6   t dtttdk ftd df } d}| |ksJ d S )Nr3   r5   Tz+2*((x < 1) ? (
   x
)
: (
   pow(x, 2.0)
)))r#   r   r%   rV   r&   r&   r'   test_glsl_code_Piecewise_deep   s   "	rZ   c                   C   s   t tdd  d S )Nc                   S   s   t ttddS )Ngarbage)method)r#   r   r%   r&   r&   r&   r'   rT      s    z)test_glsl_code_settings.<locals>.<lambda>)r   	TypeErrorr&   r&   r&   r'   test_glsl_code_settings   s   r^   c            
      C   s   t ddd\} }}td| td|td|}}}t }t |_td| }||dks0J td	||f }||d
|| |  ksGJ td|||f }	||	d|| | ||  |  kseJ |jt ksmJ d S )Nzn m oTrI   rG   jkr%   zx[j]rF   zA[%s]BzB[%s])r   r   r   set_not_cr   _print_Indexed)
rH   morG   r_   r`   rW   r%   rF   ra   r&   r&   r'   test_glsl_code_Indexed   s   "*rg   c                  C   s   t g ddks
J t g ddddksJ t g dt dks"J t g dt tddd	ks2J td
d	d} t | d | d gsDJ d S )N)r5   r3   r4      zvec4(1, 2, 3, 4)r5   r3   r4   F)
glsl_typeszfloat[3](1, 2, 3)r5   r3   r4   rF   rh   r   )r#   r!   r    )re   r&   r&   r'   test_glsl_code_list_tuple_Tuple   s    rk   c            	      C   sp   t ddd\} }td}td}td}td|}td| }d	}t|||f ||  || d
}||ks6J d S )Nn mTrI   rF   r%   r-   rG   r_   zfor (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];
   }
}rK   r   r   r   r#   )	rH   re   rF   r%   r-   rG   r_   rX   rP   r&   r&   r'   "test_glsl_code_loops_matrix_vector   s   

 rn   c                  C   sd   t ddtd\} }td}td}t| |} d| jj|jd }t||  ||  d}||ks0J d S )	Nzi mT)rJ   clsr%   r-   zlfor (int i_%(icount)i=0; i_%(icount)i<m_%(mcount)i; i_%(icount)i++){
   y[i_%(icount)i] = x[i_%(icount)i];
})icountmcountrK   )r   r
   r   r   labeldummy_indexr#   )rG   re   r%   r-   expectedcoder&   r&   r'   test_dummy_loops   s   
rv   c            
      C   s   t ddd\} }td}td}td}td}td|}td	| }d
}t|||f ||  ||  ||  || d}	|	|ksBJ d S )Nrl   TrI   rF   r%   r-   r.   rG   r_   zfor (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];
   }
}rK   rm   )
rH   re   rF   r%   r-   r.   rG   r_   rX   rP   r&   r&   r'   test_glsl_code_loops_add   s   

0
rw   c                  C   s   t ddd\} }}}td}td}td}td|}td| }td	|}	td
|}
d||  | | || |  |	|  |
 || | |	|  |
 f d }t|||	|
f ||||	|
f  || d}||ksiJ d S )Nn m o pTrI   abr-   rG   r_   r`   lzfor (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];
         }
      }
   }
}rK   rm   )rH   re   rf   rW   ry   rz   r-   rG   r_   r`   r{   rX   rP   r&   r&   r'   *test_glsl_code_loops_multiple_contractions   s    



>*r}   c                  C   s  t ddd\} }}}td}td}td}td}td|}td	| }	td
|}
td|}d||  | | |	| |  |
|  | ||  | | |	| |  |
|  | |	| | |
|  | f d }t|||	|
|f |||	|
|f  ||	|
|f  || d}||ksJ d S )Nrx   TrI   ry   rz   rP   r-   rG   r_   r`   r{   zfor (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];
r|   rK   rm   )rH   re   rf   rW   ry   rz   rP   r-   rG   r_   r`   r{   rX   r&   r&   r'   test_glsl_code_loops_addfactor  s"   



d:r~   c                  C   s  t ddd\} }}}td}td}td}td}td|}td	| }	td
|}
d}d||  | |	|  |
  d }d|| |
  d }d||  |	  d }t||	 |||	f  ||
 |||
f   ||	 ||
  |||	|
f   || d}||| | |d d  ks||| | |d d  ks||| | |d d  ks||| | |d d  ks||| | |d d  ks||| | |d d  ksJ d S d S d S d S d S d S )Nrx   TrI   ry   rz   rP   r-   rG   r_   r`   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];
rK   rB   rm   )rH   re   rf   rW   ry   rz   rP   r-   rG   r_   r`   s0s1s2s3r&   r&   r'   #test_glsl_code_loops_multiple_terms*  sV   





J r   c                  C   s8  t tt tdt tdkftdfttg} tddd}t| |ddks&J tt |d |d gs4J td|d	  tdkf|d	 dft|d
  |d  }t|dksWJ 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sJ d S )Nr3   r   TrF   r4   r5   rK   z\A[0][0] = x*y;
if (y > 0) {
   A[1][0] = x + 2;
}
else {
   A[1][0] = y;
}
A[2][0] = sin(z);)r3   r   )r5   r   )r   r   zF((x > 0) ? (
   2*A[2][0]
)
: (
   A[2][0]
)) + sin(A[1][0]) + A[0][0]q   M)r4   r   )rh   r   rh   zM[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%   r-   r   r   r.   r    r#   r   r   )matrF   rS   r   r   re   r&   r&   r'   test_Matrix_printingZ  s&   ,
	6	$r   c                  C   s8   t } tg d}| |dksJ | | dksJ d S )Nr5   r3   r4   rh   r      r:   zfloat[7](1, 2, 3, 4, 5, 6, 7))r#   r   	transposeglrF   r&   r&   r'   test_Matrices_1x7  s   r   c                  C   s(   t } tg d}| |dddksJ d S )Nr   int)
array_typezint[7](1, 2, 3, 4, 5, 6, 7))r#   r   r   r&   r&   r'    test_Matrices_1x7_array_type_int  s   r   c                  C   s&   t } td}| |ddddksJ d S )Na b cAbcTypeF)r   rj   zAbcType[3](a, b, c))r#   r   r   r&   r&   r'   test_Tuple_array_type_custom  s   r   c                  C   s6   t } tg d}td}| ||dtdksJ d S )Nr   zx.a x.b x.c x.d x.e x.f x.grK   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   rF   rL   r&   r&   r'   *test_Matrices_1x7_spread_assign_to_symbols  s   r   c                  C   s6   t } d}tdtdf}| ||dtdksJ d S )N)ri   ri   r   x y zrK   Y        a = 1;
        b = 2;
        c = 3;
        x = 1;
        y = 2;
        z = 3;r#   r   r   r   r   rS   rL   r&   r&   r'   $test_spread_assign_to_nested_symbols  s   r   c            	      C   sR   t } td\}}}}}}d}||f|f||f|ff}| ||dtdks'J d S )Nza b c x y z)r5   r3   r4   r   rK   r   r   )	r   ry   rz   rP   r%   r-   r.   rS   rL   r&   r&   r'   +test_spread_assign_to_deeply_nested_symbols  s
   r   c                  C   sv   t } t  tddgddgg}W d    n1 sw   Y  tdtdtdtdf}| ||td	ks9J d S )
Nr   )r4   rh   )r   r   )r:      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   r&   r&   r'   .test_matrix_of_tuples_spread_assign_to_symbols  s   r   c                      s$   dt d tt fdd d S )Nr   r   c                      s
   t  S rQ   r"   r&   rL   rS   r&   r'   rT     s   
 z?test_cannot_assign_to_cause_mismatched_length.<locals>.<lambda>)r   r   rU   r&   r&   r   r'   -test_cannot_assign_to_cause_mismatched_length  s   r   c                  C   sR   t } tdddtddd tddd }tddd}| ||dtdks'J d S )NrF   rh   ra   CXrK   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   r&   r&   r'   test_matrix_4x4_assign  s   $r   c               	   C   s   t } tddD ]U}tt|}| | | |ksJ | |dd| |ks'J |dkr\|dkrF| |d|ddd	 t|D f ksEJ q| |d
|ddd	 t|D f ks\J qd S )Nr5   
   Tmat_transposerh   z	vec%s(%s)z, c                 s       | ]}t |V  qd S rQ   str.0rX   r&   r&   r'   	<genexpr>      z test_1xN_vecs.<locals>.<genexpr>zfloat[%s](%s)c                 s   r   rQ   r   r   r&   r&   r'   r     r   )r#   ranger   r   join)r   rG   rF   r&   r&   r'   test_1xN_vecs  s   .,r   c            	         s  d} t ddD ]!}t ddD ] t fddt |D }t|}t|dd}| dt | d	 7 } | d
| d 7 } | d| d 7 } | d7 } | d7 } |dkr\ dkr\|dks[J q|dkr dkr|dkr dkr|d  suJ |d| s~J q|dkr dkr|dsJ q dkr|dkr|dsJ q|dkr|d  | sJ |d  | sJ q dkr|d|   sJ |d|   sJ q|d|   sJ |d|   sJ t|dd}t|ddd}|d| f sJ |d |f sJ | d| d 7 } | d| d 7 } | d7 } | d7 } qqd}|r?tdd}||  |  d S d S )Nzdef test_misc_mats():
r5   r   c                    s$   g | ]  fd dt D qS )c                    s   g | ]}|   qS r&   r&   )r   r%   )r_   r-   r&   r'   
<listcomp>  s    z,test_MxN_mats.<locals>.<listcomp>.<listcomp>)r   )r   r_   )r-   r'   r     s   $ z!test_MxN_mats.<locals>.<listcomp>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
0rh   zmat%svecz
float[%s](
mat_nested)r   r   zfloat[%s][%s]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)	generatedAssertionsrG   rF   r   glTransposedglNestedglNestedTransposedgenerateAssertionsgenr&   r   r'   test_MxN_mats  sV    
#

r   c                  C   sz  t dgg} d}d}t| |ksJ t| dd|ksJ t ddgg} d}d}t| |ks/J t| dd|ks9J t g dg} d}d}t| |ksLJ t| dd|ksVJ t g d	g} d
}d
}t| |ksiJ t| dd|kssJ t g dg} d}d}t| |ksJ t| dd|ksJ t dgdgg} d}d}t| |ksJ t| dd|ksJ t ddgddgg} d}d}t| |ksJ t| dd|ksJ t g dg dg} d}d}t| |ksJ t| dd|ksJ t g d	g dg} d}d}t| |ksJ t| dd|ksJ t g dg dg} d}d}t| |ks'J t| dd|ks2J d}d}t| dd|ksAJ t| ddd|ksMJ t dgdgdgg} d}d}t| |ksdJ t| dd|ksoJ t ddgddgddgg} d }d!}t| |ksJ t| dd|ksJ t g dg dg d"g} d#}d$}t| |ksJ t| dd|ksJ t g d	g dg d%g} d&}d'}t| |ksJ t| dd|ksJ t g dg dg d(g} d)}d*}t| |ksJ t| dd|ksJ d+}d,}t| dd|ksJ t| ddd|ksJ t dgdgdgdgg} d
}d
}t| |ks7J t| dd|ksBJ t ddgddgddgd-d.gg} d/}d0}t| |ks_J t| dd|ksjJ t g dg dg d"g d1g} d2}d3}t| |ksJ t| dd|ksJ t g d	g dg d%g d4g} d5}d6}t| |ksJ t| dd|ksJ t g dg dg d(g d7g} d8}d9}t| |ksJ t| dd|ksJ d:}d;}t| dd|ksJ t| ddd|ksJ t dgdgdgdgdgg} d}d}t| |ksJ t| d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sCJ t| dd|ksNJ d@}dA}t| dd|ks]J t| ddd|ksiJ t g dg dg d"g d1g dBg} dC}dD}t| |ksJ t| dd|ksJ dE}dF}t| dd|ksJ t| ddd|ksJ t g d	g dg d%g d4g dGg} dH}dI}t| |ksJ t| dd|ksJ dJ}dK}t| dd|ksJ t| ddd|ksJ t g dg dg d(g d7g dLg} dM}dN}t| |ksJ t| dd|ks J dO}dP}t| dd|ks/J t| ddd|ks;J d S )QNr   r   Tr   r5   z
vec2(0, 1))r   r5   r3   zvec3(0, 1, 2))r   r5   r3   r4   zvec4(0, 1, 2, 3))r   r5   r3   r4   rh   zfloat[5](0, 1, 2, 3, 4)r3   r4   zmat2(0, 1, 2, 3)zmat2(0, 2, 1, 3))r4   rh   r   zmat3x2(0, 1, 2, 3, 4, 5)zmat2x3(0, 3, 1, 4, 2, 5))rh   r   r   r:   zmat4x2(0, 1, 2, 3, 4, 5, 6, 7)zmat2x4(0, 4, 1, 5, 2, 6, 3, 7))r   r   r:   r   r<   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   rh   r   zmat2x3(0, 1, 2, 3, 4, 5)zmat3x2(0, 2, 4, 1, 3, 5))r   r:   r   zmat3(0, 1, 2, 3, 4, 5, 6, 7, 8)zmat3(0, 3, 6, 1, 4, 7, 2, 5, 8))r   r<   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   r:   zmat2x4(0, 1, 2, 3, 4, 5, 6, 7)zmat4x2(0, 2, 4, 6, 1, 3, 5, 7))r<   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         r;      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 */zfloat[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)
)zfloat[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   r<   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 */zfloat[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   r;   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 */zfloat[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)
)zfloat[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)
))               zfloat[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 */zfloat[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 */zfloat[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)
)zfloat[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   r&   r&   r'   test_misc_mats%  s  r   )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%   r-   r.   r(   r/   r0   r6   r7   r8   r9   r?   rC   rE   rM   rN   rO   rY   rZ   r^   rg   rk   rn   rv   rw   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r&   r&   r'   <module>   sb   D $			
	0+/