ProvSQL C/C++ API
Adding support for provenance and uncertainty management to PostgreSQL databases
Loading...
Searching...
No Matches
RandomVariable.h File Reference

Continuous random-variable helpers (distribution parsing, moments). More...

#include <optional>
#include <string>
Include dependency graph for RandomVariable.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  provsql::DistributionSpec
 Parsed distribution spec (kind + up to two parameters). More...

Namespaces

namespace  provsql

Enumerations

enum class  provsql::DistKind { provsql::Normal , provsql::Uniform , provsql::Exponential , provsql::Erlang }
 Continuous distribution kinds supported by gate_rv. More...

Functions

std::optional< DistributionSpecprovsql::parse_distribution_spec (const std::string &s)
 Parse the on-disk text encoding of a gate_rv distribution.
std::string provsql::format_distribution_spec (const DistributionSpec &d)
 Format a spec back into its on-disk text encoding.
double provsql::parseDoubleStrict (const std::string &s)
 Strictly parse s as a double.
double provsql::analytical_mean (const DistributionSpec &d)
 Closed-form expectation E[X] for a basic distribution.
double provsql::analytical_variance (const DistributionSpec &d)
 Closed-form variance Var(X) for a basic distribution.
double provsql::analytical_raw_moment (const DistributionSpec &d, unsigned k)
 Closed-form raw moment \(E[X^k]\) for a basic distribution.

Detailed Description

Continuous random-variable helpers (distribution parsing, moments).

Helpers for the gate_rv leaf introduced for continuous probabilistic c-tables. A gate_rv stores its distribution name and parameters in the gate's extra byte string using a small text encoding (e.g. "normal:2.5,0.5"); these helpers parse and format that encoding, and provide closed-form moments where they exist. Arithmetic over RV expressions is built on the generic gate_arith gate (see provsql_utils.h), which is shared with non-RV scalar arithmetic.

Sampling itself lives in BooleanCircuit::monteCarlo and MonteCarloSampler; this header only exposes what is needed for parsing and analytical moment computation.

Definition in file RandomVariable.h.