
    sgS8                        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 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 d dlmZ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)ed        Z*y)    )
expand_mul)IRational)S)Symbol)sqrt)Abs)simplify)NonSquareMatrixError)MatrixzeroseyeSparseMatrix)xyz)raisesslow)allclosec                     t        g dg dg dg dg      } | j                         \  }}}|j                  sJ |j                  sJ ||z  j	                  |d      | z
  t        d      k(  sJ t        g dg dg d	g d
g      } | j                         \  }}}|j                  sJ |j                  sJ ||z  j	                  |d      | z
  t        d      k(  sJ t        g dg dg dg dg      } | j                  d      \  }}}|j                  sJ |j                  sJ ||z  j	                  |d      | z
  t        dd      k(  sJ t        g dg dg dg      } | j                  d      \  }}}|j                  sJ |j                  sJ ||z  j	                  |d      | z
  t        d      k(  sJ t        dt        dfdt        dft        dt        ff      j                         \  }}}|j                  sJ |j                  sJ ||z  j	                  |d      z
  t        d      k(  sJ t        d      }|j                  du sJ |j                  du sJ t        d      }|j                  du sJ |j                  du sJ t        g dg dg dg      j                         \  }}}}|z  ||j                         z  |z  k(  sJ t        g dg dg dg dg      j                         \  }}}}|z  ||j                         z  |z  k(  sJ t        g d g d!g d"g      j                         \  }}}}|z  ||j                         z  |z  k(  sJ t        g dg dg dg      t        t        fd#       y )$N)r            )r   r         )   r   r   r   )   r   r   backwardr   )r   r   r   r   )r   r   r   r   )   r   r   r   )ir   r   r   r    r   r   r   r   r   r   r   	   )
         F	rankcheckr   )r   r   r   r    r   r   )r    r   r   r   r   r   T)r!   )r   r   r   )r    r   r   )r   r   r   )r   r   r   r    r   r   r   )r   r   r   )r   r    r   r   )r   r-   r   r   )r   r   r    r+   )r   r    r   c                  (     j                  d      S )NTr(   )LUdecomposition_Simple)Ms   [/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/tests/test_decompositions.py<lambda>ztest_LUdecomp.<locals>.<lambda>b   s     8 84 8 H     )r   LUdecompositionis_loweris_upperpermute_rowsr   r   r   r   LUdecompositionFFinvr   
ValueError)	testmatLUpmLmUPDeer0   s	           @r1   test_LUdecomprC      s   l""#% &G %%'GAq!::::::aCa,w6%(BBBm"##% &G %%'GAq!::::::aCa,w6%(BBB i"$ %G %%%6GAq!::::::aCa,w6%1+EEE i! "G %%%6GAq!::::::aCa,w6%(BBBAq	Aq!9q!Qi01A!GAq!::::::aCa,q0E!H<<<	  
B ;;$;;%	  
B ;;%;;$ 		 	A &&(LAq#qQ3!CGGI+a-  	!A &&(LAq#qQ3!CGGI+a-	 	A &&(LAq#qQ3!CGGI+a- 				A
 :HIr3   c                     t        ddgddgg      } | j                         \  }}}||z  |j                  z  | k(  sJ |j                  |z  t        |j                        k(  sJ |j                  |z  t        |j                        k(  sJ t        ddgg      }|j                         \  }}}||z  |j                  z  |k(  sJ |j                  |z  t        |j                        k(  sJ |j                  |z  t        |j                        k(  sJ t        g dg dg dg dg      }|j                         \  }}}||z  |j                  z  |k(  sJ |j                  |z  t        |j                        k(  sJ |j                  |z  t        |j                        k(  sJ t        t        dd      t        d      gdt        dd	      gg      }|j                         \  }}}t        |j                  |z        t        |j                        k(  sJ t        |j                  |z        t        |j                        k(  sJ t        ||z  |j                  z        |k(  sJ y )
Nr    r   )r    r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   singular_value_decompositionTr   colsr   r   r
   )Ar=   r   VBCDs          r1   "test_singular_value_decompositionDrM   d   s&   AA A,,.GAq!q5133;!337c!&&k!!!337c!&&k!!!AxA,,.GAq!q5133;!337c!&&k!!!337c!&&k!!!	 	A ,,.GAq!q5133;!337c!&&k!!!337c!&&k!!!!Qa)Ax1~+>?@A,,.GAq!ACC!GAFF+++ACC!GAFF+++AEACCK A%%%r3   c                  .   t        ddgddgg      } | j                         \  }}t        }|t        d |dd      z   |d      dz   |d      dz   |dd      z  z  gdd |dd      z  z   |d       dz   |d      dz   |dd      z  z  gg      k(  sJ |t        d |dd      z  dd |dd      z  z  gd |d      dz   |dd      z  gg      k(  sJ ||z  | k(  sJ |j                  |z  t	        d      k(  sJ t        g dg d	g d
