
    \h^!                        S SK JrJr  S SKJrJr  S SKJr  S SKrS\" / SQ/ SQ/\5      \" SS /S S//\5      \" SS /S	S
//\5      \" SS /S S
//\5      \" / SQ/ SQ/\5      4S\" S	S/SS//\5      \" SS /S S//\5      \" SS /SS//\5      \" S	S /S S
//\5      \" S	S/S S
//\5      4S\" SS/SS	/SS//\5      \" / SQ/ SQ/ SQ/\5      \" / SQ/ SQ/ SQ/\5      \" SS /S S//\5      \" SS/S S/S S //\5      4S\" / SQ/ SQ/ SQ/\5      \" / SQ/ SQ/ SQ/\5      \" / SQ/ SQ/ SQ/\5      \" / SQ/ SQ/ SQ/\5      \" / SQ/ SQ/ SQ/\5      4S\" / SQ/ SQ/ SQ/\5      \" / SQ/ SQ/ SQ/\5      \" / SQ/ SQ/ SQ/\5      \" / SQ/ SQ/ SQ/\5      \" / SQ/ SQ/ SQ/\5      4S \" / \5      \" / \5      \" / \5      \" / \5      \" / \5      4S!\" / S"\5      \" / S#\5      \" / S#\5      \" / S#\5      \" / S"\5      4S$\" / / /S%\5      \R                  " S&\5      \R                  " S&\5      \R                  " S&\5      \" / / /S%\5      4S'\" S(S/S
S)//\5      \" SS /S S//\5      \" S(S /S
S//\5      \" S(S /S S//\5      \" S(S/S S//\5      4S*\" SS/S
S	//\5      \" SS /S S//\5      \" SS /S
S//\5      \" SS /S S//\5      \" SS/S S//\5      4S+\" / SQ/ S,Q/ S-Q/\5      \" / SQ/ SQ/ SQ/\5      \" / SQ/ S.Q/ S/Q/\5      \" / SQ/ S.Q/ S0Q/\5      \" / SQ/ S,Q/ S/Q/\5      4S1\" / SQ/ S2Q/ SQ/\5      \" / SQ/ SQ/ SQ/\5      \" / SQ/ S2Q/ S3Q/\5      \" / SQ/ S4Q/ S5Q/\5      \" / SQ/ S4Q/ S6Q/\5      4S7\" / S8Q/ S4Q/ S9Q/\5      \" / SQ/ SQ/ SQ/\5      \" / S8Q/ S:Q/ S/Q/\5      \" / S8Q/ S;Q/ S<Q/\5      \" / S8Q/ S:Q/ S/Q/\5      4S=\" / SQ/ S>Q/ S?Q/\5      \" / SQ/ SQ/ SQ/\5      \" / SQ/ S@Q/ SAQ/\5      \" / SQ/ SQ/ SQ/\5      \" / SQ/ SQ/ SQ/\5      4SB\" S//\5      \" S//\5      \" S//\5      \" S//\5      \" S//\5      4SC\" SD/SE//\5      \" SS /S S//\5      \" SDS /SESD//\5      \" SDS /S SD//\5      \" SD/S //\5      4SF\" SSG/SGSH/SISJ//\5      \" / SQ/ SQ/ SQ/\5      \" / S8Q/ SKQ/ SLQ/\5      \" / S8Q/ SMQ/ SNQ/\5      \" SSG/S SO/S S //\5      4SP\" S SQ//\5      \" S//\5      \" SQ//\5      \" SQ//\5      \" S SQ//\5      4SR\" / SSQ/ STQ/ SUQ/ SVQ/\5      \" / SWQ/ SXQ/ SYQ/ SZQ/\5      \" / S[Q/ S\Q/ S]Q/ S^Q/\5      \" / S[Q/ S_Q/ S`Q/ SaQ/\5      \" / SSQ/ SbQ/ ScQ/ SQ/\5      4Sd\" / SeQ/ SfQ/ SgQ/\5      \" / SQ/ SQ/ SQ/\5      \" / ShQ/ S4Q/ SiQ/\5      \" / ShQ/ SjQ/ SkQ/\5      \" / SfQ/ SlQ/ SQ/\5      4/r
Sm rSn rSo r\R                  R                  Sp\
5      Sq 5       r\R                  R                  Sp\
5      Sr 5       r\R                  R                  Sp\
5      Ss 5       r\R                  R                  Sp\
5      St 5       r\R                  R                  Sp\
5      Su 5       rSv rSw rSx rg)y    )DomainMatrixDM)ZZQQ)MatrixNzz_2x3)         )         r	   r   )r   r   zz_2x2r   r   r   zz_3x2r
   r   )r	   r   r   )r   r	   r   )r   r   r	   )r   r	   r   )r   r
   r	   zz_3x3)      	   )r   r	   r   )r   r
   r	   )r   r   r   )r   r   r   zz_zerozz_emptyzz_empty_0x2)r   r
   r   r   zz_empty_2x0)r
   r   r
   r
   zz_negativezz_mixed_signszz_upper_triangular)r   r   r   )r   r   r   )r   r   r   )r   r      )r   r   `   zz_lower_triangular)r
   r   r   )r   r      )r   r   r   )r   r   6   )r   r   r&   zz_diagonal)r
   r   r   )r   r   r   )r   r   r   )r      r   )r   r      rank_deficient_3x3)r
   r   r   )r   r   r   )r
   r	   r   )r   r   r	   zz_1x1zz_nx1_2rowsQ   r'   zz_nx2_3rowsr   -      T   )r   R   r   )r1   )   r4   )r   r3   r   )r   r   r4   r3   zz_1x2   zz_nx3_4rows)r2      r   )   ;      )5   .   r.   )?   0      )r	   r   r   r   )r   r	   r   r   )r   r   r	   r   )r   r   r   r	   )r2   r   r   r   )r9   P r   r   )r<   3 rB   r   )r>   rB   rB   rB   )r   rA   r   r   )r   r   Nr   )r   r   r   rB   )r   rA   r;   )r   r   rC   fflu_row_swap)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                    UR                  5       R                  5       nUR                  5       R                  5       nUR                  5       R                  5       nUR                  5       R                  5       nU R                  u  pUR                  X4:X  d   eUR                  X4:X  d   eUR                  X4:X  d   eUR                  X4:X  d   eUR                  (       d   eUR                  (       d   eUR                  5       u  pUR                  U 5      R                  U5      UR                  U5      R                  U5      :X  d   eUR                  (       d   eg N)	to_fieldto_denseshapeis_loweris_diagonalinv_denmatmulrmulis_upper)APLDUP_fieldL_fieldD_fieldU_fieldmndids                \/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/matrices/tests/test_fflu.py_check_fflur^      s   jjl##%Gjjl##%Gjjl##%Gjjl##%G77DA==QF"""==QF"""==QF"""==QF"""IIKEB88A;A!((2,"5"5a"8888    c                     [        U [        5      (       a  U $ [        U [        5      (       a  U R                  UR                  5      $ [        U R                  5       U R                  U R                  5      $ rF   )
isinstancer   r   to_DMdomainto_listrI   )rP   anss     r]   _to_DMrf      sQ    !\""	Av		wwszz""		QWWahh77r_   c                 N   U u  pgp[        Xb5      n[        Xs5      n[        X5      n[        X5      n	[        X5      nUR                  u  pUR                  X4:X  d   eUR                  X4:X  d   eUR                  X4:X  d   eU	R                  X4:X  d   eUR                  (       d   eUR                  (       d   eUR	                  5       u  pUR                  U5      R                  U5      UR                  U5      R                  U	5      :X  d   eU	R                  (       d   eg rF   )rf   rI   rJ   rK   rL   rM   rN   rO   )resultrP   P_ansL_ansD_ansU_ansrQ   rR   rS   rT   rY   rZ   r[   r\   s                 r]   _check_fflu_resultrm      s    JA!qAqAqAqAqA77DA77qf77qf77qf77qf:::===IIKEB88A;A!((2,"5"5a"8888:::r_   z#name, A, P_ans, L_ans, D_ans, U_ansc                 \    UR                  5       n[        UR                  5       XX4U5        g rF   )rH   rm   fflunamerP   ri   rj   rk   rl   s         r]   test_dm_dense_fflurr      s!    	

Aqvvx5?r_   c                 \    UR                  5       n[        UR                  5       XX4U5        g rF   )	to_sparserm   ro   rp   s         r]   test_dm_sparse_ffluru      s!    	Aqvvx5?r_   c                 \    UR                  5       n[        UR                  5       XX4U5        g rF   )to_ddmrm   ro   rp   s         r]   test_ddm_fflurx      !    	
Aqvvx5?r_   c                 \    UR                  5       n[        UR                  5       XX4U5        g rF   )to_sdmrm   ro   rp   s         r]   test_sdm_fflur|      ry   r_   c                    [         R                  " S5        UR                  [        [        4;  a1  UR                  R
                  (       d  [         R                  " S5        UR                  5       n[        UR                  5       XX4U5        g )NflintzDomain not supported by DFM)
pytestimportorskiprc   r   r   is_FFskipto_dfmrm   ro   rp   s         r]   test_dfm_fflur     sV    
 xxBx12	
Aqvvx5?r_   c                      [        / S[        5      n U R                  5       u  pp4UR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eg )Nr   )r   r   ro   rI   rP   rQ   rR   rS   rT   s        r]   test_fflu_empty_matrixr     sg    R$AJA!77f77f77f77fr_   c                  N   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       u  pp4UR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  (       d   eUR
                  (       d   eUR                  (       d   eUR                  5       u  pVUR                  U 5      R                  U5      UR                  U5      R                  U5      :X  d   eg )Nr	   r
   r   r   r   )
r   r   ro   rI   rJ   rO   rK   rL   rM   rN   )rP   rQ   rR   rS   rT   r[   r\   s          r]   test_fflu_propertiesr     s    r!ubenr!uben5vrBAJA!77f77f77f77f::::::===IIKEB88A;A!((2,"5"5a"8888r_   c                  `   [        [        S5      [        S5      /[        S5      [        S5      //S[        5      n U R                  5       u  pp4UR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR	                  SS5      S:X  d   eg )Nr	   r
   r   r   r   )r   r   ro   rI   getitem_sympyr   s        r]   test_fflu_rank_deficientr   &  s    r!ubenr!uben5vrBAJA!77f77f77f77f??1a A%%%r_   )sympy.polys.matricesr   r   sympy.polys.domainsr   r   sympyr   r   eyeFFLU_EXAMPLESr^   rf   rm   markparametrizerr   ru   rx   r|   r   r   r   r    r_   r]   <module>r      s   1 &  
 	
Iy!2&
QFQFR 
QFQGb!
QFQGb!
I{#R( 	
QFQFR 
QFQFR 
QFQGb!
QFQGb!
QFQGb! 	
QFQFQF#R(
Iy),b1
Iy),b1
QFQGb!
QFQGaV$b) 	
Iy),b1
Iy),b1
Iy),b1
Iz9-r2
I{I.3 	
Iy),b1
Iy),b1
Iy),b1
Iy),b1
Iy),b1 	
2r

