
    gS8                     
   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*dS )    )
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        sJ |j        sJ ||z                      |d          | z
  t          d          k    sJ t          g dg dg d	g d
g          } |                                 \  }}}|j        sJ |j        sJ ||z                      |d          | z
  t          d          k    sJ t          g dg dg dg dg          } |                     d          \  }}}|j        sJ |j        sJ ||z                      |d          | z
  t          dd          k    sJ t          g dg dg dg          } |                     d          \  }}}|j        sJ |j        sJ ||z                      |d          | z
  t          d          k    sJ t          dt          dfdt          dft          dt          ff                                          \  }}}|j        sJ |j        sJ ||z                      |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          	                                \  }}}}|z  ||
                                z  |z  k    sJ t          g dg dg dg dg          	                                \  }}}}|z  ||
                                z  |z  k    sJ t          g d g d!g d"g          	                                \  }}}}|z  ||
                                z  |z  k    sJ t          g dg dg dg          t          t          fd#           d S )$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                  0                          d          S )NTr(   )LUdecomposition_Simple)Ms   d/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/tests/test_decompositions.py<lambda>ztest_LUdecomp.<locals>.<lambda>b   s     8 84 8 H 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   lll"ll"ll#mm% & &G %%''GAq!::aCa,,w6%((BBBBmmm"ll#mm#mm% & &G %%''GAq!::aCa,,w6%((BBBB iiiiiii"ll$ % %G %%%66GAq!::aCa,,w6%1++EEEE iiiiiii! " "G %%%66GAq!::aCa,,w6%((BBBBAq	Aq!9q!Qi011A!!GAq!::aCa,,q0E!HH<<<<	  
 
B ;$;%	  
 
B ;%;$ 								 	 	A &&((LAq#qQ3!CGGII+a-  	! 	!A &&((LAq#qQ3!CGGII+a-							 	 	A &&((LAq#qQ3!CGGII+a- 								 	A
 :HHHHIIIIIr3   c                     t          ddgddgg          } |                                 \  }}}||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          }|                                \  }}}||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          }|                                \  }}}||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          }|                                \  }}}t          |j        |z            t          |j                  k    sJ t          |j        |z            t          |j                  k    sJ t          ||z  |j        z            |k    sJ d S )
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   sq   AA  A,,..GAq!q513;!37c!&kk!!!!37c!&kk!!!!AxA,,..GAq!q513;!37c!&kk!!!!37c!&kk!!!!	 	 	A ,,..GAq!q513;!37c!&kk!!!!37c!&kk!!!!!Qa)Ax1~~+>?@@A,,..GAq!AC!GAF++++AC!GAF++++AEACK  A%%%%%%r3   c                     t          ddgddgg          } |                                 \  }}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        |z  t	          |j                  k    sJ |j        sJ | ||z  k    sJ t          g dg dg dg          } |                                 \  }}|j        |z  t	          |j                  k    sJ |j        sJ | ||z  k    sJ t          d          }t          |g          } |                                 \  }}|t          |t          |          z  g          k    sJ |t          t          |          g          k    sJ t          |dgd|gg          } |                                 \  }}||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 d S )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      so   AA  ADAqAaaAhh;!!A$$q&11Q446AAb!HH"445	
1aaAhh;!!A$$q11Q446AAb!HH"4457 8 8 8 8 8 8 AAaGGQq!!B(({]3a!!A$$q&11Q779J5KLMMMMMMQ3!888837c!ff			999iii011ADAq37c!&kk!!!!:!8888kkk;;;788ADAq37c!&kk!!!!:!8888sAsADAqCFF
|$$$$$$Ax      AA  ADAqCFF
VaVaV$45555555A!Q!Q 0111111111r3   c                     t          g dg dg dg dg          } |                                 \  }}|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        |z  t          |j                  k    sJ |j        sJ | ||z  k    sJ t          d	d
d
d	g          } |                                 \  }}|j        |z  t          |j                  k    sJ |j        sJ | ||z  k    sJ t          g dg dg          } |                                 \  }}|j        |z  t          |j                  k    sJ |j        sJ | ||z  k    sJ t          g dg dg dg          } |                                 \  }}|j        |z  t          |j                  k    sJ |j        sJ | ||z  k    sJ t          d
d	d
d	g          } |                                 \  }}|j        |z  t          |j                  k    sJ |j        sJ | ||z  k    sJ d S )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`      s   


KKKKKK@AAADAq37c!&kk!!!!:!8888


JJJ			:::>??ADAq37c!&kk!!!!:!8888q!aVADAq37c!&kk!!!!:!8888 				999%&&ADAq37c!&kk!!!!:!8888mmm^^^<==ADAq37c!&kk!!!!:!8888q!aVADAq37c!&kk!!!!:!888888r3   c                     t          g dg dg dg          } |                                 \  }}|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        |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          } |                                 \  }}|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 dg          } |                                 \  }}|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        |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          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 d S )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   			999iii011ADAq37c!&kk!!!!:!8888			999iii;<<ADAq37c!&kk!!!!:!8888			999iii;<<>ADAq37c!&kk!!!!:!8888 				{ADAq37c!&kk!!!!:!8888			{ADAq37c!&kk!!!!:!8888			999%&&ADAq37c!&kk!!!!:!8888			999%&&(ADAq37c!&kk!!!!:!8888 				999%&&(ADAq37c!&kk!!!!:!8888lllLLL9::<ADAq37c!&kk!!!!:!8888lllLLL,,,GHHJADAq37c!&kk!!!!:!8888			999iii;<<>ADAq37c!&kk!!!!:!888888r3   c                  j   t          ddgddgg          } |                                 \  }}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          } |                                 \  }}t          ||z  |           sJ t          ||j        z  t          j        d                    sJ t          |j        |z  t          j        d                    sJ d S )Nr    g)\(?r   gjt?)r   rS   r   rF   r   r_   s      r1   test_QR_floatrd     s*   AD	"##ADAqAE1AGVZ]]+++++AC!GVZ]]+++++AE
#$$ADAqAE1AGVZ]]+++++AC!GVZ]]+++++++r3   c                      dfd} 	 t          ddgddgg                              |           \  }}n+# t          $ r}|j        d         k    sJ Y d }~d S d }~ww xY wJ )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   %  s     &L' ' ' ' 'AA'((??;?WWAA   sx{**** Ls   ,7 
AAAc                      dfd} 	 t          ddgddgg                              |           \  }}}n+# t          $ r}|j        d         k    sJ Y d }~d S d }~ww xY wJ )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  s     &L' ' ' ' '1a&1a&)**::k:RR1aa   sx{**** Ls   -8 
A AA c            
      V	   t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          d          } |                     d          \  }}||z  |j        z  | k    sJ t          d	          } |                                 \  }}||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 |                                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          } |                                 \  }}t          ||z  |j        z            | k    sJ |                                t          g d
t          dz  ddgt          j        t          dz  z
  ddgg          k    sJ |                                t          d          k    sJ t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          d          } |                     d          \  }}||z  |j        z  | k    sJ t          d	          } |                                 \  }}||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 |                                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          } |                                 \  }}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 d S )Nc                  D    t          d                                          S Nr    r   r   LDLdecomposition r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>D  s    )H)H)J)J r3   c                  D    t          d                                          S Nr}   )r   r   r~   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>E      v&677HHJJ r3   c                  \    t          dt          z   dfdf                                          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N r3   c                  D    t          d                                          S N)r    r   )r   r    r~   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>G  r   r3   c                  H    t          d                              d          S Nr   F	hermitianr~   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>H  s!    v&677HHSXHY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                  D    t          d                                          S r|   r   r   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>Y  s    f)=)=)N)N)P)P r3   c                  D    t          d                                          S r   r   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>Z      |,<==NNPP r3   c                  \    t          dt          z   dfdf                                          S r   )r   r   r   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>[  s'    |a!eQZ,@AARRTT r3   c                  D    t          d                                          S r   r   r   r3   r1   r2   z'test_LDLdecomposition.<locals>.<lambda>\  r   r3   c                  H    t          d                              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!JKKK
:JJKKK
:NNOOO
:JJKKK
:YYZZZ  A..DAqq513;!788ADAqq513;!:			Xa^^Q#:Xb!__hWXZ[nn^_<`abbbbbb==??


