};
auto convolve = [](std::vector<double> const& signal, std::vector<double> const& ir) {
- std::vector<double> result(signal.size());
+ auto const signal_size = signal.size();
+ auto const ir_size = ir.size();
+ std::vector<double> result(signal_size);
double sum = 0.0;
- for (auto i = 0U; i < signal.size(); i++) {
+ for (auto i = 0U; i < signal_size; i++) {
auto m = i;
- for (int l = ir.size()- 1; l >= 0; l--, m++) {
- if (m >= signal.size()) {
- m -= signal.size();
+ for (int l = ir_size - 1; l >= 0; l--, m++) {
+ if (m >= signal_size) {
+ m -= signal_size;
}
sum += signal[m] * ir[l];
}
};
auto rectify = [](std::vector<double> const& input) {
- std::vector<double> squared;
- for (auto i: input) {
- squared.push_back(pow(i, 2));
+ std::vector<double> squared(input.size());
+ for (auto i = 0U; i < input.size(); ++i) {
+ squared[i] = pow(input[i], 2);
}
return squared;
};