# finitefields
[](https://crates.io/crates/finitefields)
[](https://docs.rs/finitefields)
[](https://travis-ci.com/apelloni/finitefields)
[](https://www.buymeacoffee.com/apelloni)
Allows to perform simple algebraic operations over a finite field
## Arguments
* `value` - number be represented as `value % 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
```rust
// 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);
}
```