
    g<                        d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	 d dl
mZmZmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZ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/m0Z0m1Z1 d d	l2m3Z3m4Z4m5Z5m6Z6m7Z7 d d
l8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z? d dl>m@Z@  ed          xZAZBeBrd dlCZCdeCjD        d<    e6ddd          ZE e6ddd          ZF e6ddd          ZG e6ddd          ZH ed          \  ZIZJZKZLeA7d  eMd dd          D             ZNeAO                    eN          ZP e.eN          ZQd+dZRd+dZSd ZTd fdZUd  fd!ZVd" ZWe@d#             ZXd$ ZYd% ZZe@d&             Z[d' Z\d( Z]d) Z^d* Z_dS ),    N)
Derivative)symbols)ArrayTensorProductArrayAddPermuteDimsArrayDiagonal)EqNeGeGtLeLt)import_module)Absceilingexpfloorsignsinasinsqrtcosacostanatanatan2coshacoshsinhasinhtanhatanhreimargerfloggammalog)Matrix
MatrixBaseeye
randMatrix)DeterminantHadamardProductInverseMatrixSymbolTrace)tensorflow_code)convert_matrix_to_array)lambdify)skip)XFAIL
tensorflow2TF_CPP_MIN_LOG_LEVELM   NPQzx y z tc           	      N    g | ]"}t          t          ||d z                       #S )r;   )listrange.0is     `/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/printing/tests/test_tensorflow.py
<listcomp>rF   &   s,    
7
7
714a1
7
7
7    	   Fc                 L   t          | |d          }|sd | D             }nd | D             }t                                          }d }|                                5  d |D             }t          j        j                            |          }|                     ||           }d d d            n# 1 swxY w Y   |                    t          t          | |                              }	|	                                }	|	j        r=t          |	t                    s|	                                }	|	                                }	|s||	k                                    sJ d S d |D             }d |	D             }	t#          d t          ||	          D                       sJ d S )	Nr7   c                 B    g | ]}t          |j        |j                  S  r,   rowscolsrC   vs     rE   rF   z._compare_tensorflow_matrix.<locals>.<listcomp>.   s&    III!:afaf55IIIrG   c                 H    g | ]}t          |j        |j                  d z   S )g      Y@rL   rO   s     rE   rF   z._compare_tensorflow_matrix.<locals>.<listcomp>0   s+    NNNq:afaf55d:NNNrG   c                 F    g | ]}t          t          |                    S rK   evalr2   rB   s     rE   rF   z._compare_tensorflow_matrix.<locals>.<listcomp>5   (    NNND!3!344NNNrG   graphc                     g | ]	}|D ]}|
S rK   rK   rC   rowrD   s      rE   rF   z._compare_tensorflow_matrix.<locals>.<listcomp>C   %    )))3S))Q))))rG   c                     g | ]	}|D ]}|
S rK   rK   rY   s      rE   rF   z._compare_tensorflow_matrix.<locals>.<listcomp>D   r[   rG   c              3      K   | ]L\  }}t          ||z
            d dt          t          t          |          d                     z
   z  k     V  MdS 
      Nabsintr(   rC   abs      rE   	<genexpr>z-_compare_tensorflow_matrix.<locals>.<genexpr>E   q       L L9=AC!HHrQs3s1vvr??333444L L L L L LrG   r4   tfGraph
as_defaultcompatv1Sessionrunsubsdictzipdoit	is_Matrix
isinstancer*   as_explicittolistall
	variablesexpr	use_floatfrandom_matricesrW   rrandom_variablessessiones
             rE   _compare_tensorflow_matrixr   +   s   D,//A OIIyIIINNINNNHHJJEA					 . .NNoNNN),&&U&33KK+,--. . . . . . . . . . . . . . .
 			$s9o667788A	A{ !Z(( 	 AHHJJ LQ||~~))!)))))!))) L LADQL L L L L 	L 	L 	L 	L 	L   A
