Phase response of FFT in practice As I know if the impulse response is symmetric around sample zero phase response should be entirely zero. 

The code below just set a rectangular window for vector "in" 

const int N = 10;

// in = 0 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0
std::vector&lt; std::complex&lt;double&gt; &gt; in (N);
std::vector&lt; std::complex&lt;double&gt; &gt; out (N);
std::vector&lt; std::complex&lt;double&gt; &gt; polarOut (N);

auto middleElem = in.begin() + in.size()/2;
std::fill( middleElem - 1, middleElem + 2, 1);

fftw_plan my_plan  = fftw_plan_dft_1d(N, reinterpret_cast&lt;fftw_complex*&gt;(&amp;in[0]),
                                         reinterpret_cast&lt;fftw_complex*&gt;(&amp;out[0]), FFTW_FORWARD, FFTW_ESTIMATE);
fftw_execute(my_plan);

std::transform( out.begin(), out.end(), polarOut.begin(),
                []( auto&amp; in ){
                                return  std::complex&lt;double&gt;( std::abs(in), std::arg(in) );
                              } );


I getting back a sinc like result in magnitude, 
But I am so curious why I have values different than zero in phase : 

    polarOut    &lt;11 items&gt;  std::vector&lt;std::complex&lt;double&gt;&gt;
        [0] (3.000000, 0.000000)    std::complex&lt;double&gt;
        [1] (2.682507, -2.855993)   std::complex&lt;double&gt;
        [2] (1.830830, 0.571199)    std::complex&lt;double&gt;
        [3] (0.715370, -2.284795)   std::complex&lt;double&gt;
        [4] (0.309721, -1.999195)   std::complex&lt;double&gt;
        [5] (0.918986, 1.427997)    std::complex&lt;double&gt;
        [6] (0.918986, -1.427997)   std::complex&lt;double&gt;
        [7] (0.309721, 1.999195)    std::complex&lt;double&gt;
        [8] (0.715370, 2.284795)    std::complex&lt;double&gt;
        [9] (1.830830, -0.571199)   std::complex&lt;double&gt;
        [10]    (2.682507, 2.855993)    std::complex&lt;double&gt;


Any explanation about the phase response of behaviour of this fft will be great.
The problem is that your input vector is not symmetric when considering the definition of the DFT:

$$X[k]=\sum_{n=0}^{N-1}x[n]e^{-j2\pi nk/N}\tag{1}$$

Note that from (1) the time indices start at $n=0$. If you periodically continue the signal $x[n]$ in your example you get

n:    ... -5 -4 -3 -2 -1 | 0 |  1  2  3  4  5  6  7  8  9  10

x[n]: ...  1  0  0  0  0 | 0 |  0  0  0  1  1  1  0  0  0  0

If $x[n]$ were symmetric, the values for negative $n$ would need to be the same as the values for positive $n$. For $n=\pm 4$ this is not the case. If you defined your signal instead as

x[n] = 0 0 0 0 1 1 1 0 0 0

i.e. a signal of length $N=10$, then it would be symmetric and, consequently, its DFT (FFT) would be real-valued, apart from numerical errors.