https://github.com/0xwoland/fast-ntt
Number Theoretic Transform in Rust
https://github.com/0xwoland/fast-ntt
ntt
Last synced: about 2 months ago
JSON representation
Number Theoretic Transform in Rust
- Host: GitHub
- URL: https://github.com/0xwoland/fast-ntt
- Owner: 0xWOLAND
- Created: 2023-10-18T22:30:01.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-01-10T09:11:19.000Z (over 1 year ago)
- Last Synced: 2025-02-10T00:51:49.777Z (4 months ago)
- Topics: ntt
- Language: Rust
- Homepage:
- Size: 86.9 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# fast-ntt [](https://github.com/0xWOLAND/fast-ntt/actions/workflows/rust.yml)
fast-ntt is a Rust package to compute polynomial multiplication in `O(nlog(n))` time.
## Usage
```rust
// Polynomial Addition
let a = Polynomial::new(vec![1, 2, 3, 4].iter().map(|&x| BigInt::from(x)).collect());
let b = Polynomial::new(vec![1, 2].iter().map(|&x| BigInt::from(x)).collect());
println!("{}", a + b);// Polynomial Multiplication
let a = Polynomial::new(vec![1, 2, 3].iter().map(|&x| BigInt::from(x)).collect());
let b = Polynomial::new(
vec![1, 2, 3, 4]
.iter()
.map(|&x| BigInt::from(x))
.collect(),
);
let c: Constants = working_modulus(N, M);
println!("{}", fast_mul(a, b, c));// Polynomial Differentiation
let a = Polynomial::new(vec![3, 2, 1].iter().map(|&x| BigInt::from(x)).collect());
let da = diff(a);
```## Benchmarks
Generate benchmarks using:
```bash
# If you don't have it already
cargo install cargo-criterion criterion-table -- --cfgcargo criterion --message-format=json --features parallel | criterion-table > BENCHMARKS.md
```Benchmarks are also available [here](./BENCHMARKS.md)