I have a set of signals $S_1,\dots,S_N$, for which I am numerically computing the Fourier transforms $F_1,\dots,F_N$. Where $S_i$'s and $F_i$'s are C++ vectors (my computations are in C++).
My Computation objective is as follows:
1> compute product: $F = F_1 \times \dots \times F_N$
2> inverse Fourier transform F to get a S.
What I numerically observe is when I am trying to compute the product either I am running into situation where numbers become too small. Or numbers become too big.
I thought of scaling the vector $F_1$ by say a scalar number $a_1$ so that the overflow or underflow is avoided.
With the scaling my step 1 above will become
$F' = (\frac{F_1}{a_1})\times \dots \times(\frac{F_N}{a_N}) = F'_1\times \dots \times F'_N$
And when I inverse transform my final S' will differ from S by a scale factor. The structural form of the S will not change. By this I mean only the normalization of S is different.
My question is :
1> Is my rationale correct.
2> If my rationale is correct then given a C++ vector $F_i$ how can I choose a good scale $a_i$ to scale up or down the $F_i$'s.
Many thanks in advance.
In general, the Fourier transform of a product is equal to the convolution of the Fourier transforms of the factors.