o
    g                     @   sP  d dl mZmZ d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlZd dlmZ d dlmZ d d	lmZ d
eg deeg deedfdedggeedggeedfdedd gd dggeedd gd dggeedfdeddgddggeeddgddggeedfdeg dg dg dgeeg dg dg dgeedfdeg dg dg d geeg d!g d"g d!geed fgZejd#ed$d% Zejd#ed&d' Zejd#ed(d) Zejd#ed*d+ Zejd#ed,d- Zejd#ed.d/ Zejd#ed0d1 Zejd#ed2d3 Zd4d5 ZdS )6    )ZZMatrix)DMDomainMatrixddm_iinv)DMNonInvertibleMatrixError)NonInvertibleMatrixErrorN)raises)	all_close)xzz_1)r   r      zz_2   zz_3   zz_4   zz_5)r   r   r   )r   r   r   )r   r   r   )r   r   )r   r   r   )r   r   r      zz_6)r   r   r   )r         )   r   	   )r   r   r   )r   ir   zname, A, A_inv, denc                    sN    fdd} j }    | |  dD ]}||d qd S )Nc                     s<   dkrj di  ksJ d S tt fdd d S )Nr   c                      s    j di S )N invr   )Akwargsr   ^/var/www/visachat/venv/lib/python3.10/site-packages/sympy/polys/matrices/tests/test_inverse.py<lambda>S   s    z1test_Matrix_inv.<locals>._check.<locals>.<lambda>r   )r!   r
   r	   r#   r"   A_invdenr&   r$   _checkO   s   ztest_Matrix_inv.<locals>._check)GELUADJCHLDLQRmethod)domain	to_Matrixto_sympy)namer"   r(   r)   r*   Kr2   r   r'   r$   test_Matrix_invL   s   r8   c                    sF   |dkr   \}}||||ksJ d S tt fdd d S )Nr   c                            S N)inv_denr   r"   r   r$   r%   c       z!test_dm_inv_den.<locals>.<lambda>)r;   cancel_denomr
   r   )r6   r"   r(   r)   A_inv_fden_fr   r<   r$   test_dm_inv_den]   s   rA   c                    sF       |dkr|  | }  |ksJ d S tt fdd d S )Nr   c                      r9   r:   r    r   r<   r   r$   r%   m   r=   ztest_dm_inv.<locals>.<lambda>)to_fieldr!   r
   r   r6   r"   r(   r)   r   r<   r$   test_dm_invf   s
   rD   c                    N        |dkr|  |  }  |ksJ d S tt fdd d S )Nr   c                      r9   r:   r    r   r<   r   r$   r%   w   r=   ztest_ddm_inv.<locals>.<lambda>)rB   to_ddmr!   r
   r   rC   r   r<   r$   test_ddm_invp   
   rG   c                    rE   )Nr   c                      r9   r:   r    r   r<   r   r$   r%      r=   ztest_sdm_inv.<locals>.<lambda>)rB   to_sdmr!   r
   r   rC   r   r<   r$   test_sdm_invz   rH   rJ   c                    sl          j  |dkr)|  |  }t  |ks'J d S tt fdd d S )Nr   c                      s   t  S r:   r   r   r"   A_resultr7   r   r$   r%      s    z%test_dense_ddm_iinv.<locals>.<lambda>)rB   rF   copyr3   r   r
   r   rC   r   rK   r$   test_dense_ddm_iinv   s   rN   c                 C   sB   |  }|  }| |ksJ dD ]}|j|d|ksJ qd S )N)bareiss	berkowitzbirdlaplacelur1   )r4   adjugate)r6   r"   r(   r)   r2   r   r   r$   test_Matrix_adjugate   s   rU   c                 C   s   |  ||fks
J d S r:   )adj_detrC   r   r   r$   test_dm_adj_det   s   rW   c                  C   s  t td ddgdtd dgddtd	 gg} t d
td  dt  d dt d dt d gdt d d
td  dt  d dt d gdt d dt d d
td  dt  d gg}d
td  dtd   d t  d! }|| }|  }| }| \}}| \}}	|  | |  | |	  | |  | |	  g}
|
D ]}t	|
 |
 D ]\}}t||sJ qqd S )"Ng333333?gQg)\(̿gq=
ףpݿgQ?g=
ףp=ڿgQg(\ؿg{Gz?g      ?r   gQ?gгY?gQ?g0*D?g)\(?g#~j?gq=
ףp?gtV?gGz?g3?g=
ףp=?g46<R?gQ?gw#?g(\?g>yX5ͻ?g(\?g\ Ac̽?r   gQ?goŏ1?g0?)r   r   to_DMto_denser;   r!   rB   r4   as_exprzipflatr   )MMndMiM_dmM_dmdM_dm_numM_dm_den	M_dmd_num	M_dmd_denMinvsMinvMi1Mi2r   r   r$   test_inverse_inexact   s2   .,,$rk   )sympyr   r   sympy.polys.matricesr   r   sympy.polys.matrices.denser   sympy.polys.matrices.exceptionsr   sympy.matrices.exceptionsr	   pytestsympy.testing.pytestr
   sympy.core.numbersr   	sympy.abcr   INVERSE_EXAMPLESmarkparametrizer8   rA   rD   rG   rJ   rN   rU   rW   rk   r   r   r   r$   <module>   s    




:


	
	
	


