modular_equations 1.0.5

Program to solve quadratic and linear modular equations.
Documentation
use crate::elliptic::EllipticCurve;

#[test]
fn elliptic_add_small_type() {
    let modu = 29u8;

    let p0 = EllipticCurve::<u8> { x: 11, z: 16 };
    let mut p = EllipticCurve { x: p0.x, z: p0.z };
    let q = EllipticCurve::<u8> { x: 13, z: 10 };

    p.elliptic_add(&q, &p0, modu);

    assert_eq!(p.x, 23);
    assert_eq!(p.z, 17);
}

#[test]
fn elliptic_add_mid_type() {
    let modu = 29u32;

    let p0 = EllipticCurve::<u32> { x: 11, z: 16 };
    let mut p = EllipticCurve { x: p0.x, z: p0.z };
    let q = EllipticCurve::<u32> { x: 13, z: 10 };

    p.elliptic_add(&q, &p0, modu);

    assert_eq!(p.x, 23);
    assert_eq!(p.z, 17);
}

#[test]
fn elliptic_double_small_type() {
    let modu = 29u8;

    let mut p = EllipticCurve::<u8> { x: 11, z: 16 };

    p.elliptic_double(7, modu);

    assert_eq!(p.x, 13);
    assert_eq!(p.z, 10);
}

#[test]
fn elliptic_double_mid_type() {
    let modu = 29u32;

    let mut p = EllipticCurve::<u32> { x: 11, z: 16 };

    p.elliptic_double(7, modu);

    assert_eq!(p.x, 13);
    assert_eq!(p.z, 10);
}