XOR-fold a list of bits: xorBoolList bits is the parity of bits,
folding != from false, so it is true exactly when an odd number of
entries are true. The carryless-multiplication proofs reduce each output
coefficient to such an XOR fold over a list of partial-product bits.
Equations
- Hex.GF2Poly.xorBoolList bits = List.foldl (fun (acc bit : Bool) => acc != bit) false bits
Instances For
XOR a list of machine words as the word-level analogue of xorBoolList.
Equations
- Hex.GF2Poly.xorWordList [] = 0
- Hex.GF2Poly.xorWordList (word :: words) = word ^^^ Hex.GF2Poly.xorWordList words
Instances For
The raw word contribution of a single clmul x y placed at word offset
idx, projected to result word slot slot.
Equations
Instances For
Source-word contribution list for one coefficient of the left-associated
raw product (xs * ys) * zs. The outer product contributes a word slot and a
zs source word; each such intermediate word is expanded back to the
xs/ys source pair contributions that created it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Source-word contribution list for one coefficient of the right-associated
raw product xs * (ys * zs). The outer product contributes an xs source
word and an intermediate word slot; each intermediate word is expanded back to
the ys/zs source pair contributions that created it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Contributions from one fixed source triple (i,j,k) to the left-associated
word product, varying only the intermediate (xs * ys) result slot.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Contributions from one fixed source triple (i,j,k) to the right-associated
word product, varying only the intermediate (ys * zs) result slot.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The one-hot contribution of a selected source bit of a word.
Equations
- Hex.GF2Poly.oneHotBitWord word bit = if Hex.GF2Poly.wordBitAt word bit = true then 1 <<< bit.toUInt64 else 0