IIIyyy9::::::BqD!ac'"QqS!R!V$4q1Q3wQ6KLMMADAqa!eack""a''''88::QqS!QK!&1Q3,19M NOOOOOO88:: ABBBBBB
!P!PQQQ
:PPQQQ
:TTUUU
:PPQQQ
:__```%&&A..DAqq513;!=>>ADAqq513;!:			Xa^^Q#:Xb!__hWXZ[nn^_<`abbbbbb==??


IIIyyy9::::::q"Q$AaC(1Q326*:Q1Wb1fb<QRSSADAqa!eack""a''''	AaCA;!A#q!0DEFFFFFF899999999r3   c            	      (   t          g dg dg dg dg dg dg          g} | D ]l}|                    d          }||z  }||z  }t          ||z            |k    sJ t          ||z            |k    sJ |j        |k    sJ |j        |k    sJ md S )	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%%////u||||u||||| r3   c                  h   t          ddg           } |                                 \  }}|j        sJ |j        |j        cxk    r|                                 k    sn J ||z  | k    sJ t          dddg          } |                                 \  }}|j        sJ |j        |j        cxk    r|                                 k    sn J ||z  | k    sJ t          ddg d          } |                                 \  }}|j        sJ |j        |j        cxk    r|                                 k    sn J ||z  | k    sJ t          g dg dg dg d	g          } |                                 \  }}|j        sJ |j        |j        cxk    r|                                 k    sn J ||z  | k    sJ d S )
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<6QV''''qvvxx''''''q5A::::q!aSA!!DAq<6QV''''qvvxx''''''q5A::::q!00011A!!DAq<6QV''''qvvxx''''''q5A::::!!!   	" 	# 	#A
 !!DAq<6QV''''qvvxx''''''q5A::::::r3   c            
         t          ddt          d          gt          d          t          dd          dgdt          dd          dgg          } |                                 \  }}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          }|                                \  }}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          }|                                \  }}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          }|                                \  }}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          }|                                \  }}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 d S )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     s   	
AtAww	a(1a..!$	
HQNNA 	 	A
 ++--DAqAGAF++++AC!GAF++++    QUQS[!!a'''' 	

		 	 	A
 ++--DAqAGAF++++AC!GAF++++    AEACK  A%%%%	
DGGQ	
Aq$q''	 	 	A ++--DAqAGAF++++AC!GAF++++    AEACK  A%%%%		



 	 	A
 ++--DAqAGAF++++AC!GAF++++    AEACK  A%%%%	 	 	A ++--DAqAGAF++++AC!GAF++++    AEACK  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 9 9 9 9 9 4 4 4 4 4 4 , , , , , , : : : : : : ; ; ; ; ; ; ; ; ; ; ; ;           - - - - - - - - + + + + + +SJ SJ SJj& & &D 2  2  2F% % %ND D DN, , ,    ): ): ):V  $  < ;& ;& ;& ;& ;&r3   