on master help sign in
cut
35fb769iko
nock/src/jets.rs+15
@@ -66,6 +66,7 @@ pub fn generate_jets() -> Jets {
66 (233905026649167301608240871123208487851, CAN),
66 (233905026649167301608240871123208487851, CAN),
67 (88906713429699361214497715048276521868, CAT),
67 (88906713429699361214497715048276521868, CAT),
68 (194217032002582779752566874231896746840, MET),
68 (194217032002582779752566874231896746840, MET),
69+ (132848439781269254342687684309700447927, CUT),
69 ])
70 ])
70}
71}
71
72
@@ -623,3 +624,17 @@ fn met(bloq: u32, mut a: Atom) -> u32 {
623
624
624 c
625 c
625}
626}
627+
628+static CUT: Jet = |ctx, n| {
629+ let (a, b) = n.as_cell().unwrap();
630+ let (b, d) = b.as_cell().unwrap();
631+ let (b, c) = b.as_cell().unwrap();
632+
633+ let bits = 2u32.pow(a.as_u32().unwrap());
634+
635+ let mask = (&ctx.big_uints.one << (bits * c.as_u32().unwrap())) - &ctx.big_uints.one;
636+
637+ Rc::new(Noun::Atom(
638+ (d.as_atom().unwrap() >> (bits * b.as_u32().unwrap())) & mask,
639+ ))
640+};