Double size inverse fourier transform
Copy the spectrum to an array that is long enough to contain the spectrum of the double-length array. Put all the frequencies in their right places so that the zero frequency bin, the negative frequency bins (do not exist if you used real-input-FFT), and the positive frequency bins fall in their correct places. Zero the remaining (high-frequency) bins. If your original array was of even length, depending on the flavor of FFT, you may need to split the Nyquist frequency (highest original frequency, sampling frequency / 2) bin to its identical negative and positive frequency component and divide their value by two. You may further need to scale all bins by a constant (2 in the example) to account for the way the particular FFT and IFFT implementations are normalized. Then at the end use IFFT to get back to time domain (example in Octave):

octave:1&gt; x = [1 2 3 4]
x =

   1   2   3   4

octave:2&gt; X = fft(x)
X =

   10 +  0i   -2 +  2i   -2 +  0i   -2 -  2i

octave:4&gt; Y = [10 -2+2i -1 0 0 0 -1 -2-2i]*2
Y =

 Columns 1 through 6:

   20 +  0i   -4 +  4i   -2 +  0i    0 +  0i    0 +  0i    0 +  0i

 Columns 7 and 8:

   -2 +  0i   -4 -  4i

octave:5&gt; y = ifft(Y)
y =

   1.0000   1.0858   2.0000   2.5000   3.0000   3.9142   4.0000   2.5000


The process is not equivalent to linear interpolation but to ideal sinc interpolation with wraparound of the sinc function tails to account for the assumed periodicity of the sequence.