def cr.lrw.inc

bend-osdev-crypto@0.1.0.0 · lrw.bend:52

import bend-osdev-crypto@0.1.0.0/lrw.bend as Lrw
import Base
import bend-osdev-gf@0.1.0.0/gf128.bend as G

52# i + 1, modulo 2^128
53def cr.lrw.inc(i: G.Gf128) -> G.Gf128:
54  match i:
55    case G.Gf128{w0, w1, w2, w3}:
56      +a3 = U32.add(w3, 1)
57      +c3 = U32.is_eq(a3, 0)
58      +a2 = cr.lrw.carry(c3, w2)
59      +c2 = Bool.and(c3, U32.is_eq(a2, 0))
60      +a1 = cr.lrw.carry(c2, w1)
61      +c1 = Bool.and(c2, U32.is_eq(a1, 0))
62      G.Gf128{cr.lrw.carry(c1, w0), a1, a2, a3}

Uses (5)

Used by (12)