opensrdk_symbolic_computation/expression/tensor_expression/
differential.rs

1use crate::{Expression, TensorExpression};
2
3impl TensorExpression {
4    pub fn differential(&self, variable_ids: &[&str]) -> Vec<Expression> {
5        match self {
6            TensorExpression::KroneckerDeltas(_) => {
7                vec![0.0.into(); variable_ids.len()]
8            }
9            TensorExpression::DotProduct {
10                terms,
11                rank_combinations,
12            } => TensorExpression::diff_dot_product(terms, rank_combinations, variable_ids),
13            TensorExpression::DirectProduct(terms) => {
14                TensorExpression::diff_direct_product(terms, variable_ids)
15            }
16        }
17    }
18}