Repository files navigation

NFFT - Nonequispaced FFT

Overview

NFFT is a software library, written in C, for computing non-equispaced fast Fourier transforms and related variations. It implements the following transforms:

  1. Non-equispaced fast Fourier transform (NFFT)

    • forward transform (NFFT), i.e. frequency to time/space domain
    • adjoint transform (adjoint NFFT), i.e. time/space to frequency domain
  2. Generalisations

    • to arbitrary nodes in time and frequency domain (NNFFT)
    • to real-valued data, i.e. (co)sine transforms, (NFCT, NFST)
    • to the sphere S^2 (NFSFT)
    • to the rotation group (NFSOFT)
    • to the hyperbolic cross (NSFFT)
  3. Generalised inverse transformations based on iterative methods, e.g. CGNR/CGNE

Some examples for application of these transforms are provided:

  1. Medical imaging

    • magnetic resonance imaging (mri)
    • computerised tomography (radon)
  2. Summation schemes

    • fast summation (fastsum)
    • fast Gauss transform (FGT)
    • singular kernels
    • zonal kernels
  3. polar FFT, discrete Radon transform, ridgelet transform

Detailed API documentation in HTML format can be found in doc/html/index.html, if you are working from a release tarball. When working from a source repository, the documentation can be generated with Doxygen (which requires the doxygen-latex and perl packages):

make doc

Building

The NFFT depends on the FFTW library, which is available for many Linux distros, Homebrew on macOS and MSYS2 on Windows. If you compile the FFTW yourself, it should be configured with the flag --enable-shared (and --enable-threads for the multi-threaded version). Building the NFFT requires make and a C compiler such as gcc.

When working from a source repository, you need to run libtoolize and autoreconf first. A bash script to do this is provided. This step requries the tools autoconf, automake and libtool.

./bootstrap.sh

The rest of the build process is standard.

./configure --enable-all --enable-openmp [add options as necessary, see below]

Alternatively, you might run the configure script for Matlab.

./configure --enable-all --enable-openmp --with-matlab=/path/to/matlab

Here are some useful optional flags for ./configure:

  • --enable-all specifies that all modules should be compiled,
  • --enable-openmp enables the multicore support and
  • --enable-julia specifies that the julia interface will be compiled.
  • --with-matlab=/path/to/matlab specifies the path of a Matlab installation, and
  • --with-octave=/path/to/octave does the same for GNU Octave.
  • For a list of all available options, run ./configure --help.

Build the software.

make

Optionally, unit tests may be run. Some of the unit tests require an installation of cunit.

make check

Optionally, install NFFT on your system.

make install

Citing

The current general paper, the one that we recommend if you wish to cite NFFT, is Keiner, J., Kunis, S., and Potts, D. ''Using NFFT 3 - a software library for various nonequispaced fast Fourier transforms'' ACM Trans. Math. Software 36, Article 19, 1-30, 2009. BibTeX entry:

@article{KeKuPo09,
author = {Jens Keiner and Stefan Kunis and Daniel Potts},
title = {Using {NFFT3} - a Software Library for Various Nonequispaced Fast {Fourier} Transforms},
journal = {{ACM} Trans. Math. Software},
year = {2009},
volume = {36},
pages = {Article 19, 1--30},
doi = {10.1145/1555386.1555388}}

Feedback

Your comments are welcome! This is the third version of the library and may not be as robust or well documented as it should be. Please keep track of bugs or missing/confusing instructions and report them in our issue tracker or directly to Daniel Potts. The postal address is

 Prof. Dr. Daniel Potts
TU Chemnitz, Fakultaet fuer Mathematik
Reichenhainer Str. 39
09107 Chemnitz
GERMANY

Alternatively, you might contact Stefan Kunis or Jens Keiner.

If you find NFFT useful, we would be delighted to hear about what application you are using NFFT for!

Legal Information & Credits

Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts

This software was written by Jens Keiner, Stefan Kunis and Daniel Potts. It was developed at the Mathematical Institute, University of Luebeck, and at the Faculty of Mathematics, Chemnitz University of Technology.

NFFT3 is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. If not stated otherwise, this applies to all files contained in this package and its sub-directories.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Directory structure

File/FolderPurpose
3rdparty (dir)Third-party source code
aclocal.m4Macros for configure script
applications (dir)Application programs (see 4) above)
AUTHORSInformation about the authors of NFFT
bootstrap.shBootstrap shell script that call Autoconf and friends
ChangeLogA short version history
config (dir)Used by configure script
configureConfigure script (created by calling ./bootstrap.sh)
configure.acAutoconf configure script template
CONVENTIONSInternal coding conventions
COPYINGInformation about redistributing NFFT
doc (dir)User and developer documentation
examples (dir)Simple examples for using NFFT routines
include (dir)Header files
INSTALLInstallation instructions
julia (dir)Julia interface for nfft
kernel (dir)Source code for core library routines
Makefile.amAutomake Makefile template
Makefile.inMakefile template generated from Makefile.am, processed by configure script
matlab (dir)Matlab MEX interfaces for nfft, nfsft, nfsoft, nfft
NEWSNew and noteworthy
READMEThis file
README.mdThis file
tests (dir)CUnit tests

About

