Skip to content

Commit 6fe31d6

Browse files
committed
Added log-functions for vectors
1 parent ca9a2e0 commit 6fe31d6

File tree

4 files changed

+34
-0
lines changed

4 files changed

+34
-0
lines changed

distributions/univariate/continuous/ContinuousDistribution.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ void ContinuousDistribution::ProbabilityDensityFunction(const std::vector<double
1010
y[i] = f(x[i]);
1111
}
1212

13+
void ContinuousDistribution::LogProbabilityDensityFunction(const std::vector<double> &x, std::vector<double> &y) const
14+
{
15+
size_t size = x.size();
16+
if (size > y.size())
17+
return;
18+
for (size_t i = 0; i != size; ++i)
19+
y[i] = logf(x[i]);
20+
}
21+
1322
double ContinuousDistribution::quantileImpl(double p) const
1423
{
1524
double guess = 0.0;

distributions/univariate/continuous/ContinuousDistribution.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ class RANDLIBSHARED_EXPORT ContinuousDistribution : public virtual UnivariateDis
3636
*/
3737
void ProbabilityDensityFunction(const std::vector<double> &x, std::vector<double> &y) const;
3838

39+
/**
40+
* @brief LogProbabilityDensityFunction
41+
* fill vector y by logf(x)
42+
* @param x
43+
* @param y
44+
*/
45+
void LogProbabilityDensityFunction(const std::vector<double> &x, std::vector<double> &y) const;
46+
3947
double Mode() const override;
4048

4149
protected:

distributions/univariate/discrete/DiscreteDistribution.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ void DiscreteDistribution::ProbabilityMassFunction(const std::vector<int> &x, st
1010
y[i] = P(x[i]);
1111
}
1212

13+
void DiscreteDistribution::LogProbabilityMassFunction(const std::vector<int> &x, std::vector<double> &y) const
14+
{
15+
size_t size = x.size();
16+
if (size > y.size())
17+
return;
18+
for (size_t i = 0; i != size; ++i)
19+
y[i] = logP(x[i]);
20+
}
21+
1322
int DiscreteDistribution::Mode() const
1423
{
1524
/// Works only for unimodal and monotone from starting point to the mode distributions

distributions/univariate/discrete/DiscreteDistribution.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ class RANDLIBSHARED_EXPORT DiscreteDistribution : public virtual UnivariateDistr
3636
*/
3737
void ProbabilityMassFunction(const std::vector<int> &x, std::vector<double> &y) const;
3838

39+
/**
40+
* @brief LogProbabilityMassFunction
41+
* fill vector y with logP(x)
42+
* @param x
43+
* @param y
44+
*/
45+
void LogProbabilityMassFunction(const std::vector<int> &x, std::vector<double> &y) const;
46+
3947
int Mode() const override;
4048

4149
private:

0 commit comments

Comments
 (0)