2 releases
Uses old Rust 2015
0.1.1 | Mar 26, 2021 |
---|---|
0.1.0 | Mar 24, 2021 |
#1719 in Math
56KB
1.5K
SLoC
finitefields
Allows to perform simple algebraic operations over a finite field
Arguments
value
- number be represented asvalue % modulo
modulo
- An integer corresponding to the size of the modular space. For this to be a finite field it must be a prime number!
Operations
- addition
- subtraction
- multiplication
- division
- inversion
Examples
// Simple operations within a finite field
use finitefields::{FF,Finitefield,primes};
fn main(){
// Pick a prime
let modulo = primes::PRIMES31[0];
// Define numbers to be cast into our field
let num1: FF = 23742687;
let num2: FF = 87129774;
let fnum1 = Finitefield::new(num1, modulo).unwrap();
let fnum2 = Finitefield::new(num2, modulo).unwrap();
// Compute product
let product = fnum1 * fnum2;
assert_eq!(product.value, 174523906);
// Compute the inverse of the product
let product_inv = product.inverse().unwrap();
assert_eq!(product_inv.value, 486606559);
// Multiply by the product
assert_eq!((product * product_inv).value, 1);
}
Dependencies
~0.4–325KB