The official NFFT library repository

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

NFFT - Nonequispaced FFT

Overview

NFFT is a software library, written in C, for computing non-equispaced fast Fourier transforms and related variations. It implements the following transforms:

  1. Non-equispaced fast Fourier transform (NFFT)

    • forward transform (NFFT), i.e. frequency to time/space domain
    • adjoint transform (adjoint NFFT), i.e. time/space to frequency domain
  2. Generalisations

    • to arbitrary nodes in time and frequency domain (NNFFT)
    • to real-valued data, i.e. (co)sine transforms, (NFCT, NFST)
    • to the sphere S^2 (NFSFT)
    • to the rotation group (NFSOFT)
    • to the hyperbolic cross (NSFFT)
  3. Generalised inverse transformations based on iterative methods, e.g. CGNR/CGNE

Some examples for application of these transforms are provided:

  1. Medical imaging

    • magnetic resonance imaging (mri)
    • computerised tomography (radon)
  2. Summation schemes

    • fast summation (fastsum)
    • fast Gauss transform (FGT)
    • singular kernels
    • zonal kernels
  3. polar FFT, discrete Radon transform, ridgelet transform

Detailed API documentation in HTML format can be found in doc/html/index.html, if you are working from a release tarball. When working from a source repository, the documentation can be generated with Doxygen (which requires the doxygen-latex and perl packages):

make doc

Building

The NFFT depends on the FFTW library, which is available for many Linux distros, Homebrew on macOS and MSYS2 on Windows. If you compile the FFTW yourself, it should be configured with the flag --enable-shared (and --enable-threads for the multi-threaded version). Building the NFFT requires make and a C compiler such as gcc.

When working from a source repository, you need to run libtoolize and autoreconf first. A bash script to do this is provided. This step requries the tools autoconf, automake and libtool.

./bootstrap.sh

The rest of the build process is standard.

./configure --enable-all --enable-openmp [add options as necessary, see below]

Alternatively, you might run the configure script for Matlab.

./configure --enable-all --enable-openmp --with-matlab=/path/to/matlab

Here are some useful optional flags for ./configure:

  • --enable-all specifies that all modules should be compiled,
  • --enable-openmp enables the multicore support and
  • --enable-julia specifies that the julia interface will be compiled.
  • --with-matlab=/path/to/matlab specifies the path of a Matlab installation, and
  • --with-octave=/path/to/octave does the same for GNU Octave.
  • For a list of all available options, run ./configure --help.

Build the software.

make

Optionally, unit tests may be run. Some of the unit tests require an installation of cunit.

make check

Optionally, install NFFT on your system.

make install

Citing

The current general paper, the one that we recommend if you wish to cite NFFT, is Keiner, J., Kunis, S., and Potts, D. ''Using NFFT 3 - a software library for various nonequispaced fast Fourier transforms'' ACM Trans. Math. Software 36, Article 19, 1-30, 2009. BibTeX entry:

@article{KeKuPo09,
author = {Jens Keiner and Stefan Kunis and Daniel Potts},
title = {Using {NFFT3} - a Software Library for Various Nonequispaced Fast {Fourier} Transforms},
journal = {{ACM} Trans. Math. Software},
year = {2009},
volume = {36},
pages = {Article 19, 1--30},
doi = {10.1145/1555386.1555388}}

Feedback

Your comments are welcome! This is the third version of the library and may not be as robust or well documented as it should be. Please keep track of bugs or missing/confusing instructions and report them in our issue tracker or directly to Daniel Potts. The postal address is

 Prof. Dr. Daniel Potts
TU Chemnitz, Fakultaet fuer Mathematik
Reichenhainer Str. 39
09107 Chemnitz
GERMANY

Alternatively, you might contact Stefan Kunis or Jens Keiner.

If you find NFFT useful, we would be delighted to hear about what application you are using NFFT for!

Legal Information & Credits

Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts

This software was written by Jens Keiner, Stefan Kunis and Daniel Potts. It was developed at the Mathematical Institute, University of Luebeck, and at the Faculty of Mathematics, Chemnitz University of Technology.

NFFT3 is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. If not stated otherwise, this applies to all files contained in this package and its sub-directories.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Directory structure

File/FolderPurpose
3rdparty (dir)Third-party source code
aclocal.m4Macros for configure script
applications (dir)Application programs (see 4) above)
AUTHORSInformation about the authors of NFFT
bootstrap.shBootstrap shell script that call Autoconf and friends
ChangeLogA short version history
config (dir)Used by configure script
configureConfigure script (created by calling ./bootstrap.sh)
configure.acAutoconf configure script template
CONVENTIONSInternal coding conventions
COPYINGInformation about redistributing NFFT
doc (dir)User and developer documentation
examples (dir)Simple examples for using NFFT routines
include (dir)Header files
INSTALLInstallation instructions
julia (dir)Julia interface for nfft
kernel (dir)Source code for core library routines
Makefile.amAutomake Makefile template
Makefile.inMakefile template generated from Makefile.am, processed by configure script
matlab (dir)Matlab MEX interfaces for nfft, nfsft, nfsoft, nfft
NEWSNew and noteworthy
READMEThis file
README.mdThis file
tests (dir)CUnit tests

About

The official NFFT library repository

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

