polycore 0.1.4

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 num_traits::{One, Zero};
use polycore::{Order, RatFunc, Ring, Uni};

fn main() {
    let x = RatFunc::var();
    let k = |n: i64| RatFunc::from(Uni::constant(BigRational::from_integer(n.into())));
    let sum = (0..5).fold(RatFunc::zero(), |acc, n| {
        acc + RatFunc::one() / ((x.clone() + k(n)) * (x.clone() + k(n + 1)))
    });
    let ring = Ring::new(["x"], Order::Lex);
    let show = |u: &Uni<BigRational>| ring.show(&u.to_poly(0, 1, Order::Lex));
    println!(
        "sum 1/((x+k)(x+k+1)), k = 0..4 = ({}) / ({})",
        show(sum.num()),
        show(sum.den())
    );
}