# bdm::mprod Class Reference

Chain rule decomposition of epdf. More...

`#include <emix.h>`

List of all members.

## Public Member Functions
| mprod ()
| Constructor from list of mFacs,.
| mprod (Array< mpdf * > mFacs)
void | set_elements (Array< mpdf * > mFacs, bool own=false)
double | evallogcond (const vec &val, const vec &cond)
| Shortcut for conditioning and evaluation of the internal epdf. In some cases, this operation can be implemented efficiently.
vec | evallogcond_m (const mat &Dt, const vec &cond)
| Matrix version of evallogcond.
vec | evallogcond_m (const Array< vec > &Dt, const vec &cond)
| Array<vec> version of evallogcond.
vec | samplecond (const vec &cond)
| Returns a sample from the density conditioned on `cond`, .
mat | samplecond (const vec &cond, int N)
void | from_setting (const Setting &set)
RV | getrv (bool checkoverlap=false)
| find common rv, flag
void | setrvc (const RV &rv, RV &rvc)
| common rvc of all mpdfs is written to rvc
virtual string | to_string ()
| This method returns a basic info about the current instance.
virtual void | to_setting (Setting &set) const
| This method save all the instance properties into the Setting structure.
virtual void | validate ()
| This method TODO.
Matematical operations
virtual mat | samplecond_m (const vec &cond, int N)
| Returns.
virtual void | condition (const vec &cond)
| Update `ep` so that it represents this mpdf conditioned on `rvc` = cond.
Access to attributes
RV | _rv ()
RV | _rvc ()
int | dimension ()
int | dimensionc ()
epdf & | _epdf ()
epdf * | _e ()
Connection to other objects
void | set_rvc (const RV &rvc0)
void | set_rv (const RV &rv0)
bool | isnamed ()
## Protected Attributes
Array< epdf * > | epdfs
| pointers to epdfs - shortcut to mpdfs().posterior()
Array< datalink_m2m * > | dls
| Data link for each mpdfs.
epdf | dummy
| dummy ep
Array< mpdf * > | mpdfs
| Elements of composition.
bool | owning_mpdfs
int | dimc
| dimension of the condition
RV | rvc
| random variable in condition
epdf * | ep
| pointer to internal epdf

## Detailed Description

Chain rule decomposition of epdf.

Probability density in the form of Chain-rule decomposition: \[ f(x_1,x_2,x_3) = f(x_1|x_2,x_3)f(x_2,x_3)f(x_3) \] Note that

## Member Function Documentation

void bdm::mprod::from_setting | ( | const Setting & | set | ) | `[inline, virtual]`

Load from structure with elements:

     { class='mprod';
       mpdfs = (..., ...);     // list of mpdfs in the order of chain rule
     }

Reimplemented from bdm::mpdf.

References bdm::UI::get().

RV bdm::compositepdf::getrv | ( | bool | checkoverlap = `false` | ) | `[inherited]`

find common rv, flag

Parameters:

  | checkoverlap | modifies whether overlaps are acceptable

References bdm::RV::add(), and bdm::compositepdf::mpdfs.

Referenced by bdm::merger_base::set_sources().

vec bdm::mprod::samplecond | ( | const vec & | cond | ) | `[inline, virtual]`

Returns a sample from the density conditioned on `cond`, .

Parameters:

  | cond | is numeric value of `rv`

Ugly hack to help to discover if mpfs are not in proper order. Correct solution = check that explicitely.

Reimplemented from bdm::mpdf.

References bdm::epdf::dimension(), dls, bdm::mpdf::ep, epdfs, and bdm::compositepdf::mpdfs.

virtual mat bdm::mpdf::samplecond_m | ( | const vec & | cond,
|  | int | N |
| ) |  |  | `[inline, virtual, inherited]`

Returns.

Parameters:

  | N | samples from the density conditioned on `cond`, .
  | cond | is numeric value of `rv`

References bdm::mpdf::condition(), bdm::epdf::dimension(), bdm::mpdf::ep, and bdm::epdf::sample().

The documentation for this class was generated from the following file:

- emix.h