a
    kh                     @   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)xZzz_1)r   r      Zzz_2   Zzz_3   Zzz_4   Zzz_5)r   r   r   )r   r   r   )r   r   r   )r   r   )r   r   r   )r   r   r      Z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 f i  ks6J ntt fdd d S )Nr   c                      s    j f i S Ninv )Akwargsr   U/var/www/auris/lib/python3.9/site-packages/sympy/polys/matrices/tests/test_inverse.py<lambda>S       z1test_Matrix_inv.<locals>._check.<locals>.<lambda>)r   r
   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@J 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%   ZA_inv_fZden_fr   r/   r   test_dm_inv_den]   s    r0   c                    sD       |dkr.|  | }  |ks@J ntt fdd d S )Nr   c                      s      S r   r   r   r/   r   r   r    m   r!   ztest_dm_inv.<locals>.<lambda>)to_fieldr   r
   r   r+   r   r$   r%   r   r/   r   test_dm_invf   s
    r3   c                    sL        |dkr6|  |  }  |ksHJ ntt fdd d S )Nr   c                      s      S r   r   r   r/   r   r   r    w   r!   ztest_ddm_inv.<locals>.<lambda>)r1   to_ddmr   r
   r   r2   r   r/   r   test_ddm_invp   s
    r5   c                    sL        |dkr6|  |  }  |ksHJ ntt fdd d S )Nr   c                      s      S r   r   r   r/   r   r   r       r!   ztest_sdm_inv.<locals>.<lambda>)r1   Zto_sdmr   r
   r   r2   r   r/   r   test_sdm_invz   s
    r6   c                    sj          j  |dkrP|  |  }t  |ksfJ 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>)r1   r4   copyr)   r   r
   r   r2   r   r7   r   test_dense_ddm_iinv   s    r9   c                 C   sB   |  }|  }| |ks J dD ]}|j|d|ks$J q$d S )N)ZbareissZ	berkowitzZbirdZlaplaceZlur'   )r*   Zadjugate)r+   r   r$   r%   r(   r   r   r   test_Matrix_adjugate   s
    r:   c                 C   s   |  ||fksJ d S r   )Zadj_detr2   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||shJ 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   r1   r*   Zas_exprzipZflatr   )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-   r0   r3   r5   r6   r9   r:   r;   r?   r   r   r   r   <module>   s   




:


	
	
	


