
    Rie%                         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mZmZmZmZ d dlmZmZ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 Z%dS )    )raises)ZZQQ)DDM)ddm_transposeddm_iaddddm_isubddm_inegddm_imatmulddm_imul	ddm_irrefddm_idetddm_iinvddm_iluddm_ilu_splitddm_ilu_solveddm_berk)DMShapeErrorDMNonInvertibleMatrixErrorDMNonSquareMatrixErrorc                  L    ddgddgg} t          |           ddgddggk    sJ d S )N            )r   as    Elib/python3.11/site-packages/sympy/polys/matrices/tests/test_dense.pytest_ddm_transposer      s@    
Q!QAAA///////    c                  b    ddgddgg} ddgddgg}t          | |           | ddgd	d
ggk    sJ d S )Nr   r   r   r               
      )r   r   bs     r   test_ddm_iaddr*      sW    
Q!QA
Q!QAQNNN!Q"b"""""""r    c                  b    ddgddgg} ddgddgg}t          | |           | d	d	gd	d	ggk    sJ d S )
Nr   r   r   r   r"   r#   r$   r%   )r	   r(   s     r   test_ddm_isubr-      sW    
Q!QA
Q!QAQNNN"bB8$$$$$$$r    c                  P    ddgddgg} t          |            | ddgddggk    sJ d S )	Nr   r   r   r   r,   )r
   r   s    r   test_ddm_inegr2   !   sC    
Q!QAQKKK"bB8$$$$$$$r    c                      ddgddgg} t          | d           | ddgddggk    sJ ddgddgg} t          | d           | ddgddggk    sJ d S )Nr   r   r   r   r#   r%   r   )r   r   s    r   test_ddm_matmulr4   '   s    
Q!QAQNNN!Q!Q     
Q!QAQNNN!Q!Q       r    c                  *   g dg dg} ddgddgddgg}d	d	gd	d	gg}t          || |           |d
dgddggk    sJ g dg dg dg}t          |||            |g dg dg dgk    sJ dgdgdgg}d	gd	gg}t          || |           |dgdggk    sJ d S )N)r   r   r   )r   r"   r#   r   r   r   r   r"   r#   r         1   @   )r   r   r   )	   r'      )      !   )   (   3          )r   )r   r)   c1c2b3c3s         r   test_ddm_imatmulrH   1   s   	IIIA
Q!Q!Q Aa&1a&	BAq2r(RH%%%%%
))YYY				*BAq+++|||\\\:::::#sQCB#sBAr2$r    c                  	   g } g }g }t          |           |k    sJ | |k    sJ t          d          t          d          gt          d          t          d          gg} t          d          t          d          gt          d          t          d          gg}ddg}t          |           |k    sJ | |k    sJ t          d          t          d          t          d          gt          d          t          d          t          d          gg} t          d          t          d          t          d          gt          d          t          d          t          d          gg}ddg}t          |           |k    sJ | |k    sJ t          d          t          d          t          d          gt          d          t          d          t          d          gg} t          d          t          d          t          d          gt          d          t          d          t          d          gg}ddg}t          |           |k    sJ | |k    sJ t          d          t          d          gt          d          t          d          gt          d          t          d          gg} t          d          t          d          gt          d          t          d          gt          d          t          d          gg}ddg}t          |           |k    sJ | |k    sJ t          d          t          d          t          d          gt          d          t          d          t          d          gg} t          d          t          d          t          d          gt          d          t          d          t          d          gg}ddg}t          |           |k    sJ | |k    sJ t          d          t          d          gt          d          t          d          gt          d          t          d          gg} t          d          t          d          gt          d          t          d          gt          d          t          d          gg}ddg}t          |           |k    sJ | |k    sJ d S )Nr   r   r   r   r   r/   )r   r   )AArpivotss      r   test_ddm_irrefrM   C   s   
A	BFQ<<6!!!!7777 Q%%A"Q%%A(Aa55"Q%%.2a55"Q%%.	)BVFQ<<6!!!!7777 Q%%A1	A1r!uu 56Aa55"Q%%B
 2a55"Q%%A"7	8BVFQ<<6!!!!7777 Q%%A1	A1r!uu 56Aa55"Q%%B
 2a55"Q%%A"7	8BVFQ<<6!!!!7777 Q%%A"Q%%A"Q%%A8Aa55"Q%%.2a55"Q%%.2a55"Q%%.	9BVFQ<<6!!!!7777 Q%%A1	A1r!uu 56Aa55"Q%%A
