
    g/                        d dl mZmZ d dlmZ d dl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 d dlmZ d dlmZ  edd	d	          Z ed
d	d          Z edd	d	          Z eddd          Z eddd          Z edd d           Z edd	d          Z edd	d          Zd Z d Z!d Z"ed             Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d  Z-d! Z.ed"             Z/d# Z0d$ Z1d% Z2d& Z3d' Z4d( Z5d)S )*    )Qask)Symbol)
DiagMatrixDiagonalMatrix)Matrix)	MatrixSymbolIdentity
ZeroMatrix	OneMatrixTraceMatrixSliceDeterminantBlockMatrixBlockDiagMatrix)LofLU)XFAILX   Y   ZA1x1   B1x1C0x0V1V2c                     t          t          j        t                              sJ t          t          j        t                              rJ t          t          j        t          t          j        z                      sJ d S N)r   r   squarer   r   T     a/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/assumptions/tests/test_matrices.pytest_squarer&      sb    qx{{18A;;qx!#r$   c                  V   t          t          j        t                    t          j        t                              sJ t          t          j        t                              du sJ t          t          j        t          t          z            t          j        t                              du sJ t          t          j        t          t
          z            t          j        t                              J t          t          j        t          t
          z            t          j        t                    t          j        t
                    z            du sJ t          t          j        t          j                            J t          t          j        t          j                  t          j        t                              du sJ t          t          j        t          j                            du sJ t          t          j        t          d                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j        t                    t          j        t                    t          j        t                    z            sJ d S )NFTr   r   )r   r   
invertibler   r   r   r"   Ir
   r   r   fullrankr!   r#   r$   r%   test_invertibler+      s=   q|AQ00000q|A5((((q|AaC  !,q//22e;;;;q|AaC  !,q//22:::q|AaC  !,q//ALOO"CDDLLLLq|AC  !!)))q|AC  !,q//22d::::q|AC  !!T))))q|HQKK(())T1111q|Jq!,,--..%7777q|IaOO,,--5555q|IaOO,,--6666q|A
