11 个稳定版本
1.1.5 | 2024年6月19日 |
---|---|
1.1.4 |
|
1.0.6 | 2023年12月31日 |
1.0.3 | 2023年10月23日 |
0.1.1 | 2023年8月17日 |
#257 在 算法 中
78 每月下载量
用于 quaigh
195KB
5K SLoC
使用真值表(LUT)操作逻辑函数
该包实现了真值表数据结构,可以是任意大小的真值表(Lut
),或者是更高效的固定大小真值表(从 Lut2 到
Lut12
)。它们提供了逻辑运算符和用于分析、归约和分解的实用函数。还支持其他标准表示,例如积之和(Sop
)。
API 和文档尽量遵循 C++ 库 Kitty 的术语。
示例
创建一个包含五个变量的常量一 Lut。检查其十六进制值。
let lut = Lut::one(5);
assert_eq!(lut.to_string(), "Lut5(ffffffff)");
创建一个包含四个变量的 Lut4(变量),它是第 1 个和第 3 个的逻辑与。检查其十六进制值。
let lut = Lut4::nth_var(0) & Lut4::nth_var(2);
assert_eq!(lut.to_string(), "Lut4(a0a0)");
创建一个随机的 Lut6(六个变量)。显示其十六进制值。
let lut = Lut6::random();
print!("{}", lut);
创建三个变量的偶函数,并检查它可以分解为 Xor。检查其二进制值。
let lut = Lut::parity(3);
assert_eq!(lut.top_decomposition(0), DecompositionType::Xor);
assert_eq!(format!("{:b}", lut), "Lut3(10010110)");
依赖关系
~0.2–3.5MB
~36K SLoC