
    Цi<              
          S SK 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-J.r.J/r/J0r0J1r1  S S	K2J3r3J4r4J5r5J6r6J7r7  S S
K8J9r9  S SK:J;r;  S SK<J=r=  S SK>J?r?  S SK>J@r@  \" S5      =rArB\B(       a  S SKCrCS\CR                  S'   \6" SSS5      rE\6" SSS5      rF\6" SSS5      rG\6" SSS5      rH\" S5      u  rIrJrKrL\AbC  \M" S SS5       V s/ s H  n \N" \M" X S-   5      5      PM     sn rO\AR                  \O5      rQ\." \O5      rRS)S jrSS)S jrTS rUS 4S jrVS 4S jrWS  rX\@S! 5       rYS" rZS# r[\@S$ 5       r\S% r]S& r^S' r_S( r`gs  sn f )*    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 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 )Nr7   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      c/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sympy/printing/tests/test_tensorflow.py	<genexpr>-_compare_tensorflow_matrix.<locals>.<genexpr>E   =      LAJCHrQs3s1vr?33444   AA)r4   r,   rowscolstfGraph
as_defaultevalr2   compatv1Sessionrunsubsdictzipdoit	is_Matrix
isinstancer*   as_explicittolistall	variablesexpr	use_floatfvrandom_matricesrB   rirandom_variablessessionerows                rN   _compare_tensorflow_matrixrs   +   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 )Nr7   rF   gQ	@rA   c              3      #    U  H:  u  p[        X-
  5      S S[        [        [        U5      S 5      5      -
  * -  :  v   M<     g7frD   rG   rJ   s      rN   rO   5_compare_tensorflow_matrix_inverse.<locals>.<genexpr>e   rQ   rR   )r4   r+   rS   rT   rU   rV   rW   rX   r2   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   r*   rc   rd   re   rf   s                rN   "_compare_tensorflow_matrix_inverserw   K   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)Nr7   d   rA   ư>)r4   r,   rS   rT   evalfrU   rV   rW   rX   r2   rY   rZ   r[   r\   r]   r^   r_   r`   rH   )rg   rh   rj   rk   rl   rB   rm   rn   ro   rp   rq   s              rN   !_compare_tensorflow_matrix_scalarr|   i   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   rE   randomrandint     rN   <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)Nr7   rA   rz   )r4   rU   rV   rW   rX   r2   rY   rZ   r[   r\   r]   r^   r_   r{   r`   rH   rg   rh   rngrj   rk   rvsrB   rm   rn   tf_rvsrp   rq   s               rN   _compare_tensorflow_scalarr   z   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   rN   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)Nr7   rA   )r4   rU   rV   rW   rX   r2   rY   rZ   r[   r\   r]   r^   r_   r`   r   s               rN   _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]]))	r2   r+   r)   xr   yr   ztrh   s    rN   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   rN   r   &test_tensorflow_math.<locals>.<lambda>   
    v}}r   )r   ztensorflow.math.floor(x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.exp(x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.sqrt(x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      r   r   rF   ztensorflow.math.pow(x, 4)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.cos(x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.acos(x)c                  0    [         R                  " SS5      $ )Nr   gffffff?r   uniformr   r   rN   r   r      s    v~~a7Nr   ztensorflow.math.sin(x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.asin(x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.tan(x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.atan(x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.atan2(y, x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      s
    r   ztensorflow.math.cosh(x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.acosh(x)c                  0    [         R                  " SS5      $ N      r   r   r   rN   r   r          v~~a7Kr   ztensorflow.math.sinh(x)c                  0    [         R                  " SS5      $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.asinh(x)c                  0    [         R                  " SS5      $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.tanh(x)c                  0    [         R                  " SS5      $ r   r   r   r   rN   r   r      r   r   ztensorflow.math.atanh(x)c                  0    [         R                  " SS5      $ )Ng      g      ?r   r   r   rN   r   r      s    sB 7r   ztensorflow.math.erf(x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r      
    r   ztensorflow.math.lgamma(x)c                  ,    [         R                   " 5       $ r   r   r   r   rN   r   r     r   r   )rU   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    rN   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))r2   r#   r   r$   r%   r   r   rN   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))rU   r5   r	   r   r   r2   r   r
   r   r   r   r   r   s    rN   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)ri   z1.14)tensorflow_versionz%tensorflow.linalg.matrix_transpose(M)z1.13ztensorflow.matrix_transpose(M))rU   r5   r:   r2   rs   r<   r.   r=   r>   r1   r-   r|   r/   rw   Tr   s    rN   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   rA   r:   r   r<   r7   r   r;   rF   )rU   r5   rV   rW   rY   rZ   r[   r0   r3   r4   constantr\   matmulre   )
rB   rp   r:   r<   cgrj   mambr   cs
             rN   test_codegen_einsumr   c  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=   r>   r   r;   rF   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)rU   r5   rV   rW   rY   rZ   r[   r0   r   r   r2   r4   r\   einsumre   r   r   	transposer   )rB   rp   r:   r<   r=   r>   r   r   mcmdr   rj   r   r   s                 rN   test_codegen_extrar   x  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])r0   r2   r]   )r   r   r   Fs       rN   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   r2   r   s    rN   test_tensorflow_Derivativer     s,    c!fa D4 <= = =r   )F)ar   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   rU   r7   osenvironr:   r<   r=   r>   r   r   r   r   rangelistllor   m3x3	m3x3sympyrs   rw   r|   r   r   r   r   r   r   r   r   r   r   r   )rn   s   0rN   <module>r      s    * %  8 8 ($ $ $ $ $ $ $ ? >? ? 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=Q 8s   	F