Salve, una domanda: ho creato questa funzioncina che fa la convoluzione di due array di uguale lunghezza (101 elementi). Vedete errori palesi? Perchè non so se funziona... A me non sembra avere problemi, così ad occhio.
codice:
double* calculate_conv (double energy_spectrum1[], double energy_spectrum2[]) {
unsigned npts1 = 101;
unsigned npts2 = 101;
unsigned npts = npts1 + npts2;
double* conv_spectra;
conv_spectra = new double[npts];
// Convolution
for (unsigned i = 0; i < npts; i++) {
double sum = 0;
for (unsigned j = 0; j <= i; j++) {
if (j > npts1 - 1 || (i - j) > npts2 - 1) continue;
sum += energy_spectrum1[j] * energy_spectrum2[i-j];
} conv_spectra[i] = sum;
}
return conv_spectra;
}