2r

2r

2r

2r
 	R$R$R$R$R$ 	b"Xvr*$$$b"Xvr*	 	
RHr2h$
QFQFR 
RGb"X#
RGaVb!
RHq"g# 	
QGb!Wr"
QFQFR 
QFRGb!
QFQGb!
QGaWr" 	
Iy),b1
Iy),b1
Iy*-r2
Iy*-r2
Iy*-r2 	
Iy),b1
Iy),b1
Iy*-r2
Iy*-r2
Iy*-r2 	
Iy),b1
Iy),b1
Iy*-r2
Iz;/4
Iy*-r2 	
Iy),b1
Iy),b1
Iy),b1
Iy),b1
Iy),b1 	
QC5"
QC5"
QC5"
QC5"
QC5" 	
RD2$<
QFQFR 
RGb"X#
RGaWr"
RD1#; 	
QFQGb"X&+
Iy),b1
Iz<0"5
Iz:.3
QFQGaV$b) 	
QG9b
QC5"
RD62
RD62
QG9b 	
K|\BBG
L,lCRH
M-/FHdegij
M,.CEVWY[\
K*<iH"M 	
Iy),b1
Iy),b1
Iy*-r2
Iy),b1
Iy),b1axv"8& >N@ O@
 >N@ O@
 >N@ O@
 >N@ O@
 >N@ O@9&r_   