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