
    Rie                        d dl mZ d dlmZ d dlmZmZ d dlm	Z	m
Z
mZmZ  edd          dfdZ edd          fd	Z edd          fd
ZdS )    )annotations)floor)ZZQQ)DMRankErrorDMShapeErrorDMValueErrorDMDomainError      Fc                   t          dd          k    st          dd          k    rt          d          | j        d         | j        d         k    rt          d          | j        t
          k    rt          d          | j        d         | j        d         d}|                                 }|                     ft                     |                     ft                     d t                    D             t          dd          r| 
                    t
                    nd }d	}fd
dfddfddd}dfd}t                    D ]d |         D             <   t                    D ]e ||f          }		 |	         z           <   n# t          $ r t          |          w xY wfdt                    D             <   f |f          <   |k     r ||dz
            s |||||dz
  f            |          r:t          |dz
  dd          D ]}
 ||
          s |||||
f           |dz  }n|         |dz
           }|         |dz  |dz
           z  z   }	 |dz
           |z  }n# t          $ r t          |          w xY w||z  |         |dz
  <   |         |z  |<   ||dz
  <   ||dz
           ||         c||<   ||dz
  <   |dz
           d |dz
           |         d |dz
           c|         d |dz
  <   |dz
           d |dz
  <   t          |dz             D ]_         |         }         |dz
           ||z  z
           |<   |         |dz
                    |         z  |z            |dz
  <   `r||dz
           ||         c||<   ||dz
  <   t          |dz
  d          }|k     t          fdt          d          D                       sJ t          fdt                    D                       sJ ||fS )N   r   z!delta must lie in range (0.25, 1)r   z/input matrix must have shape (m, n) with m <= nzinput matrix domain must be ZZc                .    g | ]}t          d d          S r   r   )r   ).0_s     8lib/python3.11/site-packages/sympy/polys/matrices/lll.py
<listcomp>z_ddm_lll.<locals>.<listcomp>   s     )))1bAhh)))       z-input matrix contains linearly dependent rowsc                B    t          t          | z                       S N)r   mfloor)xhalfs    r   closest_integerz!_ddm_lll.<locals>.closest_integer   s    &T""###r   kintreturnboolc                ^    |          |          | dz
           dz  z
  | dz
           z  k    S )Nr   r    )r   deltag_starmus    r   lovasz_conditionz"_ddm_lll.<locals>.lovasz_condition   s5    ayebeAEla&776!a%=HIIr   jc                B    t          |          |                   k    S r   )abs)r   r'   r   r%   s     r   mu_smallz_ddm_lll.<locals>.mu_small!   s    2a58}}$$r   rowstuple[int, int]c                r     t           fdt           j        d                   D                       S )Nc                b    g | ]+}d                   |         d                  |         z  ,S r   r"   )r   zr+   r   ys     r   r   z._ddm_lll.<locals>.dot_rows.<locals>.<listcomp>%   s6    MMMaAd1gJqMAd1gJqM1MMMr   r   )sumrangeshape)r   r0   r+   s   ```r   dot_rowsz_ddm_lll.<locals>.dot_rows$   s<    MMMMMM5;L;LMMMNNNr   c                     d                  d                            fdt                    D             d         <   fdt          d                   D             d                  d d         <   d                  d         xx         z  cc<   r( fdt                    D              d         <   d S d S )Nr   r   c                h    g | ].}d                   |         d                  |         z  z
  /S r   r"   )r   r/   rr+   r0   s     r   r   z0_ddm_lll.<locals>.reduce_row.<locals>.<listcomp>)   s;    JJJAaQjma!DG*Q-&77JJJr   c                h    g | ].}d                   |         d                  |         z  z
  /S r   r"   )r   r/   r%   r7   r+   s     r   r   z0_ddm_lll.<locals>.reduce_row.<locals>.<listcomp>*   s;     ] ] ]DGQ!bak!n2D!D ] ] ]r   c                h    g | ].}d                   |         d                  |         z  z
  /S r   r"   )r   r/   Tr7   r+   s     r   r   z0_ddm_lll.<locals>.reduce_row.<locals>.<listcomp>-   s;    NNN!DG*Q-!aQjm*;;NNNr   r2   )	r:   r%   r0   r+   r7   r   mnreturn_transforms	   ````@r   
reduce_rowz_ddm_lll.<locals>.reduce_row'   s   OBtAwKQ011JJJJJJqJJJ$q'
 ] ] ] ] ] ]eTXYZT[nn ] ] ]47HT!WH
47DG! 	ONNNNNNU1XXNNNAd1gJJJ	O 	Or   c                B    g | ]}t          j        |t                    S r"   )r   convert_fromr   )r   r/   s     r   r   z_ddm_lll.<locals>.<listcomp>0   s$    :::R_Q++:::r   c                h    g | ].}         |                                    |         z  z
  /S r"   r"   )r   r/   ir'   r%   y_stars     r   r   z_ddm_lll.<locals>.<listcomp>7   s;    RRRA11a6!9Q<(??RRRr   c                &    g | ]} |          S r"   r"   )r   rC   r&   s     r   r   z_ddm_lll.<locals>.<listcomp>T   s%    999  ##999r   c                L    g | ] }t          |          D ]} ||          !S r"   r;   )r   rC   r'   r*   s      r   r   z_ddm_lll.<locals>.<listcomp>U   s6    CCC1%((CCQACCCCr   )r   r   r   r    )r   r   r'   r   r   r    )r+   r,   )r   r	   r3   r   domainr   r
   copyzerosr2   eyeZeroDivisionErrorr   maxall)r   r#   r>   r   r0   r:   linear_dependent_errorr4   r?   row_dotlnualphabetaxir   r$   r   rC   r'   r&   r<   r%   r*   r=   rD   s    ``            @@@@@@@@@@@r   _ddm_lllrV   	   s   	!Qxx5ER1XX-->???wqzAGAJLMMMx2~~<===	
A	
A	A	AWWaVR  F	
!Q		B))a)))Fa88D(2adAL$ $ $ $ $J J J J J J J J% % % % % % %O O O OO O O O O O O O O 1XX 	5 	5::QqT:::q	q 	S 	SAhq&1a&11G:"VAY.1a$ : : :!"8999:RRRRRRRqRRRF1IIHVVaV44q		
a%%x1q5!! 	-Jq"a!QU,,,A 	1q5"b)) 1 1x1~~ 1Jq"a!Q000FAAAq1uB1Ia&Q- 77E:a!e}u,$ : : :!"8999:9BqE!a%Lq	D(F1I!F1q5Mq1uXqtNAaD!AE(/1!a%y!a%/@"Q%Q-,BqE&1q5&M2a!e9Va!eV,1q5!__ < <U1Xa5Q<"r'11a!!uQU|beAh6;1a!e 0!"1q51Q4!aAhAE1A5 a%%6 9999U1a[[999:::::CCCCaCCCDDDDDa4Ks   +G  G,J; ;Kc                2    t          | |d          d         S )NFr#   r>   r   rV   r   r#   s     r   ddm_lllr[   Y   s    AUU;;;A>>r   c                &    t          | |d          S )NTrX   rY   rZ   s     r   ddm_lll_transformr]   ]   s    AUT::::r   N)
__future__r   mathr   r   sympy.polys.domainsr   r   sympy.polys.matrices.exceptionsr   r   r	   r
   rV   r[   r]   r"   r   r   <module>rb      s    " " " " " "             & & & & & & & & b b b b b b b b b b b b bAhh M M M M` R1XX ? ? ? ?  "r!Qxx ; ; ; ; ; ;r   