///|
fn main {
let manager = @bdd.Manager::new(
["a", "b", "carry_in"],
@bdd.ResourceBudget::default(),
).unwrap()
let sum = manager.compile("a ^ b ^ carry_in").unwrap()
let carry = manager.compile("(a & b) | (carry_in & (a ^ b))").unwrap()
for
input in [
[("a", false), ("b", false), ("carry_in", false)],
[("a", true), ("b", true), ("carry_in", false)],
[("a", true), ("b", false), ("carry_in", true)],
] {
let sum_value = manager.evaluate(sum, input).unwrap()
let carry_value = manager.evaluate(carry, input).unwrap()
println(
"input=" +
@debug.to_string(input) +
" sum=\{sum_value} carry=\{carry_value}",
)
}
}