on master help sign in
cut
commit35fb769a4bac4dfcb20fbbd7968ba94e11ddf20c authoriko <mail@iko.soy> dateSun 25 Aug 2024, 17:10 (2 years ago) parenta22aab6
1 file changed+15
nock/src/jets.rs+15
nock/src/jets.rs+15
@@ -66,6 +66,7 @@ pub fn generate_jets() -> Jets {
6666 (233905026649167301608240871123208487851, CAN),
6767 (88906713429699361214497715048276521868, CAT),
6868 (194217032002582779752566874231896746840, MET),
69+ (132848439781269254342687684309700447927, CUT),
6970 ])
7071}
7172
@@ -623,3 +624,17 @@ fn met(bloq: u32, mut a: Atom) -> u32 {
623624
624625 c
625626}
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+};