
    g!&h^!                        d dl mZmZ d dlmZmZ d dlmZ d dlZd eg dg dge       edd gd dgge       edd gd	d
gge       edd gd d
gge       eg dg dge      fd ed	dgddgge       edd gd dgge       edd gddgge       ed	d gd d
gge       ed	dgd d
gge      fd eddgdd	gddgge       eg dg dg dge       eg dg dg dge       edd gd dgge       eddgd dgd d gge      fd eg dg dg dge       eg dg dg dge       eg dg dg dge       eg dg dg dge       eg dg dg dge      fd eg dg dg dge       eg dg dg dge       eg dg dg dge       eg dg dg dge       eg dg dg dge      fd  eg e       eg e       eg e       eg e       eg e      fd! eg d"e       eg d#e       eg d#e       eg d#e       eg d"e      fd$ eg g gd%e       ej                  d&e       ej                  d&e       ej                  d&e       eg g gd%e      fd' ed(dgd
d)gge       edd gd dgge       ed(d gd
dgge       ed(d gd dgge       ed(dgd dgge      fd* eddgd
d	gge       edd gd dgge       edd gd
dgge       edd gd dgge       eddgd dgge      fd+ eg dg d,g d-ge       eg dg dg dge       eg dg d.g d/ge       eg dg d.g d0ge       eg dg d,g d/ge      fd1 eg dg d2g dge       eg dg dg dge       eg dg d2g d3ge       eg dg d4g d5ge       eg dg d4g d6ge      fd7 eg d8g d4g d9ge       eg dg dg dge       eg d8g d:g d/ge       eg d8g d;g d<ge       eg d8g d:g d/ge      fd= eg dg d>g d?ge       eg dg dg dge       eg dg d@g dAge       eg dg dg dge       eg dg dg dge      fdB edgge       edgge       edgge       edgge       edgge      fdC edDgdEgge       edd gd dgge       edDd gdEdDgge       edDd gd dDgge       edDgd gge      fdF eddGgdGdHgdIdJgge       eg dg dg dge       eg d8g dKg dLge       eg d8g dMg dNge       eddGgd dOgd d gge      fdP ed dQgge       edgge       edQgge       edQgge       ed dQgge      fdR eg dSg dTg dUg dVge       eg dWg dXg dYg dZge       eg d[g d\g d]g d^ge       eg d[g d_g d`g dage       eg dSg dbg dcg dge      fdd eg deg dfg dgge       eg dg dg dge       eg dhg d4g dige       eg dhg djg dkge       eg dfg dlg dge      fgZ
dm Zdn Zdo Zej                  j                  dpe
      dq        Zej                  j                  dpe
      dr        Zej                  j                  dpe
      ds        Zej                  j                  dpe
      dt        Zej                  j                  dpe
      du        Zdv Zdw Zdx Zy)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                    |j                         j                         }|j                         j                         }|j                         j                         }|j                         j                         }| j                  \  }	}
|j                  |	|	fk(  sJ |j                  |	|	fk(  sJ |j                  |	|	fk(  sJ |j                  |	|
fk(  sJ |j                  sJ |j                  sJ |j                         \  }}|j                  |       j                  |      |j                  |      j                  |      k(  sJ |j                  sJ y 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                z/var/www/pru.catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/sympy/polys/matrices/tests/test_fflu.py_check_fflur^      s'   jjl##%Gjjl##%Gjjl##%Gjjl##%G77DAq==QF"""==QF"""==QF"""==QF"""IIKEB88A;A!((2,"5"5a"8888    c                     t        | t              r| S t        | t              r| j                  |j                        S t        | j                         | j                  | j                        S rF   )
isinstancer   r   to_DMdomainto_listrI   )rP   anss     r]   _to_DMrf      sK    !\"	Av	wwszz""		QWWahh77r_   c                 @   | \  }}}}	t        ||      }t        ||      }t        ||      }t        |	|      }	t        ||      }|j                  \  }
}|j                  |
|
fk(  sJ |j                  |
|
fk(  sJ |j                  |
|
fk(  sJ |	j                  |
|fk(  sJ |j                  sJ |j                  sJ |j	                         \  }}|j                  |      j                  |      |j                  |      j                  |	      k(  sJ |	j                  sJ y 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   JAq!Qq%Aq%Aq%Aq%Aq%A77DAq77q!f77q!f77q!f77q!f:::===IIKEB88A;A!((2,"5"5a"8888:::r_   z#name, A, P_ans, L_ans, D_ans, U_ansc                 `    |j                         }t        |j                         |||||       y rF   )rH   rm   fflunamerP   ri   rj   rk   rl   s         r]   test_dm_dense_fflurr      s%    	

AqvvxE5%?r_   c                 `    |j                         }t        |j                         |||||       y rF   )	to_sparserm   ro   rp   s         r]   test_dm_sparse_ffluru      s%    	AqvvxE5%?r_   c                 `    |j                         }t        |j                         |||||       y rF   )to_ddmrm   ro   rp   s         r]   test_ddm_fflurx      %    	
AqvvxE5%?r_   c                 `    |j                         }t        |j                         |||||       y rF   )to_sdmrm   ro   rp   s         r]   test_sdm_fflur|      ry   r_   c                    t        j                  d       |j                  t        t        fvr+|j                  j
                  st        j                  d       |j                         }t        |j                         |||||       y )NflintzDomain not supported by DFM)
pytestimportorskiprc   r   r   is_FFskipto_dfmrm   ro   rp   s         r]   test_dfm_fflur     sZ    
 xxBx12	
AqvvxE5%?r_   c                      t        g dt              } | j                         \  }}}}|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y )Nr   )r   r   ro   rI   rP   rQ   rR   rS   rT   s        r]   test_fflu_empty_matrixr     sk    R$AJAq!Q77f77f77f77fr_   c                  ,   t        t        d      t        d      gt        d      t        d      ggdt              } | j                         \  }}}}|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  sJ |j
                  sJ |j                  sJ |j                         \  }}|j                  |       j                  |      |j                  |      j                  |      k(  sJ y )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JAq!Q77f77f77f77f::::::===IIKEB88A;A!((2,"5"5a"8888r_   c                  Z   t        t        d      t        d      gt        d      t        d      ggdt              } | j                         \  }}}}|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j	                  dd      dk(  sJ y )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JAq!Q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_   