MCPcopy Create free account
hub / github.com/BitVM/BitVM / maj1_calculation_nib_stack

Function maj1_calculation_nib_stack

bitvm/src/hash/sha256_u4_stack.rs:218–248  ·  view source on GitHub ↗
(
    stack: &mut StackTracker,
    a: StackVariable,
    b: StackVariable,
    c: StackVariable,
    nib: u32,
    lookup: StackVariable,
    xortable: StackVariable,
    shift_table: StackVariable,

Source from the content-addressed store, hash-verified

216
217#[allow(clippy::too_many_arguments)]
218pub fn maj1_calculation_nib_stack(
219 stack: &mut StackTracker,
220 a: StackVariable,
221 b: StackVariable,
222 c: StackVariable,
223 nib: u32,
224 lookup: StackVariable,
225 xortable: StackVariable,
226 shift_table: StackVariable,
227) -> StackVariable {
228 stack.copy_var(a); // a[nib]
229
230 stack.copy_var(b); // a b[nib]
231
232 stack.copy_var(c); // a b c[nib]
233
234 stack.op_3dup(); // a b c a b c
235
236 u4_logic_with_table_stack(stack, lookup, xortable); // a b c a (b^c)
237
238 u4_logic_with_table_stack(stack, lookup, xortable); // a b c (a^b^c)
239
240 stack.op_sub(); // a b (c-a^b^c)
241 stack.op_add(); // a (b+c-a^b^c)
242 stack.op_add(); // a+b+c-a^b^c
243
244 let var = u4_rshift_stack(stack, shift_table, 1);
245
246 stack.rename(var, format!("maj_{nib}").as_str());
247 var
248}
249
250pub fn u4_add_nibble_stack(
251 stack: &mut StackTracker,

Callers 1

sha256_stackFunction · 0.85

Calls 2

u4_rshift_stackFunction · 0.85

Tested by

no test coverage detected