# Table of Contents
1. [`dorset`, a rust implementation of `Stan Math` library.](#org8042ff3)
1. [Example](#org1523006)
2. [Lisense](#orgcf15d93)
# `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 meant to be experimental.
## Example
Below is how to do the problem example in section 2.1 of
[the Stan Math paper](https://arxiv.org/abs/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
}
# Lisense
BSD-3-Clause