"Q%%A1!6	7BVFQ<<6!!!!7777 Q%%A"Q%%A"Q%%A8Aa55"Q%%.2a55"Q%%.2a55"Q%%.	9BVFQ<<6!!!!777777r    c                     g } t          | t                    t          d          k    sJ t          d          gg} t          | t                    t          d          k    sJ t          d          t          d          gt          d          t          d          gg} t          | t                    t          d          k    sJ t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d          gg} t          | t                    t          d          k    sJ t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d          gg} t          | t                    t          d          k    sJ t          dd          t          dd          gt          dd          t          dd          gg} t          | t                    t          dd	          k    sJ d S )
Nr   r   r   r   r0   r"   r/   r      )r   r   r   rJ   s    r   test_ddm_idetrQ   v   s   
AAr??bee####
Q%%	AAr??bee####
Q%%A"Q%%A(AAr??bff$$$$
Q%%A1	A1r!uu 51r!uubee7LMAAr??bff$$$$
Q%%A1	A1r!uu 51r!uubee7LMAAr??bee####
Q((Bq!HH	1a"Q((34AAr??bRjj((((((r    c                     g g t          t                     k    sJ g g t          t          fd           t          d          t          d          ggt          d          t          d          ggt          t          fd           t          dd          t          dd          gt          dd          t          dd          ggt          d          t          d          gt          d          t          d          ggt          dd          t          dd          gt          dd          t          d	d          gg} t          t                     | k    sJ t          dd          t          dd          gt          dd          t          dd          ggt          d          t          d          gt          d          t          d          ggt          t
          fd
           d S )Nc                  0    t           t                    S N)r   r   rJ   Ainvs   r   <lambda>ztest_ddm_inv.<locals>.<lambda>   s    xa44 r    r   r   r   c                  0    t           t                    S rT   r   r   rU   s   r   rW   ztest_ddm_inv.<locals>.<lambda>   s    8D!R+@+@ r    r   r   r0   r/   c                  0    t           t                    S rT   rY   rU   s   r   rW   ztest_ddm_inv.<locals>.<lambda>   s    xa/D/D r    )r   r   r   
ValueErrorr   r   )Ainv_expectedrJ   rV   s    @@r   test_ddm_invr]      s   
ADT1b19999
AD
:44444555
Q%%AAUUBqEEND
!#@#@#@#@#@AAA
Q((Bq!HH	1a"Q((34AUUBqEENRUUBqEEN+DQiiAq*R1XXr"ayy,ABMT1b=    
Q((Bq!HH	1a"Q((34AUUBqEENRUUBqEEN+D
%'D'D'D'D'DEEEEEr    c                  
   g } g }t          |           }| |k    sJ |g k    sJ g g} g g}t          |           }| |k    sJ |g k    sJ t          d          t          d          gt          d          t          d          gg} t          d          t          d          gt          d          t          d          gg}t          |           }| |k    sJ |g k    sJ t          d          t          d          gt          d          t          d          gg} t          d          t          d          gt          d          t          d          gg}t          |           }| |k    sJ |dgk    sJ t          d          t          d          t          d          gt          d          t          d          t          d	          gt          d
          t          d          t          d          gg} t          d          t          d          t          d          gt          d          t          d          t          d          gt          d
          t          d          t          d          gg}t          |           }| |k    sJ |g k    sJ t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d          gg} t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d          gg}t          |           }| |k    sJ |dgk    sJ t          d          t          d          t          d          gt          d          t          d          t          d	          gg} t          d          t          d          t          d          gt          d          t          d          t          d          gg}t          |           }| |k    sJ |g k    sJ t          d          t          d          gt          d          t          d          gt          d          t          d	          gg} t          d          t          d          gt          d          t          d          gt          d          t          d          gg}t          |           }| |k    sJ |g k    sJ d S )Nr   r   r   r   r0   r   r   r   r"   r#   r$   r%   r:   r1   r/   )r   r   )r   r   )rJ   Aluswapss      r   test_ddm_ilurc      sF   