g      } | j                         \  }}|j                  |z  t	        |j
                        k(  sJ |j                  sJ | ||z  k(  sJ t        g dg dg dg      } | j                         \  }}|j                  |z  t	        |j
                        k(  sJ |j                  sJ | ||z  k(  sJ t        d      }t        |g      } | j                         \  }}|t        |t        |      z  g      k(  sJ |t        t        |      g      k(  sJ t        |dgd|gg      } | j                         \  }}||t        |      z  t        ddgddgg      z  k(  sJ |t        |      t        ddgddgg      z  k(  sJ y )Nr    r   r   r   r-   r   r   r    r    r    )r    r    r   )r   r   r   )r'   r   i)r   r      )r      r   )	r   QRdecompositionr   rF   r   rG   r6   r   r	   )rH   Qr   Rr   s        r1   test_QRrV      s   AA ADAqAaAh;!A$q&1Q46Ab!H"445	
1aAh;!A$q1Q46Ab!H"4457 8 8 8 8 AaGQq!B({]3a!A$q&1Q79J5KLMMMMQ3!8O8337c!f	9i01ADAq337c!&&k!!!:::!8O8k;78ADAq337c!&&k!!!:::!8O8sAsADAqCF
|$$$$Ax    AA ADAqCF
VaVaV$455555A!Q!Q 011111r3   c                     t        g dg dg dg dg      } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g dg dg dg dg      } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        d	d
d
d	g      } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g dg dg      } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g dg dg dg      } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        d
d	d
d	g      } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ y )N)r$   r      )r'   r   )r   r   r   )r   rZ   )r    r-   r   )r    r   r   )r    r   r   )r    r-   r   r   r    r!   r"   r,   )r    r   r$      )r    r      @   r   rS   rF   r   rG   r6   rH   rT   rU   s      r1   test_QR_non_squarer`      s0   
KK@AADAq337c!&&k!!!:::!8O8
J	:>?ADAq337c!&&k!!!:::!8O8q!aVADAq337c!&&k!!!:::!8O8 		9%&ADAq337c!&&k!!!:::!8O8m^<=ADAq337c!&&k!!!:::!8O8q!aVADAq337c!&&k!!!:::!8O8r3   c                  B	   t        g dg dg dg      } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g dg dg dg dg      } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g dg dg dg dg      j                  } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g dg      } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g dg      j                  } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g dg dg      } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g dg dg      j                  } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g dg dg      j                  } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g d	g d
g d	g      j                  } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g d	g d
g d	g dg      j                  } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ t        g dg dg dg dg      j                  } | j                         \  }}|j                  |z  t        |j                        k(  sJ |j
                  sJ | ||z  k(  sJ y )Nr!   r"   r#   rO   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   r   r,   )r   r   r   r   r^   r_   s      r1   test_QR_trivialrb      s   	9i01ADAq337c!&&k!!!:::!8O8	9i;<ADAq337c!&&k!!!:::!8O8	9i;<>>ADAq337c!&&k!!!:::!8O8 		{ADAq337c!&&k!!!:::!8O8	{ADAq337c!&&k!!!:::!8O8	9%&ADAq337c!&&k!!!:::!8O8	9%&((ADAq337c!&&k!!!:::!8O8 		9%&((ADAq337c!&&k!!!:::!8O8lL9:<<ADAq337c!&&k!!!:::!8O8lL,GHJJADAq337c!&&k!!!:::!8O8	9i;<>>ADAq337c!&&k!!!:::!8O8r3   c                  H   t        ddgddgg      } | j                         \  }}t        ||z  |       sJ t        ||j                  z  t        j                  d            sJ t        |j                  |z  t        j                  d            sJ t        ddgddgg      } | j                         \  }}t        ||z  |       sJ t        ||j                  z  t        j                  d            sJ t        |j                  |z  t        j                  d            sJ y )Nr    g)\(?r   gjt?)r   rS   r   rF   r   r_   s      r1   test_QR_floatrd     s    AD	"#ADAqAE1AGVZZ]+++ACC!GVZZ]+++AE
#$ADAqAE1AGVZZ]+++ACC!GVZZ]+++r3   c                      dfd} 	 t        ddgddgg      j                  |       \  }}J # t        $ r}|j                  d   k(  sJ Y d }~y d }~ww xY w)NI got passed in!c                     t              Nr:   valuemagic_strings    r1   goofyiszeroz;test_LUdecomposition_Simple_iszerofunc.<locals>.goofyiszero)      &&r3   r    r   
iszerofunc)r   r/   r:   args)rm   lur>   errrl   s       @r1   &test_LUdecomposition_Simple_iszerofuncrt   %  so     &L'AA'(??;?WA
 5	  sxx{***s   $0 	AAAc                      dfd} 	 t        ddgddgg      j                  |       \  }}}J # t        $ r}|j                  d   k(  sJ Y d }~y d }~ww xY w)Nrf   c                     t              rh   ri   rj   s    r1   rm   z4test_LUdecomposition_iszerofunc.<locals>.goofyiszero8  rn   r3   r    r   ro   )r   r4   r:   rq   )rm   lur>   rs   rl   s        @r1   test_LUdecomposition_iszerofuncry   4  sq     &L'1a&1a&)*::k:R1a
 5	  sxx{***s   %1 	AAAc            
         t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        d      } | j	                  d      \  }}||z  |j
                  z  | k(  sJ t        d	      } | j	                         \  }}||z  |j
                  z  | k(  sJ |j                  sJ |t        g d
t        dd      ddgt        dd      t        dd      dgg      k(  sJ |j                         sJ |t        g dg dg dg      k(  sJ t        ddt        z  ddt        z  z   fdt        z  ddt        z   fddt        z  z
  dt        z
  dff      } | j	                         \  }}t        ||z  |j                  z        | k(  sJ |j                         t        g d
t        dz  ddgt        j                  t        dz  z
  ddgg      k(  sJ |j                         t        d      k(  sJ t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        d      } | j	                  d      \  }}||z  |j
                  z  | k(  sJ t        d	      } | j	                         \  }}||z  |j
                  z  | k(  sJ |j                  sJ |t        g d
t        dd      ddgt        dd      t        dd      dgg      k(  sJ |j                         sJ |t        g dg dg dg      k(  sJ t        ddt        z  ddt        z  z   fdt        z  ddt        z   fddt        z  z
  dt        z
  dff      } | j	                         \  }}t        ||z  |j                  z        | k(  sJ |t        d
t        dz  ddft        j                  t        dz  z
  ddff      k(  sJ |t        d      k(  sJ y )Nc                  4    t        d      j                         S Nr    r   r   LDLdecomposition r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>D  s    )H)H)J r3   c                  4    t        d      j                         S Nr}   )r   r   r~   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>E      v&67HHJ r3   c                  J    t        dt        z   dfdf      j                         S Nr   r   )r   r    )r   r   r   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>F  s!    vAqz6&:;LLN r3   c                  4    t        d      j                         S N)r    r   )r   r    r~   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>G  r   r3   c                  8    t        d      j                  d      S Nr   F	hermitianr~   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>H  s    v&67HHSXHY r3   r   Fr   ))      )r      r   )r   r   r&   r*   r   r   r    r   r-   )r   r   r   )r   r$   r   r   r   r$   r   r   r   r&   ))r   r   r   )r   r    r   r   c                  4    t        d      j                         S r|   r   r   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>Y  s    f)=)N)N)P r3   c                  4    t        d      j                         S r   r   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>Z      |,<=NNP r3   c                  J    t        dt        z   dfdf      j                         S r   )r   r   r   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>[  s!    |a!eQZ,@ARRT r3   c                  4    t        d      j                         S r   r   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>\  r   r3   c                  8    t        d      j                  d      S r   r   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>]  s    |,<=NNY^N_ r3   )r   r   r:   r   r   rF   r5   r   is_diagonalr   r   Hexpandr   Halfr   )rH   r<   rL   s      r1   test_LDLdecompositionr   C  s   
