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
40
41
//! # Examples
//!
//! Create a graph for `(x + y) - z`
//!
//! ```
//! use cagra::graph::*;
//!
//! let mut g: Graph<f64> = Graph::new();
//! // x = 1.0
//! let x = g.scalar_variable("x", 1.0);
//! // y = 2.0
//! let y = g.scalar_variable("y", 2.0);
//! // tmp = x + y
//! let tmp = g.add(x, y);
//! // z = -3.0
//! let z = g.scalar_variable("z", -3.0);
//! // sum = tmp - z
//! let sum = g.sub(tmp, z);
//!
//! g.eval_value(sum, false).unwrap();
//! let result = g.get_value(sum).unwrap().as_scalar().unwrap();
//! assert!((result - 6.0).abs() < 1e-7);
//!
//! g.eval_deriv(sum).unwrap();
//! let dx = g.get_deriv(x).unwrap().as_scalar().unwrap();
//! let dy = g.get_deriv(y).unwrap().as_scalar().unwrap();
//! let dz = g.get_deriv(z).unwrap().as_scalar().unwrap();
//! assert!((dx - 1.0).abs() < 1e-7);
//! assert!((dy - 1.0).abs() < 1e-7);
//! assert!((dz + 1.0).abs() < 1e-7);
//! ```

#[macro_use]
extern crate procedurals;
extern crate petgraph;
extern crate ndarray;
extern crate ndarray_linalg;

pub mod graph;
pub mod operators;
pub mod error;