module os.neptune.xfield

// Construct extension field element from 3 base field elements
#[intrinsic(xfield)]
pub fn new(a: Field, b: Field, c: Field) -> XField

// Multiplicative inverse in extension field
#[intrinsic(xinvert)]
pub fn inv(a: XField) -> XField

// Dot product steps return the updated accumulator and both RAM pointers.
#[intrinsic(xx_dot_step)]
pub fn xx_dot_step(acc: XField, ptr_a: Field, ptr_b: Field) -> (XField, Field, Field)

#[intrinsic(xb_dot_step)]
pub fn xb_dot_step(acc: XField, ptr_a: Field, ptr_b: Field) -> (XField, Field, Field)

Graph