summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/DPL2Decoder.cpp
diff options
context:
space:
mode:
authorMerryMage <MerryMage@users.noreply.github.com>2017-04-22 21:23:19 +0100
committerMerryMage <MerryMage@users.noreply.github.com>2017-04-23 09:21:30 +0100
commit4f884d0b2fd2dbbc11caa45477017885b90f32a9 (patch)
treed65cbbb72175f7997e32b4b24ce4278ff3be94be /Source/Core/AudioCommon/DPL2Decoder.cpp
parent42a1f7939d00e38e8a9c29f593b792d06126f41e (diff)
DPL2Decoder: Simplify DotProduct
Diffstat (limited to 'Source/Core/AudioCommon/DPL2Decoder.cpp')
-rw-r--r--Source/Core/AudioCommon/DPL2Decoder.cpp19
1 files changed, 2 insertions, 17 deletions
diff --git a/Source/Core/AudioCommon/DPL2Decoder.cpp b/Source/Core/AudioCommon/DPL2Decoder.cpp
index 6ec8d55144..29fc60b719 100644
--- a/Source/Core/AudioCommon/DPL2Decoder.cpp
+++ b/Source/Core/AudioCommon/DPL2Decoder.cpp
@@ -12,6 +12,7 @@
#include <cstdlib>
#include <cstring>
#include <functional>
+#include <numeric>
#include <vector>
#include "AudioCommon/DPL2Decoder.h"
@@ -41,23 +42,7 @@ static unsigned int len125;
template <class T>
static float DotProduct(int count, const T* buf, const std::vector<float>& coeffs, int offset)
{
- int i;
- float sum0 = 0.0f, sum1 = 0.0f, sum2 = 0.0f, sum3 = 0.0f;
-
- // Unrolled loop
- for (i = 0; (i + 3) < count; i += 4)
- {
- sum0 += buf[i + 0] * coeffs[offset + i + 0];
- sum1 += buf[i + 1] * coeffs[offset + i + 1];
- sum2 += buf[i + 2] * coeffs[offset + i + 2];
- sum3 += buf[i + 3] * coeffs[offset + i + 3];
- }
-
- // Epilogue of unrolled loop
- for (; i < count; i++)
- sum0 += buf[i] * coeffs[offset + i];
-
- return sum0 + sum1 + sum2 + sum3;
+ return std::inner_product(buf, buf + count, coeffs.begin() + offset, T(0));
}
template <class T>