compile fixes + unit tests

This commit is contained in:
Roland Conybeare 2023-10-23 15:54:57 -04:00
commit 797db3e021
10 changed files with 114 additions and 9 deletions

View file

@ -2,7 +2,7 @@
#pragma once
#include "distribution/Distribution.hpp"
#include "Distribution.hpp"
#include <cmath>
namespace xo {
@ -13,6 +13,9 @@ namespace xo {
public:
Normal() = default;
/* N(0,1): mean 0, sdev 1 */
static ref::rp<Normal> unit() { return new Normal(); }
/* normal probability density:
*
* x^2

View file

@ -11,21 +11,31 @@ namespace xo {
public:
Uniform(double lo, double hi) : lo_(lo), hi_(hi) {}
static Uniform unit() { return Uniform(0.0, 1.0); }
static ref::rp<Uniform> unit() { return new Uniform(0.0, 1.0); }
static double density_impl(double lo, double hi, double x) {
if (x <= lo)
return 0.0;
if (x >= hi)
return 0.0;
static double density_impl(double lo, double hi) {
return 1.0 / (hi - lo);
} /*density_impl*/
static double distr_impl(double lo, double hi, double x) {
if (x <= lo)
return 0.0;
if (x >= hi)
return 1.0;
return (x - lo) / (hi - lo);
} /*distr_impl*/
double lo() const { return lo_; }
double hi() const { return hi_; }
double density(double /*x*/) const {
return density_impl(this->lo_, this->hi_);
double density(double x) const {
return density_impl(this->lo_, this->hi_, x);
} /*density*/
double distribution(double x) const {
@ -40,8 +50,8 @@ namespace xo {
private:
/* Invariant: .lo < .hi */
double lo_;
double hi_;
double lo_ = 0.0;
double hi_ = 1.0;
}; /*Uniform*/
} /*namespace distribution*/
} /*namespace xo*/