
    RieP                         d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZmZmZ d dlmZ d Zd Zd	 Zd
 Zd ZdS )    )ZZQQ)DM)DomainMatrix)DMRankErrorDMValueErrorDMShapeErrorDMDomainError)_ddm_lllddm_lllddm_lll_transform)raisesc            
         t          g dg dg dg dgt                    t          g dg dg dg dgt                    ft          g d	g d
g dgt                    t          g d
g dg dgt                    ft          g dg dg dg dgt                    t          g dg dg dg dgt                    fg} t          dd          }| D ]\  }}t          |j        |          d         }||j        k    sJ t          |j        |          }||j        k    sJ t          |j        |d          \  }}||j        k    sJ |                    |j                  |j        k    sJ t          |j        |          \  }}||j        k    sJ |                    |j                  |j        k    sJ |j                            |          }||j        k    sJ |j        	                    |          \  }}||j        k    sJ |                    |j                  |j        k    sJ |j        
                                                    |          }||j        
                                k    sJ |j        
                                	                    |          \  }}||j        
                                k    sJ |                    |j        
                                          |j        
                                k    sJ |                    |          }||k    sJ |	                    |          \  }}||k    sJ |                    |          |k    sJ d S )N)   r   r   r   i@)r   r   r   r   i  )r   r   r   r   i  )r   r   r   r   i  )
      )   r   r   )r      r   r   r   )iir   	   )   4   i  )      r   )"   iFr   )   ir   )   r   is  )r    r   i   )ir    7   i  )   i     i  )W   1   i     )i#  +      S   )iCi  iHi!      deltar   Tr0   return_transform)r   r   r   r   repr   matmulr   llllll_transformto_sdm)normal_test_datar0   basis_dm
