#查找表 #布尔 #逻辑 #真值表

spiral

布尔函数实现,表示为查找表(LUT)或积之和(SOP)

11 个稳定版本

1.1.5 2024年6月19日
1.1.4 2024年1月12日
1.0.6 2023年12月31日
1.0.3 2023年10月23日
0.1.1 2023年8月17日

#257算法

Download history 304/week @ 2024-04-19 7/week @ 2024-04-26 103/week @ 2024-06-14 28/week @ 2024-06-21 5/week @ 2024-06-28 17/week @ 2024-07-05 7/week @ 2024-07-19 71/week @ 2024-07-26

78 每月下载量
用于 quaigh

MIT/Apache

195KB
5K SLoC

Volute crate Volute documentation Build status

使用真值表(LUT)操作逻辑函数

该包实现了真值表数据结构,可以是任意大小的真值表(Lut),或者是更高效的固定大小真值表(从 Lut2Lut12)。它们提供了逻辑运算符和用于分析、归约和分解的实用函数。还支持其他标准表示,例如积之和(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