A
CAJJE8888B;;;;	A$CAJJE8888B;;;;
Q%%A"Q%%A(AqEE2a55>BqEE2b66?
+CAJJE8888B;;;;
Q%%A"Q%%A(AqEE2a55>BqEE2a55>
*CAJJE8888VH
Q%%A1	A1r!uu 51r!uubee7LMAqEE2a55"Q%% 2a55"R&&"R&&"9BqEE2a55"Q%%;P
QCAJJE8888B;;;;
Q%%A1	A1r!uu 51r!uubee7LMAqEE2a55"Q%% 2a55"Q%%A"7"Q%%A29O
PCAJJE8888VH
Q%%A1	A1r!uu 56AqEE2a55"Q%% 2a55"R&&"R&&"9
:CAJJE8888B;;;;
Q%%A"Q%%A"Q%%A8AqEE2a55>BqEE2b66?RUUBqEEN
;CAJJE8888B;;;;;;r    c                  	   g } g }g }g }t          || t                    }| |k    sJ ||k    sJ |g k    sJ g g} t          d          gg}g g}t          d          gg}t          || t                    }| |k    sJ ||k    sJ |g k    sJ t          d          t          d          gt          d          t          d          gg} t          d          t          d          gt          d          t          d          gg}t          d          t          d          gt          d          t          d          gg}t          d          t          d          gt          d          t          d          gg}t          || t                    }| |k    sJ ||k    sJ |g k    sJ t          d          t          d          t          d          gt          d          t          d          t          d          gg} t          d          t          d          gt          d          t          d          gg}t          d          t          d          t          d          gt          d          t          d	          t          d
          gg}t          d          t          d          gt          d          t          d          gg}t          || t                    }| |k    sJ ||k    sJ |g k    sJ t          d          t          d          gt          d          t          d          gt          d          t          d          gg} t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d          gg}t          d          t          d          gt          d          t          d          gt          d          t          d          gg}t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d          gg}t          || t                    }| |k    sJ ||k    sJ |g k    sJ d S )Nr   r   r   r   r   r0   r"   r#   r1   r`   )r   r   )ULUexpLexprb   s        r   test_ddm_ilu_splitri      s   
A
ADD!Q##E99999999B;;;;	A
Q%%	A4DUUG9D!Q##E99999999B;;;;
Q%%A"Q%%A(A
Q%%A"Q%%A(AUUBqEENRUUBrFFO,DUUBqEENRUUBqEEN+D!Q##E99999999B;;;;
Q%%A1	A1r!uu 56A
Q%%A"Q%%A(AUUBqEE2a55!BqEE2b662b66#:;DUUBqEENRUUBqEEN+D!Q##E99999999B;;;;
Q%%A"Q%%A"Q%%A8A
Q%%A1	A1r!uu 51r!uubee7LMAUUBqEENRUUBrFFObeeRUU^<DUUBqEE2a55!BqEE2a55"Q%%#82a55"Q%%A:OPD!Q##E99999999B;;;;;;r    c                     t          d          t          d          gt          d          t          d          ggt          d          t          d          gt          d          t          d          ggg t          t          d          gt          d          ggdt                     t          t          d          gt          d          ggdt                     t          t          d          gt          dd          ggdt                     } t                     | k    sJ t          d          t          d          gt          d          t          d          ggt          d          t          d          gt          d          t          d          ggdgt          t          d          gt          d          ggdt                     t          t          d          gt          d          ggdt                     t          t          d          gt          dd          ggdt                     } t                     | k    sJ t          d          t          d          gt          d          t          d          gt          d          t          d          ggt          d          t          d          t          d          gt          d          t          d          t          d          gt          d	          t          d          t          d          ggg t          t          d          gt          d          gt          d          ggd
t                     t          t          d          gt          d          ggdt                     t          t          d          gt          dd          ggdt                     } t                     | k    sJ t          t          d          gt          d          gt          d          ggd
t                     t          t          fd           t          d          t          d          gt          d          t          d          ggt          d          t          d          gt          d          t          d          ggg t          t          d          gt          d          ggdt                     t          t          fd           t          d          t          d          ggt          d          ggg t          t          d          ggdt                     t          t
          fd           t          t          d          gt          d          gt          d          ggd
