@@ -82,6 +82,7 @@ pub fn generate_jets() -> Jets {
8282 (26880808488368366377851132561579207892, CON),
8383 (311027486926441687148059942599447850754, DIS),
8484 (330927609077697663248483044495963838437, MIX),
85+ (39579736615539990724554083585557839000, NOT),
8586 ])
8687}
8788
@@ -863,3 +864,16 @@ static XEB: Jet = |_ctx, n| {
863864static CON: Jet = |_ctx, n| BINARY_ATOM(n, |a, b| a | b);
864865static DIS: Jet = |_ctx, n| BINARY_ATOM(n, |a, b| a & b);
865866static MIX: Jet = |_ctx, n| BINARY_ATOM(n, |a, b| a ^ b);
867+
868+static NOT: Jet = |ctx, n| {
869+ let (a, b) = n.as_cell().unwrap();
870+ let (b, c) = b.as_cell().unwrap();
871+
872+ let bloq = a.as_u32().unwrap();
873+ let bits = 2u32.pow(bloq);
874+ let mask = (&ctx.big_uints.one << (bits * b.as_u32().unwrap())) - &ctx.big_uints.one;
875+
876+ let target = c.as_atom().unwrap() ^ &mask;
877+
878+ Rc::new(Noun::Atom(target))
879+};