[−][src]Crate lll_rs
A Rust implementation of the (basic) Lenstra-Lenstra-Lovasz lattice reduction algorithm
Introduction
lll-rs
is an implementation of the Lenstra-Lenstra-Lovász lattice basis reduction
algorithm in Rust as well as the implementation of an improved version, the L² algorithm.
The library comes with a set of simple helpers to create vectors and matrices to perform
lattice basis reduction.
Examples
use lll_rs::{ l2::{bigl2, l2f}, lll::{biglll, lllf}, matrix::Matrix, vector::{BigVector, VectorF}, }; use rug::{Integer,Assign}; // Init the matrix with Integer let mut basis: Matrix<BigVector> = Matrix::init(3, 4); // Populate the matix basis[0] = BigVector::from_vector(vec![ Integer::from(1) << 100000, Integer::from(0), Integer::from(0), Integer::from(1345), ]); basis[1] = BigVector::from_vector(vec![ Integer::from(0), Integer::from(1), Integer::from(0), Integer::from(35), ]); basis[2] = BigVector::from_vector(vec![ Integer::from(0), Integer::from(0), Integer::from(1), Integer::from(154), ]); // Perfom the LLL basis redution biglll::lattice_reduce(&mut basis); // OR // Perfom the LLL basis redution // Specify the delta and eta coefficient for the reduction bigl2::lattice_reduce(&mut basis, 0.5005, 0.999);
Modules
l2 | The L² algorithm [LLL25] |
lll | The Lenstra-Lenstra-Lovasz algorithm [LLL82] |
matrix | Basic matrix structure for LLL |
vector | Basic vector structures for LLL |