
    QiB                         d dl Z d dlm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/m0Z0m1Z1 d d
l2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZD d dlCmEZE  ed          xZFZGeGrd dlHZHdeHjI        d<    e;ddd          ZJ e;ddd          ZK e;ddd          ZL e;ddd          ZM ed          \  ZNZOZPZQeF7d  eRd dd          D             ZSeFT                    eS          ZU e3eS          ZVd.dZWd.dZXd ZYd  fd!ZZd" fd#Z[d$ Z\eEd%             Z]d& Z^d' Z_eEd(             Z`d) Zad* Zbd+ Zcd, Zdd- ZedS )/    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 tc           	      N    g | ]"}t          t          ||d z                       #S )r>   )listrange.0is     |/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/printing/tests/test_tensorflow.py
<listcomp>rI   (   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 )	Nr:   c                 B    g | ]}t          |j        |j                  S  r/   rowscolsrF   vs     rH   rI   z._compare_tensorflow_matrix.<locals>.<listcomp>0   s&    III!:afaf55IIIrJ   c                 H    g | ]}t          |j        |j                  d z   S )g      Y@rO   rR   s     rH   rI   z._compare_tensorflow_matrix.<locals>.<listcomp>2   s+    NNNq:afaf55d:NNNrJ   c                 F    g | ]}t          t          |                    S rN   evalr5   rE   s     rH   rI   z._compare_tensorflow_matrix.<locals>.<listcomp>7   (    NNND!3!344NNNrJ   graphc                     g | ]	}|D ]}|
S rN   rN   rF   rowrG   s      rH   rI   z._compare_tensorflow_matrix.<locals>.<listcomp>E   %    )))3S))Q))))rJ   c                     g | ]	}|D ]}|
S rN   rN   r\   s      rH   rI   z._compare_tensorflow_matrix.<locals>.<listcomp>F   r^   rJ   c              3      K   | ]L\  }}t          ||z
            d dt          t          t          |          d                     z
   z  k     V  MdS 
      Nabsintr)   rF   abs      rH   	<genexpr>z-_compare_tensorflow_matrix.<locals>.<genexpr>G   q       L L9=AC!HHrQs3s1vvr??333444L L L L L LrJ   r7   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_matricesrZ   rrandom_variablessessiones
             rH   _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 )	Nr:   c                 H    g | ]}t          |j        |j                  d z   S )rc   r.   rP   rQ   rR   s     rH   rI   z6_compare_tensorflow_matrix_inverse.<locals>.<listcomp>P   s+    DDDQ3qvqv..q0DDDrJ   c                 H    g | ]}t          |j        |j                  d z   S )gQ	@r   rR   s     rH   rI   z6_compare_tensorflow_matrix_inverse.<locals>.<listcomp>R   s+    GGG3qvqv..t3GGGrJ   c                 F    g | ]}t          t          |                    S rN   rV   rE   s     rH   rI   z6_compare_tensorflow_matrix_inverse.<locals>.<listcomp>W   rX   rJ   rY   c                     g | ]	}|D ]}|
S rN   rN   r\   s      rH   rI   z6_compare_tensorflow_matrix_inverse.<locals>.<listcomp>e   r^   rJ   c                     g | ]	}|D ]}|
S rN   rN   r\   s      rH   rI   z6_compare_tensorflow_matrix_inverse.<locals>.<listcomp>f   r^   rJ   c              3      K   | ]L\  }}t          ||z
            d dt          t          t          |          d                     z
   z  k     V  MdS ra   rd   rg   s      rH   rj   z5_compare_tensorflow_matrix_inverse.<locals>.<genexpr>g   rk   rJ   rl   r}   s
             rH   "_compare_tensorflow_matrix_inverser   M   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 )Nr:   c                 l    g | ]1}t          |j        |j                                                  d z  2S )d   )r/   rP   rQ   evalfrR   s     rH   rI   z5_compare_tensorflow_matrix_scalar.<locals>.<listcomp>m   sJ     E E E56