B22B69B6c                 L   t          | |d          }|sd | D             }nd | D             }t                                          }d }|                                5  d |D             }t          j        j                            |          }|                     ||           }d d d            n# 1 swxY w Y   |                    t          t          | |                              }	|	                                }	|	j        r=t          |	t                    s|	                                }	|	                                }	|s||	k                                    sJ d S d |D             }d |	D             }	t#          d t          ||	          D                       sJ d S )	Nr7   c                 H    g | ]}t          |j        |j                  d z   S )r`   r+   rM   rN   rO   s     rE   rF   z6_compare_tensorflow_matrix_inverse.<locals>.<listcomp>N   s+    DDDQ3qvqv..q0DDDrG   c                 H    g | ]}t          |j        |j                  d z   S )gQ	@r   rO   s     rE   rF   z6_compare_tensorflow_matrix_inverse.<locals>.<listcomp>P   s+    GGG3qvqv..t3GGGrG   c                 F    g | ]}t          t          |                    S rK   rS   rB   s     rE   rF   z6_compare_tensorflow_matrix_inverse.<locals>.<listcomp>U   rU   rG   rV   c                     g | ]	}|D ]}|
S rK   rK   rY   s      rE   rF   z6_compare_tensorflow_matrix_inverse.<locals>.<listcomp>c   r[   rG   c                     g | ]	}|D ]}|
S rK   rK   rY   s      rE   rF   z6_compare_tensorflow_matrix_inverse.<locals>.<listcomp>d   r[   rG   c              3      K   | ]L\  }}t          ||z
            d dt          t          t          |          d                     z
   z  k     V  MdS r^   ra   rd   s      rE   rg   z5_compare_tensorflow_matrix_inverse.<locals>.<genexpr>e   rh   rG   ri   rz   s
             rE   "_compare_tensorflow_matrix_inverser   K   s   D,//A HDD)DDDGGYGGGHHJJEA					 . .NNoNNN),&&U&33KK+,--. . . . . . . . . . . . . . .
 			$s9o667788A	A{ !Z(( 	 AHHJJ LQ||~~))!)))))!))) L LADQL L L L L 	L 	L 	L 	L 	Lr   c                    t          | |d          }d | D             }t                                          }d }|                                5  d |D             }t          j        j                            |          }|                     ||           }d d d            n# 1 swxY w Y   |                    t          t          | |                              }|                                }t          ||z
            dk     sJ d S )Nr7   c                 l    g | ]1}t          |j        |j                                                  d z  2S )d   )r,   rM   rN   evalfrO   s     rE   rF   z5_compare_tensorflow_matrix_scalar.<locals>.<listcomp>k   sJ     E E E56
1616""((**S0E E ErG   c                 F    g | ]}t          t          |                    S rK   rS   rB   s     rE   rF   z5_compare_tensorflow_matrix_scalar.<locals>.<listcomp>q   rU   rG   rV   ư>)r4   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   rb   )	r{   r|   r~   r   rW   r   r   r   r   s	            rE   !_compare_tensorflow_matrix_scalarr   i   sK   D,//AE E:CE E EO HHJJEA					 . .NNoNNN),&&U&33KK+,--. . . . . . . . . . . . . . .
 			$s9o667788A	Aqs88fs   A
B##B'*B'c                  ,    t          j        dd          S Nr   r_   randomrandintrK   rG   rE   <lambda>r   {       2!6!6 rG   c                 >   t          | |d          }fd| D             }t                                          }d }|                                5  d |D             }t          j        j                            |          }|                     ||           }d d d            n# 1 swxY w Y   |                    t          t          | |                                                                                              }	t          ||	z
            dk     sJ d S )Nr7   c                 $    g | ]}             S rK   rK   rC   rP   rngs     rE   rF   z._compare_tensorflow_scalar.<locals>.<listcomp>}       
