Test FFT Double Precision C (TFFTDP.c) program results are included below.

TFFTDP.c is by Dave Edelblute (ededlblut@cod.nosc.mil).

The program (tfftdp.c) and latest Double Precision (DP) table of results (tfftdp.tbl) are available via anonymous ftp from 'ftp.nosc.mil' in directory 'pub/aburto'. The ftp.nosc.mil IP address is: 128.49.192.51

I'd appreciate any new results of any kind (new machines, compilers, compiler options). I will also periodically post results to 'comp.benchmarks'. Send results to: aburto@marlin.nosc.mil.

TFFTDP.c uses the Duhamel-Hollman split-radix Fast Fourier Transform (FFT) algorithm (Electronic Letters, 5 Jan 1984) to compute double precision FFT's from 32 points up to 262,144 points. This requires at least 4 MBytes of free memory. Although each individual FFT conducted is timed, the overall measure of performance is the run time for the whole program referenced to the run time on a VAX 8650 system. Timing the individual FFT's is difficult due to a lack of precision in the available timer routines.

The Duhamel-Hollman split radix FFT implemented here was not intended to represent the fastest FFT algorithm possible.

In addition IEEE Double Precision is assumed so that performance results reported here will not have an absolute worst error greater than approximately 3.2e-10.

Reference: VAX 8650 using gcc 1.37.1 with gcc -DUNIX -O -lm for a run time of 140.658 seconds (= 1 VAX_FFT).

Results as of 10 Oct 1993.

