1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
pub mod assign;
pub mod differential;
pub mod operators;
pub mod rust_code;
pub mod symbol;
pub mod tensor_expression;
pub mod tex_code;
pub mod transcendental_expression;
pub use assign::*;
pub use differential::*;
pub use rust_code::*;
pub use symbol::*;
pub use tensor_expression::*;
pub use tex_code::*;
pub use transcendental_expression::*;
use num_rational::*;
#[derive(Clone, Debug, PartialEq)]
pub enum Expression {
Symbol(String),
Constant(f64),
Add(Box<Expression>, Box<Expression>),
Sub(Box<Expression>, Box<Expression>),
Mul(Box<Expression>, Box<Expression>),
Div(Box<Expression>, Box<Expression>),
Neg(Box<Expression>),
Pow(Box<Expression>, Ratio<u32>),
Transcendental(Box<TranscendentalExpression>),
DegeneratedTensor(Box<TensorExpression>),
DiffResultTensor(Box<TensorExpression>),
}
impl From<f64> for Expression {
fn from(v: f64) -> Self {
Expression::Constant(v)
}
}