I have sequence of $N$ real numbers: $\mathbf{x} = (x_0, x_1, \ldots, x_{N-1})$.
Discrete Fourier Transform (DFT) is defined as $$ X_k = \sum_{n=0}^{N-1} x_n e^{-i 2\pi k \frac{n}{N}}, \quad (k=0,1,\ldots,N-1). $$
Coefficients $X_0,X_1,\ldots,X_{N-1}$ are complex-valued at all.
How to change starting sequence $\mathbf{x}$ to make all its DFT- coefficients $X_k$ real-valued?
"To change" I mean to multiply each term $x_n$ by some $z_n\in \mathbb{C}, |z_n|=1, \quad n=0,1,\ldots,N-1$.
Thanks!
The condition $\overline{X_k} = X_k$ can be written as $$ \sum_{n=0}^{N-1} \bar{x}_n e^{ i 2\pi k \frac{n}{N}} = \sum_{n=0}^{N-1} x_n e^{-i 2\pi k \frac{n}{N}} \tag{1}$$ The change of index $n \mapsto N -n$ turns the left sum in (1) into $$ \sum_{n=1}^{N } \bar{x}_{N-n} e^{ - i 2\pi k \frac{n}{N}} \tag{2}$$ Comparing the right sides of (1) and (2), and recalling that DFT is an injective transformation, we see that $x_n = \bar x_{N-n}$ for $n=1,\dots,N-1$; and also $x_0=\bar x_0$. These are necessary and sufficient conditions for the DFT to be real.
Multiplying $x_n$ by unimodular constants, you can certainly achieve $x_0=\bar x_0$. But you can't get $x_n = \bar x_{N-n}$ in this way, unless you have $|x_n|=|x_{N-n}|$.