Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

E12T

Degree-12 extension field element using a 2-3-2 tower construction.

The field F_{q^12} is built in three steps:

  • F_{q^2} ~= F_qu/p1(u)
  • F_{q^6} ~= F_{q^2}v/p2(v)
  • F_{q^12} ~= F_{q^6}w/p3(w)

Any element has the form:

[ (c1b2a1*u + c1b2a0)*v^2 + (c1b1a1*u + c1b1a0)*v + (c1b0a1*u + c1b0a0) ]*w
+ [ (c0b2a1*u + c0b2a0)*v^2 + (c0b1a1*u + c0b1a0)*v + (c0b0a1*u + c0b0a0) ]

This yields 12 base-field coefficients. Field names follow c{c}b{b}a{a}:

  • c in {0,1} selects the coefficient of 1 (c=0) or of w (c=1)
  • b in {0,1,2} selects the power of v (0, 1, or 2)
  • a in {0,1} selects the component in the quadratic basis over u

All twelve attributes are u384 values (unsigned 384-bit integers) used by the surrounding circuits and serializers.

Example: zero element (schematic — any u384 zero can be reused across fields).

let z: u384 = Zero::zero();
let e = E12T {
    c0b0a0: z, c0b0a1: z,
    c0b1a0: z, c0b1a1: z,
    c0b2a0: z, c0b2a1: z,
    c1b0a0: z, c1b0a1: z,
    c1b1a0: z, c1b1a1: z,
    c1b2a0: z, c1b2a1: z,
};

Fully qualified path: garaga::definitions::structs::fields::E12T

[derive(Drop, Copy, Debug, PartialEq)]
pub struct E12T {
    pub c0b0a0: u384,
    pub c0b0a1: u384,
    pub c0b1a0: u384,
    pub c0b1a1: u384,
    pub c0b2a0: u384,
    pub c0b2a1: u384,
    pub c1b0a0: u384,
    pub c1b0a1: u384,
    pub c1b1a0: u384,
    pub c1b1a1: u384,
    pub c1b2a0: u384,
    pub c1b2a1: u384,
}

Members

c0b0a0

Fully qualified path: garaga::definitions::structs::fields::E12T::c0b0a0

pub c0b0a0: u384

c0b0a1

Fully qualified path: garaga::definitions::structs::fields::E12T::c0b0a1

pub c0b0a1: u384

c0b1a0

Fully qualified path: garaga::definitions::structs::fields::E12T::c0b1a0

pub c0b1a0: u384

c0b1a1

Fully qualified path: garaga::definitions::structs::fields::E12T::c0b1a1

pub c0b1a1: u384

c0b2a0

Fully qualified path: garaga::definitions::structs::fields::E12T::c0b2a0

pub c0b2a0: u384

c0b2a1

Fully qualified path: garaga::definitions::structs::fields::E12T::c0b2a1

pub c0b2a1: u384

c1b0a0

Fully qualified path: garaga::definitions::structs::fields::E12T::c1b0a0

pub c1b0a0: u384

c1b0a1

Fully qualified path: garaga::definitions::structs::fields::E12T::c1b0a1

pub c1b0a1: u384

c1b1a0

Fully qualified path: garaga::definitions::structs::fields::E12T::c1b1a0

pub c1b1a0: u384

c1b1a1

Fully qualified path: garaga::definitions::structs::fields::E12T::c1b1a1

pub c1b1a1: u384

c1b2a0

Fully qualified path: garaga::definitions::structs::fields::E12T::c1b2a0

pub c1b2a0: u384

c1b2a1

Fully qualified path: garaga::definitions::structs::fields::E12T::c1b2a1

pub c1b2a1: u384