
    g`                     
   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlm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mZ d dlmZ d dlm Z  d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,dS )    )Add)	unchanged)Mul)symbols)Eq)Sum)imre)	Piecewise)ImmutableDenseMatrix)MatrixSymbol)MatAdd)
ZeroMatrixGenericZeroMatrixIdentityGenericIdentity	OneMatrix)MatMul)raisesc                  b    t          t          dd          sJ t          t          dd          sJ t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t	          d	           t          t                      sJ t	          d	d
           t          t           fd           t	          d	d           t          t           fd           d S )N   r   c                  "    t          dd          S Nr   r        i/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/expressions/tests/test_special.py<lambda>z+test_zero_matrix_creation.<locals>.<lambda>       z"a00 r   c                  "    t          dd          S N       @r   r   r   r   r   r   z+test_zero_matrix_creation.<locals>.<lambda>   s    z#q11 r   c                  "    t          dd          S N               @r   r   r   r   r   r   z+test_zero_matrix_creation.<locals>.<lambda>   r    r   c                  "    t          dd          S Nr   r   r   r   r   r   r   z+test_zero_matrix_creation.<locals>.<lambda>       z!R00 r   c                  "    t          dd          S Nr   r#   r   r   r   r   r   z+test_zero_matrix_creation.<locals>.<lambda>   s    z!S11 r   c                  "    t          dd          S Nr   r&   r   r   r   r   r   z+test_zero_matrix_creation.<locals>.<lambda>   r)   r   nFintegerc                  $    t                      S Nr   r.   s   r   r   z+test_zero_matrix_creation.<locals>.<lambda>       z!Q// r   Tnegativec                  $    t                      S r2   r   r3   s   r   r   z+test_zero_matrix_creation.<locals>.<lambda>!   r4   r   )r   r   r   
ValueErrorr   r3   s   @r   test_zero_matrix_creationr9      s,   ZA&&&&&ZA&&&&&
:00111
:11222
:00111
:00111
:11222
:00111AZA&&&&&U###A
:////000d###A
:////00000r   c                     t                      t          dd          } t          d| |           }k    sJ |k    sJ |k    sJ j        sJ t	          t
          fd           t	          t
          fd           t	          t
          fd           t                      k    sJ t          |          t          |          k    sJ t                     d S )Nr.   Tr/   Ac                       j         S r2   shapezs   r   r   z*test_generic_zero_matrix.<locals>.<lambda>/   	    ag r   c                       j         S r2   rowsr?   s   r   r   z*test_generic_zero_matrix.<locals>.<lambda>0   	    af r   c                       j         S r2   colsr?   s   r   r   z*test_generic_zero_matrix.<locals>.<lambda>1   rE   r   )r   r   r   is_ZeroMatrixr   	TypeErrorr   hash)r.   r;   r@   s     @r   test_generic_zero_matrixrL   $   s    AT"""AS!QA666666666666?
9oooo&&&
9nnnn%%%
9nnnn%%%88q====!Q<<6!99$$$$GGGGGr   c                      t          d          sJ t          d          sJ t          t          d            t          t          d            t          t          d            t          d           t                     sJ t          dd           t          t           fd	           t          dd
           t          t           fd           d S )Nr   r   c                       t          d          S )Nr   r   r   r   r   r   z/test_identity_matrix_creation.<locals>.<lambda><       x|| r   c                       t          d          S )Nr#   rO   r   r   r   r   z/test_identity_matrix_creation.<locals>.<lambda>=   s    x}} r   c                       t          d          S )Nr&   rO   r   r   r   r   z/test_identity_matrix_creation.<locals>.<lambda>>   rP   r   r.   Fr/   c                  "    t                     S r2   rO   r3   s   r   r   z/test_identity_matrix_creation.<locals>.<lambda>C       x{{ r   Tr5   c                  "    t                     S r2   rO   r3   s   r   r   z/test_identity_matrix_creation.<locals>.<lambda>E   rT   r   )r   r   r8   r   r3   s   @r   test_identity_matrix_creationrV   9   s    A;;A;;
:++,,,
:,,---
:++,,,AA;;U###A
:****+++d###A
:****+++++r   c                     t                      t          dd          } t          d| |           }k    sJ |k    sJ |k    sJ j        sJ dz  k    sJ t	          t
          fd           t	          t
          fd           t	          t
          fd           t                      k    sJ t          |          t          |          k    sJ t                     d S )	Nr.   Tr/   r;   r   c                       j         S r2   r=   Is   r   r   z'test_generic_identity.<locals>.<lambda>T   rA   r   c                       j         S r2   rC   rY   s   r   r   z'test_generic_identity.<locals>.<lambda>U   rE   r   c                       j         S r2   rG   rY   s   r   r   z'test_generic_identity.<locals>.<lambda>V   rE   r   )r   r   r   is_Identityr   rJ   r   rK   )r.   r;   rZ   s     @r   test_generic_identityr^   H   s    AT"""AS!QA666666666666=b5A::::
9oooo&&&
9nnnn%%%
9nnnn%%%88q====!Q<<6!99$$$$GGGGGr   c                      t          dd          sJ t          dd          sJ t          t          dd          t          d                    sJ t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d	            t          d
           t                      sJ t          d
d           t          t           fd           t          d
d           t          t           fd           d S )Nr   r      c                  "    t          dd          S r   r   r   r   r   r   z*test_one_matrix_creation.<locals>.<lambda>b       yQ// r   c                  "    t          dd          S r"   rb   r   r   r   r   z*test_one_matrix_creation.<locals>.<lambda>c   s    ya00 r   c                  "    t          dd          S r%   rb   r   r   r   r   z*test_one_matrix_creation.<locals>.<lambda>d   rc   r   c                  "    t          dd          S r(   rb   r   r   r   r   z*test_one_matrix_creation.<locals>.<lambda>e       yB// r   c                  "    t          dd          S r+   rb   r   r   r   r   z*test_one_matrix_creation.<locals>.<lambda>f   s    yC00 r   c                  "    t          dd          S r-   rb   r   r   r   r   z*test_one_matrix_creation.<locals>.<lambda>g   rg   r   r.   Fr/   c                  $    t                      S r2   rb   r3   s   r   r   z*test_one_matrix_creation.<locals>.<lambda>l       yA r   Tr5   c                  $    t                      S r2   rb   r3   s   r   r   z*test_one_matrix_creation.<locals>.<lambda>n   rk   r   )r   r   r   r   r8   r   r3   s   @r   test_one_matrix_creationrm   ^   sD   Q??Q??i1oox{{+++++
://000
:00111
://000
://000
:00111
://000AQ??U###A
:....///d###A
:..../////r   c                     t          dd          \  } }t          d| |          }t          | |          }||z   |k    sJ ||j        z  t          | |           k    sJ ||j        z  t          | |           k    sJ ||z
  t          |j         k    sJ |sJ |                                t          ||           k    sJ |                                |k    sJ |                                t          ||           k    sJ t          |          |k    sJ t          |          |k    sJ t          | |           dz  t          |           k    sJ t          dd                                          t          j        dd          k    sJ d S )Nn mTr/   r;   r      )r   r   r   Tr>   	transpose	conjugateadjointr
   r	   r   as_explicitr   zeros)r.   mr;   Zs       r   test_ZeroMatrixry   q   s   5$'''DAqS!QA1aAq5A::::QS5Jq!$$$$$$QS5Jq!$$$$$$q5J(((((HHH;;==Jq!,,,,,,;;==A99;;*Q******a55A::::a55A::::aQ(1++----a''))-A-G1-M-MMMMMMMr   c                  R   t          dd          } t          t          | | d          |           }t          |j        t                    sJ |                                t          d| z  |           k    sJ t          |                                j        t                    sJ d S Nr.   Tr/   F)evaluater   )r   r   r   
isinstancerD   doitr   )r.   Znns     r   test_ZeroMatrix_doitr      s    T"""A
SA...
2
2Cch$$$$$88::AaC++++++chhjjos+++++++r   c                     t          dd          \  } }t          d| |          }t          | |          }|j        | |fk    sJ t	          ||z   t
                    sJ |                                t          ||           k    sJ |                                |k    sJ |                                t          ||           k    sJ t          |          |k    sJ t          |          t          | |          k    sJ t          | |           dz  t          |           k    sJ t          | |           }|d         dk    sJ t          dd	          }|                                t          j        dd	          k    sJ d S )
Nro   Tr/   r;   r   )r`   r   r`   r   rp   )r   r   r   r>   r}   r   rr   rs   rt   r
   r	   r   r   ru   r   ones)r.   rw   r;   Us       r   test_OneMatrixr      sr   5$'''DAqS!QA!QA7q!fa!eS!!!!!;;==IaOO++++;;==A99;;)Aq//))))a55A::::a55Jq!$$$$$$Q??a8A;;....!QAT7a<<<<!QA==??271========r   c                  R   t          dd          } t          t          | | d          |           }t          |j        t                    sJ |                                t          d| z  |           k    sJ t          |                                j        t                    sJ d S r{   )r   r   r   r}   rD   r~   r   )r.   Unns     r   test_OneMatrix_doitr      s    T"""A
C1u---q
1
1Cch$$$$$88::1q5!,,,,,,chhjjos+++++++r   c                  :   t          dd          \  } }}t          d| d          }t          | |          t          ||          z  t          | |          |z  k    sJ |t          dd          z  |k    sJ t          dd          |j        z  |j        k    sJ d S )Nzn m kTr/   wr`   )r   r   r   rq   )r.   rw   kr   s       r   test_OneMatrix_mulr      s    gt,,,GAq!S!QAQ??Yq!__,	!Q!0CCCCCyA!####Q??QS AC''''''r   c            	         t          dd          \  } }t          d| |          }t          d          \  }}t          |           }t          |          }||z  |k    sJ ||z  |k    sJ |                                |k    sJ |                                |k    sJ |                                |k    sJ |                                |k    sJ t          |          |k    sJ t          |          t          | |           k    sJ |||f         dk    sJ t          |||f         |d| dz
  f|d| dz
  f                              | d                                          dk    sJ t          t          |||f         |d| dz
  f          |d| dz
  f                              | d                                          dk    sJ t          |||f         |d| dz
  f          }|                                dk    sJ t          |||f         |d| d	z
  f          }|                                                    t          d|dk    || d	z
  k    z  fd
                    sJ t          |||f         |d| dz
  f          }|                                                    t          d|dk    || dz
  k    z  fd
                    sJ t          d                                          t!          j        d          k    sJ d S )Nro   Tr/   r;   zi jr   r`   rp   r   )r   T)r   r   r   rr   inversers   rt   r
   r	   r   r   subsr~   dummy_eqr   ru   r   eye)r.   rw   r;   ijInImexprs           r   test_Identityr      s,   5$'''DAqS!QA5>>DAq	!B	!BR419999a419999<<>>R::<<2<<>>R::<<2b66R<<<<b66Z1%%%%%%ad8q====r!Q$x!Q!q!QqSk2277!<<AACCqHHHHs2ad8aAaC[))Aq!A#;77<<QqAAFFHHAMMMM r!Q$x!Q!%%D99;;!r!Q$x!Q!%%D99;;aA1H%&	
 	
     r!Q$x!Q!%%D99;;aA1H%&	
 	
     A;;""$$(<(@(C(CCCCCCCr   c                  N   t          dd          } t          t          | | d                    }t          |j        t                    sJ |                                t          d| z            k    sJ t          |                                j        t                    sJ d S r{   )r   r   r   r}   rD   r~   r   )r.   Inns     r   test_Identity_doitr      s    T"""A
3q!e,,,
-
-Cch$$$$$88::!A#&&&&chhjjos+++++++r   N)-sympy.core.addr   sympy.core.exprr   sympy.core.mulr   sympy.core.symbolr   sympy.core.relationalr   sympy.concrete.summationsr   $sympy.functions.elementary.complexesr	   r
   $sympy.functions.elementary.piecewiser   sympy.matrices.immutabler   "sympy.matrices.expressions.matexprr   !sympy.matrices.expressions.mataddr   "sympy.matrices.expressions.specialr   r   r   r   r   !sympy.matrices.expressions.matmulr   sympy.testing.pytestr   r9   rL   rV   r^   rm   ry   r   r   r   r   r   r   r   r   r   <module>r      s         % % % % % %       % % % % % % $ $ $ $ $ $ ) ) ) ) ) ) 7 7 7 7 7 7 7 7 : : : : : : 9 9 9 9 9 9 ; ; ; ; ; ; 4 4 4 4 4 4I I I I I I I I I I I I I I 4 4 4 4 4 4 ' ' ' ' ' '1 1 1$  *, , ,  ,0 0 0&N N N,, , ,> > >,, , ,( ( ('D 'D 'DT, , , , ,r   