@@ -41,7 +41,7 @@ namespace XDSP
4141 using CXMVECTOR = DirectX::CXMVECTOR;
4242 using XMFLOAT4A = DirectX::XMFLOAT4A;
4343
44- inline bool ISPOWEROF2 (size_t n) { return (((n)&((n)-1 )) == 0 && (n) != 0 ); }
44+ constexpr bool ISPOWEROF2 (size_t n) { return (((n)&((n)-1 )) == 0 && (n) != 0 ); }
4545
4646 // Parallel multiplication of four complex numbers, assuming real and imaginary values are stored in separate vectors.
4747 inline void XM_CALLCONV vmulComplex (
@@ -457,42 +457,44 @@ namespace XDSP
457457 // pUnityTable[0 to uLength*4-1] contains real components for current FFT length
458458 // pUnityTable[uLength*4 to uLength*8-1] contains imaginary components for current FFT length
459459 static const XMVECTORF32 vXM0123 = { { { 0 .0f , 1 .0f , 2 .0f , 3 .0f } } };
460- uLength >>= 2 ;
461- XMVECTOR vlStep = XMVectorReplicate (XM_PIDIV2 / float (uLength));
460+
461+ size_t len = uLength;
462+ len >>= 2 ;
463+ XMVECTOR vlStep = XMVectorReplicate (XM_PIDIV2 / float (len));
462464 do
463465 {
464- uLength >>= 2 ;
466+ len >>= 2 ;
465467 XMVECTOR vJP = vXM0123;
466- for (size_t j = 0 ; j < uLength ; ++j)
468+ for (size_t j = 0 ; j < len ; ++j)
467469 {
468470 XMVECTOR vSin, vCos;
469471 XMVECTOR viJP, vlS;
470472
471473 pUnityTable[j] = g_XMOne;
472- pUnityTable[j + uLength * 4 ] = XMVectorZero ();
474+ pUnityTable[j + len * 4 ] = XMVectorZero ();
473475
474476 vlS = XMVectorMultiply (vJP, vlStep);
475477 XMVectorSinCos (&vSin, &vCos, vlS);
476- pUnityTable[j + uLength ] = vCos;
477- pUnityTable[j + uLength * 5 ] = XMVectorMultiply (vSin, g_XMNegativeOne);
478+ pUnityTable[j + len ] = vCos;
479+ pUnityTable[j + len * 5 ] = XMVectorMultiply (vSin, g_XMNegativeOne);
478480
479481 viJP = XMVectorAdd (vJP, vJP);
480482 vlS = XMVectorMultiply (viJP, vlStep);
481483 XMVectorSinCos (&vSin, &vCos, vlS);
482- pUnityTable[j + uLength * 2 ] = vCos;
483- pUnityTable[j + uLength * 6 ] = XMVectorMultiply (vSin, g_XMNegativeOne);
484+ pUnityTable[j + len * 2 ] = vCos;
485+ pUnityTable[j + len * 6 ] = XMVectorMultiply (vSin, g_XMNegativeOne);
484486
485487 viJP = XMVectorAdd (viJP, vJP);
486488 vlS = XMVectorMultiply (viJP, vlStep);
487489 XMVectorSinCos (&vSin, &vCos, vlS);
488- pUnityTable[j + uLength * 3 ] = vCos;
489- pUnityTable[j + uLength * 7 ] = XMVectorMultiply (vSin, g_XMNegativeOne);
490+ pUnityTable[j + len * 3 ] = vCos;
491+ pUnityTable[j + len * 7 ] = XMVectorMultiply (vSin, g_XMNegativeOne);
490492
491493 vJP = XMVectorAdd (vJP, g_XMFour);
492494 }
493495 vlStep = XMVectorMultiply (vlStep, g_XMFour);
494- pUnityTable += uLength * 8 ;
495- } while (uLength > 4 );
496+ pUnityTable += len * 8 ;
497+ } while (len > 4 );
496498 }
497499
498500 // ----------------------------------------------------------------------------------
0 commit comments