reduced_dmreduced	transforms         Clib/python3.11/site-packages/sympy/polys/matrices/tests/test_lll.pytest_lllr>   	   s=    $$$#########% ')* * ###"""$$$%%%' )+, ,		
  "$ $    !"$& &		
 !!!"""%%%!!!# %'( ( !!!""""""(((* ,./ /		
'< q!HHE 0 "8 "8*8<u555a8*.(((((,e444*.((((%hl%RVWWW*.((((--????.x|5III*.((((--????,"""//*.((((%\77e7DD*.((((--????,%%''++%+88*.//111111%\0022@@u@MM*.//111111 3 3 5 566*.:O:O:Q:QQQQQ,,U,++*$$$$%33%3@@*$$$$))Z77777E"8 "8    c                     t          g dg dg dg dgt                    t          g dg dg dg dgt                    t          g d	g d
g dgt                    g} | D ]t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           d S )N)r   r   r   r   )r   r   r   r   )   r   r   r   )r   rA   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   rA   r   r.   )r   r   )   r.   r   )r   r   rA   c                  ,    t           j                  S Nr   r3   	not_basiss   r=   <lambda>z+test_lll_linear_dependent.<locals>.<lambda>]   s    HY]$;$; r?   c                  ,    t           j                  S rE   r   r3   rG   s   r=   rI   z+test_lll_linear_dependent.<locals>.<lambda>^   s    GIM$:$: r?   c                  6     j                                         S rE   r3   r5   rG   s   r=   rI   z+test_lll_linear_dependent.<locals>.<lambda>_   s    IM$5$5$7$7 r?   c                  Z     j                                                                         S rE   r3   r7   r5   rG   s   r=   rI   z+test_lll_linear_dependent.<locals>.<lambda>`   s!    IM$8$8$:$:$>$>$@$@ r?   c                  ,                                      S rE   r5   rG   s   r=   rI   z+test_lll_linear_dependent.<locals>.<lambda>a   s    IMMOO r?   c                  0    t           j        d          S NT)r2   rF   rG   s   r=   rI   z+test_lll_linear_dependent.<locals>.<lambda>b   s    HY]T$R$R$R r?   c                  ,    t           j                  S rE   r   r3   rG   s   r=   rI   z+test_lll_linear_dependent.<locals>.<lambda>c   s    $5im$D$D r?   c                  6     j                                         S rE   r3   r6   rG   s   r=   rI   z+test_lll_linear_dependent.<locals>.<lambda>d   s    IM$?$?$A$A r?   c                  Z     j                                                                         S rE   r3   r7   r6   rG   s   r=   rI   z+test_lll_linear_dependent.<locals>.<lambda>e   s!    IM$8$8$:$:$H$H$J$J r?   c                  ,                                      S rE   r6   rG   s   r=   rI   z+test_lll_linear_dependent.<locals>.<lambda>f   s    I$;$;$=$= r?   )r   r   r   r   )linear_dependent_test_datarH   s    @r=   test_lll_linear_dependentr]   N   s   
OOONNMMLL 	 	 	LLLLLLLLL 	 	 	JJJIIKK	 	" 0 
? 
?	{;;;;<<<{::::;;;{7777888{@@@@AAA{3333444{RRRRSSS{DDDDEEE{AAAABBB{JJJJKKK{====>>>>
? 
?r?   c                      t          j        dt                     t          dd          t          dd          t          dd          t          dd          t          dd          fD ]t	          t
           fd           t	          t
           fd           t	          t
           fd	           t	          t
           fd
           t	          t
           fd           t	          t
           fd           t	          t
           fd           t	          t
           fd           t	          t
           fd           t	          t
           fd           d S )Nr   r   r   rC   r   r   d   c                  0    t           j                  S Nr/   rF   dummy_matrixwrong_deltas   r=   rI   z&test_lll_wrong_delta.<locals>.<lambda>l   s    Xl.>k%R%R%R r?   c                  0    t           j                  S rb   rK   rc   s   r=   rI   z&test_lll_wrong_delta.<locals>.<lambda>m   s    W\-=[%Q%Q%Q r?   c                  :     j                                       S rb   rM   rc   s   r=   rI   z&test_lll_wrong_delta.<locals>.<lambda>n   s    \%5%9%9%9%L%L r?   c                  ^     j                                                                       S rb   rO   rc   s   r=   rI   z&test_lll_wrong_delta.<locals>.<lambda>o   s'    \%5%<%<%>%>%B%B%B%U%U r?   c                  0                                    S rb   rQ   rc   s   r=   rI   z&test_lll_wrong_delta.<locals>.<lambda>p   s    \%5%5K%5%H%H r?   c                  2    t           j        d          S )NTr1   rF   rc   s   r=   rI   z&test_lll_wrong_delta.<locals>.<lambda>q   s    Xl.>kdh%i%i%i r?   c                  0    t           j                  S rb   rU   rc   s   r=   rI   z&test_lll_wrong_delta.<locals>.<lambda>r   s    %6|7G{%[%[%[ r?   c                  :     j                                       S rb   rW   rc   s   r=   rI   z&test_lll_wrong_delta.<locals>.<lambda>s   s    \%5%C%C+%C%V%V r?   c                  ^     j                                                                       S rb   rY   rc   s   r=   rI   z&test_lll_wrong_delta.<locals>.<lambda>t   s(    \%5%<%<%>%>%L%LS^%L%_%_ r?   c                  0                                    S rb   r[   rc   s   r=   rI   z&test_lll_wrong_delta.<locals>.<lambda>u   s    \%?%?k%?%R%R r?   )r   onesr   r   r   r   rc   s   @@r=   test_lll_wrong_deltarp   i   s   $VR00L2q		2a88R1XXr!QxxCL 
T 
T|RRRRRSSS|QQQQQRRR|LLLLLMMM|UUUUUVVV|HHHHHIII|iiiiijjj|[[[[[\\\|VVVVVWWW|_____```|RRRRRSSSS
T 
Tr?   c                      t          j        dt                     t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd	           t          t           fd
           t          t           fd           d S )N)rC   r   c                  ,    t           j                  S rE   rF   wrong_shape_matrixs   r=   rI   z&test_lll_wrong_shape.<locals>.<lambda>z   s    *<*@!A!A r?   c                  ,    t           j                  S rE   rK   rs   s   r=   rI   z&test_lll_wrong_shape.<locals>.<lambda>{   s    );)?!@!@ r?   c                  6     j                                         S rE   rM   rs   s   r=   rI   z&test_lll_wrong_shape.<locals>.<lambda>|   s    !3!7!;!;!=!= r?   c                  Z     j                                                                         S rE   rO   rs   s   r=   rI   z&test_lll_wrong_shape.<locals>.<lambda>}   s#    !3!7!>!>!@!@!D!D!F!F r?   c                  ,                                      S rE   rQ   rs   s   r=   rI   z&test_lll_wrong_shape.<locals>.<lambda>~   s    !3!7!7!9!9 r?   c                  0    t           j        d          S rS   rF   rs   s   r=   rI   z&test_lll_wrong_shape.<locals>.<lambda>   s    *<*@SW!X!X!X r?   c                  ,    t           j                  S rE   rU   rs   s   r=   rI   z&test_lll_wrong_shape.<locals>.<lambda>   s    !23E3I!J!J r?   c                  6     j                                         S rE   rW   rs   s   r=   rI   z&test_lll_wrong_shape.<locals>.<lambda>   s    !3!7!E!E!G!G r?   c                  Z     j                                                                         S rE   rY   rs   s   r=   rI   z&test_lll_wrong_shape.<locals>.<lambda>   s#    !3!7!>!>!@!@!N!N!P!P r?   c                  ,                                      S rE   r[   rs   s   r=   rI   z&test_lll_wrong_shape.<locals>.<lambda>   s    !3!A!A!C!C r?   )r   ro   r   r   r	   rs   s   @r=   test_lll_wrong_shaper~   x   s    %*6266
