imate
C++/CUDA Reference
Loading...
Searching...
No Matches
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, M_SQRT1_2, M_2_SQRTPI
24#include "./gaussian.h"
25
26
27// ========
28// Gaussian
29// ========
30
33
34Gaussian::Gaussian(double mu_, double sigma_)
35{
36 this->mu = mu_;
37 this->sigma = sigma_;
38}
39
40// =================
41// Gaussian function (float)
42// =================
43
47
48float Gaussian::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 = (lambda_ - mu_) / sigma_;
53 return (0.5f * M_SQRT1_2 * M_2_SQRTPI / sigma_) * \
54 std::exp(-0.5 * x * x);
55}
56
57
58// =================
59// Gaussian function (double)
60// =================
61
65
66double Gaussian::function(const double lambda_) const
67{
68 double x = (lambda_ - this->mu) / this->sigma;
69 return (0.5 * M_SQRT1_2 * M_2_SQRTPI / this->sigma) * \
70 std::exp(-0.5 * x * x);
71}
72
73
74// =================
75// Gaussian function (long double)
76// =================
77
81
82long double Gaussian::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 = (lambda_ - mu_) / sigma_;
87 return (0.5l * M_SQRT1_2 * M_2_SQRTPI / sigma_) * \
88 std::exp(-0.5 * x * x);
89}
virtual float function(const float lambda_) const
Definition gaussian.cpp:48
double mu
Definition gaussian.h:58
double sigma
Definition gaussian.h:59
Gaussian(double mu_, double sigma_)
Sets the default for the parameter mu to 0.0 and for the parameter sigma to 1.0.
Definition gaussian.cpp:34