From 284edaeffe262ecbde5d05af775cf044aefd9fcd Mon Sep 17 00:00:00 2001 From: 9pt7 Date: Fri, 27 Feb 2015 16:08:56 -0400 Subject: [PATCH] powf() has to handle the general case of any floating-point x,y - as a result it's comparatively very slow in the special case y == 2. Replace with a simple multiply. --- mbelib.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mbelib.c b/mbelib.c index 8d8f678..d43dd7c 100644 --- a/mbelib.c +++ b/mbelib.c @@ -126,12 +126,12 @@ mbe_spectralAmpEnhance (mbe_parms * cur_mp) Rm1 = 0; for (l = 1; l <= cur_mp->L; l++) { - Rm0 = Rm0 + powf (cur_mp->Ml[l], (float) 2); - Rm1 = Rm1 + (powf (cur_mp->Ml[l], (float) 2) * cosf (cur_mp->w0 * (float) l)); + Rm0 = Rm0 + (cur_mp->Ml[l] * cur_mp->Ml[l]); + Rm1 = Rm1 + ((cur_mp->Ml[l] * cur_mp->Ml[l]) * cosf (cur_mp->w0 * (float) l)); } - R2m0 = powf (Rm0, (float) 2); - R2m1 = powf (Rm1, (float) 2); + R2m0 = (Rm0*Rm0); + R2m1 = (Rm1*Rm1); for (l = 1; l <= cur_mp->L; l++) { @@ -166,7 +166,7 @@ mbe_spectralAmpEnhance (mbe_parms * cur_mp) { M = -M; } - sum += powf (M, 2); + sum += (M*M); } if (sum == 0) {