
    Og*                     0   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 Z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) Zd* Zd+ Zd, Ze
j$                  j'                  d-e      d.        Ze
j$                  j'                  d-e      d/        Ze
j$                  j'                  d-e      d0        Ze
j$                  j'                  d-e      d1        Ze
j$                  j'                  d-e      d2        Ze
j$                  j'                  d-e      d3        Ze
j$                  j'                  d-e      d4        Zy)5    )ZZMatrix)DMDomainMatrix)DDM)SDMNc                 J    t        j                  | |      j                         S N)r   zerosto_dense)shapeKs     p/var/www/html/suriana-translation/venv/lib/python3.12/site-packages/sympy/polys/matrices/tests/test_nullspace.py<lambda>r      s    ++E15>>@     c                 J    t        j                  | |      j                         S r
   )r   eyer   )nr   s     r   r   r   	   s    <##Aq)224 r   zz_1)         )r   r   )r   r   zz_2)r   r   zz_3)r   r   zz_4)r   r   r   zz_5)r   r   zz_6r   r      zz_7zz_8)r   r   zz_9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                 f   t        | t              r| j                         S t        | t              r8t        t	        |       | j
                  | j                        j                         S t        | t              r8t        t        |       | j
                  | j                        j                         S J )z#Convert the answer to DomainMatrix.)	
isinstancer   r   r   listr   domainr   dict)Aanss     r   _to_DMr-   i   sy    !\"zz|	As	DGQWWahh7@@BB	As	DGQWWahh7@@BBur   c                 @   | j                         } | j                  r| S g }t        | j                  d         D ]R  }t	        t        | j                  d               D ]+  }| ||f   s|j                  | |ddf   | ||f   z          Q J  t        j                  | S )z8Normalize the nullspace by the rightmost non-zero entry.r   r   N)to_fieldis_zero_matrixranger   reversedappendr   vstack)nullrowsijs       r   _divide_lastr9   u   s    ==?DD4::a=! %

1./ 	AAqDzDAJad34	
 5 %%r   c                 P    t        | |      } | j                         \  }}||k(  sJ y)z/Check that the primitive of the answer matches.N)r-   	primitive)r5   null_anscont	null_prims       r   _check_primitiver?      s,    $!Dnn&OD)   r   c                 @    t        | |      } t        |      }| |k(  sJ y)zCheck the divided answer.N)r-   r9   )r5   r<   null_ans_norms      r   _check_dividedrB      s&    $!D *M=   r   zname, A, A_nullc                 >   |j                         }|j                         }|rt        j                  | }n t        j                  |j
                  d      }|j                         j                         j                         }|j                         }t        ||       y )Nr   )	to_Matrix	nullspacer   hstackr   colsto_DMr/   r   	transposerB   )namer+   A_nullA_null_colsA_null_founds        r   test_Matrix_nullspacerN      sy    	A++-K }}k2||AFFA.%%'002;;=L  ))+L<(r   c                 |    |j                         j                         }|j                  d      }t        ||       y NT)divide_last)r/   r   rE   rB   rJ   r+   rK   rM   s       r   test_dm_dense_nullspacerS      s0    	

A;;4;0L<(r   c                 |    |j                         j                         }|j                  d      }t        ||       y rP   )r/   	to_sparserE   rB   rR   s       r   test_dm_sparse_nullspacerV      s0    	

 A;;4;0L<(r   c                 ~    |j                         j                         }|j                         \  }}t        ||       y r
   )r/   to_ddmrE   rB   rJ   r+   rK   rM   _s        r   test_ddm_nullspacer[      /    	

AkkmOL!<(r   c                 ~    |j                         j                         }|j                         \  }}t        ||       y r
   )r/   to_sdmrE   rB   rY   s        r   test_sdm_nullspacer_      r\   r   c                 \    |j                         }|j                         }t        ||       y r
   )r   rE   r?   rR   s       r    test_dm_dense_nullspace_fracfreera      s"    	

A;;=L\6*r   c                 \    |j                         }|j                         }t        ||       y r
   )rU   rE   r?   rR   s       r   !test_dm_sparse_nullspace_fracfreerc      s"    	A;;=L\6*r   )sympyr   r   sympy.polys.matricesr   r   sympy.polys.matrices.ddmr   sympy.polys.matrices.sdmr   pytestr   r   NULLSPACE_EXAMPLESr-   r9   r?   rB   markparametrizerN   rS   rV   r[   r_   ra   rc    r   r   <module>rm      s    1 ( ( @4, 		ZL"		Z
 		vr		vr	 	fbfb 	fbAr
 	fbAr
 	
QFF	fb	 	
QFF	
RG9b	 	
QCC	fb	 	
QF8R
RG9b 	
*****	, .0		1
 	.....	0 24		5yJ Z	&&!! *,>?) @)& *,>?) @) *,>?) @) *,>?) @) *,>?) @) *,>?+ @+ *,>?+ @+r   