# Crate dorset [−] [src]

`dorset`

, a rust implementation of `Stan Math`

library.
The project is not intended to be an exact port of `Math`

,
but as a proof of concept to take advantage of some
Rust features in automatic differentiation.
Hence the crate is meant to be experimental.

Below is how to do the problem example in section 2.1 of
the Stan Math paper(Bob Carpenter, Matthew D. Hoffman, Marcus Brubaker, Daniel Lee, Peter Li, and Michael J. Betancourt. 2015. The Stan Math Library: Reverse-Mode Automatic Differentiation in C++. arXiv 1509.07164),
using `dorset`

.

#[macro_use] extern crate dorset; use dorset::*; fn main() { let y: Real = 1.3; let s = cstack!(); let (mu, sigma) = (var!(s, 0.5), var!(s, 1.2)); let mut lp = var!(s); lp = &lp - 0.5 * (2.0 * PI).ln(); lp = &lp - ln(&sigma); lp = &lp - 0.5 * pow((y - &mu) / &sigma, 2.0); lp.grad(); println!("f(mu, sigma) = {0:.6}", lp.val()); // f(mu, sigma) = -1.323482 println!("d.f/d.mu = {0:.6}", mu.adj()); // d.f/d.mu = 0.555556 println!("d.f/d.sigma = {0:.6}", sigma.adj()); // d.f/d.sigma = -0.462963 }

## Re-exports

`pub use core::*;` |

`pub use operations::*;` |

## Modules

core |
The core data structures for the autodiff expression graph and memory management. |

macros | |

operations |

## Macros

cstack |
Initialize a new memory arena; |

var |
Constructs a new |

## Structs

Rc |
A single-threaded reference-counting pointer. 'Rc' stands for 'Reference Counted'. |

RefCell |
A mutable memory location with dynamically checked borrow rules |