Skip to content

yizhang-yiz/dorset

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

doc

Table of Contents

  1. dorset, a rust implementation of Stan Math library.
    1. Example
  2. Lisense

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, 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

About

a rust implementation of Stan Math library.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages