U
    @f                     @   sh  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ddd gd ddgd d dggeedddgd ddgd d dggeedfdedddgdddgdddggeedddgdddgdddg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d+d, Zejded-d. Zd/d0 ZdS )1    )ZZMatrix)DMDomainMatrixddm_iinv)DMNonInvertibleMatrixError)NonInvertibleMatrixErrorN)raises)	all_close)xZzz_1)r   r      Zzz_2   Zzz_3   Zzz_4   Zzz_5   Zzz_6         	   izname, A, A_inv, denc                    sN    fdd} j }    | |  dD ]}||d q:d S )Nc                     s6   dkrj f  ks2tntt fdd d S )Nr   c                      s    j f S Ninv )Akwargsr   K/tmp/pip-unpacked-wheel-6uje5nh9/sympy/polys/matrices/tests/test_inverse.py<lambda>S       z1test_Matrix_inv.<locals>._check.<locals>.<lambda>)r   AssertionErrorr
   r	   r   r   A_invdenr#   r   _checkO   s    ztest_Matrix_inv.<locals>._check)ZGEZLUZADJZCHZLDLZQRmethod)domain	to_MatrixZto_sympy)namer   r%   r&   r'   Kr)   r   r$   r   test_Matrix_invL   s    r.   c                    sD   |dkr.   \}}||||ks@tntt fdd d S )Nr   c                      s      S r   )inv_denr   r   r   r   r    c   r!   z!test_dm_inv_den.<locals>.<lambda>)r/   Zcancel_denomr"   r
   r   )r,   r   r%   r&   ZA_inv_fZden_fr   r0   r   test_dm_inv_den]   s    r1   c                    sD       |dkr.|  | }  |ks@tntt fdd d S )Nr   c                      s      S r   r   r   r0   r   r   r    m   r!   ztest_dm_inv.<locals>.<lambda>)to_fieldr   r"   r
   r   r,   r   r%   r&   r   r0   r   test_dm_invf   s
    r4   c                    sL        |dkr6|  |  }  |ksHtntt fdd d S )Nr   c                      s      S r   r   r   r0   r   r   r    w   r!   ztest_ddm_inv.<locals>.<lambda>)r2   to_ddmr   r"   r
   r   r3   r   r0   r   test_ddm_invp   s
    r6   c                    sL        |dkr6|  |  }  |ksHtntt fdd d S )Nr   c                      s      S r   r   r   r0   r   r   r       r!   ztest_sdm_inv.<locals>.<lambda>)r2   Zto_sdmr   r"   r
   r   r3   r   r0   r   test_sdm_invz   s
    r7   c                    sj          j  |dkrP|  |  }t  |ksftntt fdd d S )Nr   c                      s   t  S r   r   r   r   ZA_resultr-   r   r   r       r!   z%test_dense_ddm_iinv.<locals>.<lambda>)r2   r5   copyr*   r   r"   r
   r   r3   r   r8   r   test_dense_ddm_iinv   s    r:   c                 C   sB   |  }|  }| |ks tdD ]}|j|d|ks$tq$d S )N)ZbareissZ	berkowitzZbirdZlaplaceZlur(   )r+   Zadjugater"   )r,   r   r%   r&   r)   r   r   r   test_Matrix_adjugate   s
    r;   c                 C   s   |  ||fkstd S r   )Zadj_detr"   r3   r   r   r   test_dm_adj_det   s    r<   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 ]4}t	|
 |
 D ]\}}t||shtqhqRd 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   Zto_DMZto_denser/   r   r2   r+   Zas_exprzipZflatr   r"   )MZMndZMiZM_dmZM_dmdZM_dm_numZM_dm_denZ	M_dmd_numZ	M_dmd_denZMinvsZMinvZMi1ZMi2r   r   r   test_inverse_inexact   s.    .,,$r@   )Zsympyr   r   Zsympy.polys.matricesr   r   Zsympy.polys.matrices.denser   Zsympy.polys.matrices.exceptionsr   Zsympy.matrices.exceptionsr	   ZpytestZsympy.testing.pytestr
   Zsympy.core.numbersr   Z	sympy.abcr   ZINVERSE_EXAMPLESmarkZparametrizer.   r1   r4   r6   r7   r:   r;   r<   r@   r   r   r   r   <module>   s   








:


	
	
	


