diff --git a/example/main.cpp b/example/main.cpp index f01923061e4fe7c5c3c9bd70fe1caf194260dcd6..ab8a77c0bb607d09fad75e8de3009768d8fdab95 100644 --- a/example/main.cpp +++ b/example/main.cpp @@ -393,6 +393,7 @@ int runTest(clFFT_Dim3 n, int batchSize, clFFT_Direction dir, clFFT_Dimension di #endif int length = n.x * n.y * n.z * batchSize; + float normFactor = 1.0 / (n.x * n.y * n.z); clFFT_SplitComplex data_i_split = (clFFT_SplitComplex) { NULL, NULL }; clFFT_SplitComplex data_cl_split = (clFFT_SplitComplex) { NULL, NULL }; @@ -613,6 +614,26 @@ int runTest(clFFT_Dim3 n, int batchSize, clFFT_Direction dir, clFFT_Dimension di free(result_split.real); free(result_split.imag); } +#else + log_info("Output power spectrum for manual validation (normalized):\n"); + + printf("n: %u, length: %i\n", n.x * n.y * n.z, length); + if(dataFormat != clFFT_SplitComplexFormat) { + clFFT_SplitComplex result_split; + result_split.real = (float *) malloc(length*sizeof(float)); + result_split.imag = (float *) malloc(length*sizeof(float)); + convertInterleavedToSplit(&result_split, data_cl, length); + for(int i = 0; i < length; ++i) { + printf("%f\n", normFactor * (result_split.real[i]*result_split.real[i] + result_split.imag[i]*result_split.imag[i])); + } + free(result_split.real); + free(result_split.imag); + } + else { + for(int i = 0; i < length; ++i) { + printf("%f\n", normFactor * (data_cl_split.real[i]*data_cl_split.real[i] + data_cl_split.imag[i]*data_cl_split.imag[i])); + } + } #endif cleanup: