U
    ZÊ¹j  ã                   @   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é   é   é   é	   iôÿÿÿz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   úf/var/www/html/bwave/python/venv/lib/python3.8/site-packages/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	berkowitzÚ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¸…ëQ¸®¿g)\�Âõ(Ì¿gq=
×£pÝ¿g¸…ëQ¸Þ?g=
×£p=Ú¿gìQ¸…ëÁ¿gö(\�ÂõØ¿g{®Gázä?g      ð?r   gìQ¸…ëñ?gÐ³Yõ¹ÚÂ?g¸…ëQ¸®?g0*©ÐD¨?g)\�Âõ(Ì?g#Ûù~j¼´?gq=
×£pÝ?g¼t“VÎ?g®Gázî?gà¾œ3¢Ä?g=
×£p=Ú?g46<½R–?gìQ¸…ëÁ?gšwœ¢#¹¼?gö(\�ÂõØ?g>yX¨5Í»?gö(\�Âõè?g\ AñcÌ½?r   g¸…ëQ¸ö?go�Å�1Û?g€ð0í›û«?)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.    þ.,,þ$ûrA   )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=   rA   r   r   r   r   Ú<module>   s¸   


üüÿÿÿÿú
ÿÿÿÿú

þþ
þþø
þþ
þþøÓ:


	
	
	


