a
    kh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&   L/var/www/auris/lib/python3.9/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s4J t ttt  dddksPJ t ttt  dddkslJ t ttttd    dddksJ t t t ddd	d
ksJ t t t dddksJ 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)   Z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   s    r/   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stJ ttd	 d
ksJ 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,   )r0   r&   r&   r'   test_glsl_code_Pow#   s    *r4   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sBJ t tttdksXJ t tttdksnJ t tttdksJ 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    r5   c                   C   s(   t tddksJ t tdks$J d S )Nr3   zfloat E = 2.71828183;
Ezfloat pi = 3.14159265;
pi)r#   r   r   r&   r&   r&   r'   test_glsl_code_constants_mathh5   s    r6   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 )Nr1   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<   s    r7   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sBJ t td	ddksXJ d S )
Nr2      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   Z67z-1)r#   r   r&   r&   r&   r'   test_glsl_code_IntegerI   s    r@   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    rA   c                  C   s   t d} tdt| d|  }t|| dks0J 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sJ d S )Nr%   r0   r1   z2*xz(float Catalan = 0.915965594;
2*x/CatalanAinTintegerr3   	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%   r0   rB   rC   r&   r&   r'   test_glsl_code_inline_functionR   s     rI   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   s    rJ   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sRJ t ttB tB dksjJ t tt@ tB dksJ t ttB t@ dksJ 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    rK   c                     s   t ttdk ftd df t } d}| |ks2J t dddksFJ 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 )Nr3   r1   Tz)((x < 1) ? (
   x
)
: (
   pow(x, 2.0)
))crG   z5if (x < 1) {
   c = x;
}
else {
   c = pow(x, 2.0);
}r   c                      s   t  S Nr"   r&   exprr&   r'   <lambda>       z*test_glsl_code_Piecewise.<locals>.<lambda>)r   r%   r#   r   r   
ValueErrorpsr&   rN   r'   test_glsl_code_Piecewiseq   s    	
,rV   c                  C   s6   t dtttdk ftd df } d}| |ks2J d S )Nr1   r3   Tz+2*((x < 1) ? (
   x
)
: (
   pow(x, 2.0)
)))r#   r   r%   rS   r&   r&   r'   test_glsl_code_Piecewise_deep   s    "	rW   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'   rP      rQ   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s`J td	||f }||d
|| |  ksJ td|||f }	||	d|| | ||  |  ksJ |jt ksJ d S )Nzn m oTrE   rC   jkr%   zx[j]rB   zA[%s]BzB[%s])r   r   r   setZ_not_cr   Z_print_Indexed)
rD   morC   r\   r]   rT   r%   rB   r^   r&   r&   r'   test_glsl_code_Indexed   s    "*rb   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sDJ t g dt tddd	ksdJ td
d	d} t | d | d gsJ d S )N)r3   r1   r2      zvec4(1, 2, 3, 4)r3   r1   r2   F)
glsl_typeszfloat[3](1, 2, 3)r3   r1   r2   rB   rc   r   )r#   r!   r    )r`   r&   r&   r'   test_glsl_code_list_tuple_Tuple   s     rf   c            	      C   sp   t ddd\} }td}td}td}td|}td| }d	}t|||f ||  || d
}||kslJ d S )Nn mTrE   rB   r%   r,   rC   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];
   }
}rG   r   r   r   r#   )	rD   r`   rB   r%   r,   rC   r\   rU   rL   r&   r&   r'   "test_glsl_code_loops_matrix_vector   s    

 ri   c                  C   sd   t ddtd\} }td}td}t| |} d| jj|jd }t||  ||  d}||ks`J d S )	Nzi mT)rF   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];
})ZicountZmcountrG   )r   r
   r   r   labelZdummy_indexr#   )rC   r`   r%   r,   expectedcoder&   r&   r'   test_dummy_loops   s    
