28 #ifndef CYPRESS_NEF_DELTA_SIGMA 29 #define CYPRESS_NEF_DELTA_SIGMA 75 return std::sqrt(-std::log(eps));
93 return x < 0.0f ? 0.0f : std::exp(-x);
113 Real m_integral_to_zero;
114 std::vector<Real> m_values;
117 Real integral_to_zero, std::vector<Real> &&values)
121 m_integral(integral),
122 m_integral_to_zero(integral_to_zero),
127 template <
typename Window>
128 static std::pair<Real, Real> calculate_alpha_and_response_time(
136 template <
typename Window>
137 static std::pair<Real, Real> choose_params(
138 Real min_spike_interval = DEFAULT_MIN_SPIKE_INTERVAL,
139 Real response_time = DEFAULT_RESPONSE_TIME,
140 Real step = DEFAULT_STEP,
Real eps = DEFAULT_EPS);
154 template <
typename Window>
156 Real step = DEFAULT_STEP,
157 Real eps = DEFAULT_EPS);
173 template <
typename Window>
175 Real min_spike_interval = DEFAULT_MIN_SPIKE_INTERVAL,
176 Real response_time = DEFAULT_RESPONSE_TIME,
177 Real step = DEFAULT_STEP,
Real eps = DEFAULT_EPS);
216 return std::sqrt(-std::log(eps));
222 size_t size()
const {
return m_values.size(); }
232 auto begin()
const {
return m_values.begin(); }
237 auto end()
const {
return m_values.end(); }
257 static std::vector<Real>
encode(
259 Real min_val = -1.0,
Real max_val = 1.0,
260 Real min_spike_interval = DEFAULT_MIN_SPIKE_INTERVAL);
278 template <
typename Fun>
281 Real min_val = -1.0,
Real max_val = 1.0,
282 Real min_spike_interval = DEFAULT_MIN_SPIKE_INTERVAL)
284 const size_t n_samples = std::ceil(t1 - t0) / window.
step();
285 std::vector<Real> values(n_samples);
286 for (
size_t i = 0; i < n_samples; i++) {
287 values[i] = f(t0 + i * window.
step());
289 return encode(values, window, t0, min_val, max_val, min_spike_interval);
305 static std::vector<Real>
decode(
const std::vector<Real> &spikes,
auto begin() const
Definition: delta_sigma.hpp:232
static constexpr Real DEFAULT_STEP
Definition: delta_sigma.hpp:47
Real step() const
Definition: delta_sigma.hpp:192
static std::vector< Real > decode(const std::vector< Real > &spikes, const DiscreteWindow &window, Real t0, Real t1, Real min_val=-1.0, Real max_val=1.0)
static constexpr Real DEFAULT_MIN_SPIKE_INTERVAL
Definition: delta_sigma.hpp:49
auto end() const
Definition: delta_sigma.hpp:237
static constexpr Real DEFAULT_EPS
Definition: delta_sigma.hpp:48
Definition: delta_sigma.hpp:57
Definition: delta_sigma.hpp:82
static Real limit(Real eps=1e-6f)
Definition: delta_sigma.hpp:73
double Real
Definition: types.hpp:56
static Real limit(Real eps=1e-6f)
Definition: delta_sigma.hpp:101
Real sigma() const
Definition: delta_sigma.hpp:187
size_t size() const
Definition: delta_sigma.hpp:222
Real limit(Real eps=DEFAULT_EPS) const
Definition: delta_sigma.hpp:214
static Real value(Real x)
Definition: delta_sigma.hpp:91
Real integral_to_zero() const
Definition: delta_sigma.hpp:207
Real integral() const
Definition: delta_sigma.hpp:201
Definition: brainscales_lib.hpp:39
static std::vector< Real > encode(const std::vector< Real > &values, const DiscreteWindow &window, Real t0, Real min_val=-1.0, Real max_val=1.0, Real min_spike_interval=DEFAULT_MIN_SPIKE_INTERVAL)
Definition: delta_sigma.hpp:44
Definition: delta_sigma.hpp:107
Real alpha() const
Definition: delta_sigma.hpp:182
static constexpr Real DEFAULT_RESPONSE_TIME
Definition: delta_sigma.hpp:46
Real operator[](size_t i) const
Definition: delta_sigma.hpp:227
static std::vector< Real > encode(const Fun &f, const DiscreteWindow &window, Real t0, Real t1, Real min_val=-1.0, Real max_val=1.0, Real min_spike_interval=DEFAULT_MIN_SPIKE_INTERVAL)
Definition: delta_sigma.hpp:279
static Real value(Real x)
Definition: delta_sigma.hpp:66