@numchapentry{Introduction}{1}{Introduction}{1} @numchapentry{Tutorial}{2}{Tutorial}{3} @numsecentry{Complex One-Dimensional DFTs}{2.1}{Complex One-Dimensional DFTs}{3} @numsecentry{Complex Multi-Dimensional DFTs}{2.2}{Complex Multi-Dimensional DFTs}{5} @numsecentry{One-Dimensional DFTs of Real Data}{2.3}{One-Dimensional DFTs of Real Data}{6} @numsecentry{Multi-Dimensional DFTs of Real Data}{2.4}{Multi-Dimensional DFTs of Real Data}{7} @numsecentry{More DFTs of Real Data}{2.5}{More DFTs of Real Data}{9} @numsubsecentry{The Halfcomplex-format DFT}{2.5.1}{The Halfcomplex-format DFT}{10} @numsubsecentry{Real even/odd DFTs (cosine/sine transforms)}{2.5.2}{Real even/odd DFTs (cosine/sine transforms)}{10} @numsubsecentry{The Discrete Hartley Transform}{2.5.3}{The Discrete Hartley Transform}{12} @numchapentry{Other Important Topics}{3}{Other Important Topics}{15} @numsecentry{Data Alignment}{3.1}{Data Alignment}{15} @numsubsecentry{SIMD alignment and fftw_malloc}{3.1.1}{SIMD alignment and fftw_malloc}{15} @numsubsecentry{Stack alignment on x86}{3.1.2}{Stack alignment on x86}{15} @numsecentry{Multi-dimensional Array Format}{3.2}{Multi-dimensional Array Format}{16} @numsubsecentry{Row-major Format}{3.2.1}{Row-major Format}{16} @numsubsecentry{Column-major Format}{3.2.2}{Column-major Format}{16} @numsubsecentry{Fixed-size Arrays in C}{3.2.3}{Fixed-size Arrays in C}{16} @numsubsecentry{Dynamic Arrays in C}{3.2.4}{Dynamic Arrays in C}{17} @numsubsecentry{Dynamic Arrays in C---The Wrong Way}{3.2.5}{Dynamic Arrays in C-The Wrong Way}{17} @numsecentry{Words of Wisdom---Saving Plans}{3.3}{Words of Wisdom-Saving Plans}{18} @numsecentry{Caveats in Using Wisdom}{3.4}{Caveats in Using Wisdom}{19} @numchapentry{FFTW Reference}{4}{FFTW Reference}{21} @numsecentry{Data Types and Files}{4.1}{Data Types and Files}{21} @numsubsecentry{Complex numbers}{4.1.1}{Complex numbers}{21} @numsubsecentry{Precision}{4.1.2}{Precision}{21} @numsubsecentry{Memory Allocation}{4.1.3}{Memory Allocation}{22} @numsecentry{Using Plans}{4.2}{Using Plans}{22} @numsecentry{Basic Interface}{4.3}{Basic Interface}{23} @numsubsecentry{Complex DFTs}{4.3.1}{Complex DFTs}{23} @numsubsecentry{Planner Flags}{4.3.2}{Planner Flags}{24} @numsubsecentry{Real-data DFTs}{4.3.3}{Real-data DFTs}{26} @numsubsecentry{Real-data DFT Array Format}{4.3.4}{Real-data DFT Array Format}{27} @numsubsecentry{Real-to-Real Transforms}{4.3.5}{Real-to-Real Transforms}{28} @numsubsecentry{Real-to-Real Transform Kinds}{4.3.6}{Real-to-Real Transform Kinds}{29} @numsecentry{Advanced Interface}{4.4}{Advanced Interface}{30} @numsubsecentry{Advanced Complex DFTs}{4.4.1}{Advanced Complex DFTs}{30} @numsubsecentry{Advanced Real-data DFTs}{4.4.2}{Advanced Real-data DFTs}{31} @numsubsecentry{Advanced Real-to-real Transforms}{4.4.3}{Advanced Real-to-real Transforms}{31} @numsecentry{Guru Interface}{4.5}{Guru Interface}{32} @numsubsecentry{Interleaved and split arrays}{4.5.1}{Interleaved and split arrays}{32} @numsubsecentry{Guru vector and transform sizes}{4.5.2}{Guru vector and transform sizes}{32} @numsubsecentry{Guru Complex DFTs}{4.5.3}{Guru Complex DFTs}{33} @numsubsecentry{Guru Real-data DFTs}{4.5.4}{Guru Real-data DFTs}{34} @numsubsecentry{Guru Real-to-real Transforms}{4.5.5}{Guru Real-to-real Transforms}{35} @numsubsecentry{Guru Execution of Plans}{4.5.6}{Guru Execution of Plans}{36} @numsecentry{Wisdom}{4.6}{Wisdom}{37} @numsubsecentry{Wisdom Export}{4.6.1}{Wisdom Export}{37} @numsubsecentry{Wisdom Import}{4.6.2}{Wisdom Import}{38} @numsubsecentry{Forgetting Wisdom}{4.6.3}{Forgetting Wisdom}{38} @numsubsecentry{Wisdom Utilities}{4.6.4}{Wisdom Utilities}{38} @numsecentry{What FFTW Really Computes}{4.7}{What FFTW Really Computes}{39} @numsubsecentry{The 1d Discrete Fourier Transform (DFT)}{4.7.1}{The 1d Discrete Fourier Transform (DFT)}{39} @numsubsecentry{The 1d Real-data DFT}{4.7.2}{The 1d Real-data DFT}{40} @numsubsecentry{1d Real-even DFTs (DCTs)}{4.7.3}{1d Real-even DFTs (DCTs)}{40} @numsubsecentry{1d Real-odd DFTs (DSTs)}{4.7.4}{1d Real-odd DFTs (DSTs)}{42} @numsubsecentry{1d Discrete Hartley Transforms (DHTs)}{4.7.5}{1d Discrete Hartley Transforms (DHTs)}{43} @numsubsecentry{Multi-dimensional Transforms}{4.7.6}{Multi-dimensional Transforms}{43} @numchapentry{Parallel FFTW}{5}{Parallel FFTW}{45} @numsecentry{Multi-threaded FFTW}{5.1}{Multi-threaded FFTW}{45} @numsubsecentry{Installation and Supported Hardware/Software}{5.1.1}{Installation and Supported Hardware/Software}{45} @numsubsecentry{Usage of Multi-threaded FFTW}{5.1.2}{Usage of Multi-threaded FFTW}{45} @numsubsecentry{How Many Threads to Use?}{5.1.3}{How Many Threads to Use?}{46} @numsecentry{Thread safety}{5.2}{Thread safety}{47} @numchapentry{Calling FFTW from Fortran}{6}{Calling FFTW from Fortran}{49} @numsecentry{Fortran-interface routines}{6.1}{Fortran-interface routines}{49} @numsecentry{FFTW Constants in Fortran}{6.2}{FFTW Constants in Fortran}{50} @numsecentry{Fortran Examples}{6.3}{Fortran Examples}{50} @numsecentry{Wisdom of Fortran?}{6.4}{Wisdom of Fortran?}{51} @numchapentry{Upgrading from FFTW version 2}{7}{Upgrading from FFTW version 2}{53} @numchapentry{Installation and Customization}{8}{Installation and Customization}{57} @numsecentry{Installation on Unix}{8.1}{Installation on Unix}{57} @numsecentry{Installation on non-Unix systems}{8.2}{Installation on non-Unix systems}{59} @numsecentry{Cycle Counters}{8.3}{Cycle Counters}{60} @numsecentry{Generating your own code}{8.4}{Generating your own code}{60} @numchapentry{Acknowledgments}{9}{Acknowledgments}{63} @numchapentry{License and Copyright}{10}{License and Copyright}{65} @numchapentry{Concept Index}{11}{Concept Index}{67} @numchapentry{Library Index}{12}{Library Index}{69}