5 个版本
0.1.5 | 2023年3月20日 |
---|---|
0.1.3 | 2020年1月19日 |
0.1.2 | 2019年12月26日 |
0.1.1 | 2019年2月8日 |
0.1.0 | 2019年2月7日 |
#1048 在 算法 中
在 2 个 crate 中使用(通过 hacspec-lib)
43KB
978 代码行
此 crate 定义了具有上界的、适用于规范的天然整数类型。这些整数的操作可以定义为模运算(模上界)或常规运算(在溢出或下溢时引发恐慌)。
由于每个整数都有自己的 Rust 类型,编译器可以检测并防止所有定义的不同整数之间的混合。
定义新的整数类型
以下宏用于定义此 crate 的 SizeNatExample
类型
define_abstract_integer_checked!(SizeNatExample, 64);
SizeNat
是新创建的类型名称。 64
是该类型的机器表示法中的位数。从位数可以推导出整数的上界,对所有操作都检查溢出。结果整数类型是可复制的,并支持加法、减法、乘法、整数除法、余数、比较和相等。 from_literal
方法允许您将整数文字转换为您的新的类型。
为模运算优化整数类型
在先前定义的抽象整数的基础上,您可以定义另一个类型,该类型允许您实现模运算。例如,此 crate 使用第9个梅森素数定义了算术字段
define_refined_modular_integer!(
SizeNatFieldExample,
SizeNatExample,
SizeNatExample::pow2(61) - SizeNatExample::from_literal(1)
);
此新宏的第一个参数是新定义的优化类型的名称。第二个参数是作为表示形式作用的基抽象整数的名称。第三个参数是所有操作中的模数,定义为基类型的值。
依赖项
~745KB
~16K SLoC