summaryrefslogtreecommitdiff
path: root/source/math/PlatformMath.cc
diff options
context:
space:
mode:
Diffstat (limited to 'source/math/PlatformMath.cc')
-rw-r--r--source/math/PlatformMath.cc60
1 files changed, 30 insertions, 30 deletions
diff --git a/source/math/PlatformMath.cc b/source/math/PlatformMath.cc
index b666d29..8950941 100644
--- a/source/math/PlatformMath.cc
+++ b/source/math/PlatformMath.cc
@@ -24,31 +24,31 @@ namespace math {
float MathUtils::CosineF32(float radians)
{
-#if ARM_MATH_DSP
+#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
return arm_cos_f32(radians);
-#else /* ARM_MATH_DSP */
+#else /* __ARM_FEATURE_DSP */
return cosf(radians);
-#endif /* ARM_MATH_DSP */
+#endif /* __ARM_FEATURE_DSP */
}
float MathUtils::SineF32(float radians)
{
-#if ARM_MATH_DSP
+#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
return arm_sin_f32(radians);
-#else /* ARM_MATH_DSP */
+#else /* __ARM_FEATURE_DSP */
return sinf(radians);
-#endif /* ARM_MATH_DSP */
+#endif /* __ARM_FEATURE_DSP */
}
float MathUtils::SqrtF32(float input)
{
-#if ARM_MATH_DSP
+#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
float output = 0.f;
arm_sqrt_f32(input, &output);
return output;
-#else /* ARM_MATH_DSP */
+#else /* __ARM_FEATURE_DSP */
return sqrtf(input);
-#endif /* ARM_MATH_DSP */
+#endif /* __ARM_FEATURE_DSP */
}
float MathUtils::MeanF32(float* ptrSrc, const uint32_t srcLen)
@@ -57,14 +57,14 @@ namespace math {
return 0.f;
}
-#if ARM_MATH_DSP
+#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
float result = 0.f;
arm_mean_f32(ptrSrc, srcLen, &result);
return result;
-#else /* ARM_MATH_DSP */
+#else /* __ARM_FEATURE_DSP */
float acc = std::accumulate(ptrSrc, ptrSrc + srcLen, 0.0);
return acc/srcLen;
-#endif /* ARM_MATH_DSP */
+#endif /* __ARM_FEATURE_DSP */
}
float MathUtils::StdDevF32(float* ptrSrc, const uint32_t srcLen,
@@ -73,7 +73,7 @@ namespace math {
if (!srcLen) {
return 0.f;
}
-#if ARM_MATH_DSP
+#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
/**
* Note Standard deviation calculation can be off
* by > 0.01 but less than < 0.1, according to
@@ -83,7 +83,7 @@ namespace math {
float stdDev = 0;
arm_std_f32(ptrSrc, srcLen, &stdDev);
return stdDev;
-#else /* ARM_MATH_DSP */
+#else /* __ARM_FEATURE_DSP */
auto VarianceFunction = [=](float acc, const float value) {
return acc + (((value - mean) * (value - mean))/ srcLen);
};
@@ -92,7 +92,7 @@ namespace math {
VarianceFunction);
return sqrtf(acc);
-#endif /* ARM_MATH_DSP */
+#endif /* __ARM_FEATURE_DSP */
}
void MathUtils::FftInitF32(const uint16_t fftLen,
@@ -104,7 +104,7 @@ namespace math {
fftInstance.m_optimisedOptionAvailable = false;
fftInstance.m_type = type;
-#if ARM_MATH_DSP
+#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
arm_status status = ARM_MATH_ARGUMENT_ERROR;
switch (fftInstance.m_type) {
case FftType::real:
@@ -125,7 +125,7 @@ namespace math {
} else {
fftInstance.m_optimisedOptionAvailable = true;
}
-#endif /* ARM_MATH_DSP */
+#endif /* __ARM_FEATURE_DSP */
debug("Optimised FFT will be used: %s.\n", fftInstance.m_optimisedOptionAvailable? "yes": "no");
@@ -203,12 +203,12 @@ namespace math {
switch (fftInstance.m_type) {
case FftType::real:
-#if ARM_MATH_DSP
+#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
if (fftInstance.m_optimisedOptionAvailable) {
arm_rfft_fast_f32(&fftInstance.m_instanceReal, input.data(), fftOutput.data(), 0);
return;
}
-#endif /* ARM_MATH_DSP */
+#endif /* __ARM_FEATURE_DSP */
FftRealF32(input, fftOutput);
return;
@@ -217,13 +217,13 @@ namespace math {
printf_err("Complex FFT instance should have input size >= (FFT len x 2)");
return;
}
-#if ARM_MATH_DSP
+#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
if (fftInstance.m_optimisedOptionAvailable) {
fftOutput = input; /* Complex function works in-place */
arm_cfft_f32(&fftInstance.m_instanceComplex, fftOutput.data(), 0, 1);
return;
}
-#endif /* ARM_MATH_DSP */
+#endif /* __ARM_FEATURE_DSP */
FftComplexF32(input, fftOutput);
return;
@@ -236,15 +236,15 @@ namespace math {
void MathUtils::VecLogarithmF32(std::vector <float>& input,
std::vector <float>& output)
{
-#if ARM_MATH_DSP
+#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
arm_vlog_f32(input.data(), output.data(),
output.size());
-#else /* ARM_MATH_DSP */
+#else /* __ARM_FEATURE_DSP */
for (auto in = input.begin(), out = output.begin();
in != input.end() && out != output.end(); ++in, ++out) {
*out = logf(*in);
}
-#endif /* ARM_MATH_DSP */
+#endif /* __ARM_FEATURE_DSP */
}
float MathUtils::DotProductF32(float* srcPtrA, float* srcPtrB,
@@ -252,13 +252,13 @@ namespace math {
{
float output = 0.f;
-#if ARM_MATH_DSP
+#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
arm_dot_prod_f32(srcPtrA, srcPtrB, srcLen, &output);
-#else /* ARM_MATH_DSP */
+#else /* __ARM_FEATURE_DSP */
for (uint32_t i = 0; i < srcLen; ++i) {
output += *srcPtrA++ * *srcPtrB++;
}
-#endif /* ARM_MATH_DSP */
+#endif /* __ARM_FEATURE_DSP */
return output;
}
@@ -273,15 +273,15 @@ namespace math {
return false;
}
-#if ARM_MATH_DSP
+#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
arm_cmplx_mag_squared_f32(ptrSrc, ptrDst, srcLen/2);
-#else /* ARM_MATH_DSP */
+#else /* __ARM_FEATURE_DSP */
for (uint32_t j = 0; j < srcLen/2; ++j) {
const float real = *ptrSrc++;
const float im = *ptrSrc++;
*ptrDst++ = real*real + im*im;
}
-#endif /* ARM_MATH_DSP */
+#endif /* __ARM_FEATURE_DSP */
return true;
}