NFFT - Nonequispaced FFT

Overview

NFFT is a software library, written in C, for computing non-equispaced fast Fourier transforms and related variations. It implements the following transforms:

  1. Non-equispaced fast Fourier transform (NFFT)

    • forward transform (NFFT), i.e. frequency to time/space domain
    • adjoint transform (adjoint NFFT), i.e. time/space to frequency domain
  2. Generalisations

    • to arbitrary nodes in time and frequency domain (NNFFT)
    • to real-valued data, i.e. (co)sine transforms, (NFCT, NFST)
    • to the sphere S^2 (NFSFT)
    • to the rotation group (NFSOFT)
    • to the hyperbolic cross (NSFFT)
  3. Generalised inverse transformations based on iterative methods, e.g. CGNR/CGNE

Some examples for application of these transforms are provided:

  1. Medical imaging

    • magnetic resonance imaging (mri)
    • computerised tomography (radon)
  2. Summation schemes

    • fast summation (fastsum)
    • fast Gauss transform (FGT)
    • singular kernels
    • zonal kernels
  3. polar FFT, discrete Radon transform, ridgelet transform

Detailed API documentation in HTML format can be found in doc/html/index.html, if you are working from a release tarball. When working from a source repository, the documentation can be generated with Doxygen (which requires the doxygen-latex and perl packages):

make doc

Building

The NFFT depends on the FFTW library, which is available for many Linux distros, Homebrew on macOS and MSYS2 on Windows. If you compile the FFTW yourself, it should be configured with the flag --enable-shared (and --enable-threads for the multi-threaded version). Building the NFFT requires make and a C compiler such as gcc.

When working from a source repository, you need to run libtoolize and autoreconf first. A bash script to do this is provided. This step requries the tools autoconf, automake and libtool.

./bootstrap.sh

The rest of the build process is standard.

./configure --enable-all --enable-openmp [add options as necessary, see below]

Alternatively, you might run the configure script for Matlab.

./configure --enable-all --enable-openmp --with-matlab=/path/to/matlab

Here are some useful optional flags for ./configure:

  • --enable-all specifies that all modules should be compiled,
  • --enable-openmp enables the multicore support and
  • --enable-julia specifies that the julia interface will be compiled.
  • --with-matlab=/path/to/matlab specifies the path of a Matlab installation, and
  • --with-octave=/path/to/octave does the same for GNU Octave.
  • For a list of all available options, run ./configure --help.

Build the software.

make

Optionally, unit tests may be run. Some of the unit tests require an installation of cunit.

make check

Optionally, install NFFT on your system.

make install

Citing

The current general paper, the one that we recommend if you wish to cite NFFT, is Keiner, J., Kunis, S., and Potts, D. ''Using NFFT 3 - a software library for various nonequispaced fast Fourier transforms'' ACM Trans. Math. Software 36, Article 19, 1-30, 2009. BibTeX entry:

@article{KeKuPo09,
author = {Jens Keiner and Stefan Kunis and Daniel Potts},
title = {Using {NFFT3} - a Software Library for Various Nonequispaced Fast {Fourier} Transforms},
journal = {{ACM} Trans. Math. Software},
year = {2009},
volume = {36},
pages = {Article 19, 1--30},
doi = {10.1145/1555386.1555388}}

Feedback

Your comments are welcome! This is the third version of the library and may not be as robust or well documented as it should be. Please keep track of bugs or missing/confusing instructions and report them in our issue tracker or directly to Daniel Potts. The postal address is

 Prof. Dr. Daniel Potts
TU Chemnitz, Fakultaet fuer Mathematik
Reichenhainer Str. 39
09107 Chemnitz
GERMANY

Alternatively, you might contact Stefan Kunis or Jens Keiner.

If you find NFFT useful, we would be delighted to hear about what application you are using NFFT for!

Legal Information & Credits

Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts

This software was written by Jens Keiner, Stefan Kunis and Daniel Potts. It was developed at the Mathematical Institute, University of Luebeck, and at the Faculty of Mathematics, Chemnitz University of Technology.

NFFT3 is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. If not stated otherwise, this applies to all files contained in this package and its sub-directories.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Directory structure

File/FolderPurpose
3rdparty (dir)Third-party source code
aclocal.m4Macros for configure script
applications (dir)Application programs (see 4) above)
AUTHORSInformation about the authors of NFFT
bootstrap.shBootstrap shell script that call Autoconf and friends
ChangeLogA short version history
config (dir)Used by configure script
configureConfigure script (created by calling ./bootstrap.sh)
configure.acAutoconf configure script template
CONVENTIONSInternal coding conventions
COPYINGInformation about redistributing NFFT
doc (dir)User and developer documentation
examples (dir)Simple examples for using NFFT routines
include (dir)Header files
INSTALLInstallation instructions
julia (dir)Julia interface for nfft
kernel (dir)Source code for core library routines
Makefile.amAutomake Makefile template
Makefile.inMakefile template generated from Makefile.am, processed by configure script
matlab (dir)Matlab MEX interfaces for nfft, nfsft, nfsoft, nfft
NEWSNew and noteworthy
READMEThis file
README.mdThis file
tests (dir)CUnit tests

About

The official NFFT library repository

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

