o
    h^!                     @   sR	  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	d&ee	d&ee	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d1e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d7e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dBe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dCe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dFe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dPed dQggeedggeedQggeedQggeed dQggefdRe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dde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
dmdn Zdodp Zdqdr Zejdse
dtdu Zejdse
dvdw Zejdse
dxdy Zejdse
dzd{ Zejdse
d|d} Zd~d Zdd Zdd ZdS )    )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   )r0   )   r3   )r   r2   r   )r   r   r3   r2   zz_1x2   zz_nx3_4rows)r1      r   )   ;      )5   .   r-   )?   0      )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r1   r   r   r   )r8   P r   r   )r;   3 rA   r   )r=   rA   rA   rA   )r   r@   r   r   )r   r   Nr   )r   r   r   rA   )r   r@   r:   )r   r   rB   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                 C   s   |   }|   }|   }|   }| j\}	}
|j|	|	fks&J |j|	|	fks/J |j|	|	fks8J |j|	|
fksAJ |jsFJ |jsKJ | \}}|| ||||kscJ |jshJ 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d r[   Z/var/www/html/ai/venv/lib/python3.10/site-packages/sympy/polys/matrices/tests/test_fflu.py_check_fflu   s   


$r]   c                 C   s8   t | tr| S t | tr| |jS t|  | j| jS rD   )
isinstancer   r   to_DMdomainto_listrG   )rN   ansr[   r[   r\   _to_DM   s
   

rc   c                 C   s   | \}}}}	t ||}t ||}t ||}t |	|}	t ||}|j\}
}|j|
|
fks-J |j|
|
fks6J |j|
|
fks?J |	j|
|fksHJ |jsMJ |jsRJ | \}}||||||	ksjJ |	jsoJ d S rD   )rc   rG   rH   rI   rJ   rK   rL   rM   )resultrN   P_ansL_ansD_ansU_ansrO   rP   rQ   rR   rW   rX   rY   rZ   r[   r[   r\   _check_fflu_result   s    







$ri   z#name, A, P_ans, L_ans, D_ans, U_ansc                 C   "   |  }t| ||||| d S rD   )rF   ri   fflunamerN   re   rf   rg   rh   r[   r[   r\   test_dm_dense_fflu      rn   c                 C   rj   rD   )	to_sparseri   rk   rl   r[   r[   r\   test_dm_sparse_fflu   ro   rq   c                 C   rj   rD   )to_ddmri   rk   rl   r[   r[   r\   test_ddm_fflu   ro   rs   c                 C   rj   rD   )to_sdmri   rk   rl   r[   r[   r\   test_sdm_fflu   ro   ru   c                 C   sL   t d |jttfvr|jjst d | }t|	 ||||| d S )NflintzDomain not supported by DFM)
pytestimportorskipr`   r   r   is_FFskipto_dfmri   rk   rl   r[   r[   r\   test_dfm_fflu  s
   

r|   c                  C   sX   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   rk   rG   rN   rO   rP   rQ   rR   r[   r[   r\   test_fflu_empty_matrix  s   r~   c                  C   s   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s1J |jdks8J |js=J |jsBJ |jsGJ | \}}|| 	||||ks_J d S )Nr   r	   r
   r   r   )
r   r   rk   rG   rH   rM   rI   rJ   rK   rL   )rN   rO   rP   rQ   rR   rY   rZ   r[   r[   r\   test_fflu_properties  s   (


(r   c                  C   s   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s1J |jdks8J |dddksBJ d S )Nr   r	   r   r   r   )r   r   rk   rG   getitem_sympyr}   r[   r[   r\   test_fflu_rank_deficient&  s   (r   )sympy.polys.matricesr   r   sympy.polys.domainsr   r   sympyr   rw   eyeFFLU_EXAMPLESr]   rc   ri   markparametrizern   rq   rs   ru   r|   r~   r   r   r[   r[   r[   r\   <module>   sF   




















     
  <




	