1616""((**S0E E ErJ   c                 F    g | ]}t          t          |                    S rN   rV   rE   s     rH   rI   z5_compare_tensorflow_matrix_scalar.<locals>.<listcomp>s   rX   rJ   rY   ư>)r7   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   re   )	r~   r   r   r   rZ   r   r   r   r   s	            rH   !_compare_tensorflow_matrix_scalarr   k   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   rb   randomrandintrN   rJ   rH   <lambda>r   }       2!6!6 rJ   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 )Nr:   c                 $    g | ]}             S rN   rN   rF   rS   rngs     rH   rI   z._compare_tensorflow_scalar.<locals>.<listcomp>       
$
$
$Q3355
$
$
$rJ   c                 F    g | ]}t          t          |                    S rN   rV   rE   s     rH   rI   z._compare_tensorflow_scalar.<locals>.<listcomp>   (    888q$q))**888rJ   rY   r   )r7   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   r   rw   re   
r~   r   r   r   rvsrZ   r   tf_rvsr   r   s
     `       rH   _compare_tensorflow_scalarr   |   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   rN   rJ   rH   r   r      r   rJ   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 )Nr:   c                 $    g | ]}             S rN   rN   r   s     rH   rI   z2_compare_tensorflow_relational.<locals>.<listcomp>   r   rJ   c                 F    g | ]}t          t          |                    S rN   rV   rE   s     rH   rI   z2_compare_tensorflow_relational.<locals>.<listcomp>   r   rJ   rY   )r7   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   r   s
     `       rH   _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]]))	r5   r.   r,   xr   yr   ztr   s    rH   test_tensorflow_printingr      s    3q66""@A A A A As1vv;Q!-..D4  	.. . . . . .rJ   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   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>       v} rJ   )r   ztensorflow.math.floor(x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.exp(x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.sqrt(x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   rc   ztensorflow.math.pow(x, 4)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.cos(x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.acos(x)c                  ,    t          j        dd          S )Nr   gffffff?r   uniformrN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   s    v~a7N7N rJ   ztensorflow.math.sin(x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.asin(x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.tan(x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.atan(x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.atan2(y, x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   s     rJ   ztensorflow.math.cosh(x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.acosh(x)c                  ,    t          j        dd          S N      r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>       v~a7K7K rJ   ztensorflow.math.sinh(x)c                  ,    t          j        dd          S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.asinh(x)c                  ,    t          j        dd          S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.tanh(x)c                  ,    t          j        dd          S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   r   rJ   ztensorflow.math.atanh(x)c                  ,    t          j        dd          S )Ng      g      ?r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>   s    sB 7 7 rJ   ztensorflow.math.erf(x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>       rJ   ztensorflow.math.lgamma(x)c                  (    t          j                     S r   r   rN   rJ   rH   r   z&test_tensorflow_math.<locals>.<lambda>  r   rJ   )rm   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    rH   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 1rJ   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))r5   r$   r   r%   r&   rN   rJ   rH   test_tensorflow_complexesr   
  sh    2a55!!%>>>>>2a55!!%>>>>>3q66""&@@@@@@@rJ   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))rm   r8   r
   r   r   r5   r   r   r   r   r   r   r   s    rH   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0rJ   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))rm   r8   r=   r5   r   r?   r1   r@   rA   r4   r0   r   r2   r   Tr   s    rH   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*****rJ   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   rY   r=   r   r?   r:   r   r>   rc   )rm   r8   rn   ro   rp   rq   rr   r3   r6   r7   constantrs   matmulr|   )
rZ   r   r=   r?   cgr   mambr   cs
             rH   test_codegen_einsumr   e  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@   rA   r   r>   rc   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)rm   r8   rn   ro   rp   rq   rr   r3   r   r   r5   r7   rs   einsumr|   r   r   	transposer	   )rZ   r   r=   r?   r@   rA   r   r   mcmdr   r   r   r   s                 rH   test_codegen_extrar   z  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])r3   r5   rt   )r   r   r   Fs       rH   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IrJ   c                  ~    t          t          t                    t                    } t          |           dk    sJ d S )Nz2tensorflow.gradients(tensorflow.math.sin(x), x)[0])r   r   r   r5   r   s    rH   test_tensorflow_Derivativer     sC    c!ffa  D4  <= = = = = =rJ   c                  "   t           st          d           t          d          } t          dt	          |           fd          }t          |          }d}t          |          |k    sJ d| d|             t          d          dft          d	          d
ft          d          d
fdfD ]f\  }} t          | |d          t                               |g                    }||k    	                                
                                sJ gt          d          } t          dt          |           fd          }t          |          }d}t          |          |k    sJ d| d|             t          d	          dft          d          dft          d          d
fdfD ]f\  }} t          | |d          t                               |g                    }||k    	                                
                                sJ gd S )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))rm   r8   r   r   r*   r5   floatr7   r   numpyr|   r+   )r   
expressionprinted_codeexpected_printed_code_input	_expected_outputs          rH   test_tensorflow_isnan_isinfr    sj    )'((( 	ACq?K88J":..LS:&&*????  BN]i  BN  BN  wL  BN  BN???$U||S1E%LL#3FvX[H\^hi 4 4	A(A
LAAABKKQWPXDYDYZZZ9$++--11333333 	ACq?K88J":..LS:&&*????  BN]i  BN  BN  wL  BN  BN???$U||S1E&MM33G%PU,,X[I\^hi 4 4	A(A
LAAABKKQWPXDYDYZZZ9$++--113333334 4rJ   )F)fr   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   rm   r:   osenvironr=   r?   r@   rA   r   r   r   r   rD   llor   m3x3	m3x3sympyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rN   rJ   rH   <module>r     s    * * * * * * % % % % % %                  8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 ( ( ( ( ( ($ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 2 1 1 1 1 1 1 1 > > > > > > > > > > > >? ? ? ? ? ? ? ? ? ? ? ? ? ? 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= = =
4 4 4 4 4rJ   