NFFT - Nonequispaced FFT

Overview

NFFT is a software library, written in C, for computing non-equispaced fast Fourier transforms and related variations. It implements the following transforms:

  1. Non-equispaced fast Fourier transform (NFFT)

    • forward transform (NFFT), i.e. frequency to time/space domain
    • adjoint transform (adjoint NFFT), i.e. time/space to frequency domain
  2. Generalisations

    • to arbitrary nodes in time and frequency domain (NNFFT)
    • to real-valued data, i.e. (co)sine transforms, (NFCT, NFST)
    • to the sphere S^2 (NFSFT)
    • to the rotation group (NFSOFT)
    • to the hyperbolic cross (NSFFT)
  3. Generalised inverse transformations based on iterative methods, e.g. CGNR/CGNE

Some examples for application of these transforms are provided:

  1. Medical imaging

    • magnetic resonance imaging (mri)
    • computerised tomography (radon)
  2. Summation schemes

    • fast summation (fastsum)
    • fast Gauss transform (FGT)
    • singular kernels
    • zonal kernels
  3. polar FFT, discrete Radon transform, ridgelet transform

Detailed API documentation in HTML format can be found in doc/html/index.html, if you are working from a release tarball. When working from a source repository, the documentation can be generated with Doxygen (which requires the doxygen-latex and perl packages):

make doc

Building

The NFFT depends on the FFTW library, which is available for many Linux distros, Homebrew on macOS and MSYS2 on Windows. If you compile the FFTW yourself, it should be configured with the flag --enable-shared (and --enable-threads for the multi-threaded version). Building the NFFT requires make and a C compiler such as gcc.

When working from a source repository, you need to run libtoolize and autoreconf first. A bash script to do this is provided. This step requries the tools autoconf, automake and libtool.

./bootstrap.sh

The rest of the build process is standard.

./configure --enable-all --enable-openmp [add options as necessary, see below]

Alternatively, you might run the configure script for Matlab.

./configure --enable-all --enable-openmp --with-matlab=/path/to/matlab

Here are some useful optional flags for ./configure:

  • --enable-all specifies that all modules should be compiled,
  • --enable-openmp enables the multicore support and
  • --enable-julia specifies that the julia interface will be compiled.
  • --with-matlab=/path/to/matlab specifies the path of a Matlab installation, and
  • --with-octave=/path/to/octave does the same for GNU Octave.
  • For a list of all available options, run ./configure --help.

Build the software.

make

Optionally, unit tests may be run. Some of the unit tests require an installation of cunit.

make check

Optionally, install NFFT on your system.

make install

Citing

The current general paper, the one that we recommend if you wish to cite NFFT, is Keiner, J., Kunis, S., and Potts, D. ''Using NFFT 3 - a software library for various nonequispaced fast Fourier transforms'' ACM Trans. Math. Software 36, Article 19, 1-30, 2009. BibTeX entry:

@article{KeKuPo09,
author = {Jens Keiner and Stefan Kunis and Daniel Potts},
title = {Using {NFFT3} - a Software Library for Various Nonequispaced Fast {Fourier} Transforms},
journal = {{ACM} Trans. Math. Software},
year = {2009},
volume = {36},
pages = {Article 19, 1--30},
doi = {10.1145/1555386.1555388}}

Feedback

Your comments are welcome! This is the third version of the library and may not be as robust or well documented as it should be. Please keep track of bugs or missing/confusing instructions and report them in our issue tracker or directly to Daniel Potts. The postal address is

 Prof. Dr. Daniel Potts
TU Chemnitz, Fakultaet fuer Mathematik
Reichenhainer Str. 39
09107 Chemnitz
GERMANY

Alternatively, you might contact Stefan Kunis or Jens Keiner.

If you find NFFT useful, we would be delighted to hear about what application you are using NFFT for!

Legal Information & Credits

Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts

This software was written by Jens Keiner, Stefan Kunis and Daniel Potts. It was developed at the Mathematical Institute, University of Luebeck, and at the Faculty of Mathematics, Chemnitz University of Technology.

NFFT3 is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. If not stated otherwise, this applies to all files contained in this package and its sub-directories.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Directory structure

File/FolderPurpose
3rdparty (dir)Third-party source code
aclocal.m4Macros for configure script
applications (dir)Application programs (see 4) above)
AUTHORSInformation about the authors of NFFT
bootstrap.shBootstrap shell script that call Autoconf and friends
ChangeLogA short version history
config (dir)Used by configure script
configureConfigure script (created by calling ./bootstrap.sh)
configure.acAutoconf configure script template
CONVENTIONSInternal coding conventions
COPYINGInformation about redistributing NFFT
doc (dir)User and developer documentation
examples (dir)Simple examples for using NFFT routines
include (dir)Header files
INSTALLInstallation instructions
julia (dir)Julia interface for nfft
kernel (dir)Source code for core library routines
Makefile.amAutomake Makefile template
Makefile.inMakefile template generated from Makefile.am, processed by configure script
matlab (dir)Matlab MEX interfaces for nfft, nfsft, nfsoft, nfft
NEWSNew and noteworthy
READMEThis file
README.mdThis file
tests (dir)CUnit tests

About

The official NFFT library repository

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

