fn cube_mul()

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);
}