t                     t          t          fd           t          d          ggt          d          ggg t          d          ggg t          t          fd           g g g g g t                     g k    sJ d S )Nr   r   r   r0   r   )r   r   r   r_   r"   )r   r   c                  *    t                     S rT   r   rf   re   r)   rb   xs   r   rW   z$test_ddm_ilu_solve.<locals>.<lambda>(      }Q1eQ/O/O r    c                  *    t                     S rT   rl   rm   s   r   rW   z$test_ddm_ilu_solve.<locals>.<lambda>0  ro   r    )r   r   c                  *    t                     S rT   rl   rm   s   r   rW   z$test_ddm_ilu_solve.<locals>.<lambda>8  s    aAua(H(H r    c                  *    t                     S rT   rl   )rf   re   rF   rb   rn   s   r   rW   z$test_ddm_ilu_solve.<locals>.<lambda><  s    q!Qr!B!B r    c                  *    t                     S rT   rl   rm   s   r   rW   z$test_ddm_ilu_solve.<locals>.<lambda>D  s    q!Qq!A!A r    )r   r   r   r   r   NotImplementedErrorr   )xexprf   re   r)   rF   rb   rn   s    @@@@@@r   test_ddm_ilu_solverv     s    Q%%A"Q%%B)A
Q%%A"Q%%A(AEbeeWr!uug++AbeeWr!uug++AA"Q(($fb11D!Q5!$$$9999 Q%%A"Q%%A(A
Q%%A"Q%%A(AHEbeeWr!uug++AbeeWr!uug++AA"Q(($fb11D!Q5!$$$9999 Q%%A"Q%%B2a55"Q%%.9A
Q%%A1	A1r!uu 51r!uubee7LMAEbeeWr!uug1w'44AbeeWr!uug++AA"Q(($fb11D!Q5!$$$9999 	beeWr!uug1w'44A
%'O'O'O'O'O'O'O'OPPP Q%%A"Q%%A(A
Q%%A"Q%%A(AEbeeWr!uug++A
%'O'O'O'O'O'O'O'OPPP Q%%AA
Q%%	AEbeeWIvr""A
 H H H H H H H HIII 
r!uug1wA(&"	5	5B
<BBBBBBBBCCC Q%%	A
Q%%	AE
Q%%	A
A
<AAAAAAAABBB 	A
AE
A
A!Q5!$$$777777r    c                     g t          t                    t          d          ggk    sJ t          d          t          d          t          d          gt          d          t          d          t          d          gt          d          t          d          t          d	          ggt          d          gt          d
          gt          d          gt          d          gg} t          t                    | k    sJ t          t          d          t          d          ggdt                    t          t          fd           d S )Nr   r   r   r   r"   r#   r$   r%   r:   iir   )r   r   c                  .    t           t                    S rT   )r   r   rP   s   r   rW   z#test_ddm_charpoly.<locals>.<lambda>Y  s    !R r    )r   r   r   r   r   )AvecrJ   s    @r   test_ddm_charpolyrz   P  s   
AAr??1wi''''
Q%%A1	A1r!uu 51r!uubee7LMAUUGbggYC	BqEE73DAr??d""""beeRUU^fb))A
<000011111r    N)&sympy.testing.pytestr   sympy.polysr   r   sympy.polys.matrices.ddmr   sympy.polys.matrices.denser   r   r	   r
   r   r   r   r   r   r   r   r   r   sympy.polys.matrices.exceptionsr   r   r   r   r*   r-   r2   r4   rH   rM   rQ   r]   rc   ri   rv   rz    r    r   <module>r      s   ' ' ' ' ' '         ( ( ( ( ( (M M M M M M M M M M M M M M M M M M M M M M M M M M M M M MF F F F F F F F F F0 0 0
# # #% % %% % %! ! !  $0 0 0f) ) )(F F F2/ / /d, , ,^I I IX	2 	2 	2 	2 	2r    