Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 4b08eff

Browse files
committedDec 15, 2024··
enable clang-format for gaussian_proces source files
1 parent b986b26 commit 4b08eff

14 files changed

+817
-937
lines changed
 

‎.github/workflows/clang-format-check.yml

+6-1
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,15 @@ jobs:
44
formatting-check:
55
name: Formatting Check
66
runs-on: ubuntu-latest
7+
strategy:
8+
matrix:
9+
path:
10+
- 'src'
11+
- 'contributions/MPI_IS_gaussian_process'
712
steps:
813
- uses: actions/checkout@v4
914
- name: Run clang-format style check for C/C++ source files
1015
uses: jidicula/clang-format-action@v4.13.0
1116
with:
1217
clang-format-version: '18'
13-
check-path: 'src'
18+
check-path: ${{ matrix.path }}

‎contributions/MPI_IS_gaussian_process/src/covariance_functions.cpp

+163-156
Original file line numberDiff line numberDiff line change
@@ -47,160 +47,167 @@
4747
namespace covariance_functions
4848
{
4949

50-
/* PeriodicSquareExponential */
51-
PeriodicSquareExponential::PeriodicSquareExponential() :
52-
hyperParameters(Eigen::VectorXd::Zero(4)), extraParameters(Eigen::VectorXd::Ones(1)*std::numeric_limits<double>::max()) { }
53-
54-
PeriodicSquareExponential::PeriodicSquareExponential(const Eigen::VectorXd& hyperParameters_) :
55-
hyperParameters(hyperParameters_), extraParameters(Eigen::VectorXd::Ones(1)*std::numeric_limits<double>::max()) { }
50+
/* PeriodicSquareExponential */
51+
PeriodicSquareExponential::PeriodicSquareExponential()
52+
: hyperParameters(Eigen::VectorXd::Zero(4)), extraParameters(Eigen::VectorXd::Ones(1) * std::numeric_limits<double>::max())
53+
{
54+
}
55+
56+
PeriodicSquareExponential::PeriodicSquareExponential(const Eigen::VectorXd& hyperParameters_)
57+
: hyperParameters(hyperParameters_), extraParameters(Eigen::VectorXd::Ones(1) * std::numeric_limits<double>::max())
58+
{
59+
}
60+
61+
Eigen::MatrixXd PeriodicSquareExponential::evaluate(const Eigen::VectorXd& x, const Eigen::VectorXd& y)
62+
{
63+
64+
double lsSE0 = exp(hyperParameters(0));
65+
double svSE0 = exp(2 * hyperParameters(1));
66+
double lsP = exp(hyperParameters(2));
67+
double svP = exp(2 * hyperParameters(3));
68+
69+
double plP = exp(extraParameters(0));
70+
71+
// Work with arrays internally, convert to matrix for return value.
72+
// This is because all the operations act elementwise, and Eigen::Arrays
73+
// do so, too.
74+
75+
// Compute Distances
76+
Eigen::ArrayXXd squareDistanceXY = math_tools::squareDistance(x.transpose(), y.transpose());
77+
78+
// fast version
79+
return svSE0 * ((-0.5 / std::pow(lsSE0, 2)) * squareDistanceXY).exp() +
80+
svP * (-2 * (((M_PI / plP) * squareDistanceXY.sqrt()).sin() / lsP).square()).exp();
81+
82+
/* // verbose version
83+
// Square Exponential Kernel
84+
Eigen::ArrayXXd K0 = squareDistanceXY / std::pow(lsSE0, 2);
85+
K0 = svSE0 * (-0.5 * K0).exp();
86+
87+
// Periodic Kernel
88+
Eigen::ArrayXXd K1 = (M_PI * squareDistanceXY.sqrt() / plP);
89+
K1 = K1.sin() / lsP;
90+
K1 = K1.square();
91+
K1 = svP * (-2 * K1).exp();
92+
93+
// Combined Kernel
94+
return K0 + K1;
95+
*/
96+
}
97+
98+
void PeriodicSquareExponential::setParameters(const Eigen::VectorXd& params)
99+
{
100+
this->hyperParameters = params;
101+
}
102+
103+
void PeriodicSquareExponential::setExtraParameters(const Eigen::VectorXd& params)
104+
{
105+
this->extraParameters = params;
106+
}
107+
108+
const Eigen::VectorXd& PeriodicSquareExponential::getParameters() const
109+
{
110+
return this->hyperParameters;
111+
}
112+
113+
const Eigen::VectorXd& PeriodicSquareExponential::getExtraParameters() const
114+
{
115+
return this->extraParameters;
116+
}
117+
118+
int PeriodicSquareExponential::getParameterCount() const
119+
{
120+
return 4;
121+
}
122+
123+
int PeriodicSquareExponential::getExtraParameterCount() const
124+
{
125+
return 1;
126+
}
127+
128+
/* PeriodicSquareExponential2 */
129+
PeriodicSquareExponential2::PeriodicSquareExponential2()
130+
: hyperParameters(Eigen::VectorXd::Zero(6)), extraParameters(Eigen::VectorXd::Ones(1) * std::numeric_limits<double>::max())
131+
{
132+
}
133+
134+
PeriodicSquareExponential2::PeriodicSquareExponential2(const Eigen::VectorXd& hyperParameters_)
135+
: hyperParameters(hyperParameters_), extraParameters(Eigen::VectorXd::Ones(1) * std::numeric_limits<double>::max())
136+
{
137+
}
138+
139+
Eigen::MatrixXd PeriodicSquareExponential2::evaluate(const Eigen::VectorXd& x, const Eigen::VectorXd& y)
140+
{
141+
142+
double lsSE0 = exp(hyperParameters(0));
143+
double svSE0 = exp(2 * hyperParameters(1));
144+
double lsP = exp(hyperParameters(2));
145+
double svP = exp(2 * hyperParameters(3));
146+
double lsSE1 = exp(hyperParameters(4));
147+
double svSE1 = exp(2 * hyperParameters(5));
148+
149+
double plP = exp(extraParameters(0));
150+
151+
// Work with arrays internally, convert to matrix for return value.
152+
// This is because all the operations act elementwise, and Eigen::Arrays
153+
// do so, too.
154+
155+
// Compute Distances
156+
Eigen::ArrayXXd squareDistanceXY = math_tools::squareDistance(x.transpose(), y.transpose());
157+
158+
// fast version
159+
return svSE0 * ((-0.5 / std::pow(lsSE0, 2)) * squareDistanceXY).exp() +
160+
svP * (-2 * (((M_PI / plP) * squareDistanceXY.sqrt()).sin() / lsP).square()).exp() +
161+
svSE1 * ((-0.5 / std::pow(lsSE1, 2)) * squareDistanceXY).exp();
162+
163+
/* // verbose version
164+
// Square Exponential Kernel
165+
Eigen::ArrayXXd K0 = squareDistanceXY / pow(lsSE0, 2);
166+
K0 = svSE0 * (-0.5 * K0).exp();
167+
168+
// Periodic Kernel
169+
Eigen::ArrayXXd K1 = (M_PI * squareDistanceXY.sqrt() / plP);
170+
K1 = K1.sin() / lsP;
171+
K1 = K1.square();
172+
K1 = svP * (-2 * K1).exp();
173+
174+
// Square Exponential Kernel
175+
Eigen::ArrayXXd K2 = squareDistanceXY / pow(lsSE1, 2);
176+
K2 = svSE1 * (-0.5 * K2).exp();
177+
178+
// Combined Kernel
179+
return K0 + K1 + K2;
180+
*/
181+
}
182+
183+
void PeriodicSquareExponential2::setParameters(const Eigen::VectorXd& params)
184+
{
185+
this->hyperParameters = params;
186+
}
187+
188+
void PeriodicSquareExponential2::setExtraParameters(const Eigen::VectorXd& params)
189+
{
190+
this->extraParameters = params;
191+
}
192+
193+
const Eigen::VectorXd& PeriodicSquareExponential2::getParameters() const
194+
{
195+
return this->hyperParameters;
196+
}
197+
198+
const Eigen::VectorXd& PeriodicSquareExponential2::getExtraParameters() const
199+
{
200+
return this->extraParameters;
201+
}
202+
203+
int PeriodicSquareExponential2::getParameterCount() const
204+
{
205+
return 6;
206+
}
207+
208+
int PeriodicSquareExponential2::getExtraParameterCount() const
209+
{
210+
return 1;
211+
}
56212

57-
Eigen::MatrixXd PeriodicSquareExponential::evaluate(const Eigen::VectorXd& x, const Eigen::VectorXd& y)
58-
{
59-
60-
double lsSE0 = exp(hyperParameters(0));
61-
double svSE0 = exp(2 * hyperParameters(1));
62-
double lsP = exp(hyperParameters(2));
63-
double svP = exp(2 * hyperParameters(3));
64-
65-
double plP = exp(extraParameters(0));
66-
67-
// Work with arrays internally, convert to matrix for return value.
68-
// This is because all the operations act elementwise, and Eigen::Arrays
69-
// do so, too.
70-
71-
// Compute Distances
72-
Eigen::ArrayXXd squareDistanceXY = math_tools::squareDistance( x.transpose(), y.transpose());
73-
74-
// fast version
75-
return svSE0 * ((-0.5 / std::pow(lsSE0, 2)) * squareDistanceXY).exp()
76-
+ svP * (-2 * (((M_PI / plP) * squareDistanceXY.sqrt()).sin() / lsP).square()).exp();
77-
78-
/* // verbose version
79-
// Square Exponential Kernel
80-
Eigen::ArrayXXd K0 = squareDistanceXY / std::pow(lsSE0, 2);
81-
K0 = svSE0 * (-0.5 * K0).exp();
82-
83-
// Periodic Kernel
84-
Eigen::ArrayXXd K1 = (M_PI * squareDistanceXY.sqrt() / plP);
85-
K1 = K1.sin() / lsP;
86-
K1 = K1.square();
87-
K1 = svP * (-2 * K1).exp();
88-
89-
// Combined Kernel
90-
return K0 + K1;
91-
*/
92-
}
93-
94-
void PeriodicSquareExponential::setParameters(const Eigen::VectorXd& params)
95-
{
96-
this->hyperParameters = params;
97-
}
98-
99-
void PeriodicSquareExponential::setExtraParameters(const Eigen::VectorXd& params)
100-
{
101-
this->extraParameters = params;
102-
}
103-
104-
const Eigen::VectorXd& PeriodicSquareExponential::getParameters() const
105-
{
106-
return this->hyperParameters;
107-
}
108-
109-
const Eigen::VectorXd& PeriodicSquareExponential::getExtraParameters() const
110-
{
111-
return this->extraParameters;
112-
}
113-
114-
int PeriodicSquareExponential::getParameterCount() const
115-
{
116-
return 4;
117-
}
118-
119-
int PeriodicSquareExponential::getExtraParameterCount() const
120-
{
121-
return 1;
122-
}
123-
124-
125-
/* PeriodicSquareExponential2 */
126-
PeriodicSquareExponential2::PeriodicSquareExponential2() :
127-
hyperParameters(Eigen::VectorXd::Zero(6)), extraParameters(Eigen::VectorXd::Ones(1)*std::numeric_limits<double>::max()) { }
128-
129-
PeriodicSquareExponential2::PeriodicSquareExponential2(const Eigen::VectorXd& hyperParameters_) :
130-
hyperParameters(hyperParameters_), extraParameters(Eigen::VectorXd::Ones(1)*std::numeric_limits<double>::max()) { }
131-
132-
Eigen::MatrixXd PeriodicSquareExponential2::evaluate(const Eigen::VectorXd& x, const Eigen::VectorXd& y)
133-
{
134-
135-
double lsSE0 = exp(hyperParameters(0));
136-
double svSE0 = exp(2 * hyperParameters(1));
137-
double lsP = exp(hyperParameters(2));
138-
double svP = exp(2 * hyperParameters(3));
139-
double lsSE1 = exp(hyperParameters(4));
140-
double svSE1 = exp(2 * hyperParameters(5));
141-
142-
double plP = exp(extraParameters(0));
143-
144-
// Work with arrays internally, convert to matrix for return value.
145-
// This is because all the operations act elementwise, and Eigen::Arrays
146-
// do so, too.
147-
148-
// Compute Distances
149-
Eigen::ArrayXXd squareDistanceXY = math_tools::squareDistance( x.transpose(), y.transpose());
150-
151-
// fast version
152-
return svSE0 * ((-0.5 / std::pow(lsSE0, 2)) * squareDistanceXY).exp()
153-
+ svP * (-2 * (((M_PI / plP) * squareDistanceXY.sqrt()).sin() / lsP).square()).exp()
154-
+ svSE1 * ((-0.5 / std::pow(lsSE1, 2)) * squareDistanceXY).exp();
155-
156-
/* // verbose version
157-
// Square Exponential Kernel
158-
Eigen::ArrayXXd K0 = squareDistanceXY / pow(lsSE0, 2);
159-
K0 = svSE0 * (-0.5 * K0).exp();
160-
161-
// Periodic Kernel
162-
Eigen::ArrayXXd K1 = (M_PI * squareDistanceXY.sqrt() / plP);
163-
K1 = K1.sin() / lsP;
164-
K1 = K1.square();
165-
K1 = svP * (-2 * K1).exp();
166-
167-
// Square Exponential Kernel
168-
Eigen::ArrayXXd K2 = squareDistanceXY / pow(lsSE1, 2);
169-
K2 = svSE1 * (-0.5 * K2).exp();
170-
171-
// Combined Kernel
172-
return K0 + K1 + K2;
173-
*/
174-
}
175-
176-
void PeriodicSquareExponential2::setParameters(const Eigen::VectorXd& params)
177-
{
178-
this->hyperParameters = params;
179-
}
180-
181-
void PeriodicSquareExponential2::setExtraParameters(const Eigen::VectorXd& params)
182-
{
183-
this->extraParameters = params;
184-
}
185-
186-
const Eigen::VectorXd& PeriodicSquareExponential2::getParameters() const
187-
{
188-
return this->hyperParameters;
189-
}
190-
191-
const Eigen::VectorXd& PeriodicSquareExponential2::getExtraParameters() const
192-
{
193-
return this->extraParameters;
194-
}
195-
196-
int PeriodicSquareExponential2::getParameterCount() const
197-
{
198-
return 6;
199-
}
200-
201-
int PeriodicSquareExponential2::getExtraParameterCount() const
202-
{
203-
return 1;
204-
}
205-
206-
} // namespace covariance_functions
213+
} // namespace covariance_functions

0 commit comments

Comments
 (0)
Please sign in to comment.