NOTES: ------ 001 cc -DUNIX -O4 -non_shared -migrate 002 cc -DUNIX -O4 -non_shared -migrate 003 cc -DUNIX -O4 004 cc -DUNIX -O3 005 cc -DUNIX +O3 +OS -Wl,-a,archive +Obb763 +ESlit -lm +I 006 gcc 2.3.3, gcc -DUNIX -O5 -fexpensive-optimizations -funroll-loops -lm 007 gcc 2.3.3, gcc -DUNIX -O5 -fexpensive-optimizations -funroll-loops -lm 008 cc -DUNIX -O -Q -lm 009 cc -DUNIX -O -lm 010 Sun C 1.0, cc -DUNIX -fast -O4 -lm 011 gcc 2.2.2, gcc -DUNIX -O2 -lm 012 gcc 2.2.2, gcc -DUNIX -O2 -fexpensive-optimizations -lm 013 gcc 2.2.2, gcc -DUNIX -O2 -lm 014 SC2.0.1, acc -DUNIX -V -fast -O4 -lm 015 gcc 2.2.2, gcc -DUNIX -O2 -fomit-frame-pointer -lm 016 cc -DUNIX -O2 -lm 017 cc -DUNIX -O -lm 018 cc -DUNIX -O3 -lm 019 cc -DUNIX -O4 -lm 020 /bin/cc, cc -DUNIX -O4 tfftdp.c -o tfftdp -lm 021 /bin/cc, cc -DUNIX -O4 -Bstatic tfftdp.c -o tfftdp -lm 022 gcc 2.2.2, gcc -DUNIX -O -lm 023 Metaware High C with '-pentium' and '-O4' options, 8 MB 64-bit RAM. 024 cc -DUNIX -O -lm 025 cc -DUNIX +OS +O3 -lm 026 cc +OS +O3 -lm 027 cc -DUNIX +OS +O3 -lm 028 gcc 2.2.2, gcc -DUNIX -lm 029 Sun C 2.0.1, cc -DUNIX -fast -O4 -lm 030 cc -DUNIX -lm 031 cc -O2 -lm 032 Sun C 2.0.1, cc -DUNIX -O3 -lm 033 gcc 2.3.1, gcc -DUNIX -O5 -fexpensive-optimizations -funroll-loops -lm 034 Sun C 2.0.1, cc -DUNIX -O3 -Bstatic -lm 035 Sun C 2.0.1, cc -DUNIX -O4 -Bstatic -lm 036 Sun C 2.0.1, cc -DUNIX -O4 -lm 037 cc -DUNIX -O -Q 038 gcc 2.3.3, gcc -DUNIX -O5 -fexpensive-optimizations -funroll-loops -lm 039 Sun C 2.0.1, cc -DUNIX -O4 -Bstatic -dalign -lm 040 Sun C 2.0.1, cc -DUNIX -O4 -Bstatic -lm 041 Sun C 2.0.1, cc -DUNIX -O3 -lm 042 cc -O3 -lm 043 Sun C 2.0.1, cc -DUNIX -O4 -lm 044 Sun C 2.0.1, cc -DUNIX -O2 -lm 045 Sun C 2.0.1, cc -DUNIX -O2 -lm 046 cc -DUNIX -O4 -lm 047 gcc 2.2.2, gcc -DUNIX -O5 -fexpensive-optimizations -funroll-loops -lm 048 gcc 2.2.2, gcc -DUNIX -m486 -O2 -finline-functions -lm 049 gcc 2.2.2, gcc -DUNIX -m486 -O -finline-functions -funroll-all-loops 050 icc Portland Group Compiler: PGC Sun4/4.0 Rel 2.0a, icc -O4 -Knoieee -Mnoframe -Mvect -o FFT FFT.c -node -DIPSC -lm 051 Borland C++ V1.0 for OS/2 V1.0. AMI Enterprise Mk III motherboard. 16MB RAM, 256 KB cache. 052 cc -O2 -lm 053 gcc 2.2.2, gcc -DUNIX -m486 -lm 054 cc -O3 -lm 055 Sun C 2.0.1, cc -DUNIX -O1 -lm 056 Sun C 2.0.1, cc -DUNIX -O1 -lm 057 Watcom C/386 9.01d, DOS/4GW extender, wcl386 -p -7 -omaxet -zp4 -dMSC 058 IBM C Set/2 V1.0, CSD Level CS00050, icc /G4 /O+ /Gs+ /DMSC, ISA 256KB SRAM External Cache, 16MB RAM. 059 gcc 2.1, gcc -DUNIX -m486 -O2 -finline-functions -lm 060 gcc 2.1, gcc -DUNIX -m486 -O2 -lm 061 gcc 2.1, gcc -DUNIX -O2 -lm 062 cc +O3 -lm 063 cc -DUNIX_Old -O3 -lm 064 gcc 2.2.2, gcc -DUNIX -m486 -O2 -finline-functions -lm 065 gcc 2.2.2, gcc -DUNIX -m486 -O -finline-functions -funroll-all-loops 066 gcc 2.2.2, gcc -DUNIX -m486 -O2 -finline-functions -lm 067 SAS/C 6.3, full optimization, 60 ns RAM. 068 SAS/C 6.2, global and peephole optimizers enabled, no inlining. 069 gcc 2.2.2, gcc -DUNIX -m486 -lm 070 SC1.0, cc -DUNIX -fast -O4 -lm 071 cc +O3 -lm 072 cc -DUNIX -s +O3 -Wg,-All -lm 073 gcc 1.37.1,gcc -DUNIX -O -lm 074 cc -DUNIX -O -lm --- --- REF: 1 Al Aburto, aburto@marlin.nosc.mil, 05 Dec 1992 2 Jari Toivanen, University of Jyvaskyla, toivanen@jyu.fi, 23 Jan 1993 3 Roger Uzun, uzun@crash.cts.com, 23 Jan 1993 4 Bo Thide', Swedish Institute of Space Physics, bt@irfu.se, 24 Jan 1993 5 Meinhard E. Mayer, hardy@golem.ps.uci.edu, 25 Jan 1993 6 Jeff Ungar, ungar@embezzle.Stanford.edu, 26 Jan 1993 7 Olle Franceschi, olle@tfu.sr.se, 26 Jan 1993 8 Henri-Pierre Charles, Henri-Pierre.Charles@ens-lyon.fr, 27 Jan 1993 9 Al Aburto, aburto@marlin.nosc.mil, 01 Mar 1993 10 Bill Broadley, broadley@neurocog.lrdc.pitt.edu, 13 Mar 1993 11 Ion CIONCA, cionca@sic.epfl.ch, 22 Mar 1993 12 Al Aburto, aburto@marlin.nosc.mil, 22 Mar 1993 13 Tim Pointing, tim@ben.dciem.dnd.ca, 23 Mar 1993 14 Michael Fingerhut, mf@ircam.fr, 23 Mar 1993 15 Jean-Max REYMOND, J.M.X.Reymond@frcl.bull.fr, 24 Mar 1993 16 Al Aburto, aburto@marlin.nosc.mil, 27 Mar 1993 17 Sherm Riemenschneider, sherm@approx.math.ualberta.ca, 27 Mar 1993 18 Meinhard E. Mayer, hardy@golem.ps.uci.edu, 13 Apr 1993 19 Burkhard Neidecker-Lutz, neidec@nestvx.enet.dec.com, 18 May 1993 20 Roger Uzun, uzun@crash.cts.com, 17 Jun 1993 21 John E. Stone, johns@cs.umr.edu, 27 Jul 1993 22 Gail L. Grant, grant@pa.dec.com, 03 Aug 1993 23 Roger Uzun, uzun@crash.cts.com, 19 Aug 1993 24 Al Aburto, aburto@marlin.nosc.mil, 04 Sep 1993 25 Al Aburto, aburto@marlin.nosc.mil, 10 Oct 1993