
    g*                        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                            d-e          d.             Ze
j                            d-e          d/             Ze
j                            d-e          d0             Ze
j                            d-e          d1             Ze
j                            d-e          d2             Ze
j                            d-e          d3             Ze
j                            d-e          d4             ZdS )5    )ZZMatrix)DMDomainMatrix)DDM)SDMNc                 P    t          j        | |                                          S N)r   zerosto_dense)shapeKs     e/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/matrices/tests/test_nullspace.py<lambda>r      s    +E155>>@@     c                 P    t          j        | |                                          S r
   )r   eyer   )nr   s     r   r   r   	   s    <#Aq))224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                    t          | t                    r|                                 S t          | t                    r:t          t	          |           | j        | j                                                  S t          | t                    r:t          t          |           | j        | j                                                  S J )z#Convert the answer to DomainMatrix.)	
isinstancer   r   r   listr   domainr   dict)Aanss     r   _to_DMr-   i   s    !\"" zz||	As		 DGGQWah77@@BBB	As		 DGGQWah77@@BBBr   c                 Z   |                                  } | j        r| S g }t          | j        d                   D ]d}t	          t          | j        d                             D ]8}| ||f         r,|                    | |ddf         | ||f         z              n9J et          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AAAJad3444 L  %%r   c                 d    t          | |          } |                                 \  }}||k    sJ dS )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          | |          } t          |          }| |k    sJ dS )zCheck the divided answer.N)r-   r9   )r5   r<   null_ans_norms      r   _check_dividedrB      s5    $!!D **M=      r   zname, A, A_nullc                 d   |                                 }|                                }|rt          j        | }nt          j        |j        d          }|                                                                                                }|	                                }t          ||           d S )Nr   )	to_Matrix	nullspacer   hstackr   colsto_DMr/   r   	transposerB   )namer+   A_nullA_null_colsA_null_founds        r   test_Matrix_nullspacerN      s    	A++--K  /}k2|AFA..%%''0022;;==L  ))++L<(((((r   c                     |                                                                 }|                    d          }t          ||           d S NT)divide_last)r/   r   rE   rB   rJ   r+   rK   rM   s       r   test_dm_dense_nullspacerS      sD    	

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

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

AkkmmOL!<(((((r   c                     |                                                                 }|                                \  }}t          ||           d S r
   )r/   to_sdmrE   rB   rY   s        r   test_sdm_nullspacer_      r\   r   c                 v    |                                 }|                                }t          ||           d S r
   )r   rE   r?   rR   s       r    test_dm_dense_nullspace_fracfreera      s2    	

A;;==L\6*****r   c                 v    |                                 }|                                }t          ||           d S r
   )rU   rE   r?   rR   s       r   !test_dm_sparse_nullspace_fracfreerc      s2    	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 1 1 1 1 1 1 1 ( ( ( ( ( ( ( ( ( ( ( ( @@44, 		ZZZL"			ZZZZZ
 
 		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 	1
 	...............	0 24		5 	5yJ Z	 	 	& & &&! ! !! ! ! *,>??) ) @?)& *,>??) ) @?) *,>??) ) @?) *,>??) ) @?) *,>??) ) @?) *,>??+ + @?+ *,>??+ + @?+ + +r   