Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Compute a reduced basis for a set of vectors, along with a unimodular matrix that converts from the vectors to the reduced basis
ResourceFunction["ExtendedLatticeReduce"][lat] computes a reduced basis ℬ for the lattice of integer vectors lat, returning the pair {𝒰,ℬ}, where 𝒰 is a unimodular conversion matrix satisfying 𝒰.lat=ℬ. |
Create an integer lattice comprised of two columns of large integers augmented on the right by an identity matrix:
In[1]:= |
![]() |
Out[1]= |
![]() |
Reduce the lattice:
In[2]:= |
![]() |
Out[2]= |
![]() |
Check the conversion matrix equation:
In[3]:= |
![]() |
Out[3]= |
![]() |
Check that the conversion matrix is unimodular:
In[4]:= |
![]() |
Out[4]= |
![]() |
Check that LatticeReduce gives the same reduced lattice (this is not strictly necessary):
In[5]:= |
![]() |
Out[5]= |
![]() |
Create a rational lattice:
In[6]:= |
![]() |
Out[6]= |
![]() |
Compute a reduction of the lattice along with the corresponding unimodular conversion matrix::
In[7]:= |
![]() |
Out[7]= |
![]() |
Reduce a lattice of Gaussian integers with larger entries in the leftmost two columns:
In[8]:= |
![]() |
Out[8]= |
![]() |
Check the result:
In[9]:= |
![]() |
Out[9]= |
![]() |
Create a large matrix with big integers in the first two columns and an identity matrix on the right:
First compute the default reduction:
In[10]:= |
![]() |
Out[10]= |
![]() |
Check the conversion matrix criteria:
In[11]:= |
![]() |
Out[11]= |
![]() |
Computing a reduction of higher quality typically takes longer:
In[12]:= |
![]() |
Out[12]= |
![]() |
Using a smaller reduction size ratio setting typically gives a faster computation:
In[13]:= |
![]() |
Out[13]= |
![]() |
The higher quality reduction manifests by most rows in the “stronger” result having norms smaller than for corresponding rows in the default reduction:
In[14]:= |
![]() |
Out[14]= |
![]() |
The lower quality reduction manifests by most rows in the “weaker” result having norms larger than for corresponding rows in the default reduction:
In[15]:= |
![]() |
Out[15]= |
![]() |
This work is licensed under a Creative Commons Attribution 4.0 International License