1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588
|
FFTW FREQUENTLY ASKED QUESTIONS WITH ANSWERS
24 Mar 2003
Matteo Frigo
Steven G. Johnson
<fftw@fftw.org>
This is the list of Frequently Asked Questions about FFTW, a collection of
fast C routines for computing the Discrete Fourier Transform in one or
more dimensions.
===============================================================================
Index
Section 1. Introduction and General Information
Q1.1 What is FFTW?
Q1.2 How do I obtain FFTW?
Q1.3 Is FFTW free software?
Q1.4 What is this about non-free licenses?
Section 2. Installing FFTW
Q2.1 Which systems does FFTW run on?
Q2.2 Does FFTW run on DOS/Windows?
Q2.3 My compiler has trouble with FFTW.
Q2.4 FFTW does not compile on Solaris, complaining about const.
Q2.5 Which language is FFTW written in?
Q2.6 Can I call FFTW from FORTRAN?
Q2.7 Can I call FFTW from C++?
Q2.8 Why isn't FFTW written in FORTRAN/C++?
Q2.9 How do I compile FFTW to run in single precision?
Section 3. Using FFTW
Q3.1 FFTW seems really slow.
Q3.2 FFTW slows down after repeated calls.
Q3.3 An FFTW routine is crashing when I call it.
Q3.4 My Fortran program crashes when calling FFTW.
Q3.5 FFTW gives results different from my old FFT.
Q3.6 Your in-place transform gives incorrect results.
Q3.7 Can I save FFTW's plans?
Q3.8 Why does your inverse transform return a scaled result?
Q3.9 How can I make FFTW put the origin (zero frequency) at the center
Q3.10 How do I FFT an image/audio file in *foobar* format?
Q3.11 My program does not link (on Unix).
Q3.12 My program crashes, complaining about stack space.
Section 4. Internals of FFTW
Q4.1 How does FFTW work?
Q4.2 Why is FFTW so fast?
Q4.3 What is this wisdom thing?
Q4.4 Why do you use wisdom? I just wanted to save a plan.
Section 5. Known bugs
Q5.1 FFTW 1.1 crashes in rfftwnd on Linux.
Q5.2 The MPI transforms in FFTW 1.2 give incorrect results/leak memory.
Q5.3 The test programs in FFTW 1.2.1 fail when I change FFTW to use sin
Q5.4 The test program in FFTW 1.2.1 fails for n > 46340.
Q5.5 The threaded code fails on Linux Redhat 5.0
Q5.6 FFTW 2.0's rfftwnd fails for rank > 1 transforms with a final dime
Q5.7 FFTW 2.0's complex transforms give the wrong results with prime fa
Q5.8 FFTW 2.1.1's MPI test programs crash with MPICH.
Q5.9 FFTW 2.1.2's multi-threaded transforms don't work on AIX.
Q5.10 FFTW 2.1.2's complex transforms give incorrect results for large p
Q5.11 FFTW 2.1.3 crashes on AIX
===============================================================================
Section 1. Introduction and General Information
Q1.1 What is FFTW?
Q1.2 How do I obtain FFTW?
Q1.3 Is FFTW free software?
Q1.4 What is this about non-free licenses?
-------------------------------------------------------------------------------
Question 1.1. What is FFTW?
FFTW is a free collection of fast C routines for computing the Discrete
Fourier Transform in one or more dimensions. It includes complex, real,
and parallel transforms, and can handle arbitrary array sizes efficiently.
FFTW is typically faster than other publically-available FFT
implementations, and is even competitive with vendor-tuned libraries.
(See our web page for extensive benchmarks.) To achieve this performance,
FFTW uses novel code-generation and runtime self-optimization techniques
(along with many other tricks).
-------------------------------------------------------------------------------
Question 1.2. How do I obtain FFTW?
FFTW can be found at the FFTW web page. You can also retrieve it from
ftp.fftw.org in /pub/fftw.
-------------------------------------------------------------------------------
Question 1.3. Is FFTW free software?
Starting with version 1.3, FFTW is Free Software in the technical sense
defined by the Free Software Foundation (see Categories of Free and
Non-Free Software), and is distributed under the terms of the GNU General
Public License. Previous versions of FFTW were distributed without fee
for noncommercial use, but were not technically ``free.''
Non-free licenses for FFTW are also available that permit different terms
of use than the GPL.
-------------------------------------------------------------------------------
Question 1.4. What is this about non-free licenses?
The non-free licenses are for companies that wish to use FFTW in their
products but are unwilling to release their software under the GPL (which
would require them to release source code and allow free redistribution).
Such users can purchase an unlimited-use license from MIT. Contact us for
more details.
We could instead have released FFTW under the LGPL, or even disallowed
non-Free usage. Suffice it to say, however, that MIT owns the copyright
to FFTW and they only let us GPL it because we convinced them that it
would neither affect their licensing revenue nor irritate existing
licensees.
===============================================================================
Section 2. Installing FFTW
Q2.1 Which systems does FFTW run on?
Q2.2 Does FFTW run on DOS/Windows?
Q2.3 My compiler has trouble with FFTW.
Q2.4 FFTW does not compile on Solaris, complaining about const.
Q2.5 Which language is FFTW written in?
Q2.6 Can I call FFTW from FORTRAN?
Q2.7 Can I call FFTW from C++?
Q2.8 Why isn't FFTW written in FORTRAN/C++?
Q2.9 How do I compile FFTW to run in single precision?
-------------------------------------------------------------------------------
Question 2.1. Which systems does FFTW run on?
FFTW is written in ANSI C, and should work on any system with a decent C
compiler. (See also Q2.2 `Does FFTW run on DOS/Windows?' and Q2.3 `My
compiler has trouble with FFTW.'.)
-------------------------------------------------------------------------------
Question 2.2. Does FFTW run on DOS/Windows?
It should. FFTW was not developed on DOS or Windows, but the source code
is straight ANSI C. Some users have reported using FFTW on DOS/Windows
using various compilers. See also the FFTW Windows installation notes and
Q2.3 `My compiler has trouble with FFTW.'
-------------------------------------------------------------------------------
Question 2.3. My compiler has trouble with FFTW.
Complain fiercely to the vendor of the compiler.
FFTW is a heavily-optimized piece of software that is likely to push
compilers to their limits. We had no problems with, for example, gcc
2.7.2, egcs 1.1.x, Sun's SC4.0, and IBM's XLC. Users have also reported
successful compilations of FFTW using Borland's C/C++ compilers on
Windows.
The Portland Group PGCC compiler, version 4.0 for Linux/x86, reportedly
produces incorrect code for FFTW 2.1.3.
Visual C++ 4.0 crashes when compiling FFTW 1.2 with all optimizations
turned on. Visual C++ 5.0 reportedly produces incorrect code for the real
transforms in FFTW 2.x when the option "Maximize speed" is set. We are
told that Service Pack 3 fixes the bug.
Metrowerks CodeWarrior Pro 4 reportedly generates incorrect code for the
PowerPC when compiling FFTW at optimization level 4. Supposedly, this bug
is fixed in CW Pro 5 with all the latest updates applied. (No problems
were reported for previous versions.)
Various problems have also been observed with SGI's MIPSpro compilers,
versions 7.2.0 and 7.2.1 (you may have to lower the optimization level for
some files to get them to compile); the bug seems to be fixed in version
7.3. The test program in earlier versions of FFTW had problems with the
-xO5 option in Sun's SC4.0 C compiler. egcs 1.0.2 produced incorrect code
for FFTW on the PowerPC (corrected in egcs 1.1).
The DEC C compiler, V5.8-009 on Digital UNIX V4.0 (Rev. 1091) is known to
have bugs with its EV6 tuning. Specifically, compiling FFTW with -arch
host (the default) or -arch ev6 on an Alpha EV6 can cause FFTW (e.g.
fftw_test -s 256) to crash.
-------------------------------------------------------------------------------
Question 2.4. FFTW does not compile on Solaris, complaining about const.
We know that at least on Solaris 2.5.x with Sun's compilers 4.2 you might
get error messages from make such as
"./fftw.h", line 88: warning: const is a keyword in ANSI C
This is the case when the configure script reports that const does not
work:
checking for working const... (cached) no
You should be aware that Solaris comes with two compilers, namely,
/opt/SUNWspro/SC4.2/bin/cc and /usr/ucb/cc. The latter compiler is
non-ANSI. Indeed, it is a perverse shell script that calls the real
compiler in non-ANSI mode. In order to compile FFTW, change your path so
that the right cc is used.
To know whether your compiler is the right one, type cc -V. If the
compiler prints ``ucbcc'', as in
ucbcc: WorkShop Compilers 4.2 30 Oct 1996 C 4.2
then the compiler is wrong. The right message is something like
cc: WorkShop Compilers 4.2 30 Oct 1996 C 4.2
-------------------------------------------------------------------------------
Question 2.5. Which language is FFTW written in?
FFTW is written in ANSI C. Most of the code, however, was automatically
generated by a program called genfft, written in the Objective Caml
dialect of ML. You do not need to know ML or to have an Objective Caml
compiler in order to use FFTW.
genfft is provided with the FFTW sources, which means that you can play
with the code generator if you want. In this case, you need a working
Objective Caml system. Objective Caml is available from ftp.inria.fr in
the directory /lang/caml-light.
-------------------------------------------------------------------------------
Question 2.6. Can I call FFTW from FORTRAN?
Yes, but not directly. The main problem is that Fortran cannot pass
parameters by value. However, FFTW can be called indirectly from Fortran
through the use of special C "wrapper" routines. Appropriate wrapper
code, documented in the FFTW manual, is included with FFTW (versions 1.3
and higher).
By default, FFTW configures its wrapper routines to work with the first
compiler it finds, e.g. g77. To configure for a different, incompatible
Fortran compiler foobar, use ./configure F77=foobar when installing FFTW.
-------------------------------------------------------------------------------
Question 2.7. Can I call FFTW from C++?
Most definitely. FFTW should compile and run under any C++ compiler.
-------------------------------------------------------------------------------
Question 2.8. Why isn't FFTW written in FORTRAN/C++?
Because we don't like those languages, and neither approaches the
portability of C.
-------------------------------------------------------------------------------
Question 2.9. How do I compile FFTW to run in single precision?
On a Unix system: configure --enable-float. On a non-Unix system: edit
fftw/fftw.h to #define the symbol FFTW_ENABLE_FLOAT. In both cases, you
must then recompile FFTW.
===============================================================================
Section 3. Using FFTW
Q3.1 FFTW seems really slow.
Q3.2 FFTW slows down after repeated calls.
Q3.3 An FFTW routine is crashing when I call it.
Q3.4 My Fortran program crashes when calling FFTW.
Q3.5 FFTW gives results different from my old FFT.
Q3.6 Your in-place transform gives incorrect results.
Q3.7 Can I save FFTW's plans?
Q3.8 Why does your inverse transform return a scaled result?
Q3.9 How can I make FFTW put the origin (zero frequency) at the center
Q3.10 How do I FFT an image/audio file in *foobar* format?
Q3.11 My program does not link (on Unix).
Q3.12 My program crashes, complaining about stack space.
-------------------------------------------------------------------------------
Question 3.1. FFTW seems really slow.
You are probably recreating the plan before every transform, rather than
creating it once and reusing it for all transforms of the same size. FFTW
is designed to be used in the following way:
* First, you create a plan. This will take several seconds.
* Then, you reuse the plan many times to perform FFTs. These are fast.
If you don't need to compute many transforms and the time for the planner
is significant, you have two options. First, you can use the
FFTW_ESTIMATE option in the planner, which uses heuristics instead of
runtime measurements and produces a good plan in a short time. Second,
you can use the wisdom feature to precompute the plan; see Q3.7 `Can I
save FFTW's plans?'
-------------------------------------------------------------------------------
Question 3.2. FFTW slows down after repeated calls.
Probably, NaNs or similar are creeping into your data, and the slowdown is
due to the resulting floating-point exceptions. For example, be aware
that repeatedly FFTing the same array is a diverging process (because FFTW
computes the unnormalized transform).
-------------------------------------------------------------------------------
Question 3.3. An FFTW routine is crashing when I call it.
You almost certainly have a bug in your code. For example, you could be
passing invalid arguments (such as wrongly-sized arrays) to FFTW, or you
could simply have memory corruption elsewhere in your program that causes
random crashes later on. Learn to debug, and don't complain to us unless
you can come up with a minimal program (preferably under 30 lines) that
illustrates the problem.
-------------------------------------------------------------------------------
Question 3.4. My Fortran program crashes when calling FFTW.
As described in the manual, on 64-bit machines you must store the plans in
variables large enough to hold a pointer, for example integer*8.
-------------------------------------------------------------------------------
Question 3.5. FFTW gives results different from my old FFT.
People follow many different conventions for the DFT, and you should be
sure to know the ones that we use (described in the FFTW manual). In
particular, you should be aware that the FFTW_FORWARD/FFTW_BACKWARD
directions correspond to signs of -1/+1 in the exponent of the DFT
definition. (*Numerical Recipes* uses the opposite convention.)
You should also know that we compute an unnormalized transform. In
contrast, Matlab is an example of program that computes a normalized
transform. See Q3.8 `Why does your inverse transform return a scaled
result?'.
Finally, note that floating-point arithmetic is not exact, so different
FFT algorithms will give slightly different results (on the order of the
numerical accuracy; typically a fractional difference of 1e-15 or so).
-------------------------------------------------------------------------------
Question 3.6. Your in-place transform gives incorrect results.
As described in the FFTW manual, the output array argument has a special
meaning for FFTW_INPLACE transforms; you should not pass the input array
for this argument.
-------------------------------------------------------------------------------
Question 3.7. Can I save FFTW's plans?
Yes. Starting with version 1.2, FFTW provides the wisdom mechanism for
saving plans. See Q4.3 `What is this wisdom thing?' and the FFTW manual.
-------------------------------------------------------------------------------
Question 3.8. Why does your inverse transform return a scaled result?
Computing the forward transform followed by the backward transform (or
vice versa) yields the original array scaled by the size of the array.
(For multi-dimensional transforms, the size of the array is the product of
the dimensions.) We could, instead, have chosen a normalization that
would have returned the unscaled array. Or, to accomodate the many
conventions in this matter, the transform routines could have accepted a
"scale factor" parameter. We did not do this, however, for two reasons.
First, we didn't want to sacrifice performance in the common case where
the scale factor is 1. Second, in real applications the FFT is followed or
preceded by some computation on the data, into which the scale factor can
typically be absorbed at little or no cost.
-------------------------------------------------------------------------------
Question 3.9. How can I make FFTW put the origin (zero frequency) at the center of its output?
For human viewing of a spectrum, it is often convenient to put the origin
in frequency space at the center of the output array, rather than in the
zero-th element (the default in FFTW). If all of the dimensions of your
array are even, you can accomplish this by simply multiplying each element
of the input array by (-1)^(i + j + ...), where i, j, etcetera are the
indices of the element. (This trick is a general property of the DFT, and
is not specific to FFTW.)
-------------------------------------------------------------------------------
Question 3.10. How do I FFT an image/audio file in *foobar* format?
FFTW performs an FFT on an array of floating-point values. You can
certainly use it to compute the transform of an image or audio stream, but
you are responsible for figuring out your data format and converting it to
the form FFTW requires.
-------------------------------------------------------------------------------
Question 3.11. My program does not link (on Unix).
Please use the exact order in which libraries are specified by the FFTW
manual (e.g. -lrfftw -lfftw -lm). Also, note that the libraries must be
listed after your program sources/objects. (The general rule is that if
*A* uses *B*, then *A* must be listed before *B* in the link command.).
For example, switching the order to -lfftw -lrfftw -lm will fail.
-------------------------------------------------------------------------------
Question 3.12. My program crashes, complaining about stack space.
You cannot declare large arrays statically; you should use malloc (or
equivalent) to allocate the arrays you want to transform if they are
larger than a few hundred elements.
===============================================================================
Section 4. Internals of FFTW
Q4.1 How does FFTW work?
Q4.2 Why is FFTW so fast?
Q4.3 What is this wisdom thing?
Q4.4 Why do you use wisdom? I just wanted to save a plan.
-------------------------------------------------------------------------------
Question 4.1. How does FFTW work?
The innovation (if it can be so called) in FFTW consists in having an
interpreter execute the transform. The program for the interpreter (the
*plan*) is computed at runtime according to the characteristics of your
machine/compiler. This peculiar software architecture allows FFTW to
adapt itself to almost any machine.
For more details, see the paper "The Fastest Fourier Transform in the
West", by M. Frigo and S. G. Johnson, available at the FFTW web page. See
also "FFTW: An Adaptive Software Architecture for the FFT", in ICASSP '98.
-------------------------------------------------------------------------------
Question 4.2. Why is FFTW so fast?
This is a complex question, and there is no simple answer. In fact, the
authors do not fully know the answer, either. In addition to many small
performance hacks throughout FFTW, there are three general reasons for
FFTW's speed.
* FFTW uses an internal interpreter to adapt itself to a machine. See
Q4.1 `How does FFTW work?'.
* FFTW uses a code generator to produce highly-optimized routines for
computing small transforms.
* FFTW uses explicit divide-and-conquer to take advantage of the memory
hierarchy.
For more details on these three topics, see the paper "The Fastest Fourier
Transform in the West", by M. Frigo and S. G. Johnson, available at the
FFTW web page.
-------------------------------------------------------------------------------
Question 4.3. What is this wisdom thing?
wisdom is the name of the mechanism that FFTW uses to save and restore
plans. Rather than just saving plans, FFTW remembers what it learns about
your machine, and becomes wiser and wiser as time passes by. You can save
wisdom for later use.
-------------------------------------------------------------------------------
Question 4.4. Why do you use wisdom? I just wanted to save a plan.
wisdom could be implemented with less effort than a general plan-saving
mechanism would have required. In addition, wisdom provides additional
benefits. For example, if you are planning transforms of size 1024, and
later you want a transform of size 2048, most of the calculations of the
1024 case can be reused.
In short, wisdom does more things with less effort, and seemed like The
Right Thing to do.
===============================================================================
Section 5. Known bugs
Q5.1 FFTW 1.1 crashes in rfftwnd on Linux.
Q5.2 The MPI transforms in FFTW 1.2 give incorrect results/leak memory.
Q5.3 The test programs in FFTW 1.2.1 fail when I change FFTW to use sin
Q5.4 The test program in FFTW 1.2.1 fails for n > 46340.
Q5.5 The threaded code fails on Linux Redhat 5.0
Q5.6 FFTW 2.0's rfftwnd fails for rank > 1 transforms with a final dime
Q5.7 FFTW 2.0's complex transforms give the wrong results with prime fa
Q5.8 FFTW 2.1.1's MPI test programs crash with MPICH.
Q5.9 FFTW 2.1.2's multi-threaded transforms don't work on AIX.
Q5.10 FFTW 2.1.2's complex transforms give incorrect results for large p
Q5.11 FFTW 2.1.3 crashes on AIX
-------------------------------------------------------------------------------
Question 5.1. FFTW 1.1 crashes in rfftwnd on Linux.
This bug was fixed in FFTW 1.2. There was a bug in rfftwnd causing an
incorrect amount of memory to be allocated. The bug showed up in Linux
with libc-5.3.12 (and nowhere else that we know of).
-------------------------------------------------------------------------------
Question 5.2. The MPI transforms in FFTW 1.2 give incorrect results/leak memory.
These bugs were corrected in FFTW 1.2.1. The MPI transforms (really, just
the transpose routines) in FFTW 1.2 had bugs that could cause errors in
some situations.
-------------------------------------------------------------------------------
Question 5.3. The test programs in FFTW 1.2.1 fail when I change FFTW to use single precision.
This bug was fixed in FFTW 1.3. (Older versions of FFTW did work in
single precision, but the test programs didn't--the error tolerances in
the tests were set for double precision.)
-------------------------------------------------------------------------------
Question 5.4. The test program in FFTW 1.2.1 fails for n > 46340.
This bug was fixed in FFTW 1.3. FFTW 1.2.1 produced the right answer, but
the test program was wrong. For large n, n*n in the naive transform that
we used for comparison overflows 32 bit integer precision, breaking the
test.
-------------------------------------------------------------------------------
Question 5.5. The threaded code fails on Linux Redhat 5.0
We had problems with glibc-2.0.5. The code should work with glibc-2.0.7.
-------------------------------------------------------------------------------
Question 5.6. FFTW 2.0's rfftwnd fails for rank > 1 transforms with a final dimension >= 65536.
This bug was fixed in FFTW 2.0.1. (There was a 32-bit integer overflow
due to a poorly-parenthesized expression.)
-------------------------------------------------------------------------------
Question 5.7. FFTW 2.0's complex transforms give the wrong results with prime factors 17 to 97.
There was a bug in the complex transforms that could cause incorrect
results under (hopefully rare) circumstances for lengths with
intermediate-size prime factors (17-97). This bug was fixed in FFTW
2.1.1.
-------------------------------------------------------------------------------
Question 5.8. FFTW 2.1.1's MPI test programs crash with MPICH.
This bug was fixed in FFTW 2.1.2. The 2.1/2.1.1 MPI test programs crashed
when using the MPICH implementation of MPI with the ch_p4 device (TCP/IP);
the transforms themselves worked fine.
-------------------------------------------------------------------------------
Question 5.9. FFTW 2.1.2's multi-threaded transforms don't work on AIX.
This bug was fixed in FFTW 2.1.3. The multi-threaded transforms in
previous versions didn't work with AIX's pthreads implementation, which
idiosyncratically creates threads in detached (non-joinable) mode by
default.
-------------------------------------------------------------------------------
Question 5.10. FFTW 2.1.2's complex transforms give incorrect results for large prime sizes.
This bug was fixed in FFTW 2.1.3. FFTW's complex-transform algorithm for
prime sizes (in versions 2.0 to 2.1.2) had an integer overflow problem
that caused incorrect results for many primes greater than 32768 (on
32-bit machines). (Sizes without large prime factors are not affected.)
-------------------------------------------------------------------------------
Question 5.11. FFTW 2.1.3 crashes on AIX
The FFTW 2.1.3 configure script picked incorrect compiler flags for the
xlc compiler on newer IBM processors. This is fixed in FFTW 2.1.4.
|