1 #include "TransformRF16.h" 2 #include <stdio.h> 3 #include "Error.h" 4 #include "Test.h" 5 6 7 #define SNR_THRESHOLD 58 8 9 10 test_rfft_f16()11 void TransformRF16::test_rfft_f16() 12 { 13 float16_t *inp = input.ptr(); 14 15 float16_t *tmp = inputchanged.ptr(); 16 17 float16_t *outp = outputfft.ptr(); 18 19 memcpy(tmp,inp,sizeof(float16_t)*input.nbSamples()); 20 21 arm_rfft_fast_f16( 22 &this->instRfftF16, 23 tmp, 24 outp, 25 this->ifft); 26 27 ASSERT_SNR(outputfft,ref,(float16_t)SNR_THRESHOLD); 28 ASSERT_EMPTY_TAIL(outputfft); 29 30 } 31 32 setUp(Testing::testID_t id,std::vector<Testing::param_t> & paramsArgs,Client::PatternMgr * mgr)33 void TransformRF16::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr) 34 { 35 36 37 (void)paramsArgs; 38 39 switch(id) 40 { 41 42 case TransformRF16::TEST_RFFT_F16_1: 43 44 input.reload(TransformRF16::INPUTS_RFFT_NOISY_32_F16_ID,mgr); 45 ref.reload( TransformRF16::REF_RFFT_NOISY_32_F16_ID,mgr); 46 47 arm_rfft_fast_init_f16(&this->instRfftF16 ,32); 48 49 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 50 51 this->ifft=0; 52 53 break; 54 55 case TransformRF16::TEST_RFFT_F16_17: 56 57 input.reload(TransformRF16::INPUTS_RIFFT_NOISY_32_F16_ID,mgr); 58 ref.reload( TransformRF16::INPUTS_RFFT_NOISY_32_F16_ID,mgr); 59 60 arm_rfft_fast_init_f16(&this->instRfftF16 ,32); 61 62 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 63 64 this->ifft=1; 65 66 break; 67 68 case TransformRF16::TEST_RFFT_F16_2: 69 70 input.reload(TransformRF16::INPUTS_RFFT_NOISY_64_F16_ID,mgr); 71 ref.reload( TransformRF16::REF_RFFT_NOISY_64_F16_ID,mgr); 72 73 arm_rfft_fast_init_f16(&this->instRfftF16 ,64); 74 75 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 76 77 this->ifft=0; 78 79 break; 80 81 case TransformRF16::TEST_RFFT_F16_18: 82 83 input.reload(TransformRF16::INPUTS_RIFFT_NOISY_64_F16_ID,mgr); 84 ref.reload( TransformRF16::INPUTS_RFFT_NOISY_64_F16_ID,mgr); 85 86 arm_rfft_fast_init_f16(&this->instRfftF16 ,64); 87 88 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 89 90 this->ifft=1; 91 92 break; 93 94 case TransformRF16::TEST_RFFT_F16_3: 95 96 input.reload(TransformRF16::INPUTS_RFFT_NOISY_128_F16_ID,mgr); 97 ref.reload( TransformRF16::REF_RFFT_NOISY_128_F16_ID,mgr); 98 99 arm_rfft_fast_init_f16(&this->instRfftF16 ,128); 100 101 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 102 103 this->ifft=0; 104 105 break; 106 107 case TransformRF16::TEST_RFFT_F16_19: 108 109 input.reload(TransformRF16::INPUTS_RIFFT_NOISY_128_F16_ID,mgr); 110 ref.reload( TransformRF16::INPUTS_RFFT_NOISY_128_F16_ID,mgr); 111 112 arm_rfft_fast_init_f16(&this->instRfftF16 ,128); 113 114 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 115 116 this->ifft=1; 117 118 break; 119 120 case TransformRF16::TEST_RFFT_F16_4: 121 122 input.reload(TransformRF16::INPUTS_RFFT_NOISY_256_F16_ID,mgr); 123 ref.reload( TransformRF16::REF_RFFT_NOISY_256_F16_ID,mgr); 124 125 arm_rfft_fast_init_f16(&this->instRfftF16 ,256); 126 127 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 128 129 this->ifft=0; 130 131 break; 132 133 case TransformRF16::TEST_RFFT_F16_20: 134 135 input.reload(TransformRF16::INPUTS_RIFFT_NOISY_256_F16_ID,mgr); 136 ref.reload( TransformRF16::INPUTS_RFFT_NOISY_256_F16_ID,mgr); 137 138 arm_rfft_fast_init_f16(&this->instRfftF16 ,256); 139 140 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 141 142 this->ifft=1; 143 144 break; 145 146 case TransformRF16::TEST_RFFT_F16_5: 147 148 input.reload(TransformRF16::INPUTS_RFFT_NOISY_512_F16_ID,mgr); 149 ref.reload( TransformRF16::REF_RFFT_NOISY_512_F16_ID,mgr); 150 151 arm_rfft_fast_init_f16(&this->instRfftF16 ,512); 152 153 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 154 155 this->ifft=0; 156 157 break; 158 159 case TransformRF16::TEST_RFFT_F16_21: 160 161 input.reload(TransformRF16::INPUTS_RIFFT_NOISY_512_F16_ID,mgr); 162 ref.reload( TransformRF16::INPUTS_RFFT_NOISY_512_F16_ID,mgr); 163 164 arm_rfft_fast_init_f16(&this->instRfftF16 ,512); 165 166 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 167 168 this->ifft=1; 169 170 break; 171 172 case TransformRF16::TEST_RFFT_F16_6: 173 174 input.reload(TransformRF16::INPUTS_RFFT_NOISY_1024_F16_ID,mgr); 175 ref.reload( TransformRF16::REF_RFFT_NOISY_1024_F16_ID,mgr); 176 177 arm_rfft_fast_init_f16(&this->instRfftF16 ,1024); 178 179 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 180 181 this->ifft=0; 182 183 break; 184 185 case TransformRF16::TEST_RFFT_F16_22: 186 187 input.reload(TransformRF16::INPUTS_RIFFT_NOISY_1024_F16_ID,mgr); 188 ref.reload( TransformRF16::INPUTS_RFFT_NOISY_1024_F16_ID,mgr); 189 190 arm_rfft_fast_init_f16(&this->instRfftF16 ,1024); 191 192 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 193 194 this->ifft=1; 195 196 break; 197 198 case TransformRF16::TEST_RFFT_F16_7: 199 200 input.reload(TransformRF16::INPUTS_RFFT_NOISY_2048_F16_ID,mgr); 201 ref.reload( TransformRF16::REF_RFFT_NOISY_2048_F16_ID,mgr); 202 203 arm_rfft_fast_init_f16(&this->instRfftF16 ,2048); 204 205 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 206 207 this->ifft=0; 208 209 break; 210 211 case TransformRF16::TEST_RFFT_F16_23: 212 213 input.reload(TransformRF16::INPUTS_RIFFT_NOISY_2048_F16_ID,mgr); 214 ref.reload( TransformRF16::INPUTS_RFFT_NOISY_2048_F16_ID,mgr); 215 216 arm_rfft_fast_init_f16(&this->instRfftF16 ,2048); 217 218 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 219 220 this->ifft=1; 221 222 break; 223 224 case TransformRF16::TEST_RFFT_F16_8: 225 226 input.reload(TransformRF16::INPUTS_RFFT_NOISY_4096_F16_ID,mgr); 227 ref.reload( TransformRF16::REF_RFFT_NOISY_4096_F16_ID,mgr); 228 229 arm_rfft_fast_init_f16(&this->instRfftF16 ,4096); 230 231 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 232 233 this->ifft=0; 234 235 break; 236 237 case TransformRF16::TEST_RFFT_F16_24: 238 239 input.reload(TransformRF16::INPUTS_RIFFT_NOISY_4096_F16_ID,mgr); 240 ref.reload( TransformRF16::INPUTS_RFFT_NOISY_4096_F16_ID,mgr); 241 242 arm_rfft_fast_init_f16(&this->instRfftF16 ,4096); 243 244 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 245 246 this->ifft=1; 247 248 break; 249 250 /* STEP FUNCTIONS */ 251 252 case TransformRF16::TEST_RFFT_F16_9: 253 254 input.reload(TransformRF16::INPUTS_RFFT_STEP_32_F16_ID,mgr); 255 ref.reload( TransformRF16::REF_RFFT_STEP_32_F16_ID,mgr); 256 257 arm_rfft_fast_init_f16(&this->instRfftF16 ,32); 258 259 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 260 261 this->ifft=0; 262 263 break; 264 265 case TransformRF16::TEST_RFFT_F16_25: 266 267 input.reload(TransformRF16::INPUTS_RIFFT_STEP_32_F16_ID,mgr); 268 ref.reload( TransformRF16::INPUTS_RFFT_STEP_32_F16_ID,mgr); 269 270 arm_rfft_fast_init_f16(&this->instRfftF16 ,32); 271 272 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 273 274 this->ifft=1; 275 276 break; 277 278 case TransformRF16::TEST_RFFT_F16_10: 279 280 input.reload(TransformRF16::INPUTS_RFFT_STEP_64_F16_ID,mgr); 281 ref.reload( TransformRF16::REF_RFFT_STEP_64_F16_ID,mgr); 282 283 arm_rfft_fast_init_f16(&this->instRfftF16 ,64); 284 285 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 286 287 this->ifft=0; 288 289 break; 290 291 case TransformRF16::TEST_RFFT_F16_26: 292 293 input.reload(TransformRF16::INPUTS_RIFFT_STEP_64_F16_ID,mgr); 294 ref.reload( TransformRF16::INPUTS_RFFT_STEP_64_F16_ID,mgr); 295 296 arm_rfft_fast_init_f16(&this->instRfftF16 ,64); 297 298 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 299 300 this->ifft=1; 301 302 break; 303 304 case TransformRF16::TEST_RFFT_F16_11: 305 306 input.reload(TransformRF16::INPUTS_RFFT_STEP_128_F16_ID,mgr); 307 ref.reload( TransformRF16::REF_RFFT_STEP_128_F16_ID,mgr); 308 309 arm_rfft_fast_init_f16(&this->instRfftF16 ,128); 310 311 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 312 this->ifft=0; 313 314 break; 315 316 case TransformRF16::TEST_RFFT_F16_27: 317 318 input.reload(TransformRF16::INPUTS_RIFFT_STEP_128_F16_ID,mgr); 319 ref.reload( TransformRF16::INPUTS_RFFT_STEP_128_F16_ID,mgr); 320 321 arm_rfft_fast_init_f16(&this->instRfftF16 ,128); 322 323 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 324 325 this->ifft=1; 326 327 break; 328 329 case TransformRF16::TEST_RFFT_F16_12: 330 331 input.reload(TransformRF16::INPUTS_RFFT_STEP_256_F16_ID,mgr); 332 ref.reload( TransformRF16::REF_RFFT_STEP_256_F16_ID,mgr); 333 334 arm_rfft_fast_init_f16(&this->instRfftF16 ,256); 335 336 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 337 338 this->ifft=0; 339 340 break; 341 342 case TransformRF16::TEST_RFFT_F16_28: 343 344 input.reload(TransformRF16::INPUTS_RIFFT_STEP_256_F16_ID,mgr); 345 ref.reload( TransformRF16::INPUTS_RFFT_STEP_256_F16_ID,mgr); 346 347 arm_rfft_fast_init_f16(&this->instRfftF16 ,256); 348 349 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 350 351 this->ifft=1; 352 353 break; 354 355 case TransformRF16::TEST_RFFT_F16_13: 356 357 input.reload(TransformRF16::INPUTS_RFFT_STEP_512_F16_ID,mgr); 358 ref.reload( TransformRF16::REF_RFFT_STEP_512_F16_ID,mgr); 359 360 arm_rfft_fast_init_f16(&this->instRfftF16 ,512); 361 362 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 363 364 this->ifft=0; 365 366 break; 367 368 case TransformRF16::TEST_RFFT_F16_29: 369 370 input.reload(TransformRF16::INPUTS_RIFFT_STEP_512_F16_ID,mgr); 371 ref.reload( TransformRF16::INPUTS_RFFT_STEP_512_F16_ID,mgr); 372 373 arm_rfft_fast_init_f16(&this->instRfftF16 ,512); 374 375 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 376 377 this->ifft=1; 378 379 break; 380 381 case TransformRF16::TEST_RFFT_F16_14: 382 383 input.reload(TransformRF16::INPUTS_RFFT_STEP_1024_F16_ID,mgr); 384 ref.reload( TransformRF16::REF_RFFT_STEP_1024_F16_ID,mgr); 385 386 arm_rfft_fast_init_f16(&this->instRfftF16 ,1024); 387 388 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 389 390 this->ifft=0; 391 392 break; 393 394 case TransformRF16::TEST_RFFT_F16_30: 395 396 input.reload(TransformRF16::INPUTS_RIFFT_STEP_1024_F16_ID,mgr); 397 ref.reload( TransformRF16::INPUTS_RFFT_STEP_1024_F16_ID,mgr); 398 399 arm_rfft_fast_init_f16(&this->instRfftF16 ,1024); 400 401 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 402 403 this->ifft=1; 404 405 break; 406 407 case TransformRF16::TEST_RFFT_F16_15: 408 409 input.reload(TransformRF16::INPUTS_RFFT_STEP_2048_F16_ID,mgr); 410 ref.reload( TransformRF16::REF_RFFT_STEP_2048_F16_ID,mgr); 411 412 arm_rfft_fast_init_f16(&this->instRfftF16 ,2048); 413 414 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 415 416 this->ifft=0; 417 418 break; 419 420 case TransformRF16::TEST_RFFT_F16_31: 421 422 input.reload(TransformRF16::INPUTS_RIFFT_STEP_2048_F16_ID,mgr); 423 ref.reload( TransformRF16::INPUTS_RFFT_STEP_2048_F16_ID,mgr); 424 425 arm_rfft_fast_init_f16(&this->instRfftF16 ,2048); 426 427 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 428 429 this->ifft=1; 430 431 break; 432 433 case TransformRF16::TEST_RFFT_F16_16: 434 435 input.reload(TransformRF16::INPUTS_RFFT_STEP_4096_F16_ID,mgr); 436 ref.reload( TransformRF16::REF_RFFT_STEP_4096_F16_ID,mgr); 437 438 arm_rfft_fast_init_f16(&this->instRfftF16 ,4096); 439 440 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 441 442 this->ifft=0; 443 444 break; 445 446 case TransformRF16::TEST_RFFT_F16_32: 447 448 input.reload(TransformRF16::INPUTS_RIFFT_STEP_4096_F16_ID,mgr); 449 ref.reload( TransformRF16::INPUTS_RFFT_STEP_4096_F16_ID,mgr); 450 451 arm_rfft_fast_init_f16(&this->instRfftF16 ,4096); 452 453 inputchanged.create(input.nbSamples(),TransformRF16::TEMP_F16_ID,mgr); 454 455 this->ifft=1; 456 457 break; 458 459 460 461 } 462 463 464 outputfft.create(ref.nbSamples(),TransformRF16::OUTPUT_RFFT_F16_ID,mgr); 465 466 467 } 468 tearDown(Testing::testID_t id,Client::PatternMgr * mgr)469 void TransformRF16::tearDown(Testing::testID_t id,Client::PatternMgr *mgr) 470 { 471 (void)id; 472 outputfft.dump(mgr); 473 } 474