
    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( Z5y))*    )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 y N)r   r   squarer   r   T     Z/var/www/openai/venv/lib/python3.12/site-packages/sympy/assumptions/tests/test_matrices.pytest_squarer&      sL    qxx{188A;qxx!##r$   c                     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 y )NFTr   r   )r   r   
invertibler   r   r   r"   Ir
   r   r   fullrankr!   r#   r$   r%   test_invertibler+      s   q||AQ000q||A5(((q||AaC !,,q/2e;;;q||AaC !,,q/2:::q||AaC !,,q/ALLO"CDLLLq||ACC !)))q||ACC !,,q/2d:::q||ACC !T)))q||HQK()T111q||Jq!,-.%777q||IaO,-555q||IaO,-666q||A

1 ;<<<r$   c                  F   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 y )NFT)r   r   singularr   r(   r#   r$   r%   test_singularr.   '   sh    qzz!}%%%qzz!}all1o.%777qzz!}q||A./4777r$   c                      t        t        j                  t              t        j                  t                    du sJ y )NT)r   r   r(   r   r*   r#   r$   r%   test_invertible_fullrankr0   ,   s'    q||A

1.$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 y )	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78D@@@q||KAq)9(:;<=FFF	9%&A	9%&Aq||K	Q	ACC 	
FJJqM)   	   
 q||K	
fkk!Q 	A)   	   
 q||K	
FJJqM	Q	ACC )   	   
 q||K	A	
fkk!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 y )Nr   r2   TF)r   r   r(   r   r
   r   r   r#   r$   r%   test_invertible_BlockDiagMatrixr:   M   s    q||OHQK!EFG4OOOq||OJq!,<hqkJKLPUUUUq||OHQK1aIJKuTTTr$   c            	         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 y )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   s   q{{1~q{{1~...q{{1Q3Q0888q{{1Q3Q!++a.!@ATIIIq{{1q5!1;;q>AKKN#BCtKKKq{{1~%'''q{{1QSS5!"d***q{{133q57#$,,,q{{133q57#Q[[^4<<<q{{1b5!1;;q>2d:::q{{4 !T)))q{{4$;'(D000q{{4$;'(D000q{{2447#$,,,q{{244b>*+t333q{{244b>D012d:::q{{;q&&9:;tCCCq{{8A;'(D000q{{:a+,-555q{{9Q?+,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 y )NTr   Fr   )
r   r   r"   r)   r   r   r(   r   r
   r   )	predicates    r%   _test_orthogonal_unitaryrC   h   sw   y|Yq\***y~y|,444y~y|,444yA	!---y|%%%y|$$$y|all1o-.%777y1Q1	!!<=EEEy!%&$...yAq)*+u444q||A	!---9QU#Yq\IaL%@AAAAr$   c                  6    t        t        j                         y 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 y r    )rC   r   unitaryr   r   rE   r#   r$   r%   test_unitaryrI   y   s.    QYY'qyy|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 y )Nr   Tr   Fr   )r   r   r*   r   r"   r   r   r
   r   r   r(   r#   r$   r%   test_fullrankrK   }   s   qzz!}ajjm,,,qzz!Q$A///qzz!##

1.$666qzz!}%%%qzz!}%%%qzz!A#

1

1 =>$FFFqzz(1+&'4///qzz*Q*+,555qzz)Aq/*+t333qzz)Aq/*+u444q||AA/5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 y )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""133')<)<Q)?@DHHHq""133')<)<Q)?@DHHHq""1%&%///q""1%&...q""1a4(!*=*=a*@AAAq""1Q3q5)"Q%8%8%;;=@DE E Eq""1%q||A777q""133q57+"QZZ]247;< < <1&&qss1uQw/1D1DQ1GHHHq""8A;/0D888q"":a#345>>>q""9Q?34<<<q""9Q?34===q""1q5)1+>+>q+A",# $'+, , ,1&&r*A,?,?,BCCCqzz!D'"A$7$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 y )Nr   Tr   r   F)r   r   upper_triangularr   r   r"   r
   lower_triangularr   r   
triangularunit_triangularr#   r$   r%   test_triangularrU      s   q!!!acc'HQK"78!:L:LQ:Oq!;" #&*+ + +q!!!ACC%(!*<*<Q*?q!+" #&*+ + +q!!(1+./4777q!!*Q"234<<<q!!*Q"234<<<q!!)Aq/23t;;;q!!)Aq/23t;;;q!!)Aq/23u<<<q!!)Aq/23u<<<q||A 1 1! 4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 y )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      s   qzz!acc'HQK/0!**Q-zz!}3 !%& & &qzz*Q*+,,,qzz)Aq/*+t333qzz)Aq/*+u444q!!!$q'9'9!'<<ajjmLLLqzz!}a003a6H6H6KKLLLq{{1~qzz!}---q||A

1...qzz$   qzz$   qzz$+&'''qzz$t)$%%%qzz"$$r'"###qzz"$$A,r/*+++qzz+a89:dBBBqzz"$$R.)*d222qzz!Q$A///qzz(1+&'''qzz*R.)***qzz.+,---r$   c                      t        t        j                  t        t                    t        j
                  t        t                          sJ y r    )r   r   realr   r   rN   r#   r$   r%   test_non_atomsr[      s,    qvveAhE!H!5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 y )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 2 21 56$>>>q||AaC !"4"4Q"7!!!$#% &)-. . .r$   c                  b   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 y )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qzz!}ajjm,,,q||AQ000q!!!$a&8&8&;<<<1;;q>1;;q>2221<<?ALLO4441::a=!**Q-0001<<?ALLO4441%%a(!*<*<Q*?@@@@r$   c                     t        ddd      } t        t        j                  t	        |             t        j
                  |             sJ t        t        j                  t        |             t        j
                  |             sJ y )Nr   r3   )r	   r   r   rN   r   rM   r   r   s    r%   test_det_trace_positiverd      s`    S!QAqzz%(#Q%8%8%;<<<qzz+a.)1+>+>q+A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 y )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      sN   S!QAS!QAqq!1??1#56661%%a(!//!*<===q!!!$aooa&8999q!!!Q$');<<<qq!t$a&8&8&;<<<qqs#Q__Q%78@@@qqs#Q__Q%7!//!:L%LMMMCqq!45OOA&);;= = =q!!!A#&(:Q=O=OPQ=R(RSSSqqss#Q__Q%7888qqss#Q__Q%7!,,q/%IJJJquQx(!//!*<===q!!+a.113E3Ea3HIII1%%acc*A,>,>q,ABBB7OEquQw');affUm)KLLLquQx(!//!*<===sD40Aqq!t$aooa&81<<?&JKKKqq!t$aooa&89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 y )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     s   S!QAqvvag 2333qyy4!1#5#5a#8999qyy4!1#5#5a#8999q!!(1+.///q!!*Q"23444q!!)Aq/23336q!!#a&)***r$   c                     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 y )Nr   r3   r   )r	   r   r   rl   r   rc   s    r%   &test_matrix_element_sets_slices_blocksrv     sx    S!QAq!!!AqD'*A,>,>q,ABBBq!!+sQCj"9:**1-/ / /r$   c                     t        t        j                  t        t                    t        j
                  t                    sJ t        t        j                  t        t                    t        j
                  t                    sJ y r    )r   r   ri   r   r   rl   r   r#   r$   r%   *test_matrix_element_sets_determinant_tracerx     sR    qyyQ(!*<*<Q*?@@@qyyq"A$6$6q$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 'R R R ; &aaaFAq!FAq!FAq!$1$1 
=8
 7 78U5*B+.9<,@".07 . .A C
B6	+/;r$   