imate
C++/CUDA Reference
Loading...
Searching...
No Matches
gaussian_der.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, M_SQRT1_2, M_2_SQRTPI
24
#include "
./gaussian_der.h
"
25
26
27
// ============
28
// Gaussian Der
29
// ============
30
33
34
GaussianDer::GaussianDer
(
double
mu_,
double
sigma_)
35
{
36
this->
mu
= mu_;
37
this->
sigma
= sigma_;
38
}
39
40
// =====================
41
// Gaussian Der function (float)
42
// =====================
43
47
48
float
GaussianDer::function
(
const
float
lambda_)
const
49
{
50
float
mu_ =
static_cast<
float
>
(this->
mu
);
51
float
sigma_ =
static_cast<
float
>
(this->
sigma
);
52
float
sigma2 = sigma_ * sigma_;
53
float
x = (lambda_ - mu_) / sigma_;
54
return
-(x * 0.5f * M_SQRT1_2 * M_2_SQRTPI / sigma2) * \
55
std::exp(-0.5 * x * x);
56
}
57
58
59
// =====================
60
// Gaussian Der function (double)
61
// =====================
62
66
67
double
GaussianDer::function
(
const
double
lambda_)
const
68
{
69
double
x = (lambda_ - this->
mu
) / this->
sigma
;
70
double
sigma2 = this->
sigma
* this->
sigma
;
71
return
-(x * 0.5 * M_SQRT1_2 * M_2_SQRTPI / sigma2) * \
72
std::exp(-0.5 * x * x);
73
}
74
75
76
// =====================
77
// Gaussian Der function (long double)
78
// =====================
79
83
84
long
double
GaussianDer::function
(
const
long
double
lambda_)
const
85
{
86
long
double
mu_ =
static_cast<
long
double
>
(this->
mu
);
87
long
double
sigma_ =
static_cast<
long
double
>
(this->
sigma
);
88
long
double
sigma2 = sigma_ * sigma_;
89
long
double
x = (lambda_ - mu_) / sigma_;
90
return
-(x * 0.5l * M_SQRT1_2 * M_2_SQRTPI / sigma2) * \
91
std::exp(-0.5 * x * x);
92
}
GaussianDer::mu
double mu
Definition
gaussian_der.h:58
GaussianDer::GaussianDer
GaussianDer(double mu_, double sigma_)
Sets the default for the parameter mu to 0.0 and for the parameter sigma to 1.0.
Definition
gaussian_der.cpp:34
GaussianDer::function
virtual float function(const float lambda_) const
Definition
gaussian_der.cpp:48
GaussianDer::sigma
double sigma
Definition
gaussian_der.h:59
gaussian_der.h
imate
functions
gaussian_der.cpp
Generated on Tue May 12 2026 22:54:38 for imate by
1.9.8