
    \h*                     0   S SK JrJr  S SKJrJr  S SKJr  S SKJ	r	  S SK
r
S rS rS\" / S	Q/\5      \" / S
Q/ SQ/\5      4S\" S\5      \" S\5      4S\" S\5      \" S\5      4S\" S\5      \" S\5      4S\" S\5      \" S\5      4S\" SS/SS//\5      \" S\5      4S\" SS/SS//\5      \" SS//\5      4S\" S/S//\5      \" S\5      4S\" SS//\5      \" SS//\5      4S\" / SQ/ S Q/ S!Q/ S"Q/ S#Q/\5      \" / S$Q/ S%Q/ S&Q/ S'Q/ S(Q/\5      4/
rS) rS* rS+ rS, r\
R$                  R'                  S-\5      S. 5       r\
R$                  R'                  S-\5      S/ 5       r\
R$                  R'                  S-\5      S0 5       r\
R$                  R'                  S-\5      S1 5       r\
R$                  R'                  S-\5      S2 5       r\
R$                  R'                  S-\5      S3 5       r\
R$                  R'                  S-\5      S4 5       rg)5    )ZZMatrix)DMDomainMatrix)DDM)SDMNc                 J    [         R                  " X5      R                  5       $ N)r   zerosto_dense)shapeKs     a/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/matrices/tests/test_nullspace.py<lambda>r      s    ++E5>>@    c                 J    [         R                  " X5      R                  5       $ r
   )r   eyer   )nr   s     r   r   r   	   s    <##A)224r   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                    [        U [        5      (       a  U R                  5       $ [        U [        5      (       a8  [        [	        U 5      U R
                  U R                  5      R                  5       $ [        U [        5      (       a8  [        [        U 5      U R
                  U R                  5      R                  5       $  e)z#Convert the answer to DomainMatrix.)	
isinstancer   r   r   listr   domainr   dict)Aanss     r   _to_DMr-   i   s    !\""zz|	As		DGQWWahh7@@BB	As		DGQWWahh7@@BBur   c                 X   U R                  5       n U R                  (       a  U $ / n[        U R                  S   5       HW  n[	        [        U R                  S   5      5       H/  nXU4   (       d  M  UR                  XSS24   XU4   -  5          MU      e   [        R                  " U6 $ )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qDzzDAJd34 0
 5 " %%r   c                 L    [        X5      n U R                  5       u  p#X1:X  d   eg)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                 >    [        X5      n [        U5      nX:X  d   eg)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   UR                  5       nUR                  5       nU(       a  [        R                  " U6 nO![        R                  " UR
                  S5      nUR                  5       R                  5       R                  5       nUR                  5       n[        XB5        g )Nr   )	to_Matrix	nullspacer   hstackr   colsto_DMr/   r   	transposerB   )namer+   A_nullA_null_colsA_null_founds        r   test_Matrix_nullspacerN      sw    	A++-K }}k2||AFFA.%%'002;;=L  ))+L<(r   c                 t    UR                  5       R                  5       nUR                  SS9n[        X25        g NT)divide_last)r/   r   rE   rB   rJ   r+   rK   rM   s       r   test_dm_dense_nullspacerS      s.    	

A;;4;0L<(r   c                 t    UR                  5       R                  5       nUR                  SS9n[        X25        g rP   )r/   	to_sparserE   rB   rR   s       r   test_dm_sparse_nullspacerV      s.    	

 A;;4;0L<(r   c                 z    UR                  5       R                  5       nUR                  5       u  p4[        X25        g r
   )r/   to_ddmrE   rB   rJ   r+   rK   rM   _s        r   test_ddm_nullspacer[      +    	

AkkmOL<(r   c                 z    UR                  5       R                  5       nUR                  5       u  p4[        X25        g r
   )r/   to_sdmrE   rB   rY   s        r   test_sdm_nullspacer_      r\   r   c                 Z    UR                  5       nUR                  5       n[        X25        g r
   )r   rE   r?   rR   s       r    test_dm_dense_nullspace_fracfreera      s     	

A;;=L\*r   c                 Z    UR                  5       nUR                  5       n[        X25        g r
   )rU   rE   r?   rR   s       r   !test_dm_sparse_nullspace_fracfreerc      s     	A;;=L\*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   