<AAAABBB
<@@@@AAA
<====>>>
<FFFFGGG
<9999:::
<XXXXYYY
<JJJJKKK
<GGGGHHH
<PPPPQQQ
<CCCCDDDDDr?   c                      t          j        dt                     t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd	           t          t           fd
           t          t           fd           d S )Nr_   c                  ,    t           j                  S rE   rF   wrong_domain_matrixs   r=   rI   z'test_lll_wrong_domain.<locals>.<lambda>   s    (+>+B"C"C r?   c                  ,    t           j                  S rE   rK   r   s   r=   rI   z'test_lll_wrong_domain.<locals>.<lambda>   s    '*=*A"B"B r?   c                  6     j                                         S rE   rM   r   s   r=   rI   z'test_lll_wrong_domain.<locals>.<lambda>   s    "5"9"="="?"? r?   c                  Z     j                                                                         S rE   rO   r   s   r=   rI   z'test_lll_wrong_domain.<locals>.<lambda>   s#    "5"9"@"@"B"B"F"F"H"H r?   c                  ,                                      S rE   rQ   r   s   r=   rI   z'test_lll_wrong_domain.<locals>.<lambda>   s    "5"9"9";"; r?   c                  0    t           j        d          S rS   rF   r   s   r=   rI   z'test_lll_wrong_domain.<locals>.<lambda>   s    (+>+BUY"Z"Z"Z r?   c                  ,    t           j                  S rE   rU   r   s   r=   rI   z'test_lll_wrong_domain.<locals>.<lambda>   s    "34G4K"L"L r?   c                  6     j                                         S rE   rW   r   s   r=   rI   z'test_lll_wrong_domain.<locals>.<lambda>   s    "5"9"G"G"I"I r?   c                  Z     j                                                                         S rE   rY   r   s   r=   rI   z'test_lll_wrong_domain.<locals>.<lambda>   s#    "5"9"@"@"B"B"P"P"R"R r?   c                  ,                                      S rE   r[   r   s   r=   rI   z'test_lll_wrong_domain.<locals>.<lambda>   s    "5"C"C"E"E r?   )r   ro   r   r   r
   r   s   @r=   test_lll_wrong_domainr      s    &+FB77
=CCCCDDD
=BBBBCCC
=????@@@
=HHHHIII
=;;;;<<<
=ZZZZ[[[
=LLLLMMM
=IIIIJJJ
=RRRRSSS
=EEEEFFFFFr?   N)sympy.polys.domainsr   r   sympy.polys.matricesr   !sympy.polys.matrices.domainmatrixr   sympy.polys.matrices.exceptionsr   r   r	   r
   sympy.polys.matrices.lllr   r   r   sympy.testing.pytestr   r>   r]   rp   r~   r    r?   r=   <module>r      s    & & & & & & & & # # # # # # : : : : : : b b b b b b b b b b b b I I I I I I I I I I ' ' ' ' ' 'B8 B8 B8J? ? ?6T T TE E EG G G G Gr?   