rep = 20; if ~exist('resfft') fprintf('Loading Data '); if (exist('OCTAVE_VERSION')) eval('fflush(stdout);'); end if (exist('OCTAVE_VERSION')) eval('load -force testfft.mat;'); else load testfft.mat; end fprintf('done\n'); end xresfft = cell(2, length(N)); xresfft2 = cell(2, length(N)); xtimfft = cell(2,length(N)); xtimfft2 = cell(2,length(N)); if (exist('OCTAVE_VERSION')) xplatfrm = ['Octave ' version]; else xplatfrm = ['Matlab ' version]; end fprintf('Testing %s vs %s for real ffts\n\n', xplatfrm, platfrm); for i=1:length(N) if ( ~ exist ('infft')) a = randn(N(i), M(i)); else a = infft{i}; end fprintf('Testing fft(%5d,%5d) ', N(i), M(i)); if (exist('OCTAVE_VERSION')) eval('fflush(stdout);'); end % Call fft twice to ensure all variables initialized b = fft(a); b = fft(a); xtimfft{1,i} = 0; for j=1:rep t = cputime; b = fft(a); xtimfft{1,i} = xtimfft{1,i} + cputime - t; end xresfft{1,i} = b; xtimfft{1,i} = xtimfft{1,i} / rep; if (exist('infft')) fprintf('%5.2e sec (%5.2e) rerr %5.2e\n', xtimfft{1,i}, xtimfft{1,i}/timfft{1,i}, 0.5*max(max(abs(resfft{1,i}-xresfft{1,i})./(abs(resfft{1,i})+abs(xresfft{1,i}))))); else fprintf('%5.2e sec (%5.2e)\n', xtimfft{1,i}, xtimfft{1,i}/timfft{1,i}); end fprintf('Testing ifft(%5d,%5d) ', N(i), M(i)); if (exist('OCTAVE_VERSION')) eval('fflush(stdout);'); end % Call fft twice to ensure all variables initialized b = ifft(a); b = ifft(a); xtimfft{2,i} = 0; for j=1:rep t = cputime; b = ifft(a); xtimfft{2,i} = xtimfft{2,i} + cputime - t; end xresfft{2,i} = b; xtimfft{2,i} = xtimfft{2,i} / rep; if (exist('infft')) fprintf('%5.2e sec (%5.2e) rerr %5.2e\n', xtimfft{2,i}, xtimfft{2,i}/timfft{2,i}, 0.5*max(max(abs(resfft{2,i}-xresfft{2,i})./(abs(resfft{2,i})+abs(xresfft{2,i}))))); else fprintf('%5.2e sec (%5.2e)\n', xtimfft{2,i}, xtimfft{2,i}/timfft{2,i}); end fprintf('Testing fft2(%5d,%5d) ', N(i), M(i)); if (exist('OCTAVE_VERSION')) eval('fflush(stdout);'); end % Call fft2 twice to ensure all variables initialized b = fft2(a); b = fft2(a); xtimfft2{1,i} = 0; for j=1:rep t = cputime; b = fft2(a); xtimfft2{1,i} = xtimfft2{1,i} + cputime - t; end xresfft2{1,i} = b; xtimfft2{1,i} = xtimfft2{1,i} / rep; if (exist('infft')) fprintf('%5.2e sec (%5.2e) rerr %5.2e\n', xtimfft2{1,i}, xtimfft2{1,i}/timfft2{1,i}, 0.5*max(max(abs(resfft2{1,i}-xresfft2{1,i})./(abs(resfft2{1,i})+abs(xresfft2{1,i}))))); else fprintf('%5.2e sec (%5.2e)\n', xtimfft2{1,i}, xtimfft2{1,i}/timfft2{1,i}); end fprintf('Testing ifft2(%5d,%5d) ', N(i), M(i)); if (exist('OCTAVE_VERSION')) eval('fflush(stdout);'); end % Call fft2 twice to ensure all variables initialized b = ifft2(a); b = ifft2(a); xtimfft2{2,i} = 0; for j=1:rep t = cputime; b = ifft2(a); xtimfft2{2,i} = xtimfft2{2,i} + cputime - t; end xresfft2{2,i} = b; xtimfft2{2,i} = xtimfft2{2,i} / rep; if (exist('infft')) fprintf('%5.2e sec (%5.2e) rerr %5.2e\n', xtimfft2{2,i}, xtimfft2{2,i}/timfft2{2,i}, 0.5*max(max(abs(resfft2{2,i}-xresfft2{2,i})./(abs(resfft2{2,i})+abs(xresfft2{2,i}))))); else fprintf('%5.2e sec (%5.2e)\n', xtimfft2{2,i}, xtimfft2{2,i}/timfft2{2,i}); end end fprintf('\n\nTesting %s vs %s for complex ffts\n\n', xplatfrm, platfrm); xcresfft = cell(2, length(N)); xcresfft2 = cell(2, length(N)); xctimfft = cell(2,length(N)); xctimfft2 = cell(2,length(N)); for i=1:length(N) if ( ~ exist ('cinfft')) a = randn(N(i),M(i)) + 1i * randn(N(i),M(i)); else a = cinfft{i}; end fprintf('Testing fft(%5d,%5d) ', N(i), M(i)); if (exist('OCTAVE_VERSION')) eval('fflush(stdout);'); end % Call fft twice to ensure all variables initialized b = fft(a); b = fft(a); xctimfft{1,i} = 0; for j=1:rep t = cputime; b = fft(a); xctimfft{1,i} = xctimfft{1,i} + cputime - t; end xcresfft{1,i} = b; xctimfft{1,i} = xctimfft{1,i} / rep; if (exist('cinfft')) fprintf('%5.2e sec (%5.2e) rerr %5.2e\n', xctimfft{1,i}, xctimfft{1,i}/ctimfft{1,i}, 0.5*max(max(abs(cresfft{1,i}-xcresfft{1,i})./(abs(cresfft{1,i})+abs(xcresfft{1,i}))))); else fprintf('%5.2e sec (%5.2e)\n', xctimfft{1,i}, xctimfft{1,i}/ctimfft{1,i}); end fprintf('Testing ifft(%5d,%5d) ', N(i), M(i)); if (exist('OCTAVE_VERSION')) eval('fflush(stdout);'); end % Call fft twice to ensure all variables initialized b = ifft(a); b = ifft(a); xctimfft{2,i} = 0; for j=1:rep t = cputime; b = ifft(a); xctimfft{2,i} = xctimfft{2,i} + cputime - t; end xcresfft{2,i} = b; xctimfft{2,i} = xctimfft{2,i} / rep; if (exist('cinfft')) fprintf('%5.2e sec (%5.2e) rerr %5.2e\n', xctimfft{2,i}, xctimfft{2,i}/ctimfft{2,i}, 0.5*max(max(abs(cresfft{2,i}-xcresfft{2,i})./(abs(cresfft{2,i})+abs(xcresfft{2,i}))))); else fprintf('%5.2e sec (%5.2e)\n', xctimfft{2,i}, xctimfft{2,i}/ctimfft{2,i}); end fprintf('Testing fft2(%5d,%5d) ', N(i), M(i)); if (exist('OCTAVE_VERSION')) eval('fflush(stdout);'); end % Call fft2 twice to ensure all variables initialized b = fft2(a); b = fft2(a); xctimfft2{1,i} = 0; for j=1:rep t = cputime; b = fft2(a); xctimfft2{1,i} = xctimfft2{1,i} + cputime - t; end xcresfft2{1,i} = b; xctimfft2{1,i} = xctimfft2{1,i} / rep; if (exist('cinfft')) fprintf('%5.2e sec (%5.2e) rerr %5.2e\n', xctimfft2{1,i}, xctimfft2{1,i}/ctimfft2{1,i}, 0.5*max(max(abs(cresfft2{1,i}-xcresfft2{1,i})./(abs(cresfft2{1,i})+abs(xcresfft2{1,i}))))); else fprintf('%5.2e sec (%5.2e)\n', xctimfft2{1,i}, xctimfft2{1,i}/ctimfft2{1,i}); end fprintf('Testing ifft2(%5d,%5d) ', N(i), M(i)); if (exist('OCTAVE_VERSION')) eval('fflush(stdout);'); end % Call fft2 twice to ensure all variables initialized b = ifft2(a); b = ifft2(a); xctimfft2{2,i} = 0; for j=1:rep t = cputime; b = ifft2(a); xctimfft2{2,i} = xctimfft2{2,i} + cputime - t; end xcresfft2{2,i} = b; xctimfft2{2,i} = xctimfft2{2,i} / rep; if (exist('cinfft')) fprintf('%5.2e sec (%5.2e) rerr %5.2e\n', xctimfft2{2,i}, xctimfft2{2,i}/ctimfft2{2,i}, 0.5*max(max(abs(cresfft2{2,i}-xcresfft2{2,i})./(abs(cresfft2{2,i})+abs(xcresfft2{2,i}))))); else fprintf('%5.2e sec (%5.2e)\n', xctimfft2{2,i}, xctimfft2{2,i}/ctimfft2{2,i}); end end