$
$
$Q3355
$
$
$rG   c                 F    g | ]}t          t          |                    S rK   rS   rB   s     rE   rF   z._compare_tensorflow_scalar.<locals>.<listcomp>   (    888q$q))**888rG   rV   r   )r4   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   r   rt   rb   
r{   r|   r   r~   rvsrW   r   tf_rvsr   r   s
     `       rE   _compare_tensorflow_scalarr   z   sH   D,//A
$
$
$
$)
$
$
$CHHJJEA					 $ $88C888),&&U&33KK6
##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 			$s9c**++,,224499;;Aqs88f   A
B&&B*-B*c                  ,    t          j        dd          S r   r   rK   rG   rE   r   r      r   rG   c                    t          | |d          }fd| D             }t                                          }d }|                                5  d |D             }t          j        j                            |          }|                     ||           }d d d            n# 1 swxY w Y   |                    t          t          | |                                                              }	||	k    sJ d S )Nr7   c                 $    g | ]}             S rK   rK   r   s     rE   rF   z2_compare_tensorflow_relational.<locals>.<listcomp>   r   rG   c                 F    g | ]}t          t          |                    S rK   rS   rB   s     rE   rF   z2_compare_tensorflow_relational.<locals>.<listcomp>   r   rG   rV   )r4   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   r   s
     `       rE   _compare_tensorflow_relationalr      s,   D,//A
$
$
$
$)
$
$
$CHHJJEA					 $ $88C888),&&U&33KK6
##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 			$s9c**++,,1133A666666r   c                      t          t          d                    dk    sJ t          t          t	          t
                    gt          t                    t           gg          } t          |           dk    sJ d S )Nr;   z6tensorflow.constant([[1, 0, 0], [0, 1, 0], [0, 0, 1]])zPtensorflow.Variable([[x, tensorflow.math.sin(y)], [tensorflow.math.exp(z), -t]]))	r2   r+   r)   xr   yr   ztr|   s    rE   test_tensorflow_printingr      s    3q66""@A A A A As1vv;Q!-..D4  	.. . . . . .rG   c                     t           st          d           t          t                    } t	          |           dk    sJ t          t          f|            t          t                    } t	          |           dk    sJ t          t          f|            t          t                    } t	          |           dk    sJ t          t          f| d            t          t                    } t	          |           dk    sJ t          t          f| d            t          t                    } t	          |           d	k    sJ t          t          f| d
            t          t                    } t	          |           dk    sJ t          t          f| d            t          dz  } t	          |           dk    sJ t          t          f| d            t          t                    } t	          |           dk    sJ t          t          f| d            t          t                    } t	          |           dk    sJ t          t          f| d            t          t                    } t	          |           dk    sJ t          t          f| d            t          t                    } t	          |           dk    sJ t          t          f| d            t          t                    } t	          |           dk    sJ t          t          f| d            t!          t                    } t	          |           dk    sJ t          t          f| d            t#          t$          t                    } t	          |           dk    sJ t          t$          t          f| d            t'          t                    } t	          |           dk    sJ t          t          f| d            t)          t                    } t	          |           d k    sJ t          t          f| d!            t+          t                    } t	          |           d"k    sJ t          t          f| d#            t-          t                    } t	          |           d$k    sJ t          t          f| d%            t/          t                    } t	          |           d&k    sJ t          t          f| d'            t1          t                    } t	          |           d(k    sJ t          t          f| d)            t3          t                    } t	          |           d*k    sJ t          t          f| d+            t5          t                    } t	          |           d,k    sJ t          t          f| d-            d S ).NTensorFlow not installedztensorflow.math.abs(x)ztensorflow.math.sign(x)ztensorflow.math.ceil(x)c                  (    t          j                     S Nr   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>       v} rG   )r   ztensorflow.math.floor(x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.exp(x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.sqrt(x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   r`   ztensorflow.math.pow(x, 4)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.cos(x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.acos(x)c                  ,    t          j        dd          S )Nr   gffffff?r   uniformrK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   s    v~a7N7N rG   ztensorflow.math.sin(x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.asin(x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.tan(x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.atan(x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.atan2(y, x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   s     rG   ztensorflow.math.cosh(x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.acosh(x)c                  ,    t          j        dd          S N      r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>       v~a7K7K rG   ztensorflow.math.sinh(x)c                  ,    t          j        dd          S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.asinh(x)c                  ,    t          j        dd          S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.tanh(x)c                  ,    t          j        dd          S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   r   rG   ztensorflow.math.atanh(x)c                  ,    t          j        dd          S )Ng      g      ?r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>   s    sB 7 7 rG   ztensorflow.math.erf(x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>        rG   ztensorflow.math.lgamma(x)c                  (    t          j                     S r   r   rK   rG   rE   r   z&test_tensorflow_math.<locals>.<lambda>  r   rG   )rj   r5   r   r   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r&   r'   r   s    rE   test_tensorflow_mathr      s    )'(((q66D4  $<<<<<tT***77D4  $=====tT***1::D4  $=====tT/F/FGGGG88D4  $>>>>>tT/F/FGGGGq66D4  $<<<<<tT/F/FGGGG77D4  $=====tT/F/FGGGG6D4  $?????tT/F/FGGGGq66D4  $<<<<<tT/F/FGGGG77D4  $=====tT/N/NOOOOq66D4  $<<<<<tT/F/FGGGG77D4  $=====tT/F/FGGGGq66D4  $<<<<<tT/F/FGGGG77D4  $=====tT/F/FGGGGA;;D4  $AAAAA1vt1H1HIIII77D4  $=====tT/F/FGGGG88D4  $>>>>>tT/K/KLLLL77D4  $=====tT/K/KLLLL88D4  $>>>>>tT/K/KLLLL77D4  $=====tT/K/KLLLL88D4  $>>>>>	
