
    \hB              
       .   S SK r S SKJr  S SKJr  S SKJr  S SKJrJ	r	J
r
Jr  S SKJrJrJrJrJrJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.  S S	K/J0r0J1r1  S S
K2J3r3J4r4J5r5J6r6  S SK7J8r8J9r9J:r:J;r;J<r<  S SK=J>r>  S SK?J@r@  S SKAJBrB  S SKCJDrD  S SKCJErE  \" S5      =rFrG\G(       a  S SKHrHS\HR                  S'   \;" SSS5      rJ\;" SSS5      rK\;" SSS5      rL\;" SSS5      rM\" S5      u  rNrOrPrQ\FbC  \R" S SS5       V s/ s H  n \S" \R" X S-   5      5      PM     sn rT\FR                  \T5      rV\3" \T5      rWS,S jrXS,S jrYS rZS 4S jr[S  4S! jr\S" r]\ES# 5       r^S$ r_S% r`\ES& 5       raS' rbS( rcS) rdS* reS+ rfgs  sn f )-    N)
Derivative)symbols)	Piecewise)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)isnanisinf)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 t	   c           	      P   [        XS5      nU(       d1  U  Vs/ s H#  n[        UR                  UR                  5      PM%     nnO3U  Vs/ s H&  n[        UR                  UR                  5      S-  PM(     nn[        R                  5       nS nUR                  5          U Vs/ s H  n[        [        U5      5      PM     n	n[        R                  R                  R                  US9n
U
R                  U" U	6 5      nS S S 5        UR                  [        [        X5      5      5      nUR!                  5       nUR"                  (       a5  [%        U[&        5      (       d  UR)                  5       nUR+                  5       nU(       d  X{:H  R-                  5       (       d   eg U VVs/ s H  o  H  oPM     M     nnnU VVs/ s H  o  H  oPM     M     nnn[-        S [        X{5       5       5      (       d   eg s  snf s  snf s  snf ! , (       d  f       GN= fs  snnf s  snnf )Nr:   g      Y@graphc              3      #    U  H:  u  p[        X-
  5      S S[        [        [        U5      S 5      5      -
  * -  :  v   M<     g7f
      Nabsintr)   .0abs      \/var/www/auris/envauris/lib/python3.13/site-packages/sympy/printing/tests/test_tensorflow.py	<genexpr>-_compare_tensorflow_matrix.<locals>.<genexpr>G   =      LAJCHrQs3s1vr?33444   AA)r7   r/   rowscolstfGraph
as_defaultevalr5   compatv1Sessionrunsubsdictzipdoit	is_Matrix
isinstancer-   as_explicittolistall	variablesexpr	use_floatfvrandom_matricesrE   rirandom_variablessessionerows                rQ   _compare_tensorflow_matrixrv   -   s   ,/A?HIy!:affaff5yIDMNIq:affaff5d:INHHJEA				>MNoD!34oN)),,&&U&3KK+,- 

 			$s9678A	A{{!Z((AHHJ||~~~)!3SQSQ!))!3SQSQ!) LADQL L L 	L L/ JN
 O 
	 *)s5   *G;	-H H
#H=H
%HH"H


Hc           	      V   [        XS5      nU(       d4  U  Vs/ s H&  n[        UR                  UR                  5      S-  PM(     nnO3U  Vs/ s H&  n[        UR                  UR                  5      S-  PM(     nn[        R                  5       nS nUR                  5          U Vs/ s H  n[        [        U5      5      PM     n	n[        R                  R                  R                  US9n
U
R                  U" U	6 5      nS S S 5        UR                  [        [        X5      5      5      nUR!                  5       nUR"                  (       a5  [%        U[&        5      (       d  UR)                  5       nUR+                  5       nU(       d  X{:H  R-                  5       (       d   eg U VVs/ s H  o  H  oPM     M     nnnU VVs/ s H  o  H  oPM     M     nnn[-        S [        X{5       5       5      (       d   eg s  snf s  snf s  snf ! , (       d  f       GN= fs  snnf s  snnf )Nr:   rI   gQ	@rD   c              3      #    U  H:  u  p[        X-
  5      S S[        [        [        U5      S 5      5      -
  * -  :  v   M<     g7frG   rJ   rM   s      rQ   rR   5_compare_tensorflow_matrix_inverse.<locals>.<genexpr>g   rT   rU   )r7   r.   rV   rW   rX   rY   rZ   r[   r5   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   r-   rf   rg   rh   ri   s                rQ   "_compare_tensorflow_matrix_inverserz   M   s   ,/A:CD)Q3qvvqvv.q0)D=FGY3qvvqvv.t3YGHHJEA				>MNoD!34oN)),,&&U&3KK+,- 

 			$s9678A	A{{!Z((AHHJ||~~~)!3SQSQ!))!3SQSQ!) LADQL L L 	L L/ EG
 O 
	 *)s5   -G>-H!H&H=H(HH%H
Hc           	      |   [        XS5      nU  Vs/ s H4  n[        UR                  UR                  5      R	                  5       S-  PM6     nn[
        R                  5       nS nUR                  5          U Vs/ s H  n[        [        U5      5      PM     nn[
        R                  R                  R                  US9n	U	R                  U" U6 5      nS S S 5        UR                  [        [!        X5      5      5      n
U
R#                  5       n
[%        Xj-
  5      S:  d   eg s  snf s  snf ! , (       d  f       N_= f)Nr:   d   rD   ư>)r7   r/   rV   rW   evalfrX   rY   rZ   r[   r5   r\   r]   r^   r_   r`   ra   rb   rc   rK   )rj   rk   rm   rn   ro   rE   rp   rq   rr   rs   rt   s              rQ   !_compare_tensorflow_matrix_scalarr   k   s   ,/A:CE:CQ
166166"((*S0)  E HHJEA				>MNoD!34oN)),,&&U&3KK+,- 

 			$s9678A	Aqs8fE O 
	s#   ;D#4D-9D(=D-(D--
D;c                  0    [         R                  " SS5      $ Nr   rH   randomrandint     rQ   <lambda>r   }       2!6r   c           	      >   [        XS5      nU  Vs/ s H	  oB" 5       PM     nn[        R                  5       nS nUR                  5          U Vs/ s H  n[	        [        U5      5      PM     n	n[        R                  R                  R                  US9n
U
R                  U" U	6 5      nS S S 5        UR                  [        [        X5      5      5      R                  5       R                  5       n[        X{-
  5      S:  d   eg s  snf s  snf ! , (       d  f       Nk= f)Nr:   rD   r}   )r7   rX   rY   rZ   r[   r5   r\   r]   r^   r_   r`   ra   rb   r~   rc   rK   rj   rk   rngrm   rn   rvsrE   rp   rq   tf_rvsrs   rt   s               rQ   _compare_tensorflow_scalarr   |   s    ,/A#
$)Q35)C
$HHJEA				478Cq$q)*C8)),,&&U&3KK6
# 

 			$s9*+,22499;Aqs8f %
 9 
	s#   D	DD	,=D	D
Dc                  0    [         R                  " SS5      $ r   r   r   r   rQ   r   r      r   r   c           	      
   [        XS5      nU  Vs/ s H	  oB" 5       PM     nn[        R                  5       nS nUR                  5          U Vs/ s H  n[	        [        U5      5      PM     n	n[        R                  R                  R                  US9n
U
R                  U" U	6 5      nS S S 5        UR                  [        [        X5      5      5      R                  5       nX{:X  d   eg s  snf s  snf ! , (       d  f       NQ= f)Nr:   rD   )r7   rX   rY   rZ   r[   r5   r\   r]   r^   r_   r`   ra   rb   rc   r   s               rQ   _compare_tensorflow_relationalr      s    ,/A#
$)Q35)C
$HHJEA				478Cq$q)*C8)),,&&U&3KK6
# 

 			$s9*+,113A6M6 %
 9 
	s#   C*	C4C/,=C4/C44
Dc                      [        [        S5      5      S:X  d   e[        [        [	        [
        5      /[        [        5      [        * //5      n [        U 5      S:X  d   eg )Nr>   z6tensorflow.constant([[1, 0, 0], [0, 1, 0], [0, 0, 1]])zPtensorflow.Variable([[x, tensorflow.math.sin(y)], [tensorflow.math.exp(z), -t]]))	r5   r.   r,   xr   yr   ztrk   s    rQ   test_tensorflow_printingr      sb    3q6"@A A A As1v;Q!-.D4 	.. . .r   c                     [         (       d  [        S5        [        [        5      n [	        U 5      S:X  d   e[        [        4U 5        [        [        5      n [	        U 5      S:X  d   e[        [        4U 5        [        [        5      n [	        U 5      S:X  d   e[        [        4U S S9  [        [        5      n [	        U 5      S:X  d   e[        [        4U S S9  [        [        5      n [	        U 5      S	:X  d   e[        [        4U S
 S9  [        [        5      n [	        U 5      S:X  d   e[        [        4U S S9  [        S-  n [	        U 5      S:X  d   e[        [        4U S S9  [        [        5      n [	        U 5      S:X  d   e[        [        4U S S9  [        [        5      n [	        U 5      S:X  d   e[        [        4U S S9  [        [        5      n [	        U 5      S:X  d   e[        [        4U S S9  [        [        5      n [	        U 5      S:X  d   e[        [        4U S S9  [        [        5      n [	        U 5      S:X  d   e[        [        4U S S9  [!        [        5      n [	        U 5      S:X  d   e[        [        4U S S9  [#        [$        [        5      n [	        U 5      S:X  d   e[        [$        [        4U S S9  ['        [        5      n [	        U 5      S:X  d   e[        [        4U S S9  [)        [        5      n [	        U 5      S :X  d   e[        [        4U S! S9  [+        [        5      n [	        U 5      S":X  d   e[        [        4U S# S9  [-        [        5      n [	        U 5      S$:X  d   e[        [        4U S% S9  [/        [        5      n [	        U 5      S&:X  d   e[        [        4U S' S9  [1        [        5      n [	        U 5      S(:X  d   e[        [        4U S) S9  [3        [        5      n [	        U 5      S*:X  d   e[        [        4U S+ S9  [5        [        5      n [	        U 5      S,:X  d   e[        [        4U S- S9  g ).NTensorFlow not installedztensorflow.math.abs(x)ztensorflow.math.sign(x)ztensorflow.math.ceil(x)c                  ,    [         R                   " 5       $ Nr   r   r   rQ   r   &test_tensorflow_math.<locals>.<lambda>   
    v}}r   )r   ztensorflow.math.floor(x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.exp(x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.sqrt(x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r      r   r   rI   ztensorflow.math.pow(x, 4)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.cos(x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.acos(x)c                  0    [         R                  " SS5      $ )Nr   gffffff?r   uniformr   r   rQ   r   r      s    v~~a7Nr   ztensorflow.math.sin(x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.asin(x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.tan(x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.atan(x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.atan2(y, x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r      s
    r   ztensorflow.math.cosh(x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.acosh(x)c                  0    [         R                  " SS5      $ N      r   r   r   rQ   r   r          v~~a7Kr   ztensorflow.math.sinh(x)c                  0    [         R                  " SS5      $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.asinh(x)c                  0    [         R                  " SS5      $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.tanh(x)c                  0    [         R                  " SS5      $ r   r   r   r   rQ   r   r      r   r   ztensorflow.math.atanh(x)c                  0    [         R                  " SS5      $ )Ng      g      ?r   r   r   rQ   r   r      s    sB 7r   ztensorflow.math.erf(x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r     
    r   ztensorflow.math.lgamma(x)c                  ,    [         R                   " 5       $ r   r   r   r   rQ   r   r     r   r   )rX   r8   r   r   r5   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r'   r(   r   s    rQ   test_tensorflow_mathr      s   2'(q6D4 $<<<<tT*7D4 $====tT*1:D4 $====tT/FG8D4 $>>>>tT/FGq6D4 $<<<<tT/FG7D4 $====tT/FG6D4 $????tT/FGq6D4 $<<<<tT/FG7D4 $====tT/NOq6D4 $<<<<tT/FG7D4 $====tT/FGq6D4 $<<<<tT/FG7D4 $====tT/FGA;D4 $AAAA1vt1HI7D4 $====tT/FG8D4 $>>>>tT/KL7D4 $====tT/KL8D4 $>>>>tT/KL7D4 $====tT/KL8D4 $>>>>	
d79 q6D4 $<<<<	
d/1 A;D4 $????	
d/1r   c                      [        [        [        5      5      S:X  d   e[        [        [        5      5      S:X  d   e[        [	        [        5      5      S:X  d   eg )Nztensorflow.math.real(x)ztensorflow.math.imag(x)ztensorflow.math.angle(x))r5   r$   r   r%   r&   r   r   rQ   test_tensorflow_complexesr   
  sJ    2a5!%>>>>2a5!%>>>>3q6"&@@@@r   c                     [         (       d  [        S5        [        [        [        5      n [        U 5      S:X  d   e[        [        [        4U 5        [        [        [        5      n [        U 5      S:X  d   e[        [        [        4U 5        [        [        [        5      n [        U 5      S:X  d   e[        [        [        4U 5        [        [        [        5      n [        U 5      S:X  d   e[        [        [        4U 5        [        [        [        5      n [        U 5      S:X  d   e[        [        [        4U 5        [        [        [        5      n [        U 5      S:X  d   e[        [        [        4U 5        g )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))rX   r8   r
   r   r   r5   r   r   r   r   r   r   r   s    rQ   test_tensorflow_relationalr     s   2'(a8D4 $AAAA"Aq640a8D4 $EEEE"Aq640a8D4 $IIII"Aq640a8D4 $CCCC"Aq640a8D4 $FFFF"Aq640a8D4 $@@@@"Aq640r   c                  Z   [         (       d  [        S5        [        n [        U 5      S:X  d   e[	        [        4U 5        [        [
        -   n [        U 5      S:X  d   e[	        [        [
        4U 5        [        [
        -  n [        U 5      S:X  d   e[	        [        [
        4U 5        [        [        [
        5      n [        U 5      S:X  d   e[	        [        [
        4U 5        [        [
        -  [        -  [        -  n [        U 5      S:X  d   e[	        [        [
        [        [        4U 5        [        S-  n [        U 5      S:X  d   e[	        [        4U 5        [        [        5      n [        U 5      S	:X  d   e[	        [        4U 5        [        [        5      n [        U 5      S
:X  d   e[        [        4U 5        [        [        5      n [        U 5      S:X  d   e[        [        4U SS9  [        R                  n [        U SS9S:X  d   e[        U SS9S:X  d   e[	        [        4U 5        g )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)rl   z1.14)tensorflow_versionz%tensorflow.linalg.matrix_transpose(M)z1.13ztensorflow.matrix_transpose(M))rX   r8   r=   r5   rv   r?   r1   r@   rA   r4   r0   r   r2   rz   Tr   s    rQ   test_tensorflow_matricesr   /  s   2'(D4 C'''tT*q5D4 $????1vt,q5D4 $DDDD1vt,1a D4 $DDDD1vt,Q3q57D4 	99 9 9 1a|T2a4D4 EF F FtT*8D4 $@@@@tT*q>D4 $>>>>%qdD11:D4 $>>>>&tTTB33D4F;/0 0 04F;() ) ) tT*r   c                  z   [         (       d  [        S5        [         R                  5       n U R                  5          [         R                  R
                  R                  U S9n[        SSS5      n[        SSS5      n[        X#-  5      n[        X#4US5      n[         R                  SS/SS	//5      n[         R                  SS
/SS//5      nUR                  U" Xg5      5      nUR                  [         R                  Xg5      5      n	X:H  R                  5       (       d   e S S S 5        g ! , (       d  f       g = f)Nr   rD   r=   r   r?   r:   r   r>   rI   )rX   r8   rY   rZ   r\   r]   r^   r3   r6   r7   constantr_   matmulrh   )
rE   rs   r=   r?   cgrm   mambr   cs
             rQ   test_codegen_einsumr   e  s    2'(HHJE				)),,&&U&3a#a#$QU+aVR.[[1a&1a&)*[[1R&2q'*+KK"	"KK		")*||~~~ 
		s   C'D,,
D:c            
      >	   [         (       d  [        S5        [         R                  5       n U R                  5          [         R                  R
                  R                  5       n[        SSS5      n[        SSS5      n[        SSS5      n[        SSS5      n[         R                  SS/SS	//5      n[         R                  SS
/SS//5      n[         R                  SS/SS//5      n[         R                  SS/S	S//5      n	[        X#5      n
[        U
5      S:X  d   e[        X#4U
S5      nUR                  U" Xg5      5      nUR                  [         R                  SXg5      5      nX:H  R                  5       (       d   e[        X#5      n
[        U
5      S:X  d   e[        X#4U
S5      nUR                  U" Xg5      5      nUR                  Xg-   5      nX:H  R                  5       (       d   e[        X#U5      n
[        U
5      S:X  d   e[        X#U4U
S5      nUR                  U" XgU5      5      nUR                  Xg-   U-   5      nX:H  R                  5       (       d   e[        X#XE5      n
[        U
5      S:X  d   e[        X#XE4U
S5      nUR                  U" XgX5      5      nUR                  Xg-   U-   U	-   5      nX:H  R                  5       (       d   e[!        USS/5      n
[        U
5      S:X  d   e[        U4U
S5      nUR                  U" U5      5      nUR                  [         R#                  U5      5      nX:H  R                  5       (       d   e[!        [        X#5      / SQ5      n
[        U
5      S:X  d   e[        X#4U
S5      nUR                  U" Xg5      5      nUR                  [         R#                  [         R                  SXg5      / SQ5      5      nX:H  R                  5       (       d   e[%        [        X#5      S5      n
[        U
5      S:X  d   e[        X#4U
S5      nUR                  U" Xg5      5      nUR                  [         R                  SXg5      5      nX:H  R                  5       (       d   e S S S 5        g ! , (       d  f       g = f)Nr   r=   r   r?   r@   rA   r   r>   rI   r   r   r      z'tensorflow.linalg.einsum("ab,cd", M, N)r:   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)rX   r8   rY   rZ   r\   r]   r^   r3   r   r   r5   r7   r_   einsumrh   r   r   	transposer	   )rE   rs   r=   r?   r@   rA   r   r   mcmdr   rm   r   r   s                 rQ   test_codegen_extrar   z  s)   2'(HHJE				)),,&&(a#a#a#a#[[1a&1a&)*[[1R&2q'*+[[1a&1a&)*[[1R&1a&)*%r"56 	6 6aVR.KK"	"KK		'223||~~~a^r"&AAAAaVR.KK"	"KK ||~~~aAr"?@ 	@ @aAYL1KK""&KK"%||~~~aA!r"HH 	H H aA\2|4KK"")*KK"r)*||~~~QF#r"&GGGGaT2|,KK"KKR()||~~~+A1<@r"II 	I I aVR.KK"	"KKRYYw%?NO||~~~-a3V<r":; 	; ;aVR.KK"	"KK		,78||~~~E 
		s   Q	R
Rc                      [        SSS5      n [        SSS5      n[        SSS5      n[        U S   5      S:X  d   e[        SU S   -  5      S:X  d   eUS   R                  X U-
  5      n[        U5      S	:X  d   eg )
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])r3   r5   r`   )r   r   r   Fs       rQ   test_MatrixElement_printingr     s    S!QAS!QAS!QA1T7#y0001qw;';666	$QAA1!IIIIr   c                  `    [        [        [        5      [        5      n [        U 5      S:X  d   eg )Nz2tensorflow.gradients(tensorflow.math.sin(x), x)[0])r   r   r   r5   r   s    rQ   test_tensorflow_Derivativer     s,    c!fa D4 <= = =r   c                  @   [         (       d  [        S5        [        S5      n [        S[	        U 5      4S5      n[        U5      nSn[        U5      U:X  d   SU SU 35       e[        S5      S4[        S	5      S
4[        S5      S
4S4 HN  u  pE[        XSS9" [         R                  U/5      S9nXe:H  R                  5       R                  5       (       a  MN   e   [        S5      n [        S[        U 5      4S5      n[        U5      nSn[        U5      U:X  d   SU SU 35       e[        S	5      S4[        S5      S4[        S5      S
4S4 HN  u  pE[        XSS9" [         R                  U/5      S9nXe:H  R                  5       R                  5       (       a  MN   e   g )Nr   r   g        )      ?Tz5tensorflow.where(tensorflow.math.is_nan(x), 0.0, 1.0)zIncorrect printed result z, expected naninfr   z-inf)r   r   r:   )modules)r   z5tensorflow.where(tensorflow.math.is_inf(x), 0.0, 1.0))rX   r8   r   r   r*   r5   floatr7   r   numpyrh   r+   )r   
expressionprinted_codeexpected_printed_code_input	_expected_outputs          rQ   test_tensorflow_isnan_isinfr     s   2'( 	ACq?K8J":.LS:&*??  NC\]i\jju  wL  vM  BN  N?$U|S1E%L#3FvX[H\^hiALABKKQWPXDYZ$++-113333 j
 	ACq?K8J":.LS:&*??  NC\]i\jju  wL  vM  BN  N?$U|S1E&M33G%PU,X[I\^hiALABKKQWPXDYZ$++-113333 jr   )F)gr   sympy.core.functionr   sympy.core.symbolr   sympyr   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.codegen.cfunctionsr*   r+   sympy.matricesr,   r-   r.   r/   sympy.matrices.expressionsr0   r1   r2   r3   r4   sympy.printing.tensorflowr5   3sympy.tensor.array.expressions.from_matrix_to_arrayr6   sympy.utilities.lambdifyr7   sympy.testing.pytestr8   r9   rX   r:   osenvironr=   r?   r@   rA   r   r   r   r   rangelistllor   m3x3	m3x3sympyrv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   )rq   s   0rQ   <module>r      s    * %   8 8 ($ $ $ $ $ $ $ 2 > >? ? 5 W - % &  - -Z),BJJ%& aaaaY
1a>(-aA
714a1
7C;;sDsIL@L<$ 7" 7 . ]1 ]1@A1> 2+ 2+j*GT	J=
4[ 8s   F