NFFT - Nonequispaced FFT

Overview

NFFT is a software library, written in C, for computing non-equispaced fast Fourier transforms and related variations. It implements the following transforms:

  1. Non-equispaced fast Fourier transform (NFFT)

    • forward transform (NFFT), i.e. frequency to time/space domain
    • adjoint transform (adjoint NFFT), i.e. time/space to frequency domain
  2. Generalisations

    • to arbitrary nodes in time and frequency domain (NNFFT)
    • to real-valued data, i.e. (co)sine transforms, (NFCT, NFST)
    • to the sphere S^2 (NFSFT)
    • to the rotation group (NFSOFT)
    • to the hyperbolic cross (NSFFT)
  3. Generalised inverse transformations based on iterative methods, e.g. CGNR/CGNE

Some examples for application of these transforms are provided:

  1. Medical imaging

    • magnetic resonance imaging (mri)
    • computerised tomography (radon)
  2. Summation schemes

    • fast summation (fastsum)
    • fast Gauss transform (FGT)
    • singular kernels
    • zonal kernels
  3. polar FFT, discrete Radon transform, ridgelet transform

Detailed API documentation in HTML format can be found in doc/html/index.html, if you are working from a release tarball. When working from a source repository, the documentation can be generated with Doxygen (which requires the doxygen-latex and perl packages):

make doc

Building

The NFFT depends on the FFTW library, which is available for many Linux distros, Homebrew on macOS and MSYS2 on Windows. If you compile the FFTW yourself, it should be configured with the flag --enable-shared (and --enable-threads for the multi-threaded version). Building the NFFT requires make and a C compiler such as gcc.

When working from a source repository, you need to run libtoolize and autoreconf first. A bash script to do this is provided. This step requries the tools autoconf, automake and libtool.

./bootstrap.sh

The rest of the build process is standard.

./configure --enable-all --enable-openmp [add options as necessary, see below]

Alternatively, you might run the configure script for Matlab.

./configure --enable-all --enable-openmp --with-matlab=/path/to/matlab

Here are some useful optional flags for ./configure:

  • --enable-all specifies that all modules should be compiled,
  • --enable-openmp enables the multicore support and
  • --enable-julia specifies that the julia interface will be compiled.
  • --with-matlab=/path/to/matlab specifies the path of a Matlab installation, and
  • --with-octave=/path/to/octave does the same for GNU Octave.
  • For a list of all available options, run ./configure --help.

Build the software.

make

Optionally, unit tests may be run. Some of the unit tests require an installation of cunit.

make check

Optionally, install NFFT on your system.

make install

Citing

The current general paper, the one that we recommend if you wish to cite NFFT, is Keiner, J., Kunis, S., and Potts, D. ''Using NFFT 3 - a software library for various nonequispaced fast Fourier transforms'' ACM Trans. Math. Software 36, Article 19, 1-30, 2009. BibTeX entry:

@article{KeKuPo09,
author = {Jens Keiner and Stefan Kunis and Daniel Potts},
title = {Using {NFFT3} - a Software Library for Various Nonequispaced Fast {Fourier} Transforms},
journal = {{ACM} Trans. Math. Software},
year = {2009},
volume = {36},
pages = {Article 19, 1--30},
doi = {10.1145/1555386.1555388}}

Feedback

Your comments are welcome! This is the third version of the library and may not be as robust or well documented as it should be. Please keep track of bugs or missing/confusing instructions and report them in our issue tracker or directly to Daniel Potts. The postal address is

 Prof. Dr. Daniel Potts
TU Chemnitz, Fakultaet fuer Mathematik
Reichenhainer Str. 39
09107 Chemnitz
GERMANY

Alternatively, you might contact Stefan Kunis or Jens Keiner.

If you find NFFT useful, we would be delighted to hear about what application you are using NFFT for!

Legal Information & Credits

Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts

This software was written by Jens Keiner, Stefan Kunis and Daniel Potts. It was developed at the Mathematical Institute, University of Luebeck, and at the Faculty of Mathematics, Chemnitz University of Technology.

NFFT3 is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. If not stated otherwise, this applies to all files contained in this package and its sub-directories.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Directory structure

File/FolderPurpose
3rdparty (dir)Third-party source code
aclocal.m4Macros for configure script
applications (dir)Application programs (see 4) above)
AUTHORSInformation about the authors of NFFT
bootstrap.shBootstrap shell script that call Autoconf and friends
ChangeLogA short version history
config (dir)Used by configure script
configureConfigure script (created by calling ./bootstrap.sh)
configure.acAutoconf configure script template
CONVENTIONSInternal coding conventions
COPYINGInformation about redistributing NFFT
doc (dir)User and developer documentation
examples (dir)Simple examples for using NFFT routines
include (dir)Header files
INSTALLInstallation instructions
julia (dir)Julia interface for nfft
kernel (dir)Source code for core library routines
Makefile.amAutomake Makefile template
Makefile.inMakefile template generated from Makefile.am, processed by configure script
matlab (dir)Matlab MEX interfaces for nfft, nfsft, nfsoft, nfft
NEWSNew and noteworthy
READMEThis file
README.mdThis file
tests (dir)CUnit tests

About

The official NFFT library repository

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