rn   c            
      C   s   t ddd\} }td}td}td}td}td|}td	| }d
}t|||f ||  ||  ||  || d}	|	|ksJ d S )Nrg   TrE   rB   r%   r,   r-   rC   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];
   }
}rG   rh   )
rD   r`   rB   r%   r,   r-   rC   r\   rU   rL   r&   r&   r'   test_glsl_code_loops_add   s    


0ro   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sJ d S )Nn m o pTrE   abr,   rC   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];
         }
      }
   }
}rG   rh   )rD   r`   ra   rT   rq   rr   r,   rC   r\   r]   rs   rU   rL   r&   r&   r'   *test_glsl_code_loops_multiple_contractions   s     



>*ru   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sJ d S )Nrp   TrE   rq   rr   rL   r,   rC   r\   r]   rs   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];
rt   rG   rh   )rD   r`   ra   rT   rq   rr   rL   r,   rC   r\   r]   rs   rU   r&   r&   r'   test_glsl_code_loops_addfactor  s"    



d:rv   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 )Nrp   TrE   rq   rr   rL   r,   rC   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];
rG   r?   rh   )rD   r`   ra   rT   rq   rr   rL   r,   rC   r\   r]   s0s1s2Zs3r&   r&   r'   #test_glsl_code_loops_multiple_terms*  sT    





Jrz   c                  C   s:  t tt tdt tdkftdfttg} tddd}t| |ddksLJ tt |d |d gshJ td|d	  tdkf|d	 dft|d
  |d  }t|dksJ 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s6J d S )Nr1   r   TrB   r2   r3   rG   z\A[0][0] = x*y;
