Explorar el Código

CMSIS-DSP: Correction of issue 891
Use of arm_cfft_init_f64 in the tests for coherency with other
cfft tests.

Christophe Favergeon hace 5 años
padre
commit
9d4ec2628b

+ 4 - 0
CMSIS/DSP/Include/arm_math.h

@@ -3205,6 +3205,10 @@ void arm_cfft_q31(
           uint16_t bitRevLength;             /**< bit reversal table length. */
   } arm_cfft_instance_f64;
 
+  arm_status arm_cfft_init_f64(
+  arm_cfft_instance_f64 * S,
+  uint16_t fftLen);
+  
   void arm_cfft_f64(
   const arm_cfft_instance_f64 * S,
         float64_t * p1,

+ 1 - 0
CMSIS/DSP/Source/TransformFunctions/CMakeLists.txt

@@ -31,6 +31,7 @@ endif()
 if (NOT CONFIGTABLE OR ALLFFT OR CFFT_F64_16 OR CFFT_F64_32 OR CFFT_F64_64 OR CFFT_F64_128 OR CFFT_F64_256 OR CFFT_F64_512 
     OR CFFT_F64_1024 OR CFFT_F64_2048 OR CFFT_F64_4096)
 target_sources(CMSISDSPTransform PRIVATE arm_cfft_f64.c)
+target_sources(CMSISDSPTransform PRIVATE arm_cfft_init_f64.c)
 endif()
 
 if (NOT CONFIGTABLE OR ALLFFT OR CFFT_Q15_16 OR CFFT_Q15_32 OR CFFT_Q15_64 OR CFFT_Q15_128 OR CFFT_Q15_256 OR CFFT_Q15_512 

+ 3 - 1
CMSIS/DSP/Testing/Include/Tests/TransformCF64.h

@@ -14,8 +14,10 @@ class TransformCF64:public Client::Suite
 
             Client::RefPattern<float64_t> ref;
 
-            const arm_cfft_instance_f64 *instCfftF64;
+            arm_cfft_instance_f64 varInstCfftF64;
 
             int ifft;
+
+            arm_status status;
             
     };

+ 37 - 37
CMSIS/DSP/Testing/Source/Tests/TransformCF64.cpp

@@ -16,7 +16,7 @@
         memcpy(outfftp,inp,sizeof(float64_t)*input.nbSamples());
    
         arm_cfft_f64(
-             this->instCfftF64,
+             &(this->varInstCfftF64),
              outfftp,
              this->ifft,
              1);
@@ -41,7 +41,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_NOISY_16_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_NOISY_16_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len16;
+            status=arm_cfft_init_f64(&varInstCfftF64,16);
 
             this->ifft=0;
 
@@ -52,7 +52,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_16_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_16_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len16;
+            status=arm_cfft_init_f64(&varInstCfftF64,16);
 
             this->ifft=1;
 
@@ -63,7 +63,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_NOISY_32_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_NOISY_32_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len32;
+            status=arm_cfft_init_f64(&varInstCfftF64,32);
 
             this->ifft=0;
 
@@ -74,7 +74,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_32_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_32_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len32;
+            status=arm_cfft_init_f64(&varInstCfftF64,32);
 
             this->ifft=1;
 
@@ -85,7 +85,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_NOISY_64_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_NOISY_64_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len64;
+            status=arm_cfft_init_f64(&varInstCfftF64,64);
 
             this->ifft=0;
 
@@ -96,7 +96,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_64_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_64_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len64;
+            status=arm_cfft_init_f64(&varInstCfftF64,64);
 
             this->ifft=1;
 
@@ -107,7 +107,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_NOISY_128_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_NOISY_128_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len128;
+            status=arm_cfft_init_f64(&varInstCfftF64,128);
 
             this->ifft=0;
 
@@ -118,7 +118,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_128_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_128_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len128;
+            status=arm_cfft_init_f64(&varInstCfftF64,128);
 
             this->ifft=1;
 
@@ -129,7 +129,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_NOISY_256_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_NOISY_256_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len256;
+            status=arm_cfft_init_f64(&varInstCfftF64,256);
 
             this->ifft=0;
 
@@ -140,7 +140,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_256_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_256_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len256;
+            status=arm_cfft_init_f64(&varInstCfftF64,256);
 
             this->ifft=1;
 
@@ -151,7 +151,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_NOISY_512_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_NOISY_512_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len512;
+            status=arm_cfft_init_f64(&varInstCfftF64,512);
 
             this->ifft=0;
 
@@ -162,7 +162,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_512_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_512_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len512;
+            status=arm_cfft_init_f64(&varInstCfftF64,512);
 
             this->ifft=1;
 
@@ -173,7 +173,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_NOISY_1024_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_NOISY_1024_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len1024;
+            status=arm_cfft_init_f64(&varInstCfftF64,1024);
 
             this->ifft=0;
 
@@ -184,7 +184,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_1024_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_1024_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len1024;
+            status=arm_cfft_init_f64(&varInstCfftF64,1024);
 
             this->ifft=1;
 
@@ -195,7 +195,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_NOISY_2048_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_NOISY_2048_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len2048;
+            status=arm_cfft_init_f64(&varInstCfftF64,2048);
 
             this->ifft=0;
 
@@ -206,7 +206,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_2048_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_2048_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len2048;
+            status=arm_cfft_init_f64(&varInstCfftF64,2048);
 
             this->ifft=1;
 
@@ -217,7 +217,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_NOISY_4096_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_NOISY_4096_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len4096;
+            status=arm_cfft_init_f64(&varInstCfftF64,4096);
 
             this->ifft=0;
 
@@ -228,7 +228,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_4096_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_4096_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len4096;
+            status=arm_cfft_init_f64(&varInstCfftF64,4096);
 
             this->ifft=1;
 
@@ -241,7 +241,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_STEP_16_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_STEP_16_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len16;
+            status=arm_cfft_init_f64(&varInstCfftF64,16);
 
             this->ifft=0;
 
@@ -252,7 +252,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_STEP_16_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_16_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len16;
+            status=arm_cfft_init_f64(&varInstCfftF64,16);
 
             this->ifft=1;
 
@@ -263,7 +263,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_STEP_32_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_STEP_32_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len32;
+            status=arm_cfft_init_f64(&varInstCfftF64,32);
 
             this->ifft=0;
 
@@ -274,7 +274,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_STEP_32_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_32_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len32;
+            status=arm_cfft_init_f64(&varInstCfftF64,32);
 
             this->ifft=1;
 
@@ -285,7 +285,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_STEP_64_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_STEP_64_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len64;
+            status=arm_cfft_init_f64(&varInstCfftF64,64);
 
             this->ifft=0;
 
@@ -296,7 +296,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_STEP_64_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_64_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len64;
+            status=arm_cfft_init_f64(&varInstCfftF64,64);
 
             this->ifft=1;
 
@@ -307,7 +307,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_STEP_128_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_STEP_128_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len128;
+            status=arm_cfft_init_f64(&varInstCfftF64,128);
 
             this->ifft=0;
 
@@ -318,7 +318,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_STEP_128_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_128_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len128;
+            status=arm_cfft_init_f64(&varInstCfftF64,128);
 
             this->ifft=1;
 
@@ -329,7 +329,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_STEP_256_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_STEP_256_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len256;
+            status=arm_cfft_init_f64(&varInstCfftF64,256);
 
             this->ifft=0;
 
@@ -340,7 +340,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_STEP_256_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_256_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len256;
+            status=arm_cfft_init_f64(&varInstCfftF64,256);
 
             this->ifft=1;
 
@@ -351,7 +351,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_STEP_512_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_STEP_512_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len512;
+            status=arm_cfft_init_f64(&varInstCfftF64,512);
 
             this->ifft=0;
 
@@ -362,7 +362,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_STEP_512_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_512_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len512;
+            status=arm_cfft_init_f64(&varInstCfftF64,512);
 
             this->ifft=1;
 
@@ -373,7 +373,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_STEP_1024_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_STEP_1024_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len1024;
+            status=arm_cfft_init_f64(&varInstCfftF64,1024);
 
             this->ifft=0;
 
@@ -384,7 +384,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_STEP_1024_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_1024_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len1024;
+            status=arm_cfft_init_f64(&varInstCfftF64,1024);
 
             this->ifft=1;
 
@@ -395,7 +395,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_STEP_2048_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_STEP_2048_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len2048;
+            status=arm_cfft_init_f64(&varInstCfftF64,2048);
 
             this->ifft=0;
 
@@ -406,7 +406,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_STEP_2048_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_2048_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len2048;
+            status=arm_cfft_init_f64(&varInstCfftF64,2048);
 
             this->ifft=1;
 
@@ -417,7 +417,7 @@
             input.reload(TransformCF64::INPUTS_CFFT_STEP_4096_F64_ID,mgr);
             ref.reload(  TransformCF64::REF_CFFT_STEP_4096_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len4096;
+            status=arm_cfft_init_f64(&varInstCfftF64,4096);
 
             this->ifft=0;
 
@@ -428,7 +428,7 @@
             input.reload(TransformCF64::INPUTS_CIFFT_STEP_4096_F64_ID,mgr);
             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_4096_F64_ID,mgr);
 
-            instCfftF64 = &arm_cfft_sR_f64_len4096;
+            status=arm_cfft_init_f64(&varInstCfftF64,4096);
 
             this->ifft=1;