#number-theory #modular-arithmetic #montgomery #numeric

no-std num-modular

Implementation of efficient integer division and modular arithmetic operations with generic number types. Supports various backends including num-bigint, etc

17 releases

0.6.1 Aug 31, 2023
0.5.1 May 30, 2022
0.2.1 Mar 30, 2022

#31 in Math

Download history 82590/week @ 2024-12-11 72211/week @ 2024-12-18 57847/week @ 2024-12-25 79012/week @ 2025-01-01 106151/week @ 2025-01-08 100164/week @ 2025-01-15 105219/week @ 2025-01-22 113525/week @ 2025-01-29 126739/week @ 2025-02-05 115639/week @ 2025-02-12 128295/week @ 2025-02-19 130735/week @ 2025-02-26 130569/week @ 2025-03-05 127964/week @ 2025-03-12 129585/week @ 2025-03-19 104604/week @ 2025-03-26

515,680 downloads per month
Used in 446 crates (12 directly)

Apache-2.0

145KB
3.5K SLoC

num-modular

A generic implementation of integer division and modular arithmetics in Rust. It provide basic operators and an type to represent integers in a modulo ring. Specifically the following features are supported:

  • Common modular arithmetics: add, sub, mul, div, neg, double, square, inv, pow
  • Optimized modular arithmetics in Montgomery form
  • Optimized modular arithmetics with pseudo Mersenne primes as moduli
  • Fast integer divisibility check
  • Legendre, Jacobi and Kronecker symbols

It also support various integer type backends, including primitive integers and num-bigint. Note that this crate also supports [no_std]. To enable std related functionalities, enable the std feature of the crate.

Dependencies

~120KB