2 个版本
使用旧的 Rust 2015
0.1.1 | 2021年3月26日 |
---|---|
0.1.0 | 2021年3月24日 |
#1480 in 数学
56KB
1.5K SLoC
finitefields
允许在有限域上执行简单的代数运算
参数
value
- 以value % 模
的形式表示的数字modulo
- 与模空间大小相对应的整数。为了成为一个有限域,它必须是一个 素数!
操作
- 加法
- 减法
- 乘法
- 除法
- 求逆
示例
// 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);
}
依赖项
~225KB