72 unsigned int num_points)
74 unsigned int number = 0;
76 const float* complexVectorPtr = (
float*)complexVector;
77 double* iBufferPtr = iBuffer;
78 double* qBufferPtr = qBuffer;
80 const unsigned int quarterPoints = num_points / 4;
82 __m128 complexH, complexL, fVal;
85 for (; number < quarterPoints; number++) {
87 cplxValue = _mm256_loadu_ps(complexVectorPtr);
88 complexVectorPtr += 8;
90 complexH = _mm256_extractf128_ps(cplxValue, 1);
91 complexL = _mm256_extractf128_ps(cplxValue, 0);
95 dVal = _mm256_cvtps_pd(fVal);
96 _mm256_storeu_pd(iBufferPtr, dVal);
100 dVal = _mm256_cvtps_pd(fVal);
101 _mm256_storeu_pd(qBufferPtr, dVal);
107 number = quarterPoints * 4;
108 for (; number < num_points; number++) {
109 *iBufferPtr++ = *complexVectorPtr++;
110 *qBufferPtr++ = *complexVectorPtr++;
192 unsigned int num_points)
194 unsigned int number = 0;
196 const float* complexVectorPtr = (
float*)complexVector;
197 double* iBufferPtr = iBuffer;
198 double* qBufferPtr = qBuffer;
200 const unsigned int quarterPoints = num_points / 4;
202 __m128 complexH, complexL, fVal;
205 for (; number < quarterPoints; number++) {
207 cplxValue = _mm256_load_ps(complexVectorPtr);
208 complexVectorPtr += 8;
210 complexH = _mm256_extractf128_ps(cplxValue, 1);
211 complexL = _mm256_extractf128_ps(cplxValue, 0);
215 dVal = _mm256_cvtps_pd(fVal);
216 _mm256_store_pd(iBufferPtr, dVal);
220 dVal = _mm256_cvtps_pd(fVal);
221 _mm256_store_pd(qBufferPtr, dVal);
227 number = quarterPoints * 4;
228 for (; number < num_points; number++) {
229 *iBufferPtr++ = *complexVectorPtr++;
230 *qBufferPtr++ = *complexVectorPtr++;