1 ;<<<<<<<r$   c                  `   t          t          j        t                              J t          t          j        t                    t          j        t                              du sJ t          t          j        t                    t          j        t                               du sJ d S )NFT)r   r   singularr   r(   r#   r$   r%   test_singularr.   '   s}    qz!}}%%%qz!}}al1oo..%7777qz!}}q|A.//4777777r$   c                      t          t          j        t                    t          j        t                              du sJ d S )NT)r   r   r(   r   r*   r#   r$   r%   test_invertible_fullrankr0   ,   s3    q|A
1..$666666r$   c                     t          t          j        t          t	          d          g                              dk    sJ t          t          j        t          t          dd          g                              dk    sJ t          g dg dg          } t          g dg dg          }t          t          j        t          t          j        dd          |j        g| t          j	        d          gg                              dk    sJ t          t          j        t          |j        t          j        dd          gt          j	        d          | gg                              dk    sJ t          t          j        t          | t          j	        d          gt          j        dd          |j        gg                              dk    sJ t          t          j        t          t          j	        d          | g|j        t          j        dd          gg                              dk    sJ d S )	Nr   TF)r   r   r   )r         )r3   r      )r   r   r2   r   )
r   r   r(   r   r
   r   r   onesr"   eyer   r   s     r%   test_invertible_BlockMatrixr8   1   s]   q|K!667788D@@@@q|KAq)9)9(:;;<<==FFFF			999%&&A			999%&&Aq|K	Q		AC 	
FJqMM)     	 	    
 q|K	
fk!Q 	A)     	 	    
 q|K	
FJqMM	Q		AC )     	 	    
 q|K	A	
fk!Q )     	 	      r$   c                     t          t          j        t          t	          d          t	          d                                        dk    sJ t          t          j        t          t          dd          t	          d                                        dk    sJ t          t          j        t          t	          d          t          dd                                        dk    sJ d S )Nr   r2   TF)r   r   r(   r   r
   r   r   r#   r$   r%   test_invertible_BlockDiagMatrixr:   M   s    q|OHQKK!EEFFGG4OOOOq|OJq!,<,<hqkkJJKKLLPUUUUUq|OHQKK1aIIJJKKuTTTTTTr$   c            	      R	   t          t          j        t                    t          j        t                              sJ t          t          j        t          t          z            t          j        t                              J t          t          j        t          t          z            t          j        t                    t          j        t                    z            du sJ t          t          j        t          t          z             t          j        t                    t          j        t                    z            du sJ t          t          j        t
                              du sJ t          t          j        t
          t
          j        z                      du sJ t          t          j        t
          j        t          z  t
          z                      J t          t          j        t
          j        t          z  t
          z            t          j        t                              du sJ t          t          j        t          dz            t          j        t                              du sJ t          t          j        t                              du sJ t          t          j        t          t          z                       du sJ t          t          j        t          t          z                      du sJ t          t          j        t          j        t          z                      du sJ t          t          j        t          j        t          t          z   z                      du sJ t          t          j        t          j        t          t          z   z  t          z                       du sJ t          t          j        t          t
          dd                              du sJ t          t          j        t          d                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ d S )NTF
   r   r   r   r   r   )r   r   	symmetricr   r   r   r"   r   r   r   r   r   r
   r   r   r#   r$   r%   test_symmetricr@   S   sY   q{1~~q{1~~.....q{1Q3Q00888q{1Q3Q!+a..!@AATIIIIq{1q5!!1;q>>AKNN#BCCtKKKKq{1~~%''''q{1QS5!!""d****q{13q57##$$,,,q{13q57##Q[^^44<<<<q{1b5!!1;q>>22d::::q{4  !!T))))q{4$;''((D0000q{4$;''((D0000q{247##$$,,,,q{24b>**++t3333q{24b>D01122d::::q{;q&&99::;;tCCCCq{8A;;''((D0000q{:a++,,--5555q{9Q??++,,444444r$   c                    t           | t                     | t                              sJ t           | t          j                   | t                              du sJ t           | t          j                   | t                              du sJ t           | t          dz             | t                              sJ t           | t                              du sJ t           | t                              J t           | t                    t          j        t                               du sJ t           | t          t          z  t          z             | t                     | t                    z            du sJ t           | t          d                              du sJ t           | t          dd                              du sJ t          t          j        t                     | t                              sJ t           | t          t          z              | t                     | t                    z            rJ d S )NTr   Fr   )
r   r   r"   r)   r   r   r(   r   r
   r   )	predicates    r%   _test_orthogonal_unitaryrC   h   s   yy||YYq\\*****yy~~yy||,,4444yy~~yy||,,4444yyA		!-----yy||%%%%yy||$$$yy||al1oo-..%7777yy1Q1		!!<==EEEEyy!%%&&$....yyAq))**++u4444q|A		!-----99QU##YYq\\IIaLL%@AAAAAAAr$   c                  8    t          t          j                   d S r    )rC   r   
orthogonalr#   r$   r%   test_orthogonalrF   v   s    Q\*****r$   c                      t          t          j                   t          t          j        t                    t          j        t                              sJ d S r    )rC   r   unitaryr   r   rE   r#   r$   r%   test_unitaryrI   y   s>    QY'''qy||Q\!__-------r$   c                  "   t          t          j        t                    t          j        t                              sJ t          t          j        t          dz            t          j        t                              sJ t          t          j        t          j                  t          j        t                              du sJ t          t          j        t                              J t          t          j        t
                              J t          t          j        t          t          z            t          j        t                    t          j        t                    z            du sJ t          t          j        t          d                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j
        t                    t          j        t                               dk    sJ d S )Nr   Tr   Fr   )r   r   r*   r   r"   r   r   r
   r   r   r(   r#   r$   r%   test_fullrankrK   }   s   qz!}}ajmm,,,,,qz!Q$A/////qz!#
1..$6666qz!}}%%%qz!}}%%%qz!A#
1
1 =>>$FFFFqz(1++&&''4////qz*Q**++,,5555qz)Aq//**++t3333qz)Aq//**++u4444q|AA//5888888r$   c                  	   t          t          j        t                    t          j        t                              sJ t          t          j        t          j                  t          j        t                              du sJ t          t          j        t          j                  t          j        t                              du sJ t          t          j        t                              du sJ t          t          j        t                              J t          t          j        t          dz            t          j        t                              sJ t          t          j        t          t          z  t          z            t          j        t                    t          j        t                    z            du sJ t          t          j        t                    t          j        t                              sJ t          t          j        t          j        t          z  t          z            t          j        t                    t          j	        t                    z            du sJ t          t          j        t          j        t          z  t          z            t          j        t                              rJ t          t          j        t          d                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          t          z             t          j        t                    t          j        t                    z            du sJ t          t          j        t                     t          j        t                              rJ t          t          j        t          d                   t          j        t                              sJ d S )NTFr   r   )r   r   )r   r   positive_definiter   r"   r)   r   r   rE   r*   r
   r   r   positiver#   r$   r%   test_positive_definiterO      s   q"1%%q':1'='=>>>>>q"13'')<Q)?)?@@DHHHHq"13'')<Q)?)?@@DHHHHq"1%%&&%////q"1%%&&...q"1a4((!*=a*@*@AAAAAq"1Q3q5))""Q%8%;%;;= =@DE E E Eq"1%%q|A77777q"13q57++""QZ]]24 47;< < < <1&qs1uQw//1DQ1G1GHHHHHq"8A;;//00D8888q":a#3#34455>>>>q"9Q??3344<<<<q"9Q??3344====q"1q5))1+>q+A+A"",# $ $'+, , , ,1&r**A,?,B,BCCCCCqz!D'""A$7$:$:;;;;;;;r$   c                     t          t          j        t          t          j        z   t          d          z             t          j        t                    t          j        t                    z            du sJ t          t          j        t          t          j        z            t          j        t                    t          j        t                    z            du sJ t          t          j        t          d                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j
        t                    t          j        t                              sJ t          t          j        t          dz            t          j        t                              sJ t          t          j        t          dz            t          j        t                              sJ d S )Nr   Tr   r   F)r   r   upper_triangularr   r   r"   r
   lower_triangularr   r   
triangularunit_triangularr#   r$   r%   test_triangularrU      s   q!!ac'HQKK"788!:LQ:O:Oq!!;" # #&*+ + + +q!!AC%((!*<Q*?*?q!!+" # #&*+ + + +q!(1++..//47777q!*Q"2"23344<<<<q!*Q"2"23344<<<<q!)Aq//2233t;;;;q!)Aq//2233t;;;;q!)Aq//2233u<<<<q!)Aq//2233u<<<<q|A 1! 4 455555q!!Q$'');A)>)>?????q!!Q$'');A)>)>???????r$   c            	      	   t          t          j        t          t          j        z   t          d          z             t          j        t                    t          j        t                    z            du sJ t          t          j        t          dd                              sJ t          t          j        t          dd                              du sJ t          t          j        t          dd                              du sJ t          t          j	        t                    t          j
        t                    z  t          j        t                              sJ t          t          j        t                    t          j	        t                    t          j
        t                    z            sJ t          t          j        t                    t          j        t                              sJ t          t          j        t                    t          j        t                              sJ t          t          j        t                              sJ t          t          j        t                              sJ t          t          j        t          t          z                       sJ t          t          j        t          t          z                      sJ t          t          j        t           j        t"          z                      sJ t          t          j        t           j        t          t          z   z  t           z                      sJ t          t          j        t%          t&          dd                              du sJ t          t          j        t           j        t           t"          z   z                      du sJ t          t          j        t          dz            t          j        t                              sJ t          t          j        t          d                              sJ t          t          j        t)          t                                         sJ t          t          j        t+          t                                        sJ d S )Nr   Tr   r   Fr=   r>   )r   r   diagonalr   r   r"   r
   r   r   rR   rQ   r?   rS   r   r   r   r   r   r   r   r   r   r#   r$   r%   test_diagonalrX      se   qz!ac'HQKK/00!*Q--z!}}3  !%& & & &qz*Q**++,,,,,qz)Aq//**++t3333qz)Aq//**++u4444q!!$$q'9!'<'<<ajmmLLLLLqz!}}a033a6H6K6KKLLLLLq{1~~qz!}}-----q|A
1.....qz$     qz$     qz$+&&'''''qz$t)$$%%%%%qz"$r'""#####qz"$A,r/**+++++qz+a8899::dBBBBqz"$R.))**d2222qz!Q$A/////qz(1++&&'''''qz*R..))*****qz.++,,-------r$   c                      t          t          j        t          t                              t          j        t          t                                        sJ d S r    )r   r   realr   r   rN   r#   r$   r%   test_non_atomsr[      s>    qveAhhE!HH!5!56666666r$   c                     t          ddd          } t          ddd          }t          t          j        | |z             t          j        |           t          j        |          z            du sJ t          t          j        |           t          j        |                     du sJ t          t          j        | |z             t          j        |           t          j        |          z            du sJ d S )Nr   r   r   T)r	   r   r   rR   rS   r7   s     r%   test_non_trivial_impliesr]      s   S!QAS!QAq!!A#&&(:1(=(=!!$$)% & &)-. . . .q|A 21 5 566$>>>>q|AaC  !"4Q"7"7!!$$#% & &)-. . . . . .r$   c                     t          ddd          } t          | dd          }t          | dd          }t          t          j        |          t          j        |                     sJ t          t          j        |          t          j        |                     sJ t          t          j        |          t          j        |                     sJ t          t          j        |          t          j        |                     sJ t          t          j        |          t          j        |                     sJ t          t          j        |          t          j        |                     rJ t          t          j        |          t          j        |                     rJ t          t          j        |          t          j        |                     rJ t          t          j        |          t          j        |                     rJ t          t          j        |          t          j        |                     rJ d S )Nr   r3   )r   r   )r   r   )	r	   r   r   r   r?   r(   rW   rE   rQ   )r   BCs      r%   test_MatrixSlicera      s   S!QAAvv&&AAvv&&Aq{1~~q{1~~.....q|AQ00000qz!}}ajmm,,,,,q|AQ00000q!!$$a&8&;&;<<<<<1;q>>1;q>>222221<??ALOO444441:a==!*Q--000001<??ALOO444441%a((!*<Q*?*?@@@@@@@r$   c                  4   t          ddd          } t          t          j        t	          |                     t          j        |                     sJ t          t          j        t          |                     t          j        |                     sJ d S )Nr   r3   )r	   r   r   rN   r   rM   r   r   s    r%   test_det_trace_positiverd      s{    S!QAqz%((##Q%8%;%;<<<<<qz+a..))1+>q+A+ABBBBBBBr$   c                  	   t          ddd          } t          ddd          }t          t          j        |           t          j        |                     sJ t          t          j        |           t          j        |                     rJ t          t          j        |           t          j        |                     sJ t          t          j        | dz            t          j        |                     sJ t          t          j        | dz            t          j        |                     sJ t          t          j        | |z             t          j        |                     J t          t          j        | |z             t          j        |           t          j        |          z            sJ ddlm} t          t          j         || |                    t          j        |           t          j        |          z            sJ t          t          j        | |z             t          j        |           t          j        |          z            sJ t          t          j        | j                  t          j        |                     sJ t          t          j        | j	                  t          j        |           t          j
        |           z            sJ t          t          j        t          |                     t          j        |                     sJ t          t          j        t          |                     t          j        |                     sJ t          t          j        | j	                  t          j        |                     rJ t          d          }t          t          j        || z            t          j        |           t          j        |          z            sJ t          t          j        t          |                     t          j        |                     sJ t          dd	d	
          }t          t          j        | |z            t          j        |           t          j
        |           z            sJ t          t          j        | |z            t          j        |                     J d S )Nr   r3   r   r   r   )HadamardProductalphaeT)integernegative)r	   r   r   real_elementsinteger_elementscomplex_elements#sympy.matrices.expressions.hadamardrf   r"   r)   r(   r   r   r   rZ   r   )r   r   rf   rg   rh   s        r%   test_field_assumptionsro      s   S!QAS!QAqq!!1?1#5#5666661%a((!/!*<*<=====q!!$$aoa&8&899999q!!Q$''););<<<<<qq!t$$a&8&;&;<<<<<qqs##Q_Q%7%788@@@qqs##Q_Q%7%7!/!:L:L%LMMMMMCCCCCCqq!4455OA&&););;= = = = =q!!A#&&(:(:Q=OPQ=R=R(RSSSSSqqs##Q_Q%7%788888qqs##Q_Q%7%7!,q//%IJJJJJquQxx((!/!*<*<=====q!+a..1113Ea3H3HIIIII1%ac**A,>q,A,ABBBBB7OOEquQw''););afUmm)KLLLLLquQxx((!/!*<*<=====sD4000Aqq!t$$aoa&8&81<??&JKKKKKqq!t$$aoa&8&899AAAAAr$   c                     t          ddd          } t          t          j        | d                   t          j        |                     sJ t          t          j        | d                   t          j        |                     sJ t          t          j        | d                   t          j        |                     sJ t          t          j        t          d                              sJ t          t          j        t          dd                              sJ t          t          j        t          dd                              sJ ddlm} t          t          j         |d                              sJ d S )Nr   r3   r>   r   r   )DFT)r	   r   r   rZ   rk   ri   rl   complexrm   r
   r   r   "sympy.matrices.expressions.fourierrq   )r   rq   s     r%   test_matrix_element_setsrt     sQ   S!QAqvag 2 233333qy4!!1#5a#8#899999qy4!!1#5a#8#899999q!(1++../////q!*Q"2"23344444q!)Aq//2233333666666q!##a&&))*******r$   c                  6   t          ddd          } t          t          j        | d d df                   t          j        |                     sJ t          t          j        t	          | g| gg                    t          j        |                     sJ d S )Nr   r3   r   )r	   r   r   rl   r   rc   s    r%   &test_matrix_element_sets_slices_blocksrv     s    S!QAq!!AAAqD'**A,>q,A,ABBBBBq!+sQCj"9"9::*1--/ / / / / / /r$   c                  :   t          t          j        t          t                              t          j        t                              sJ t          t          j        t          t                              t          j        t                              sJ d S r    )r   r   ri   r   r   rl   r   r#   r$   r%   *test_matrix_element_sets_determinant_tracerx     sj    qyQ((!*<Q*?*?@@@@@qyq""A$6q$9$9:::::::r$   N)6sympy.assumptions.askr   r   sympy.core.symbolr   #sympy.matrices.expressions.diagonalr   r   sympy.matrices.denser   sympy.matrices.expressionsr	   r
   r   r   r   r   r   r   r   )sympy.matrices.expressions.factorizationsr   sympy.testing.pytestr   r   r   r   r   r   r   r   r   r&   r+   r.   r0   r8   r:   r@   rC   rF   rI   rK   rO   rU   rX   r[   r]   ra   rd   ro   rt   rv   rx   r#   r$   r%   <module>r      s   * * * * * * * * $ $ $ $ $ $ L L L L L L L L ' ' ' ' ' 'R R R R R R R R R R R R R R R R R R R R R R ; ; ; ; ; ; & & & & & &LaLaLa|FAq!!|FAq!!|FAq!!\$1\$1     
= = =8 8 8
 7 7 7  8U U U5 5 5*B B B+ + +. . .9 9 9< < <,@ @ @". . .07 7 7 . . .A A A C C C
B B B6	+ 	+ 	+/ / /; ; ; ; ;r$   