if (y > 0) {
   A[1][0] = x + 2;
}
else {
   A[1][0] = y;
}
A[2][0] = sin(z);)r1   r   )r3   r   )r   r   zF((x > 0) ? (
   2*A[2][0]
)
: (
   A[2][0]
)) + sin(A[1][0]) + A[0][0]q   M)r2   r   )rc   r   rc   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   )matrB   rO   r{   r}   r`   r&   r&   r'   test_Matrix_printingZ  s&    ,
	6	$r   c                  C   s8   t } tg d}| |dks J | | dks4J d S )Nr3   r1   r2   rc   r|      r8   zfloat[7](1, 2, 3, 4, 5, 6, 7))r#   r   	transposeglrB   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 cZAbcTypeF)r   re   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s2J d S )Nr   zx.a x.b x.c x.d x.e x.f x.grG   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   rB   rH   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s2J d S )N)rd   rd   r   x y zrG   Y        a = 1;
        b = 2;
        c = 3;
        x = 1;
        y = 2;
        z = 3;r#   r   r   r   r   rO   rH   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sNJ d S )Nza b c x y z)r3   r1   r2   r   rG   r   r   )	r   rq   rr   rL   r%   r,   r-   rO   rH   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 s40    Y  tdtdtdtdf}| ||td	ksrJ d S )
Nr   )r2   rc   )r|   r   )r8      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
    2r   c                      s$   dt d tt fdd d S )Nr   r   c                      s
   t  S rM   r"   r&   rH   rO   r&   r'   rP     rQ   z?test_cannot_assign_to_cause_mismatched_length.<locals>.<lambda>)r   r   rR   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sNJ d S )NrB   rc   r^   CXrG   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 ]}tt|}| | | |ks6J | |dd| |ksNJ |dkr|dkr| |d|ddd	 t|D f ksJ q| |d
|ddd	 t|D f ksJ qd S )Nr3   
   Tmat_transposerc   z	vec%s(%s)z, c                 s   s   | ]}t |V  qd S rM   str.0rU   r&   r&   r'   	<genexpr>  rQ   z test_1xN_vecs.<locals>.<genexpr>zfloat[%s](%s)c                 s   s   | ]}t |V  qd S rM   r   r   r&   r&   r'   r     rQ   )r#   ranger   r   join)r   rC   rB   r&   r&   r'   test_1xN_vecs  s    .r   c            	         s  d} t ddD ]h}t ddD ]V 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sJ q|dkr dkr|dkr dkr|d  sJ |d| svJ q|dkr. dkr.|dsvJ q dkrT|dkrT|dsvJ q|dkr|d  | svJ |d  | svJ q dkr|d|   sJ |d|   svJ q|d|   sJ |d|   sJ t|dd}t|ddd}|d| f s.J |d |f sFJ | d| d 7 } | d| d 7 } | d7 } | d7 } qqd}|rtdd}||  |  d S )Nzdef test_misc_mats():
r3   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>  rQ   z,test_MxN_mats.<locals>.<listcomp>.<listcomp>)r   )r   r\   )r,   r'   r     rQ   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
0rc   zmat%sZ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   Z_print
startswithopenwriteclose)	ZgeneratedAssertionsrC   rB   r   glTransposedglNestedglNestedTransposedZgenerateAssertionsgenr&   r   r'   test_MxN_mats  sR    (



r   c                  C   s  t dgg} d}d}t| |ks$J t| dd|ks8J t ddgg} d}d}t| |ks^J t| dd|ksrJ t g dg} d}d}t| |ksJ t| dd|ksJ t g d	g} d
}d
}t| |ksJ t| dd|ksJ t g dg} d}d}t| |ksJ t| dd|ks$J t dgdgg} d}d}t| |ksNJ t| dd|ksdJ 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s0J t g dg dg} d}d}t| |ks^J t| dd|kstJ d}d}t| dd|ksJ t| ddd|ksJ t dgdgdgg} d}d}t| |ksJ t| dd|ksJ t ddgddgddgg} d }d!}t| |ks"J t| dd|ks8J t g dg dg d"g} d#}d$}t| |kslJ 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s J t| dd|ksJ d+}d,}t| dd|ks4J t| ddd|ksLJ t dgdgdgdgg} d
}d
}t| |ks~J t| dd|ksJ t ddgddgddgd-d.gg} d/}d0}t| |ksJ t| dd|ksJ t g dg dg d"g d1g} d2}d3}t| |ksJ t| dd|ks4J t g d	g dg d%g d4g} d5}d6}t| |ksnJ 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s
J t dgdgdgdgdgg} d}d}t| |ks@J t| dd|ksVJ t ddgddgddgd-d.gd<d=gg} d>}d?}t| |ksJ t| dd|ksJ d@}dA}t| dd|ksJ t| ddd|ksJ t g dg dg d"g d1g dBg} dC}dD}t| |ks"J t| dd|ks8J dE}dF}t| dd|ksVJ t| ddd|ksnJ 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sPJ dO}dP}t| dd|ksnJ t| ddd|ksJ d S )QNr   r   Tr   r3   z
vec2(0, 1))r   r3   r1   zvec3(0, 1, 2))r   r3   r1   r2   zvec4(0, 1, 2, 3))r   r3   r1   r2   rc   zfloat[5](0, 1, 2, 3, 4)r1   r2   zmat2(0, 1, 2, 3)zmat2(0, 2, 1, 3))r2   rc   r|   zmat3x2(0, 1, 2, 3, 4, 5)zmat2x3(0, 3, 1, 4, 2, 5))rc   r|   r   r8   zmat4x2(0, 1, 2, 3, 4, 5, 6, 7)zmat2x4(0, 4, 1, 5, 2, 6, 3, 7))r|   r   r8   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   rc   r|   zmat2x3(0, 1, 2, 3, 4, 5)zmat3x2(0, 2, 4, 1, 3, 5))r   r8   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   r8   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         r9      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   r9   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   )RZ
sympy.corer   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   Zsympy.functionsr   r   r   r   r   r   r   Zsympy.testing.pytestr   r   Zsympy.printing.glslr   Zsympy.printing.strr   Zsympy.utilities.lambdifyr   Zsympy.tensorr   r   Zsympy.matricesr   r    r!   r#   r   r%   r,   r-   r(   r.   r/   r4   r5   r6   r7   r=   r@   rA   rI   rJ   rK   rV   rW   r[   rb   rf   ri   rn   ro   ru   rv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r&   r&   r'   <module>   s`   D$			
	0+/