polycore 0.1.6

Fields, prime fields, sparse and dense polynomials, and sparse echelon forms.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use num_rational::BigRational;
use polycore::{Order, Ring, Uni};

fn main() -> Result<(), polycore::ParseError> {
    let ring = Ring::new(["x"], Order::Lex);
    let uni = |src| Ok::<_, polycore::ParseError>(Uni::from_poly(&ring.parse(src)?, 0).unwrap());
    let show = |u: &Uni<BigRational>| ring.show(&u.to_poly(0, 1, Order::Lex));
    let (f, g) = (uni("x^4 - 1")?, uni("x^6 - 1")?);
    let (s, t, gcd) = f.bezout(&g);
    println!("gcd(x^4 - 1, x^6 - 1) = {}", show(&gcd));
    println!(
        "({}) * (x^4 - 1) + ({}) * (x^6 - 1) = {}",
        show(&s),
        show(&t),
        show(&gcd)
    );
    Ok(())
}