Wolfram Function Repository
Instantuse addon 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