imate
C++/CUDA Reference
Loading...
Searching...
No Matches
log_gaussian.cpp
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: Copyright 2021, Siavash Ameli <sameli@berkeley.edu>
3
* SPDX-License-Identifier: BSD-3-Clause
4
* SPDX-FileType: SOURCE
5
*
6
* This program is free software: you can redistribute it and/or modify it
7
* under the terms of the license found in the LICENSE.txt file in the root
8
* directory of this source tree.
9
*/
10
11
12
// =======
13
// Headers
14
// =======
15
16
// Before including cmath, define _USE_MATH_DEFINES. This is only required to
17
// define the math constants like M_PI, etc, in win32 operating system.
18
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && \
19
!defined(__CYGWIN__)
20
#define _USE_MATH_DEFINES
21
#endif
22
23
#include <cmath>
// exp, log, M_SQRT1_2, M_2_SQRTPI
24
#include "
./log_gaussian.h
"
25
26
27
// ============
28
// Log Gaussian
29
// ============
30
33
34
LogGaussian::LogGaussian
(
double
mu_,
double
sigma_)
35
{
36
this->
mu
= mu_;
37
this->
sigma
= sigma_;
38
}
39
40
// =====================
41
// Log Gaussian function (float)
42
// =====================
43
47
48
float
LogGaussian::function
(
const
float
lambda_)
const
49
{
50
float
mu_ =
static_cast<
float
>
(this->
mu
);
51
float
sigma_ =
static_cast<
float
>
(this->
sigma
);
52
float
x = (std::log(lambda_) - std::log(mu_)) / sigma_;
53
return
(0.5f * M_SQRT1_2 * M_2_SQRTPI / sigma_) * \
54
std::exp(-0.5f * x * x) / lambda_;
55
}
56
57
58
// =====================
59
// Log Gaussian function (double)
60
// =====================
61
65
66
double
LogGaussian::function
(
const
double
lambda_)
const
67
{
68
double
x = (std::log(lambda_) - std::log(this->
mu
)) / this->
sigma
;
69
return
(0.5 * M_SQRT1_2 * M_2_SQRTPI / this->
sigma
) * \
70
std::exp(-0.5 * x * x) / lambda_;
71
}
72
73
74
// =====================
75
// Log Gaussian function (long double)
76
// =====================
77
81
82
long
double
LogGaussian::function
(
const
long
double
lambda_)
const
83
{
84
long
double
mu_ =
static_cast<
long
double
>
(this->
mu
);
85
long
double
sigma_ =
static_cast<
long
double
>
(this->
sigma
);
86
long
double
x = (std::log(lambda_) - std::log(mu_)) / sigma_;
87
return
(0.5l * M_SQRT1_2 * M_2_SQRTPI / sigma_) * \
88
std::exp(-0.5l * x * x) / lambda_;
89
}
LogGaussian::sigma
double sigma
Definition
log_gaussian.h:59
LogGaussian::mu
double mu
Definition
log_gaussian.h:58
LogGaussian::function
virtual float function(const float lambda_) const
Definition
log_gaussian.cpp:48
LogGaussian::LogGaussian
LogGaussian(double mu_, double sigma_)
Sets the default for the parameter mu to 0.0 and for the parameter sigma to 1.0.
Definition
log_gaussian.cpp:34
log_gaussian.h
imate
functions
log_gaussian.cpp
Generated on Tue May 12 2026 22:54:38 for imate by
1.9.8