use crate::ValueExpr;
use super::function;
pub fn abs(expr: impl Into<ValueExpr>) -> ValueExpr {
function("abs", [expr])
}
pub fn ceil(expr: impl Into<ValueExpr>) -> ValueExpr {
function("ceil", [expr])
}
pub fn floor(expr: impl Into<ValueExpr>) -> ValueExpr {
function("floor", [expr])
}
pub fn round(args: impl IntoIterator<Item = impl Into<ValueExpr>>) -> ValueExpr {
function("round", args)
}
pub fn trunc(args: impl IntoIterator<Item = impl Into<ValueExpr>>) -> ValueExpr {
function("trunc", args)
}
pub fn power(left: impl Into<ValueExpr>, right: impl Into<ValueExpr>) -> ValueExpr {
function("power", [left.into(), right.into()])
}
pub fn pow(left: impl Into<ValueExpr>, right: impl Into<ValueExpr>) -> ValueExpr {
power(left, right)
}
pub fn sqrt(expr: impl Into<ValueExpr>) -> ValueExpr {
function("sqrt", [expr])
}
pub fn cbrt(expr: impl Into<ValueExpr>) -> ValueExpr {
function("cbrt", [expr])
}
pub fn exp(expr: impl Into<ValueExpr>) -> ValueExpr {
function("exp", [expr])
}
pub fn ln(expr: impl Into<ValueExpr>) -> ValueExpr {
function("ln", [expr])
}
pub fn log(args: impl IntoIterator<Item = impl Into<ValueExpr>>) -> ValueExpr {
function("log", args)
}
pub fn mod_(left: impl Into<ValueExpr>, right: impl Into<ValueExpr>) -> ValueExpr {
function("mod", [left.into(), right.into()])
}
pub fn div(left: impl Into<ValueExpr>, right: impl Into<ValueExpr>) -> ValueExpr {
function("div", [left.into(), right.into()])
}
pub fn gcd(left: impl Into<ValueExpr>, right: impl Into<ValueExpr>) -> ValueExpr {
function("gcd", [left.into(), right.into()])
}
pub fn lcm(left: impl Into<ValueExpr>, right: impl Into<ValueExpr>) -> ValueExpr {
function("lcm", [left.into(), right.into()])
}
pub fn degrees(expr: impl Into<ValueExpr>) -> ValueExpr {
function("degrees", [expr])
}
pub fn radians(expr: impl Into<ValueExpr>) -> ValueExpr {
function("radians", [expr])
}
pub fn sign(expr: impl Into<ValueExpr>) -> ValueExpr {
function("sign", [expr])
}
pub fn factorial(expr: impl Into<ValueExpr>) -> ValueExpr {
function("factorial", [expr])
}
pub fn gamma(expr: impl Into<ValueExpr>) -> ValueExpr {
function("gamma", [expr])
}
pub fn lgamma(expr: impl Into<ValueExpr>) -> ValueExpr {
function("lgamma", [expr])
}
pub fn pi() -> ValueExpr {
function("pi", Vec::<ValueExpr>::new())
}
pub fn random() -> ValueExpr {
function("random", Vec::<ValueExpr>::new())
}
pub fn random_between(min: impl Into<ValueExpr>, max: impl Into<ValueExpr>) -> ValueExpr {
function("random", [min.into(), max.into()])
}
pub fn width_bucket(
operand: impl Into<ValueExpr>,
low: impl Into<ValueExpr>,
high: impl Into<ValueExpr>,
count: impl Into<ValueExpr>,
) -> ValueExpr {
function(
"width_bucket",
[operand.into(), low.into(), high.into(), count.into()],
)
}