1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use crate::{Expression, ExpressionArray};
use std::collections::HashMap;
pub fn new_partial_variable(v: ExpressionArray) -> Expression {
Expression::PartialVariable(v)
}
impl Expression {
pub(crate) fn diff_partial_variable(
v: &ExpressionArray,
variable_ids: &[&str],
) -> Vec<Expression> {
variable_ids
.iter()
.map(|&variable_id| {
new_partial_variable(ExpressionArray::from_factory(
v.sizes().to_vec(),
|indices| v[indices].differential(&[variable_id])[0].clone(),
))
})
.collect()
}
}