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