EllAlgo 1.6.13
Loading...
Searching...
No Matches
ell_calc_core.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <cstddef> // For size_t
9#include <tuple>
10
19 private:
23 double _n_f;
24 double _n_plus_1;
25 double _half_n;
26 double _inv_n;
27 double _n_sq;
28 double _cst1;
29 double _cst2;
30
31 public:
41 explicit EllCalcCore(const size_t ndim) noexcept
42 : _n_f{static_cast<double>(ndim)},
43 _n_plus_1{_n_f + 1.0},
44 _half_n{_n_f / 2.0},
45 _inv_n{1.0 / _n_f},
46 _n_sq{_n_f * _n_f},
47 _cst1{_n_sq / (_n_sq - 1.0)},
48 _cst2{2.0 / _n_plus_1} {}
49
50 // Rule of five: explicitly default destructor and assignment operators
54
64
74
91 -> std::tuple<double, double, double> {
92 const auto b0b1 = beta0 * beta1;
93 const auto eta = tsq + this->_n_f * b0b1;
94 return this->calc_parallel_cut_fast(beta0, beta1, tsq, b0b1, eta);
95 }
96
97 auto calc_parallel_cut_fast_old(const double beta0, const double beta1, const double tsq,
98 const double b0b1, const double eta) const noexcept
99 -> std::tuple<double, double, double>;
100
114 auto calc_parallel_cut_fast(const double beta0, const double beta1, const double tsq,
115 const double b0b1, const double eta) const noexcept
116 -> std::tuple<double, double, double>;
117
131 auto calc_parallel_central_cut(const double beta1, const double tsq) const noexcept
132 -> std::tuple<double, double, double>;
133
153 auto calc_bias_cut(const double beta, const double tau) const noexcept
154 -> std::tuple<double, double, double> {
155 return this->calc_bias_cut_fast(beta, tau, tau + this->_n_f * beta);
156 }
157
173 auto calc_bias_cut_fast(const double beta, const double tau, const double eta) const noexcept
174 -> std::tuple<double, double, double>;
175
195 auto calc_central_cut(const double tau) const noexcept -> std::tuple<double, double, double>;
196}; // } EllCalcCore
Ellipsoid Search Space.
Definition ell_calc_core.hpp:18
auto calc_parallel_central_cut(const double beta1, const double tsq) const noexcept -> std::tuple< double, double, double >
Compute new ellipsoid parameters for parallel central cut.
auto calc_bias_cut(const double beta, const double tau) const noexcept -> std::tuple< double, double, double >
Compute new ellipsoid parameters for bias (deep) cut.
Definition ell_calc_core.hpp:153
auto calc_parallel_cut_fast(const double beta0, const double beta1, const double tsq, const double b0b1, const double eta) const noexcept -> std::tuple< double, double, double >
Fast parallel cut computation with pre-computed values.
EllCalcCore(const size_t ndim) noexcept
Definition ell_calc_core.hpp:41
auto calc_parallel_cut_fast_old(const double beta0, const double beta1, const double tsq, const double b0b1, const double eta) const noexcept -> std::tuple< double, double, double >
~EllCalcCore() noexcept=default
auto calc_parallel_cut(const double beta0, const double beta1, const double tsq) const noexcept -> std::tuple< double, double, double >
Compute new ellipsoid parameters for parallel bias cut.
Definition ell_calc_core.hpp:90
auto calc_bias_cut_fast(const double beta, const double tau, const double eta) const noexcept -> std::tuple< double, double, double >
Fast bias cut computation with pre-computed eta.
auto calc_central_cut(const double tau) const noexcept -> std::tuple< double, double, double >
Compute new ellipsoid parameters for central cut.
auto invalid_value() -> T
Return an invalid/sentinel value for type T.
Definition cutting_plane.hpp:27