FFT error when number of samples growth - Matlab/octave
An FFT using symbolic math might be possible, but would be many orders of magnitude slower.  (I'm guessing at least 10,000 times slower, except for a set of exact equation input signals).  You would have to use a symbolic math package instead of Matlab.  (Perhaps Mathematica, Maxima, or Maple?)

Instead you might be able pre- and post-process certain inputs to produce known outputs.  For instance, you can check if the input is strictly symmetrical around input sample 0.  If so, set all the imaginary components of the FFT output to zero.  If strictly odd (anti-symmetric), set all the real result components to zero.  If strictly real, set all the negative frequency outputs to be exact complex conjugates of the positive frequency ones. etc.