# [−][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