NFFT - Nonequispaced FFT

Overview

NFFT is a software library, written in C, for computing non-equispaced fast Fourier transforms and related variations. It implements the following transforms:

  1. Non-equispaced fast Fourier transform (NFFT)

    • forward transform (NFFT), i.e. frequency to time/space domain
    • adjoint transform (adjoint NFFT), i.e. time/space to frequency domain
  2. Generalisations

    • to arbitrary nodes in time and frequency domain (NNFFT)
    • to real-valued data, i.e. (co)sine transforms, (NFCT, NFST)
    • to the sphere S^2 (NFSFT)
    • to the rotation group (NFSOFT)
    • to the hyperbolic cross (NSFFT)
  3. Generalised inverse transformations based on iterative methods, e.g. CGNR/CGNE

Some examples for application of these transforms are provided:

  1. Medical imaging

    • magnetic resonance imaging (mri)
    • computerised tomography (radon)
  2. Summation schemes

    • fast summation (fastsum)
    • fast Gauss transform (FGT)
    • singular kernels
    • zonal kernels
  3. polar FFT, discrete Radon transform, ridgelet transform

Detailed API documentation in HTML format can be found in doc/html/index.html, if you are working from a release tarball. When working from a source repository, the documentation can be generated with Doxygen (which requires the doxygen-latex and perl packages):

make doc

Building

The NFFT depends on the FFTW library, which is available for many Linux distros, Homebrew on macOS and MSYS2 on Windows. If you compile the FFTW yourself, it should be configured with the flag --enable-shared (and --enable-threads for the multi-threaded version). Building the NFFT requires make and a C compiler such as gcc.

When working from a source repository, you need to run libtoolize and autoreconf first. A bash script to do this is provided. This step requries the tools autoconf, automake and libtool.

./bootstrap.sh

The rest of the build process is standard.

./configure --enable-all --enable-openmp [add options as necessary, see below]

Alternatively, you might run the configure script for Matlab.

./configure --enable-all --enable-openmp --with-matlab=/path/to/matlab

Here are some useful optional flags for ./configure:

  • --enable-all specifies that all modules should be compiled,
  • --enable-openmp enables the multicore support and
  • --enable-julia specifies that the julia interface will be compiled.
  • --with-matlab=/path/to/matlab specifies the path of a Matlab installation, and
  • --with-octave=/path/to/octave does the same for GNU Octave.
  • For a list of all available options, run ./configure --help.

Build the software.

make

Optionally, unit tests may be run. Some of the unit tests require an installation of cunit.

make check

Optionally, install NFFT on your system.

make install

Citing

The current general paper, the one that we recommend if you wish to cite NFFT, is Keiner, J., Kunis, S., and Potts, D. ''Using NFFT 3 - a software library for various nonequispaced fast Fourier transforms'' ACM Trans. Math. Software 36, Article 19, 1-30, 2009. BibTeX entry:

@article{KeKuPo09,
author = {Jens Keiner and Stefan Kunis and Daniel Potts},
title = {Using {NFFT3} - a Software Library for Various Nonequispaced Fast {Fourier} Transforms},
journal = {{ACM} Trans. Math. Software},
year = {2009},
volume = {36},
pages = {Article 19, 1--30},
doi = {10.1145/1555386.1555388}}

Feedback

Your comments are welcome! This is the third version of the library and may not be as robust or well documented as it should be. Please keep track of bugs or missing/confusing instructions and report them in our issue tracker or directly to Daniel Potts. The postal address is

 Prof. Dr. Daniel Potts
TU Chemnitz, Fakultaet fuer Mathematik
Reichenhainer Str. 39
09107 Chemnitz
GERMANY

Alternatively, you might contact Stefan Kunis or Jens Keiner.

If you find NFFT useful, we would be delighted to hear about what application you are using NFFT for!

Legal Information & Credits

Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts

This software was written by Jens Keiner, Stefan Kunis and Daniel Potts. It was developed at the Mathematical Institute, University of Luebeck, and at the Faculty of Mathematics, Chemnitz University of Technology.

NFFT3 is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. If not stated otherwise, this applies to all files contained in this package and its sub-directories.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Directory structure

File/FolderPurpose
3rdparty (dir)Third-party source code
aclocal.m4Macros for configure script
applications (dir)Application programs (see 4) above)
AUTHORSInformation about the authors of NFFT
bootstrap.shBootstrap shell script that call Autoconf and friends
ChangeLogA short version history
config (dir)Used by configure script
configureConfigure script (created by calling ./bootstrap.sh)
configure.acAutoconf configure script template
CONVENTIONSInternal coding conventions
COPYINGInformation about redistributing NFFT
doc (dir)User and developer documentation
examples (dir)Simple examples for using NFFT routines
include (dir)Header files
INSTALLInstallation instructions
julia (dir)Julia interface for nfft
kernel (dir)Source code for core library routines
Makefile.amAutomake Makefile template
Makefile.inMakefile template generated from Makefile.am, processed by configure script
matlab (dir)Matlab MEX interfaces for nfft, nfsft, nfsoft, nfft
NEWSNew and noteworthy
READMEThis file
README.mdThis file
tests (dir)CUnit tests

About

The official NFFT library repository

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

