U
    ZÊ¹j*  ã                   @   s   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
Z
dd„ Zdd„ Zd	ed
ddggeƒedd
d gdd d
ggeƒfdedeƒedeƒfdedeƒedeƒfdedeƒedeƒfdedeƒedeƒfded
dgddggeƒedeƒfded
d
gd
d
ggeƒedd
ggeƒfded
gd
ggeƒedeƒfded
d
ggeƒedd
ggeƒfded d d d d d
d d d d g
d
d d d d d d
d d d g
d d
d d d d d d
d d g
d d d d
d d d d d
d g
d d d d d
d d d d d
g
geƒed d d
d d d d d d d g
dd d d d d d
d d d g
d dd d d d d d
d d g
d d d dd d d d d
d g
d d d d dd d d d d
g
geƒfg
Zdd „ Zd!d"„ Zd#d$„ Z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e
j d'e¡d4d5„ ƒZdS )6é    )ÚZZÚMatrix)ÚDMÚDomainMatrix)ÚDDM)ÚSDMNc                 C   s   t  | |¡ ¡ S ©N)r   ÚzerosÚto_dense)ÚshapeÚK© r   úh/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/polys/matrices/tests/test_nullspace.pyÚ<lambda>   ó    r   c                 C   s   t  | |¡ ¡ S r   )r   Úeyer
   )Únr   r   r   r   r   	   r   Zzz_1é   é   é   éþÿÿÿéýÿÿÿZzz_2)r   r   Zzz_3)r   r   Zzz_4)r   r   Zzz_5)r   r   Zzz_6é   Zzz_7éÿÿÿÿZzz_8)r   r   Zzz_9Zzz_10c                 C   sb   t | tƒr|  ¡ S t | tƒr4tt| ƒ| j| jƒ ¡ S t | tƒrVtt| ƒ| j| jƒ ¡ S ds^t	‚dS )z#Convert the answer to DomainMatrix.FN)
Ú
isinstancer   r
   r   Úlistr   Údomainr   ÚdictÚAssertionError)ÚAZansr   r   r   Ú_to_DMi   s    


r    c                 C   s†   |   ¡ } | jr| S g }t| jd ƒD ]V}tt| jd ƒƒD ]6}| ||f r:| | |dd…f | ||f  ¡  q$q:ds$t‚q$tj|Ž S )z8Normalize the nullspace by the rightmost non-zero entry.r   r   NF)	Úto_fieldZis_zero_matrixÚranger   ÚreversedÚappendr   r   Zvstack)ÚnullÚrowsÚiÚjr   r   r   Ú_divide_lastu   s    "
r)   c                 C   s&   t | |ƒ} |  ¡ \}}||ks"t‚dS )z/Check that the primitive of the answer matches.N)r    Z	primitiver   )r%   Únull_ansÚcontZ	null_primr   r   r   Ú_check_primitiveˆ   s    
r,   c                 C   s"   t | |ƒ} t|ƒ}| |kst‚dS )zCheck the divided answer.N)r    r)   r   )r%   r*   Znull_ans_normr   r   r   Ú_check_divided�   s    
r-   zname, A, A_nullc                 C   sT   |  ¡ }| ¡ }|r tj|Ž }nt |jd¡}| ¡  ¡  ¡ }| 	¡ }t
||ƒ d S )Nr   )Z	to_MatrixÚ	nullspacer   Zhstackr	   ÚcolsZto_DMr!   r
   Z	transposer-   )Únamer   ÚA_nullZA_null_colsÚA_null_foundr   r   r   Útest_Matrix_nullspace–   s    r3   c                 C   s&   |  ¡  ¡ }|jdd�}t||ƒ d S ©NT)Zdivide_last)r!   r
   r.   r-   ©r0   r   r1   r2   r   r   r   Útest_dm_dense_nullspaceª   s    r6   c                 C   s&   |  ¡  ¡ }|jdd�}t||ƒ d S r4   )r!   Ú	to_sparser.   r-   r5   r   r   r   Útest_dm_sparse_nullspace±   s    r8   c                 C   s&   |  ¡  ¡ }| ¡ \}}t||ƒ d S r   )r!   Zto_ddmr.   r-   ©r0   r   r1   r2   Ú_r   r   r   Útest_ddm_nullspace¸   s    r;   c                 C   s&   |  ¡  ¡ }| ¡ \}}t||ƒ d S r   )r!   Zto_sdmr.   r-   r9   r   r   r   Útest_sdm_nullspace¿   s    r<   c                 C   s   |  ¡ }| ¡ }t||ƒ d S r   )r
   r.   r,   r5   r   r   r   Ú test_dm_dense_nullspace_fracfreeÆ   s    r=   c                 C   s   |  ¡ }| ¡ }t||ƒ d S r   )r7   r.   r,   r5   r   r   r   Ú!test_dm_sparse_nullspace_fracfreeÍ   s    r>   )Zsympyr   r   Zsympy.polys.matricesr   r   Zsympy.polys.matrices.ddmr   Zsympy.polys.matrices.sdmr   Zpytestr	   r   ZNULLSPACE_EXAMPLESr    r)   r,   r-   ÚmarkZparametrizer3   r6   r8   r;   r<   r=   r>   r   r   r   r   Ú<module>   s¾   
ÿÿýýýýýÿÿüÿÿüÿÿüýüüüüùÄM





