1 #include "TransformCF16.h" 2 #include <stdio.h> 3 #include "Error.h" 4 #include "Test.h" 5 6 #define SNR_THRESHOLD 58 7 test_cfft_f16()8 void TransformCF16::test_cfft_f16() 9 { 10 const float16_t *inp = input.ptr(); 11 12 float16_t *outfftp = outputfft.ptr(); 13 14 memcpy(outfftp,inp,sizeof(float16_t)*input.nbSamples()); 15 16 ASSERT_TRUE(status == ARM_MATH_SUCCESS); 17 18 arm_cfft_f16( 19 &(this->varInstCfftF16), 20 outfftp, 21 this->ifft, 22 1); 23 24 25 26 ASSERT_SNR(outputfft,ref,(float16_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 TransformCF16::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr) 34 { 35 36 (void)paramsArgs; 37 38 switch(id) 39 { 40 case TransformCF16::TEST_CFFT_F16_1: 41 42 input.reload(TransformCF16::INPUTS_CFFT_NOISY_16_F16_ID,mgr); 43 ref.reload( TransformCF16::REF_CFFT_NOISY_16_F16_ID,mgr); 44 45 status=arm_cfft_init_f16(&varInstCfftF16,16); 46 47 this->ifft=0; 48 49 break; 50 51 case TransformCF16::TEST_CFFT_F16_19: 52 53 input.reload(TransformCF16::INPUTS_CIFFT_NOISY_16_F16_ID,mgr); 54 ref.reload( TransformCF16::INPUTS_CFFT_NOISY_16_F16_ID,mgr); 55 56 status=arm_cfft_init_f16(&varInstCfftF16,16); 57 58 this->ifft=1; 59 60 break; 61 62 case TransformCF16::TEST_CFFT_F16_2: 63 64 input.reload(TransformCF16::INPUTS_CFFT_NOISY_32_F16_ID,mgr); 65 ref.reload( TransformCF16::REF_CFFT_NOISY_32_F16_ID,mgr); 66 67 status=arm_cfft_init_f16(&varInstCfftF16,32); 68 69 this->ifft=0; 70 71 break; 72 73 case TransformCF16::TEST_CFFT_F16_20: 74 75 input.reload(TransformCF16::INPUTS_CIFFT_NOISY_32_F16_ID,mgr); 76 ref.reload( TransformCF16::INPUTS_CFFT_NOISY_32_F16_ID,mgr); 77 78 status=arm_cfft_init_f16(&varInstCfftF16,32); 79 80 this->ifft=1; 81 82 break; 83 84 case TransformCF16::TEST_CFFT_F16_3: 85 86 input.reload(TransformCF16::INPUTS_CFFT_NOISY_64_F16_ID,mgr); 87 ref.reload( TransformCF16::REF_CFFT_NOISY_64_F16_ID,mgr); 88 89 status=arm_cfft_init_f16(&varInstCfftF16,64); 90 91 92 this->ifft=0; 93 94 break; 95 96 case TransformCF16::TEST_CFFT_F16_21: 97 98 input.reload(TransformCF16::INPUTS_CIFFT_NOISY_64_F16_ID,mgr); 99 ref.reload( TransformCF16::INPUTS_CFFT_NOISY_64_F16_ID,mgr); 100 101 status=arm_cfft_init_f16(&varInstCfftF16,64); 102 103 104 this->ifft=1; 105 106 break; 107 108 case TransformCF16::TEST_CFFT_F16_4: 109 110 input.reload(TransformCF16::INPUTS_CFFT_NOISY_128_F16_ID,mgr); 111 ref.reload( TransformCF16::REF_CFFT_NOISY_128_F16_ID,mgr); 112 113 status=arm_cfft_init_f16(&varInstCfftF16,128); 114 115 116 this->ifft=0; 117 118 break; 119 120 case TransformCF16::TEST_CFFT_F16_22: 121 122 input.reload(TransformCF16::INPUTS_CIFFT_NOISY_128_F16_ID,mgr); 123 ref.reload( TransformCF16::INPUTS_CFFT_NOISY_128_F16_ID,mgr); 124 125 status=arm_cfft_init_f16(&varInstCfftF16,128); 126 127 128 this->ifft=1; 129 130 break; 131 132 case TransformCF16::TEST_CFFT_F16_5: 133 134 input.reload(TransformCF16::INPUTS_CFFT_NOISY_256_F16_ID,mgr); 135 ref.reload( TransformCF16::REF_CFFT_NOISY_256_F16_ID,mgr); 136 137 status=arm_cfft_init_f16(&varInstCfftF16,256); 138 139 140 this->ifft=0; 141 142 break; 143 144 case TransformCF16::TEST_CFFT_F16_23: 145 146 input.reload(TransformCF16::INPUTS_CIFFT_NOISY_256_F16_ID,mgr); 147 ref.reload( TransformCF16::INPUTS_CFFT_NOISY_256_F16_ID,mgr); 148 149 status=arm_cfft_init_f16(&varInstCfftF16,256); 150 151 152 this->ifft=1; 153 154 break; 155 156 case TransformCF16::TEST_CFFT_F16_6: 157 158 input.reload(TransformCF16::INPUTS_CFFT_NOISY_512_F16_ID,mgr); 159 ref.reload( TransformCF16::REF_CFFT_NOISY_512_F16_ID,mgr); 160 161 status=arm_cfft_init_f16(&varInstCfftF16,512); 162 163 164 this->ifft=0; 165 166 break; 167 168 case TransformCF16::TEST_CFFT_F16_24: 169 170 input.reload(TransformCF16::INPUTS_CIFFT_NOISY_512_F16_ID,mgr); 171 ref.reload( TransformCF16::INPUTS_CFFT_NOISY_512_F16_ID,mgr); 172 173 status=arm_cfft_init_f16(&varInstCfftF16,512); 174 175 176 this->ifft=1; 177 178 break; 179 180 case TransformCF16::TEST_CFFT_F16_7: 181 182 input.reload(TransformCF16::INPUTS_CFFT_NOISY_1024_F16_ID,mgr); 183 ref.reload( TransformCF16::REF_CFFT_NOISY_1024_F16_ID,mgr); 184 185 status=arm_cfft_init_f16(&varInstCfftF16,1024); 186 187 188 this->ifft=0; 189 190 break; 191 192 case TransformCF16::TEST_CFFT_F16_25: 193 194 input.reload(TransformCF16::INPUTS_CIFFT_NOISY_1024_F16_ID,mgr); 195 ref.reload( TransformCF16::INPUTS_CFFT_NOISY_1024_F16_ID,mgr); 196 197 status=arm_cfft_init_f16(&varInstCfftF16,1024); 198 199 200 this->ifft=1; 201 202 break; 203 204 case TransformCF16::TEST_CFFT_F16_8: 205 206 input.reload(TransformCF16::INPUTS_CFFT_NOISY_2048_F16_ID,mgr); 207 ref.reload( TransformCF16::REF_CFFT_NOISY_2048_F16_ID,mgr); 208 209 status=arm_cfft_init_f16(&varInstCfftF16,2048); 210 211 212 this->ifft=0; 213 214 break; 215 216 case TransformCF16::TEST_CFFT_F16_26: 217 218 input.reload(TransformCF16::INPUTS_CIFFT_NOISY_2048_F16_ID,mgr); 219 ref.reload( TransformCF16::INPUTS_CFFT_NOISY_2048_F16_ID,mgr); 220 221 status=arm_cfft_init_f16(&varInstCfftF16,2048); 222 223 224 this->ifft=1; 225 226 break; 227 228 case TransformCF16::TEST_CFFT_F16_9: 229 230 input.reload(TransformCF16::INPUTS_CFFT_NOISY_4096_F16_ID,mgr); 231 ref.reload( TransformCF16::REF_CFFT_NOISY_4096_F16_ID,mgr); 232 233 status=arm_cfft_init_f16(&varInstCfftF16,4096); 234 235 236 this->ifft=0; 237 238 break; 239 240 case TransformCF16::TEST_CFFT_F16_27: 241 242 input.reload(TransformCF16::INPUTS_CIFFT_NOISY_4096_F16_ID,mgr); 243 ref.reload( TransformCF16::INPUTS_CFFT_NOISY_4096_F16_ID,mgr); 244 245 status=arm_cfft_init_f16(&varInstCfftF16,4096); 246 247 248 this->ifft=1; 249 250 break; 251 252 /* STEP FUNCTIONS */ 253 254 case TransformCF16::TEST_CFFT_F16_10: 255 256 input.reload(TransformCF16::INPUTS_CFFT_STEP_16_F16_ID,mgr); 257 ref.reload( TransformCF16::REF_CFFT_STEP_16_F16_ID,mgr); 258 259 status=arm_cfft_init_f16(&varInstCfftF16,16); 260 261 this->ifft=0; 262 263 break; 264 265 case TransformCF16::TEST_CFFT_F16_28: 266 267 input.reload(TransformCF16::INPUTS_CIFFT_STEP_16_F16_ID,mgr); 268 ref.reload( TransformCF16::INPUTS_CFFT_STEP_16_F16_ID,mgr); 269 270 status=arm_cfft_init_f16(&varInstCfftF16,16); 271 272 273 this->ifft=1; 274 275 break; 276 277 case TransformCF16::TEST_CFFT_F16_11: 278 279 input.reload(TransformCF16::INPUTS_CFFT_STEP_32_F16_ID,mgr); 280 ref.reload( TransformCF16::REF_CFFT_STEP_32_F16_ID,mgr); 281 282 status=arm_cfft_init_f16(&varInstCfftF16,32); 283 284 285 this->ifft=0; 286 287 break; 288 289 case TransformCF16::TEST_CFFT_F16_29: 290 291 input.reload(TransformCF16::INPUTS_CIFFT_STEP_32_F16_ID,mgr); 292 ref.reload( TransformCF16::INPUTS_CFFT_STEP_32_F16_ID,mgr); 293 294 status=arm_cfft_init_f16(&varInstCfftF16,32); 295 296 297 this->ifft=1; 298 299 break; 300 301 case TransformCF16::TEST_CFFT_F16_12: 302 303 input.reload(TransformCF16::INPUTS_CFFT_STEP_64_F16_ID,mgr); 304 ref.reload( TransformCF16::REF_CFFT_STEP_64_F16_ID,mgr); 305 306 status=arm_cfft_init_f16(&varInstCfftF16,64); 307 308 309 this->ifft=0; 310 311 break; 312 313 case TransformCF16::TEST_CFFT_F16_30: 314 315 input.reload(TransformCF16::INPUTS_CIFFT_STEP_64_F16_ID,mgr); 316 ref.reload( TransformCF16::INPUTS_CFFT_STEP_64_F16_ID,mgr); 317 318 status=arm_cfft_init_f16(&varInstCfftF16,64); 319 320 321 this->ifft=1; 322 323 break; 324 325 case TransformCF16::TEST_CFFT_F16_13: 326 327 input.reload(TransformCF16::INPUTS_CFFT_STEP_128_F16_ID,mgr); 328 ref.reload( TransformCF16::REF_CFFT_STEP_128_F16_ID,mgr); 329 330 status=arm_cfft_init_f16(&varInstCfftF16,128); 331 332 333 this->ifft=0; 334 335 break; 336 337 case TransformCF16::TEST_CFFT_F16_31: 338 339 input.reload(TransformCF16::INPUTS_CIFFT_STEP_128_F16_ID,mgr); 340 ref.reload( TransformCF16::INPUTS_CFFT_STEP_128_F16_ID,mgr); 341 342 status=arm_cfft_init_f16(&varInstCfftF16,128); 343 344 345 this->ifft=1; 346 347 break; 348 349 case TransformCF16::TEST_CFFT_F16_14: 350 351 input.reload(TransformCF16::INPUTS_CFFT_STEP_256_F16_ID,mgr); 352 ref.reload( TransformCF16::REF_CFFT_STEP_256_F16_ID,mgr); 353 354 status=arm_cfft_init_f16(&varInstCfftF16,256); 355 356 357 this->ifft=0; 358 359 break; 360 361 case TransformCF16::TEST_CFFT_F16_32: 362 363 input.reload(TransformCF16::INPUTS_CIFFT_STEP_256_F16_ID,mgr); 364 ref.reload( TransformCF16::INPUTS_CFFT_STEP_256_F16_ID,mgr); 365 366 status=arm_cfft_init_f16(&varInstCfftF16,256); 367 368 369 this->ifft=1; 370 371 break; 372 373 case TransformCF16::TEST_CFFT_F16_15: 374 375 input.reload(TransformCF16::INPUTS_CFFT_STEP_512_F16_ID,mgr); 376 ref.reload( TransformCF16::REF_CFFT_STEP_512_F16_ID,mgr); 377 378 status=arm_cfft_init_f16(&varInstCfftF16,512); 379 380 381 this->ifft=0; 382 383 break; 384 385 case TransformCF16::TEST_CFFT_F16_33: 386 387 input.reload(TransformCF16::INPUTS_CIFFT_STEP_512_F16_ID,mgr); 388 ref.reload( TransformCF16::INPUTS_CFFT_STEP_512_F16_ID,mgr); 389 390 status=arm_cfft_init_f16(&varInstCfftF16,512); 391 392 393 this->ifft=1; 394 395 break; 396 397 case TransformCF16::TEST_CFFT_F16_16: 398 399 input.reload(TransformCF16::INPUTS_CFFT_STEP_1024_F16_ID,mgr); 400 ref.reload( TransformCF16::REF_CFFT_STEP_1024_F16_ID,mgr); 401 402 status=arm_cfft_init_f16(&varInstCfftF16,1024); 403 404 405 this->ifft=0; 406 407 break; 408 409 case TransformCF16::TEST_CFFT_F16_34: 410 411 input.reload(TransformCF16::INPUTS_CIFFT_STEP_1024_F16_ID,mgr); 412 ref.reload( TransformCF16::INPUTS_CFFT_STEP_1024_F16_ID,mgr); 413 414 status=arm_cfft_init_f16(&varInstCfftF16,1024); 415 416 417 this->ifft=1; 418 419 break; 420 421 case TransformCF16::TEST_CFFT_F16_17: 422 423 input.reload(TransformCF16::INPUTS_CFFT_STEP_2048_F16_ID,mgr); 424 ref.reload( TransformCF16::REF_CFFT_STEP_2048_F16_ID,mgr); 425 426 status=arm_cfft_init_f16(&varInstCfftF16,2048); 427 428 429 this->ifft=0; 430 431 break; 432 433 case TransformCF16::TEST_CFFT_F16_35: 434 435 input.reload(TransformCF16::INPUTS_CIFFT_STEP_2048_F16_ID,mgr); 436 ref.reload( TransformCF16::INPUTS_CFFT_STEP_2048_F16_ID,mgr); 437 438 status=arm_cfft_init_f16(&varInstCfftF16,2048); 439 440 441 this->ifft=1; 442 443 break; 444 445 case TransformCF16::TEST_CFFT_F16_18: 446 447 input.reload(TransformCF16::INPUTS_CFFT_STEP_4096_F16_ID,mgr); 448 ref.reload( TransformCF16::REF_CFFT_STEP_4096_F16_ID,mgr); 449 450 status=arm_cfft_init_f16(&varInstCfftF16,4096); 451 452 453 this->ifft=0; 454 455 break; 456 457 case TransformCF16::TEST_CFFT_F16_36: 458 459 input.reload(TransformCF16::INPUTS_CIFFT_STEP_4096_F16_ID,mgr); 460 ref.reload( TransformCF16::INPUTS_CFFT_STEP_4096_F16_ID,mgr); 461 462 status=arm_cfft_init_f16(&varInstCfftF16,4096); 463 464 465 this->ifft=1; 466 467 break; 468 469 470 471 } 472 outputfft.create(ref.nbSamples(),TransformCF16::OUTPUT_CFFT_F16_ID,mgr); 473 474 475 } 476 tearDown(Testing::testID_t id,Client::PatternMgr * mgr)477 void TransformCF16::tearDown(Testing::testID_t id,Client::PatternMgr *mgr) 478 { 479 (void)id; 480 outputfft.dump(mgr); 481 } 482