use super::math_node::NodeIndex;
use std::fmt;
#[derive(Default, Debug, Clone, Eq, PartialEq)]
pub struct OpNode {
pub op: Option<Op>,
pub parent: Option<NodeIndex>,
}
impl fmt::Display for OpNode {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "op: {:?}, parent: {:?}", self.op, self.parent)
}
}
#[derive(Debug, Eq, PartialEq, Clone)]
pub enum Op {
Factorial,
Minus,
Abs,
Conjugate,
Arg,
Real,
Imaginary,
Floor,
Ceiling,
Not,
Inverse,
Ident,
Domain,
Codomain,
Image,
Sin,
Cos,
Tan,
Sec,
Csc,
Cot,
Sinh,
Cosh,
Tanh,
Sech,
Csch,
Coth,
Arcsin,
Arccos,
Arctan,
Arccosh,
Arccot,
Arccoth,
Arccsc,
Arccsch,
Arcsec,
Arcsech,
Arcsinh,
Arctanh,
Exp,
Ln,
Log,
Determinant,
Transpose,
Divergence,
Grad,
Curl,
Laplacian,
Card,
Quotient,
Divide,
Power,
Rem,
Implies,
Equivalent,
Approx,
Setdiff,
Vectorproduct,
Scalarproduct,
Outerproduct,
Plus,
Times,
Max,
Min,
Gcd,
Lcm,
Mean,
Sdev,
Variance,
Median,
Mode,
And,
Or,
Xor,
Selector,
Union,
Intersect,
Cartesianproduct,
Compose,
r#Fn,
Int,
Sum,
Product,
Diff,
Partialdiff,
Forall,
Exists,
Eq,
Neq,
Gt,
Lt,
Geq,
Leq,
Root,
}