o
    GZh                     @   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 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   V/var/www/auris/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)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                    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.   Zcancel_denomr
   r   )r)   r   r"   r#   ZA_inv_fZden_fr   r/   r   test_dm_inv_den]   s   r1   c                    sF       |dkr|  | }  |ksJ d S tt fdd d S )Nr   c                      r,   r-   r   r   r/   r   r   r   m   r0   ztest_dm_inv.<locals>.<lambda>)to_fieldr   r
   r   r)   r   r"   r#   r   r/   r   test_dm_invf   s
   r4   c                    N        |dkr|  |  }  |ksJ d S tt fdd d S )Nr   c                      r,   r-   r   r   r/   r   r   r   w   r0   ztest_ddm_inv.<locals>.<lambda>)r2   to_ddmr   r
   r   r3   r   r/   r   test_ddm_invp   
   r7   c                    r5   )Nr   c                      r,   r-   r   r   r/   r   r   r      r0   ztest_sdm_inv.<locals>.<lambda>)r2   Zto_sdmr   r
   r   r3   r   r/   r   test_sdm_invz   r8   r9   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   ZA_resultr*   r   r   r      s    z%test_dense_ddm_iinv.<locals>.<lambda>)r2   r6   copyr'   r   r
   r   r3   r   r:   r   test_dense_ddm_iinv   s   r<   c                 C   sB   |  }|  }| |ksJ dD ]}|j|d|ksJ qd S )N)ZbareissZ	berkowitz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_detr3   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 ]}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   Zto_DMZto_denser.   r   r2   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   s2   .,,$rC   )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   r7   r9   r<   r>   r?   rC   r   r   r   r   <module>   s    

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