in math/src/field/f64/tests.rs [303:364]
fn cube_mul() {
// identity
let r: CubeExtension<BaseElement> = rand_value();
assert_eq!(
<CubeExtension<BaseElement>>::ZERO,
r * <CubeExtension<BaseElement>>::ZERO
);
assert_eq!(r, r * <CubeExtension<BaseElement>>::ONE);
// test multiplication within bounds
let a = <CubeExtension<BaseElement>>::new(
BaseElement::new(3),
BaseElement::new(5),
BaseElement::new(2),
);
let b = <CubeExtension<BaseElement>>::new(
BaseElement::new(320),
BaseElement::new(68),
BaseElement::new(3),
);
let expected = <CubeExtension<BaseElement>>::new(
BaseElement::new(1111),
BaseElement::new(1961),
BaseElement::new(995),
);
assert_eq!(expected, a * b);
// test multiplication with overflow
let a = <CubeExtension<BaseElement>>::new(
BaseElement::new(18446744069414584267),
BaseElement::new(18446744069414584309),
BaseElement::new(9223372034707292160),
);
let b = <CubeExtension<BaseElement>>::new(
BaseElement::new(18446744069414584101),
BaseElement::new(420),
BaseElement::new(18446744069414584121),
);
let expected = <CubeExtension<BaseElement>>::new(
BaseElement::new(14070),
BaseElement::new(18446744069414566571),
BaseElement::new(5970),
);
assert_eq!(expected, a * b);
let a = <CubeExtension<BaseElement>>::new(
BaseElement::new(18446744069414584266),
BaseElement::new(18446744069412558094),
BaseElement::new(5268562),
);
let b = <CubeExtension<BaseElement>>::new(
BaseElement::new(18446744069414583589),
BaseElement::new(1226),
BaseElement::new(5346),
);
let expected = <CubeExtension<BaseElement>>::new(
BaseElement::new(18446744065041672051),
BaseElement::new(25275910656),
BaseElement::new(21824696736),
);
assert_eq!(expected, a * b);
}