!JK
:JK
:NO
:JK
:YZ A.DAqq5133;!78ADAqq5133;!:::	Xa^Q#:Xb!_hWXZ[n^_<`abbbb==??
Iy9::::BqD!ac'"QqS!R!V$4q1Q3wQ6KLMADAqa!eacck"a'''88:QqS!QK!&&1Q3,19M NOOOO88: ABBBB
!PQ
:PQ
:TU
:PQ
:_`%&A.DAqq5133;!=>ADAqq5133;!:::	Xa^Q#:Xb!_hWXZ[n^_<`abbbb==??
Iy9::::q"Q$AaC(1Q326*:Q1Wb1fb<QRSADAqa!eacck"a'''	AaCA;!A#q!0DEFFFF89999r3   c            	         t        g dg dg dg dg dg dg      g} | D ]f  }|j                  d      }||z  }||z  }t        ||z        |k(  sJ t        ||z        |k(  sJ |j                  |k(  sJ |j                  |k(  rfJ  y )	N)=   Y   7      G   r   )>   `   U   r   r[   r   )E   8      r   6   r   )r%   r   [   )   r   r   )r      r%   0   Z   r   )r   r   r   r   r   r   RD)method)r   pinvr
   r   )AsrH   A_pinvAApApAs        r1   1test_pinv_succeeds_with_rank_decomposition_methodr   n  s    
  
B  t$&jqja A%%%f%///uu||uu||r3   c                  n   t        ddg       } | j                         \  }}|j                  sJ |j                  |j                  cxk(  r| j                         k(  sJ  J ||z  | k(  sJ t        dddg      } | j                         \  }}|j                  sJ |j                  |j                  cxk(  r| j                         k(  sJ  J ||z  | k(  sJ t        ddg d      } | j                         \  }}|j                  sJ |j                  |j                  cxk(  r| j                         k(  sJ  J ||z  | k(  sJ t        g dg dg dg d	g      } | j                         \  }}|j                  sJ |j                  |j                  cxk(  r| j                         k(  sJ  J ||z  | k(  sJ y )
Nr   r    r   r   )	r    r   r   r    r   r   r    r   r   )r   r   r    r   r   r   r   )r-   r   r   r   r    rY   r   )r   r   r   rZ   rZ   r   r   )r-   r   r   r-   r   r    r   )r   rank_decomposition
is_echelonrG   rowsrank)acfs      r1   test_rank_decompositionr     s   q!RA!DAq<<<66QVV'qvvx'''''q5A::q!aSA!DAq<<<66QVV'qvvx'''''q5A::q!01A!DAq<<<66QVV'qvvx'''''q5A::! 	" 	#A
 !DAq<<<66QVV'qvvx'''''q5A::r3   c            
         t        ddt        d      gt        d      t        dd      dgdt        dd      dgg      } | j                         \  }}t	        ||j
                  z        t        |j                        k(  sJ t	        |j
                  |z        t        |j                        k(  sJ |j                  sJ t	        ||z  |j
                  z        | k(  sJ t        g dg dg dg      }|j                         \  }}t	        ||j
                  z        t        |j                        k(  sJ t	        |j
                  |z        t        |j                        k(  sJ |j                  sJ t	        ||z  |j
                  z        |k(  sJ t        dt        d      ddgg d	dddt        d
      gg dg      }|j                         \  }}t	        ||j
                  z        t        |j                        k(  sJ t	        |j
                  |z        t        |j                        k(  sJ |j                  sJ t	        ||z  |j
                  z        |k(  sJ t        g dg dg dg      }|j                         \  }}t	        ||j
                  z        t        |j                        k(  sJ t	        |j
                  |z        t        |j                        k(  sJ |j                  sJ t	        ||z  |j
                  z        |k(  sJ t        g dg dg dg dg      }|j                         \  }}t	        ||j
                  z        t        |j                        k(  sJ t	        |j
                  |z        t        |j                        k(  sJ |j                  sJ t	        ||z  |j
                  z        |k(  sJ y )Nr    r   r   r   r   )r    r   r%   )r   r   r   )r   r'   "   )r   r   r   r   r   )r   r   r   r   r!   )rZ   r   r   )r   ir$   )r    r   r   r   )r   r    r   r   )r    r    r   r    )r    r    r    r   )	r   r   r   upper_hessenberg_decompositionr
   r   r   rG   is_upper_hessenberg)rH   r   rA   rJ   rK   rL   Es          r1   #test_upper_hessenberg_decompositionr     sl   	
AtAw	a(1a.!$	
HQNA 	A
 ++-DAqAGAFF+++ACC!GAFF+++    QUQSS[!a''' 	 	A
 ++-DAqAGAFF+++ACC!GAFF+++    AEACCK A%%%	
DGQ	
Aq$q'	 	A ++-DAqAGAFF+++ACC!GAFF+++    AEACCK A%%% 	A
 ++-DAqAGAFF+++ACC!GAFF+++    AEACCK A%%%	 	A ++-DAqAGAFF+++ACC!GAFF+++    AEACCK A%%%r3   N)+sympy.core.functionr   sympy.core.numbersr   r   sympy.core.singletonr   sympy.core.symbolr   (sympy.functions.elementary.miscellaneousr   $sympy.functions.elementary.complexesr	   sympy.simplify.simplifyr
   sympy.matrices.exceptionsr   sympy.matricesr   r   r   r   	sympy.abcr   r   r   sympy.testing.pytestr   r   sympy.testing.matricesr   rC   rM   rV   r`   rb   rd   rt   ry   r   r   r   r   r   r3   r1   <module>r      s    * * " $ 9 4 , : ; ;   - +SJj&D 2F%NDN,):V$< ;& ;&r3   