opensrdk_symbolic_computation/expression/tensor_expression/operations/
kronecker_delta.rs

1use crate::{BracketsLevel, TensorExpression};
2use opensrdk_linear_algebra::RankIndex;
3
4impl TensorExpression {
5    pub(crate) fn tex_code_kronecker_deltas(
6        rank_pairs: &[[RankIndex; 2]],
7        brackets_level: BracketsLevel,
8    ) -> String {
9        let inner = rank_pairs
10            .iter()
11            .map(|rank_pair| format!(r"{{\delta_{{[{}], [{}]}}}}", rank_pair[0], rank_pair[1]))
12            .collect::<Vec<_>>()
13            .join(" ");
14
15        match brackets_level {
16            BracketsLevel::None | BracketsLevel::ForMul => inner,
17            BracketsLevel::ForDiv | BracketsLevel::ForOperation => {
18                format!(r"\left({}\right)", inner)
19            }
20        }
21    }
22}