d779 9 9 9 q66D4  $<<<<<	
d//1 1 1 1 A;;D4  $?????	
d//1 1 1 1 1 1rG   c                      t          t          t                              dk    sJ t          t          t                              dk    sJ t          t	          t                              dk    sJ d S )Nztensorflow.math.real(x)ztensorflow.math.imag(x)ztensorflow.math.angle(x))r2   r#   r   r$   r%   rK   rG   rE   test_tensorflow_complexesr     sh    2a55!!%>>>>>2a55!!%>>>>>3q66""&@@@@@@@rG   c                     t           st          d           t          t          t                    } t          |           dk    sJ t          t          t          f|            t          t          t                    } t          |           dk    sJ t          t          t          f|            t          t          t                    } t          |           dk    sJ t          t          t          f|            t          t          t                    } t          |           dk    sJ t          t          t          f|            t          t          t                    } t          |           dk    sJ t          t          t          f|            t          t          t                    } t          |           dk    sJ t          t          t          f|            d S )Nr   ztensorflow.math.equal(x, y)ztensorflow.math.not_equal(x, y)z#tensorflow.math.greater_equal(x, y)ztensorflow.math.greater(x, y)z tensorflow.math.less_equal(x, y)ztensorflow.math.less(x, y))rj   r5   r	   r   r   r2   r   r
   r   r   r   r   r   s    rE   test_tensorflow_relationalr     s    )'(((a88D4  $AAAAA"Aq64000a88D4  $EEEEE"Aq64000a88D4  $IIIII"Aq64000a88D4  $CCCCC"Aq64000a88D4  $FFFFF"Aq64000a88D4  $@@@@@"Aq6400000rG   c                  l   t           st          d           t          } t          |           dk    sJ t	          t          f|            t          t
          z   } t          |           dk    sJ t	          t          t
          f|            t          t
          z  } t          |           dk    sJ t	          t          t
          f|            t          t          t
                    } t          |           dk    sJ t	          t          t
          f|            t          t
          z  t          z  t          z  } t          |           dk    sJ t	          t          t
          t          t          f|            t          dz  } t          |           dk    sJ t	          t          f|            t          t                    } t          |           d	k    sJ t	          t          f|            t          t                    } t          |           d
