FFTW 3.1.2 * Correct bug in configure script: --enable-portable-binary option was ignored! Thanks to Andrew Salamon for the bug report. * Threads compilation fix on AIX: prefer xlc_r to cc_r, and don't use either if we are using gcc. Thanks to Guy Moebs for the bug report. * Updated FAQ to note that Apple gcc 4.0.1 on MacOS/Intel is broken, and suggest a workaround. configure script now detects Core/Duo arch. * Use -maltivec when checking for altivec.h. Fixes Gentoo bug #129304, thanks to Markus Dittrich. FFTW 3.1.1 * Performance improvements for Intel EMT64. * Performance improvements for large-size transforms with SIMD. * Cycle counter support for Intel icc and Visual C++ on x86-64. * In fftw-wisdom tool, replaced obsolete --impatient with --measure. * Fixed compilation failure with AIX/xlc; thanks to Joseph Thomas. * Windows DLL support for Fortran API (added missing __declspec(dllexport)). * SSE/SSE2 code works properly (i.e. disables itself) on older 386 and 486 CPUs lacking a CPUID instruction; thanks to Eric Korpela. FFTW 3.1 * Faster FFTW_ESTIMATE planner. * New (faster) algorithm for REDFT00/RODFT00 (type-I DCT/DST) of odd size. * "4-step" algorithm for faster FFTs of very large sizes (> 2^18). * Faster in-place real-data DFTs (for R2HC and HC2R r2r formats). * Faster in-place non-square transpositions (FFTW uses these internally for in-place FFTs, and you can also perform them explicitly using the guru interface). * Faster prime-size DFTs: implemented Bluestein's algorithm, as well as a zero-padded Rader variant to limit recursive use of Rader's algorithm. * SIMD support for split complex arrays. * Much faster Altivec/VMX performance. * New fftw_set_timelimit function to specify a (rough) upper bound to the planning time (does not affect ESTIMATE mode). * Removed --enable-3dnow support; use --enable-k7 instead. * FMA (fused multiply-add) version is now included in "standard" FFTW, and is enabled with --enable-fma (the default on PowerPC and Itanium). * Automatic detection of native architecture flag for gcc. New configure options: --enable-portable-binary and --with-gcc-arch=, for people distributing compiled binaries of FFTW (see manual). * Automatic detection of Altivec under Linux with gcc 3.4 (so that same binary should work on both Altivec and non-Altivec PowerPCs). * Compiler-specific tweaks/flags/workarounds for gcc 3.4, xlc, HP/UX, Solaris/Intel. * Various documentation clarifications. * 64-bit clean. (Fixes a bug affecting the split guru planner on 64-bit machines, reported by David Necas.) * Fixed Debian bug #259612: inadvertent use of SSE instructions on non-SSE machines (causing a crash) for --enable-sse binaries. * Fixed bug that caused HC2R transforms to destroy the input in certain cases, even if the user specified FFTW_PRESERVE_INPUT. * Fixed bug where wisdom would be lost under rare circumstances, causing excessive planning time. * FAQ notes bug in gcc-3.4.[1-3] that causes FFTW to crash with SSE/SSE2. * Fixed accidentally exported symbol that prohibited simultaneous linking to double/single multithreaded FFTW (thanks to Alessio Massaro). * Support Win32 threads under MinGW (thanks to Alessio Massaro). * Fixed problem with building DLL under Cygwin; thanks to Stephane Fillod. * Fix build failure if no Fortran compiler is found (thanks to Charles Radley for the bug report). * Fixed compilation failure with icc 8.0 and SSE/SSE2. Automatic detection of icc architecture flag (e.g. -xW). * Fixed compilation with OpenMP on AIX (thanks to Greg Bauer). * Fixed compilation failure on x86-64 with gcc (thanks to Orion Poplawski). * Incorporated patch from FreeBSD ports (FreeBSD does not have memalign, but its malloc is 16-byte aligned). * Cycle-counter compilation fixes for Itanium, Alpha, x86-64, Sparc, MacOS (thanks to Matt Boman, John Bowman, and James A. Treacy for reports/fixes). Added x86-64 cycle counter for PGI compilers, courtesy Cristiano Calonaci. * Fix compilation problem in test program due to C99 conflict. * Portability fix for import_system_wisdom with djgpp (thanks to Juan Manuel Guerrero). * Fixed compilation failure on MacOS 10.3 due to getopt conflict. * Work around Visual C++ (version 6/7) bug in SSE compilation; thanks to Eddie Yee for his detailed report. Changes from FFTW 3.1 beta 2: * Several minor compilation fixes. * Eliminate FFTW_TIMELIMIT flag and replace fftw_timelimit global with fftw_set_timelimit function. Make wisdom work with time-limited plans. Changes from FFTW 3.1 beta 1: * Fixes for creating DLLs under Windows; thanks to John Pavel for his feedback. * Fixed more 64-bit problems, thanks to John Pavel for the bug report. * Further speed improvements for Altivec/VMX. * Further speed improvements for non-square transpositions. * Many minor tweaks. FFTW 3.0.1 * Some speed improvements in SIMD code. * --without-cycle-counter option is removed. If no cycle counter is found, then the estimator is always used. A --with-slow-timer option is provided to force the use of lower-resolution timers. * Several fixes for compilation under Visual C++, with help from Stefane Ruel. * Added x86 cycle counter for Visual C++, with help from Morten Nissov. * Added S390 cycle counter, courtesy of James Treacy. * Added missing static keyword that prevented simultaneous linkage of different-precision versions; thanks to Rasmus Larsen for the bug report. * Corrected accidental omission of f77_wisdom.f file; thanks to Alan Watson. * Support -xopenmp flag for SunOS; thanks to John Lou for the bug report. * Compilation with HP/UX cc requires -Wp,-H128000 flag to increase preprocessor limits; thanks to Peter Vouras for the bug report. * Removed non-portable use of 'tempfile' in fftw-wisdom-to-conf script; thanks to Nicolas Decoster for the patch. * Added 'make smallcheck' target in tests/ directory, at the request of James Treacy. FFTW 3.0 Major goals of this release: * Speed: often 20% or more faster than FFTW 2.x, even without SIMD (see below). * Complete rewrite, to make it easier to add new algorithms and transforms. * New API, to support more general semantics. Other enhancements: * SIMD acceleration on supporting CPUs (SSE, SSE2, 3DNow!, and AltiVec). (With special thanks to Franz Franchetti for many experimental prototypes and to Stefan Kral for the vectorizing generator from fftwgel.) * True in-place 1d transforms of large sizes (as well as compressed twiddle tables for additional memory/cache savings). * More arbitrary placement of real & imaginary data, e.g. including interleaved (as in FFTW 2.x) as well as separate real/imag arrays. * Efficient prime-size transforms of real data. * Multidimensional transforms can operate on a subset of a larger matrix, and/or transform selected dimensions of a multidimensional array. * By popular demand, simultaneous linking to double precision (fftw), single precision (fftwf), and long-double precision (fftwl) versions of FFTW is now supported. * Cycle counters (on all modern CPUs) are exploited to speed planning. * Efficient transforms of real even/odd arrays, a.k.a. discrete cosine/sine transforms (types I-IV). (Currently work via pre/post processing of real transforms, ala FFTPACK, so are not optimal.) * DHTs (Discrete Hartley Transforms), again via post-processing of real transforms (and thus suboptimal, for now). * Support for linking to just those parts of FFTW that you need, greatly reducing the size of statically linked programs when only a limited set of transform sizes/types are required. * Canonical global wisdom file (/etc/fftw/wisdom) on Unix, along with a command-line tool (fftw-wisdom) to generate/update it. * Fortran API can be used with both g77 and non-g77 compilers simultaneously. * Multi-threaded version has optional OpenMP support. * Authors' good looks have greatly improved with age. Changes from 3.0beta3: * Separate FMA distribution to better exploit fused multiply-add instructions on PowerPC (and possibly other) architectures. * Performance improvements via some inlining tweaks. * fftw_flops now returns double arguments, not int, to avoid overflows for large sizes. * Workarounds for automake bugs. Changes from 3.0beta2: * The standard REDFT00/RODFT00 (DCT-I/DST-I) algorithm (used in FFTPACK, NR, etcetera) turns out to have poor numerical accuracy, so we replaced it with a slower routine that is more accurate. * The guru planner and execute functions now have two variants, one that takes complex arguments and one that takes separate real/imag pointers. * Execute and planner routines now automatically align the stack on x86, in case the calling program is misaligned. * README file for test program. * Fixed bugs in the combination of SIMD with multi-threaded transforms. * Eliminated internal fftw_threads_init function, which some people were calling accidentally instead of the fftw_init_threads API function. * Check for -openmp flag (Intel C compiler) when --enable-openmp is used. * Support AMD x86-64 SIMD and cycle counter. * Support SSE2 intrinsics in forthcoming gcc 3.3. Changes from 3.0beta1: * Faster in-place 1d transforms of non-power-of-two sizes. * SIMD improvements for in-place, multi-dimensional, and/or non-FFTW_PATIENT transforms. * Added support for hard-coded DCT/DST/DHT codelets of small sizes; the default distribution only includes hard-coded size-8 DCT-II/III, however. * Many minor improvements to the manual. Added section on using the codelet generator to customize and enhance FFTW. * The default 'make check' should now only take a few minutes; for more strenuous tests (which may take a day or so), do 'cd tests; make bigcheck'. * fftw_print_plan is split into fftw_fprint_plan and fftw_print_plan, where the latter uses stdout. * Fixed ability to compile with a C++ compiler. * Fixed support for C99 complex type under glibc. * Fixed problems with alloca under MinGW, AIX. * Workaround for gcc/SPARC bug. * Fixed multi-threaded initialization failure on IRIX due to lack of user-accessible PTHREAD_SCOPE_SYSTEM there.