1 #include "TransformCF32.h" 2 #include <stdio.h> 3 #include "Error.h" 4 #include "Test.h" 5 6 #define SNR_THRESHOLD 120 7 test_cfft_f32()8 void TransformCF32::test_cfft_f32() 9 { 10 const float32_t *inp = input.ptr(); 11 12 float32_t *outfftp = outputfft.ptr(); 13 14 memcpy(outfftp,inp,sizeof(float32_t)*input.nbSamples()); 15 16 ASSERT_TRUE(status == ARM_MATH_SUCCESS); 17 18 arm_cfft_f32( 19 &(this->varInstCfftF32), 20 outfftp, 21 this->ifft, 22 1); 23 24 25 26 ASSERT_SNR(outputfft,ref,(float32_t)SNR_THRESHOLD); 27 ASSERT_EMPTY_TAIL(outputfft); 28 29 30 31 } 32 setUp(Testing::testID_t id,std::vector<Testing::param_t> & paramsArgs,Client::PatternMgr * mgr)33 void TransformCF32::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr) 34 { 35 36 (void)paramsArgs; 37 switch(id) 38 { 39 case TransformCF32::TEST_CFFT_F32_1: 40 41 input.reload(TransformCF32::INPUTS_CFFT_NOISY_16_F32_ID,mgr); 42 ref.reload( TransformCF32::REF_CFFT_NOISY_16_F32_ID,mgr); 43 44 status=arm_cfft_init_f32(&varInstCfftF32,16); 45 46 this->ifft=0; 47 48 break; 49 50 case TransformCF32::TEST_CFFT_F32_19: 51 52 input.reload(TransformCF32::INPUTS_CIFFT_NOISY_16_F32_ID,mgr); 53 ref.reload( TransformCF32::INPUTS_CFFT_NOISY_16_F32_ID,mgr); 54 55 status=arm_cfft_init_f32(&varInstCfftF32,16); 56 57 this->ifft=1; 58 59 break; 60 61 case TransformCF32::TEST_CFFT_F32_2: 62 63 input.reload(TransformCF32::INPUTS_CFFT_NOISY_32_F32_ID,mgr); 64 ref.reload( TransformCF32::REF_CFFT_NOISY_32_F32_ID,mgr); 65 66 status=arm_cfft_init_f32(&varInstCfftF32,32); 67 68 this->ifft=0; 69 70 break; 71 72 case TransformCF32::TEST_CFFT_F32_20: 73 74 input.reload(TransformCF32::INPUTS_CIFFT_NOISY_32_F32_ID,mgr); 75 ref.reload( TransformCF32::INPUTS_CFFT_NOISY_32_F32_ID,mgr); 76 77 status=arm_cfft_init_f32(&varInstCfftF32,32); 78 79 this->ifft=1; 80 81 break; 82 83 case TransformCF32::TEST_CFFT_F32_3: 84 85 input.reload(TransformCF32::INPUTS_CFFT_NOISY_64_F32_ID,mgr); 86 ref.reload( TransformCF32::REF_CFFT_NOISY_64_F32_ID,mgr); 87 88 status=arm_cfft_init_f32(&varInstCfftF32,64); 89 90 91 this->ifft=0; 92 93 break; 94 95 case TransformCF32::TEST_CFFT_F32_21: 96 97 input.reload(TransformCF32::INPUTS_CIFFT_NOISY_64_F32_ID,mgr); 98 ref.reload( TransformCF32::INPUTS_CFFT_NOISY_64_F32_ID,mgr); 99 100 status=arm_cfft_init_f32(&varInstCfftF32,64); 101 102 103 this->ifft=1; 104 105 break; 106 107 case TransformCF32::TEST_CFFT_F32_4: 108 109 input.reload(TransformCF32::INPUTS_CFFT_NOISY_128_F32_ID,mgr); 110 ref.reload( TransformCF32::REF_CFFT_NOISY_128_F32_ID,mgr); 111 112 status=arm_cfft_init_f32(&varInstCfftF32,128); 113 114 115 this->ifft=0; 116 117 break; 118 119 case TransformCF32::TEST_CFFT_F32_22: 120 121 input.reload(TransformCF32::INPUTS_CIFFT_NOISY_128_F32_ID,mgr); 122 ref.reload( TransformCF32::INPUTS_CFFT_NOISY_128_F32_ID,mgr); 123 124 status=arm_cfft_init_f32(&varInstCfftF32,128); 125 126 127 this->ifft=1; 128 129 break; 130 131 case TransformCF32::TEST_CFFT_F32_5: 132 133 input.reload(TransformCF32::INPUTS_CFFT_NOISY_256_F32_ID,mgr); 134 ref.reload( TransformCF32::REF_CFFT_NOISY_256_F32_ID,mgr); 135 136 status=arm_cfft_init_f32(&varInstCfftF32,256); 137 138 139 this->ifft=0; 140 141 break; 142 143 case TransformCF32::TEST_CFFT_F32_23: 144 145 input.reload(TransformCF32::INPUTS_CIFFT_NOISY_256_F32_ID,mgr); 146 ref.reload( TransformCF32::INPUTS_CFFT_NOISY_256_F32_ID,mgr); 147 148 status=arm_cfft_init_f32(&varInstCfftF32,256); 149 150 151 this->ifft=1; 152 153 break; 154 155 case TransformCF32::TEST_CFFT_F32_6: 156 157 input.reload(TransformCF32::INPUTS_CFFT_NOISY_512_F32_ID,mgr); 158 ref.reload( TransformCF32::REF_CFFT_NOISY_512_F32_ID,mgr); 159 160 status=arm_cfft_init_f32(&varInstCfftF32,512); 161 162 163 this->ifft=0; 164 165 break; 166 167 case TransformCF32::TEST_CFFT_F32_24: 168 169 input.reload(TransformCF32::INPUTS_CIFFT_NOISY_512_F32_ID,mgr); 170 ref.reload( TransformCF32::INPUTS_CFFT_NOISY_512_F32_ID,mgr); 171 172 status=arm_cfft_init_f32(&varInstCfftF32,512); 173 174 175 this->ifft=1; 176 177 break; 178 179 case TransformCF32::TEST_CFFT_F32_7: 180 181 input.reload(TransformCF32::INPUTS_CFFT_NOISY_1024_F32_ID,mgr); 182 ref.reload( TransformCF32::REF_CFFT_NOISY_1024_F32_ID,mgr); 183 184 status=arm_cfft_init_f32(&varInstCfftF32,1024); 185 186 187 this->ifft=0; 188 189 break; 190 191 case TransformCF32::TEST_CFFT_F32_25: 192 193 input.reload(TransformCF32::INPUTS_CIFFT_NOISY_1024_F32_ID,mgr); 194 ref.reload( TransformCF32::INPUTS_CFFT_NOISY_1024_F32_ID,mgr); 195 196 status=arm_cfft_init_f32(&varInstCfftF32,1024); 197 198 199 this->ifft=1; 200 201 break; 202 203 case TransformCF32::TEST_CFFT_F32_8: 204 205 input.reload(TransformCF32::INPUTS_CFFT_NOISY_2048_F32_ID,mgr); 206 ref.reload( TransformCF32::REF_CFFT_NOISY_2048_F32_ID,mgr); 207 208 status=arm_cfft_init_f32(&varInstCfftF32,2048); 209 210 211 this->ifft=0; 212 213 break; 214 215 case TransformCF32::TEST_CFFT_F32_26: 216 217 input.reload(TransformCF32::INPUTS_CIFFT_NOISY_2048_F32_ID,mgr); 218 ref.reload( TransformCF32::INPUTS_CFFT_NOISY_2048_F32_ID,mgr); 219 220 status=arm_cfft_init_f32(&varInstCfftF32,2048); 221 222 223 this->ifft=1; 224 225 break; 226 227 case TransformCF32::TEST_CFFT_F32_9: 228 229 input.reload(TransformCF32::INPUTS_CFFT_NOISY_4096_F32_ID,mgr); 230 ref.reload( TransformCF32::REF_CFFT_NOISY_4096_F32_ID,mgr); 231 232 status=arm_cfft_init_f32(&varInstCfftF32,4096); 233 234 235 this->ifft=0; 236 237 break; 238 239 case TransformCF32::TEST_CFFT_F32_27: 240 241 input.reload(TransformCF32::INPUTS_CIFFT_NOISY_4096_F32_ID,mgr); 242 ref.reload( TransformCF32::INPUTS_CFFT_NOISY_4096_F32_ID,mgr); 243 244 status=arm_cfft_init_f32(&varInstCfftF32,4096); 245 246 247 this->ifft=1; 248 249 break; 250 251 /* STEP FUNCTIONS */ 252 253 case TransformCF32::TEST_CFFT_F32_10: 254 255 input.reload(TransformCF32::INPUTS_CFFT_STEP_16_F32_ID,mgr); 256 ref.reload( TransformCF32::REF_CFFT_STEP_16_F32_ID,mgr); 257 258 status=arm_cfft_init_f32(&varInstCfftF32,16); 259 260 this->ifft=0; 261 262 break; 263 264 case TransformCF32::TEST_CFFT_F32_28: 265 266 input.reload(TransformCF32::INPUTS_CIFFT_STEP_16_F32_ID,mgr); 267 ref.reload( TransformCF32::INPUTS_CFFT_STEP_16_F32_ID,mgr); 268 269 status=arm_cfft_init_f32(&varInstCfftF32,16); 270 271 272 this->ifft=1; 273 274 break; 275 276 case TransformCF32::TEST_CFFT_F32_11: 277 278 input.reload(TransformCF32::INPUTS_CFFT_STEP_32_F32_ID,mgr); 279 ref.reload( TransformCF32::REF_CFFT_STEP_32_F32_ID,mgr); 280 281 status=arm_cfft_init_f32(&varInstCfftF32,32); 282 283 284 this->ifft=0; 285 286 break; 287 288 case TransformCF32::TEST_CFFT_F32_29: 289 290 input.reload(TransformCF32::INPUTS_CIFFT_STEP_32_F32_ID,mgr); 291 ref.reload( TransformCF32::INPUTS_CFFT_STEP_32_F32_ID,mgr); 292 293 status=arm_cfft_init_f32(&varInstCfftF32,32); 294 295 296 this->ifft=1; 297 298 break; 299 300 case TransformCF32::TEST_CFFT_F32_12: 301 302 input.reload(TransformCF32::INPUTS_CFFT_STEP_64_F32_ID,mgr); 303 ref.reload( TransformCF32::REF_CFFT_STEP_64_F32_ID,mgr); 304 305 status=arm_cfft_init_f32(&varInstCfftF32,64); 306 307 308 this->ifft=0; 309 310 break; 311 312 case TransformCF32::TEST_CFFT_F32_30: 313 314 input.reload(TransformCF32::INPUTS_CIFFT_STEP_64_F32_ID,mgr); 315 ref.reload( TransformCF32::INPUTS_CFFT_STEP_64_F32_ID,mgr); 316 317 status=arm_cfft_init_f32(&varInstCfftF32,64); 318 319 320 this->ifft=1; 321 322 break; 323 324 case TransformCF32::TEST_CFFT_F32_13: 325 326 input.reload(TransformCF32::INPUTS_CFFT_STEP_128_F32_ID,mgr); 327 ref.reload( TransformCF32::REF_CFFT_STEP_128_F32_ID,mgr); 328 329 status=arm_cfft_init_f32(&varInstCfftF32,128); 330 331 332 this->ifft=0; 333 334 break; 335 336 case TransformCF32::TEST_CFFT_F32_31: 337 338 input.reload(TransformCF32::INPUTS_CIFFT_STEP_128_F32_ID,mgr); 339 ref.reload( TransformCF32::INPUTS_CFFT_STEP_128_F32_ID,mgr); 340 341 status=arm_cfft_init_f32(&varInstCfftF32,128); 342 343 344 this->ifft=1; 345 346 break; 347 348 case TransformCF32::TEST_CFFT_F32_14: 349 350 input.reload(TransformCF32::INPUTS_CFFT_STEP_256_F32_ID,mgr); 351 ref.reload( TransformCF32::REF_CFFT_STEP_256_F32_ID,mgr); 352 353 status=arm_cfft_init_f32(&varInstCfftF32,256); 354 355 356 this->ifft=0; 357 358 break; 359 360 case TransformCF32::TEST_CFFT_F32_32: 361 362 input.reload(TransformCF32::INPUTS_CIFFT_STEP_256_F32_ID,mgr); 363 ref.reload( TransformCF32::INPUTS_CFFT_STEP_256_F32_ID,mgr); 364 365 status=arm_cfft_init_f32(&varInstCfftF32,256); 366 367 368 this->ifft=1; 369 370 break; 371 372 case TransformCF32::TEST_CFFT_F32_15: 373 374 input.reload(TransformCF32::INPUTS_CFFT_STEP_512_F32_ID,mgr); 375 ref.reload( TransformCF32::REF_CFFT_STEP_512_F32_ID,mgr); 376 377 status=arm_cfft_init_f32(&varInstCfftF32,512); 378 379 380 this->ifft=0; 381 382 break; 383 384 case TransformCF32::TEST_CFFT_F32_33: 385 386 input.reload(TransformCF32::INPUTS_CIFFT_STEP_512_F32_ID,mgr); 387 ref.reload( TransformCF32::INPUTS_CFFT_STEP_512_F32_ID,mgr); 388 389 status=arm_cfft_init_f32(&varInstCfftF32,512); 390 391 392 this->ifft=1; 393 394 break; 395 396 case TransformCF32::TEST_CFFT_F32_16: 397 398 input.reload(TransformCF32::INPUTS_CFFT_STEP_1024_F32_ID,mgr); 399 ref.reload( TransformCF32::REF_CFFT_STEP_1024_F32_ID,mgr); 400 401 status=arm_cfft_init_f32(&varInstCfftF32,1024); 402 403 404 this->ifft=0; 405 406 break; 407 408 case TransformCF32::TEST_CFFT_F32_34: 409 410 input.reload(TransformCF32::INPUTS_CIFFT_STEP_1024_F32_ID,mgr); 411 ref.reload( TransformCF32::INPUTS_CFFT_STEP_1024_F32_ID,mgr); 412 413 status=arm_cfft_init_f32(&varInstCfftF32,1024); 414 415 416 this->ifft=1; 417 418 break; 419 420 case TransformCF32::TEST_CFFT_F32_17: 421 422 input.reload(TransformCF32::INPUTS_CFFT_STEP_2048_F32_ID,mgr); 423 ref.reload( TransformCF32::REF_CFFT_STEP_2048_F32_ID,mgr); 424 425 status=arm_cfft_init_f32(&varInstCfftF32,2048); 426 427 428 this->ifft=0; 429 430 break; 431 432 case TransformCF32::TEST_CFFT_F32_35: 433 434 input.reload(TransformCF32::INPUTS_CIFFT_STEP_2048_F32_ID,mgr); 435 ref.reload( TransformCF32::INPUTS_CFFT_STEP_2048_F32_ID,mgr); 436 437 status=arm_cfft_init_f32(&varInstCfftF32,2048); 438 439 440 this->ifft=1; 441 442 break; 443 444 case TransformCF32::TEST_CFFT_F32_18: 445 446 input.reload(TransformCF32::INPUTS_CFFT_STEP_4096_F32_ID,mgr); 447 ref.reload( TransformCF32::REF_CFFT_STEP_4096_F32_ID,mgr); 448 449 status=arm_cfft_init_f32(&varInstCfftF32,4096); 450 451 452 this->ifft=0; 453 454 break; 455 456 case TransformCF32::TEST_CFFT_F32_36: 457 458 input.reload(TransformCF32::INPUTS_CIFFT_STEP_4096_F32_ID,mgr); 459 ref.reload( TransformCF32::INPUTS_CFFT_STEP_4096_F32_ID,mgr); 460 461 status=arm_cfft_init_f32(&varInstCfftF32,4096); 462 463 464 this->ifft=1; 465 466 break; 467 468 469 470 } 471 outputfft.create(ref.nbSamples(),TransformCF32::OUTPUT_CFFT_F32_ID,mgr); 472 473 474 } 475 tearDown(Testing::testID_t id,Client::PatternMgr * mgr)476 void TransformCF32::tearDown(Testing::testID_t id,Client::PatternMgr *mgr) 477 { 478 (void)id; 479 outputfft.dump(mgr); 480 } 481