
    Qi^!                        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                            dpe
          dq             Zej                            dpe
          dr             Zej                            dpe
          ds             Zej                            dpe
          dt             Zej                            dpe
          du             Zdv Zdw Zdx ZdS )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        |	|	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 |                                \  }}|                    |                               |          |                    |                              |          k    sJ |j        sJ d S 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/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/polys/matrices/tests/test_fflu.py_check_fflur^      sR   jjll##%%Gjjll##%%Gjjll##%%Gjjll##%%G7DAq=QF""""=QF""""=QF""""=QF""""IIKKEB88A;;A!((2,,"5"5a"8"88888    c                     t          | t                    r| S t          | t                    r|                     |j                  S t          |                                 | j        | j                  S rF   )
isinstancer   r   to_DMdomainto_listrI   )rP   anss     r]   _to_DMrf      s]    !\"" #	Av		 #wwsz"""		QWah777r_   c                 L   | \  }}}}	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 |                                \  }}|                    |                              |          |                    |                              |	          k    sJ |	j        sJ d S 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      sC   JAq!Qq%Aq%Aq%Aq%Aq%A7DAq7q!f7q!f7q!f7q!f:=IIKKEB88A;;A!((2,,"5"5a"8"88888:r_   z#name, A, P_ans, L_ans, D_ans, U_ansc                 z    |                                 }t          |                                |||||           d S rF   )rH   rm   fflunamerP   ri   rj   rk   rl   s         r]   test_dm_dense_fflurr      s5    	

AqvvxxE5%?????r_   c                 z    |                                 }t          |                                |||||           d S rF   )	to_sparserm   ro   rp   s         r]   test_dm_sparse_ffluru      s5    	AqvvxxE5%?????r_   c                 z    |                                 }t          |                                |||||           d S rF   )to_ddmrm   ro   rp   s         r]   test_ddm_fflurx      5    	

AqvvxxE5%?????r_   c                 z    |                                 }t          |                                |||||           d S 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           |                                }t          |	                                |||||           d S )NflintzDomain not supported by DFM)
pytestimportorskiprc   r   r   is_FFskipto_dfmrm   ro   rp   s         r]   test_dfm_fflur     sq    
   xBx1222	

AqvvxxE5%?????r_   c                      t          g dt                    } |                                 \  }}}}|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ d S )Nr   )r   r   ro   rI   rP   rQ   rR   rS   rT   s        r]   test_fflu_empty_matrixr     sz    R$$AJAq!Q7f7f7f7fr_   c                  L   t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 \  }}}}|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 |                                \  }}|                    |           	                    |          |                    |                              |          k    sJ d S )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!uubeenr!uubeen5vrBBAJAq!Q7f7f7f7f::=IIKKEB88A;;A!((2,,"5"5a"8"8888888r_   c                  x   t          t          d          t          d          gt          d          t          d          ggdt                    } |                                 \  }}}}|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ |                    dd          dk    sJ d S )Nr	   r
   r   r   r   )r   r   ro   rI   getitem_sympyr   s        r]   test_fflu_rank_deficientr   &  s    r!uubeenr!uubeen5vrBBAJAq!Q7f7f7f7f??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 1 1 1 1 1 1 1 & & & & & & & &       
 	
IIIyyy!2&&
QFQFR  
QFQGb!!
QFQGb!!
III{{{#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((
IIIyyy))),b11
IIIyyy))),b11
QFQGb!!
QFQGaV$b)) 	
IIIyyy))),b11
IIIyyy))),b11
IIIyyy))),b11
IIIzzz999-r22
III{{{III.33 	
IIIyyy))),b11
IIIyyy))),b11
IIIyyy))),b11
IIIyyy))),b11
IIIyyy))),b1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"" 	
IIIyyy))),b11
IIIyyy))),b11
IIIyyy***-r22
IIIyyy***-r22
IIIyyy***-r22 	
IIIyyy))),b11
IIIyyy))),b11
IIIyyy***-r22
IIIyyy***-r22
IIIyyy***-r22 	
IIIyyy))),b11
IIIyyy))),b11
IIIyyy***-r22
IIIzzz;;;/44
IIIyyy***-r22 	
IIIyyy))),b11
IIIyyy))),b11
IIIyyy))),b11
IIIyyy))),b11
IIIyyy))),b11 	
QC5"
QC5"
QC5"
QC5"
QC5" 	
RD2$<
QFQFR  
RGb"X##
RGaWr""
RD1#; 	
QFQGb"X&++
IIIyyy))),b11
IIIzzz<<<0"55
IIIzzz:::.33
QFQGaV$b)) 	
QG9b
QC5"
RD62
RD62
QG9b 	
KKK|||\\\BBGG
LLL,,,lllCRHH
MMM---/F/F/FHdHdHdegijj
MMM,,,.C.C.CEVEVEVWY[\\
KKK*<*<*<iiiH"MM 	
IIIyyy))),b11
IIIyyy))),b11
IIIyyy***-r22
IIIyyy))),b11
IIIyyy))),b11axv  "8 8 8  & >NN@ @ ON@
 >NN@ @ ON@
 >NN@ @ ON@
 >NN@ @ ON@
 >NN@ @ ON@  9 9 9& & & & &r_   