k    sJ t          t          f|            t          t                    } t          |           dk    sJ t          t          f| d           t          j        } t          | d          dk    sJ t          | d          dk    sJ t	          t          f|            d S )Nr   r:   tensorflow.math.add(M, N)ztensorflow.linalg.matmul(M, N)ztensorflow.math.multiply(M, N)zXtensorflow.linalg.matmul(tensorflow.linalg.matmul(tensorflow.linalg.matmul(M, N), P), Q)r;   z;tensorflow.linalg.matmul(tensorflow.linalg.matmul(M, M), M)ztensorflow.linalg.trace(M)ztensorflow.linalg.det(M)ztensorflow.linalg.inv(M)T)r}   z1.14)tensorflow_versionz%tensorflow.linalg.matrix_transpose(M)z1.13ztensorflow.matrix_transpose(M))rj   r5   r:   r2   r   r<   r.   r=   r>   r1   r-   r   r/   r   Tr   s    rE   test_tensorflow_matricesr   -  s    )'(((D4  C''''tT***q5D4  $?????1vt,,,q5D4  $DDDDD1vt,,,1a  D4  $DDDDD1vt,,,Q3q57D4  	99 9 9 9 1a|T222a4D4  EF F F FtT***88D4  $@@@@@tT***q>>D4  $>>>>>%qdD1111::D4  $>>>>>&tTTBBBB3D4F;;;/0 0 0 04F;;;() ) ) ) tT*****rG   c                     t           st          d           t                                           } |                                 5  t           j        j                            |           }t          ddd          }t          ddd          }t          ||z            }t          ||f|d          }t           
                    ddgdd	gg          }t           
                    dd
gddgg          }|                     |||                    }|                    t                               ||                    }	||	k                                    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   rV   r:   r   r<   r7   r   r;   r`   )rj   r5   rk   rl   rm   rn   ro   r0   r3   r4   constantrp   matmulry   )
rW   r   r:   r<   cgr~   mambr   cs
             rE   test_codegen_einsumr   c  s    )'(((HHJJE					  ),&&U&33a##a##$QU++aVR..[[1a&1a&)**[[1R&2q'*++KK"b		""KK		"b))**Q||~~                 s   DE&&E*-E*c            
      V   t           st          d           t                                           } |                                 5  t           j        j                                        }t          ddd          }t          ddd          }t          ddd          }t          ddd          }t                               ddgdd	gg          }t                               dd
gddgg          }t                               ddgddgg          }t                               ddgd	dgg          }	t          ||          }
t          |
          dk    sJ t          ||f|
d          }|                     |||                    }|                    t                               d||                    }||k                                    sJ t          ||          }
t          |
          dk    sJ t          ||f|
d          }|                     |||                    }|                    ||z             }||k                                    sJ t          |||          }
t          |
          dk    sJ t          |||f|
d          }|                     ||||                    }|                    ||z   |z             }||k                                    sJ t          ||||          }
t          |
          dk    sJ t          ||||f|
d          }|                     |||||	                    }|                    ||z   |z   |	z             }||k                                    sJ t!          |ddg          }
t          |
          dk    sJ t          |f|
d          }|                     ||                    }|                    t                               |                    }||k                                    sJ t!          t          ||          g d          }
t          |
          dk    sJ t          ||f|
d          }|                     |||                    }|                    t                               t                               d||          g d                    }||k                                    sJ t%          t          ||          d          }
t          |
          dk    sJ t          ||f|
d          }|                     |||                    }|                    t                               d||                    }||k                                    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r:   r   r<   r=   r>   r   r;   r`   r   r   r      z'tensorflow.linalg.einsum("ab,cd", M, N)r7   zij,klr   z1tensorflow.math.add(tensorflow.math.add(M, N), P)zItensorflow.math.add(tensorflow.math.add(tensorflow.math.add(M, N), P), Q)ztensorflow.transpose(M, [1, 0]))r   r   r;   r   zKtensorflow.transpose(tensorflow.linalg.einsum("ab,cd", M, N), [1, 2, 3, 0])zab,cd)r   r   z,tensorflow.linalg.einsum("ab,bc->acb", M, N)z
ab,bc->acb)rj   r5   rk   rl   rm   rn   ro   r0   r   r   r2   r4   rp   einsumry   r   r   	transposer   )rW   r   r:   r<   r=   r>   r   r   mcmdr   r~   r   r   s                 rE   test_codegen_extrar   x  s    )'(((HHJJE					 B B),&&((a##a##a##a##[[1a&1a&)**[[1R&2q'*++[[1a&1a&)**[[1R&1a&)**1%%r""56 6 6 6aVR..KK"b		""KK		'2r2233Q||~~a^^r""&AAAAAaVR..KK"b		""KKR  Q||~~aAr""?@ @ @ @aAYL11KK"b"&&KKR"%%Q||~~aAq!!r""HH H H H aAq\2|44KK"b"b))**KKR"r)**Q||~~QF##r""&GGGGGaT2|,,KK"KKR(())Q||~~+Aq11<<<@@r""II I I I aVR..KK"b		""KKRYYwB%?%?NNOOQ||~~-a33V<<r"":; ; ; ;aVR..KK"b		""KK		,B7788Q||~~EB B B B B B B B B B B B B B B B B Bs   UVV"%V"c                  F   t          ddd          } t          ddd          }t          ddd          }t          | d                   dk    sJ t          d| d         z            dk    sJ |d                             || |z
            }t          |          d	k    sJ d S )
NAr   r;   BC)r   r   zA[0, 0]z	3*A[0, 0]z&(tensorflow.math.add((-1)*B, A))[0, 0])r0   r2   rq   )r   r   r   Fs       rE   test_MatrixElement_printingr     s    S!QAS!QAS!QA1T7##y00001qw;'';6666	$QAA1!IIIIIIIrG   c                  ~    t          t          t                    t                    } t          |           dk    sJ d S )Nz2tensorflow.gradients(tensorflow.math.sin(x), x)[0])r   r   r   r2   r   s    rE   test_tensorflow_Derivativer     sC    c!ffa  D4  <= = = = = =rG   )F)`r   sympy.core.functionr   sympy.core.symbolr   0sympy.tensor.array.expressions.array_expressionsr   r   r   r   sympy.core.relationalr	   r
   r   r   r   r   sympy.externalr   sympy.functionsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   sympy.matricesr)   r*   r+   r,   sympy.matrices.expressionsr-   r.   r/   r0   r1   sympy.printing.tensorflowr2   3sympy.tensor.array.expressions.from_matrix_to_arrayr3   sympy.utilities.lambdifyr4   sympy.testing.pytestr5   r6   rj   r7   osenvironr:   r<   r=   r>   r   r   r   r   rA   llor   m3x3	m3x3sympyr   r   r   r   r   r   r   r   r   r   r   r   r   r   rK   rG   rE   <module>r	     s    * * * * * * % % % % % %            8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ( ( ( ( ( ($ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ? > > > > > > > > > > >? ? ? ? ? ? ? ? ? ? ? ? ? ? 5 5 5 5 5 5 W W W W W W - - - - - - % % % % % % & & & & & &  --- -Z -III),BJ%& LaLaLaLaWY
1a>
7
7aA
7
7
7C;;sDsIL L L L@L L L L<  $ 76   " 76    . . . ]1 ]1 ]1@A A A1 1 1> 2+ 2+ 2+j  *G G GT	J 	J 	J= = = = =rG   