NFFT - Nonequispaced FFT

Overview

NFFT is a software library, written in C, for computing non-equispaced fast Fourier transforms and related variations. It implements the following transforms:

  1. Non-equispaced fast Fourier transform (NFFT)

    • forward transform (NFFT), i.e. frequency to time/space domain
    • adjoint transform (adjoint NFFT), i.e. time/space to frequency domain
  2. Generalisations

    • to arbitrary nodes in time and frequency domain (NNFFT)
    • to real-valued data, i.e. (co)sine transforms, (NFCT, NFST)
    • to the sphere S^2 (NFSFT)
    • to the rotation group (NFSOFT)
    • to the hyperbolic cross (NSFFT)
  3. Generalised inverse transformations based on iterative methods, e.g. CGNR/CGNE

Some examples for application of these transforms are provided:

  1. Medical imaging

    • magnetic resonance imaging (mri)
    • computerised tomography (radon)
  2. Summation schemes

    • fast summation (fastsum)
    • fast Gauss transform (FGT)
    • singular kernels
    • zonal kernels
  3. polar FFT, discrete Radon transform, ridgelet transform

Detailed API documentation in HTML format can be found in doc/html/index.html, if you are working from a release tarball. When working from a source repository, the documentation can be generated with Doxygen (which requires the doxygen-latex and perl packages):

make doc

Building

The NFFT depends on the FFTW library, which is available for many Linux distros, Homebrew on macOS and MSYS2 on Windows. If you compile the FFTW yourself, it should be configured with the flag --enable-shared (and --enable-threads for the multi-threaded version). Building the NFFT requires make and a C compiler such as gcc.

When working from a source repository, you need to run libtoolize and autoreconf first. A bash script to do this is provided. This step requries the tools autoconf, automake and libtool.

./bootstrap.sh

The rest of the build process is standard.

./configure --enable-all --enable-openmp [add options as necessary, see below]

Alternatively, you might run the configure script for Matlab.

./configure --enable-all --enable-openmp --with-matlab=/path/to/matlab

Here are some useful optional flags for ./configure:

  • --enable-all specifies that all modules should be compiled,
  • --enable-openmp enables the multicore support and
  • --enable-julia specifies that the julia interface will be compiled.
  • --with-matlab=/path/to/matlab specifies the path of a Matlab installation, and
  • --with-octave=/path/to/octave does the same for GNU Octave.
  • For a list of all available options, run ./configure --help.

Build the software.

make

Optionally, unit tests may be run. Some of the unit tests require an installation of cunit.

make check

Optionally, install NFFT on your system.

make install

Citing

The current general paper, the one that we recommend if you wish to cite NFFT, is Keiner, J., Kunis, S., and Potts, D. ''Using NFFT 3 - a software library for various nonequispaced fast Fourier transforms'' ACM Trans. Math. Software 36, Article 19, 1-30, 2009. BibTeX entry:

@article{KeKuPo09,
author = {Jens Keiner and Stefan Kunis and Daniel Potts},
title = {Using {NFFT3} - a Software Library for Various Nonequispaced Fast {Fourier} Transforms},
journal = {{ACM} Trans. Math. Software},
year = {2009},
volume = {36},
pages = {Article 19, 1--30},
doi = {10.1145/1555386.1555388}}

Feedback

Your comments are welcome! This is the third version of the library and may not be as robust or well documented as it should be. Please keep track of bugs or missing/confusing instructions and report them in our issue tracker or directly to Daniel Potts. The postal address is

 Prof. Dr. Daniel Potts
TU Chemnitz, Fakultaet fuer Mathematik
Reichenhainer Str. 39
09107 Chemnitz
GERMANY

Alternatively, you might contact Stefan Kunis or Jens Keiner.

If you find NFFT useful, we would be delighted to hear about what application you are using NFFT for!

Legal Information & Credits

Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts

This software was written by Jens Keiner, Stefan Kunis and Daniel Potts. It was developed at the Mathematical Institute, University of Luebeck, and at the Faculty of Mathematics, Chemnitz University of Technology.

NFFT3 is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. If not stated otherwise, this applies to all files contained in this package and its sub-directories.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Directory structure

File/FolderPurpose
3rdparty (dir)Third-party source code
aclocal.m4Macros for configure script
applications (dir)Application programs (see 4) above)
AUTHORSInformation about the authors of NFFT
bootstrap.shBootstrap shell script that call Autoconf and friends
ChangeLogA short version history
config (dir)Used by configure script
configureConfigure script (created by calling ./bootstrap.sh)
configure.acAutoconf configure script template
CONVENTIONSInternal coding conventions
COPYINGInformation about redistributing NFFT
doc (dir)User and developer documentation
examples (dir)Simple examples for using NFFT routines
include (dir)Header files
INSTALLInstallation instructions
julia (dir)Julia interface for nfft
kernel (dir)Source code for core library routines
Makefile.amAutomake Makefile template
Makefile.inMakefile template generated from Makefile.am, processed by configure script
matlab (dir)Matlab MEX interfaces for nfft, nfsft, nfsoft, nfft
NEWSNew and noteworthy
READMEThis file
README.mdThis file
tests (dir)CUnit tests

About

The official NFFT library repository

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

