Text file src/simd/archsimd/_gen/simdgen/ops/GaloisField/categories.yaml

     1  !sum
     2  - go: GaloisFieldAffineTransform
     3    commutative: false
     4    documentation: !string |-
     5      // NAME returns the affine transformation A * x + b in GF(2^8).
     6      // Each element of A is interpreted as an 8x8 matrix of bits.
     7      // Each element of x is interpreted as an 8-element vector of bits.
     8      // The b argument is likewise an 8-element vector of bits.
     9      // The result is z[i] = A[i/8] * x[i] + b, where * and + are performed in GF2.
    10  - go: GaloisFieldAffineTransformInverse
    11    commutative: false
    12    documentation: !string |-
    13      // NAME returns the affine transformation A * (x⁻¹ mod P) + b in GF(2^8),
    14      // where the characteristic polynomial P is x^8 + x^4 + x^3 + x + 1.
    15      // Each element of A is interpreted as an 8x8 matrix of bits.
    16      // Each element of x is interpreted as an 8-element vector of bits.
    17      // The b argument is likewise an 8-element vector of bits.
    18      // The result is z[i] = A[i/8] * inv(x[i]) + b, where * and + are performed in GF2.
    19  - go: GaloisFieldMul
    20    commutative: false
    21    documentation: !string |-
    22      // NAME returns (x * y) mod P, performed in GF(2^8),
    23      // where the characteristic polynomial P is x^8 + x^4 + x^3 + x + 1.
    24  - go: carrylessMultiply
    25    commutative: false
    26  
    27  - go: carrylessMultiplyWidenLo
    28    commutative: true
    29    documentation: !string |-
    30      // NAME returns the carryless (polynomial) product of the low halves
    31      // of x and y.
    32      //
    33      // A carryless multiplication uses bitwise XOR instead of
    34      // add-with-carry, for example (in base two):
    35      //
    36      //	11 * 11 = 11 * (10 ^ 1) = (11 * 10) ^ (11 * 1) = 110 ^ 11 = 101
    37      //
    38      // This also models multiplication of polynomials with coefficients
    39      // from GF(2) -- 11 * 11 models (x+1)*(x+1) = x**2 + (1^1)x + 1 =
    40      // x**2 + 0x + 1 = x**2 + 1 modeled by 101.  (Note that "+" adds
    41      // polynomial terms, but coefficients "add" with XOR.)
    42  

View as plain text