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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head><title>
FFTW FAQ - Section 2
</title>
<link rev="made" href="mailto:fftw@fftw.org">
<link rel="Contents" href="index.html">
<link rel="Start" href="index.html">
<link rel="Next" href="section3.html"><link rel="Previous" href="section1.html"><link rel="Bookmark" title="FFTW FAQ" href="index.html">
</head><body text="#000000" bgcolor="#FFFFFF"><h1>
FFTW FAQ - Section 2 <br>
Installing FFTW
</h1>
<ul>
<li><a href="#systems" rel=subdocument>Q2.1. Which systems does FFTW run on?</a>
<li><a href="#runOnDOS" rel=subdocument>Q2.2. Does FFTW run on DOS/Windows?</a>
<li><a href="#compilerCrashes" rel=subdocument>Q2.3. My compiler has trouble with FFTW.</a>
<li><a href="#solarisSucks" rel=subdocument>Q2.4. FFTW does not compile on Solaris, complaining about
<code>const</code>.</a>
<li><a href="#languages" rel=subdocument>Q2.5. Which language is FFTW written in?</a>
<li><a href="#fortran" rel=subdocument>Q2.6. Can I call FFTW from FORTRAN?</a>
<li><a href="#cplusplus" rel=subdocument>Q2.7. Can I call FFTW from C++?</a>
<li><a href="#whynotfortran" rel=subdocument>Q2.8. Why isn't FFTW written in FORTRAN/C++?</a>
<li><a href="#singleprec" rel=subdocument>Q2.9. How do I compile FFTW to run in single precision?</a>
</ul><hr>
<h2><A name="systems">
Question 2.1. Which systems does FFTW run
on?
</A></h2>
FFTW is written in ANSI C, and should work on any system with
a decent C compiler. (See also <A href="#runOnDOS">Q2.2 `Does FFTW run on DOS/Windows?'</A> and <A href="#compilerCrashes">Q2.3 `My compiler has trouble with FFTW.'</A>.)
<h2><A name="runOnDOS">
Question 2.2. Does FFTW run on DOS/Windows?
</A></h2>
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
<A href="http://www.fftw.org/install/install-Windows.html">FFTW Windows installation notes</A> and <A href="#compilerCrashes">Q2.3 `My compiler has trouble with FFTW.'</A>
<h2><A name="compilerCrashes">
Question 2.3. My compiler has trouble with
FFTW.
</A></h2>
Complain fiercely to the vendor of the compiler.
<p>
FFTW is a heavily-optimized piece of software that is likely to push
compilers to their limits. We had no problems with, for example,
<code>gcc 2.7.2</code>, <code>egcs 1.1.x</code>, Sun's <code>SC4.0</code>, and IBM's <code>XLC</code>. Users have also reported successful compilations of FFTW using Borland's C/C++ compilers on Windows.
<p>
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.
<p>
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.)
<p>
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 <code>-xO5</code> option in Sun's <code>SC4.0</code> C compiler. <code>egcs 1.0.2</code> produced incorrect code for FFTW on the PowerPC (corrected in <code>egcs 1.1</code>).
<h2><A name="solarisSucks">
Question 2.4. FFTW does not compile on Solaris, complaining about
<code>const</code>.
</A></h2>
We know that at least on Solaris 2.5.x with Sun's compilers 4.2 you
might get error messages from <code>make</code> such as
<p>
<code>"./fftw.h", line 88: warning: const is a keyword in ANSI
C</code>
<p>
This is the case when the <code>configure</code> script reports that <code>const</code> does not work:
<p>
<code>checking for working const... (cached) no</code>
<p>
You should be aware that Solaris comes with two compilers, namely,
<code>/opt/SUNWspro/SC4.2/bin/cc</code> and <code>/usr/ucb/cc</code>. 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
<code>cc</code> is used.
<p>
To know whether your compiler is the right one, type
<code>cc -V</code>. If the compiler prints ``<code>ucbcc</code>'', as in
<p>
<code>ucbcc: WorkShop Compilers 4.2 30 Oct 1996 C
4.2</code>
<p>
then the compiler is wrong. The right message is something like
<p>
<code>cc: WorkShop Compilers 4.2 30 Oct 1996 C
4.2</code>
<h2><A name="languages">
Question 2.5. Which language is FFTW written
in?
</A></h2>
FFTW is written in ANSI C. Most of the code, however, was
automatically generated by a program called
<code>genfft</code>, 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.
<p>
<code>genfft</code> 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 <code>ftp.inria.fr</code> in the directory <A href="ftp://ftp.inria.fr/lang/caml-light"><code>/lang/caml-light</code></A>.
<h2><A name="fortran">
Question 2.6. Can I call FFTW from FORTRAN?
</A></h2>
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).
<h2><A name="cplusplus">
Question 2.7. Can I call FFTW from C++?
</A></h2>
Most definitely. FFTW should compile and run under any C++ compiler.
<h2><A name="whynotfortran">
Question 2.8. Why isn't FFTW written in
FORTRAN/C++?
</A></h2>
Because we don't like those languages, and neither approaches the
portability of C.
<h2><A name="singleprec">
Question 2.9. How do I compile FFTW to run in single
precision?
</A></h2>
On a Unix system: <code>configure --enable-float</code>. On a non-Unix system: edit <code>fftw/fftw.h</code> to <code>#define</code> the symbol <code>FFTW_ENABLE_FLOAT</code>. In both cases, you must then recompile
FFTW. <hr>
Next: <a href="section3.html" rel=precedes>Using FFTW</a>.<br>
Back: <a href="section1.html" rev=precedes>Introduction and General Information</a>.<br>
<a href="index.html" rev=subdocument>Return to contents</a>.<p>
<address>
<A href="http://www.fftw.org">Matteo Frigo and Steven G. Johnson</A> / <A href="mailto:fftw@fftw.org">fftw@fftw.org</A>
- 07 November 1999
</address><br>
Extracted from FFTW Frequently Asked Questions with Answers,
Copyright © 1999 Massachusetts Institute of Technology.
</body></html>
|