use crate::primitive::int;
use crate::symbolic::{
expr::{SymExpr, Primary},
simplify::fraction::make_fraction,
};
use once_cell::sync::Lazy;
pub static ONE: Lazy<SymExpr> = Lazy::new(|| SymExpr::Primary(Primary::Integer(int(1))));
pub static ONE_HALF: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(1))),
SymExpr::Primary(Primary::Integer(int(2))),
));
pub static ZERO: Lazy<SymExpr> = Lazy::new(|| SymExpr::Primary(Primary::Integer(int(0))));
pub mod input {
use super::*;
pub static ONE_TWELFTH: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(1))),
SymExpr::Primary(Primary::Integer(int(12))),
));
pub static ONE_EIGHTH: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(1))),
SymExpr::Primary(Primary::Integer(int(8))),
));
pub static ONE_SIXTH: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(1))),
SymExpr::Primary(Primary::Integer(int(6))),
));
pub static ONE_FOURTH: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(1))),
SymExpr::Primary(Primary::Integer(int(4))),
));
pub static ONE_THIRD: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(1))),
SymExpr::Primary(Primary::Integer(int(3))),
));
pub static THREE_EIGHTS: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(3))),
SymExpr::Primary(Primary::Integer(int(8))),
));
pub static FIVE_TWELFTHS: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(5))),
SymExpr::Primary(Primary::Integer(int(12))),
));
pub static SEVEN_TWELFTHS: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(7))),
SymExpr::Primary(Primary::Integer(int(12))),
));
pub static FIVE_EIGHTHS: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(5))),
SymExpr::Primary(Primary::Integer(int(8))),
));
pub static TWO_THIRDS: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(2))),
SymExpr::Primary(Primary::Integer(int(3))),
));
pub static THREE_FOURTHS: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(3))),
SymExpr::Primary(Primary::Integer(int(4))),
));
pub static FIVE_SIXTHS: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(5))),
SymExpr::Primary(Primary::Integer(int(6))),
));
pub static SEVEN_EIGHTHS: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(7))),
SymExpr::Primary(Primary::Integer(int(8))),
));
pub static ELEVEN_TWELFTHS: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(11))),
SymExpr::Primary(Primary::Integer(int(12))),
));
}
pub mod output {
use super::*;
pub static SQRT_TWO_HALF: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(2))).sqrt(),
SymExpr::Primary(Primary::Integer(int(2))),
));
pub static SQRT_THREE_HALF: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(3))).sqrt(),
SymExpr::Primary(Primary::Integer(int(2))),
));
pub static SQRT_THREE_THIRD: Lazy<SymExpr> = Lazy::new(|| make_fraction(
SymExpr::Primary(Primary::Integer(int(3))).sqrt(),
SymExpr::Primary(Primary::Integer(int(3))),
));
pub static SQRT_THREE: Lazy<SymExpr> = Lazy::new(|| SymExpr::Primary(Primary::Integer(int(3))).sqrt());
}