in gad/src/core.rs [17:37]
fn variable(&mut self, data: Data) -> Self::Value;
/// A non-differential input to the computation.
fn constant(&mut self, data: Data) -> Self::Value;
/// Compute the sum of two values `v1 + v2`.
fn add(&mut self, v1: &Self::Value, v2: &Self::Value) -> Result<Self::Value>;
/// Compute the sum of several values.
fn add_all(&mut self, values: &[&Self::Value]) -> Result<Self::Value>
where
Self::Value: Clone,
{
let mut values = values.iter();
let mut result: Self::Value =
(*values.next().ok_or_else(|| Error::empty(func_name!()))?).clone();
for value in values {
result = self.add(&result, *value)?;
}
Ok(result)
}