added phase calculation (dummy, always return 0) in imagery2abs. Added FFT_Re, FFT_Im dumping to the output file. Possible issue: phase of simple sin is -1.

This commit is contained in:
2025-10-09 13:26:20 +03:00
parent 73857920b4
commit aa5945e8b2
4 changed files with 65549 additions and 65543 deletions

BIN
C/FP_math

Binary file not shown.

View File

@ -10,21 +10,25 @@
#include "FFT_FP_realisation.h" #include "FFT_FP_realisation.h"
void imagery2abs(int64_t* inp, uint32_t inp_L, int64_t *out){ void imagery2abs(int64_t* inp, uint32_t inp_L, int64_t *out_abs, int64_t *out_phase){
printf("+++++++++++++++++++++\n"); printf("+++++++++++++++++++++\n");
printf("calculating abs^2\n"); printf("calculating abs^2\n");
for (uint32_t i = 0; i < inp_L; ++i){ for (uint32_t i = 0; i < inp_L; ++i){
int64_t re = inp[i*2]; int64_t re = inp[i*2];
int64_t im = inp[i*2 +1]; int64_t im = inp[i*2 +1];
int64_t val = (re * re + im * im) / FP_acc; int64_t val = (re * re + im * im) / FP_acc;
printf("%lld\n", (long long)val); int64_t phase = 0;
out[i] = val; printf("%lld, %ldd\n", (long long)val, (long long) phase);
out_abs[i] = val;
out_phase[i] = phase;
} }
} }
void data_generator(int64_t* X, int64_t* Y, uint32_t N){ void data_generator(int64_t* X, int64_t* Y, uint32_t N){
for (int i = 0; i < N; ++i){ for (int i = 0; i < N; ++i){
X[i] = (int64_t)i; X[i] = (int64_t)i;
Y[i] = lround(sin(((double)i)*2.0* PI/(N/10))*FP_acc); Y[i] = lround(sin(((double)i)*2.0* PI/(N/10))*FP_acc);
Y[i] += lround(cos(((double)i)*2.0* PI/(N/20))*FP_acc);
Y[i] += 1*FP_acc; Y[i] += 1*FP_acc;
} }
} }
@ -35,6 +39,8 @@ void main(){
int64_t data_Y[DATA_L] = {0,}; int64_t data_Y[DATA_L] = {0,};
int64_t data_res_FFT_imag[DATA_L*2] = {0,}; int64_t data_res_FFT_imag[DATA_L*2] = {0,};
int64_t data_res_FFT_abs[DATA_L] = {0,}; int64_t data_res_FFT_abs[DATA_L] = {0,};
int64_t data_res_FFT_phase[DATA_L] = {0,};
fft_fp_prepare(); fft_fp_prepare();
@ -44,13 +50,13 @@ void main(){
FFT_fp(data_Y, DATA_L, data_res_FFT_imag); FFT_fp(data_Y, DATA_L, data_res_FFT_imag);
imagery2abs(data_res_FFT_imag, DATA_L, data_res_FFT_abs); imagery2abs(data_res_FFT_imag, DATA_L, data_res_FFT_abs, data_res_FFT_phase);
FILE *logfile_ptr; FILE *logfile_ptr;
logfile_ptr = fopen(logfilename, "w"); logfile_ptr = fopen(logfilename, "w");
fprintf(logfile_ptr, "X, Y, FFT\n"); fprintf(logfile_ptr, "X, Y, FFT_val, FFT_phase, FFT_Re, FFT_Im\n");
for (uint32_t i = 0; i < DATA_L; ++i){ for (uint32_t i = 0; i < DATA_L; ++i){
fprintf(logfile_ptr, "%lld, %lg, %lg \n", (long long)data_X[i], ((double)data_Y[i])/(double)FP_acc , (double)data_res_FFT_abs[i]/(double)FP_acc); fprintf(logfile_ptr, "%lld, %lg, %lg, %lg, %lg, %lg\n", (long long)data_X[i], ((double)data_Y[i])/(double)FP_acc , (double)data_res_FFT_abs[i]/(double)FP_acc, (double)data_res_FFT_phase[i]/(double)FP_acc, (double)data_res_FFT_imag[2*i]/(double)FP_acc, (double)data_res_FFT_imag[2*i +1]/(double)FP_acc );
} }
fclose(logfile_ptr); fclose(logfile_ptr);
} }

Binary file not shown.

131074
C/tmp

File diff suppressed because it is too large Load Diff