
    sg                        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y)    )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   kD  rt        d      | j                  t
        k7  rt        d      | j                  d   | j                  d   d}| j                         }| j                  ft               }| j                  ft               t              D cg c]  }t        dd       c}t        dd      r| j                  t
              nd }d}fd	dfd
dfddd}	dfd}
t              D ]  }||   D cg c]  }t        j                  |t
               c}||<   t        |      D ]Q  } |	||||f      }	 ||   z  |   |<   t              D cg c]  }||   |   |   |   ||   |   z  z
   c}||<   S  |	||||f      |<    |k  rk ||dz
        s |
||||dz
  f        |      r3t        |dz
  dd      D ]  } ||      r |
||||f        |dz  }n|   |dz
     }|   |dz  |dz
     z  z   }	 |dz
     |z  }||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 ]A  }|   |   }|   |dz
     ||z  z
  |   |<   |   |dz
     |   |   z  |z   |   |dz
  <   C r||dz
     ||   c||<   ||dz
  <   t        |dz
  d      }|k  rkt        fdt        d      D              sJ t        fdt              D              sJ ||fS c c}w c c}w # t        $ r t        |      w xY wc c}w # t        $ r t        |      w xY w)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 ZZ   z-input matrix contains linearly dependent rowsc                2    t        t        | z               S N)r   mfloor)xhalfs    K/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/matrices/lll.pyclosest_integerz!_ddm_lll.<locals>.closest_integer   s    &T"##    c                D    |    |    | dz
     dz  z
  | dz
     z  k\  S )Nr   r    )kdeltag_starmus    r   lovasz_conditionz"_ddm_lll.<locals>.lovasz_condition   s5    ayebeAEla&776!a%=HIIr   c                ,    t        |    |         k  S r   )abs)r   jr   r   s     r   mu_smallz_ddm_lll.<locals>.mu_small!   s    2a58}$$r   c                `     t         fdt         j                  d         D              S )Nc              3  L   K   | ]  }d       |   d      |   z    yw)r   r   Nr   ).0zrowsr   ys     r   	<genexpr>z-_ddm_lll.<locals>.dot_rows.<locals>.<genexpr>%   s.     LQ1T!W:a=1T!W:a=0Ls   !$r   )sumrangeshape)r   r(   r'   s   ```r   dot_rowsz_ddm_lll.<locals>.dot_rows$   s!    L%
:KLLLr   c                    ||d      |d            }t              D cg c]  }||d      |   |||d      |   z  z
   c}||d   <   t        |d         D cg c]  }||d      |   |||d      |   z  z
   c}||d      d |d    ||d      |d   xx   |z  cc<   	r8t              D cg c]  }| |d      |   || |d      |   z  z
   c}| |d   <   y y c c}w c c}w c c}w )Nr   r   r+   )
Tr   r(   r'   rr&   r   mnreturn_transforms
         r   
reduce_rowz_ddm_lll.<locals>.reduce_row'   s   BtAwKQ01AFqJAaQjma!DG*Q-&77J$q'
NSTXYZT[n ]DGQ!bak!n2D!D ]47HT!W
47DG!EJ1XN!DG*Q-!aQjm*;;NAd1gJ  K ] Os   !C!C#2!C(c              3  .   K   | ]  } |        y wr   r   )r%   ir   s     r   r)   z_ddm_lll.<locals>.<genexpr>T   s     8q"8s   c              3  P   K   | ]  }t        |      D ]  } ||         y wr   r/   )r%   r8   r!   r"   s      r   r)   z_ddm_lll.<locals>.<genexpr>U   s'     B!qBAx1~B~Bs   #&)r   intreturnbool)r   r:   r!   r:   r;   r<   )r'   ztuple[int, int])r   r	   r,   r   domainr   r
   copyzerosr+   eyeconvert_fromZeroDivisionErrorr   maxall)r   r   r4   r   r(   y_star_r0   linear_dependent_errorr-   r5   r8   r&   r!   row_dotlnualphabetaxir   r   r   r   r2   r   r"   r3   s    ``                 @@@@@@@@r   _ddm_lllrN   	   s   	!Qx5ER1X->??wwqzAGGAJLMMxx2~<==	
A	
A	A	AWWaVR F	
!Q	B %a)1bAh)Fa8D(adAL$J%MO O 1X 	556qT:R__Q+:q	q 	SAq&1a&1G:"VAY.1a JOqRA11a6!9Q<(??RF1I	S VVaV4q		5 a%1q5!q"a!QU,A1q5"b) 11~q"a!Q01 FAAq1uB1Ia&Q- 77E:a!e}u, 9BqE!a%Lq	D(F1I!F1q5Mq1uXqtNAaD!AE(/1!a%y!a%/@"Q%Q-,BqE&1q5M2a!e9Va!e,1q5!_ <U1Xa5Q<"r'11a!!uQU|beAh6;1a!e<  !"1q51Q4!aAhAE1A5 a%6 8E!QK8888BuQxBBBBa4KA *4 ;
 % :!"899:R % :!"899:s*   )N(!N-N2:!O
1O 2OO$c                $    t        | |d      d   S )NFr   r4   r   rN   r   r   s     r   ddm_lllrS   Y   s    AUU;A>>r   c                    t        | |d      S )NTrP   rQ   rR   s     r   ddm_lll_transformrU   ]   s    AUT::r   N)
__future__r   mathr   r   sympy.polys.domainsr   r   sympy.polys.matrices.exceptionsr   r   r	   r
   rN   rS   rU   r   r   r   <module>rZ      sH    "   & b b Ah M` 1X ?  "!Qx ;r   