weresocool_parser 1.0.47

Parser for WereSoCool
Documentation
use crate::float_to_rational::helpers::f32_to_rational;
use num_rational::Rational64;
use rand::{thread_rng, Rng};
use weresocool_ast::{Op, Term};

pub fn et(d: i64) -> Vec<Term> {
    let mut ops = vec![Term::Op(Op::TransposeM {
        m: Rational64::from_integer(1),
    })];
    for i in 1..d as usize {
        let m = 2.0_f32.powf(i as f32 / d as f32);
        ops.push(Term::Op(Op::TransposeM {
            m: f32_to_rational(format!("{:.8}", m)),
        }))
    }

    ops
}

pub fn random_seed() -> i64 {
    thread_rng().gen::<i64>()
}