NFFT - Nonequispaced FFT

Overview

NFFT is a software library, written in C, for computing non-equispaced fast Fourier transforms and related variations. It implements the following transforms:

  1. Non-equispaced fast Fourier transform (NFFT)

    • forward transform (NFFT), i.e. frequency to time/space domain
    • adjoint transform (adjoint NFFT), i.e. time/space to frequency domain
  2. Generalisations

    • to arbitrary nodes in time and frequency domain (NNFFT)
    • to real-valued data, i.e. (co)sine transforms, (NFCT, NFST)
    • to the sphere S^2 (NFSFT)
    • to the rotation group (NFSOFT)
    • to the hyperbolic cross (NSFFT)
  3. Generalised inverse transformations based on iterative methods, e.g. CGNR/CGNE

Some examples for application of these transforms are provided:

  1. Medical imaging

    • magnetic resonance imaging (mri)
    • computerised tomography (radon)
  2. Summation schemes

    • fast summation (fastsum)
    • fast Gauss transform (FGT)
    • singular kernels
    • zonal kernels
  3. polar FFT, discrete Radon transform, ridgelet transform

Detailed API documentation in HTML format can be found in doc/html/index.html, if you are working from a release tarball. When working from a source repository, the documentation can be generated with Doxygen (which requires the doxygen-latex and perl packages):

make doc

Building

The NFFT depends on the FFTW library, which is available for many Linux distros, Homebrew on macOS and MSYS2 on Windows. If you compile the FFTW yourself, it should be configured with the flag --enable-shared (and --enable-threads for the multi-threaded version). Building the NFFT requires make and a C compiler such as gcc.

When working from a source repository, you need to run libtoolize and autoreconf first. A bash script to do this is provided. This step requries the tools autoconf, automake and libtool.

./bootstrap.sh

The rest of the build process is standard.

./configure --enable-all --enable-openmp [add options as necessary, see below]

Alternatively, you might run the configure script for Matlab.

./configure --enable-all --enable-openmp --with-matlab=/path/to/matlab

Here are some useful optional flags for ./configure:

  • --enable-all specifies that all modules should be compiled,
  • --enable-openmp enables the multicore support and
  • --enable-julia specifies that the julia interface will be compiled.
  • --with-matlab=/path/to/matlab specifies the path of a Matlab installation, and
  • --with-octave=/path/to/octave does the same for GNU Octave.
  • For a list of all available options, run ./configure --help.

Build the software.

make

Optionally, unit tests may be run. Some of the unit tests require an installation of cunit.

make check

Optionally, install NFFT on your system.

make install

Citing

The current general paper, the one that we recommend if you wish to cite NFFT, is Keiner, J., Kunis, S., and Potts, D. ''Using NFFT 3 - a software library for various nonequispaced fast Fourier transforms'' ACM Trans. Math. Software 36, Article 19, 1-30, 2009. BibTeX entry:

@article{KeKuPo09,
author = {Jens Keiner and Stefan Kunis and Daniel Potts},
title = {Using {NFFT3} - a Software Library for Various Nonequispaced Fast {Fourier} Transforms},
journal = {{ACM} Trans. Math. Software},
year = {2009},
volume = {36},
pages = {Article 19, 1--30},
doi = {10.1145/1555386.1555388}}

Feedback

Your comments are welcome! This is the third version of the library and may not be as robust or well documented as it should be. Please keep track of bugs or missing/confusing instructions and report them in our issue tracker or directly to Daniel Potts. The postal address is

 Prof. Dr. Daniel Potts
TU Chemnitz, Fakultaet fuer Mathematik
Reichenhainer Str. 39
09107 Chemnitz
GERMANY

Alternatively, you might contact Stefan Kunis or Jens Keiner.

If you find NFFT useful, we would be delighted to hear about what application you are using NFFT for!

Legal Information & Credits

Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts

This software was written by Jens Keiner, Stefan Kunis and Daniel Potts. It was developed at the Mathematical Institute, University of Luebeck, and at the Faculty of Mathematics, Chemnitz University of Technology.

NFFT3 is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. If not stated otherwise, this applies to all files contained in this package and its sub-directories.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Directory structure

File/FolderPurpose
3rdparty (dir)Third-party source code
aclocal.m4Macros for configure script
applications (dir)Application programs (see 4) above)
AUTHORSInformation about the authors of NFFT
bootstrap.shBootstrap shell script that call Autoconf and friends
ChangeLogA short version history
config (dir)Used by configure script
configureConfigure script (created by calling ./bootstrap.sh)
configure.acAutoconf configure script template
CONVENTIONSInternal coding conventions
COPYINGInformation about redistributing NFFT
doc (dir)User and developer documentation
examples (dir)Simple examples for using NFFT routines
include (dir)Header files
INSTALLInstallation instructions
julia (dir)Julia interface for nfft
kernel (dir)Source code for core library routines
Makefile.amAutomake Makefile template
Makefile.inMakefile template generated from Makefile.am, processed by configure script
matlab (dir)Matlab MEX interfaces for nfft, nfsft, nfsoft, nfft
NEWSNew and noteworthy
READMEThis file
README.mdThis file
tests (dir)CUnit tests

About

The official NFFT library repository

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages