a
    kh*                     @   sZ  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g d
geeg dg d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g d g d!g d"g d#g d$geeg d%g d&g d'g d(g d)gefg
Zd*d+ Zd,d- Zd.d/ Zd0d1 Ze
jd2ed3d4 Ze
jd2ed5d6 Ze
jd2ed7d8 Ze
jd2ed9d: Ze
jd2ed;d< Ze
jd2ed=d> Ze
jd2ed?d@ ZdS )A    )ZZMatrix)DMDomainMatrix)DDM)SDMNc                 C   s   t | | S N)r   zerosto_dense)shapeK r   W/var/www/auris/lib/python3.9/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)         )r   r   )r   r   Zzz_2)r   r   Zzz_3)r   r   Zzz_4)r   r   r   Zzz_5)r   r   Zzz_6r   r      Zzz_7Zzz_8)r   r   Zzz_9Zzz_10)
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   c                 C   sb   t | tr|  S t | tr4tt| | j| j S t | trVtt| | j| j S ds^J dS )z#Convert the answer to DomainMatrix.FN)	
isinstancer   r
   r   listr   domainr   dict)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$J q$tj| S )z8Normalize the nullspace by the rightmost non-zero entry.r   r   NF)to_fieldZis_zero_matrixranger   reversedappendr   Zvstack)nullrowsijr   r   r   _divide_lastu   s    "
r(   c                 C   s&   t | |} |  \}}||ks"J dS )z/Check that the primitive of the answer matches.N)r   Z	primitive)r$   null_ansZcontZ	null_primr   r   r   _check_primitive   s    
r*   c                 C   s"   t | |} t|}| |ksJ dS )zCheck the divided answer.N)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    r1   c                 C   s&   |   }|jdd}t|| d S NT)Zdivide_last)r    r
   r,   r+   r.   r   r/   r0   r   r   r   test_dm_dense_nullspace   s    r4   c                 C   s&   |   }|jdd}t|| d S r2   )r    	to_sparser,   r+   r3   r   r   r   test_dm_sparse_nullspace   s    r6   c                 C   s&   |   }| \}}t|| d S r   )r    Zto_ddmr,   r+   r.   r   r/   r0   _r   r   r   test_ddm_nullspace   s    r9   c                 C   s&   |   }| \}}t|| d S r   )r    Zto_sdmr,   r+   r7   r   r   r   test_sdm_nullspace   s    r:   c                 C   s   |  }| }t|| d S r   )r
   r,   r*   r3   r   r   r    test_dm_dense_nullspace_fracfree   s    r;   c                 C   s   |  }| }t|| d S r   )r5   r,   r*   r3   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parametrizer1   r4   r6   r9   r:   r;   r<   r   r   r   r   <module>   s   M





