25个版本 (9个稳定版)
| 1.2.4 | 2023年2月14日 |
|---|---|
| 1.2.2 | 2022年12月27日 |
| 1.1.2 | 2022年10月29日 |
| 0.11.3 | 2022年9月9日 |
| 0.7.0 | 2021年2月5日 |
#196 in 数学
每月309次下载
在 midi_fundsp 中使用
58KB
961 行代码
裸金属模运算
ModNum 和 ModNumC 是专为 no_std 使用而设计的极为人性化的模运算结构体。
ModNum 对象表示一个模m的值。值和模可以是任何原始整数类型。算术运算符包括 +、-(一元和二元)、*、/、pow() 和 ==。还包括计算乘法逆元和解决模方程的能力。
ModNumC 对象同样表示一个模 M 的值,其中 M 是 usize 类型的泛型常量。算术运算符包括 +、-(一元和二元)、* 和 ==。
该库最初开发是为了方便在任意起始点通过固定大小数组进行双向导航。这是通过一个双向迭代器实现的,该迭代器从任何所需的值开始遍历整个环。迭代器支持 ModNum 和 ModNumC。
模数表示一个整数除以模的余数。如果我们还存储余数以外的商,我们就有了在计算过程中值“环绕”次数的计数。
例如,如果我们从 8 (mod 17) 开始并加上 42,结果是 16 (mod 17),环绕了 2 次。 WrapCountNum 和 WrapCountNumC 对象存储这个环绕值并提供它。
此外,有时能够在从零偏移的范围中来回移动是有用的。为此,提供了 OffsetNum 和 OffsetNumC。
请注意,ModNum、ModNumC、WrapCountNum、WrapCountNumC、OffsetNum 和 OffsetNumC 并非设计用于与任意长度的整数一起工作,因为它们需要它们的整数类型实现 Copy 特性。
注释
- 有关更新,请参阅 CHANGELOG.md。
依赖关系
~465KB