diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml new file mode 100644 index 00000000..86c6f784 --- /dev/null +++ b/.github/workflows/c-cpp.yml @@ -0,0 +1,33 @@ +name: C/C++ CI + +on: + push: + branches: [ develop, master, 'release/**', 'feature/**', 'bugfix/**' ] + pull_request: + branches: [ develop, master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Install libraries + run: | + sudo apt-get update + sudo apt-get install libfftw3-dev libcunit1-dev liboctave-dev doxygen-latex graphviz + - name: bootstrap + run: ./bootstrap.sh + - name: configure + run: ./configure --enable-all --enable-openmp --with-octave=/usr + - name: make + run: make + - name: make check + run: make check + - name: run Octave testfiles + run: for DIR in matlab/nf*t matlab/fastsum; do cd $DIR; for NAME in simple_test*.m; do octave --eval="run('$NAME')"; done; cd ../..; done + - name: run Julia testfiles + run: for DIR in julia/nf*t julia/fastsum; do cd $DIR; for NAME in simple_test*.jl; do julia "$NAME"; done; cd ../..; done + - name: make dist + run: make dist diff --git a/.gitignore b/.gitignore index 39d6a47f..4a0d53c5 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,7 @@ *.asv # Other +.autotools .cproject .project .settings @@ -90,6 +91,8 @@ applications/fastsum/fastsum_test applications/fastsum/fastsum_test_threads applications/fastsumS2/fastsumS2 applications/iterS2/iterS2 +applications/mri/mri2d/*.dat +applications/mri/mri2d/pics_* applications/mri/mri2d/construct_data_2d applications/mri/mri2d/construct_data_inh_2d1d applications/mri/mri2d/construct_data_inh_3d @@ -98,6 +101,8 @@ applications/mri/mri2d/reconstruct_data_gridding applications/mri/mri2d/reconstruct_data_inh_2d1d applications/mri/mri2d/reconstruct_data_inh_3d applications/mri/mri2d/reconstruct_data_inh_nnfft +applications/mri/mri3d/*.dat +applications/mri/mri3d/pics_* applications/mri/mri3d/construct_data_2d1d applications/mri/mri3d/construct_data_3d applications/mri/mri3d/reconstruct_data_2d1d @@ -153,3 +158,4 @@ matlab/tests/check_*_matlab.output windows-build-dll*/* linux-build-mex/* nfft-3.*.tar.gz +.vscode/* diff --git a/.travis.yml b/.travis.yml index b2624617..24569e76 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,19 @@ language: c compiler: - gcc -- clang +before_cache: +- |- + case $TRAVIS_OS_NAME in + osx) + brew cleanup;; + windows) + # https://unix.stackexchange.com/a/137322/107554 + $msys2 pacman --sync --clean --noconfirm; + rm -f C:\tools\msys64\update.log; + rm -rf C:\tools\msys64\var\log;; + esac os: linux -dist: xenial -sudo: false +dist: bionic addons: apt: packages: @@ -12,43 +21,108 @@ addons: - libcunit1-dev env: - WINDOW=kaiserbessel PRECISION= -- WINDOW=gaussian PRECISION= -- WINDOW=bspline PRECISION= -- WINDOW=sinc PRECISION= - WINDOW=kaiserbessel PRECISION=--enable-float -- WINDOW=gaussian PRECISION=--enable-float -- WINDOW=bspline PRECISION=--enable-float -- WINDOW=sinc PRECISION=--enable-float - WINDOW=kaiserbessel PRECISION=--enable-long-double -- WINDOW=gaussian PRECISION=--enable-long-double -- WINDOW=bspline PRECISION=--enable-long-double -- WINDOW=sinc PRECISION=--enable-long-double -matrix: +jobs: include: - - compiler: gcc - sudo: required - env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 - - compiler: clang - sudo: required - env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 - - compiler: gcc + - os: osx + osx_image: xcode12u + env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 + addons: { homebrew: { packages: ["fftw", "cunit", "gcc@9", "octave"], casks: ["julia"] } } + cache: { directories: ["$HOME/Library/Caches/Homebrew"] } + - os: windows + compiler: gcc env: WINDOW=kaiserbessel PRECISION= BUILD_JULIA=1 - addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev"] } } - - compiler: clang + cache: { directories: ["$HOME/AppData/Local/Temp/chocolatey", "/C/tools/msys64"] } + git: { autocrlf: input, symlinks: true } + - os: windows + compiler: clang env: WINDOW=kaiserbessel PRECISION= BUILD_JULIA=1 - addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev"] } } + cache: { directories: ["$HOME/AppData/Local/Temp/chocolatey", "/C/tools/msys64"] } + git: { autocrlf: input, symlinks: true } + - dist: focal + compiler: gcc + env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 + addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev", "julia"] } } + - dist: bionic + compiler: clang + env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 + addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } - compiler: gcc - env: WINDOW=kaiserbessel PRECISION= DIST=dist + env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } - compiler: clang - env: WINDOW=kaiserbessel PRECISION= DIST=dist + env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } + - dist: focal + compiler: gcc + env: WINDOW=kaiserbessel PRECISION=--enable-float BUILD_OCTAVE=1 + addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } + - compiler: clang + env: WINDOW=kaiserbessel PRECISION=--enable-float BUILD_OCTAVE=1 + addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } + - compiler: clang + env: WINDOW=kaiserbessel PRECISION=--enable-long-double + - env: WINDOW=gaussian PRECISION= + - env: WINDOW=bspline PRECISION= + - env: WINDOW=sinc PRECISION= + - env: WINDOW=gaussian PRECISION=--enable-long-double + - env: WINDOW=bspline PRECISION=--enable-long-double + - env: WINDOW=sinc PRECISION=--enable-long-double + - env: WINDOW=gaussian PRECISION=--enable-float + - env: WINDOW=bspline PRECISION=--enable-float + - env: WINDOW=sinc PRECISION=--enable-float +before_install: +- |- + case $TRAVIS_OS_NAME in + windows) + [[ ! -f C:/tools/msys64/msys2_shell.cmd ]] && rm -rf C:/tools/msys64 + choco uninstall -y mingw + choco upgrade --no-progress -y msys2 julia + export msys2='cmd //C RefreshEnv.cmd ' + export msys2+='& set MSYS=winsymlinks:nativestrict ' + export msys2+='& C:\\tools\\msys64\\msys2_shell.cmd -defterm -no-start' + export mingw64="$msys2 -mingw64 -full-path -here -c "\"\$@"\" --" + export msys2+=" -msys2 -c "\"\$@"\" --" + $msys2 pacman --sync --noconfirm --needed mingw-w64-x86_64-gcc mingw-w64-x86_64-make mingw-w64-x86_64-fftw mingw-w64-x86_64-cunit autoconf perl libtool automake make + if [ "$CC" == "clang" ]; then $msys2 pacman --sync --noconfirm --needed mingw-w64-x86_64-clang mingw-w64-x86_64-openmp; fi + ## Install more MSYS2 packages from https://packages.msys2.org/base here + taskkill //IM gpg-agent.exe //F # https://travis-ci.community/t/4967 + export PATH=/C/tools/msys64/mingw64/bin:$PATH + export MAKE=mingw32-make # so that Autotools can find it + ;; + *) + export mingw64= + ;; + esac before_script: - if [ "$BUILD_OCTAVE" = "1" ]; then - sudo add-apt-repository -y ppa:octave/stable; - sudo apt-get update --option Acquire::Retries=10 --option Acquire::http::Timeout="30"; - sudo apt-get install -y libfftw3-dev libcunit1-dev liboctave-dev; - fi; + cat /proc/cpuinfo; + case $TRAVIS_OS_NAME in + linux) + if [ "$CC" == "clang" ]; then export LD_LIBRARY_PATH='/usr/local/clang/lib'; fi; + if [ "$BUILD_OCTAVE" = "1" ]; then + export OCTAVEDIR=/usr; + export OCTAVE=octave; + fi; + if [ "$BUILD_JULIA" = "1" ] && [ "$TRAVIS_DIST" = "bionic" ]; then + wget -q https://julialang-s3.julialang.org/bin/linux/x64/1.3/julia-1.3.1-linux-x86_64.tar.gz && tar -xf julia-*-linux-x86_64.tar.gz; + export julia=$(pwd)/julia-1.3.1/bin/julia; + fi;; + windows) + if [ "$CC" == "clang" ]; then export OPENMP_CFLAGS=-fopenmp=libomp; export LDFLAGS=-lomp; fi; + if [ "$BUILD_OCTAVE" = "1" ]; then + wget -q https://ftp.gnu.org/gnu/octave/windows/octave-5.2.0-w64.7z && 7z x octave-*.7z; + export OCTAVEDIR=$(pwd)/octave-5.2.0-w64; + rm $OCTAVEDIR/lib/octave/5.2.0/lib*.la; + export OCTAVE=$OCTAVEDIR/bin/octave-cli.exe; + fi;; + osx) + export CC=gcc-9; + export CPPFLAGS=-I/usr/local/include; + export LDFLAGS=-L/usr/local/lib; + export OCTAVEDIR=/usr/local; + export OCTAVE=octave-cli;; + esac; if [ "x$TRAVIS_TAG" != "x" ]; then NFFT_TRAVIS_TAG=$(sed -e 's/\([0-9]*\.[0-9]*\.[0-9]*\)\(.*\)/\1.\2/' <<< "$TRAVIS_TAG"); a=( ${NFFT_TRAVIS_TAG//./ } ); @@ -57,13 +131,15 @@ before_script: mv configure.ac.modified configure.ac; fi; fi; -script: cat /proc/cpuinfo; ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable-all - $(if test "$CC" = "clang"; then echo ""; else echo "--enable-openmp"; fi) - $(if test "$BUILD_OCTAVE" = "1"; then echo "--with-octave=/usr"; else echo ""; fi) - $(if test "$BUILD_JULIA" = "1"; then echo "--enable-julia"; else echo ""; fi) - && make - && make check && make $DIST - && if test "$BUILD_JULIA" = "1"; then wget https://julialang-s3.julialang.org/bin/linux/x64/1.1/julia-1.1.1-linux-x86_64.tar.gz && tar -xf julia-1.1.1-linux-x86_64.tar.gz && for DIR in nfft nfct; do cd julia/$DIR; for NAME in simple_test*.jl; do ./../../julia-1.1.1/bin/julia "$NAME"; done; cd ../..; done; fi; + +script: $mingw64 ./bootstrap.sh + && $mingw64 ./configure --with-window=$WINDOW $PRECISION --enable-all --enable-openmp + $(if [ "$BUILD_OCTAVE" = "1" ]; then echo "--with-octave=$OCTAVEDIR"; else echo ""; fi) + $(if [ "$BUILD_JULIA" = "1" ]; then echo "--enable-julia"; else echo ""; fi) + && $mingw64 make + && $mingw64 make check && $mingw64 make $DIST + && if test "$BUILD_JULIA" = "1"; then for DIR in julia/nf*t julia/fastsum; do cd $DIR; for NAME in simple_test*.jl; do julia "$NAME"; done; cd ../..; done; fi + && if test "$BUILD_OCTAVE" = "1"; then for DIR in matlab/nf*t matlab/fastsum; do cd $DIR; for NAME in simple_test*.m; do $OCTAVE --eval="run('$NAME')"; done; cd ../..; done; fi after_failure: cat config.log && cat tests/test-suite.log && if test "$BUILD_OCTAVE" = "1"; then cat matlab/tests/test-suite.log; fi notifications: email: false @@ -79,6 +155,6 @@ deploy: file: ${NFFT_DISTRO} skip_cleanup: true on: - condition: $DIST = dist && $CC = clang + condition: $DIST = distcheck && $CC = clang tags: true repo: NFFT/nfft diff --git a/3rdparty/README b/3rdparty/README index be043b79..fe6f9e13 100644 --- a/3rdparty/README +++ b/3rdparty/README @@ -7,3 +7,5 @@ package. Currently, the following packages are included: CSTRIPACK - A C-version of Robert J. Renka's the STRIPACK Fortran package to compute Delaunay triangulations and Voronoi partitions on the unit sphere. +This package is currently not contained in make dist, since it is only used by +iterS2. diff --git a/AUTHORS b/AUTHORS index 35d72df0..a91289eb 100644 --- a/AUTHORS +++ b/AUTHORS @@ -39,8 +39,21 @@ Dr. Tobias Knopp Dr. Antje Vollrath - transforms on the rotation group SO(3) (/kernel/nfsoft) -Toni Volkmer +Dr. Toni Volkmer - OpenMP parallelization of nfft (/kernel/nfft) - OpenMP parallelization of nfsft (/kernel/nfsft) - OpenMP parallelization of fast summation (/applications/fastsum) +Dr. Michael Quellmalz + - OpenMP parallelization of nfsoft (/kernel/nfsoft) + - Matlab mex interface for nfsoft (/matlab/nfsoft) + +Felix Bartel + - Matlab mex interface for fpt (/matlab/fpt) + +Melanie Kircheis + - inverse nfft in 1D (/matlab/infft1d) + +Michael Schmischke + - Julia interface (/julia) + diff --git a/CONVENTIONS b/CONVENTIONS deleted file mode 100644 index af27c52b..00000000 --- a/CONVENTIONS +++ /dev/null @@ -1,25 +0,0 @@ -Code conventions used internally by NFFT3 (not in API): - - Common names: - - R : real type, (typically fftw_real) - E : real type for local variables (possibly extra precision) - C : complex type - A : assert - CK : check - X(...) : used for mangling of external names (see below) - Y(...) : used for mangling of external names (see below) - FFTW(...) : used for mangling of FFTW API names - -NAME MANGLING: use Y(foo) for external names instead of nfft_foo. - Y(foo) expands to nfftf_foo, nfftl_foo, or nfft_foo, depending - on the precision. - - X(foo) also expands to the corresponding prefix, but is local - to each module. I.e. X(foo) will expand to nfct_foo in the - NFCT module, but Y(foo) will always be nfft_foo. - - FFTW(foo) expands to fftw_foo. - - Names that are not exported do not need to be mangled. - \ No newline at end of file diff --git a/CONVENTIONS.md b/CONVENTIONS.md new file mode 100644 index 00000000..eae7b54a --- /dev/null +++ b/CONVENTIONS.md @@ -0,0 +1,102 @@ +# Code Conventions Used Internally by NFFT3 (not in API) + +## Common Names + +Symbol | Meaning / Role +:-----------|:-------------------------------------------------------- +`R` | real type, (typically `fftw_real`) +`E` | real type for local variables (possibly extra precision) +`C` | complex type +`A` | assert +`CK` | check +`X(...)` | used for mangling of external names (see below) +`Y(...)` | used for mangling of external names (see below) +`FFTW(...)` | used for mangling of FFTW API names + + + +## Name Mangling + +Use `Y(foo)` for external names instead of `nfft_foo`. + +`Y(foo)` expands to `nfftf_foo`, `nfftl_foo`, or `nfft_foo`, depending on the +precision. + +`X(foo)` also expands to the corresponding prefix, but is local to each module. +I. e. `X(foo)` will expand to `nfct_foo` in the NFCT module, but `Y(foo)` will +always be `nfft_foo`. + +`FFTW(foo)` expands to `fftw_foo`. + +Names which are not exported do not need to be mangled. + + + +## Indentation and Spacing + +Indentation is processed using two spaces: + +``` +// Level 1. + // Level 2. +``` + +Operators and operands, as well, should be padded with a single space character +such that every token is separated from neighbouring ones by a space: + +``` +int a = 0x1 + 0x2; +``` + + +## Overall Code Style + +### General Style Convention + +In general, the BSD style should be applied for new lines of code: + +``` +int foo(int x, int y, int z) +{ + if (x < foo(y, z)) + { + var = bar[4] + 5; + } + else + { + while (z) + { + var += foo(z, z); + z--; + } + return ++x + bar(); + } +} +``` + +If desired, the style might be combined with the GNU style as follows: + +``` +int foo (int x, int y, int z) +{ + if (x < foo (y, z)) + var = bar[4] + 5; + else + { + while (z) + { + var += foo (z, z); + z--; + } + return ++x + bar (); + } +} +``` + +One style should be applied consequently when writing code. In case that a +source file was enriched with new lines, these lines should apply the chosen +style. A refactoring of already existing lines is not required. Should the +change affect already existing sections of the file, they should be refactored +such that they apply the chosen style. If a change affects lines which already +apply one of the styles above, the change should follow the convention of the +already existing lines. diff --git a/ChangeLog b/ChangeLog index 512c2c2e..0ab46abe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,44 @@ This file contains the version history for NFFT 3.x.x. +Changes in version 3.5.3: + + Bugfixes + - #116 Fix in the fastsum Matlab interface that might cause crashes. + - Update obsolete autoconf macros. + + Enhancements + - #118 Additional node at South Pole in NFSFT_EQUISPACED enhancement. + - #115 Matlab interface with single precision. + - #113 Add function to set_num_threads in Matlab. + +Changes in version 3.5.2: + + Bugfixes + - #103 Build of fastsum fails because fftw_libs are not found. + - #109 Update m4 files for 3.5.2 release. + - Removed superfluous calls to autoreconf in bootstrap. + + Enhancements + - #98 Add Julia Interface fastsum. + - #105 Even bandwith in NFCT and NFST. + - #108 Compute NFFT_EPSILON at runtime. + - #110 In-place fftw for dimension >1 (reduce memory consumption). + - TravisCI tests on Windows and OSX. + - Enable AVX2 in precompiled binaries. + +Changes in version 3.5.1: + + Bugfixes + - #90 Improve check if tests are executed in Matlab or Octave. + - #92 Build with Octave 5.1.0 fails in Windows. + - #95 FFTW3 Linking problem while building. + - #96 Remove unnecessary dependence on ncurses library. + + Enhancements + - #86 Add Julia Interface for NFCT, NFST. + - #87 FSFT: Spherical Fourier transform with equidistant nodes. + - #88 Inverse NFFT via frame approach. + Changes in version 3.5.0: Bugfixes diff --git a/Makefile.am b/Makefile.am index a90300f1..ac1c7b94 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,7 +4,7 @@ libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status --recheck # Subdirectories -DIST_SUBDIRS=3rdparty include kernel . tests examples applications matlab julia support doxygen +DIST_SUBDIRS=include kernel . tests examples applications matlab julia support doxygen if HAVE_EXAMPLES EXAMPLE_DIRS=examples @@ -40,18 +40,19 @@ else LIBNFFT3_THREADS_LA = endif -SUBDIRS= 3rdparty include kernel . tests $(EXAMPLE_DIRS) $(APPLICATION_DIRS) $(MATLAB_DIRS) $(JULIA_DIRS) +SUBDIRS= include kernel . tests $(EXAMPLE_DIRS) $(APPLICATION_DIRS) $(MATLAB_DIRS) $(JULIA_DIRS) lib_LTLIBRARIES = libnfft3@PREC_SUFFIX@.la $(LIBNFFT3_THREADS_LA) noinst_LTLIBRARIES = $(LIBNFFT3_MATLAB_LA) $(LIBNFFT3_JULIA_LA) libnfft3@PREC_SUFFIX@_la_SOURCES = -libnfft3@PREC_SUFFIX@_la_LIBADD = 3rdparty/lib3rdparty.la kernel/libkernel.la @fftw3_LIBS@ -lm +libnfft3@PREC_SUFFIX@_la_LIBADD = kernel/libkernel.la @fftw3_LIBS@ -lm libnfft3@PREC_SUFFIX@_la_LDFLAGS = -no-undefined -version-info @SHARED_VERSION_INFO@ @fftw3_LDFLAGS@ +# Removed since it is only used by iterS2: 3rdparty/lib3rdparty.la if HAVE_THREADS libnfft3@PREC_SUFFIX@_threads_la_SOURCES = -libnfft3@PREC_SUFFIX@_threads_la_LIBADD = 3rdparty/lib3rdparty.la kernel/libkernel_threads.la @fftw3_threads_LIBS@ -lm +libnfft3@PREC_SUFFIX@_threads_la_LIBADD = kernel/libkernel_threads.la @fftw3_threads_LIBS@ -lm libnfft3@PREC_SUFFIX@_threads_la_LDFLAGS = -no-undefined -version-info @SHARED_VERSION_INFO@ @fftw3_LDFLAGS@ if HAVE_OPENMP libnfft3@PREC_SUFFIX@_threads_la_CFLAGS = $(OPENMP_CFLAGS) @@ -61,9 +62,9 @@ endif if HAVE_MATLAB libnfft3@PREC_SUFFIX@_matlab_la_SOURCES = if HAVE_MATLAB_THREADS - libnfft3@PREC_SUFFIX@_matlab_la_LIBADD = 3rdparty/lib3rdparty.la kernel/libkernel_threads.la @matlab_fftw3_LIBS@ -lm + libnfft3@PREC_SUFFIX@_matlab_la_LIBADD = kernel/libkernel_threads.la @matlab_fftw3_LIBS@ -lm else - libnfft3@PREC_SUFFIX@_matlab_la_LIBADD = 3rdparty/lib3rdparty.la kernel/libkernel.la @matlab_fftw3_LIBS@ -lm + libnfft3@PREC_SUFFIX@_matlab_la_LIBADD = kernel/libkernel.la @matlab_fftw3_LIBS@ -lm endif libnfft3@PREC_SUFFIX@_matlab_la_LDFLAGS = @matlab_fftw3_LDFLAGS@ endif @@ -71,9 +72,9 @@ endif if HAVE_JULIA libnfft3@PREC_SUFFIX@_julia_la_SOURCES = if HAVE_THREADS - libnfft3@PREC_SUFFIX@_julia_la_LIBADD = 3rdparty/lib3rdparty.la kernel/libkernel_threads.la @fftw3_threads_LIBS@ -lm + libnfft3@PREC_SUFFIX@_julia_la_LIBADD = kernel/libkernel_threads.la @fftw3_threads_LIBS@ -lm else - libnfft3@PREC_SUFFIX@_julia_la_LIBADD = 3rdparty/lib3rdparty.la kernel/libkernel.la @fftw3_LIBS@ -lm + libnfft3@PREC_SUFFIX@_julia_la_LIBADD = kernel/libkernel.la @fftw3_LIBS@ -lm endif libnfft3@PREC_SUFFIX@_julia_la_LDFLAGS = @fftw3_LDFLAGS@ endif diff --git a/README.md b/README.md index 8881b512..00bacf23 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -[![Build Status](https://travis-ci.org/NFFT/nfft.svg?branch=develop)](https://travis-ci.org/NFFT/nfft) - NFFT - Nonequispaced FFT ========================= @@ -25,10 +23,11 @@ transforms: Some examples for application of these transforms are provided: 1. Medical imaging - - magnetic resonance imaging - - computerised tomography + - magnetic resonance imaging (mri) + - computerised tomography (radon) 2. Summation schemes + - fast summation (fastsum) - fast Gauss transform (FGT) - singular kernels - zonal kernels @@ -36,18 +35,18 @@ Some examples for application of these transforms are provided: 3. polar FFT, discrete Radon transform, ridgelet transform Detailed API documentation in HTML format can be found in -`doc/api/html/index.html`, if you are working from a release tarball. +`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. +generated with Doxygen (which requires the `doxygen-latex` and `perl` packages): ``` make doc ``` Building -------- -The NFFT depends on the [FFTW](https://fftw.org) library, which is available for many Linux distros and MSYS. If you compile the FFTW yourself, it should be configured `--enable-shared`. +The NFFT depends on the [FFTW](https://fftw.org) 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. +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 ``` @@ -66,8 +65,8 @@ 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 a path of Matlab, and -* `--with-octave=path/to/octave` does the same for GNU Octave. +* `--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. @@ -75,7 +74,7 @@ Build the software. make ``` -Optionally, unit tests may be run. +Optionally, unit tests may be run. Some of the unit tests require an installation of [cunit](http://cunit.sourceforge.net). ``` make check ``` @@ -87,15 +86,25 @@ make install Citing ------ -The most current general paper, the one that we recommend if you wish to cite NFFT, is *Keiner, J., Kunis, S., and Potts, D. +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*. +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 to +or missing/confusing instructions and report them in our issue tracker or directly to [Daniel Potts](mailto:potts@mathematik.tu-chemnitz.de). The postal address is @@ -143,33 +152,27 @@ Directory structure File/Folder | Purpose ------------------:| ------------------------------------------------------ -3rdparty (dir) | Third-party source code +3rdparty (dir) | Third-party source code aclocal.m4 | Macros for configure script applications (dir) | Application programs (see 4) above) AUTHORS | Information about the authors of NFFT bootstrap.sh | Bootstrap shell script that call Autoconf and friends ChangeLog | A short version history -config.guess | Used by configure script -config.sub | Used by configure script +config (dir) | Used by configure script configure | Configure script (created by calling ./bootstrap.sh) -configure.in | Autoconf configure script template +configure.ac | Autoconf configure script template CONVENTIONS | Internal coding conventions COPYING | Information about redistributing NFFT -depcomp | Used by configure script doc (dir) | User and developer documentation examples (dir) | Simple examples for using NFFT routines include (dir) | Header files INSTALL | Installation instructions -install-sh | Used by configure script julia (dir) | Julia interface for nfft kernel (dir) | Source code for core library routines -ltmain.sh | Used by configure script Makefile.am | Automake Makefile template Makefile.in | Makefile template generated from Makefile.am, processed by configure script matlab (dir) | Matlab MEX interfaces for nfft, nfsft, nfsoft, nfft -missing | Used by configure script NEWS | New and noteworthy -README | This file. +README | This file README.md | This file tests (dir) | CUnit tests -TODO | Work to be done diff --git a/applications/fastsum/Makefile.am b/applications/fastsum/Makefile.am index 51c1cb96..ed8489dc 100644 --- a/applications/fastsum/Makefile.am +++ b/applications/fastsum/Makefile.am @@ -37,18 +37,18 @@ endif endif fastsum_test_SOURCES = fastsum_test.c -fastsum_test_LDADD = libfastsum.la libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@.la +fastsum_test_LDADD = libfastsum.la libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@.la @fftw3_LDFLAGS@ @fftw3_LIBS@ fastsum_matlab_SOURCES = fastsum_matlab.c if HAVE_THREADS -fastsum_matlab_LDADD = libfastsum_threads.la libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@_threads.la +fastsum_matlab_LDADD = libfastsum_threads.la libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@_threads.la @fftw3_LDFLAGS@ @fftw3_threads_LIBS@ else -fastsum_matlab_LDADD = libfastsum.la libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@.la +fastsum_matlab_LDADD = libfastsum.la libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@.la @fftw3_LDFLAGS@ @fftw3_LIBS@ endif if HAVE_THREADS fastsum_test_threads_SOURCES = fastsum_test.c - fastsum_test_threads_LDADD = libfastsum_threads.la libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@_threads.la + fastsum_test_threads_LDADD = libfastsum_threads.la libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@_threads.la @fftw3_LDFLAGS@ @fftw3_threads_LIBS@ if HAVE_OPENMP fastsum_test_threads_CFLAGS = $(OPENMP_CFLAGS) endif diff --git a/applications/fastsum/fastsum.c b/applications/fastsum/fastsum.c index 833bdeca..d662b4eb 100644 --- a/applications/fastsum/fastsum.c +++ b/applications/fastsum/fastsum.c @@ -914,7 +914,7 @@ void fastsum_init_guru_source_nodes(fastsum_plan *ths, int N_total, int nn_overs NFFT(init_guru)(&(ths->mv1), ths->d, N, N_total, n, m, sort_flags_adjoint | PRE_PHI_HUT | PRE_PSI | /*MALLOC_X | MALLOC_F_HAT | MALLOC_F |*/ FFTW_INIT - | FFT_OUT_OF_PLACE, + | ((ths->d == 1) ? FFT_OUT_OF_PLACE : 0U), FFTW_ESTIMATE | FFTW_DESTROY_INPUT); ths->mv1.x = ths->x; ths->mv1.f = ths->alpha; @@ -976,7 +976,7 @@ void fastsum_init_guru_target_nodes(fastsum_plan *ths, int M_total, int nn_overs NFFT(init_guru)(&(ths->mv2), ths->d, N, M_total, n, m, sort_flags_trafo | PRE_PHI_HUT | PRE_PSI | /*MALLOC_X | MALLOC_F_HAT | MALLOC_F |*/ FFTW_INIT - | FFT_OUT_OF_PLACE, + | ((ths->d == 1) ? FFT_OUT_OF_PLACE : 0U), FFTW_ESTIMATE | FFTW_DESTROY_INPUT); ths->mv2.x = ths->y; ths->mv2.f = ths->f; diff --git a/applications/fastsum/fastsum.m b/applications/fastsum/fastsum.m index c15da033..3aefc435 100644 --- a/applications/fastsum/fastsum.m +++ b/applications/fastsum/fastsum.m @@ -47,7 +47,10 @@ % 'cosc' K(x) = COS(cx)/x % 'cot' K(x) = cot(cx) % 'one_over_cube' K(x) = 1/x^3 -% 'laplacian_rbf' K(x)=EXP(-|x|/c) +% 'laplacian_rbf' K(x) = EXP(-|x|/c) +% 'der_laplacian_rbf' K(x) = |x|/c EXP(-|x|/c) +% 'xx_gaussian' K(x) = x^2/c^2 EXP(-x^2/c^2) +% 'absx' K(x) = |x| % % Markus Fenn, 2006. diff --git a/applications/fastsum/fastsum_matlab.c b/applications/fastsum/fastsum_matlab.c index ebf3ff7b..952cb91f 100644 --- a/applications/fastsum/fastsum_matlab.c +++ b/applications/fastsum/fastsum_matlab.c @@ -122,6 +122,12 @@ int main(int argc, char **argv) kernel = log_sin; else if (strcmp(s, "laplacian_rbf") == 0) kernel = laplacian_rbf; + else if (strcmp(s, "der_laplacian_rbf") == 0) + kernel = der_laplacian_rbf; + else if (strcmp(s, "xx_gaussian") == 0) + kernel = xx_gaussian; + else if (strcmp(s, "absx") == 0) + kernel = absx; else { printf("Unrecognized kernel function!\n"); diff --git a/applications/fastsum/fastsum_test.c b/applications/fastsum/fastsum_test.c index 7bcc49ab..a9a0ea99 100644 --- a/applications/fastsum/fastsum_test.c +++ b/applications/fastsum/fastsum_test.c @@ -124,6 +124,12 @@ int main(int argc, char **argv) kernel = log_sin; else if (strcmp(s, "laplacian_rbf") == 0) kernel = laplacian_rbf; + else if (strcmp(s, "der_laplacian_rbf") == 0) + kernel = der_laplacian_rbf; + else if (strcmp(s, "xx_gaussian") == 0) + kernel = xx_gaussian; + else if (strcmp(s, "absx") == 0) + kernel = absx; else { s = "multiquadric"; diff --git a/applications/fastsum/kernels.c b/applications/fastsum/kernels.c index b12f731d..de27b90a 100644 --- a/applications/fastsum/kernels.c +++ b/applications/fastsum/kernels.c @@ -119,7 +119,7 @@ C logarithm(R x, int der, const R *param) /* K(x)=LOG |x| */ (void)param; - if (FABS(x)= 0 & y_ >= 0, - phi=asin(y_/r); - elseif x_ < 0 & y_ > 0, - phi=asin(-y_/r)+pi; - elseif x_ <= 0 & y_ <= 0, - phi=asin(-y_/r)+pi; - elseif x_ > 0 & y_ < 0, - phi=asin(y_/r); - end +for y=1:N_ + y_= y /(N_/2)-1; + for x=1:N_ + x_= x /(N_/2)-1; + r = sqrt(x_*x_+y_*y_); + if x_==0 && y_==0 + phi=0; + elseif (x_ > 0) || (x_ >= 0 && y_ >= 0) + phi=asin(y_/r); + else + phi=asin(-y_/r)+pi; + end + for z=1:Z + for l=1:10 if(((r*cos(pi*A(l,6)/180+phi)+A(l,4))/A(l,2))^2+... ((r*sin(pi*A(l,6)/180+phi)+A(l,5))/A(l,3))^2+... - ((z/(Z/2)-1)/A(l,3))^2 <= 1 ), - if B(x,y,z) > 0.1 & l>2, - B(x,y,z) = B(x,y,z) +A(l,1); - else - B(x,y,z) = A(l,1); - end + ((z/(Z/2)-1)/A(l,3))^2 <= 1 ) + B(x,y,z) = B(x,y,z)*(B(x,y,z) > 0.1) .* (l>2) +A(l,1); end end end @@ -73,13 +65,13 @@ B=C; % rotate the matrix B -for z=1:Z, +for z=1:Z B(:,:,z)=rot90(rot90(rot90((B(:,:,z))))); end output=zeros(Z,N*N); -for z_=0:Z-1, +for z_=0:Z-1 output(z_+1,:)=reshape(B(:,:,z_+1),1,N*N); end diff --git a/applications/mri/mri3d/reconstruct_data_2d1d.c b/applications/mri/mri3d/reconstruct_data_2d1d.c index c1b6a372..97b2edb3 100644 --- a/applications/mri/mri3d/reconstruct_data_2d1d.c +++ b/applications/mri/mri3d/reconstruct_data_2d1d.c @@ -52,8 +52,8 @@ static void reconstruct(char* filename,int N,int M,int Z,int iteration, int weig my_N[1]=N; my_n[1]=ceil(N*1.2); nfft_init_guru(&my_plan, 2, my_N, M/Z, my_n, 6, PRE_PHI_HUT| PRE_PSI| MALLOC_X| MALLOC_F_HAT| MALLOC_F| - FFTW_INIT| FFT_OUT_OF_PLACE, - FFTW_MEASURE| FFTW_DESTROY_INPUT); + FFTW_INIT, + FFTW_MEASURE); /* precompute lin psi if set */ if(my_plan.flags & PRE_LIN_PSI) diff --git a/applications/mri/mri3d/reconstruct_data_3d.c b/applications/mri/mri3d/reconstruct_data_3d.c index e0072d0d..90c04082 100644 --- a/applications/mri/mri3d/reconstruct_data_3d.c +++ b/applications/mri/mri3d/reconstruct_data_3d.c @@ -56,8 +56,8 @@ static void reconstruct(char* filename,int N,int M,int Z,int iteration, int weig my_N[2]=N; my_n[2]=ceil(N*1.2); nfft_init_guru(&my_plan, 3, my_N, M, my_n, 6, PRE_PHI_HUT| PRE_PSI |MALLOC_X| MALLOC_F_HAT| - MALLOC_F| FFTW_INIT| FFT_OUT_OF_PLACE, - FFTW_MEASURE| FFTW_DESTROY_INPUT); + MALLOC_F| FFTW_INIT, + FFTW_MEASURE); /* precompute lin psi */ if(my_plan.flags & PRE_LIN_PSI) diff --git a/applications/mri/mri3d/reconstruct_data_gridding.c b/applications/mri/mri3d/reconstruct_data_gridding.c index 71a7e8cb..c7f9ac82 100644 --- a/applications/mri/mri3d/reconstruct_data_gridding.c +++ b/applications/mri/mri3d/reconstruct_data_gridding.c @@ -50,8 +50,8 @@ static void reconstruct(char* filename,int N,int M,int Z, int weight ,fftw_compl my_N[1]=N; my_n[1]=ceil(N*1.2); nfft_init_guru(&my_plan, 2, my_N, M/Z, my_n, 6, PRE_PHI_HUT| PRE_PSI| MALLOC_X| MALLOC_F_HAT| MALLOC_F| - FFTW_INIT| FFT_OUT_OF_PLACE, - FFTW_MEASURE| FFTW_DESTROY_INPUT); + FFTW_INIT, + FFTW_MEASURE); /* precompute lin psi if set */ if(my_plan.flags & PRE_LIN_PSI) diff --git a/applications/polarFFT/linogram_fft_test.c.in b/applications/polarFFT/linogram_fft_test.c.in index e1d23575..5265de8f 100644 --- a/applications/polarFFT/linogram_fft_test.c.in +++ b/applications/polarFFT/linogram_fft_test.c.in @@ -102,9 +102,8 @@ static int linogram_dft(NFFT_C *f_hat, int NN, NFFT_C *f, int T, int rr, int m) /** init two dimensional NFFT plan */ NFFT(init_guru)(&my_nfft_plan, 2, N, M, n, m, - PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT - | FFT_OUT_OF_PLACE, - FFTW_MEASURE | FFTW_DESTROY_INPUT); + PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT, + FFTW_MEASURE); /** init nodes from linogram grid*/ linogram_grid(T, rr, x, w); diff --git a/applications/polarFFT/mpolar_fft_test.c.in b/applications/polarFFT/mpolar_fft_test.c.in index fa011b35..d1e58d03 100644 --- a/applications/polarFFT/mpolar_fft_test.c.in +++ b/applications/polarFFT/mpolar_fft_test.c.in @@ -126,9 +126,8 @@ static int mpolar_dft(NFFT_C *f_hat, int NN, NFFT_C *f, int T, int S, int m) /** init two dimensional NFFT plan */ M = mpolar_grid(T, S, x, w); NFFT(init_guru)(&my_nfft_plan, 2, N, M, n, m, - PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT - | FFT_OUT_OF_PLACE, - FFTW_MEASURE | FFTW_DESTROY_INPUT); + PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT, + FFTW_MEASURE); /** init nodes from mpolar grid*/ for (j = 0; j < my_nfft_plan.M_total; j++) diff --git a/applications/polarFFT/polar_fft_test.c.in b/applications/polarFFT/polar_fft_test.c.in index a5d14d7e..8e7f13f8 100644 --- a/applications/polarFFT/polar_fft_test.c.in +++ b/applications/polarFFT/polar_fft_test.c.in @@ -118,9 +118,8 @@ static int polar_dft(NFFT_C *f_hat, int NN, NFFT_C *f, int T, int S, /** init two dimensional NFFT plan */ NFFT(init_guru)(&my_nfft_plan, 2, N, M, n, m, - PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT - | FFT_OUT_OF_PLACE, - FFTW_MEASURE | FFTW_DESTROY_INPUT); + PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT, + FFTW_MEASURE); /** init nodes from polar grid*/ polar_grid(T, S, x, w); diff --git a/applications/quadratureS2/quadratureS2.c b/applications/quadratureS2/quadratureS2.c index 1810e7bd..20fecac9 100644 --- a/applications/quadratureS2/quadratureS2.c +++ b/applications/quadratureS2/quadratureS2.c @@ -328,7 +328,7 @@ int main (int argc, char **argv) nfsft_init_guru(&plan,NQ[iNQ],SQ[iNQ], NFSFT_NORMALIZED | ((use_nfft!=NO)?(0U):(NFSFT_USE_NDFT)) | ((use_fpt!=NO)?(0U):(NFSFT_USE_DPT)), - PRE_PHI_HUT | PRE_PSI | FFTW_INIT | FFTW_MEASURE | FFT_OUT_OF_PLACE, + PRE_PHI_HUT | PRE_PSI | FFTW_INIT | FFTW_MEASURE, cutoff); plan.f_hat = f_hat; @@ -679,8 +679,8 @@ int main (int argc, char **argv) nfsft_init_guru(&plan_gen,N,m_total, NFSFT_NORMALIZED | ((use_nfft!=NO)?(0U):(NFSFT_USE_NDFT)) | ((use_fpt!=NO)?(0U):(NFSFT_USE_DPT)), - ((N>512)?(0U):(PRE_PHI_HUT | PRE_PSI)) | FFTW_INIT | - FFT_OUT_OF_PLACE, cutoff); + ((N>512)?(0U):(PRE_PHI_HUT | PRE_PSI)) | FFTW_INIT, + cutoff); plan_gen.f_hat = f_hat_gen; plan_gen.x = x_grid; @@ -720,8 +720,8 @@ int main (int argc, char **argv) nfsft_init_guru(&plan_gen,N,m_compare, NFSFT_NORMALIZED | ((use_nfft!=NO)?(0U):(NFSFT_USE_NDFT)) | ((use_fpt!=NO)?(0U):(NFSFT_USE_DPT)), - ((N>512)?(0U):(PRE_PHI_HUT | PRE_PSI)) | FFTW_INIT | - FFT_OUT_OF_PLACE, cutoff); + ((N>512)?(0U):(PRE_PHI_HUT | PRE_PSI)) | FFTW_INIT, + cutoff); plan_gen.f_hat = f_hat_gen; plan_gen.x = x_compare; @@ -930,8 +930,8 @@ int main (int argc, char **argv) nfsft_init_guru(&plan_adjoint,NQ[iNQ],m_total, NFSFT_NORMALIZED | ((use_nfft!=NO)?(0U):(NFSFT_USE_NDFT)) | ((use_fpt!=NO)?(0U):(NFSFT_USE_DPT)), - ((NQ[iNQ]>512)?(0U):(PRE_PHI_HUT | PRE_PSI)) | FFTW_INIT | - FFT_OUT_OF_PLACE, cutoff); + ((NQ[iNQ]>512)?(0U):(PRE_PHI_HUT | PRE_PSI)) | FFTW_INIT, + cutoff); plan_adjoint_ptr = &plan_adjoint; @@ -940,8 +940,8 @@ int main (int argc, char **argv) nfsft_init_guru(&plan,NQ[iNQ],m_compare, NFSFT_NORMALIZED | ((use_nfft!=NO)?(0U):(NFSFT_USE_NDFT)) | ((use_fpt!=NO)?(0U):(NFSFT_USE_DPT)), - ((NQ[iNQ]>512)?(0U):(PRE_PHI_HUT | PRE_PSI)) | FFTW_INIT | - FFT_OUT_OF_PLACE, cutoff); + ((NQ[iNQ]>512)?(0U):(PRE_PHI_HUT | PRE_PSI)) | FFTW_INIT, + cutoff); plan_ptr = &plan; } else diff --git a/applications/radon/inverse_radon.c.in b/applications/radon/inverse_radon.c.in index 6ca3c093..ba063bbd 100644 --- a/applications/radon/inverse_radon.c.in +++ b/applications/radon/inverse_radon.c.in @@ -146,9 +146,8 @@ static int inverse_radon_trafo(int (*gridfcn)(), int T, int S, NFFT_R *Rf, int N /** init two dimensional NFFT plan */ NFFT(init_guru)(&my_nfft_plan, 2, N, M, n, 4, - PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT - | FFT_OUT_OF_PLACE, - FFTW_MEASURE | FFTW_DESTROY_INPUT); + PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT, + FFTW_MEASURE); /** init two dimensional infft plan */ SOLVER(init_advanced_complex)(&my_infft_plan, diff --git a/applications/radon/radon.c.in b/applications/radon/radon.c.in index d76047ab..298b1826 100644 --- a/applications/radon/radon.c.in +++ b/applications/radon/radon.c.in @@ -143,9 +143,8 @@ static int Radon_trafo(int (*gridfcn)(), int T, int S, NFFT_R *f, int NN, NFFT_R /** init two dimensional NFFT plan */ NFFT(init_guru)(&my_nfft_plan, 2, N, M, n, 4, - PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT - | FFT_OUT_OF_PLACE, - FFTW_MEASURE | FFTW_DESTROY_INPUT); + PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT, + FFTW_MEASURE); /** init nodes from grid*/ gridfcn(T, S, x, w); diff --git a/bootstrap.sh b/bootstrap.sh index 4241b314..06029f1a 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # Copyright (c) 2003, 2006 Matteo Frigo # Copyright (c) 2003, 2006 Massachusetts Institute of Technology @@ -19,9 +19,8 @@ # Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # ################################################################################ -# NOTE: If you just want to build NFFT3, do not use this file. Just follow the -# installation instructions as described in the tutorial found under -# doc/tutorial. +# NOTE: If you just want to build NFFT3, do not use this file. Just follow the +# installation instructions in README.md. # # This file is based on the bootstrap.sh script from FFTW 3.1.2 by # M. Frigo and S. G. Johnson @@ -32,13 +31,8 @@ alias libtoolize=$(type -p glibtoolize libtoolize | head -1) touch ChangeLog -echo "PLEASE IGNORE WARNINGS AND ERRORS" - -# paranoia: sometimes autoconf doesn't get things right the first time rm -rf autom4te.cache libtoolize autoreconf --verbose --install --force -autoreconf --verbose --install --force -autoreconf --verbose --install --force rm -f config.cache diff --git a/configure.ac b/configure.ac index cdcaff82..33a8ab53 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ m4_define([nfft_version_major], [3]) m4_define([nfft_version_minor], [5]) -m4_define([nfft_version_patch], [1]) +m4_define([nfft_version_patch], [4]) m4_define([nfft_version_type], [alpha]) m4_append([NFFT_VERSION], m4_expand([nfft_version_major.nfft_version_minor.nfft_version_patch])) m4_append([NFFT_VERSION], m4_expand([nfft_version_type])) @@ -79,7 +79,10 @@ LT_INIT([win32-dll]) AC_SUBST([LIBTOOL_DEPS]) # version information for shared library -SHARED_VERSION_INFO="4:0:0" +SHARED_VERSION_INFO="4:3:0" +# NFFT 3.5.3 was 4:3:0 (added nfft_set_num_threads) +# NFFT 3.5.2 was 4:2:0 +# NFFT 3.5.2 was 4:1:0 # substitute SHARED_VERSION_INFO in generated Makefiles AC_SUBST(SHARED_VERSION_INFO) @@ -153,20 +156,18 @@ AM_CONDITIONAL(HAVE_NON_DOUBLE_PRECISION, test "x$PRECISION" != "xd" ) need_fpt="no" # build all modules by default in maintainer mode or if option is given -AC_ARG_ENABLE(all, [AC_HELP_STRING([--enable-all],[build all modules])], +AC_ARG_ENABLE(all, [AS_HELP_STRING([--enable-all],[build all modules])], ok=$enableval, ok=$USE_MAINTAINER_MODE) nfft_module_default=$ok # option for example programs nfft_examples_default="yes" -AC_ARG_ENABLE(examples, [AC_HELP_STRING([--enable-examples], - [enable example programs])], enable_examples=$enableval, enable_examples=$nfft_examples_default) +AC_ARG_ENABLE(examples, [AS_HELP_STRING([--enable-examples],[enable example programs])], enable_examples=$enableval, enable_examples=$nfft_examples_default) AM_CONDITIONAL(HAVE_EXAMPLES, test "x$enable_examples" = "xyes" ) # option for application programs nfft_applications_default="yes" -AC_ARG_ENABLE(applications, [AC_HELP_STRING([--enable-applications], - [enable application programs])], enable_applications=$enableval, enable_applications=$nfft_applications_default) +AC_ARG_ENABLE(applications, [AS_HELP_STRING([--enable-applications],[enable application programs])], enable_applications=$enableval, enable_applications=$nfft_applications_default) AM_CONDITIONAL(HAVE_APPLICATIONS, test "x$enable_applications" = "xyes" ) # default option for julia interface, may be overwritten (enabled by default @@ -176,8 +177,7 @@ if test "x$PRECISION" = "xd" -a "x$enable_shared" = "xyes"; then else nfft_julia_default="no" fi -AC_ARG_ENABLE(julia, [AC_HELP_STRING([--enable-julia], - [enable julia interface])], enable_julia=$enableval, enable_julia=$nfft_julia_default) +AC_ARG_ENABLE(julia, [AS_HELP_STRING([--enable-julia],[enable julia interface])], enable_julia=$enableval, enable_julia=$nfft_julia_default) AM_CONDITIONAL(HAVE_JULIA, test "x$enable_julia" = "xyes" ) if test "x$enable_julia" = "xyes" -a "x$PRECISION" != "xd"; then @@ -205,35 +205,30 @@ AX_NFFT_MODULE([fpt],[FPT],[fast polynomial transform],["no"],[],[], # multithreaded code #AC_ARG_ENABLE(openmp, [AC_HELP_STRING([--enable-openmp], # [enable OpenMP multithreaded code])], [enable_threads=$enableval; AC_DEFINE(ENABLE_OPENMP, 1, ["Define to enable OpenMP code."])], enable_threads=no) -AC_ARG_ENABLE(openmp, [AC_HELP_STRING([--enable-openmp], - [enable OpenMP multithreaded code])], enable_threads=$enableval, enable_threads=no) +AC_ARG_ENABLE(openmp, [AS_HELP_STRING([--enable-openmp], [enable OpenMP multithreaded code])], enable_threads=$enableval, enable_threads=no) AM_CONDITIONAL(HAVE_THREADS, test "x$enable_threads" = "xyes" ) # debug mode -AC_ARG_ENABLE(debug, [AC_HELP_STRING([--enable-debug], - [compile with extra runtime checks for debugging])], enable_debug=$enableval, +AC_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug], [compile with extra runtime checks for debugging])], enable_debug=$enableval, enable_debug=no) if test "x$enable_debug" = "xyes"; then AC_DEFINE(NFFT_DEBUG,1,[Define to enable extra debugging code.]) fi # runtime time measurements -AC_ARG_ENABLE(measure-time, [AC_HELP_STRING([--enable-measure-time], - [measure time during execution])], ok=$enableval, ok=no) +AC_ARG_ENABLE(measure-time, [AS_HELP_STRING([--enable-measure-time],[measure time during execution])], ok=$enableval, ok=no) if test "x$ok" = "xyes"; then AC_DEFINE(MEASURE_TIME,1,[Define to enable runtime time measurements.]) fi # runtime time measurements for FFTW part -AC_ARG_ENABLE(measure-time-fftw, [AC_HELP_STRING([--enable-measure-time-fftw], - [measure time of FFTW transforms during execution])], ok=$enableval, ok=no) +AC_ARG_ENABLE(measure-time-fftw, [AS_HELP_STRING([--enable-measure-time-fftw],[measure time of FFTW transforms during execution])], ok=$enableval, ok=no) if test "x$ok" = "xyes"; then AC_DEFINE(MEASURE_TIME_FFTW,1,[Define to enable time measurements for FFTW] [transforms.]) fi -AC_ARG_ENABLE(mips_zbus_timer, [AC_HELP_STRING([--enable-mips-zbus-timer], - [use MIPS ZBus cycle-counter])], have_mips_zbus_timer=$enableval, +AC_ARG_ENABLE(mips_zbus_timer, [AS_HELP_STRING([--enable-mips-zbus-timer],[use MIPS ZBus cycle-counter])], have_mips_zbus_timer=$enableval, have_mips_zbus_timer=no) if test "$have_mips_zbus_timer" = "yes"; then AC_DEFINE(HAVE_MIPS_ZBUS_TIMER,1, @@ -241,7 +236,7 @@ if test "$have_mips_zbus_timer" = "yes"; then fi # select window function -AC_ARG_WITH(window, [AC_HELP_STRING([--with-window=ARG],[choose window function +AC_ARG_WITH(window, [AS_HELP_STRING([--with-window=ARG],[choose window function (ARG can be one of: kaiserbessel (default), gaussian, bspline, sinc, dirac)])], window=$withval, window="kaiserbessel") @@ -348,12 +343,12 @@ fi # Check for MATLAB. AX_PROG_MATLAB -if test "x$ax_prog_matlab" = "xyes" -a "x$PRECISION" != "xd"; then +if test "x$ax_prog_matlab" = "xyes" -a "x$PRECISION" != "xd" -a "x$PRECISION" != "xs"; then AC_MSG_ERROR([Building the Matlab interfaces requires double precision.]) fi if test "x$matlab_threads" = "xyes" -a "x$enable_threads" != "xyes"; then - AC_MSG_ERROR([The NFFT Matlab interface with thread support requires the threaded NFFT to be built. Please re-run configure with \"--enable-openmp\".]) + AC_MSG_ERROR([The NFFT Matlab interface with thread support requires the threaded NFFT to be built. Please re-run configure with --enable-openmp.]) fi @@ -440,8 +435,6 @@ AC_CHECK_HEADERS([math.h stdio.h stdlib.h time.h sys/time.h \ complex.h string.h float.h limits.h stdarg.h stddef.h sys/types.h stdint.h \ inttypes.h stdbool.h malloc.h c_asm.h intrinsics.h mach/mach_time.h]) -AC_HEADER_TIME - AC_TYPE_SIZE_T AC_CHECK_TYPE([long double], [AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define to 1 if the compiler supports] @@ -495,18 +488,18 @@ AC_CHECK_DECLS([srand48],[],[],[#include ]) # Cray UNICOS _rtc() (real-time clock) intrinsic AC_MSG_CHECKING([for _rtc intrinsic]) rtc_ok=yes -AC_TRY_LINK([#ifdef HAVE_INTRINSICS_H +AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifdef HAVE_INTRINSICS_H #include -#endif], [_rtc()], [AC_DEFINE(HAVE__RTC,1,[Define if you have the UNICOS _rtc() intrinsic.])], [rtc_ok=no]) +#endif]], [[_rtc()]])],[AC_DEFINE(HAVE__RTC,1,[Define if you have the UNICOS _rtc() intrinsic.])],[rtc_ok=no]) AC_MSG_RESULT($rtc_ok) AC_MSG_CHECKING([whether a cycle counter is available]) save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS -I$srcdir/include" -AC_TRY_CPP([#include "cycle.h" +AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include "cycle.h" #ifndef HAVE_TICK_COUNTER # error No cycle counter -#endif], [ok=yes], [ok=no]) +#endif]])],[ok=yes],[ok=no]) AC_MSG_RESULT($ok) TICKS_PER_SECOND=1 if test $ok = no; then @@ -515,7 +508,7 @@ if test $ok = no; then echo " show incorrect results. " echo "***************************************************************" else - AC_TRY_RUN([#include "cycle.h" + AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "cycle.h" #include #if defined(HAVE_NANOSLEEP) #include @@ -537,7 +530,7 @@ SLEEP;{ FILE *f = fopen("ticks.tmp","w"); fprintf(f,"%.1f\n",tps); fclose(f);} -return 0;}],[read TICKS_PER_SECOND < ticks.tmp],[],[TICKS_PER_SECOND=1]) +return 0;}]])],[read TICKS_PER_SECOND < ticks.tmp],[],[TICKS_PER_SECOND=1]) rm -f ticks.tmp if test "$TICKS_PER_SECOND" = "1"; then echo "***************************************************************" @@ -572,15 +565,6 @@ AC_CHECK_DECLS([copysignf, nextafterf, nanf, ceilf, floorf, nearbyintf, rintf, r #include ]) fi -# Get machine epsilon by 2^(1-MAND_DIG) for selected precision per float.h. -AX_EPS_DEF([$PRECISION]) - -if test "$ax_cv_eps_def" = "unknown"; then - AC_MSG_ERROR([Unable to determine floating-point epsilon.]) -else - AC_DEFINE_UNQUOTED([NFFT_EPSILON], [$ax_cv_eps_def], [Floating-point epsilon.]) -fi - # CUnit AX_CUNIT AM_CONDITIONAL(HAVE_CUNIT, test "x$ax_cv_cunit" = "xyes" ) @@ -591,8 +575,6 @@ AC_CONFIG_FILES(Makefile \ doxygen/doxygen.Doxyfile \ include/Makefile \ include/ticks.h \ - 3rdparty/Makefile \ - 3rdparty/cstripack/Makefile \ kernel/Makefile \ kernel/fpt/Makefile \ kernel/mri/Makefile \ @@ -662,10 +644,14 @@ AC_CONFIG_FILES(Makefile \ matlab/tests/nfsftUnitTests.m \ julia/Makefile \ julia/nfft/Makefile \ + julia/fastsum/Makefile \ julia/nfct/Makefile \ + julia/nfsft/Makefile \ + julia/nfst/Makefile \ doxygen/Makefile \ support/Makefile) # temproarily removed: # applications/iterS2/Makefile \ +# 3rdparty/Makefile \ 3rdparty/cstripack/Makefile \ AC_OUTPUT diff --git a/doxygen/doxygen.Doxyfile.in b/doxygen/doxygen.Doxyfile.in index c920aab4..eff74abe 100644 --- a/doxygen/doxygen.Doxyfile.in +++ b/doxygen/doxygen.Doxyfile.in @@ -1139,7 +1139,7 @@ HTML_COLORSTYLE_GAMMA = 80 # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_TIMESTAMP = YES +HTML_TIMESTAMP = NO # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the diff --git a/examples/nfst/simple_test.c.in b/examples/nfst/simple_test.c.in index 083c63c9..2f6b6258 100644 --- a/examples/nfst/simple_test.c.in +++ b/examples/nfst/simple_test.c.in @@ -78,7 +78,7 @@ static void simple_test_nfst_1d(void) int main(void) { - printf("Computing one dimensional ndct, nfct, adjoint ndct, and adjoint nfct...\n\n"); + printf("Computing one dimensional ndst, nfst, adjoint ndst, and adjoint nfst...\n\n"); simple_test_nfst_1d(); printf("\n\n"); diff --git a/include/cycle.h b/include/cycle.h index 62115b49..c32ef1c9 100644 --- a/include/cycle.h +++ b/include/cycle.h @@ -78,16 +78,10 @@ /***************************************************************************/ -#if TIME_WITH_SYS_TIME +#if HAVE_SYS_TIME_H # include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif #endif +#include #define INLINE_ELAPSED(INL) static INL double elapsed(ticks t1, ticks t0) \ { \ diff --git a/include/infft.h b/include/infft.h index f751247a..6fc99e18 100644 --- a/include/infft.h +++ b/include/infft.h @@ -16,7 +16,7 @@ * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -/*! \file infft3.h +/*! \file infft.h * \brief Internal header file for auxiliary definitions and functions. */ #ifndef __INFFT_H__ @@ -1250,14 +1250,17 @@ extern double _Complex catanh(double _Complex z); #define MANT_DIG LDBL_MANT_DIG #define MIN_EXP LDBL_MIN_EXP #define MAX_EXP LDBL_MAX_EXP + #define EPSILON LDBL_EPSILON #elif defined(NFFT_SINGLE) #define MANT_DIG FLT_MANT_DIG #define MIN_EXP FLT_MIN_EXP #define MAX_EXP FLT_MAX_EXP + #define EPSILON FLT_EPSILON #else #define MANT_DIG DBL_MANT_DIG #define MIN_EXP DBL_MIN_EXP #define MAX_EXP DBL_MAX_EXP + #define EPSILON DBL_EPSILON #endif #if defined(FLT_ROUND) @@ -1426,9 +1429,9 @@ R Y(bessel_i0)(R x); R Y(bsplines)(const INT, const R x); /* float.c: */ -typedef enum {NFFT_SAFE__MIN = 1, NFFT_BASE = 2, +typedef enum {NFFT_EPSILON = 0, NFFT_SAFE__MIN = 1, NFFT_BASE = 2, NFFT_PRECISION = 3, NFFT_MANT_DIG = 4, NFFT_FLTROUND = 5, NFFT_E_MIN = 6, - NFFT_R_MIN = 7, NFFT_E_MAX = 8, NFFT_R_MAX = 9} float_property; + NFFT_R_MIN = 7, NFFT_E_MAX = 8, NFFT_R_MAX = 9 } float_property; R Y(float_property)(float_property); R Y(prod_real)(R *vec, INT d); diff --git a/include/nfft3.h b/include/nfft3.h index 67ba3359..88cb3ace 100644 --- a/include/nfft3.h +++ b/include/nfft3.h @@ -859,6 +859,8 @@ void Y(vpr_double)(R *x, const NFFT_INT n, const char *text); \ void Y(vpr_complex)(C *x, const NFFT_INT n, const char *text); \ /* thread.c */ \ NFFT_INT Y(get_num_threads)(void); \ +void Y(set_num_threads)(NFFT_INT nthreads); \ +NFFT_INT Y(has_threads_enabled)(void); \ /* time.c */ \ R Y(clock_gettime_seconds)(void); \ /* error.c: */ \ diff --git a/include/solver_adjoint.h b/include/solver_adjoint.h index e5c13845..95f1233d 100644 --- a/include/solver_adjoint.h +++ b/include/solver_adjoint.h @@ -29,7 +29,7 @@ * Macro for mangling an adjoint transform. * temporary added 01.2007 by tim becker */ - \ + #define MACRO_SOLVER_ADJOINT_PLAN(MV, FLT, FLT_TYPE) \ \ /** Structure for an adjoint transform plan */ \ @@ -65,15 +65,15 @@ typedef struct \ \ /** Simple initialisation. */ \ void i ## MV ## _adjoint_init(adjoint ## MV ## _plan *ths, MV ## _plan *mv); \ -/** Advanced initialisation. */ \ -void i ## MV ## _adjoint_init_advanced(adjoint ## MV ## _plan *ths, MV ## _plan,\ -*mv, unsigned adjoint ## MV ## _flags); \ -/** Setting up residuals before the actual iteration. */\ -void i ## MV ## _adjoint_before_loop(adjoint ## MV ## _plan *ths); \ -/** Doing one step in the iteration. */\ -void i ## MV ## _adjoint_loop_one_step(adjoint ## MV ## _plan *ths); \ -/** Destroys the plan for the adjoint transform. */\ -void i ## MV ## _adjoint_finalize(adjoint ## MV ## _plan *ths); \ +/** Advanced initialisation. */ \ +void i ## MV ## _adjoint_init_advanced(adjoint ## MV ## _plan *ths, \ +MV ## _plan, *mv, unsigned adjoint ## MV ## _flags); \ +/** Setting up residuals before the actual iteration. */ \ +void i ## MV ## _adjoint_before_loop(adjoint ## MV ## _plan *ths); \ +/** Doing one step in the iteration. */ \ +void i ## MV ## _adjoint_loop_one_step(adjoint ## MV ## _plan *ths); \ +/** Destroys the plan for the adjoint transform. */ \ +void i ## MV ## _adjoint_finalize(adjoint ## MV ## _plan *ths); \ /** TODO: different solvers */ MACRO_SOLVER_ADJOINT_PLAN(nfsft, complex, double _Complex) diff --git a/julia/Makefile.am b/julia/Makefile.am index 4b63265b..694bac75 100644 --- a/julia/Makefile.am +++ b/julia/Makefile.am @@ -4,4 +4,25 @@ else DIR_NFCT= endif -SUBDIRS = nfft $(DIR_NFCT) +if HAVE_NFST + DIR_NFST=nfst +else + DIR_NFST= +endif + +if HAVE_NFSFT + DIR_NFSFT=nfsft +else + DIR_NFSFT= +endif + +if HAVE_APPLICATIONS + DIR_FASTSUM=fastsum +else + DIR_FASTSUM= +endif + + +SUBDIRS = nfft $(DIR_NFCT) $(DIR_NFST) $(DIR_NFSFT) $(DIR_FASTSUM) + +EXTRA_DIST = README.md diff --git a/julia/README.md b/julia/README.md index 6f5dc8e6..15fa5363 100644 --- a/julia/README.md +++ b/julia/README.md @@ -1 +1,7 @@ -This directory contains the Julia interfaces to the NFFT library. +**The NFFT3 is now available as a Julia Package!** (https://github.com/NFFT/NFFT3) + +```julia +using Pkg +Pkg.add("NFFT3") +using NFFT3 +``` diff --git a/julia/fastsum/Makefile.am b/julia/fastsum/Makefile.am new file mode 100644 index 00000000..abb50959 --- /dev/null +++ b/julia/fastsum/Makefile.am @@ -0,0 +1,40 @@ +.PHONY: libfastsumjulia-link clean-libfastsumjulia-link + +# compiler flags +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/applications/fastsum + +# library +lib_LTLIBRARIES = libfastsumjulia.la +libfastsumjulia_la_SOURCES = libfastsumjulia.c + +if HAVE_THREADS + libadd_for_fftw_threads=@fftw3_threads_LIBS@ + libadd_libfastsum=$(top_builddir)/applications/fastsum/libfastsum_threads.la +else + libadd_for_fftw_threads= + libadd_libfastsum=$(top_builddir)/applications/fastsum/libfastsum.la +endif +# fastsum_test_LDADD = libfastsum.la libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@.la +libfastsumjulia_la_LIBADD = $(libadd_libfastsum) $(top_builddir)/applications/fastsum/libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@_julia.la @fftw3_LDFLAGS@ $(libadd_for_fftw_threads) @fftw3_LIBS@ + + +libfastsumjulia_la_LDFLAGS = -no-undefined -shared -avoid-version @fftw3_LDFLAGS@ + +EXTRA_DIST = fastsum.jl simple_test.jl + +libfastsumjulia-link: all-am + soname=`$(EGREP) "^dlname=" libfastsumjulia.la | $(SED) -e "s|^dlname='\(.*\)'|\1|"` ; \ + rm -f "$$soname"; \ + $(LN_S) ".libs/$$soname" "./$$soname" + +clean-libfastsumjulia-link: + soname=`$(EGREP) "^dlname=" libfastsumjulia.la | $(SED) -e "s|^dlname='\(.*\)'|\1|"`; \ + rm -f "$$soname" + +all: all-am libfastsumjulia-link + +clean: clean-libfastsumjulia-link clean-am + +#all-local:: libfastsumjulia-link + +#clean-local:: clean-libfastsumjulia-link diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl new file mode 100644 index 00000000..0532a9ac --- /dev/null +++ b/julia/fastsum/fastsum.jl @@ -0,0 +1,299 @@ +module fastsum + +ending = ".so" + +if Sys.iswindows( ) + ending = ".dll" +elseif Sys.isapple() + ending = ".dylib" +end + +const lib_path = string( @__DIR__, "/libfastsumjulia", ending ) + +mutable struct fastsum_plan +end + +mutable struct Plan + d::Integer # dimension + N::Integer # number of source nodes + M::Integer # number of target nodes + n::Integer # expansion degree + p::Integer # degree of smoothness + kernel::String # name of kernel + c::Vector{Float64} # kernel parameters + eps_I::Real # inner boundary + eps_B::Real # outer boundary + nn_x::Integer # oversampled nn in x + nn_y::Integer # oversampled nn in y + m_x::Integer # NFFT-cutoff in x + m_y::Integer # NFFT-cutoff in y + init_done::Bool # bool for plan init + finalized::Bool # bool for finalizer + flags::UInt32 # flags + x::Ref{Float64} # source nodes + y::Ref{Float64} # target nodes + alpha::Ref{ComplexF64} # source coefficients + f::Ref{ComplexF64} # target evaluations + plan::Ref{fastsum_plan} # plan (C pointer) + + function Plan( d::Integer, N::Integer, M::Integer, n::Integer, p::Integer, kernel::String, c::Vector{<:Real}, eps_I::Real, eps_B::Real, nn_x::Integer, nn_y::Integer, m_x::Integer, m_y::Integer, flags::UInt32 ) + new( d, N, M, n, p, kernel, Vector{Float64}(c), eps_I, eps_B, nn_x, nn_y, m_x, m_y, false, false, flags ) + end +end #struct fastsumplan + +function Plan( d::Integer, N::Integer, M::Integer, n::Integer, p::Integer, kernel::String, c::Real, eps_I::Real, eps_B::Real, nn::Integer, m::Integer ) + + if N <= 0 + error( "N has to be a positive Integer." ) + end + + if M <= 0 + error( "M has to be a positive Integer." ) + end + + if n <= 0 + error( "n has to be a positive Integer. ") + end + + if m <= 0 + error( "m has to be a positive Integer." ) + end + + cv = Vector{Float64}( undef, 1 ) + cv[1] = Float64(c) + + Plan( d, N, M, n, p, kernel, cv, eps_I, eps_B, nn, nn, m, m, UInt32(0) ) + +end #constructor + +function fastsum_init( p::Plan ) + + ptr = ccall( ("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, () ) + Core.setfield!( p, :plan, ptr ) + + code = ccall( ("jfastsum_init",lib_path), Int64, (Ref{fastsum_plan}, Int32, Cstring, Ref{Float64}, UInt32, Int32, Int32, Float64, Float64, Int32, Int32, Int32, Int32, Int32, Int32), ptr, Int32(p.d), p.kernel, p.c, p.flags, Int32(p.n), Int32(p.p), Float64(p.eps_I), Float64(p.eps_B), Int32(p.N), Int32(p.M), Int32(p.nn_x), Int32(p.nn_y), Int32(p.m_x), Int32(p.m_y) ) + + if code == 1 + error( "Unkown kernel." ) + end + + Core.setfield!( p, :init_done, true ) + finalizer( finalize_plan, p ) + +end #fastsum_init + +function finalize_plan( p::Plan ) + + if !p.init_done + error( "Plan not initialized." ) + end + + if !p.finalized + ccall( ("jfastsum_finalize",lib_path), Nothing, (Ref{fastsum_plan},), p.plan ) + Core.setfield!( p, :finalized, true ) + end + +end #finalize_plan + +function Base.setproperty!( p::Plan, v::Symbol, val ) + + if !p.init_done + fastsum_init( p ) + end + + if p.finalized + error( "Plan already finalized" ) + end + + # edit source nodes + if v == :x + + if p.d == 1 + if typeof(val) != Vector{Float64} + error( "x has to be a Float64 vector." ) + end + if size(val)[1] != p.N + error( "x has to be a Float64 vector of length N." ) + end + else # => D >1 + if typeof(val) != Array{Float64, 2} + error( "x has to be a Float64 matrix." ) + end + if size(val)[1] != p.N || size(val)[2] != p.d + error( "x has to be a Float64 matrix of size N." ) + end + end + + ptr = ccall( ("jfastsum_set_x", lib_path), Ptr{Float64}, (Ref{fastsum_plan},Ref{Cdouble}), p.plan, val ) + Core.setfield!( p, v, ptr ) + + # edit target nodes + elseif v == :y + + if p.d == 1 + if typeof(val) != Vector{Float64} + error( "y has to be a Float64 vector." ) + end + if size(val)[1] != p.M + error( "y has to be a Float64 vector of length M." ) + end + else # => D > 1 + if typeof(val) != Array{Float64, 2} + error( "y has to be a Float64 matrix." ) + end + if size(val)[1] != p.M || size(val)[2] != p.d + error( "y has to be a Float64 matrix of size M." ) + end + end + + ptr = ccall( ("jfastsum_set_y", lib_path), Ptr{Float64}, (Ref{fastsum_plan},Ref{Cdouble}), p.plan, val ) + Core.setfield!( p, v, ptr ) + + # edit source coefficients + elseif v == :alpha + + if typeof(val) != Vector{ComplexF64} + error( "alpha has to be a ComplexF64 vector." ) + end + if size(val)[1] != p.N + error( "alpha has to be a ComplexF64 vector of length N." ) + end + + ptr = ccall( ("jfastsum_set_alpha", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},Ref{ComplexF64}), p.plan, val ) + Core.setfield!( p, v, ptr ) + + elseif v == :M + @warn("You can't modify the number of target nodes.") + elseif v == :N + @warn("You can't modify the number of source nodes.") + elseif v == :n + @warn("You can't modify the expansion degree.") + elseif v == :m + @warn("You can't modify the cut-off parameter.") + elseif v == :p + @warn("You can't modify the degree of smoothness.") + elseif v == :kernel + @warn("You can't modify the kernel.") + elseif v == :c + @warn("You can't modify the kernel parameters.") + elseif v == :eps_I + @warn("You can't modify the inner boundary.") + elseif v == :eps_B + @warn("You can't modify the outer boundary.") + elseif v == :plan + @warn("You can't modify the pointer to the fastsum plan.") + else + Core.setfield!( p, v, val ) + end + +end # Base.setproperty! + +# overwrite dot notation for plan struct in order to use C memory +function Base.getproperty( p::Plan, v::Symbol ) + + if v == :x + + if !isdefined( p, :x ) + error("x is not set.") + end + + ptr = Core.getfield( p, :x ) + + if p.d == 1 + return unsafe_wrap( Vector{Float64}, ptr, p.N ) # get source nodes from C memory and convert to Julia type + else + return unsafe_wrap( Matrix{Float64}, ptr, (p.d, p.N) ) # get source nodes from C memory and convert to Julia type + end + + elseif v == :y + + if !isdefined( p, :y ) + error("y is not set.") + end + + ptr = Core.getfield( p, :y ) + + if p.d == 1 + return unsafe_wrap( Vector{Float64}, ptr, p.M ) + else + return unsafe_wrap( Matrix{Float64}, ptr, (p.d, p.M) ) + end + + elseif v == :alpha + + if !isdefined( p, :alpha ) + error("alpha is not set.") + end + + ptr = Core.getfield( p, :alpha ) + return unsafe_wrap( Vector{ComplexF64}, ptr, p.N ) # get coefficients from C memory and convert to Julia type + + elseif v == :f + + if !isdefined( p, :f ) + error("f is not set.") + end + + ptr = Core.getfield( p, :f ) + return unsafe_wrap( Vector{ComplexF64}, ptr, p.M ) # get function values from C memory and convert to Julia type + + else + return Core.getfield( p, v ) + end +end # Base.getproperty + +function trafo( p::Plan ) + + if p.finalized + error( "Plan already finalized." ) + end + + if !isdefined( p, :x ) + error( "x has not been set." ) + end + + if !isdefined( p, :y ) + error( "y has not been set." ) + end + + if !isdefined( p, :alpha ) + error( "alpha has not been set." ) + end + + ptr = ccall( ( "jfastsum_trafo", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},), p.plan ) + Core.setfield!( p, :f, ptr ) + +end #trafo + +function trafo_exact( p::Plan ) + + if p.finalized + error( "Plan already finalized." ) + end + + if !isdefined( p, :x ) + error( "x has not been set." ) + end + + if !isdefined( p, :y ) + error( "y has not been set." ) + end + + if !isdefined( p, :alpha ) + error( "alpha has not been set." ) + end + + ptr = ccall( ("jfastsum_exact", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},), p.plan ) + Core.setfield!( p, :f, ptr ) + +end #trafo + +function get_num_threads() + return ccall(("nfft_get_num_threads",lib_path),Int64,()) +end + +function set_num_threads(nthreads::Number) + ccall(("nfft_set_num_threads",lib_path),Nothing,(Int64,),convert(Int64,nthreads)) +end + +end #module diff --git a/julia/fastsum/libfastsumjulia.c b/julia/fastsum/libfastsumjulia.c new file mode 100644 index 00000000..45f35773 --- /dev/null +++ b/julia/fastsum/libfastsumjulia.c @@ -0,0 +1,143 @@ +#include "config.h" + +#include +#include +#include +#include +#ifdef HAVE_COMPLEX_H + #include +#endif + +#ifdef _OPENMP + #include +#endif + +#include "fastsum.h" +#include "kernels.h" +#include "infft.h" + +fastsum_plan* jfastsum_alloc(){ + fastsum_plan* p = nfft_malloc(sizeof(fastsum_plan)); + return p; +} +// c wird von Julia als Float64-Pointer übergeben + +int jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, int n, int ps, double eps_I, double eps_B, int N, int M, int nn_x, int nn_y, int m_x, int m_y ){ + C (*kernel)(R, int, const R *); + + if ( strcmp(s, "gaussian") == 0 ) + kernel = gaussian; + else if ( strcmp(s, "multiquadric") == 0 ) + kernel = multiquadric; + else if ( strcmp(s, "inverse_multiquadric") == 0 ) + kernel = inverse_multiquadric; + else if ( strcmp(s, "logarithm") == 0 ) + kernel = logarithm; + else if ( strcmp(s, "thinplate_spline") == 0 ) + kernel = thinplate_spline; + else if ( strcmp(s, "one_over_square") == 0 ) + kernel = one_over_square; + else if ( strcmp(s, "one_over_modulus") == 0 ) + kernel = one_over_modulus; + else if ( strcmp(s, "one_over_x") == 0 ) + kernel = one_over_x; + else if ( strcmp(s, "inverse_multiquadric3") == 0 ) + kernel = inverse_multiquadric3; + else if ( strcmp(s, "sinc_kernel") == 0 ) + kernel = sinc_kernel; + else if ( strcmp(s, "cosc") == 0 ) + kernel = cosc; + else if ( strcmp(s, "cot") == 0 ) + kernel = kcot; + else if ( strcmp(s, "one_over_cube") == 0 ) + kernel = one_over_cube; + else if ( strcmp(s, "log_sin") == 0 ) + kernel = log_sin; + else if ( strcmp(s, "laplacian_rbf") == 0 ) + kernel = laplacian_rbf; + else if ( strcmp(s, "der_laplacian_rbf") == 0 ) + kernel = der_laplacian_rbf; + else if ( strcmp(s, "xx_gaussian") == 0 ) + kernel = xx_gaussian; + else if ( strcmp(s, "absx") == 0 ) + kernel = absx; + else { + return 1; + } + + fastsum_init_guru_kernel( p, d, kernel, c, f | STORE_PERMUTATION_X_ALPHA, n, ps, eps_I, eps_B); + p -> x = 0; + p -> y = 0; + fastsum_init_guru_source_nodes( p, N, nn_x, m_x ); + fastsum_init_guru_target_nodes( p, M, nn_y, m_y ); + + return 0; + +} + +double* jfastsum_set_x( fastsum_plan* p, double* x ){ + int d = p -> d; + int N = p -> N_total; + + if ( p -> permutation_x_alpha == NULL ) { + + for ( int k = 0; k < N; k++ ) + for ( int t = 0; t < d; t++) + p -> x[k*d+t] = x[k+t*N]; + + } else { + + for ( int k = 0; k < N; k++ ) + for ( int t = 0; t < d; t++) + p -> x[k*d+t] = x[p->permutation_x_alpha[k]+t*N]; + + } + + fastsum_precompute_source_nodes( p ); + + return p -> x; +} + +double* jfastsum_set_y( fastsum_plan* p, double* y ){ + int d = p -> d; + int M = p -> M_total; + + for ( int j = 0; j < M; j++ ) + for ( int t = 0; t < d; t++ ) + p -> y[j*d+t] = y[j+t*M]; + + fastsum_precompute_target_nodes( p ); + + return p -> y; +} + +double _Complex* jfastsum_set_alpha( fastsum_plan* p, double _Complex* alpha ){ + int N = p -> N_total; + + for ( int k = 0; k < N; k++ ) + if ( p -> permutation_x_alpha == NULL ) + p -> alpha[k] = alpha[k]; + else + p -> alpha[k] = alpha[p->permutation_x_alpha[k]]; + + return p -> alpha; +} + + +double _Complex* jfastsum_trafo( fastsum_plan* p ){ + fastsum_trafo( p ); + return p -> f; +} + +double _Complex* jfastsum_exact( fastsum_plan* p ){ + fastsum_exact( p ); + return p -> f; +} + +void jfastsum_finalize( fastsum_plan* p ){ + fastsum_finalize_source_nodes( p ); + fastsum_finalize_target_nodes( p ); + fastsum_finalize_kernel( p ); + nfft_free( p ); + return; +} diff --git a/julia/fastsum/simple_test.jl b/julia/fastsum/simple_test.jl new file mode 100644 index 00000000..03fdcde6 --- /dev/null +++ b/julia/fastsum/simple_test.jl @@ -0,0 +1,55 @@ +push!(LOAD_PATH, pwd()) +using fastsum +using LinearAlgebra + +println("fastsum test") + +# set the parameters: +d = 2 +N = 20000 +M = 20000 +kernel = "multiquadric" +c = 1/sqrt(N) +p = 8 +flags = 0 +m = p +n = 256 +eps_I = p/n +eps_B = max( 1/16, p/n ) +nn = 2*n + +# create a Plan-Object in Julia +plan = fastsum.Plan( d, N, M, n, p, kernel, c, eps_I, eps_B, nn, m ) + +# generate source nodes in circle of radius 0.25-eps_B/2 +r = sqrt.( rand(N) ).*(0.25-eps_B/2) +phi = rand(N).*(2*pi) +X = [ (r.*cos.(phi)) (r.*sin.(phi)) ] +plan.x = X + +# generate coefficients alpha_k +alpha = rand(N)+im*rand(N) +plan.alpha = alpha + +# generate target nodes in circle of radius 0.25-eps_B/2 +r = sqrt.( rand(M) ).*(0.25-eps_B/2) +phi = rand(M).*(2*pi) +Y = [ (r.*cos.(phi)) (r.*sin.(phi)) ] +plan.y = Y + +# Start the Transformation +println( "time:" ) +@time fastsum.trafo( plan ) + +f1 = copy( plan.f ) +println( "time direct:" ) +@time fastsum.trafo_exact( plan ) +f2 = copy( plan.f ) +error_vector = f1 - f2 + +E_2 = norm(error_vector)/norm(f1) +E_infty = norm(error_vector, Inf)/norm(plan.alpha,1) +println( "E_2 error:" ) +println( E_2 ) +println( "E_infty error:" ) +println( E_infty ); diff --git a/julia/nfct/Makefile.am b/julia/nfct/Makefile.am index 6e8e49be..ef43ce6b 100644 --- a/julia/nfct/Makefile.am +++ b/julia/nfct/Makefile.am @@ -15,9 +15,9 @@ endif libnfctjulia_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_julia.la @fftw3_LDFLAGS@ $(libadd_for_fftw_threads) @fftw3_LIBS@ -libnfctjulia_la_LDFLAGS = -no-undefined -module -shared -avoid-version @fftw3_LDFLAGS@ +libnfctjulia_la_LDFLAGS = -no-undefined -shared -avoid-version @fftw3_LDFLAGS@ -EXTRA_DIST = NFCT.jl simple_test_1d.jl simple_test_2d.jl +EXTRA_DIST = NFCT.jl simple_test_1d.jl simple_test_2d.jl simple_test_3d.jl libnfctjulia-link: all-am soname=`$(EGREP) "^dlname=" libnfctjulia.la | $(SED) -e "s|^dlname='\(.*\)'|\1|"` ; \ diff --git a/julia/nfct/NFCT.jl b/julia/nfct/NFCT.jl index f83eb468..1e7daa80 100644 --- a/julia/nfct/NFCT.jl +++ b/julia/nfct/NFCT.jl @@ -6,9 +6,8 @@ ending = ".so" if Sys.iswindows() ending = ".dll" -## disabled since libtool option "-module" creates .so file on macOS -#elseif Sys.isapple() -# ending = ".dylib" +elseif Sys.isapple() + ending = ".dylib" end # path to .so file @@ -72,10 +71,6 @@ function NFCTplan(N::NTuple{D,Integer},M::Integer) where {D} error("Every entry of N has to be an even, positive integer." ) end - if sum(N .% 2) != 0 - error("Every entry of N has to be an even, positive integer." ) - end - if M <= 0 error("M has to be a positive integer." ) end @@ -100,8 +95,6 @@ function NFCTplan(N::NTuple{D,Integer},M::Integer) where {D} end function NFCTplan(N::NTuple{D,Integer},M::Integer,n::NTuple{D,Integer},m::Integer=Int32(8),f1::UInt32=(D > 1 ? f1_default : f1_default_1d),f2::UInt32=f2_default) where {D} - @info "You are using the guru interface. Please consult the README if you are having trouble." - # safety checks if any(x->x<=0,N) error("Every entry of N has to be an even, positive integer." ) @@ -176,7 +169,7 @@ function Base.setproperty!(p::NFCTplan{D},v::Symbol,val) where {D} error("NFCTplan already finalized") end - # setting nodes, verification of correct size Mxd + # setting nodes, verification of correct size dxM if v == :x if D == 1 if typeof(val) != Vector{Float64} @@ -190,7 +183,7 @@ function Base.setproperty!(p::NFCTplan{D},v::Symbol,val) where {D} error("x has to be a Float64 matrix.") end if size(val)[1] != D || size(val)[2] != p.M - error("x has to be a Float64 matrix of size Mxd.") + error("x has to be a Float64 matrix of size dxM.") end end ptr = ccall(("jnfct_set_x",lib_path),Ptr{Float64},(Ref{nfct_plan},Ref{Cdouble}),p.plan,val) @@ -223,7 +216,7 @@ function Base.setproperty!(p::NFCTplan{D},v::Symbol,val) where {D} elseif v == :plan @warn "You can't modify the C pointer to the NFCT plan." elseif v == :num_threads - @warn "You can't currently modify the number of threads." + @warn "You can't currently modify the number of threads of the NFCT plan. Use NFCT.set_num_threads(nthreads) instead." elseif v == :init_done @warn "You can't modify this flag." elseif v == :N @@ -342,5 +335,13 @@ function adjoint(P::NFCTplan{D}) where {D} Core.setfield!(P,:fhat,ptr) end +function get_num_threads() + return ccall(("nfft_get_num_threads",lib_path),Int64,()) +end + +function set_num_threads(nthreads::Number) + ccall(("nfft_set_num_threads",lib_path),Nothing,(Int64,),convert(Int64,nthreads)) +end + # module end end diff --git a/julia/nfct/simple_test_2d.jl b/julia/nfct/simple_test_2d.jl index 4c2ac6ce..e7b30632 100644 --- a/julia/nfct/simple_test_2d.jl +++ b/julia/nfct/simple_test_2d.jl @@ -35,15 +35,8 @@ println( "trafo time:" ) f2 = p.f #indices -I = Vector{Vector{Int64}}(undef,prod(N)) -freq = 1 - -for i = 0:N[1]-1 - for j = 0:N[2]-1 - I[freq] = [i,j] - global freq += 1 - end -end +I = [ [j; i] for i in 0:N[2]-1, j in 0:N[1]-1 ] +I = vec(I) #define Fourier matrix F = [ cos(2*pi*A[:,j][1]*I[l][1])*cos(2*pi*A[:,j][2]*I[l][2]) for j in 1:M, l in 1:prod(N) ] diff --git a/julia/nfct/simple_test_3d.jl b/julia/nfct/simple_test_3d.jl new file mode 100644 index 00000000..049649cb --- /dev/null +++ b/julia/nfct/simple_test_3d.jl @@ -0,0 +1,79 @@ +push!(LOAD_PATH, pwd()) +using NFCT +using LinearAlgebra + +println( "2d NFCT Test" ) + +#bandwidth +N = ( 32, 16, 8 ) + +#number of nodes +M = 1000 + +#create plan +p = NFCTplan( N, M ) + +println("Number of Threads: ", p.num_threads) + +#generate random nodes +A = 0.5 .* rand( 3, M ) + +#set nodes +p.x = A + +#generate random Fourier coefficients +fhat = rand( prod(N) ) + +#set Fourier coefficients +p.fhat = fhat + +#transform +println( "trafo time:" ) +@time NFCT.trafo(p) + +#get function values +f2 = p.f + +#indices +I = [ [j; i; k] for k in 0:N[3]-1, i in 0:N[2]-1, j in 0:N[1]-1 ] +I = vec(I) + +#define Fourier matrix +F = [ cos(2*pi*A[:,j][1]*I[l][1])*cos(2*pi*A[:,j][2]*I[l][2])*cos(2*pi*A[:,j][3]*I[l][3]) for j in 1:M, l in 1:prod(N) ] + +#multiply Fourier matrix with vector of Fourier coefficients +f1 = F*fhat + +error_vector = f1-f2 +E_2 = norm(error_vector)/norm(f1) +E_infty = norm(error_vector, Inf)/norm(fhat,1) +println( "E_2 error:" ) +println( E_2 ) +println( "E_infty error:" ) +println( E_infty ) + +if ( E_2 >= 1e-8 ) || ( E_infty >= 1e-8 ) + error( "Errors are too large." ) +end + +#adjoint +println( "adjoint time:" ) +@time NFCT.adjoint(p) + +#get function values +f2 = p.fhat + +#multiply Fourier matrix with vector of Fourier coefficients +f1 = F'*p.f + +error_vector = f1-f2 +E_2 = norm(error_vector)/norm(f1) +E_infty = norm(error_vector, Inf)/norm(fhat,1) +println( "E_2 error:" ) +println( E_2 ) +println( "E_infty error:" ) +println( E_infty ) + +if ( E_2 >= 1e-8 ) || ( E_infty >= 1e-8 ) + error( "Errors are too large." ) +end diff --git a/julia/nfft/Makefile.am b/julia/nfft/Makefile.am index 3be3a4eb..c9880b99 100644 --- a/julia/nfft/Makefile.am +++ b/julia/nfft/Makefile.am @@ -15,9 +15,9 @@ endif libnfftjulia_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_julia.la @fftw3_LDFLAGS@ $(libadd_for_fftw_threads) @fftw3_LIBS@ -libnfftjulia_la_LDFLAGS = -no-undefined -module -shared -avoid-version @fftw3_LDFLAGS@ +libnfftjulia_la_LDFLAGS = -no-undefined -shared -avoid-version @fftw3_LDFLAGS@ -EXTRA_DIST = NFFT.jl simple_test_1d.jl simple_test_2d.jl simple_test_3d.jl +EXTRA_DIST = NFFT.jl simple_test_1d.jl simple_test_2d.jl simple_test_3d.jl README.md libnfftjulia-link: all-am soname=`$(EGREP) "^dlname=" libnfftjulia.la | $(SED) -e "s|^dlname='\(.*\)'|\1|"` ; \ diff --git a/julia/nfft/NFFT.jl b/julia/nfft/NFFT.jl index e8bcd83f..d8dd252d 100644 --- a/julia/nfft/NFFT.jl +++ b/julia/nfft/NFFT.jl @@ -7,9 +7,8 @@ ending = ".so" if Sys.iswindows() ending = ".dll" -## disabled since libtool option "-module" creates .so file on macOS -#elseif Sys.isapple() -# ending = ".dylib" +elseif Sys.isapple() + ending = ".dylib" end # path to .so file @@ -108,7 +107,6 @@ function Plan(N::NTuple{D,Integer},M::Integer) where {D} end function Plan(N::NTuple{D,Integer},M::Integer,n::NTuple{D,Integer},m::Integer=Int32(default_window_cut_off),f1::UInt32=(D > 1 ? f1_default : f1_default_1d),f2::UInt32=f2_default) where {D} - @info "You are using the guru interface. Please consult the README if you are having trouble." # safety checks if any(x->x<=0,N) @@ -184,7 +182,7 @@ function Base.setproperty!(p::Plan{D},v::Symbol,val) where {D} error("Plan already finalized") end - # setting nodes, verification of correct size Mxd + # setting nodes, verification of correct size dxM if v == :x if D == 1 if typeof(val) != Vector{Float64} @@ -198,7 +196,7 @@ function Base.setproperty!(p::Plan{D},v::Symbol,val) where {D} error("x has to be a Float64 matrix.") end if size(val)[1] != D || size(val)[2] != p.M - error("x has to be a Float64 matrix of size Mxd.") + error("x has to be a Float64 matrix of size dxM.") end end ptr = ccall(("jnfft_set_x",lib_path),Ptr{Float64},(Ref{nfft_plan},Ref{Cdouble}),p.plan,val) @@ -228,7 +226,7 @@ function Base.setproperty!(p::Plan{D},v::Symbol,val) where {D} elseif v == :plan @warn "You can't modify the C pointer to the NFFT plan." elseif v == :num_threads - @warn "You can't currently modify the number of threads." + @warn "You can't currently modify the number of threads of the NFFT plan. Use NFFT.set_num_threads(nthreads) instead." elseif v == :init_done @warn "You can't modify this flag." elseif v == :N @@ -347,5 +345,13 @@ function adjoint(P::Plan{D}) where {D} Core.setfield!(P,:fhat,ptr) end +function get_num_threads() + return ccall(("nfft_get_num_threads",lib_path),Int64,()) +end + +function set_num_threads(nthreads::Number) + ccall(("nfft_set_num_threads",lib_path),Nothing,(Int64,),convert(Int64,nthreads)) +end + # module end end diff --git a/julia/nfsft/Makefile.am b/julia/nfsft/Makefile.am new file mode 100644 index 00000000..c91a4668 --- /dev/null +++ b/julia/nfsft/Makefile.am @@ -0,0 +1,33 @@ +.PHONY: libnfsftjulia-link clean-libnfsftjulia-link + +# compiler flags +AM_CPPFLAGS = -I$(top_srcdir)/include + +# library +lib_LTLIBRARIES = libnfsftjulia.la +libnfsftjulia_la_SOURCES = libnfsftjulia.c + +if HAVE_THREADS + libadd_for_fftw_threads=@fftw3_threads_LIBS@ +else + libadd_for_fftw_threads= +endif + +libnfsftjulia_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_julia.la @fftw3_LDFLAGS@ $(libadd_for_fftw_threads) @fftw3_LIBS@ + +libnfsftjulia_la_LDFLAGS = -no-undefined -module -shared -avoid-version @fftw3_LDFLAGS@ + +EXTRA_DIST = NFSFT.jl simple_test.jl + +libnfsftjulia-link: all-am + soname=`$(EGREP) "^dlname=" libnfsftjulia.la | $(SED) -e "s|^dlname='\(.*\)'|\1|"` ; \ + rm -f "$$soname"; \ + $(LN_S) ".libs/$$soname" "./$$soname" + +clean-libnfsftjulia-link: + soname=`$(EGREP) "^dlname=" libnfsftjulia.la | $(SED) -e "s|^dlname='\(.*\)'|\1|"`; \ + rm -f "$$soname" + +all: all-am libnfsftjulia-link + +clean: clean-libnfsftjulia-link clean-am \ No newline at end of file diff --git a/julia/nfsft/NFSFT.jl b/julia/nfsft/NFSFT.jl new file mode 100644 index 00000000..a768d4b5 --- /dev/null +++ b/julia/nfsft/NFSFT.jl @@ -0,0 +1,294 @@ +module NFSFT + +export NFSFTplan,nfsft_plan + +# file ending for OS +ending = ".so" + +if Sys.iswindows() + ending = ".dll" +elseif Sys.isapple() + ending = ".dylib" +end + +# path to .so file +const lib_path = string( @__DIR__, "/libnfsftjulia", ending ) + +# NFFT flags +PRE_PHI_HUT = UInt32(1)<<0 +FG_PSI = UInt32(1)<<1 +PRE_LIN_PSI = UInt32(1)<<2 +PRE_FG_PSI = UInt32(1)<<3 +PRE_PSI = UInt32(1)<<4 +PRE_FULL_PSI = UInt32(1)<<5 +MALLOC_X = UInt32(1)<<6 +MALLOC_F_HAT = UInt32(1)<<7 +MALLOC_F = UInt32(1)<<8 +FFT_OUT_OF_PLACE = UInt32(1)<<9 +FFTW_INIT = UInt32(1)<<10 +NFFT_SORT_NODES = UInt32(1)<<11 +NFFT_OMP_BLOCKWISE_ADJOINT = UInt32(1)<<12 +PRE_ONE_PSI = (PRE_LIN_PSI| PRE_FG_PSI| PRE_PSI| PRE_FULL_PSI) + +# NFSFT flags +NFSFT_NORMALIZED = UInt32(1)<<0 +NFSFT_USE_NDFT = UInt32(1)<<1 +NFSFT_USE_DPT = UInt32(1)<<2 +NFSFT_MALLOC_X = UInt32(1)<<3 +NFSFT_MALLOC_F_HAT = UInt32(1)<<5 +NFSFT_MALLOC_F = UInt32(1)<<6 +NFSFT_PRESERVE_F_HAT = UInt32(1)<<7 +NFSFT_PRESERVE_X = UInt32(1)<<8 +NFSFT_PRESERVE_F = UInt32(1)<<9 +NFSFT_DESTROY_F_HAT = UInt32(1)<<10 +NFSFT_DESTROY_X = UInt32(1)<<11 +NFSFT_DESTROY_F = UInt32(1)<<12 +NFSFT_NFSFT_NO_DIRECT_ALGORITHM = UInt32(1)<<13 +NFSFT_NO_FAST_ALGORITHM = UInt32(1)<<14 +NFSFT_ZERO_F_HAT = UInt32(1)<<16 +NFSFT_EQUISPACED = UInt32(1)<<17 + +# default flag values +nfsft_default = UInt32(NFSFT_MALLOC_X | NFSFT_MALLOC_F | NFSFT_MALLOC_F_HAT) +#nfsft_nfft_default = UInt32(PRE_PHI_HUT | PRE_PSI | FFTW_INIT | NFFT_OMP_BLOCKWISE_ADJOINT) +nfsft_nfft_default = UInt32(PRE_PHI_HUT | PRE_PSI | FFTW_INIT | FFT_OUT_OF_PLACE) + +# default window cut off +nfsft_default_nfft_cut_off = 6 + +# dummy struct for C +mutable struct nfsft_plan +end +# NFFT plan struct + +mutable struct NFSFTplan + N::Int32 # bandwidth tuple + N_total::Int32 # Fourier coefficients length + M::Int32 # number of nodes + flags::UInt32 # NFFT flags + nfft_flags::UInt32 # FFTW flags + nfft_cutoff::Int32 # window cut off + init_done::Bool # bool for plan init + finalized::Bool # bool for finalizer + x::Ref{Float64} # nodes + f::Ref{ComplexF64} # function values + fhat::Ref{ComplexF64} # Fourier coefficients + plan::Ref{nfsft_plan} # plan (C pointer) + function NFSFTplan(N::Int32,M::Int32,flags::UInt32,nfft_flags::UInt32,nfft_cutoff::Int32) + # create plan object + new(N,(2*N+2)^2,M,flags,nfft_flags,nfft_cutoff,false,false) + end +end + +function NFSFTplan(N::Integer,M::Integer,flags::UInt32=nfsft_default,nfft_flags::UInt32=nfsft_nfft_default,nfft_cutoff::Integer=Int32(nfsft_default_nfft_cut_off)) + # safety checks + if N <= 0 + error("Invalid N: " + N + ". Argument must be a positive integer") + end + + if M <= 0 + error("Invalid M: " + M + ". Argument must be a positive integer") + end + + NFSFTplan(Int32(N),Int32(M),flags,nfft_flags, Int32(nfft_cutoff)) +end + +# finalizer +function finalize_plan(P::NFSFTplan) + if !P.init_done + error("Plan not initialized.") + end + + if !P.finalized + Core.setfield!(P,:finalized,true) + ccall(("jnfsft_finalize", lib_path),Nothing,(Ref{nfsft_plan},),P.plan) + end +end + +# allocate plan memory and init +function nfsft_init(p::NFSFTplan) + # call init for memory allocation + ptr = ccall(("jnfsft_alloc", lib_path),Ptr{nfsft_plan},()) + + # set pointer + Core.setfield!(p,:plan,ptr) + + # initialize values + ccall(("jnfsft_init", lib_path),Nothing,(Ref{nfsft_plan},Int32,Int32,UInt32,UInt32,Int32),ptr,p.N,p.M,p.flags,p.nfft_flags,p.nfft_cutoff) + Core.setfield!(p,:init_done,true) + finalizer(finalize_plan,p) +end + +# overwrite dot notation for plan struct in order to use C memory +function Base.setproperty!(p::NFSFTplan,v::Symbol,val) + # init plan if not done [usually with setting nodes] + if !p.init_done + nfsft_init(p) + end + + # prevent bad stuff from happening + if p.finalized + error("NFSFTplan already finalized") + end + + # setting nodes, verification of correct size dxM + if v == :x + if typeof(val) != Array{Float64,2} + error("x has to be a Float64 matrix.") + end + if size(val)[1] != 2 || size(val)[2] != p.M + error("x has to be a Float64 matrix of size 2xM.") + end + + ptr = ccall(("jnfsft_set_x",lib_path),Ptr{Float64},(Ref{nfsft_plan},Ref{Cdouble}),p.plan,val) + Core.setfield!(p,v,ptr) + + # setting values + elseif v == :f + if typeof(val) != Array{ComplexF64,1} + error("f has to be a ComplexFloat64 vector.") + end + if size(val)[1] != p.M + error("f has to be a ComplexFloat64 vector of size M.") + end + ptr = ccall(("jnfsft_set_f",lib_path),Ptr{ComplexF64},(Ref{nfsft_plan},Ref{ComplexF64}),p.plan,val) + Core.setfield!(p,v,ptr) + + # setting Fourier coefficients + elseif v == :fhat + if typeof(val) != Array{ComplexF64,1} + error("fhat has to be a ComplexFloat64 vector.") + end + if size(val)[1] != p.N_total + error("fhat has to be a ComplexFloat64 vector of size (2*N+2)^2.") + end + ptr = ccall(("jnfsft_set_fhat",lib_path),Ptr{ComplexF64},(Ref{nfsft_plan},Ref{ComplexF64}),p.plan,val) + Core.setfield!(p,v,ptr) + + # prevent modification of NFSFT plan pointer + elseif v == :plan + @warn "You can't modify the C pointer to the NFSFT plan." + elseif v == :num_threads + @warn "You can't currently modify the number of threads of the NFSFT plan. Use NFSFT.set_num_threads(nthreads) instead." + elseif v == :init_done + @warn "You can't modify this flag." + elseif v == :N + @warn "You can't modify the bandwidth, please create an additional plan." + elseif v == :M + @warn "You can't modify the number of nodes, please create an additional plan." + elseif v == :flags + @warn "You can't modify the NFSFT flags, please create an additional plan." + elseif v == :nfft_flags + @warn "You can't modify the NFFT flags, please create an additional plan." + elseif v == :nfft_cutoff + @warn "You can't modify the nfft_cutoff, please create an additional plan." + # handle other set operations the default way + else + Core.setfield!(p,v,val) + end +end + + +# overwrite dot notation for plan struct in order to use C memory +function Base.getproperty(p::NFSFTplan,v::Symbol) + if v == :x + if !isdefined(p,:x) + error("x is not set.") + end + ptr = Core.getfield(p,:x) + return unsafe_wrap(Matrix{Float64},ptr,(2,Int64(p.M))) # get nodes from C memory and convert to Julia type + elseif v == :num_threads + return ccall(("nfft_get_num_threads", lib_path),Int64,()) + elseif v == :f + if !isdefined(p,:f) + error("f is not set.") + end + ptr = Core.getfield(p,:f) + return unsafe_wrap(Vector{ComplexF64},ptr,p.M) # get function values from C memory and convert to Julia type + elseif v == :fhat + if !isdefined(p,:fhat) + error("fhat is not set.") + end + ptr = Core.getfield(p,:fhat) + return unsafe_wrap(Vector{ComplexF64},ptr,p.N_total) # get Fourier coefficients from C memory and convert to Julia type + else + return Core.getfield(p,v) + end +end + +function nfsft_index(p::NFSFTplan, k::Integer, n::Integer)::Integer + return (2*p.N+2)*(p.N-n+1)+(p.N+k+1) +end + + +# nfsft trafo direct [call with NFSFT.trafo_direct outside module] +function trafo_direct(P::NFSFTplan) + # prevent bad stuff from happening + if P.finalized + error("NFSFTplan already finalized") + end + + if !isdefined(P, :fhat) + error("fhat has not been set.") + end + + if !isdefined(P,:x) + error("x has not been set.") + end + + ptr = ccall(("jnfsft_trafo_direct",lib_path),Ptr{ComplexF64},(Ref{nfsft_plan},),P.plan) + Core.setfield!(P,:f,ptr) +end + + +# adjoint trafo direct [call with NFSFT.adjoint_direct outside module] +function adjoint_direct(P::NFSFTplan) + # prevent bad stuff from happening + if P.finalized + error("NFSFTplan already finalized") + end + if !isdefined(P, :f) + error("f has not been set.") + end + if !isdefined(P,:x) + error("x has not been set.") + end + ptr = ccall(("jnfsft_adjoint_direct",lib_path),Ptr{ComplexF64},(Ref{nfsft_plan},),P.plan) + Core.setfield!(P,:fhat,ptr) +end + +# nfsft trafo [call with NFSFT.trafo outside module] +function trafo(P::NFSFTplan) + # prevent bad stuff from happening + if P.finalized + error("NFSFTplan already finalized") + end + if !isdefined(P, :fhat) + error("fhat has not been set.") + end + if !isdefined(P,:x) + error("x has not been set.") + end + ptr = ccall(("jnfsft_trafo",lib_path),Ptr{ComplexF64},(Ref{nfsft_plan},),P.plan) + Core.setfield!(P,:f,ptr) +end + +# adjoint trafo [call with NFSFT.adjoint outside module] +function adjoint(P::NFSFTplan) + # prevent bad stuff from happening + if P.finalized + error("NFSFTplan already finalized") + end + if !isdefined(P, :f) + error("f has not been set.") + end + if !isdefined(P,:x) + error("x has not been set.") + end + ptr = ccall(("jnfsft_adjoint",lib_path),Ptr{ComplexF64},(Ref{nfsft_plan},),P.plan) + Core.setfield!(P,:fhat,ptr) +end + + +# module end +end diff --git a/julia/nfsft/libnfsftjulia.c b/julia/nfsft/libnfsftjulia.c new file mode 100644 index 00000000..2908f84d --- /dev/null +++ b/julia/nfsft/libnfsftjulia.c @@ -0,0 +1,78 @@ +#include "config.h" + +#include +#include +#include +#include + +#include +#include "nfft3.h" +#include "infft.h" + +nfsft_plan* jnfsft_alloc(void) { + nfsft_plan* p = nfft_malloc(sizeof(nfsft_plan)); + return p; +} + +void jnfsft_init(nfsft_plan* p, int N, int M, unsigned int flags, unsigned int nfft_flags, int nfft_cutoff){ + nfsft_precompute(N,1000.0,0U,0U); // \todo: Make these variable for user + nfsft_init_guru(p, N, M, flags, nfft_flags, nfft_cutoff); +} + +double* jnfsft_set_x(nfsft_plan* p, double* X){ + int M = p->M_total; + int j; + for (j = 0; j < M; j++){ + p->x[2*j] = ((X[2*j] > KPI)?(X[2*j] - K2PI):(X[2*j]))/K2PI; + p->x[2*j+1] = X[2*j+1]/K2PI; + } + nfsft_precompute_x(p); + return p->x; +} + +double _Complex* jnfsft_set_fhat(nfsft_plan* p, double _Complex* f_hat){ + int n = p->N_total; + int k; + for (k=0;kf_hat[k] = f_hat[k]; + return p->f_hat; +} + +double _Complex* jnfsft_set_f(nfsft_plan* p, double _Complex* f){ + int M = p->M_total; + int j; + for (j=0;jf[j] = f[j]; + return p->f; +} + +// nfsft trafo, return pointer to values for access by Julia if pointer isn't set +double _Complex* jnfsft_trafo(nfsft_plan* p){ + nfsft_trafo(p); + return p->f; +} + +// nfsft adjoint, return pointer to coefficients for access by Julia if pointer isn't set +double _Complex* jnfsft_adjoint(nfsft_plan* p){ + nfsft_adjoint(p); + return p->f_hat; +} + +// nfsft trafo, return pointer to values for access by Julia if pointer isn't set +double _Complex* jnfsft_trafo_direct(nfsft_plan* p){ + nfsft_trafo_direct(p); + return p->f; +} + +// nfsft adjoint, return pointer to coefficients for access by Julia if pointer isn't set +double _Complex* jnfsft_adjoint_direct(nfsft_plan* p){ + nfsft_adjoint_direct(p); + return p->f_hat; +} + +// nfsft plan finalizer +void jnfsft_finalize(nfsft_plan* p){ + nfsft_finalize(p); + nfft_free(p); + nfsft_forget(); +} \ No newline at end of file diff --git a/julia/nfsft/simple_test.jl b/julia/nfsft/simple_test.jl new file mode 100644 index 00000000..1c0111e7 --- /dev/null +++ b/julia/nfsft/simple_test.jl @@ -0,0 +1,66 @@ +push!(LOAD_PATH, pwd()) +using NFSFT +using LinearAlgebra + +println("NFSFT Test") +println(NFSFT.nfsft_nfft_default) +# bandwidth +N = 100 + +#number of nodes +M = 100 + +# pseudo-random nodes +X = rand(2,M) +X[1,:] .-= 0.5 +X[2,:] .*= 0.5 + +# test init and setting x +p = NFSFTplan(N, M) +p.x = X + +# generate pseudo-random Fourier coefficients + +fhat = zeros(p.N_total)+im*zeros(p.N_total) +for k = 0:N + for n = -k:k + index = NFSFT.nfsft_index(p, k, n) + fhat[index+1] = (rand() - 0.5) + im * (rand() - 0.5) + end +end +println(size(fhat)) +p.fhat = fhat + +# test trafo direct +NFSFT.trafo_direct(p) +f1 = p.f +#print("Vector f (NDSFT):") +#println(f1) + +# test trafo +NFSFT.trafo(p) +f2 = p.f +#print("Vector f (NFSFT):") +#println(f2) + +# test adjoint direct +NFSFT.adjoint_direct(p) +f3 = p.fhat +#print("Vector fhat (NDSFT):") +#println(f3) + +# test fast approximate adjoint +NFSFT.adjoint(p) +f4 = p.fhat +#print("Vector fhat (NFSFT):") +#println(f4) + +# calculate the error vectors +error_vector_traf = f1 - f2 +error_vector_adj = f3 - f4 + +println(norm(error_vector_traf)/norm(f1)) +println(norm(error_vector_adj, Inf)/norm(f3,1)) +println(p.finalized) +NFSFT.finalize_plan(p) +println(p.finalized) \ No newline at end of file diff --git a/julia/nfst/Makefile.am b/julia/nfst/Makefile.am new file mode 100644 index 00000000..92a8dc62 --- /dev/null +++ b/julia/nfst/Makefile.am @@ -0,0 +1,33 @@ +.PHONY: libnfstjulia-link clean-libnfstjulia-link + +# compiler flags +AM_CPPFLAGS = -I$(top_srcdir)/include + +# library +lib_LTLIBRARIES = libnfstjulia.la +libnfstjulia_la_SOURCES = libnfstjulia.c + +if HAVE_THREADS + libadd_for_fftw_threads=@fftw3_threads_LIBS@ +else + libadd_for_fftw_threads= +endif + +libnfstjulia_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_julia.la @fftw3_LDFLAGS@ $(libadd_for_fftw_threads) @fftw3_LIBS@ + +libnfstjulia_la_LDFLAGS = -no-undefined -shared -avoid-version @fftw3_LDFLAGS@ + +EXTRA_DIST = NFST.jl simple_test_1d.jl simple_test_2d.jl simple_test_3d.jl + +libnfstjulia-link: all-am + soname=`$(EGREP) "^dlname=" libnfstjulia.la | $(SED) -e "s|^dlname='\(.*\)'|\1|"` ; \ + rm -f "$$soname"; \ + $(LN_S) ".libs/$$soname" "./$$soname" + +clean-libnfstjulia-link: + soname=`$(EGREP) "^dlname=" libnfstjulia.la | $(SED) -e "s|^dlname='\(.*\)'|\1|"`; \ + rm -f "$$soname" + +all: all-am libnfstjulia-link + +clean: clean-libnfstjulia-link clean-am diff --git a/julia/nfst/NFST.jl b/julia/nfst/NFST.jl new file mode 100644 index 00000000..c64ec2d6 --- /dev/null +++ b/julia/nfst/NFST.jl @@ -0,0 +1,347 @@ +module NFST + +export NFSTplan, nfst_plan + +ending = ".so" + +if Sys.iswindows() + ending = ".dll" +elseif Sys.isapple() + ending = ".dylib" +end + +# path to .so file +const lib_path = string( @__DIR__, "/libnfstjulia", ending ) + +# NFST flags +PRE_PHI_HUT = UInt32(1)<<0 +FG_PSI = UInt32(1)<<1 +PRE_LIN_PSI = UInt32(1)<<2 # +PRE_FG_PSI = UInt32(1)<<3 # +PRE_PSI = UInt32(1)<<4 # +PRE_FULL_PSI = UInt32(1)<<5 # +MALLOC_X = UInt32(1)<<6 +MALLOC_F_HAT = UInt32(1)<<7 +MALLOC_F = UInt32(1)<<8 +FFT_OUT_OF_PLACE = UInt32(1)<<9 +FFTW_INIT = UInt32(1)<<10 +NFST_SORT_NODES = UInt32(1)<<11 +NFST_OMP_BLOCKWISE_ADJOINT = UInt32(1)<<12 +PRE_ONE_PSI = (PRE_LIN_PSI| PRE_FG_PSI| PRE_PSI| PRE_FULL_PSI) + +# FFTW flags +FFTW_MEASURE = UInt32(0) +FFTW_DESTROY_INPUT = UInt32(1)<<0 +FFTW_EXHAUSTIVE = UInt32(1)<<3 +FFTW_PATIENT = UInt32(1)<<5 +FFTW_ESTIMATE = UInt32(1)<<6 + +#default flag values +f1_default_1d = UInt32(PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT | FFT_OUT_OF_PLACE) +f1_default = UInt32(PRE_PHI_HUT | PRE_PSI | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT | FFT_OUT_OF_PLACE | NFST_SORT_NODES | NFST_OMP_BLOCKWISE_ADJOINT) +f2_default = UInt32(FFTW_ESTIMATE | FFTW_DESTROY_INPUT) + +# dummy struct for C +mutable struct nfst_plan +end + +# NFST plan struct +mutable struct NFSTplan{D} + N::NTuple{D,Int32} # bandwidth tuple + M::Int32 # number of nodes + n::NTuple{D,Int32} # oversampling per dimension + m::Int32 # windows size + f1::UInt32 # NFST flags + f2::UInt32 # FFTW flags + init_done::Bool # bool for plan init + finalized::Bool # bool for finalizer + x::Ref{Float64} # nodes + f::Ref{Float64} # function values + fhat::Ref{Float64} # Fourier coefficients + plan::Ref{nfst_plan} # plan (C pointer) + function NFSTplan{D}(N::NTuple{D,Int32},M::Int32,n::NTuple{D,Int32},m::Int32,f1::UInt32,f2::UInt32) where D + # create plan object + new(N,M,n,m,f1,f2,false,false) + end +end + +# additional constructor for easy use [NFSTplan((N,N),M) instead of NFSTplan{2}((N,N),M)] +function NFSTplan(N::NTuple{D,Integer},M::Integer) where {D} + if any(x->x<=0,N) + error("Every entry of N has to be an even, positive integer." ) + end + + if sum(N .% 2) != 0 + error("Every entry of N has to be an even, positive integer." ) + end + + if M <= 0 + error("M has to be a positive integer." ) + end + + # convert N to vector for passing it over to C + Nv = collect(N) + + # default oversampling + n = Array{Int32}(2 .^(ceil.(log.(Nv)/log(2)).+1)) + n = NTuple{D,Int32}(n) + + # default NFST flags + f1 = UInt32(0) + + if D > 1 + f1 = f1_default + else + f1 = f1_default_1d + end + + NFSTplan{D}(NTuple{D,Int32}(N),Int32(M),n,Int32(8),f1,f2_default) +end + +function NFSTplan(N::NTuple{D,Integer},M::Integer,n::NTuple{D,Integer},m::Integer=Int32(8),f1::UInt32=(D > 1 ? f1_default : f1_default_1d),f2::UInt32=f2_default) where {D} + # safety checks + if any(x->x<=0,N) + error("Every entry of N has to be an even, positive integer." ) + end + + if M <= 0 + error("M has to be a positive integer." ) + end + + if any(x->x<=0,n) + error("Every entry of n has to be an even integer." ) + end + + if n <= N + error("Every entry of n has to be larger than the corresponding entry in N." ) + end + + if sum(n .% 2) != 0 + error("Every entry of n has to be an even integer." ) + end + + if m <= 0 + error("m has to be a positive integer." ) + end + + NFSTplan{D}(NTuple{D,Int32}(N),Int32(M),NTuple{D,Int32}(n),Int32(m),(f1 | MALLOC_X | MALLOC_F_HAT | MALLOC_F | FFTW_INIT),f2) +end + +# finalizer +function finalize_plan(P::NFSTplan{D}) where {D} + if !P.init_done + error("NFSTplan not initialized.") + end + + if !P.finalized + Core.setfield!(P,:finalized,true) + ccall(("jnfst_finalize", lib_path),Nothing,(Ref{nfst_plan},),P.plan) + end +end + +# allocate plan memory and init with D,N,M,n,m,f1,f2 +function nfst_init(p::NFSTplan{D}) where {D} + # convert N and n to vectors for passing them over to C + Nv = collect(p.N) + n = collect(p.n) + + # call init for memory allocation + ptr = ccall(("jnfst_alloc", lib_path),Ptr{nfst_plan},()) + + # set pointer + Core.setfield!(p,:plan,ptr) + + # initialize values + ccall(("jnfst_init", lib_path),Nothing,(Ref{nfst_plan},Int32,Ref{Int32},Int32,Ref{Int32},Int32,UInt32,UInt32),ptr,D,Nv,p.M,n,p.m,p.f1,p.f2) + Core.setfield!(p,:init_done,true) + finalizer(finalize_plan,p) +end + +# overwrite dot notation for plan struct in order to use C memory +function Base.setproperty!(p::NFSTplan{D},v::Symbol,val) where {D} + # init plan if not done [usually with setting nodes] + if !p.init_done + nfst_init(p) + end + + # prevent bad stuff from happening + if p.finalized + error("NFSTplan already finalized") + end + + # setting nodes, verification of correct size dxM + if v == :x + if D == 1 + if typeof(val) != Vector{Float64} + error("x has to be a Float64 vector.") + end + if size(val)[1] != p.M + error("x has to be a Float64 vector of length M.") + end + else + if typeof(val) != Array{Float64,2} + error("x has to be a Float64 matrix.") + end + if size(val)[1] != D || size(val)[2] != p.M + error("x has to be a Float64 matrix of size dxM.") + end + end + ptr = ccall(("jnfst_set_x",lib_path),Ptr{Float64},(Ref{nfst_plan},Ref{Cdouble}),p.plan,val) + Core.setfield!(p,v,ptr) + + # setting values + elseif v == :f + if typeof(val) != Array{Float64,1} + error("f has to be a Float64 vector.") + end + if size(val)[1] != p.M + error("f has to be a Float64 vector of size M.") + end + ptr = ccall(("jnfst_set_f",lib_path),Ptr{Float64},(Ref{nfst_plan},Ref{Float64}),p.plan,val) + Core.setfield!(p,v,ptr) + + # setting Fourier coefficients + elseif v == :fhat + if typeof(val) != Array{Float64,1} + error("fhat has to be a Float64 vector.") + end + l = prod(collect(p.N).-1) + if size(val)[1] != l + error("fhat has to be a Float64 vector of size prod(N-1).") + end + ptr = ccall(("jnfst_set_fhat",lib_path),Ptr{Float64},(Ref{nfst_plan},Ref{Float64}),p.plan,val) + Core.setfield!(p,v,ptr) + + # prevent modification of NFST plan pointer + elseif v == :plan + @warn "You can't modify the C pointer to the NFST plan." + elseif v == :num_threads + @warn "You can't currently modify the number of threads of the NFST plan. Use NFST.set_num_threads(nthreads) instead." + elseif v == :init_done + @warn "You can't modify this flag." + elseif v == :N + @warn "You can't modify the bandwidth, please create an additional plan." + elseif v == :M + @warn "You can't modify the number of nodes, please create an additional plan." + elseif v == :n + @warn "You can't modify the oversampling parameter, please create an additional plan." + elseif v == :m + @warn "You can't modify the window size, please create an additional plan." + elseif v == :f1 + @warn "You can't modify the NFST flags, please create an additional plan." + elseif v == :f2 + @warn "You can't modify the FFTW flags, please create an additional plan." + # handle other set operations the default way + else + Core.setfield!(p,v,val) + end +end + +# overwrite dot notation for plan struct in order to use C memory +function Base.getproperty(p::NFSTplan{D},v::Symbol) where {D} + if v == :x + if !isdefined(p,:x) + error("x is not set.") + end + ptr = Core.getfield(p,:x) + if D==1 + return unsafe_wrap(Vector{Float64},ptr,p.M) # get nodes from C memory and convert to Julia type + else + return unsafe_wrap(Matrix{Float64},ptr,(D,Int64(p.M))) # get nodes from C memory and convert to Julia type + end + elseif v == :num_threads + return ccall(("nfft_get_num_threads", lib_path),Int64,()) + elseif v == :f + if !isdefined(p,:f) + error("f is not set.") + end + ptr = Core.getfield(p,:f) + return unsafe_wrap(Vector{Float64},ptr,p.M) # get function values from C memory and convert to Julia type + elseif v == :fhat + if !isdefined(p,:fhat) + error("fhat is not set.") + end + ptr = Core.getfield(p,:fhat) + return unsafe_wrap(Vector{Float64},ptr,prod(collect(p.N).-1)) # get Fourier coefficients from C memory and convert to Julia type + else + return Core.getfield(p,v) + end +end + +# nfst trafo direct [call with NFST.trafo_direct outside module] +function trafo_direct(P::NFSTplan{D}) where {D} + # prevent bad stuff from happening + if P.finalized + error("NFSTplan already finalized") + end + + if !isdefined(P, :fhat) + error("fhat has not been set.") + end + + if !isdefined(P,:x) + error("x has not been set.") + end + + ptr = ccall(("jnfst_trafo_direct",lib_path),Ptr{Float64},(Ref{nfst_plan},),P.plan) + Core.setfield!(P,:f,ptr) +end + +# adjoint trafo direct [call with NFST.adjoint_direct outside module] +function adjoint_direct(P::NFSTplan{D}) where {D} + # prevent bad stuff from happening + if P.finalized + error("NFSTplan already finalized") + end + if !isdefined(P, :f) + error("f has not been set.") + end + if !isdefined(P,:x) + error("x has not been set.") + end + ptr = ccall(("jnfst_adjoint_direct",lib_path),Ptr{Float64},(Ref{nfst_plan},),P.plan) + Core.setfield!(P,:fhat,ptr) +end + +# nfst trafo [call with NFST.trafo outside module] +function trafo(P::NFSTplan{D}) where {D} + # prevent bad stuff from happening + if P.finalized + error("NFSTplan already finalized") + end + if !isdefined(P, :fhat) + error("fhat has not been set.") + end + if !isdefined(P,:x) + error("x has not been set.") + end + ptr = ccall(("jnfst_trafo",lib_path),Ptr{Float64},(Ref{nfst_plan},),P.plan) + Core.setfield!(P,:f,ptr) +end + +# adjoint trafo [call with NFST.adjoint outside module] +function adjoint(P::NFSTplan{D}) where {D} + # prevent bad stuff from happening + if P.finalized + error("NFSTplan already finalized") + end + if !isdefined(P, :f) + error("f has not been set.") + end + if !isdefined(P,:x) + error("x has not been set.") + end + ptr = ccall(("jnfst_adjoint",lib_path),Ptr{Float64},(Ref{nfst_plan},),P.plan) + Core.setfield!(P,:fhat,ptr) +end + +function get_num_threads() + return ccall(("nfft_get_num_threads",lib_path),Int64,()) +end + +function set_num_threads(nthreads::Number) + ccall(("nfft_set_num_threads",lib_path),Nothing,(Int64,),convert(Int64,nthreads)) +end + +# module end +end diff --git a/julia/nfst/libnfstjulia.c b/julia/nfst/libnfstjulia.c new file mode 100644 index 00000000..7cf4273a --- /dev/null +++ b/julia/nfst/libnfstjulia.c @@ -0,0 +1,82 @@ +#include "config.h" + +#include + +#ifdef HAVE_COMPLEX_H +#include +#endif + +#include +#include +#include + +#include "nfft3.h" +#include "infft.h" + +nfst_plan* jnfst_alloc(void){ + nfst_plan* p = nfft_malloc(sizeof(nfst_plan)); + return p; +} + +void jnfst_init(nfst_plan* p, int d, int* N, int M, int* n, int m, unsigned int f1, unsigned int f2){ + nfst_init_guru(p,d,N,M,n,m,f1,f2); +} + +double* jnfst_set_x(nfst_plan* p, double* X){ + int M = p->M_total; + int d = p->d; + int r,c; + for (r = 0; r < M; r++) + for (c = 0; c < d; c++) + p->x[d*r+c] = X[d*r+c]; + nfst_precompute_one_psi(p); + return p->x; +} + +// setting Fourier coefficients and returning pointer for access by Julia +double* jnfst_set_fhat(nfst_plan* p,double* f_hat){ + int n = p->N_total; + int k; + for (k=0;kf_hat[k] = f_hat[k]; + return p->f_hat; +} + +// setting values and returning pointer for access by Julia +double* jnfst_set_f(nfst_plan* p,double* f){ + int M = p->M_total; + int j; + for (j=0;jf[j] = f[j]; + return p->f; +} + +// nfst trafo, return pointer to values for access by Julia if pointer isn't set +double* jnfst_trafo(nfst_plan* p){ + nfst_trafo(p); + return p->f; +} + +// nfst adjoint, return pointer to coefficients for access by Julia if pointer isn't set +double* jnfst_adjoint(nfst_plan* p){ + nfst_adjoint(p); + return p->f_hat; +} + +// nfst trafo, return pointer to values for access by Julia if pointer isn't set +double* jnfst_trafo_direct(nfst_plan* p){ + nfst_trafo_direct(p); + return p->f; +} + +// nfst adjoint, return pointer to coefficients for access by Julia if pointer isn't set +double* jnfst_adjoint_direct(nfst_plan* p){ + nfst_adjoint_direct(p); + return p->f_hat; +} + +// nfst plan finalizer +void jnfst_finalize(nfst_plan* p){ + nfst_finalize(p); + nfft_free(p); +} diff --git a/julia/nfst/simple_test_1d.jl b/julia/nfst/simple_test_1d.jl new file mode 100644 index 00000000..fcbc3ef2 --- /dev/null +++ b/julia/nfst/simple_test_1d.jl @@ -0,0 +1,75 @@ +push!(LOAD_PATH, pwd()) +using NFST +using LinearAlgebra + +println("1d NFST Test") + +# bandwidth +N = 50 + +#number of nodes +M = 100 + +#create plan +p = NFSTplan((N,),M) + +println("Number of Threads: ", p.num_threads) + +#generate random nodes +A = 0.5 .* rand(M) + +#set nodes +p.x = A + +#generate random Fourier coefficients +fhat = rand(N-1) + +#set Fourier coefficients +p.fhat = fhat + +#transform +println( "trafo time:" ) +@time NFST.trafo(p) + +#get function values +f2 = p.f + +#define Fourier matrix +F = [ sin(2*pi*k_l*x_j) for x_j in A, k_l in 1:N-1 ] + +#multiply Fourier matrix with vector of Fourier coefficients +f1 = F*fhat + +error_vector = f1-f2 +E_2 = norm(error_vector)/norm(f1) +E_infty = norm(error_vector, Inf)/norm(fhat,1) +println( "E_2 error:" ) +println( E_2 ) +println( "E_infty error:" ) +println( E_infty ) + +if ( E_2 >= 1e-8 ) || ( E_infty >= 1e-8 ) + error( "Errors are too large." ) +end + +#adjoint +println( "adjoint time:" ) +@time NFST.adjoint(p) + +#get function values +f2 = p.fhat + +#multiply Fourier matrix with vector of Fourier coefficients +f1 = F'*p.f + +error_vector = f1-f2 +E_2 = norm(error_vector)/norm(f1) +E_infty = norm(error_vector, Inf)/norm(fhat,1) +println( "E_2 error:" ) +println( E_2 ) +println( "E_infty error:" ) +println( E_infty ) + +if ( E_2 >= 1e-8 ) || ( E_infty >= 1e-8 ) + error( "Errors are too large." ) +end diff --git a/julia/nfst/simple_test_2d.jl b/julia/nfst/simple_test_2d.jl new file mode 100644 index 00000000..bd94e733 --- /dev/null +++ b/julia/nfst/simple_test_2d.jl @@ -0,0 +1,79 @@ +push!(LOAD_PATH, pwd()) +using NFST +using LinearAlgebra + +println( "2d NFST Test" ) + +#bandwidth +N = ( 16, 8 ) + +#number of nodes +M = 10000 + +#create plan +p = NFSTplan( N, M ) + +println("Number of Threads: ", p.num_threads) + +#generate random nodes +A = 0.5 .* rand( 2, M ) + +#set nodes +p.x = A + +#generate random Fourier coefficients +fhat = rand( prod(collect(N).-1) ) + +#set Fourier coefficients +p.fhat = fhat + +#transform +println( "trafo time:" ) +@time NFST.trafo(p) + +#get function values +f2 = p.f + +#indices +I = [ [j; i] for i in 1:N[2]-1, j in 1:N[1]-1 ] +I = vec(I) + +#define Fourier matrix +F = [ sin(2*pi*A[:,j][1]*I[l][1])*sin(2*pi*A[:,j][2]*I[l][2]) for j in 1:M, l in 1:prod(collect(N).-1) ] + +#multiply Fourier matrix with vector of Fourier coefficients +f1 = F*fhat + +error_vector = f1-f2 +E_2 = norm(error_vector)/norm(f1) +E_infty = norm(error_vector, Inf)/norm(fhat,1) +println( "E_2 error:" ) +println( E_2 ) +println( "E_infty error:" ) +println( E_infty ) + +if ( E_2 >= 1e-8 ) || ( E_infty >= 1e-8 ) + error( "Errors are too large." ) +end + +#adjoint +println( "adjoint time:" ) +@time NFST.adjoint(p) + +#get function values +f2 = p.fhat + +#multiply Fourier matrix with vector of Fourier coefficients +f1 = F'*p.f + +error_vector = f1-f2 +E_2 = norm(error_vector)/norm(f1) +E_infty = norm(error_vector, Inf)/norm(fhat,1) +println( "E_2 error:" ) +println( E_2 ) +println( "E_infty error:" ) +println( E_infty ) + +if ( E_2 >= 1e-8 ) || ( E_infty >= 1e-8 ) + error( "Errors are too large." ) +end diff --git a/julia/nfst/simple_test_3d.jl b/julia/nfst/simple_test_3d.jl new file mode 100644 index 00000000..824f5522 --- /dev/null +++ b/julia/nfst/simple_test_3d.jl @@ -0,0 +1,79 @@ +push!(LOAD_PATH, pwd()) +using NFST +using LinearAlgebra + +println( "3d NFST Test" ) + +#bandwidth +N = ( 32, 16 , 8 ) + +#number of nodes +M = 1000 + +#create plan +p = NFSTplan( N, M ) + +println("Number of Threads: ", p.num_threads) + +#generate random nodes +A = 0.5 .* rand( 3, M ) + +#set nodes +p.x = A + +#generate random Fourier coefficients +fhat = rand( prod(collect(N).-1) ) + +#set Fourier coefficients +p.fhat = fhat + +#transform +println( "trafo time:" ) +@time NFST.trafo(p) + +#get function values +f2 = p.f + +#indices +I = [ [j; i; k] for k in 1:N[3]-1, i in 1:N[2]-1, j in 1:N[1]-1 ] +I = vec(I) + +#define Fourier matrix +F = [ sin(2*pi*A[:,j][1]*I[l][1])*sin(2*pi*A[:,j][2]*I[l][2])*sin(2*pi*A[:,j][3]*I[l][3]) for j in 1:M, l in 1:prod(collect(N).-1) ] + +#multiply Fourier matrix with vector of Fourier coefficients +f1 = F*fhat + +error_vector = f1-f2 +E_2 = norm(error_vector)/norm(f1) +E_infty = norm(error_vector, Inf)/norm(fhat,1) +println( "E_2 error:" ) +println( E_2 ) +println( "E_infty error:" ) +println( E_infty ) + +if ( E_2 >= 1e-8 ) || ( E_infty >= 1e-8 ) + error( "Errors are too large." ) +end + +#adjoint +println( "adjoint time:" ) +@time NFST.adjoint(p) + +#get function values +f2 = p.fhat + +#multiply Fourier matrix with vector of Fourier coefficients +f1 = F'*p.f + +error_vector = f1-f2 +E_2 = norm(error_vector)/norm(f1) +E_infty = norm(error_vector, Inf)/norm(fhat,1) +println( "E_2 error:" ) +println( E_2 ) +println( "E_infty error:" ) +println( E_infty ) + +if ( E_2 >= 1e-8 ) || ( E_infty >= 1e-8 ) + error( "Errors are too large." ) +end diff --git a/kernel/nfct/nfct.c b/kernel/nfct/nfct.c index 5c53a383..a1227dd8 100644 --- a/kernel/nfct/nfct.c +++ b/kernel/nfct/nfct.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + * Copyright (c) 2002, 2020 Jens Keiner, Stefan Kunis, Daniel Potts * * This program 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 @@ -1035,11 +1035,10 @@ void X(init)(X(plan) *ths, int d, int *N, int M_total) { //#ifdef _OPENMP // ths->flags = PRE_PHI_HUT | PRE_PSI | MALLOC_X| MALLOC_F_HAT | MALLOC_F | -// FFTW_INIT | FFT_OUT_OF_PLACE | NFFT_SORT_NODES | -// NFFT_OMP_BLOCKWISE_ADJOINT; +// FFTW_INIT | NFFT_SORT_NODES | NFFT_OMP_BLOCKWISE_ADJOINT; //#else ths->flags = PRE_PHI_HUT | PRE_PSI | MALLOC_X| MALLOC_F_HAT | MALLOC_F | - FFTW_INIT | FFT_OUT_OF_PLACE | NFFT_SORT_NODES; + FFTW_INIT | NFFT_SORT_NODES; //#endif } else @@ -1134,9 +1133,6 @@ const char* X(check)(X(plan) *ths) if(ths->N[j] - 1 <= ths->m) return "Polynomial degree N is smaller than cut-off m"; - - if(ths->N[j]%2 == 1) - return "polynomial degree N has to be even"; } return 0; } diff --git a/kernel/nfft/nfft.c b/kernel/nfft/nfft.c index 8d153e17..2ee99c04 100644 --- a/kernel/nfft/nfft.c +++ b/kernel/nfft/nfft.c @@ -6069,11 +6069,11 @@ void X(init)(X(plan) *ths, int d, int *N, int M_total) { #ifdef _OPENMP ths->flags = PRE_PHI_HUT | PRE_PSI | MALLOC_X| MALLOC_F_HAT | MALLOC_F | - FFTW_INIT | FFT_OUT_OF_PLACE | NFFT_SORT_NODES | + FFTW_INIT | NFFT_SORT_NODES | NFFT_OMP_BLOCKWISE_ADJOINT; #else ths->flags = PRE_PHI_HUT | PRE_PSI | MALLOC_X| MALLOC_F_HAT | MALLOC_F | - FFTW_INIT | FFT_OUT_OF_PLACE | NFFT_SORT_NODES; + FFTW_INIT | NFFT_SORT_NODES; #endif } else diff --git a/kernel/nfsft/nfsft.c b/kernel/nfsft/nfsft.c index a56ab1d1..735742c9 100644 --- a/kernel/nfsft/nfsft.c +++ b/kernel/nfsft/nfsft.c @@ -287,7 +287,7 @@ void nfsft_init_guru(nfsft_plan *plan, int N, int M, unsigned int flags, /* M is fixed for FSFT algorithm */ if (plan->flags & NFSFT_EQUISPACED) - plan->M_total = (2*plan->N+2)*(plan->N+1); + plan->M_total = (2*plan->N+2)*(plan->N+2); /* Calculate the next greater power of two with respect to the bandwidth N * and the corresponding exponent. */ @@ -325,7 +325,7 @@ void nfsft_init_guru(nfsft_plan *plan, int N, int M, unsigned int flags, if (plan->flags & NFSFT_EQUISPACED) /* Set equispaced nodes. This way also trafo_direct works correctly. */ for (int i=0; i<2*plan->N+2; i++) - for (int j=0; jN+1; j++) + for (int j=0; jN+2; j++) { plan->x[2*(i*(plan->N+1) + j)] = ((double)i-plan->N-1)/(2.0*plan->N+2); plan->x[2*(i*(plan->N+1) + j) + 1] = ((double)j)/(2.0*plan->N+2); @@ -1284,8 +1284,8 @@ void nfsft_trafo(nfsft_plan *plan) for (int j=0; jf[j*N[1]+k] *= -1; - for (int k=N[1]/2; kf[j*N[1]/2+(k-N[1]/2)] = plan->f_hat_intern[j*N[1]+k] * ((j+k)%2 ? -1 : 1); + for (int k=N[1]/2; kf[j*(N[1]/2+1)+(k-N[1]/2)] = plan->f_hat_intern[j*N[1]+k%N[1]] * ((j+k)%2 ? -1 : 1); // plan->f[j*N[1]+k] *= CEXP(II*KPI*(j-N[0]/2 + k-N[1]/2)); #ifdef _OPENMP #pragma omp critical (nfft_omp_critical_fftw_plan) @@ -1378,8 +1378,8 @@ void nfsft_adjoint(nfsft_plan *plan) { for (int k=0; kf_hat[j*N[1]+k] = 0; - for (int k=N[1]/2; kf_hat[j*N[1]+k] = plan->f[j*N[1]/2+k-N[1]/2] * ((j+k)%2 ? -1 : 1); + for (int k=N[1]/2; kf_hat[j*N[1]+k%N[1]] = plan->f[j*(N[1]/2+1)+k-N[1]/2] * ((j+k)%2 ? -1 : 1); } fftw_plan plan_fftw = FFTW(plan_dft)(2, N, plan->f_hat, plan->f_hat, FFTW_BACKWARD, FFTW_ESTIMATE); fftw_execute(plan_fftw); diff --git a/kernel/nfst/nfst.c b/kernel/nfst/nfst.c index 51af682c..4ce331b9 100644 --- a/kernel/nfst/nfst.c +++ b/kernel/nfst/nfst.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + * Copyright (c) 2002, 2020 Jens Keiner, Stefan Kunis, Daniel Potts * * This program 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 @@ -1034,11 +1034,10 @@ void X(init)(X(plan) *ths, int d, int *N, int M_total) { //#ifdef _OPENMP // ths->flags = PRE_PHI_HUT | PRE_PSI | MALLOC_X| MALLOC_F_HAT | MALLOC_F | -// FFTW_INIT | FFT_OUT_OF_PLACE | NFFT_SORT_NODES | -// NFFT_OMP_BLOCKWISE_ADJOINT; +// FFTW_INIT | NFFT_SORT_NODES | NFFT_OMP_BLOCKWISE_ADJOINT; //#else ths->flags = PRE_PHI_HUT | PRE_PSI | MALLOC_X| MALLOC_F_HAT | MALLOC_F | - FFTW_INIT | FFT_OUT_OF_PLACE | NFFT_SORT_NODES; + FFTW_INIT | NFFT_SORT_NODES; //#endif } else @@ -1133,9 +1132,6 @@ const char* X(check)(X(plan) *ths) if(ths->N[j] - 1 <= ths->m) return "Polynomial degree N is smaller than cut-off m"; - - if(ths->N[j]%2 == 1) - return "polynomial degree N has to be even"; } return 0; } diff --git a/kernel/nnfft/nnfft.c b/kernel/nnfft/nnfft.c index e7de30d5..eef0cbb5 100644 --- a/kernel/nnfft/nnfft.c +++ b/kernel/nnfft/nnfft.c @@ -588,7 +588,8 @@ void nnfft_init_guru(nnfft_plan *ths, int d, int N_total, int M_total, int *N, i ths->m= m; ths->nnfft_flags= nnfft_flags; fftw_flags= FFTW_ESTIMATE| FFTW_DESTROY_INPUT; - nfft_flags= PRE_PHI_HUT| MALLOC_F_HAT| FFTW_INIT| FFT_OUT_OF_PLACE| NFFT_OMP_BLOCKWISE_ADJOINT; + nfft_flags= PRE_PHI_HUT| MALLOC_F_HAT| FFTW_INIT| + ((d == 1) ? FFT_OUT_OF_PLACE : 0U) | NFFT_OMP_BLOCKWISE_ADJOINT; if(ths->nnfft_flags & PRE_PSI) nfft_flags = nfft_flags | PRE_PSI; @@ -641,7 +642,8 @@ ths->m=WINDOW_HELP_ESTIMATE_m; } ths->nnfft_flags=PRE_PSI| PRE_PHI_HUT| MALLOC_X| MALLOC_V| MALLOC_F_HAT| MALLOC_F; - nfft_flags= PRE_PSI| PRE_PHI_HUT| MALLOC_F_HAT| FFTW_INIT| FFT_OUT_OF_PLACE| NFFT_OMP_BLOCKWISE_ADJOINT; + nfft_flags= PRE_PSI| PRE_PHI_HUT| MALLOC_F_HAT| FFTW_INIT| + ((d == 1) ? FFT_OUT_OF_PLACE : 0U)| NFFT_OMP_BLOCKWISE_ADJOINT; fftw_flags= FFTW_ESTIMATE| FFTW_DESTROY_INPUT; nnfft_init_help(ths,ths->m,nfft_flags,fftw_flags); diff --git a/kernel/util/Makefile.am b/kernel/util/Makefile.am index 4952f0d5..a00251f1 100644 --- a/kernel/util/Makefile.am +++ b/kernel/util/Makefile.am @@ -1,4 +1,4 @@ -AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/3rdparty/cstripack +AM_CPPFLAGS = -I$(top_srcdir)/include if HAVE_THREADS LIBUTIL_THREADS_LA = libutil_threads.la @@ -7,7 +7,8 @@ else endif noinst_LTLIBRARIES = libutil.la $(LIBUTIL_THREADS_LA) -libutil_la_SOURCES = malloc.c sinc.c lambda.c bessel_i0.c float.c int.c error.c bspline.c assert.c sort.c rand.c vector1.c vector2.c vector3.c print.c voronoi.c damp.c thread.c time.c window.c version.c +libutil_la_SOURCES = malloc.c sinc.c lambda.c bessel_i0.c float.c int.c error.c bspline.c assert.c sort.c rand.c vector1.c vector2.c vector3.c print.c damp.c thread.c time.c window.c version.c +# Unused file: voronoi.c if HAVE_THREADS libutil_threads_la_SOURCES = $(libutil_la_SOURCES) diff --git a/kernel/util/float.c b/kernel/util/float.c index 6b7484b7..30cd1521 100644 --- a/kernel/util/float.c +++ b/kernel/util/float.c @@ -21,7 +21,7 @@ R Y(float_property)(const float_property p) { const R base = FLT_RADIX; - const R eps = NFFT_EPSILON; + static R eps = K(1.0); const R t = MANT_DIG; const R emin = MIN_EXP; const R emax = MAX_EXP; @@ -34,6 +34,11 @@ R Y(float_property)(const float_property p) if (first) { + /* Compute eps = 2^(1-MANT_DIG). + * The usual definition of EPSILON is too small for double-double arithmetic on PowerPC. */ + for (INT i=0; i >(tee linux-build-mex.log) +exec 2>&1 + +FFTWVERSION=3.3.10 +GCCVERSION=11.2.0 +GCCARCH=haswell +BINARIES_ARCH_README=' +Please note that since the binaries were compiled with gcc flag -march=haswell, +they may not work on older CPUs (below Intel i3/i5/i7-4xxx or +AMD Excavator/4th gen Bulldozer) as well as on some Intel Atom/Pentium CPUs. +' +MPFRVERSION=4.0.1 +MPCVERSION=1.1.0 + # default values (to be overwritten if respective parameters are set) OCTAVEDIR=/usr +JULIA_BIN=julia/julia-1.6.2/bin/julia +JULIA_ARCHIVE=julia-1.6.2-linux-x86_64.tar.gz +JULIA_URL=https://julialang-s3.julialang.org/bin/linux/x64/1.6/$JULIA_ARCHIVE + # read the options TEMP=`getopt -o o:m:f: --long octave:,matlab:,fftw: -n 'linux-build-mex.sh' -- "$@"` eval set -- "$TEMP" @@ -45,21 +72,110 @@ while true ; do done NFFTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -HOMEDIR="$NFFTDIR"/linux-build-mex +HOMEDIR=$(pwd)/linux-build-mex mkdir -p "$HOMEDIR" cd "$HOMEDIR" -GCCVERSION=$(gcc -dumpversion) +#GCCVERSION=$(gcc -dumpfullversion) OCTAVEVERSION=`"$OCTAVEDIR"/bin/octave-cli --eval "fprintf('OCTAVE_VERSION=%s\n', version); exit;" | grep OCTAVE_VERSION | sed 's/OCTAVE_VERSION=//'` + +MPFRBUILDDIR=$HOMEDIR/mpfr-$MPFRVERSION +MPFRINSTALLDIR=$HOMEDIR/mpfr-$MPFRVERSION-install +# Build MPFR for GCC +if [ ! -f "$MPFRINSTALLDIR/build-success" ]; then + rm -rf "$MPFRBUILDDIR" + rm -rf "$MPFRINSTALLDIR" + curl "https://ftp.gnu.org/gnu/mpfr/mpfr-$MPFRVERSION.tar.gz" --output "mpfr-$MPFRVERSION.tar.gz" + tar -zxf "mpfr-$MPFRVERSION.tar.gz" + rm "mpfr-$MPFRVERSION.tar.gz" + cd $MPFRBUILDDIR + ./configure --prefix="$MPFRINSTALLDIR" + make -j4 + make install + touch "$MPFRINSTALLDIR/build-success" + cd $HOMEDIR +fi + +MPCBUILDDIR=$HOMEDIR/mpc-$MPCVERSION +MPCINSTALLDIR=$HOMEDIR/mpc-$MPCVERSION-install +# Build MPC for GCC +if [ ! -f "$MPCINSTALLDIR/build-success" ]; then + rm -rf "$MPCBUILDDIR" + rm -rf "$MPCINSTALLDIR" + curl "https://ftp.gnu.org/gnu/mpc/mpc-$MPCVERSION.tar.gz" --output "mpc-$MPCVERSION.tar.gz" + tar -zxf "mpc-$MPCVERSION.tar.gz" + rm "mpc-$MPCVERSION.tar.gz" + cd $MPCBUILDDIR + ./configure --prefix="$MPCINSTALLDIR" --with-mpfr="$MPFRINSTALLDIR" + make -j4 + make install + touch "$MPCINSTALLDIR/build-success" + cd $HOMEDIR +fi + +export LD_LIBRARY_PATH="$MPCINSTALLDIR/lib:$MPFRINSTALLDIR/lib:$LD_LIBRARY_PATH" + +GCCBUILDDIR="$HOMEDIR/gcc-$GCCVERSION" +GCCINSTALLDIR="$HOMEDIR/gcc-$GCCVERSION-install" +# Build GCC +if [ ! -f "$GCCINSTALLDIR/build-success" ]; then + rm -rf "$GCCBUILDDIR" + rm -rf "$GCCINSTALLDIR" + curl "https://ftp.gnu.org/gnu/gcc/gcc-$GCCVERSION/gcc-$GCCVERSION.tar.gz" --output "gcc-$GCCVERSION.tar.gz" + tar -zxf "gcc-$GCCVERSION.tar.gz" + rm "gcc-$GCCVERSION.tar.gz" + cd $GCCBUILDDIR + CFLAGS=-fPIC CXXFLAGS=-fPIC LDFLAGS=-fPIC ./configure -enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --enable-languages=c,lto --disable-multilib --disable-nls --enable-bootstrap --prefix="$GCCINSTALLDIR" --with-mpc="$MPCINSTALLDIR" --with-mpfr="$MPFRINSTALLDIR" --program-suffix="-$GCCVERSION" + make -j4 + make install + touch "$GCCINSTALLDIR/build-success" + cd $HOMEDIR +fi + + +FFTWDIR=$HOMEDIR/fftw-$FFTWVERSION +# Build FFTW +if [ ! -f "$FFTWDIR/build-success" ]; then + rm -rf "$FFTWDIR" + curl "http://fftw.org/fftw-$FFTWVERSION.tar.gz" --output "fftw-$FFTWVERSION.tar.gz" + tar -zxf "fftw-$FFTWVERSION.tar.gz" + rm "fftw-$FFTWVERSION.tar.gz" + cd "$FFTWDIR" + + mkdir build + cd build + CC="$GCCINSTALLDIR/bin/gcc-$GCCVERSION" ../configure --enable-static --enable-shared --enable-threads --with-pic --enable-sse2 --enable-avx --enable-avx2 --disable-fortran + make -j4 + touch "$FFTWDIR/build-success" + cd "$HOMEDIR" +fi + + +# Get Julia +if [ ! -f $JULIA_BIN ]; then + rm -f -r julia + mkdir julia + cd julia + curl "$JULIA_URL" --output "$JULIA_ARCHIVE" + tar xzf $JULIA_ARCHIVE +fi + + # Build NFFT READMECONTENT=" -$(sed '/Directory structure/Q' $NFFTDIR/README) +$(sed -e '/^\[!/d' -e '/Directory structure/Q' $NFFTDIR/README) " +FFTWREADME=' +FFTW +---- +The compiled NFFT files contain parts of the FFTW library (http://www.fftw.org) +Copyright (c) 2003, 2007-14 Matteo Frigo +Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology' cd "$NFFTDIR" make distclean || true -for OMPYN in 0 1 +for OMPYN in 1 do if [ $OMPYN = 1 ]; then NFFTBUILDDIR="$HOMEDIR/build-openmp" @@ -67,60 +183,122 @@ if [ $OMPYN = 1 ]; then OMPLIBS="-fopenmp -static-libgcc" THREADSSUFFIX="_threads" OMPSUFFIX="-openmp" + FFTWLIBSTATIC="$FFTWDIR/build/threads/.libs/libfftw3_threads.a -pthread $FFTWDIR/build/.libs/libfftw3.a -lm" + GOMPLIBSTATIC="$GCCINSTALLDIR/lib64/libgomp.a" else NFFTBUILDDIR="$HOMEDIR/build" OMPFLAG="" OMPLIBS="" THREADSSUFFIX="" OMPSUFFIX="" + FFTWLIBSTATIC="$FFTWDIR/build/.libs/libfftw3.a -lm" + GOMPLIBSTATIC="" fi rm -f -r "$NFFTBUILDDIR" mkdir "$NFFTBUILDDIR" cd "$NFFTBUILDDIR" -"$NFFTDIR/configure" --enable-all $OMPFLAG --with-octave="$OCTAVEDIR" --with-gcc-arch=core2 --disable-static --enable-shared +LDFLAGS="-L$FFTWDIR/build/threads/.libs -L$FFTWDIR/build/.libs" +CPPFLAGS="-I$FFTWDIR/api" +CC="$GCCINSTALLDIR/bin/gcc-$GCCVERSION" "$NFFTDIR/configure" --enable-all $OMPFLAG --with-octave="$OCTAVEDIR" --with-gcc-arch="$GCCARCH" --disable-static --enable-shared make make check NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) -DIR=nfft-$NFFTVERSION-mexa64$OMPSUFFIX -# Create Matlab/Octave release -for SUBDIR in nfft nfsft nfsoft nnfft fastsum nfct nfst infft1d nfsft/@f_hat fpt - do - mkdir -p "$DIR"/$SUBDIR - cp -f -L -r matlab/$SUBDIR/*.mex* "$DIR"/$SUBDIR/ || true - cp -f -L -r "$NFFTDIR"/matlab/$SUBDIR/README "$DIR"/$SUBDIR/ || true - cp -r "$NFFTDIR"/matlab/$SUBDIR/*.m "$DIR"/$SUBDIR/ +# Create archive for Julia interface +cd julia +for LIB in nf*t +do + cd "$LIB" + "$GCCINSTALLDIR/bin/gcc-$GCCVERSION" -shared -fPIC -DPIC .libs/lib"$LIB"julia.o -Wl,--whole-archive ../../.libs/libnfft3_julia.a $FFTWLIBSTATIC $GOMPLIBSTATIC -Wl,--no-whole-archive -O3 -malign-double -march="$GCCARCH" -Wl,-soname -Wl,lib"$LIB"julia.so -o .libs/lib"$LIB"julia.so + cd .. done +for LIB in fastsum +do + cd "$LIB" + "$GCCINSTALLDIR/bin/gcc-$GCCVERSION" -shared -fPIC -DPIC .libs/lib"$LIB"julia.o -Wl,--whole-archive ../../applications/fastsum/.libs/libfastsum$THREADSSUFFIX.a ../../applications/fastsum/.libs/libkernels.a ../../.libs/libnfft3_julia.a $FFTWLIBSTATIC $GOMPLIBSTATIC -Wl,--no-whole-archive -O3 -malign-double -march="$GCCARCH" -Wl,-soname -Wl,lib"$LIB"julia.so -o .libs/lib"$LIB"julia.so + cd .. +done +cd "$NFFTBUILDDIR" + +ARCH=$(uname -m) +JULIADIR=nfft-"$NFFTVERSION"-julia-linux_$ARCH$OMPSUFFIX +mkdir "$JULIADIR" +$RSYNC -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' --exclude='*.h' --exclude='*.so' "$NFFTDIR/julia/" "$JULIADIR" +$RSYNC -rLt --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' --exclude='*.c' 'julia/' "$JULIADIR" +for DIR in $JULIADIR/nf*t $JULIADIR/fastsum; do cd $DIR; for NAME in simple_test*.jl; do $HOMEDIR/$JULIA_BIN "$NAME"; done; cd "$NFFTBUILDDIR"; done; + +echo 'This archive contains the NFFT' $NFFTVERSION 'Julia interface. +The NFFT library was compiled with double precision support for '$ARCH' Linux +using GCC '$GCCVERSION' with -march='$GCCARCH' and FFTW '$FFTWVERSION'. +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$JULIADIR"/readme-julia.txt +tar czf ../"$JULIADIR".tar.gz --owner=0 --group=0 "$JULIADIR" +# End of Julia interface + + +# Create Matlab/Octave release +DIR=nfft-$NFFTVERSION-mexa64$OMPSUFFIX +mkdir $DIR +$RSYNC -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' --exclude='*.h' "$NFFTDIR/matlab/" "$DIR" +$RSYNC -rLt --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' --exclude='*.c' "matlab/" "$DIR" # Compile with Matlab if [ -n "$MATLABDIR" ]; then MATLABVERSION=`"$MATLABDIR"/bin/matlab -nodisplay -r "fprintf('MATLAB_VERSION=%s\n', version); exit;" | grep MATLAB_VERSION | sed 's/.*(//' | sed 's/)//'` cd "$NFFTBUILDDIR" make clean - "$NFFTDIR/configure" --enable-all $OMPFLAG --with-matlab="$MATLABDIR" --with-gcc-arch=core2 --disable-static --enable-shared + CC="$GCCINSTALLDIR/bin/gcc-$GCCVERSION" "$NFFTDIR/configure" --enable-all $OMPFLAG --with-matlab="$MATLABDIR" --with-gcc-arch="$GCCARCH" --disable-static --enable-shared --enable-exhaustive-unit-tests make + if [ $OMPYN = 1 ]; then + cd matlab + for SUBDIR in nfft nfsft nfsoft nnfft fastsum nfct nfst fpt + do + cd "$SUBDIR" + "$GCCINSTALLDIR/bin/gcc-$GCCVERSION" -shared -fPIC -DPIC .libs/lib"$SUBDIR"_la-"$SUBDIR"mex.o -Wl,--whole-archive ../../.libs/libnfft3_matlab.a ../../matlab/.libs/libmatlab.a $GOMPLIBSTATIC -Wl,--no-whole-archive -L$MATLABDIR/bin/glnxa64 -l:libmwfftw3.so.3 -lm -lmx -lmex -lmat -O3 -malign-double -march="$GCCARCH" -Wl,-soname -Wl,lib$SUBDIR.mexa64 -o .libs/lib$SUBDIR.mexa64 + cd .. + done + cd "$NFFTBUILDDIR" + fi make check fi for SUBDIR in nfft nfsft nfsoft nnfft fastsum nfct nfst fpt - do +do cp -f -L -r matlab/$SUBDIR/*.mex* "$DIR"/$SUBDIR/ done +for SUBDIR in nfft nfsft nfsoft nnfft fastsum nfct nfst infft1d fpt ; do + cd "$DIR/$SUBDIR" + if [ -f simple_test.m ] ; then + for TESTFILE in *test*.m + do + if [ "$SUBDIR" != "infft1d" ] ; then + "$OCTAVEDIR"/bin/octave-cli --no-window-system --eval="run('$TESTFILE')" + fi + if [ -n "$MATLABDIR" ]; then + "$MATLABDIR"/bin/matlab -nodisplay -r "run('$TESTFILE'); exit" + fi + done + fi + cd "$NFFTBUILDDIR" +done + + cd "$NFFTBUILDDIR" cp "$NFFTDIR"/COPYING "$DIR"/COPYING if [ -n "$MATLABDIR" ]; then -echo 'This archive contains the Matlab and Octave interface of NFFT '$NFFTVERSION' compiled for -64-bit Linux using GCC '$GCCVERSION' and Matlab '$MATLABVERSION' and Octave '$OCTAVEVERSION'. -' "$READMECONTENT" > "$DIR"/readme-matlab.txt +echo 'This archive contains the Matlab and Octave interface of NFFT '$NFFTVERSION' +compiled for '$ARCH' Linux using GCC '$GCCVERSION' with -march='$GCCARCH' +and Matlab '$MATLABVERSION' and Octave '$OCTAVEVERSION'. +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$DIR"/readme-matlab.txt else -echo 'This archive contains the Octave interface of NFFT '$NFFTVERSION' compiled for -64-bit Linux using GCC '$GCCVERSION' and Octave '$OCTAVEVERSION'. -' "$READMECONTENT" > "$DIR"/readme-matlab.txt +echo 'This archive contains the Octave interface of NFFT '$NFFTVERSION' +compiled for '$ARCH' Linux using GCC '$GCCVERSION' with -march='$GCCARCH' +and Octave '$OCTAVEVERSION'. +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$DIR"/readme-matlab.txt fi -tar czf ../"$DIR".tar.gz "$DIR" +tar czf ../"$DIR".tar.gz --owner=0 --group=0 "$DIR" done diff --git a/m4/ax_apple_gcc_archflag.m4 b/m4/ax_apple_gcc_archflag.m4 deleted file mode 100644 index 64e4668f..00000000 --- a/m4/ax_apple_gcc_archflag.m4 +++ /dev/null @@ -1,93 +0,0 @@ -dnl @synopsis AX_APPLE_GCC_ARCHFLAG([PORTABLE],[ACTION-SUCCESS],[ACTION-FAILURE]) -dnl @summary find target architecture name for Apple's gcc -arch flag -dnl @category Misc -dnl -dnl This macro tries to guess the "native" arch corresponding to -dnl the target architecture for use with Apple's gcc's -arch flag. If found, the -dnl cache variable $ax_cv_apple_gcc_archflag is set to this flag and -dnl ACTION-SUCCESS is executed; otherwise $ax_cv_apple_gcc_archflag is -dnl is set to "unknown" and ACTION-FAILURE is executed. The default -dnl ACTION-SUCCESS is to add $ax_cv_apple gcc_archflag to the end of $CFLAGS. -dnl -dnl The user can specify --with-apple-gcc-arch= in order to override -dnl the macro's choice of architecture, or --without-apple-gcc-arch to -dnl disable this. -dnl -dnl When cross-compiling, or if $CC is not Apple's gcc, then ACTION-FAILURE is -dnl called unless the user specified --with-apple-gcc-arch manually. -dnl -dnl Requires macros: AX_CHECK_COMPILER_FLAGS -dnl -dnl (The main emphasis here is on recent CPUs, on the principle that -dnl doing high-performance computing on old hardware is uncommon.) -dnl -dnl @version 2008-12-07 -dnl @license GPLWithACException -dnl @author Jens Keiner . -AC_DEFUN([AX_APPLE_GCC_ARCHFLAG], -[AC_REQUIRE([AC_PROG_CC]) -AC_REQUIRE([AC_CANONICAL_HOST]) - -AC_ARG_WITH(apple-gcc-arch, [AC_HELP_STRING([--with-apple-gcc-arch=], - [use architecture for Apple's gcc -arch, instead of guessing])], - ax_apple_gcc_arch=$withval, ax_apple_gcc_arch=yes) - -AC_CACHE_VAL(ax_cv_apple_gcc_archflag, -[ -ax_cv_apple_gcc_archflag="unknown" - -if test "$GCC" = yes; then - if test "x$ax_apple_gcc_arch" = xyes; then - ax_apple_gcc_arch="" - if test "$cross_compiling" = no; then - if test "x[]m4_default([$1],no)" = xyes; then # if we require portable code - ax_apple_gcc_arch="i386 x86_64 ppc ppc64" - echo "default arch because of portable code" - else - case $host_cpu in - x86_64*|amd64*|i[[3456]]86*) - ax_apple_gcc_arch="x86_64 i386" - ;; - powerpc*) - cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null` - cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'` - case $cputype in - *750*|*740[[0-9]]*|*74[[4-5]][[0-9]]*|*74[[0-9]][[0-9]]*) ax_apple_gcc_arch="ppc";; - *970*|*POWER4*|*power4*|*gq*|*POWER5*|*power5*|*gr*|*gs*) ax_apple_gcc_arch="ppc64";; - *) ax_apple_gcc_arch="ppc64 ppc";; - esac - ;; - *) - ax_apple_gcc_arch="x86_64 i386 ppc64 ppc" - ;; - esac - fi # portable code - fi # not cross-compiling - fi # guess arch - - if test "x$ax_apple_gcc_arch" != x -a "x$ax_apple_gcc_arch" != xno; then - ax_cv_apple_gcc_archflag="" - for arch in $ax_apple_gcc_arch; do - AX_CHECK_COMPILER_FLAGS([-arch $arch],[ - saved_CFLAGS="$CFLAGS"; - CFLAGS="$CFLAGS -arch $arch"; - LIBS="$LIBS $fftw3_LIBS" - AC_MSG_CHECKING([whether linking is possible with -arch $arch]); - AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[int main(void){return 0;}]])],[last_result=yes;AC_MSG_RESULT([yes]);ax_cv_apple_gcc_archflag="$ax_cv_apple_gcc_archflag -arch $arch"],[last_result=no;AC_MSG_RESULT([no])]); - CFLAGS="$saved_CFLAGS" - ]) - if test "x$last_result" = "xyes"; then - break; - fi - done - fi -fi # $GCC=yes -]) -AC_MSG_CHECKING([for Apple's gcc architecture flag]) -AC_MSG_RESULT($ax_cv_apple_gcc_archflag) -if test "x$ax_cv_apple_gcc_archflag" = xunknown; then - m4_default([$3],:) -else - m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_apple_gcc_archflag"]) -fi -]) diff --git a/m4/ax_cc_maxopt.m4 b/m4/ax_cc_maxopt.m4 index 3ec65c58..a1d961a2 100644 --- a/m4/ax_cc_maxopt.m4 +++ b/m4/ax_cc_maxopt.m4 @@ -28,7 +28,7 @@ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AX_COMPILER_VENDOR]) AC_REQUIRE([AC_CANONICAL_HOST]) -AC_ARG_ENABLE(portable-binary, [AC_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])], +AC_ARG_ENABLE(portable-binary, [AS_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])], acx_maxopt_portable=$enableval, acx_maxopt_portable=no) # Try to determine "good" native compiler flags if none specified via CFLAGS @@ -144,10 +144,7 @@ if test "$ac_test_CFLAGS" != "set"; then # note that we enable "unsafe" fp optimization with other compilers, too AX_CHECK_COMPILER_FLAGS(-ffast-math, CFLAGS="$CFLAGS -ffast-math") - AX_CHECK_COMPILER_FLAGS(-march=core2, CFLAGS="$CFLAGS -march=core2") - AX_CHECK_COMPILER_FLAGS(-mtune=core2, CFLAGS="$CFLAGS -mtune=core2") - - AX_APPLE_GCC_ARCHFLAG($acx_maxopt_portable) + AX_GCC_ARCHFLAG($acx_maxopt_portable) ;; esac diff --git a/m4/ax_eps_def.m4 b/m4/ax_eps_def.m4 deleted file mode 100644 index 11fb161d..00000000 --- a/m4/ax_eps_def.m4 +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts -# -# This program 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. -# -# 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., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# @synopsis AX_EPS_DEF -# @summary Determine machine epsilon for given floating-point type (d = double, -# f = float, l = long double) from 2^(1-MAND_DIG) defined in float.h. -# @category C -# -# @version 2017-08-13 -# @license GPLWithACException -# @author Jens Keiner -AC_DEFUN([AX_EPS_DEF], -[AC_REQUIRE([AC_PROG_CC]) -AC_LANG_PUSH([C]) -AC_CACHE_CHECK(for floating-point epsilon as per length of mantissa, ax_cv_eps_def, - [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include -#include -#define d 1 -#define l 2 -#define s 3 -#define PRECISION $1 - -#if PRECISION == 1 -typedef double R; -#define __FE__ "%.16lE" -#define K(x) ((R) x) -#define MANT_DIG DBL_MANT_DIG -#elif PRECISION == 2 -typedef long double R; -#define __FE__ "%.32LE" -#define K(x) ((R) x##L) -#define MANT_DIG LDBL_MANT_DIG -#elif PRECISION == 3 -typedef float R; -#define __FE__ "%.8E" -#define K(x) ((R) x) -#define MANT_DIG FLT_MANT_DIG -#else -#error "Unknown floating-point precision." -#endif], [ FILE *f; - f = fopen("conftest_eps_def", "w"); if (!f) return 1; - R epsilon = K(1.0); - for (int i=0; i], [use architecture for gcc -march/-mtune, instead of guessing])], +AC_ARG_WITH(gcc-arch, [AS_HELP_STRING([--with-gcc-arch=], [use architecture for gcc -march/-mtune, instead of guessing])], ax_gcc_arch=$withval, ax_gcc_arch=yes) AC_MSG_CHECKING([for gcc architecture flag]) diff --git a/m4/ax_lib_fftw3.m4 b/m4/ax_lib_fftw3.m4 index 5afb45bc..9d252cf2 100644 --- a/m4/ax_lib_fftw3.m4 +++ b/m4/ax_lib_fftw3.m4 @@ -27,23 +27,35 @@ AC_DEFUN([AX_LIB_FFTW3], [ - AC_ARG_WITH(fftw3, [AC_HELP_STRING([--with-fftw3=DIR], + AC_ARG_WITH(fftw3, [AS_HELP_STRING([--with-fftw3=DIR], [compile with fftw3 in DIR])], with_fftw3=$withval, with_fftw3="yes") - AC_ARG_WITH(fftw3-libdir, [AC_HELP_STRING([--with-fftw3-libdir=DIR], + AC_ARG_WITH(fftw3-libdir, [AS_HELP_STRING([--with-fftw3-libdir=DIR], [compile with fftw3 library directory DIR])], fftw3_lib_dir=$withval, fftw3_lib_dir="yes") - AC_ARG_WITH(fftw3-includedir, [AC_HELP_STRING([--with-fftw3-includedir=DIR], + AC_ARG_WITH(fftw3-includedir, [AS_HELP_STRING([--with-fftw3-includedir=DIR], [compile with fftw3 include directory DIR])], fftw3_include_dir=$withval, fftw3_include_dir="yes") if test "x$with_fftw3" != "xyes"; then if test "x${fftw3_include_dir}" = "xyes"; then - fftw3_include_dir="$with_fftw3/include" + if test -d "$with_fftw3/include"; then + fftw3_include_dir="$with_fftw3/include" + elif test -d "$with_fftw3/api"; then + fftw3_include_dir="$with_fftw3/api" + else + fftw3_include_dir="$with_fftw3" + fi fi if test "x${fftw3_lib_dir}" = "xyes"; then - fftw3_lib_dir="$with_fftw3/lib" + if test -d "$with_fftw3/lib"; then + fftw3_lib_dir="$with_fftw3/lib" + elif test -d "$with_fftw3/.libs"; then + fftw3_lib_dir="$with_fftw3/.libs" + else + fftw3_lib_dir="$with_fftw3" + fi fi fi @@ -91,11 +103,20 @@ AC_DEFUN([AX_LIB_FFTW3], saved_LIBS="$LIBS" # Check for combined fftw threads - LIBS="${fftw3_lib_flag} -lpthread -lm" - AC_MSG_CHECKING([for threaded fftw3 library with combined threads (-lpthread -lm set)]) + LIBS="${fftw3_lib_flag}" + AC_MSG_CHECKING([for threaded fftw3 library with combined threads]) AC_LINK_IFELSE([AC_LANG_CALL([], [fftw${PREC_SUFFIX}_init_threads])], [ax_lib_fftw3_threads=yes],[ax_lib_fftw3_threads=no]) AC_MSG_RESULT([$ax_lib_fftw3_threads]) - fftw3_threads_LIBS="${fftw3_lib_flag} -lpthread -lm" + fftw3_threads_LIBS="${fftw3_lib_flag}" + + # Check for combined fftw threads (-lpthread -lm set) + if test "x$ax_lib_fftw3_threads" = "xno"; then + LIBS="${fftw3_lib_flag} -lpthread -lm" + AC_MSG_CHECKING([for threaded fftw3 library with combined threads (-lpthread -lm set)]) + AC_LINK_IFELSE([AC_LANG_CALL([], [fftw${PREC_SUFFIX}_init_threads])], [ax_lib_fftw3_threads=yes],[ax_lib_fftw3_threads=no]) + AC_MSG_RESULT([$ax_lib_fftw3_threads]) + fftw3_threads_LIBS="${fftw3_lib_flag} -lpthread -lm" + fi LIBS="$saved_LIBS" # Check for extra fftw threads library diff --git a/m4/ax_nfft_module.m4 b/m4/ax_nfft_module.m4 index bc8d856c..ad4fb8ca 100644 --- a/m4/ax_nfft_module.m4 +++ b/m4/ax_nfft_module.m4 @@ -6,7 +6,7 @@ AC_DEFUN([AX_NFFT_MODULE], nfft_module_default_local="no" fi fi - AC_ARG_ENABLE($1, [AC_HELP_STRING([--enable-]$1,[build ]$2[ module (]$3[)])], + AC_ARG_ENABLE($1, [AS_HELP_STRING([--enable-]$1,[build ]$2[ module (]$3[)])], ok=$enableval, ok=$nfft_module_default_local) AC_MSG_CHECKING([Whether to compile $2 module]) if m4_default($7,test "x$ok" = "xyes"); then diff --git a/m4/ax_prog_matlab.m4 b/m4/ax_prog_matlab.m4 index 092abd63..2f6a131c 100644 --- a/m4/ax_prog_matlab.m4 +++ b/m4/ax_prog_matlab.m4 @@ -29,23 +29,23 @@ AC_DEFUN([AX_PROG_MATLAB], # option to enable mex file compilation for GNU Octave AC_ARG_WITH(octave, - [AC_HELP_STRING([--with-octave=DIR], + [AS_HELP_STRING([--with-octave=DIR], [the directory where GNU Octave is installed])], octave_dir=${withval},octave_dir="no") # option to enable mex file compilation AC_ARG_WITH(matlab, - [AC_HELP_STRING([--with-matlab=DIR], + [AS_HELP_STRING([--with-matlab=DIR], [the directory where Matlab is installed])], matlab_dir=${withval},matlab_dir="no") AC_ARG_WITH(matlab-arch, - [AC_HELP_STRING([--with-matlab-arch=DIR], + [AS_HELP_STRING([--with-matlab-arch=DIR], [Matlab architecture acronym])], matlab_arch=${withval},matlab_arch="yes") AC_ARG_ENABLE(matlab-argchecks, - [AC_HELP_STRING([--enable-matlab-argchecks], + [AS_HELP_STRING([--enable-matlab-argchecks], [Compile Matlab interface with argument checks (recommended) [default=yes]])], [ok="$enableval"], [ok="yes"]) @@ -54,12 +54,12 @@ AC_DEFUN([AX_PROG_MATLAB], AC_DEFINE(MATLAB_ARGCHECKS,1,[Define to enable Matlab argument checks.]) fi - AC_ARG_WITH(matlab-fftw3-libdir, [AC_HELP_STRING([--with-matlab-fftw3-libdir=DIR], + AC_ARG_WITH(matlab-fftw3-libdir, [AS_HELP_STRING([--with-matlab-fftw3-libdir=DIR], [compile Matlab interface with fftw3 library directory DIR])], matlab_fftw3_lib_dir=$withval, matlab_fftw3_lib_dir="yes") AC_ARG_ENABLE(matlab-threads, - [AC_HELP_STRING([--enable-matlab-threads], + [AS_HELP_STRING([--enable-matlab-threads], [Compile Matlab interface with thread support [default same as --enable-openmp]])], [matlab_threads="$enableval"], [matlab_threads="$enable_threads"]) @@ -104,6 +104,7 @@ AC_DEFUN([AX_PROG_MATLAB], mac) matlab_mexext="mexmac";; maci) matlab_mexext="mexmaci";; maci64) matlab_mexext="mexmaci64";; + maca64) matlab_mexext="mexmaca64";; sol64) matlab_mexext="mexs64";; win32) matlab_mexext="mexw32";; win64) matlab_mexext="mexw64";; @@ -171,6 +172,7 @@ AC_DEFUN([AX_PROG_MATLAB], mexmac) matlab_arch="mac";; mexmaci) matlab_arch="maci";; mexmaci64) matlab_arch="maci64";; + mexmaca64) matlab_arch="maca64";; mexs64) matlab_arch="sol64";; mexw32) matlab_arch="win32";; mexw64) matlab_arch="win64";; @@ -185,6 +187,7 @@ AC_DEFUN([AX_PROG_MATLAB], mac) matlab_mexext="mexmac";; maci) matlab_mexext="mexmaci";; maci64) matlab_mexext="mexmaci64";; + maca64) matlab_mexext="mexmaca64";; sol64) matlab_mexext="mexs64";; win32) matlab_mexext="mexw32";; win64) matlab_mexext="mexw64";; @@ -205,7 +208,7 @@ AC_DEFUN([AX_PROG_MATLAB], # dynamic library extension for architecture case $matlab_arch in glnx86|glnxa64|sol|sol64) matlab_libext=".so";; - mac|mac64|maci|maci64) matlab_libext=".dylib";; + mac|mac64|maci|maci64|maca64) matlab_libext=".dylib";; win32|win64) matlab_libext=".dll";; *) AC_MSG_ERROR([Unsupported or invalid architecture ${matlab_arch}.]);; esac @@ -248,19 +251,19 @@ AC_DEFUN([AX_PROG_MATLAB], saved_LIBS="$LIBS" saved_LDFLAGS="$LDFLAGS" - for matlab_fftw3_lib_name in mwfftw3 :libmwfftw3.so.3 fftw3; do + for matlab_fftw3_lib_name in mwfftw3${PREC_SUFFIX} :libmwfftw3${PREC_SUFFIX}.so.3 fftw3${PREC_SUFFIX}; do matlab_fftw3_LIBS="-l${matlab_fftw3_lib_name}" LIBS="-l${matlab_fftw3_lib_name} $LIBS" LDFLAGS="-L$matlab_fftw3_lib_dir $LDFLAGS" AC_MSG_CHECKING([for Matlab fftw3 library]) - AC_LINK_IFELSE([AC_LANG_CALL([], [fftw_execute])], [ax_matlab_lib_fftw3=yes],[ax_matlab_lib_fftw3=no]) + AC_LINK_IFELSE([AC_LANG_CALL([], [fftw${PREC_SUFFIX}_execute])], [ax_matlab_lib_fftw3=yes],[ax_matlab_lib_fftw3=no]) AC_MSG_RESULT([$ax_matlab_lib_fftw3]) if test "x$ax_matlab_lib_fftw3" = "xno"; then matlab_fftw3_LIBS="-l${matlab_fftw3_lib_name} -lm" LIBS="$matlab_fftw3_LIBS $saved_LIBS" AC_MSG_CHECKING([for Matlab fftw3 library (-lm set)]) - AC_LINK_IFELSE([AC_LANG_CALL([], [fftw_execute])], [ax_matlab_lib_fftw3=yes],[ax_matlab_lib_fftw3=no]) + AC_LINK_IFELSE([AC_LANG_CALL([], [fftw${PREC_SUFFIX}_execute])], [ax_matlab_lib_fftw3=yes],[ax_matlab_lib_fftw3=no]) AC_MSG_RESULT([$ax_matlab_lib_fftw3]) fi @@ -268,7 +271,7 @@ AC_DEFUN([AX_PROG_MATLAB], matlab_fftw3_LIBS="-l${matlab_fftw3_lib_name} -pthread -lm" LIBS="$matlab_fftw3_LIBS $saved_LIBS" AC_MSG_CHECKING([for Matlab fftw3 library (-lpthread -lm set)]) - AC_LINK_IFELSE([AC_LANG_CALL([], [fftw_execute])], [ax_matlab_lib_fftw3=yes],[ax_matlab_lib_fftw3=no]) + AC_LINK_IFELSE([AC_LANG_CALL([], [fftw${PREC_SUFFIX}_execute])], [ax_matlab_lib_fftw3=yes],[ax_matlab_lib_fftw3=no]) AC_MSG_RESULT([$ax_matlab_lib_fftw3]) fi @@ -286,7 +289,7 @@ AC_DEFUN([AX_PROG_MATLAB], ax_matlab_lib_fftw3_threads="yes" LIBS="$matlab_fftw3_LIBS -lpthread -lm $saved_LIBS" AC_MSG_CHECKING([for Matlab combined fftw3 library with thread support (-lpthread -lm set)]) - AC_LINK_IFELSE([AC_LANG_CALL([], [fftw_init_threads])], [matlab_fftw3_LIBS="$matlab_fftw3_LIBS -lpthread -lm"],[ax_matlab_lib_fftw3_threads=no]) + AC_LINK_IFELSE([AC_LANG_CALL([], [fftw${PREC_SUFFIX}_init_threads])], [matlab_fftw3_LIBS="$matlab_fftw3_LIBS -lpthread -lm"],[ax_matlab_lib_fftw3_threads=no]) AC_MSG_RESULT([$ax_matlab_lib_fftw3_threads]) fi @@ -294,7 +297,7 @@ AC_DEFUN([AX_PROG_MATLAB], ax_matlab_lib_fftw3_threads="yes" LIBS="-l${matlab_fftw3_lib_name}_threads $matlab_fftw3_LIBS $saved_LIBS" AC_MSG_CHECKING([for Matlab fftw3 library with thread support]) - AC_LINK_IFELSE([AC_LANG_CALL([], [fftw_init_threads])], [matlab_fftw3_LIBS="-l${matlab_fftw3_lib_name}_threads $matlab_fftw3_LIBS"],[ax_matlab_lib_fftw3_threads=no]) + AC_LINK_IFELSE([AC_LANG_CALL([], [fftw${PREC_SUFFIX}_init_threads])], [matlab_fftw3_LIBS="-l${matlab_fftw3_lib_name}_threads $matlab_fftw3_LIBS"],[ax_matlab_lib_fftw3_threads=no]) AC_MSG_RESULT([$ax_matlab_lib_fftw3_threads]) fi @@ -302,7 +305,7 @@ AC_DEFUN([AX_PROG_MATLAB], ax_matlab_lib_fftw3_threads="yes" LIBS="-l${matlab_fftw3_lib_name}_threads -lpthread $matlab_fftw3_LIBS $saved_LIBS" AC_MSG_CHECKING([for Matlab fftw3 library with thread support (-lpthread set)]) - AC_LINK_IFELSE([AC_LANG_CALL([], [fftw_init_threads])], [matlab_fftw3_LIBS="-l${matlab_fftw3_lib_name}_threads -lpthread $matlab_fftw3_LIBS"],[ax_matlab_lib_fftw3_threads=no]) + AC_LINK_IFELSE([AC_LANG_CALL([], [fftw${PREC_SUFFIX}_init_threads])], [matlab_fftw3_LIBS="-l${matlab_fftw3_lib_name}_threads -lpthread $matlab_fftw3_LIBS"],[ax_matlab_lib_fftw3_threads=no]) AC_MSG_RESULT([$ax_matlab_lib_fftw3_threads]) fi @@ -378,11 +381,11 @@ AC_DEFUN([AX_PROG_MATLAB], octave_cli="${OCTAVE_PATH}"/bin/octave-cli fi - AC_ARG_WITH(octave-libdir, [AC_HELP_STRING([--with-octave-libdir=DIR], + AC_ARG_WITH(octave-libdir, [AS_HELP_STRING([--with-octave-libdir=DIR], [compile with Octave library directory DIR])], octave_lib_dir=$withval, octave_lib_dir="yes") - AC_ARG_WITH(octave-includedir, [AC_HELP_STRING([--with-octave-includedir=DIR], + AC_ARG_WITH(octave-includedir, [AS_HELP_STRING([--with-octave-includedir=DIR], [compile with octave include directory DIR])], octave_include_dir=$withval, octave_include_dir="yes") diff --git a/macos-build-mex.sh b/macos-build-mex.sh index 20a0c378..14fd4e66 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -1,21 +1,14 @@ #!/bin/bash -# This script builds Octave / Matlab interfaces for MacOS. +# This script builds Octave / Matlab interfaces for macOS. # A Matlab installation must be specified in order to build the # Matlab interface. The paths should not contain spaces! # -# The script is known to work on MacOS Mojave with MacPorts. +# The script is known to work on macOS 11 Big Sur with Homebrew. # # At least the following packages are required: -# getopt, gcc8, cunit, octave, gsed +# octave gnu-sed cunit # -# Additionally, the FFTW3 library available in MacPorts does not support -# threads at the time of writing. Therefore, it is assumed that an up-to-date -# FFTW3 version was installed in /opt/fftw3 -# using e.g. the following configure options: -# ./configure --prefix=/opt/fftw3 --enable-threads --enable-fma --enable-sse2 -# --enable-avx2 --enable-avx-128-fma --enable-avx -# --enable-static --enable-shared --with-gcc-arch=core2 # # Example call: # ./macos-build-mex.sh --matlab=/path/to/matlab @@ -24,12 +17,13 @@ # Any subsequent commands which fail will cause the shell script to exit immediately set -ex -FFTWDIR=/opt/local -GCC=gcc-mp-8 +GCCARCH=haswell +FFTWDIR=/usr/local +GCC="gcc-11" # default values (to be overwritten if respective parameters are set) -OCTAVEDIR=/opt/local - +OCTAVEDIR=/usr/local +MATLABDIR=/Applications/MATLAB_R2021b.app # read the options TEMP=`getopt -o o:m:f:v: --long octave:,matlab:,matlab-version:,fftw: -n 'macos-build-mex.sh' -- "$@"` eval set -- "$TEMP" @@ -67,13 +61,24 @@ OCTAVEVERSION=`"$OCTAVEDIR"/bin/octave-cli --eval "fprintf('OCTAVE_VERSION=%s\n' # Build NFFT READMECONTENT=" -$(gsed '/Directory structure/Q' $NFFTDIR/README) +$(gsed -e '/^\[!/d' -e '/Directory structure/Q' $NFFTDIR/README) " +FFTWREADME=' +FFTW +---- +The compiled NFFT files contain parts of the FFTW library (http://www.fftw.org) +Copyright (c) 2003, 2007-14 Matteo Frigo +Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology' +BINARIES_ARCH_README=' +Please note that since the binaries were compiled with gcc flag -march=haswell, +they may not work on older CPUs (below Intel i3/i5/i7-4xxx or +AMD Excavator/4th gen Bulldozer) as well as on some Intel Atom/Pentium CPUs. +' cd "$NFFTDIR" make distclean || true -for OMPYN in 0 1 +for OMPYN in 1 do if [ $OMPYN = 1 ]; then NFFTBUILDDIR="$HOMEDIR/build-openmp" @@ -95,43 +100,71 @@ rm -f -r "$NFFTBUILDDIR" mkdir "$NFFTBUILDDIR" cd "$NFFTBUILDDIR" -CC=$GCC CPPFLAGS=-I"$FFTWDIR"/include LDFLAGS=-L"$FFTWDIR"/lib "$NFFTDIR/configure" --enable-all $OMPFLAG --with-octave="$OCTAVEDIR" --with-gcc-arch=core2 --disable-static --enable-shared +CC=$GCC CPPFLAGS=-I"$FFTWDIR"/include LDFLAGS=-L"$FFTWDIR"/lib "$NFFTDIR/configure" --enable-all $OMPFLAG --with-octave="$OCTAVEDIR" --with-gcc-arch=$GCCARCH --disable-static --enable-shared --disable-examples --enable-applications make make check +NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) + +# Create archive for Julia interface +cd julia +for LIB in nf*t +do + cd "$LIB" + $GCC -dynamiclib -o lib"$LIB"julia.dylib .libs/lib"$LIB"julia.o -Wl,-force_load,../../.libs/libnfft3_julia.a $FFTW_LINK_COMMAND -lm -O3 -malign-double -march=$GCCARCH $OMPLIBS + cd .. +done + +cd fastsum +$GCC -dynamiclib -o libfastsumjulia.dylib .libs/libfastsumjulia.o -Wl,-force_load,../../.libs/libnfft3_julia.a $FFTW_LINK_COMMAND -Wl,-force_load,../../applications/fastsum/.libs/libfastsum$THREADSSUFFIX.a -Wl,-force_load,../../applications/fastsum/.libs/libkernels.a -lm -O3 -malign-double -march=$GCCARCH $OMPLIBS +cd .. + +cd "$NFFTBUILDDIR" + +ARCH=$(uname -m) +JULIADIR=nfft-"$NFFTVERSION"-julia-macos_$ARCH$OMPSUFFIX +mkdir "$JULIADIR" +rsync -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' --exclude='*.h' "$NFFTDIR/julia/" "$JULIADIR" +rsync -rLt --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' --exclude='*.c' 'julia/' "$JULIADIR" + +for DIR in $JULIADIR/nf*t $JULIADIR/fastsum; do cd $DIR; for NAME in simple_test*.jl; do julia "$NAME"; done; cd "$NFFTBUILDDIR"; done; + +echo 'This archive contains the NFFT' $NFFTVERSION 'Julia interface. +The NFFT library was compiled with double precision support for '$ARCH' macOS +using GCC '$GCCVERSION' with -march='$GCCARCH' and FFTW '$FFTWVERSION'. +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$JULIADIR"/readme-julia.txt +zip -9 -r ../"$JULIADIR".zip "$JULIADIR" +# End of Julia interface + + +# Create Matlab/Octave release for LIB in nfft nfsft nfsoft nnfft fastsum nfct nfst fpt do cd matlab/"$LIB" - $GCC -o .libs/lib"$LIB".mex -bundle .libs/lib"$LIB"_la-"$LIB"mex.o -Wl,-force_load,../../.libs/libnfft3_matlab.a -Wl,-force_load,../../matlab/.libs/libmatlab.a -L"$OCTAVEDIR"/lib/octave/"$OCTAVEVERSION" $FFTW_LINK_COMMAND -lm -loctinterp -loctave -O3 -malign-double -march=core2 -mtune=core2 -arch x86_64 $OMPLIBS + $GCC -o .libs/lib"$LIB".mex -bundle .libs/lib"$LIB"_la-"$LIB"mex.o -Wl,-force_load,../../.libs/libnfft3_matlab.a -Wl,-force_load,../../matlab/.libs/libmatlab.a -L"$OCTAVEDIR"/lib/octave/"$OCTAVEVERSION" $FFTW_LINK_COMMAND -lm -loctinterp -loctave -O3 -malign-double -march=$GCCARCH $OMPLIBS cd ../.. done -NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) DIR=nfft-$NFFTVERSION-mexmaci64$OMPSUFFIX - -# Create Matlab/Octave release -for SUBDIR in nfft nfsft nfsoft nnfft fastsum nfct nfst infft1d nfsft/@f_hat fpt - do - mkdir -p "$DIR"/$SUBDIR - cp -f -L matlab/$SUBDIR/*.mex* "$DIR"/$SUBDIR/ || true - cp -f -L "$NFFTDIR"/matlab/$SUBDIR/README "$DIR"/$SUBDIR/ || true - cp -f -L "$NFFTDIR"/matlab/$SUBDIR/*.m "$DIR"/$SUBDIR/ -done +mkdir $DIR +rsync -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' --exclude='*.h' "$NFFTDIR/matlab/" "$DIR" +rsync -rLt --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' --exclude='*.c' "matlab/" "$DIR" # Compile with Matlab if [ -n "$MATLABDIR" ]; then if [ -z "$MATLABVERSION" ]; then MATLABVERSION=`"$MATLABDIR"/bin/matlab -wait -nodesktop -nosplash -r "fprintf('MATLAB_VERSION=%s\n', version); exit;" | grep MATLAB_VERSION | gsed 's/.*(//' | gsed 's/)//'` fi + MATLABSTRING="and Matlab $MATLABVERSION " cd "$NFFTBUILDDIR" make clean - CC=$GCC CPPFLAGS=-I"$FFTWDIR"/include LDFLAGS=-L"$FFTWDIR"/lib "$NFFTDIR/configure" --enable-all $OMPFLAG --with-matlab="$MATLABDIR" --with-gcc-arch=core2 --disable-static --enable-shared + CC=$GCC CPPFLAGS=-I"$FFTWDIR"/include LDFLAGS=-L"$FFTWDIR"/lib "$NFFTDIR/configure" --enable-all $OMPFLAG --with-matlab="$MATLABDIR" --with-gcc-arch=$GCCARCH --disable-static --enable-shared --disable-examples --disable-applications make make check for LIB in nfft nfsft nfsoft nnfft fastsum nfct nfst fpt do cd matlab/"$LIB" - $GCC -o .libs/lib"$LIB".mexmaci64 -bundle .libs/lib"$LIB"_la-"$LIB"mex.o -Wl,-force_load,../../.libs/libnfft3_matlab.a -Wl,-force_load,../../matlab/.libs/libmatlab.a -L"$MATLABDIR"/bin/maci64 -lm -lmwfftw3 -lmx -lmex -lmat -O3 -malign-double -march=core2 -mtune=core2 -arch x86_64 $OMPLIBS + $GCC -o .libs/lib"$LIB".mexmaci64 -bundle .libs/lib"$LIB"_la-"$LIB"mex.o -Wl,-force_load,../../.libs/libnfft3_matlab.a -Wl,-force_load,../../matlab/.libs/libmatlab.a -L"$MATLABDIR"/bin/maci64 -lm -lmwfftw3 -lmx -lmex -lmat -O3 -malign-double -march=$GCCARCH $OMPLIBS cd ../.. done fi @@ -141,25 +174,36 @@ for SUBDIR in nfft nfsft nfsoft nnfft fastsum nfct nfst fpt cp -f -L matlab/$SUBDIR/*.mex* "$DIR"/$SUBDIR/ done +for SUBDIR in nfft nfsft nfsoft nnfft fastsum nfct nfst infft1d fpt ; do + cd "$DIR/$SUBDIR" + if [ -f simple_test.m ] ; then + for TESTFILE in *test*.m + do + if [ "$SUBDIR" != "infft1d" ] ; then + "$OCTAVEDIR"/bin/octave-cli --eval="run('$TESTFILE')" + fi + if [ -n "$MATLABDIR" ]; then + "$MATLABDIR"/bin/matlab -wait -nodesktop -nosplash -r "run('$TESTFILE'); exit" + fi + done + fi + cd "$NFFTBUILDDIR" +done + cd "$NFFTBUILDDIR" cp "$NFFTDIR"/COPYING "$DIR"/COPYING if [ -n "$MATLABDIR" ]; then -echo 'This archive contains the Matlab and Octave interface of NFFT '$NFFTVERSION' compiled -for 64-bit MacOS using GCC '$GCCVERSION' and Matlab '$MATLABVERSION' -and Octave '$OCTAVEVERSION' and FFTW '$FFTWVERSION'. -' "$READMECONTENT" > "$DIR"/readme-matlab.txt +echo 'This archive contains the Matlab and Octave interface of NFFT '$NFFTVERSION' +compiled for '$ARCH' macOS using GCC '$GCCVERSION' with -march='$GCCARCH' +'$MATLABSTRING'and Octave '$OCTAVEVERSION'. +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$DIR"/readme-matlab.txt else -echo 'This archive contains the Octave interface of NFFT '$NFFTVERSION' compiled -for 64-bit MacOS using GCC '$GCCVERSION' and Octave '$OCTAVEVERSION' and FFTW '$FFTWVERSION'. -' "$READMECONTENT" > "$DIR"/readme-matlab.txt +echo 'This archive contains the Octave interface of NFFT '$NFFTVERSION' +compiled for '$ARCH' macOS using GCC '$GCCVERSION' with -march='$GCCARCH' +and Octave '$OCTAVEVERSION'. +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$DIR"/readme-matlab.txt fi -echo "FFTW ----- -The compiled NFFT files contain parts of the FFTW library (http://www.fftw.org) -Copyright (c) 2003, 2007-14 Matteo Frigo -Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology" >> "$DIR"/readme-matlab.txt - zip -9 -r ../"$DIR".zip "$DIR" done diff --git a/matlab/args.c b/matlab/args.c index d3b4050e..0faef421 100644 --- a/matlab/args.c +++ b/matlab/args.c @@ -17,6 +17,8 @@ */ #include "config.h" +#include "nfft3.h" +#include "infft.h" #include "imex.h" int nfft_mex_get_int(const mxArray *p, const char *errmsg) @@ -32,3 +34,146 @@ double nfft_mex_get_double(const mxArray *p, const char *errmsg) mexErrMsgTxt(errmsg);) return mxGetScalar(p); } + +void nfft_mex_get_nm(const mxArray *prhs[], int *n, int *m) +{ + int t = nfft_mex_get_int(prhs[1],"Input argument N must be a scalar."); + DM(if ((t < 0) || (t%2!=0)) + mexErrMsgTxt("Input argument N must be non-negative and multiple of two.");) + *n = t; + t = nfft_mex_get_int(prhs[2],"Input argument M must be a scalar."); + DM(if (t < 1) + mexErrMsgTxt("Input argument M must be positive.");) + *m = t; +} + +void nfft_mex_get_nm_odd(const mxArray *prhs[], int *n, int *m) +{ + int t = nfft_mex_get_int(prhs[1],"Input argument N must be a scalar."); + DM(if (t < 0) + mexErrMsgTxt("Input argument N must be non-negative.");) + *n = t; + t = nfft_mex_get_int(prhs[2],"Input argument M must be a scalar."); + DM(if (t < 1) + mexErrMsgTxt("Input argument M must be positive.");) + *m = t; +} + +void nfft_mex_get_n1n2m(const mxArray *prhs[], int *n1, int *n2, int *m) +{ + int t = nfft_mex_get_int(prhs[1],"Input argument N1 must be a scalar."); + DM(if ((t < 0) || (t%2!=0)) + mexErrMsgTxt("Input argument N1 must be non-negative and even.");) + *n1 = t; + + t = nfft_mex_get_int(prhs[2],"Input argument N2 must be a scalar."); + DM(if ((t < 0) || (t%2!=0)) + mexErrMsgTxt("Input argument N2 must be non-negative and even.");) + *n2 = t; + + t = nfft_mex_get_int(prhs[3],"Input argument M must be a scalar."); + DM(if (t < 1) + mexErrMsgTxt("Input argument M must be positive.");) + *m = t; +} + +void nfft_mex_get_n1n2m_odd(const mxArray *prhs[], int *n1, int *n2, int *m) +{ + int t = nfft_mex_get_int(prhs[1],"Input argument N1 must be a scalar."); + DM(if (t < 0) + mexErrMsgTxt("Input argument N1 must be non-negative.");) + *n1 = t; + + t = nfft_mex_get_int(prhs[2],"Input argument N2 must be a scalar."); + DM(if (t < 0) + mexErrMsgTxt("Input argument N2 must be non-negative.");) + *n2 = t; + + t = nfft_mex_get_int(prhs[3],"Input argument M must be a scalar."); + DM(if (t < 1) + mexErrMsgTxt("Input argument M must be positive.");) + *m = t; +} + +void nfft_mex_get_n1n2n3m(const mxArray *prhs[], int *n1, int *n2, int *n3, int *m) +{ + int t = nfft_mex_get_int(prhs[1],"Input argument N1 must be a scalar."); + DM(if ((t < 0) || (t%2!=0)) + mexErrMsgTxt("Input argument N1 must be non-negative and even.");) + *n1 = t; + + t = nfft_mex_get_int(prhs[2],"Input argument N2 must be a scalar."); + DM(if ((t < 0) || (t%2!=0)) + mexErrMsgTxt("Input argument N2 must be non-negative and even.");) + *n2 = t; + + t = nfft_mex_get_int(prhs[3],"Input argument N3 must be a scalar."); + DM(if ((t < 0) || (t%2!=0)) + mexErrMsgTxt("Input argument N3 must be non-negative and even.");) + *n3 = t; + + t = nfft_mex_get_int(prhs[4],"Input argument M must be a scalar."); + DM(if (t < 1) + mexErrMsgTxt("Input argument M must be positive.");) + *m = t; +} + +void nfft_mex_get_n1n2n3m_odd(const mxArray *prhs[], int *n1, int *n2, int *n3, int *m) +{ + int t = nfft_mex_get_int(prhs[1],"Input argument N1 must be a scalar."); + DM(if (t < 0) + mexErrMsgTxt("Input argument N1 must be non-negative.");) + *n1 = t; + + t = nfft_mex_get_int(prhs[2],"Input argument N2 must be a scalar."); + DM(if (t < 0) + mexErrMsgTxt("Input argument N2 must be non-negative.");) + *n2 = t; + + t = nfft_mex_get_int(prhs[3],"Input argument N3 must be a scalar."); + DM(if (t < 0) + mexErrMsgTxt("Input argument N3 must be non-negative.");) + *n3 = t; + + t = nfft_mex_get_int(prhs[4],"Input argument M must be a scalar."); + DM(if (t < 1) + mexErrMsgTxt("Input argument M must be positive.");) + *m = t; +} + +void nfft_mex_check_nargs(const int nrhs, const int n, const char* errmsg) +{ + DM(if (nrhs != n) + mexErrMsgTxt(errmsg);) +} + +int nfft_mex_set_num_threads_check(const int nrhs, const mxArray *prhs[], void **plans, const int plans_num_allocated) +{ + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for set_num_threads."); + + int nthreads_new = nfft_mex_get_int(prhs[1],"Input argument nthreads must be a scalar."); + + if (nthreads_new < 1) + mexErrMsgTxt("Number of threads must be at least 1."); + + if (nthreads_new > 1 && !X(has_threads_enabled)()) + mexErrMsgTxt("Threads are not enabled."); + + int nthreads_old = X(get_num_threads)(); + if (nthreads_new != nthreads_old) + { + int i; + int is_plan_allocated = 0; + for (i = 0; i < plans_num_allocated; i++) + if (plans[i] != 0) + { + is_plan_allocated = 1; + break; + } + if (is_plan_allocated) + mexWarnMsgIdAndTxt("nfft:set_num_threads:plansAllocated","At least one plan is allocated. New number of threads may not affect the FFT step of any allocated plans."); + } + + return nthreads_new; +} + diff --git a/matlab/fastsum/Makefile.am b/matlab/fastsum/Makefile.am index 7891c254..395254d8 100644 --- a/matlab/fastsum/Makefile.am +++ b/matlab/fastsum/Makefile.am @@ -8,7 +8,7 @@ fastsummatlabdir = $(datadir)/nfft/matlab/fastsum lib_LTLIBRARIES = libfastsum.la libfastsum_la_SOURCES = fastsummex.c -libfastsum_la_LIBADD = $(top_builddir)/libnfft3_matlab.la @matlab_fftw3_LIBS@ $(top_builddir)/matlab/libmatlab.la $(matlab_LIBS) +libfastsum_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_matlab.la @matlab_fftw3_LIBS@ $(top_builddir)/matlab/libmatlab.la $(matlab_LIBS) libfastsum_la_LDFLAGS = -no-undefined -module -shared -shrext $(matlab_mexext) -avoid-version @matlab_fftw3_LDFLAGS@ $(matlab_LDFLAGS) @@ -17,7 +17,7 @@ libfastsum_la_CFLAGS = $(OPENMP_CFLAGS) endif -dist_fastsummatlab_DATA = Contents.m EXACT_NEARFIELD.m NEARFIELD_BOXES.m fastsum.m fastsum_get_num_threads.m fastsum_init.m fastsum_set_x.m fastsum_set_alpha.m fastsum_set_y.m fastsum_trafo.m fastsum_trafo_direct.m fastsum_get_f.m fastsum_finalize.m simple_test.m test_fastsum.m +dist_fastsummatlab_DATA = Contents.m EXACT_NEARFIELD.m NEARFIELD_BOXES.m fastsum.m fastsum_get_num_threads.m fastsum_init.m fastsum_set_x.m fastsum_set_alpha.m fastsum_set_y.m fastsum_trafo.m fastsum_trafo_direct.m fastsum_get_f.m fastsum_finalize.m simple_test.m test_fastsum.m fastsum_set_num_threads.m # target all-am builds .libs/libfastsum@matlab_mexext@ fastsummex@matlab_mexext@: all-am diff --git a/matlab/fastsum/fastsum_set_num_threads.m b/matlab/fastsum/fastsum_set_num_threads.m new file mode 100644 index 00000000..96d5d09a --- /dev/null +++ b/matlab/fastsum/fastsum_set_num_threads.m @@ -0,0 +1,23 @@ +%NFFT_GET_NUM_THREADS Get number of threads (at most) used for computation +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% +% This program 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. +% +% 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., 51 +% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +function nthreads_old = fastsum_set_num_threads(nthreads_new) + +nthreads_old = fastsummex('get_num_threads'); +fastsummex('set_num_threads', nthreads_new); + diff --git a/matlab/fastsum/fastsummex.c b/matlab/fastsum/fastsummex.c index d4354230..ea50560a 100644 --- a/matlab/fastsum/fastsummex.c +++ b/matlab/fastsum/fastsummex.c @@ -39,12 +39,6 @@ static unsigned short gflags = FASTSUM_MEX_FIRST_CALL; static fastsum_plan** plans = NULL; /* plans */ static unsigned int plans_num_allocated = 0; -static inline void check_nargs(const int nrhs, const int n, const char* errmsg) -{ - DM(if (nrhs != n) - mexErrMsgTxt(errmsg);) -} - static inline void check_plan(int i) { DM(if (i < 0 || i >= plans_num_allocated || plans[i] == 0) @@ -91,16 +85,16 @@ static inline int mkplan() mexErrMsgTxt("fastsum: Too many plans already allocated."); fastsum_plan** plans_old = plans; - plans = nfft_malloc((plans_num_allocated+PLANS_START)*sizeof(fastsum_plan*)); + plans = NFFT(malloc)((plans_num_allocated+PLANS_START)*sizeof(fastsum_plan*)); for (l = 0; l < plans_num_allocated; l++) plans[l] = plans_old[l]; for (l = plans_num_allocated; l < plans_num_allocated+PLANS_START; l++) plans[l] = 0; if (plans_num_allocated > 0) - nfft_free(plans_old); + NFFT(free)(plans_old); plans_num_allocated += PLANS_START; } - plans[i] = nfft_malloc(sizeof(fastsum_plan)); + plans[i] = NFFT(malloc)(sizeof(fastsum_plan)); return i; } @@ -140,6 +134,12 @@ static kernel get_kernel(const mxArray *p) ker = log_sin; else if (strcmp(s, "laplacian_rbf") == 0) ker = laplacian_rbf; + else if (strcmp(s, "der_laplacian_rbf") == 0) + ker = der_laplacian_rbf; + else if (strcmp(s, "xx_gaussian") == 0) + ker = xx_gaussian; + else if (strcmp(s, "absx") == 0) + ker = absx; else mexErrMsgTxt("fastsum: Unknown kernel function."); return ker; @@ -149,6 +149,7 @@ static inline void zero_nodes_pointer(int i) { // Initialize pointers that are set in init_nodes plans[i]->x = 0; + plans[i]->alpha = 0; plans[i]->y = 0; } @@ -162,19 +163,19 @@ static void cleanup(void) for (i = 0; i < plans_num_allocated; i++) if (plans[i]) { - nfft_free(plans[i]->kernel_param); + NFFT(free)(plans[i]->kernel_param); if(plans[i]->x) fastsum_finalize_source_nodes(plans[i]); if(plans[i]->y) fastsum_finalize_target_nodes(plans[i]); fastsum_finalize_kernel(plans[i]); - nfft_free(plans[i]); + NFFT(free)(plans[i]); plans[i] = 0; } if (plans_num_allocated > 0) { - nfft_free(plans); + NFFT(free)(plans); plans = NULL; plans_num_allocated = 0; } @@ -209,16 +210,26 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) if(strcmp(cmd,"get_num_threads") == 0) { - int32_t nthreads = X(get_num_threads)(); - plhs[0] = mxCreateNumericMatrix(1, 1, mxINT32_CLASS, mxREAL); - *((int32_t *)mxGetData(plhs[0])) = nthreads; + INT nthreads = X(get_num_threads)(); + plhs[0] = mxCreateDoubleScalar((double) nthreads); + return; + } + else if(strcmp(cmd,"set_num_threads") == 0) + { + int nthreads_new = nfft_mex_set_num_threads_check(nrhs, prhs, (void **) plans, plans_num_allocated); + X(set_num_threads)(nthreads_new); return; } - + else if(strcmp(cmd,"has_threads_enabled") == 0) + { + INT threads_enabled = X(has_threads_enabled)(); + plhs[0] = mxCreateDoubleScalar((double) threads_enabled); + return; + } else if (strcmp(cmd,"init") == 0) { - check_nargs(nrhs,9,"Wrong number of arguments for init."); + nfft_mex_check_nargs(nrhs,9,"Wrong number of arguments for init."); int i; /**< fastsum plan */ @@ -226,10 +237,10 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int n; /**< expansion degree */ int p; /**< degree of smoothness */ kernel ker; /**< kernel function */ - double *param; /**< parameter for kernel */ - double eps_I; /**< inner boundary */ - double eps_B; /**< outer boundary */ - param = nfft_malloc(sizeof(double)); + R *param; /**< parameter for kernel */ + R eps_I; /**< inner boundary */ + R eps_B; /**< outer boundary */ + param = NFFT(malloc)(sizeof(R)); d = nfft_mex_get_int(prhs[1],"fastsum init: Input argument d must be a scalar."); DM(if (d < 1) @@ -268,7 +279,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"set_x") == 0) { - check_nargs(nrhs,5,"Wrong number of arguments for set_x."); + nfft_mex_check_nargs(nrhs,5,"Wrong number of arguments for set_x."); int i = nfft_mex_get_int(prhs[1],"fastsum set_x: Input argument plan must be a scalar."); check_plan(i); @@ -343,7 +354,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"set_alpha") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_alpha."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_alpha."); int i = nfft_mex_get_int(prhs[1],"fastsum set_x_alpha: Input argument plan must be a scalar."); check_plan(i); @@ -380,7 +391,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"set_y") == 0) { - check_nargs(nrhs,5,"Wrong number of arguments for set_y."); + nfft_mex_check_nargs(nrhs,5,"Wrong number of arguments for set_y."); int i = nfft_mex_get_int(prhs[1],"fastsum set_y: Input argument plan must be a scalar."); check_plan(i); @@ -432,7 +443,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"trafo_direct") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo_direct."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo_direct."); const int i = nfft_mex_get_int(prhs[1],"fastsum trafo_direct: Input argument plan must be a scalar."); check_plan(i); check_plan_nodes(i); @@ -442,7 +453,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"trafo") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo."); const int i = nfft_mex_get_int(prhs[1],"fastsum trafo: Input argument plan must be a scalar."); check_plan(i); check_plan_nodes(i); @@ -452,7 +463,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"get_f") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f."); const int i = nfft_mex_get_int(prhs[1],"fastsum get_f: Input argument plan must be a scalar."); check_plan(i); check_plan_nodes(i); @@ -469,23 +480,23 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"finalize") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for finalize."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for finalize."); const int i = nfft_mex_get_int(prhs[1],"fastsum finalize: Input argument plan must be a scalar."); check_plan(i); - nfft_free(plans[i]->kernel_param); + NFFT(free)(plans[i]->kernel_param); if(plans[i]->x || plans[i]->alpha) fastsum_finalize_source_nodes(plans[i]); if(plans[i]->y) fastsum_finalize_target_nodes(plans[i]); fastsum_finalize_kernel(plans[i]); - nfft_free(plans[i]); + NFFT(free)(plans[i]); plans[i] = 0; return; } else if (strcmp(cmd,"get_x") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_x."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_x."); const int i = nfft_mex_get_int(prhs[1],"fastsum: Input argument plan must be a scalar."); check_plan(i); check_plan_source_nodes(i); @@ -508,7 +519,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"get_alpha") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_alpha."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_alpha."); const int i = nfft_mex_get_int(prhs[1],"fastsum: Input argument plan must be a scalar."); check_plan(i); check_plan_source_nodes(i); @@ -533,7 +544,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"get_y") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_y."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_y."); const int i = nfft_mex_get_int(prhs[1],"fastsum: Input argument plan must be a scalar."); check_plan(i); check_plan_target_nodes(i); @@ -552,7 +563,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"get_b") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_b."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_b."); const int i = nfft_mex_get_int(prhs[1],"fastsum: Input argument plan must be a scalar."); check_plan(i); const int d = plans[i]->d; @@ -576,7 +587,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"get_N_total") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_N_total."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_N_total."); const int i = nfft_mex_get_int(prhs[1],"fastsum: Input argument plan must be a scalar."); check_plan(i); plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL); @@ -587,7 +598,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"display") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for display."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for display."); { const int i = nfft_mex_get_int(prhs[1],"fastsum: Input argument plan must be a scalar."); check_plan(i); diff --git a/matlab/fastsum/simple_test.m b/matlab/fastsum/simple_test.m index f895960b..6ed15571 100644 --- a/matlab/fastsum/simple_test.m +++ b/matlab/fastsum/simple_test.m @@ -38,7 +38,10 @@ % 'cot' K(x) = cot(cx) % 'one_over_cube' K(x) = 1/x^3 % 'log_sin' K(x) = LOG(|SIN(cx)|) -% 'laplacian_rbf' K(x)=EXP(-|x|/c) +% 'laplacian_rbf' K(x) = EXP(-|x|/c) +% 'der_laplacian_rbf' K(x) = |x|/c EXP(-|x|/c) +% 'xx_gaussian' K(x) = x^2/c^2 EXP(-x^2/c^2) +% 'absx' K(x) = |x| %% Initialize parameters d = 2; % number of dimensions @@ -48,11 +51,11 @@ c = 1/sqrt(N); % kernel parameter p = 6; % degree of smoothness of regularization flags = 0; % flags (could be EXACT_NEARFIELD or NEARFIELD_BOXES) -nn = 256; % bandwidth in frequency domain for NFFT -eps_I = p/nn; % inner boundary, nearfield radius -eps_B = max(1/16,p/nn); % outer boundary +n = 256; % bandwidth in frequency domain for NFFT +eps_I = p/n; % inner boundary, nearfield radius +eps_B = max(1/16,p/n); % outer boundary m = p; % window cut-off parameter for NFFT -nn_oversampled = 2*nn; % oversampled bandwidth in frequency domain for NFFT +nn_oversampled = 2*n; % oversampled bandwidth in frequency domain for NFFT %% random source nodes in circle of radius 0.25-eps_B/2 x = []; while size(x,1) < N @@ -75,14 +78,14 @@ %% Perform fastsum via class interface fprintf('fastsum d=%d, N=%d source nodes, M=%d target nodes,\n', d, N, M); fprintf(' kernel=%s, parameter c=%.3g, fastsum flags=%d,\n', kernel, c, flags); -fprintf(' NFFT bandwidth nn=%d, regularization smoothness p=%d,\n', nn, p); +fprintf(' NFFT bandwidth n=%d, regularization smoothness p=%d,\n', n, p); fprintf(' inner regularization eps_I=%.6g,\n', eps_I); fprintf(' outer regularization eps_B=%.6g,\n', eps_B); fprintf(' nn_oversampled=%d, NFFT window cut-off m=%d\n', nn_oversampled, m); fprintf('number of threads: %d\n', fastsum_get_num_threads); tic -fastsum_instance = fastsum(d,kernel,c,flags,nn,p,eps_I,eps_B,nn_oversampled,m); +fastsum_instance = fastsum(d,kernel,c,flags,n,p,eps_I,eps_B,nn_oversampled,m); time_init = toc; tic diff --git a/matlab/fastsum/test_fastsum.m b/matlab/fastsum/test_fastsum.m index 72558c9f..ab1aff68 100644 --- a/matlab/fastsum/test_fastsum.m +++ b/matlab/fastsum/test_fastsum.m @@ -38,7 +38,10 @@ % 'cot' K(x) = cot(cx) % 'one_over_cube' K(x) = 1/x^3 % 'log_sin' K(x) = LOG(|SIN(cx)|) -% 'laplacian_rbf' K(x)=EXP(-|x|/c) +% 'laplacian_rbf' K(x) = EXP(-|x|/c) +% 'der_laplacian_rbf' K(x) = |x|/c EXP(-|x|/c) +% 'xx_gaussian' K(x) = x^2/c^2 EXP(-x^2/c^2) +% 'absx' K(x) = |x| %% Initialize parameters d = 2; % number of dimensions diff --git a/matlab/imex.h b/matlab/imex.h index e502c3df..0ea985e6 100644 --- a/matlab/imex.h +++ b/matlab/imex.h @@ -48,6 +48,16 @@ extern void nfft_mex_install_mem_hooks(void); int nfft_mex_get_int(const mxArray *p, const char *errmsg); double nfft_mex_get_double(const mxArray *p, const char *errmsg); +void nfft_mex_get_nm(const mxArray *prhs[], int *n, int *m); +void nfft_mex_get_nm_odd(const mxArray *prhs[], int *n, int *m); +void nfft_mex_get_n1n2m(const mxArray *prhs[], int *n1, int *n2, int *m); +void nfft_mex_get_n1n2m_odd(const mxArray *prhs[], int *n1, int *n2, int *m); +void nfft_mex_get_n1n2n3m(const mxArray *prhs[], int *n1, int *n2, int *n3, int *m); +void nfft_mex_get_n1n2n3m_odd(const mxArray *prhs[], int *n1, int *n2, int *n3, int *m); +void nfft_mex_check_nargs(const int nrhs, const int n, const char* errmsg); +int nfft_mex_set_num_threads_check(const int nrhs, const mxArray *prhs[], void **plans, const int plans_num_allocated); + + #ifdef MATLAB_ARGCHECKS #define DM(Y) Y #else diff --git a/matlab/infft1d/README b/matlab/infft1d/README index 45f178f8..e2075feb 100644 --- a/matlab/infft1d/README +++ b/matlab/infft1d/README @@ -134,3 +134,10 @@ References: [2] M. Kircheis, D. Potts. Direct inversion of the nonequispaced fast Fourier transform. arXiv:1811.05335, 2018 https://www.tu-chemnitz.de/~kimel/paper/infft_1d.pdf + + +------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------ +Octave: + + The iNFFT is written for Matlab. It is not compatible with GNU Octave (as of Octave version 5). diff --git a/matlab/infft1d/infft.m b/matlab/infft1d/infft.m index ba023888..5a35f071 100644 --- a/matlab/infft1d/infft.m +++ b/matlab/infft1d/infft.m @@ -1184,6 +1184,9 @@ function adjoint_rectangular(h) e1(1) = 1; en(n) = 1; + % Prevent warning for tiny difference between r(1) and c(1) + r(1) = c(1); + % Compute the relevant vectors x = toeplitz(c,r)\e1; y = toeplitz(c,r)\en; diff --git a/matlab/malloc.c b/matlab/malloc.c index 4909f05f..31dd2432 100644 --- a/matlab/malloc.c +++ b/matlab/malloc.c @@ -19,6 +19,7 @@ #include "config.h" #include "imex.h" #include "nfft3.h" +#include "infft.h" /** Replacement for fftw_malloc in mex files */ void *nfft_mex_malloc(size_t n) @@ -55,6 +56,6 @@ void nfft_mex_free(void *p) /** install hooks. */ void nfft_mex_install_mem_hooks(void) { - nfft_malloc_hook = nfft_mex_malloc; - nfft_free_hook = nfft_mex_free; + X(malloc_hook) = nfft_mex_malloc; + X(free_hook) = nfft_mex_free; } diff --git a/matlab/nfct/Makefile.am b/matlab/nfct/Makefile.am index 1ab0d265..4a8489c5 100644 --- a/matlab/nfct/Makefile.am +++ b/matlab/nfct/Makefile.am @@ -8,7 +8,7 @@ nfctmatlabdir = $(datadir)/nfft/matlab/nfct lib_LTLIBRARIES = libnfct.la libnfct_la_SOURCES = nfctmex.c -libnfct_la_LIBADD = $(top_builddir)/libnfft3_matlab.la @matlab_fftw3_LIBS@ $(top_builddir)/matlab/libmatlab.la $(matlab_LIBS) +libnfct_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_matlab.la @matlab_fftw3_LIBS@ $(top_builddir)/matlab/libmatlab.la $(matlab_LIBS) libnfct_la_LDFLAGS = -no-undefined -module -shared -shrext $(matlab_mexext) -avoid-version @matlab_fftw3_LDFLAGS@ $(matlab_LDFLAGS) @@ -23,7 +23,7 @@ dist_nfctmatlab_DATA = Contents.m FFTW_ESTIMATE.m FFTW_MEASURE.m \ nfct_get_num_threads.m nfct_get_x.m nfct_init_1d.m nfct_init_2d.m \ nfct_init_3d.m nfct_init_guru.m nfct_set_f.m nfct_set_f_hat.m \ nfct_set_x.m nfct_trafo.m simple_test.m test_nfct1d.m test_nfct2d.m \ - test_nfct3d.m + test_nfct3d.m nfct_set_num_threads.m # target all-am builds .libs/libnfct@matlab_mexext@ nfctmex@matlab_mexext@: all-am diff --git a/matlab/nfct/nfct.m b/matlab/nfct/nfct.m index d6309d78..7a24ae6e 100644 --- a/matlab/nfct/nfct.m +++ b/matlab/nfct/nfct.m @@ -1,4 +1,4 @@ -% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% Copyright (c) 2002, 2020 Jens Keiner, Stefan Kunis, Daniel Potts % % This program 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 @@ -155,24 +155,24 @@ function delete(h) end %function function set.N1(h,N) - if( isempty(N) || ~isnumeric(N) || ~isreal(N) || (mod(N,2)~=0) || ~(N>0)) - error('The number of the nodes N1 has to be an even positive integer.'); + if( isempty(N) || ~isnumeric(N) || ~isreal(N) || ~(N>0)) + error('The number of the nodes N1 has to be a positive integer.'); else h.N1=N; end %if end %function function set.N2(h,N) - if( isempty(N) || ~isnumeric(N) || ~isreal(N) || (mod(N,2)~=0) || ~(N>0)) - error('The number of the nodes N2 has to be an even positive integer.'); + if( isempty(N) || ~isnumeric(N) || ~isreal(N) || ~(N>0)) + error('The number of the nodes N2 has to be a positive integer.'); else h.N2=N; end %if end %function function set.N3(h,N) - if( isempty(N) || ~isnumeric(N) || ~isreal(N) || (mod(N,2)~=0) || ~(N>0)) - error('The number of the nodes N2 has to be an even positive integer.'); + if( isempty(N) || ~isnumeric(N) || ~isreal(N) || ~(N>0)) + error('The number of the nodes N2 has to be a positive integer.'); else h.N3=N; end %if diff --git a/matlab/nfct/nfct_set_num_threads.m b/matlab/nfct/nfct_set_num_threads.m new file mode 100644 index 00000000..23b99df4 --- /dev/null +++ b/matlab/nfct/nfct_set_num_threads.m @@ -0,0 +1,23 @@ +%NFFT_GET_NUM_THREADS Get number of threads (at most) used for computation +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% +% This program 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. +% +% 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., 51 +% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +function nthreads_old = nfct_set_num_threads(nthreads_new) + +nthreads_old = nfctmex('get_num_threads'); +nfctmex('set_num_threads', nthreads_new); + diff --git a/matlab/nfct/nfctmex.c b/matlab/nfct/nfctmex.c index e0bd8b25..9099a904 100644 --- a/matlab/nfct/nfctmex.c +++ b/matlab/nfct/nfctmex.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + * Copyright (c) 2002, 2020 Jens Keiner, Stefan Kunis, Daniel Potts * * This program 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 @@ -34,63 +34,10 @@ #define NFCT_MEX_FIRST_CALL (1U << 0) static unsigned short gflags = NFCT_MEX_FIRST_CALL; -static nfct_plan** plans = NULL; /* plans */ +static NFCT(plan)** plans = NULL; /* plans */ static unsigned int plans_num_allocated = 0; static char cmd[CMD_LEN_MAX]; -static inline void get_nm(const mxArray *prhs[], int *n, int *m) -{ - int t = nfft_mex_get_int(prhs[1],"nfct: Input argument N must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfct: Input argument N must be non-negative and multiple of two.");) - *n = t; - t = nfft_mex_get_int(prhs[2],"nfct: Input argument M must be a scalar."); - DM(if (t < 1) - mexErrMsgTxt("nfct: Input argument M must be positive.");) - *m = t; -} - -static inline void get_n1n2m(const mxArray *prhs[], int *n1, int *n2, int *m) -{ - int t = nfft_mex_get_int(prhs[1],"nfct: Input argument N1 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfct: Input argument N1 must be non-negative and even.");) - *n1 = t; - - t = nfft_mex_get_int(prhs[2],"nfct: Input argument N2 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfct: Input argument N2 must be non-negative and even.");) - *n2 = t; - - t = nfft_mex_get_int(prhs[3],"nfct: Input argument M must be a scalar."); - DM(if (t < 1) - mexErrMsgTxt("nfct: Input argument M must be positive.");) - *m = t; -} - -static inline void get_n1n2n3m(const mxArray *prhs[], int *n1, int *n2, int *n3, int *m) -{ - int t = nfft_mex_get_int(prhs[1],"nfct: Input argument N1 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfct: Input argument N1 must be non-negative and even.");) - *n1 = t; - - t = nfft_mex_get_int(prhs[2],"nfct: Input argument N2 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfct: Input argument N2 must be non-negative and even.");) - *n2 = t; - - t = nfft_mex_get_int(prhs[3],"nfct: Input argument N3 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfct: Input argument N3 must be non-negative and even.");) - *n3 = t; - - t = nfft_mex_get_int(prhs[4],"nfct: Input argument M must be a scalar."); - DM(if (t < 1) - mexErrMsgTxt("nfct: Input argument M must be positive.");) - *m = t; -} - static inline void get_guru(const mxArray *prhs[], int d, int *N, int *M, int *n, int *m, unsigned int *f1, unsigned int *f2) { /** NO ERROR HANDLING !!*/ @@ -111,12 +58,6 @@ static inline void get_guru(const mxArray *prhs[], int d, int *N, int *M, int *n *f2 = mxGetScalar(mxGetCell(prhs[1], (unsigned int)(2*d+4))); } -static inline void check_nargs(const int nrhs, const int n, const char* errmsg) -{ - DM(if (nrhs != n) - mexErrMsgTxt(errmsg);) -} - static inline void check_plan(int i) { DM(if (i < 0 || i >= plans_num_allocated || plans[i] == 0) @@ -134,17 +75,17 @@ static inline int mkplan(void) if (plans_num_allocated >= INT_MAX - PLANS_START - 1) mexErrMsgTxt("nfct: Too many plans already allocated."); - nfct_plan** plans_old = plans; - plans = nfft_malloc((plans_num_allocated+PLANS_START)*sizeof(nfct_plan*)); + NFCT(plan)** plans_old = plans; + plans = X(malloc)((plans_num_allocated+PLANS_START)*sizeof(NFCT(plan)*)); for (l = 0; l < plans_num_allocated; l++) plans[l] = plans_old[l]; for (l = plans_num_allocated; l < plans_num_allocated+PLANS_START; l++) plans[l] = 0; if (plans_num_allocated > 0) - nfft_free(plans_old); + X(free)(plans_old); plans_num_allocated += PLANS_START; } - plans[i] = nfft_malloc(sizeof(nfct_plan)); + plans[i] = X(malloc)(sizeof(NFCT(plan))); return i; } @@ -158,14 +99,14 @@ static void cleanup(void) for (i = 0; i < plans_num_allocated; i++) if (plans[i]) { - nfct_finalize(plans[i]); - nfft_free(plans[i]); + NFCT(finalize)(plans[i]); + X(free)(plans[i]); plans[i] = 0; } if (plans_num_allocated > 0) { - nfft_free(plans); + X(free)(plans); plans = NULL; plans_num_allocated = 0; } @@ -199,39 +140,39 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) if (strcmp(cmd,"init_1d") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for init."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for init."); { int i; int n, m; - get_nm(prhs,&n,&m); + nfft_mex_get_nm_odd(prhs,&n,&m); i = mkplan(); - nfct_init_1d(plans[i],n,m); + NFCT(init_1d)(plans[i],n,m); plhs[0] = mxCreateDoubleScalar((double)i); } return; } else if (strcmp(cmd,"init_2d") == 0) { - check_nargs(nrhs,4,"Wrong number of arguments for init."); + nfft_mex_check_nargs(nrhs,4,"Wrong number of arguments for init."); { int i; int n1, n2, m; - get_n1n2m(prhs,&n1,&n2,&m); + nfft_mex_get_n1n2m_odd(prhs,&n1,&n2,&m); i = mkplan(); - nfct_init_2d(plans[i],n1,n2,m); + NFCT(init_2d)(plans[i],n1,n2,m); plhs[0] = mxCreateDoubleScalar((double)i); } return; } else if (strcmp(cmd,"init_3d") == 0) { - check_nargs(nrhs,5,"Wrong number of arguments for init."); + nfft_mex_check_nargs(nrhs,5,"Wrong number of arguments for init."); { int i; int n1, n2, n3, m; - get_n1n2n3m(prhs,&n1,&n2,&n3,&m); + nfft_mex_get_n1n2n3m_odd(prhs,&n1,&n2,&n3,&m); i = mkplan(); - nfct_init_3d(plans[i],n1,n2,n3,m); + NFCT(init_3d)(plans[i],n1,n2,n3,m); plhs[0] = mxCreateDoubleScalar((double)i); } return; @@ -250,7 +191,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) get_guru(prhs,d,N,&M,n,&m,&f1,&f2); i = mkplan(); - nfct_init_guru(plans[i],d,N,M,n,m, + NFCT(init_guru)(plans[i],d,N,M,n,m, f1 | MALLOC_X | MALLOC_F | MALLOC_F_HAT | FFTW_INIT, f2); @@ -261,7 +202,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"precompute_psi") == 0) { mexErrMsgTxt("not implemented, precompute_psi is already called in set_x"); -/* check_nargs(nrhs,2,"Wrong number of arguments for precompute_psi."); +/* nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for precompute_psi."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); check_plan(i); @@ -272,59 +213,59 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"trafo") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); check_plan(i); - nfct_trafo(plans[i]); + NFCT(trafo)(plans[i]); } return; } else if (strcmp(cmd,"adjoint") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); check_plan(i); - nfct_adjoint(plans[i]); + NFCT(adjoint)(plans[i]); } return; } else if (strcmp(cmd,"finalize") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for finalize."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for finalize."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); check_plan(i); - nfct_finalize(plans[i]); - nfft_free(plans[i]); + NFCT(finalize)(plans[i]); + X(free)(plans[i]); plans[i] = 0; } return; } else if (strcmp(cmd,"trafo_direct") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo direct."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo direct."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); check_plan(i); - nfct_trafo_direct(plans[i]); + NFCT(trafo_direct)(plans[i]); } return; } else if (strcmp(cmd,"adjoint_direct") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for adjoint direct."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for adjoint direct."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); check_plan(i); - nfct_adjoint_direct(plans[i]); + NFCT(adjoint_direct)(plans[i]); } return; } else if (strcmp(cmd,"get_x") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_x."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_x."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); int m, d; @@ -344,7 +285,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_f") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); int m; @@ -364,7 +305,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_f_hat") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); int n; @@ -384,7 +325,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_x") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_x."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_x."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); int m, d; @@ -406,13 +347,13 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) plans[i]->x[d*j+t] = x[d*j+t]; } } - nfct_precompute_one_psi(plans[i]); + NFCT(precompute_one_psi)(plans[i]); } return; } else if (strcmp(cmd,"set_f") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); int m; @@ -433,7 +374,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_f_hat") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); int n; @@ -456,7 +397,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"display") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for set_f_hat_linear."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for set_f_hat_linear."); { int i = nfft_mex_get_int(prhs[1],"nfct: Input argument plan must be a scalar."); mexPrintf("Plan %d\n",i); @@ -474,12 +415,23 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if(strcmp(cmd,"get_num_threads") == 0) { - int32_t nthreads = X(get_num_threads)(); - plhs[0] = mxCreateNumericMatrix(1, 1, mxINT32_CLASS, mxREAL); - *((int32_t *)mxGetData(plhs[0])) = nthreads; + INT nthreads = X(get_num_threads)(); + plhs[0] = mxCreateDoubleScalar((double) nthreads); + return; + } + else if(strcmp(cmd,"set_num_threads") == 0) + { + int nthreads_new = nfft_mex_set_num_threads_check(nrhs, prhs, (void **) plans, plans_num_allocated); + X(set_num_threads)(nthreads_new); return; } + else if(strcmp(cmd,"has_threads_enabled") == 0) + { + INT threads_enabled = X(has_threads_enabled)(); + plhs[0] = mxCreateDoubleScalar((double) threads_enabled); + return; + } else mexErrMsgTxt("nfct: Unknown command.\n"); } diff --git a/matlab/nfct/test_nfct1d.m b/matlab/nfct/test_nfct1d.m index e7ddb874..8916b1a1 100644 --- a/matlab/nfct/test_nfct1d.m +++ b/matlab/nfct/test_nfct1d.m @@ -1,4 +1,4 @@ -% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% Copyright (c) 2002, 2020 Jens Keiner, Stefan Kunis, Daniel Potts % % This program 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 @@ -17,8 +17,8 @@ % Test script of class nfct for spatial dimension d=1. clear all; -M=16; % number of nodes -N=24; % number of Fourier coefficients in first direction +M=19; % number of nodes +N=43; % number of Fourier coefficients in first direction x=0.5*rand(M,1); %nodes diff --git a/matlab/nfft/Makefile.am b/matlab/nfft/Makefile.am index d2213913..7aac7725 100644 --- a/matlab/nfft/Makefile.am +++ b/matlab/nfft/Makefile.am @@ -8,7 +8,7 @@ nfftmatlabdir = $(datadir)/nfft/matlab/nfft lib_LTLIBRARIES = libnfft.la libnfft_la_SOURCES = nfftmex.c -libnfft_la_LIBADD = $(top_builddir)/libnfft3_matlab.la @matlab_fftw3_LIBS@ $(top_builddir)/matlab/libmatlab.la $(matlab_LIBS) +libnfft_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_matlab.la @matlab_fftw3_LIBS@ $(top_builddir)/matlab/libmatlab.la $(matlab_LIBS) libnfft_la_LDFLAGS = -no-undefined -module -shared -shrext $(matlab_mexext) -avoid-version @matlab_fftw3_LDFLAGS@ $(matlab_LDFLAGS) @@ -22,7 +22,7 @@ dist_nfftmatlab_DATA = FFT_OUT_OF_PLACE.m FFTW_ESTIMATE.m FFTW_MEASURE.m FG_PSI. nfft_init_3d.m nfft_init_guru.m nfft_precompute_psi.m nfft_set_f.m nfft_set_f_hat.m nfft_set_x.m nfft_trafo.m \ PRE_FG_PSI.m PRE_FULL_PSI.m PRE_LIN_PSI.m PRE_PHI_HUT.m PRE_PSI.m simple_test.m \ nfft_get_num_threads.m nfft.m test_nfft1d.m test_nfft2d.m test_nfft3d.m test_nfft4d.m \ - NFFT_OMP_BLOCKWISE_ADJOINT.m + NFFT_OMP_BLOCKWISE_ADJOINT.m nfft_set_num_threads.m # target all-am builds .libs/libnfft@matlab_mexext@ nfftmex@matlab_mexext@: all-am diff --git a/matlab/nfft/nfft.m b/matlab/nfft/nfft.m index 7c638927..daeabf40 100644 --- a/matlab/nfft/nfft.m +++ b/matlab/nfft/nfft.m @@ -220,7 +220,7 @@ function delete(h) if h.d > 1 fhat = reshape(fhat, h.N); fhat = permute(fhat, h.d:-1:1); - fhat = fhat(:); + fhat = reshape(fhat, prod(h.N), 1); end nfftmex('set_f_hat',h.plan,fhat); @@ -262,7 +262,7 @@ function delete(h) if h.d > 1 fhat = reshape(fhat, h.N(end:-1:1)); fhat = permute(fhat, h.d:-1:1); - fhat = fhat(:); + fhat = reshape(fhat, prod(h.N), 1); end else fhat=[]; @@ -359,7 +359,36 @@ function nfft_adjoint(h) end %if end %function +function nfft_solver(h,iterations,varargin) +% Inverse NFFT +% +% nfft_solver(h,iterations) +% nfft_solver(h,iterations,flags) +% +% INPUT +% h object of class type nfft +% iterations number of iterations +% flags solver flags + if ~isempty(varargin) + flags = varargin{1}; + else + flags = 0; + end % if + + if(~h.fhat_is_set) + h.fhat = zeros(prod(h.N),1); + end %if + + if(~h.precomputations_done) + error('Before doing an inverse NFFT transform you have to set nodes x.'); + elseif(~h.f_is_set) + error('Before doing an inverse NFFT transform you have to set samples in f.'); + else + nfftmex('solver',h.plan,iterations,flags); + h.fhat_is_set=true; + end %if +end %function + end %methods end %classdef - diff --git a/matlab/nfft/nfft_set_num_threads.m b/matlab/nfft/nfft_set_num_threads.m new file mode 100644 index 00000000..f576743d --- /dev/null +++ b/matlab/nfft/nfft_set_num_threads.m @@ -0,0 +1,23 @@ +%NFFT_GET_NUM_THREADS Get number of threads (at most) used for computation +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% +% This program 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. +% +% 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., 51 +% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +function nthreads_old = nfft_set_num_threads(nthreads_new) + +nthreads_old = nfftmex('get_num_threads'); +nfftmex('set_num_threads', nthreads_new); + diff --git a/matlab/nfft/nfftmex.c b/matlab/nfft/nfftmex.c index 80c92503..b6d14d15 100644 --- a/matlab/nfft/nfftmex.c +++ b/matlab/nfft/nfftmex.c @@ -34,63 +34,10 @@ #define NFFT_MEX_FIRST_CALL (1U << 0) static unsigned short gflags = NFFT_MEX_FIRST_CALL; -static nfft_plan** plans = NULL; /* plans */ +static X(plan)** plans = NULL; /* plans */ static unsigned int plans_num_allocated = 0; static char cmd[CMD_LEN_MAX]; -static inline void get_nm(const mxArray *prhs[], int *n, int *m) -{ - int t = nfft_mex_get_int(prhs[1],"nfft: Input argument N must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfft: Input argument N must be non-negative and multiple of two.");) - *n = t; - t = nfft_mex_get_int(prhs[2],"nfft: Input argument M must be a scalar."); - DM(if (t < 1) - mexErrMsgTxt("nfft: Input argument M must be positive.");) - *m = t; -} - -static inline void get_n1n2m(const mxArray *prhs[], int *n1, int *n2, int *m) -{ - int t = nfft_mex_get_int(prhs[1],"nfft: Input argument N1 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfft: Input argument N1 must be non-negative and even.");) - *n1 = t; - - t = nfft_mex_get_int(prhs[2],"nfft: Input argument N2 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfft: Input argument N2 must be non-negative and even.");) - *n2 = t; - - t = nfft_mex_get_int(prhs[3],"nfft: Input argument M must be a scalar."); - DM(if (t < 1) - mexErrMsgTxt("nfft: Input argument M must be positive.");) - *m = t; -} - -static inline void get_n1n2n3m(const mxArray *prhs[], int *n1, int *n2, int *n3, int *m) -{ - int t = nfft_mex_get_int(prhs[1],"nfft: Input argument N1 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfft: Input argument N1 must be non-negative and even.");) - *n1 = t; - - t = nfft_mex_get_int(prhs[2],"nfft: Input argument N2 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfft: Input argument N2 must be non-negative and even.");) - *n2 = t; - - t = nfft_mex_get_int(prhs[3],"nfft: Input argument N3 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfft: Input argument N3 must be non-negative and even.");) - *n3 = t; - - t = nfft_mex_get_int(prhs[4],"nfft: Input argument M must be a scalar."); - DM(if (t < 1) - mexErrMsgTxt("nfft: Input argument M must be positive.");) - *m = t; -} - static inline void get_guru(const mxArray *prhs[], int d, int *N, int *M, int *n, int *m, unsigned int *f1, unsigned int *f2) { DM(if (mxGetNumberOfElements(prhs[1]) != 2*d+5) @@ -121,12 +68,6 @@ static inline void get_guru(const mxArray *prhs[], int d, int *N, int *M, int *n *f2 = mxGetScalar(mxGetCell(prhs[1], (unsigned int)(2*d+4))); } -static inline void check_nargs(const int nrhs, const int n, const char* errmsg) -{ - DM(if (nrhs != n) - mexErrMsgTxt(errmsg);) -} - static inline void check_plan(int i) { DM(if (i < 0 || i >= plans_num_allocated || plans[i] == 0) @@ -144,17 +85,17 @@ static inline int mkplan(void) if (plans_num_allocated >= INT_MAX - PLANS_START - 1) mexErrMsgTxt("nfft: Too many plans already allocated."); - nfft_plan** plans_old = plans; - plans = nfft_malloc((plans_num_allocated+PLANS_START)*sizeof(nfft_plan*)); + X(plan)** plans_old = plans; + plans = X(malloc)((plans_num_allocated+PLANS_START)*sizeof(nfft_plan*)); for (l = 0; l < plans_num_allocated; l++) plans[l] = plans_old[l]; for (l = plans_num_allocated; l < plans_num_allocated+PLANS_START; l++) plans[l] = 0; if (plans_num_allocated > 0) - nfft_free(plans_old); + X(free)(plans_old); plans_num_allocated += PLANS_START; } - plans[i] = nfft_malloc(sizeof(nfft_plan)); + plans[i] = X(malloc)(sizeof(nfft_plan)); return i; } @@ -168,14 +109,14 @@ static void cleanup(void) for (i = 0; i < plans_num_allocated; i++) if (plans[i]) { - nfft_finalize(plans[i]); - nfft_free(plans[i]); + X(finalize)(plans[i]); + X(free)(plans[i]); plans[i] = 0; } if (plans_num_allocated > 0) { - nfft_free(plans); + X(free)(plans); plans = NULL; plans_num_allocated = 0; } @@ -209,46 +150,46 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) if (strcmp(cmd,"init_1d") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for init_1d."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for init_1d."); { int i; int N, M; - get_nm(prhs,&N,&M); + nfft_mex_get_nm(prhs,&N,&M); i = mkplan(); - nfft_init_1d(plans[i],N,M); + X(init_1d)(plans[i],N,M); plhs[0] = mxCreateDoubleScalar((double)i); } return; } else if (strcmp(cmd,"init_2d") == 0) { - check_nargs(nrhs,4,"Wrong number of arguments for init_2d."); + nfft_mex_check_nargs(nrhs,4,"Wrong number of arguments for init_2d."); { int i; int N1, N2, M; - get_n1n2m(prhs,&N1,&N2,&M); + nfft_mex_get_n1n2m(prhs,&N1,&N2,&M); i = mkplan(); - nfft_init_2d(plans[i],N1,N2,M); + X(init_2d)(plans[i],N1,N2,M); plhs[0] = mxCreateDoubleScalar((double)i); } return; } else if (strcmp(cmd,"init_3d") == 0) { - check_nargs(nrhs,5,"Wrong number of arguments for init_3d."); + nfft_mex_check_nargs(nrhs,5,"Wrong number of arguments for init_3d."); { int i; int N1, N2, N3, M; - get_n1n2n3m(prhs,&N1,&N2,&N3,&M); + nfft_mex_get_n1n2n3m(prhs,&N1,&N2,&N3,&M); i = mkplan(); - nfft_init_3d(plans[i],N1,N2,N3,M); + X(init_3d)(plans[i],N1,N2,N3,M); plhs[0] = mxCreateDoubleScalar((double)i); } return; } else if (strcmp(cmd,"init") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for init."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for init."); { int i; int d, M; @@ -273,7 +214,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) DM(if (M < 1) mexErrMsgTxt("init: input argument NM must be a natural number");) i = mkplan(); - nfft_init(plans[i],d,N,M); + X(init)(plans[i],d,N,M); plhs[0] = mxCreateDoubleScalar((double)i); } } @@ -281,7 +222,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"init_guru") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for init_guru"); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for init_guru"); DM(if (!mxIsCell(prhs[1]) || mxGetNumberOfElements(prhs[1]) < 3) mexErrMsgTxt("init_guru: second argument must be a cell array of length 2*d+5");) @@ -299,7 +240,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) get_guru(prhs,d,N,&M,n,&m,&f1,&f2); int i = mkplan(); - nfft_init_guru(plans[i],d,N,M,n,m, + X(init_guru)(plans[i],d,N,M,n,m, f1 | MALLOC_X | MALLOC_F | MALLOC_F_HAT | FFTW_INIT, f2); @@ -309,102 +250,143 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"precompute_psi") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for precompute_one_psi."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for precompute_one_psi."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); check_plan(i); - nfft_precompute_one_psi(plans[i]); + X(precompute_one_psi)(plans[i]); } return; } else if (strcmp(cmd,"trafo") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); check_plan(i); - nfft_trafo(plans[i]); + X(trafo)(plans[i]); } return; } else if (strcmp(cmd,"adjoint") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); check_plan(i); - nfft_adjoint(plans[i]); + X(adjoint)(plans[i]); } return; } else if (strcmp(cmd,"finalize") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for finalize."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for finalize."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); check_plan(i); - nfft_finalize(plans[i]); - nfft_free(plans[i]); + X(finalize)(plans[i]); + X(free)(plans[i]); plans[i] = 0; } return; } else if (strcmp(cmd,"trafo_direct") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo direct."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo direct."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); check_plan(i); - nfft_trafo_direct(plans[i]); + X(trafo_direct)(plans[i]); } return; } else if (strcmp(cmd,"adjoint_direct") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for adjoint direct."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for adjoint direct."); + { + int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); + check_plan(i); + X(adjoint_direct)(plans[i]); + } + return; + } + else if (strcmp(cmd,"solver") == 0) + { + nfft_mex_check_nargs(nrhs,4,"Wrong number of arguments for solver."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); check_plan(i); - nfft_adjoint_direct(plans[i]); + unsigned iterations = nfft_mex_get_int(prhs[2],"nfft: Input argument iterations must be a scalar."); + unsigned flags = nfft_mex_get_int(prhs[3],"nfft: Input argument flags must be a scalar."); + if (flags == 0U) + flags = CGNR; + + SOLVER(plan_complex) ip; /**< plan for the inverse nfft */ + SOLVER(init_advanced_complex)(&ip, (NFFT(mv_plan_complex)*) plans[i], flags); + + for (int k=0; k < plans[i]->M_total; k++) + ip.y[k] = plans[i]->f[k]; + + for (int k = 0; k < plans[i]->N_total; k++) // copy initial guess + ip.f_hat_iter[k] = plans[i]->f_hat[k]; + + SOLVER(before_loop_complex)(&ip); + for (int l=0; l < iterations; l++) + SOLVER(loop_one_step_complex)(&ip); + for (int k=0; k < plans[i]->N_total; k++) + plans[i]->f_hat[k] = ip.f_hat_iter[k]; + SOLVER(finalize_complex)(&ip); } return; } else if (strcmp(cmd,"get_x") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_x."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_x."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); int m, d; check_plan(i); m = plans[i]->M_total; d = plans[i]->d; - plhs[0] = mxCreateDoubleMatrix((unsigned int)d, (unsigned int)m, mxREAL); + const mwSize dims[2] = {d, m}; +#if defined(NFFT_SINGLE) + plhs[0] = mxCreateNumericArray(2, dims, mxSINGLE_CLASS, mxREAL); + float *x = (float*)mxGetData(plhs[0]); +#else + plhs[0] = mxCreateNumericArray(2, dims, mxDOUBLE_CLASS, mxREAL); + double *x = (double*)mxGetData(plhs[0]); +#endif { - double *x = mxGetPr(plhs[0]); int j,t; for (j = 0; j < m; j++) - for (t = 0; t < d; t++) - x[d*j+t] = plans[i]->x[d*j+t]; + for (t = 0; t < d; t++) + x[d*j+t] = plans[i]->x[d*j+t]; } } return; } else if (strcmp(cmd,"get_f") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); int m; check_plan(i); m = plans[i]->M_total; - plhs[0] = mxCreateDoubleMatrix((unsigned int)m, 1, mxCOMPLEX); + const mwSize dims[2] = {m, 1}; +#if defined(NFFT_SINGLE) + plhs[0] = mxCreateNumericArray(2, dims, mxSINGLE_CLASS, mxCOMPLEX); + float *fr = (float*)mxGetData(plhs[0]), *fi = (float*)mxGetImagData(plhs[0]); +#else + plhs[0] = mxCreateNumericArray(2, dims, mxDOUBLE_CLASS, mxCOMPLEX); + double *fr = (double*)mxGetData(plhs[0]), *fi = (double*)mxGetImagData(plhs[0]); +#endif { - double *fr = mxGetPr(plhs[0]), *fi = mxGetPi(plhs[0]); int j; for (j = 0; j < m; j++) { - fr[j] = creal(plans[i]->f[j]); - fi[j] = cimag(plans[i]->f[j]); + fr[j] = CREAL(plans[i]->f[j]); + fi[j] = CIMAG(plans[i]->f[j]); } } } @@ -412,20 +394,26 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_f_hat") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); int n; check_plan(i); n = plans[i]->N_total; - plhs[0] = mxCreateDoubleMatrix((unsigned int)n, 1, mxCOMPLEX); + const mwSize dims[2] = {n, 1}; +#if defined(NFFT_SINGLE) + plhs[0] = mxCreateNumericArray(2, dims, mxSINGLE_CLASS, mxCOMPLEX); + float *f_hatr = (float*)mxGetData(plhs[0]), *f_hati = (float*)mxGetImagData(plhs[0]); +#else + plhs[0] = mxCreateNumericArray(2, dims, mxDOUBLE_CLASS, mxCOMPLEX); + double *f_hatr = (double*)mxGetData(plhs[0]), *f_hati = (double*)mxGetImagData(plhs[0]); +#endif { - double *f_hatr = mxGetPr(plhs[0]), *f_hati = mxGetPi(plhs[0]); int k; for (k = 0; k < n; k++) { - f_hatr[k] = creal(plans[i]->f_hat[k]); - f_hati[k] = cimag(plans[i]->f_hat[k]); + f_hatr[k] = CREAL(plans[i]->f_hat[k]); + f_hati[k] = CIMAG(plans[i]->f_hat[k]); } } } @@ -433,30 +421,39 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_x") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_x."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_x."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); int m, d; check_plan(i); m = plans[i]->M_total; d = plans[i]->d; - DM(if (!mxIsDouble(prhs[2]) || mxGetNumberOfDimensions(prhs[2]) > 2) + DM(if (mxGetNumberOfDimensions(prhs[2]) > 2) mexErrMsgTxt("Input argument x must be a d x M double array");) DM(if (mxGetM(prhs[2]) != (unsigned int)d || mxGetN(prhs[2]) != (unsigned int)m) mexErrMsgTxt("Input argument x must have correct size (d x M).");) + if (mxIsDouble(prhs[2])) { double *x = mxGetPr(prhs[2]); - int j,t; - for (j = 0; j < m; j++) - for (t = 0; t < d; t++) - plans[i]->x[d*j+t] = x[d*j+t]; + for (int j = 0; j < m; j++) + for (int t = 0; t < d; t++) + plans[i]->x[d*j+t] = x[d*j+t]; + } + else if (mxIsSingle(prhs[2])) + { + float *x = (float*)mxGetData(prhs[2]); + for (int j = 0; j < m; j++) + for (int t = 0; t < d; t++) + plans[i]->x[d*j+t] = x[d*j+t]; } + else + DM(mexErrMsgTxt("Input argument x must be a d x M double array");) } return; } else if (strcmp(cmd,"set_f") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); int m; @@ -464,73 +461,115 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) m = plans[i]->M_total; DM(if (mxGetM(prhs[2]) * mxGetN(prhs[2]) != (unsigned int)m) mexErrMsgTxt("Input argument f must have correct size.");) + if (mxIsDouble(prhs[2])) { double *fr = mxGetPr(prhs[2]), *fi = mxGetPi(prhs[2]); - int j; if (fi) - for (j = 0; j < m; j++) - plans[i]->f[j] = fr[j] + _Complex_I*fi[j]; + for (int j = 0; j < m; j++) + plans[i]->f[j] = fr[j] + I*fi[j]; + else + for (int j = 0; j < m; j++) + plans[i]->f[j] = fr[j]; + } + else if (mxIsSingle(prhs[2])) + { + float *fr = (float*)mxGetData(prhs[2]), *fi = (float*)mxGetImagData(prhs[2]); + if (fi) + for (int j = 0; j < m; j++) + plans[i]->f[j] = fr[j] + I*fi[j]; else - for (j = 0; j < m; j++) + for (int j = 0; j < m; j++) plans[i]->f[j] = fr[j]; } + else + DM(mexErrMsgTxt("Input argument f must be a double array");) } return; } else if (strcmp(cmd,"set_f_hat") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); int n; check_plan(i); n = plans[i]->N_total; - DM(if (!mxIsDouble(prhs[2])) - mexErrMsgTxt("Input argument f must be a double array");) DM(if ( mxGetM(prhs[2]) != (unsigned int)n || mxGetN(prhs[2]) != 1) - mexErrMsgTxt("Input argument f must have correct size.");) + mexErrMsgTxt("Input argument f_hat must have correct size.");) + if (mxIsDouble(prhs[2])) { double *f_hatr = mxGetPr(prhs[2]), *f_hati = mxGetPi(prhs[2]); - int k; if (f_hati) - for (k = 0; k < n; k++) - plans[i]->f_hat[k] = f_hatr[k] + _Complex_I*f_hati[k]; + for (int k = 0; k < n; k++) + plans[i]->f_hat[k] = f_hatr[k] + I*f_hati[k]; + else + for (int k = 0; k < n; k++) + plans[i]->f_hat[k] = f_hatr[k]; + } + else if (mxIsSingle(prhs[2])) + { + float *f_hatr = (float*)mxGetData(prhs[2]), *f_hati = (float*)mxGetImagData(prhs[2]); + if (f_hati) + for (int k = 0; k < n; k++) + plans[i]->f_hat[k] = f_hatr[k] + I*f_hati[k]; else - for (k = 0; k < n; k++) + for (int k = 0; k < n; k++) plans[i]->f_hat[k] = f_hatr[k]; } + else + DM(mexErrMsgTxt("Input argument f_hat must be a double array");) } return; } else if (strcmp(cmd,"display") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for set_f_hat_linear."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for set_f_hat_linear."); { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); mexPrintf("Plan %d\n",i); check_plan(i); - mexPrintf(" pointer: %p\n",plans[i]); - mexPrintf(" d: %d\n",plans[i]->d); - mexPrintf(" N_total: %d\n",plans[i]->N_total); - mexPrintf(" M_total: %d\n",plans[i]->M_total); - mexPrintf(" x: %p\n",plans[i]->x); - mexPrintf(" f: %p\n",plans[i]->f); - mexPrintf(" f_hat: %p\n",plans[i]->f_hat); - mexPrintf(" flags: %d\n",plans[i]->flags); + mexPrintf(" pointer: %p\n",plans[i]); + mexPrintf(" d: %d\n",plans[i]->d); + mexPrintf(" N_total: %d\n",plans[i]->N_total); + mexPrintf(" M_total: %d\n",plans[i]->M_total); + mexPrintf(" n[1]: %d\n",plans[i]->n[1]); + mexPrintf(" m: %d\n",plans[i]->m); + mexPrintf(" x: %p\n",plans[i]->x); + mexPrintf(" f: %p\n",plans[i]->f); + mexPrintf(" f_hat: %p\n",plans[i]->f_hat); + mexPrintf(" flags: %d\n",plans[i]->flags); + mexPrintf("fftw_flags: %d\n",plans[i]->fftw_flags); } return; } else if(strcmp(cmd,"get_num_threads") == 0) { - int32_t nthreads = X(get_num_threads)(); - plhs[0] = mxCreateNumericMatrix(1, 1, mxINT32_CLASS, mxREAL); - *((int32_t *)mxGetData(plhs[0])) = nthreads; + INT nthreads = X(get_num_threads)(); + plhs[0] = mxCreateDoubleScalar((double) nthreads); + return; + } + else if(strcmp(cmd,"set_num_threads") == 0) + { + int nthreads_new = nfft_mex_set_num_threads_check(nrhs, prhs, (void **) plans, plans_num_allocated); + X(set_num_threads)(nthreads_new); return; } + else if(strcmp(cmd,"has_threads_enabled") == 0) + { + INT threads_enabled = X(has_threads_enabled)(); + plhs[0] = mxCreateDoubleScalar((double) threads_enabled); + return; + } else if(strcmp(cmd,"get_default_window_cut_off_m") == 0) { plhs[0] = mxCreateDoubleScalar((double) WINDOW_HELP_ESTIMATE_m); + return; + } + else if(strcmp(cmd,"get_epsilon") == 0) + { + plhs[0] = mxCreateDoubleScalar((double) X(float_property)(NFFT_EPSILON)); + return; } else mexErrMsgTxt("nfft: Unknown command.\n"); diff --git a/matlab/nfft/simple_test_threads.m b/matlab/nfft/simple_test_threads.m new file mode 100644 index 00000000..480db197 --- /dev/null +++ b/matlab/nfft/simple_test_threads.m @@ -0,0 +1,66 @@ +%SIMPLE_TEST_THREADS Example program: Basic usage principles for the +%set_num_threads function +% +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% +% This program 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. +% +% 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., 51 +% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +clear all + +nthreads = nfft_get_num_threads(); + +% degree (bandwidth) +N = 32; + +% number of nodes +M = 10000; + +% nodes +x=rand(3,M)-0.5; + +% Fourier coefficients +f_hat = rand(N^3,1)+1i*rand(N^3,1); + +for threads = 1:nthreads + nfft_set_num_threads(threads); + + % Create plan. + plan = nfft_init_3d(N,N,N,M); + + % Set nodes. + nfft_set_x(plan,x); + + % node-dependent precomputation + nfft_precompute_psi(plan); + + % Set Fourier coefficients. + nfft_set_f_hat(plan,double(f_hat)); + + % transform + tic + nfft_trafo(plan); + t = toc; + + % function values + f = nfft_get_f(plan); + + % finalize plan + nfft_finalize(plan); + + fprintf('Threads:%2d, Time: %1.2e\n',threads,t); +end diff --git a/matlab/nfft/test_nfft1d_nufft.m b/matlab/nfft/test_nfft1d_nufft.m new file mode 100644 index 00000000..6dd31e98 --- /dev/null +++ b/matlab/nfft/test_nfft1d_nufft.m @@ -0,0 +1,104 @@ + +% Copyright (c) 2002, 2019 Jens Keiner, Stefan Kunis, Daniel Potts +% +% This program 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. +% +% 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., 51 +% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +% Test script of class nfft for spatial dimension d=1. +% Comparison with Matlab nufft implementation (Matlab 2020a+) +clear all; + +% Terminate the script to avoid errors when running in old Matlab or Octave. +% It would otherwise cause an error because nufft is not found in Matlab <=2019 +% or in Octave, which would stop the test sctipt. +if ~exist('nufft') + warning('Script stopped. The function "nufft" is only supperoted by Matlab 2020a or newer.') + return +end + +M=16000; % number of nodes +N=2^16; % number of Fourier coefficients in first direction + +x=rand(M,1)-0.5; %nodes + +% Initialisation +tic +plan=nfft(1,N,M); % create plan of class type nfft +%n=2^(ceil(log(N)/log(2))+1); +%plan=nfft(1,N,M,n,8,bitor(PRE_PHI_HUT,bitor(PRE_PSI,NFFT_OMP_BLOCKWISE_ADJOINT)),FFTW_MEASURE); % use of nfft_init_guru + +plan.x=x; % set nodes in plan and perform precomputations +fprintf('Time NFFT pre = %g sec\n',toc) + +% NFFT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +fhat=rand(N,1); % Fourier coefficients +fhatv=fhat(:); + +% Compute samples with NFFT +plan.fhat=fhatv; % set Fourier coefficients +tic +nfft_trafo(plan); % compute nonequispaced Fourier transform +fprintf('Time NFFT trafo = %g sec\n',toc) +f1=plan.f; % get samples + +% Compute samples direct +tic +k1=(-N/2:N/2-1).'; +f2=zeros(M,1); +for j=1:M + x1j=x(j,1); + f2(j)=sum( fhatv.*exp(-2*pi*1i*k1*x1j) ); +end %for +fprintf('Time direct = %g sec\n',toc) + +% Compare results +fprintf('Error nfft = %g\n',max(abs(f1-f2))) + +tic +ndft_trafo(plan); % compute nonequispaced Fourier transform +fprintf('Time NFFT_direct = %g sec\n',toc) + +%% Compare with Matlab nufft implementation (Matlab 2020a+) +tic +f3 = nufft(fhat,-N/2:(N/2-1),x); +fprintf('Time nufft = %g sec\n',toc) +fprintf('Error nufft = %g\n',max(abs(f1-f3))) + + +%% Adjoint NFFT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Computation with NFFT +tic +nfft_adjoint(plan); +fprintf('Time NFFT_adjoint = %g sec\n',toc) +fhat1=plan.fhat; + +% Direct computation +fhat2=zeros(N,1); +for j=1:N + k1j=k1(j); + fhat2(j)=sum( plan.f.*exp(2*pi*1i*k1j*x(:,1)) ); +end %for + +% Compare results +fprintf('Error nfft_adjoint = %g\n',max(abs(fhat1-fhat2))) + +% Compare with Matlab nufft implementation (Matlab 2020a+) +tic +fhat3 = flip(nufft(plan.f,x,(-N/2+1:(N/2)))); +% Use flip because Matlab does not recognize the points in the other way +% roud -(-N/2:(N/2-1))) as equispaced and would use a slower algorithm +fprintf('Time nufft adjoint = %g sec\n',toc) +fprintf('Error nufft adjoint = %g\n',max(abs(fhat2-fhat3))) diff --git a/matlab/nfft/test_nfft2d_nufft.m b/matlab/nfft/test_nfft2d_nufft.m new file mode 100644 index 00000000..e3293af1 --- /dev/null +++ b/matlab/nfft/test_nfft2d_nufft.m @@ -0,0 +1,98 @@ + +% Copyright (c) 2002, 2019 Jens Keiner, Stefan Kunis, Daniel Potts +% +% This program 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. +% +% 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., 51 +% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +% Test script of class nfft for spatial dimension d=2. +% Comparison with Matlab nufft implementation (Matlab 2020a+) +clear all; + +% Terminate the script to avoid errors when running in old Matlab or Octave. +% It would otherwise cause an error because nufft is not found in Matlab <=2019 +% or in Octave, which would stop the test sctipt. +if ~exist('nufft') + warning('Script stopped. The function "nufft" is only supperoted by Matlab 2020a or newer.') + return +end + +M=16000; % number of nodes +N1=128; % number of Fourier coefficients in first direction +N2=128; % number of Fourier coefficients in second direction +N=[N1;N2]; + +x=rand(M,2)-0.5; %nodes + +% Initialisation +tic +plan=nfft(2,N,M); % create plan of class type nfft +%n=2^(ceil(log(max(N))/log(2))+1); +%plan=nfft(2,N,M,n,n,8,bitor(PRE_PHI_HUT,bitor(PRE_PSI,NFFT_OMP_BLOCKWISE_ADJOINT)),FFTW_MEASURE); % use of nfft_init_guru + +plan.x=x; % set nodes in plan and perform precomputations +fprintf('Time NFFT pre = %g sec\n',toc) + +% NFFT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +fhat=rand(N1,N2); % Fourier coefficients +fhatv=fhat(:); + +% Compute samples with NFFT +plan.fhat=fhatv; % set Fourier coefficients +tic +nfft_trafo(plan); % compute nonequispaced Fourier transform +fprintf('Time NFFT trafo = %g sec\n',toc) +f1=plan.f; % get samples + +% Compute samples direct +k1=-N1/2:N1/2-1; +k2=-N2/2:N2/2-1; +[K1,K2]=ndgrid(k1,k2); +k=[K1(:) K2(:)]; +clear K1 K2; +f2=zeros(M,1); +for j=1:M + f2(j)=sum( fhatv.*exp(-2*pi*1i*(k*x(j,:).')) ); +end %for +fprintf('Time direct = %g sec\n',toc) + +% Compare results +fprintf('Error nfft vs direct = %g\n',max(abs(f1-f2))) + +tic +ndft_trafo(plan); % compute nonequispaced Fourier transform +fprintf('Time NFFT_direct = %g sec\n',toc) + +%% Compare with Matlab nufft implementation (Matlab 2020a+) +[y1,y2] = meshgrid(-N2/2:(N2/2-1),-N1/2:(N1/2-1)); +y = [y2(:) y1(:)]; +tic +f3 = nufftn(fhat,y,x); +fprintf('Time nufft = %g sec\n',toc) +fprintf('Error nufft = %g\n',max(abs(f1-f3))) + +%% Adjoint NFFT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Computation with NFFT +nfft_adjoint(plan); +fhat1=plan.fhat; + +% Direct computation +fhat2=zeros(N1*N2,1); +for j=1:N1*N2 + fhat2(j)=sum( plan.f.*exp(2*pi*1i*(x*k(j,:).')) ); +end %for + +% Compare results +fprintf('Error nfft_adjoint = %g\n',max(abs(fhat1-fhat2))) diff --git a/matlab/nfft/test_nfft4d.m b/matlab/nfft/test_nfft4d.m index c9e54e27..953d2fa2 100644 --- a/matlab/nfft/test_nfft4d.m +++ b/matlab/nfft/test_nfft4d.m @@ -43,7 +43,7 @@ plan.fhat=fhatv; % set Fourier coefficients tic nfft_trafo(plan); % compute nonequispaced Fourier transform -fprintf("Time nfft_trafo: %g sec\n",toc) +fprintf('Time nfft_trafo: %g sec\n',toc) f1=plan.f; % get samples % Compute samples direct @@ -59,7 +59,7 @@ for j=1:M f2(j)=sum( fhatv.*exp(-2*pi*1i*(k*x(j,:).')) ); end %for -fprintf("Time direct trafo: %g sec\n",toc) +fprintf('Time direct trafo: %g sec\n',toc) % Compare results fprintf('Maximum error of trafo = %g\n',max(abs(f1-f2))) @@ -69,7 +69,7 @@ % Computation with NFFT tic nfft_adjoint(plan); -fprintf("Time nfft_adjoint: %g sec\n",toc) +fprintf('Time nfft_adjoint: %g sec\n',toc) fhat1=plan.fhat; % Direct computation @@ -78,7 +78,7 @@ for j=1:prod(N) fhat2(j)=sum( plan.f.*exp(2*pi*1i*(x*k(j,:).')) ); end %for -fprintf("Time direct adjoint: %g sec\n",toc) +fprintf('Time direct adjoint: %g sec\n',toc) % Compare results fprintf('Maximum error of adjoint = %g\n',max(abs(fhat1-fhat2))) diff --git a/matlab/nfft/test_nfft5d.m b/matlab/nfft/test_nfft5d.m index 619650fa..4798dd6e 100644 --- a/matlab/nfft/test_nfft5d.m +++ b/matlab/nfft/test_nfft5d.m @@ -33,7 +33,7 @@ %plan=nfft(5,N,M,4*N,8); % create plan of class type nfft n=2.^(ceil(log(N)/log(2))+1); plan=nfft(5,N,M,n,8,bitor(PRE_PHI_HUT,bitor(PRE_PSI,NFFT_OMP_BLOCKWISE_ADJOINT)),FFTW_ESTIMATE); % use of nfft_init_guru -fprintf("Time nfft_init %g\n",toc) +fprintf('Time nfft_init %g\n',toc) plan.x=x; % set nodes in plan and perform precomputations @@ -46,7 +46,7 @@ plan.fhat=fhatv; % set Fourier coefficients tic nfft_trafo(plan); % compute nonequispaced Fourier transform -fprintf("Time nfft_trafo %g\n",toc) +fprintf('Time nfft_trafo %g\n',toc) f1=plan.f; % get samples % Compute samples direct @@ -64,7 +64,7 @@ xj=x(j,:); f2(j)=sum( fhatv.*exp(-2*pi*1i*(k*xj.')) ); end %for -fprintf("Time direct trafo %g\n",toc) +fprintf('Time direct trafo %g\n',toc) % Compare results fprintf('Maximum error of trafo = %g\n',max(abs(f1-f2))) @@ -74,7 +74,7 @@ % Computation with NFFT tic nfft_adjoint(plan); -fprintf("Time nfft_adjoint %g\n",toc) +fprintf('Time nfft_adjoint %g\n',toc) fhat1=plan.fhat; % Direct computation @@ -84,7 +84,7 @@ kj=k(j,:); fhat2(j)=sum( plan.f.*exp(2*pi*1i*(x*kj.')) ); end %for -fprintf("Time direct adjoint %g\n",toc) +fprintf('Time direct adjoint %g\n',toc) % Compare results fprintf('Maximum error of adjoint = %g\n',max(abs(fhat1-fhat2))) diff --git a/matlab/nfsft/Makefile.am b/matlab/nfsft/Makefile.am index 3147f3f9..9fe940ea 100644 --- a/matlab/nfsft/Makefile.am +++ b/matlab/nfsft/Makefile.am @@ -25,7 +25,8 @@ dist_nfsftmatlab_DATA = cc.m Contents.m f_hat_index.m ndsft_adjoint.m ndsft_traf NFSFT_PRESERVE_F_HAT.m nfsft_set_f_hat.m nfsft_set_f.m nfsft_set_x.m \ nfsft_trafo.m NFSFT_USE_DPT.m NFSFT_USE_NDFT.m gl.m lgwt.m simple_test.m \ nfsft_get_f_hat_linear.m nfsft_set_f_hat_linear.m projection.m nfsft.m test_nfsft.m \ - test_nfsft_equispaced.m nfsft_get_num_threads.m FPT_NO_FAST_ALGORITHM.m NFSFT_EQUISPACED.m + test_nfsft_equispaced.m nfsft_get_num_threads.m FPT_NO_FAST_ALGORITHM.m NFSFT_EQUISPACED.m \ + nfsft_set_num_threads.m # target all-am builds .libs/libnfsft@matlab_mexext@ nfsftmex@matlab_mexext@: all-am diff --git a/matlab/nfsft/nfsft.m b/matlab/nfsft/nfsft.m index c4364b94..c7e453c3 100644 --- a/matlab/nfsft/nfsft.m +++ b/matlab/nfsft/nfsft.m @@ -96,7 +96,7 @@ % Equispaced nodes are automatically set in nfsft_init if bitand(h.nfsft_flags,NFSFT_EQUISPACED) - h.M = (2*N+2) * (N+1); + h.M = (2*N+2) * (N+2); h.x_is_set=true; end end %function diff --git a/matlab/nfsft/nfsft_set_num_threads.m b/matlab/nfsft/nfsft_set_num_threads.m new file mode 100644 index 00000000..deb6ccfc --- /dev/null +++ b/matlab/nfsft/nfsft_set_num_threads.m @@ -0,0 +1,23 @@ +%NFFT_GET_NUM_THREADS Get number of threads (at most) used for computation +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% +% This program 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. +% +% 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., 51 +% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +function nthreads_old = nfsft_set_num_threads(nthreads_new) + +nthreads_old = nfsftmex('get_num_threads'); +nfsftmex('set_num_threads', nthreads_new); + diff --git a/matlab/nfsft/nfsftmex.c b/matlab/nfsft/nfsftmex.c index 70e82d85..3057c2f4 100644 --- a/matlab/nfsft/nfsftmex.c +++ b/matlab/nfsft/nfsftmex.c @@ -41,26 +41,13 @@ static int n_max = -1; /* maximum degree precomputed */ static double kappa_global; /* parameters of percompute */ static unsigned int nfsft_flags_global = 0U; static unsigned int fpt_flags_global = 0U; +static int nthreads_global = 1; static char cmd[CMD_LEN_MAX]; -static inline void get_nm(const mxArray *prhs[], int *n, int *m) -{ - int t = nfft_mex_get_int(prhs[1],"nfsft: Input argument N must be a scalar."); - DM(if (t < 0) - mexErrMsgTxt("nfsft: Input argument N must be non-negative."); - if (t > n_max) - mexErrMsgTxt("nfsft: Input argument N must be <= the degree from nfsft_precompute.");) - *n = t; - t = nfft_mex_get_int(prhs[2],"nfsft: Input argument M must be a scalar."); - DM(if (t < 1) - mexErrMsgTxt("nfsft: Input argument M must be positive.");) - *m = t; -} - static inline void get_nmf(const mxArray *prhs[], int *n, int *m, unsigned int *f) { - get_nm(prhs,n,m); + nfft_mex_get_nm_odd(prhs,n,m); *f = nfft_mex_get_int(prhs[3],"nfsft: Input argument flags must be a scalar."); } @@ -77,12 +64,6 @@ static inline void get_nmffc(const mxArray *prhs[], int *n, int *m, } } -static inline void check_nargs(const int nrhs, const int n, const char* errmsg) -{ - DM(if (nrhs != n) - mexErrMsgTxt(errmsg);) -} - static inline void check_plan(int i) { DM(if (i < 0 || i >= plans_num_allocated || plans[i] == 0) @@ -159,10 +140,8 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) * which otherwise crashes upon invocation of this mex function. */ mexEvalString("fft([1,2,3,4]);"); -/** Disabled for performance issues caused by non-thread-safe mxMalloc() - * and many calls of nfft_malloc in nfsft_precompute/fpt_precompute... - */ nfft_mex_install_mem_hooks(); + nthreads_global = X(get_num_threads)(); mexAtExit(cleanup); gflags &= ~NFSFT_MEX_FIRST_CALL; @@ -180,11 +159,11 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) if (strcmp(cmd,"init") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for init."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for init."); { int i; int n, m; - get_nm(prhs,&n,&m); + nfft_mex_get_nm_odd(prhs,&n,&m); i = mkplan(); nfsft_init(plans[i],n,m); init_values_zero(plans[i]); @@ -194,7 +173,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"init_advanced") == 0) { - check_nargs(nrhs,4,"Wrong number of arguments for init_advanced."); + nfft_mex_check_nargs(nrhs,4,"Wrong number of arguments for init_advanced."); { int i; int n, m; @@ -210,7 +189,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"init_guru") == 0) { - check_nargs(nrhs,6,"Wrong number of arguments for init_guru."); + nfft_mex_check_nargs(nrhs,6,"Wrong number of arguments for init_guru."); { int i; int n, m, c; @@ -226,13 +205,13 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"precompute") == 0) { - check_nargs(nrhs,5,"Wrong number of arguments for precompute."); + nfft_mex_check_nargs(nrhs,5,"Wrong number of arguments for precompute."); { int n = nfft_mex_get_int(prhs[1],"nfsft: Input argument n must be a scalar."); double k = nfft_mex_get_double(prhs[2],"nfsft: Input argument kappa must be a scalar."); unsigned int f = nfft_mex_get_int(prhs[3],"nfsft: Input argument flags must be a scalar."); unsigned int f2 = nfft_mex_get_int(prhs[4],"nfsft: Input argument flags2 must be a scalar."); - if ((n_max < n) || (k != kappa_global) || (f != nfsft_flags_global) || (f2 != fpt_flags_global)) + if ((n_max < n) || (k != kappa_global) || (f != nfsft_flags_global) || (f2 != fpt_flags_global) || (nthreads_global != X(get_num_threads)())) { if (gflags & NFSFT_MEX_PRECOMPUTED) nfsft_forget(); @@ -249,7 +228,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"forget") == 0) { - check_nargs(nrhs,1,"Wrong number of arguments for forget."); + nfft_mex_check_nargs(nrhs,1,"Wrong number of arguments for forget."); nfsft_forget(); n_max = -1; gflags &= ~NFSFT_MEX_PRECOMPUTED; @@ -257,7 +236,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"trafo") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -267,7 +246,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"adjoint") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -277,7 +256,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"finalize") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for finalize."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for finalize."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -295,7 +274,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"trafo_direct") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo direct."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo direct."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -305,7 +284,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"adjoint_direct") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for adjoint direct."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for adjoint direct."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -315,7 +294,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_x") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_x."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_x."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -337,7 +316,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_f") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -357,7 +336,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_f_hat") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -378,7 +357,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_f_hat_linear") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat_linear."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat_linear."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -399,7 +378,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_x") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_x."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_x."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -425,7 +404,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_f") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -447,7 +426,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_f_hat") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -476,7 +455,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_f_hat_linear") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat_linear."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat_linear."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -504,7 +483,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"display") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for set_f_hat_linear."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for set_f_hat_linear."); { int i = nfft_mex_get_int(prhs[1],"nfsft: Input argument plan must be a scalar."); check_plan(i); @@ -522,12 +501,26 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if(strcmp(cmd,"get_num_threads") == 0) { - int32_t nthreads = X(get_num_threads)(); - plhs[0] = mxCreateNumericMatrix(1, 1, mxINT32_CLASS, mxREAL); - *((int32_t *)mxGetData(plhs[0])) = nthreads; + INT nthreads = X(get_num_threads)(); + plhs[0] = mxCreateDoubleScalar((double) nthreads); + return; + } + else if(strcmp(cmd,"set_num_threads") == 0) + { + int nthreads_new = nfft_mex_set_num_threads_check(nrhs, prhs, (void **) plans, plans_num_allocated); + DM(if ((gflags & NFSFT_MEX_PRECOMPUTED) && (nthreads_new != nthreads_global)) + mexWarnMsgIdAndTxt("nfft:set_num_threads:fptAllocated","New number of threads may not affect the FPT step unless you re-run nfsft_precompute.");) + X(set_num_threads)(nthreads_new); + nthreads_global = nthreads_new; return; } + else if(strcmp(cmd,"has_threads_enabled") == 0) + { + INT threads_enabled = X(has_threads_enabled)(); + plhs[0] = mxCreateDoubleScalar((double) threads_enabled); + return; + } else mexErrMsgTxt("nfsft: Unknown command.\n"); } diff --git a/matlab/nfsft/simple_test.m b/matlab/nfsft/simple_test.m index ade6474f..31ac2517 100644 --- a/matlab/nfsft/simple_test.m +++ b/matlab/nfsft/simple_test.m @@ -4,8 +4,10 @@ % in terms of spherical harmonics Y_k^n of degree k on a set of arbitrary % nodes (theta_d,phi_d) for d=1..M, in spherical coordinates % 0 <= phi_d <2*pi and 0 <= theta_d <= pi. +% We also recover the original data f from the Fourier coefficients f_hat +% via an exact quadrature rule. -% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% Copyright (c) 2002, 2019 Jens Keiner, Stefan Kunis, Daniel Potts % % This program 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 @@ -24,10 +26,22 @@ fprintf('Number of threads: %d\n', nfsft_get_num_threads()); % maximum degree (bandwidth) of spherical harmonics expansions -N = 32; +N = 64; -% Gauss-Legendre interpolatory quadrature nodes for N. See gl.m +% Gauss-Legendre exact quadrature nodes for degree N. See gl.m [X,W] = gl(N); +% Clenshaw-Curtis exact quadrature rule is available in cc.m +% Further exact quadrature rules are available at +% https://www-user.tu-chemnitz.de/~potts/workgroup/graef/quadrature/ +% They can be imported with either the command +% X = importdata('Design_1002000_1000_random.dat')'; +% or +% X = importdata('N124_M7812_Ico.dat',' ',2); +% X = [atan2(X.data(:,1),X.data(:,2))';acos(X.data(:,3))']; +% and then +% W = ones(1,length(X))/length(X)*4*pi; +% These quadrature rules have to be at least twice the size of N, +% e.g. for 'N124_M7812_Ico.dat' this means N<=64. % number of nodes M = size(X,2); @@ -35,7 +49,7 @@ % Create plan of class NFSFT. plan = nfsft(N,M,NFSFT_NORMALIZED); -% Set nodes. x = [phi; theta] +% Set nodes in spherical coordinates x = [phi; theta] plan.x = X; % random Fourier coefficients diff --git a/matlab/nfsft/test_inversion.m b/matlab/nfsft/test_inversion.m new file mode 100644 index 00000000..ba46d863 --- /dev/null +++ b/matlab/nfsft/test_inversion.m @@ -0,0 +1,187 @@ +%TEST_INVERSION Example program: +% We recover the spherical harmonics coefficients f_hat of a spherical +% function +% f(theta_d,phi_d) = sum_{k=0}^N sum_{n=-k}^k f_hat(k,n) Y_k^n(theta_d,phi_d) +% on a set of arbitrary nodes (theta_d,phi_d) for d=1..M, in spherical +% coordinates 0 <= phi_d <2*pi and 0 <= theta_d <= pi. +% We use 2 different approaches: i) based on the inversion of the NFFT +% followed by a conversion to spherical harmonics coefficients, and ii) the +% inversion of the NFSFT. + +% Copyright (c) 2002, 2021 Jens Keiner, Stefan Kunis, Daniel Potts +% +% This program 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. +% +% 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., 51 +% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +% + +% maximum degree (bandwidth) of spherical harmonics expansions +N = 128; + +% number of nodes +M = 4*N^2; + +% random nodes on the sphere +phi = rand(1,M)*2*pi; +theta = rand(1,M)*pi; +X = [phi;theta]; + +% Create plan of class NFSFT. +plan = nfsft(N,M,NFSFT_NORMALIZED); + +% Set nodes in spherical coordinates x = [phi; theta] +plan.x = X; + +% random sphrical harmonics coefficients +fh = f_hat((rand((N+1)*(N+1),1)-.5)./(((1:(N+1)^2)+1).').^.5*2); +% fh(1,0) = 1; +plan.fhat = fh; + +% NFSFT transform +nfsft_trafo(plan); + +% function values +f = plan.f; + +%% inverse NFFT to compute Fourier coefficients on torus +addpath('../nfft') +iterations = 20; +% X2 = [X, [mod(X(1,:)+pi,2*pi); -X(2,:)]]; +% f2 = [f;f]; + +% NFFT with same parameters as used internally in the NFSFT +NN = 2*[N N]+2; +plan_nfft = nfft(2,NN,M, 4*[N N], 6,bitor(PRE_PHI_HUT,bitor(PRE_PSI,NFFT_OMP_BLOCKWISE_ADJOINT)),FFTW_ESTIMATE); +plan_nfft.x = X'/(2*pi); % nodes on [-.5 .5] + +tic + +% fh_nfft = lsqr(@(x, transp_flag) afun(transp_flag, x, p_nfft),f); + +fh_nfft = zeros(NN); % initial guess +plan_nfft.fhat = fh_nfft(:); +plan_nfft.nfft_trafo; +rk = f - plan_nfft.f; +plan_nfft.f = rk; +plan_nfft.nfft_adjoint; +pk = plan_nfft.fhat; +sk = pk; +ak=[]; bk=[]; +res_nfft = zeros(1,iterations); +for k=1:iterations % Engl, Hanke, Neubauer: residual rk=dk + plan_nfft.fhat = pk; + plan_nfft.nfft_trafo; + qk = plan_nfft.f; + akm1 = ak; + ak = (sk'*sk)/(qk'*qk); + fh_nfft = (fh_nfft(:) + ak*pk); +% fh_nfft = reshape(fh_nfft,NN); +% fh_nfft = (fh_nfft + flip(fh_nfft,2).*(-1).^(-N-1:N).')/2; +% fh_nfft = fh_nfft(:); + rk = rk - ak*qk; + plan_nfft.f = rk; + plan_nfft.nfft_adjoint; + nskm1 = (sk'*sk); + sk = plan_nfft.fhat; + bkm1=bk; + bk = (sk'*sk)/nskm1; + pk = sk + bk*pk; + res_nfft(k) = sqrt((rk'*rk)/length(rk)); +end + +fprintf('iNFFT time: %.3g seconds.\n',toc) + +% Evaluate trigonometric polynomial at Clenshaw-Curtis nodes +[X_cc,W] = cc(N); +plan_nfft = nfft(2, 2*[N N]+2, length(X_cc), 4*[N N], 6,bitor(PRE_PHI_HUT,NFFT_OMP_BLOCKWISE_ADJOINT),FFTW_ESTIMATE); +plan_nfft.x = X_cc' / (2*pi); % nodes on [-.5 .5] +plan_nfft.fhat = fh_nfft; +plan_nfft.nfft_trafo; +f_nfft = plan_nfft.f; + +% adjoint transform, using quadrature weights to recover spherical harmonics coefficients +plan_cc = nfsft(N, length(X_cc), NFSFT_NORMALIZED); +plan_cc.x = X_cc; +plan_cc.f = f_nfft.*W'; +nfsft_adjoint(plan_cc); + +fh2 = plan_cc.fhat; +fprintf('Relative error of reconstructed f_hat: %.3g, residual: %.3g\n',norm(fh2.f_hat-fh.f_hat)/norm(fh.f_hat),res_nfft(end)); + +%% CGNE for NFSFT +tic +fh_rec = zeros(size(fh.f_hat)); +plan.fhat = fh_rec; +plan.nfsft_trafo; +rk = f - plan.f; +plan.f = rk; +plan.nfsft_adjoint; +pk = plan.fhat; +pk = pk.f_hat; +sk = pk; +ak=[]; bk=[]; +res = zeros(1,iterations); +for k=1:iterations % Engl, Hanke, Neubauer: residual rk=dk + plan.fhat = pk; + plan.nfsft_trafo; + qk = plan.f; + akm1 = ak; + ak = (sk'*sk)/(qk'*qk); + fh_rec = (fh_rec + ak*pk); + rk = rk - ak*qk; + plan.f = rk; + plan.nfsft_adjoint; + nskm1 = (sk'*sk); + sk = plan.fhat; + sk = sk.f_hat; + bkm1=bk; + bk = (sk'*sk)/nskm1; + pk = sk + bk*pk; + res(k) = sqrt((rk'*rk)/length(rk)); +end +fprintf('iNFSFT time: %.3g seconds.\n',toc) +fprintf('Relative error of reconstructed f_hat: %.3g, residual: %.3g\n',norm(fh_rec-fh.f_hat)/norm(fh.f_hat),res(end)); + +%% Plot +figure(1) +scatter(X(1,:),X(2,:),15e4/N^2,real(f),'filled') +colorbar +title('function values on random nodes on S²') + +figure(2) +scatter(X_cc(1,:),X_cc(2,:),3e4/N^2,real(f_nfft),'filled') +colorbar +title('reconstructed function values on CC grid on T²') + +figure(3) +fh_nfft = reshape(fh_nfft,NN); +imagesc(abs(fh_nfft)); +colorbar +title('reconstructed Fourier coefficients on T²') + +figure(4) +imagesc(abs(double(fh))); +colorbar +title('given (random) spherical harmonics coefficients') + +% function y = afun(transp_flag, x, plan) +% if strcmp(transp_flag, 'transp') +% plan.f = x; +% plan.nfft_adjoint; +% y = plan.fhat; +% elseif strcmp(transp_flag, 'notransp') +% plan.fhat = x; +% plan.nfft_trafo; +% y = plan.f; +% end +% end diff --git a/matlab/nfsft/test_nfsft_equispaced.m b/matlab/nfsft/test_nfsft_equispaced.m index 1837c952..2634856e 100644 --- a/matlab/nfsft/test_nfsft_equispaced.m +++ b/matlab/nfsft/test_nfsft_equispaced.m @@ -35,11 +35,11 @@ fprintf('Time of precomputation: %g seconds\n', toc); % number of nodes -M = (2*N+2) * (N+1); +M = (2*N+2) * (N+2); % nodes ph=(-N-1:N)/(2*N+2)*2*pi; -th=(0:N)/(2*N+2)*2*pi; +th=(0:N+1)/(2*N+2)*2*pi; [ph,th]=meshgrid(ph,th); X=[ph(:)';th(:)']; diff --git a/matlab/nfsoft/Makefile.am b/matlab/nfsoft/Makefile.am index feb47ef1..f727da1c 100644 --- a/matlab/nfsoft/Makefile.am +++ b/matlab/nfsoft/Makefile.am @@ -19,7 +19,8 @@ endif dist_nfsoftmatlab_DATA = Contents.m \ nfsoft_adjoint.m nfsoft_get_num_threads.m nfsoft_f_hat_size.m nfsoft_finalize.m nfsoft_get_f_hat.m nfsoft_get_f.m nfsoft_init.m nfsoft_precompute.m nfsoft_set_f.m nfsoft_set_f_hat.m nfsoft_set_x.m nfsoft_trafo.m test_nfsoft.m \ - NFSOFT_NORMALIZED.m NFSOFT_REPRESENT.m NFSOFT_USE_DPT.m NFSOFT_USE_NDFT.m simple_test.m nfsoft.m test_nfsoft_direct.m wignerD.m + NFSOFT_NORMALIZED.m NFSOFT_REPRESENT.m NFSOFT_USE_DPT.m NFSOFT_USE_NDFT.m simple_test.m nfsoft.m test_nfsoft_direct.m wignerD.m \ + nfsoft_set_num_threads.m # target all-am builds .libs/libnfsoft@matlab_mexext@ nfsoftmex@matlab_mexext@: all-am diff --git a/matlab/nfsoft/nfsoft_set_num_threads.m b/matlab/nfsoft/nfsoft_set_num_threads.m new file mode 100644 index 00000000..cd87a30a --- /dev/null +++ b/matlab/nfsoft/nfsoft_set_num_threads.m @@ -0,0 +1,23 @@ +%NFFT_GET_NUM_THREADS Get number of threads (at most) used for computation +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% +% This program 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. +% +% 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., 51 +% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +function nthreads_old = nfsoft_set_num_threads(nthreads_new) + +nthreads_old = nfsoftmex('get_num_threads'); +nfsoftmex('set_num_threads', nthreads_new); + diff --git a/matlab/nfsoft/nfsoftmex.c b/matlab/nfsoft/nfsoftmex.c index ec4561cd..860dae75 100644 --- a/matlab/nfsoft/nfsoftmex.c +++ b/matlab/nfsoft/nfsoftmex.c @@ -39,12 +39,6 @@ static unsigned int plans_num_allocated = 0; static int n_max = -1; /* maximum degree precomputed */ static char cmd[CMD_LEN_MAX]; -static inline void check_nargs(const int nrhs, const int n, const char* errmsg) -{ - DM(if (nrhs != n) - mexErrMsgTxt(errmsg);) -} - static inline int get_plan(const mxArray *pm) { int i = nfft_mex_get_int(pm,"Input argument plan must be a scalar."); @@ -131,16 +125,26 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) if(strcmp(cmd,"get_num_threads") == 0) { - int32_t nthreads = X(get_num_threads)(); - plhs[0] = mxCreateNumericMatrix(1, 1, mxINT32_CLASS, mxREAL); - *((int32_t *)mxGetData(plhs[0])) = nthreads; - + INT nthreads = X(get_num_threads)(); + plhs[0] = mxCreateDoubleScalar((double) nthreads); return; } + else if(strcmp(cmd,"set_num_threads") == 0) + { + int nthreads_new = nfft_mex_set_num_threads_check(nrhs, prhs, (void **) plans, plans_num_allocated); + X(set_num_threads)(nthreads_new); + return; + } + else if(strcmp(cmd,"has_threads_enabled") == 0) + { + INT threads_enabled = X(has_threads_enabled)(); + plhs[0] = mxCreateDoubleScalar((double) threads_enabled); + return; + } else if(strcmp(cmd,"init") == 0) { - check_nargs(nrhs,8,"Wrong number of arguments for init."); + nfft_mex_check_nargs(nrhs,8,"Wrong number of arguments for init."); int N = nfft_mex_get_int(prhs[1],"N must be scalar"); DM( if (N <= 0) mexErrMsgTxt("Input argument N must be positive.");) @@ -178,7 +182,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if(strcmp(cmd,"set_x") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_x."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_x."); int i = get_plan(prhs[1]); DM(if (!(mxIsDouble(prhs[2])) || (mxGetNumberOfDimensions(prhs[2]) > 2) || (mxGetN(prhs[2]) != plans[i]->M_total) || mxGetM(prhs[2]) != 3)) @@ -197,7 +201,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if(strcmp(cmd,"set_f_hat") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); int i = get_plan(prhs[1]); int N = plans[i]->N_total; @@ -228,7 +232,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if(strcmp(cmd,"set_f") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f."); int i = get_plan(prhs[1]); DM(if (!(mxIsDouble(prhs[2]) || mxIsComplex(prhs[2])) || (mxGetNumberOfDimensions(prhs[2]) > 2) || (mxGetN(prhs[2]) != 1) || mxGetM(prhs[2]) != plans[i]->M_total)) @@ -254,7 +258,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if(strcmp(cmd,"trafo") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo."); int i = get_plan(prhs[1]); nfsoft_trafo(plans[i]); return; @@ -262,7 +266,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if(strcmp(cmd,"adjoint") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); int i = get_plan(prhs[1]); nfsoft_adjoint(plans[i]); return; @@ -270,7 +274,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if(strcmp(cmd,"get_x") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_x."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_x."); int i = get_plan(prhs[1]); plhs[0] = mxCreateDoubleMatrix(3, (unsigned int) plans[i]->M_total, mxREAL); @@ -287,7 +291,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if(strcmp(cmd,"get_f") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f."); int i = get_plan(prhs[1]); plhs[0] = mxCreateDoubleMatrix((unsigned int)plans[i]->M_total, 1, mxCOMPLEX); @@ -304,7 +308,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if(strcmp(cmd,"get_f_hat") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); int i = get_plan(prhs[1]); int N = plans[i]->N_total; int fh_size = NFSOFT_F_HAT_SIZE(N); @@ -332,7 +336,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if(strcmp(cmd,"finalize") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments finalize."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments finalize."); int i = get_plan(prhs[1]); nfsoft_finalize(plans[i]); @@ -343,7 +347,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"display") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for display."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for display."); { int i = get_plan(prhs[1]); mexPrintf("Plan %d\n",i); diff --git a/matlab/nfst/Makefile.am b/matlab/nfst/Makefile.am index 40c99e7f..02d558db 100644 --- a/matlab/nfst/Makefile.am +++ b/matlab/nfst/Makefile.am @@ -8,7 +8,7 @@ nfstmatlabdir = $(datadir)/nfft/matlab/nfst lib_LTLIBRARIES = libnfst.la libnfst_la_SOURCES = nfstmex.c -libnfst_la_LIBADD = $(top_builddir)/libnfft3_matlab.la @matlab_fftw3_LIBS@ $(top_builddir)/matlab/libmatlab.la $(matlab_LIBS) +libnfst_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_matlab.la @matlab_fftw3_LIBS@ $(top_builddir)/matlab/libmatlab.la $(matlab_LIBS) libnfst_la_LDFLAGS = -no-undefined -module -shared -shrext $(matlab_mexext) -avoid-version @matlab_fftw3_LDFLAGS@ $(matlab_LDFLAGS) @@ -23,7 +23,7 @@ dist_nfstmatlab_DATA = Contents.m FFTW_ESTIMATE.m FFTW_MEASURE.m \ nfst_get_num_threads.m nfst_get_x.m nfst_init_1d.m nfst_init_2d.m \ nfst_init_3d.m nfst_init_guru.m nfst_set_f.m nfst_set_f_hat.m \ nfst_set_x.m nfst_trafo.m simple_test.m test_nfst1d.m test_nfst2d.m \ - test_nfst3d.m + test_nfst3d.m nfst_set_num_threads.m # target all-am builds .libs/libnfst@matlab_mexext@ nfstmex@matlab_mexext@: all-am diff --git a/matlab/nfst/nfst.m b/matlab/nfst/nfst.m index de9b4317..a5c76ae9 100644 --- a/matlab/nfst/nfst.m +++ b/matlab/nfst/nfst.m @@ -1,4 +1,4 @@ -% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% Copyright (c) 2002, 2020 Jens Keiner, Stefan Kunis, Daniel Potts % % This program 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 @@ -155,24 +155,24 @@ function delete(h) end %function function set.N1(h,N) - if( isempty(N) || ~isnumeric(N) || ~isreal(N) || (mod(N,2)~=0) || ~(N>0)) - error('The number of the nodes N1 has to be an even positive integer.'); + if( isempty(N) || ~isnumeric(N) || ~isreal(N) || ~(N>0)) + error('The number of the nodes N1 has to be a positive integer.'); else h.N1=N; end %if end %function function set.N2(h,N) - if( isempty(N) || ~isnumeric(N) || ~isreal(N) || (mod(N,2)~=0) || ~(N>0)) - error('The number of the nodes N2 has to be an even positive integer.'); + if( isempty(N) || ~isnumeric(N) || ~isreal(N) || ~(N>0)) + error('The number of the nodes N2 has to be a positive integer.'); else h.N2=N; end %if end %function function set.N3(h,N) - if( isempty(N) || ~isnumeric(N) || ~isreal(N) || (mod(N,2)~=0) || ~(N>0)) - error('The number of the nodes N2 has to be an even positive integer.'); + if( isempty(N) || ~isnumeric(N) || ~isreal(N) || ~(N>0)) + error('The number of the nodes N2 has to be a positive integer.'); else h.N3=N; end %if diff --git a/matlab/nfst/nfst_set_num_threads.m b/matlab/nfst/nfst_set_num_threads.m new file mode 100644 index 00000000..b6f2cb08 --- /dev/null +++ b/matlab/nfst/nfst_set_num_threads.m @@ -0,0 +1,23 @@ +%NFFT_GET_NUM_THREADS Get number of threads (at most) used for computation +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% +% This program 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. +% +% 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., 51 +% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +function nthreads_old = nfst_set_num_threads(nthreads_new) + +nthreads_old = nfstmex('get_num_threads'); +nfstmex('set_num_threads', nthreads_new); + diff --git a/matlab/nfst/nfstmex.c b/matlab/nfst/nfstmex.c index 00f1a740..74e34100 100644 --- a/matlab/nfst/nfstmex.c +++ b/matlab/nfst/nfstmex.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + * Copyright (c) 2002, 2020 Jens Keiner, Stefan Kunis, Daniel Potts * * This program 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 @@ -34,63 +34,10 @@ #define NFST_MEX_FIRST_CALL (1U << 0) static unsigned short gflags = NFST_MEX_FIRST_CALL; -static nfst_plan** plans = NULL; /* plans */ +static NFST(plan)** plans = NULL; /* plans */ static unsigned int plans_num_allocated = 0; static char cmd[CMD_LEN_MAX]; -static inline void get_nm(const mxArray *prhs[], int *n, int *m) -{ - int t = nfft_mex_get_int(prhs[1],"nfst: Input argument N must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfst: Input argument N must be non-negative and multiple of two.");) - *n = t; - t = nfft_mex_get_int(prhs[2],"nfst: Input argument M must be a scalar."); - DM(if (t < 1) - mexErrMsgTxt("nfst: Input argument M must be positive.");) - *m = t; -} - -static inline void get_n1n2m(const mxArray *prhs[], int *n1, int *n2, int *m) -{ - int t = nfft_mex_get_int(prhs[1],"nfst: Input argument N1 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfst: Input argument N1 must be non-negative and even.");) - *n1 = t; - - t = nfft_mex_get_int(prhs[2],"nfst: Input argument N2 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfst: Input argument N2 must be non-negative and even.");) - *n2 = t; - - t = nfft_mex_get_int(prhs[3],"nfst: Input argument M must be a scalar."); - DM(if (t < 1) - mexErrMsgTxt("nfst: Input argument M must be positive.");) - *m = t; -} - -static inline void get_n1n2n3m(const mxArray *prhs[], int *n1, int *n2, int *n3, int *m) -{ - int t = nfft_mex_get_int(prhs[1],"nfst: Input argument N1 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfst: Input argument N1 must be non-negative and even.");) - *n1 = t; - - t = nfft_mex_get_int(prhs[2],"nfst: Input argument N2 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfst: Input argument N2 must be non-negative and even.");) - *n2 = t; - - t = nfft_mex_get_int(prhs[3],"nfst: Input argument N3 must be a scalar."); - DM(if ((t < 0) || (t%2!=0)) - mexErrMsgTxt("nfst: Input argument N3 must be non-negative and even.");) - *n3 = t; - - t = nfft_mex_get_int(prhs[4],"nfst: Input argument M must be a scalar."); - DM(if (t < 1) - mexErrMsgTxt("nfst: Input argument M must be positive.");) - *m = t; -} - static inline void get_guru(const mxArray *prhs[], int d, int *N, int *M, int *n, int *m, unsigned int *f1, unsigned int *f2) { /** NO ERROR HANDLING !!*/ @@ -111,12 +58,6 @@ static inline void get_guru(const mxArray *prhs[], int d, int *N, int *M, int *n *f2 = mxGetScalar(mxGetCell(prhs[1], (unsigned int)(2*d+4))); } -static inline void check_nargs(const int nrhs, const int n, const char* errmsg) -{ - DM(if (nrhs != n) - mexErrMsgTxt(errmsg);) -} - static inline void check_plan(int i) { DM(if (i < 0 || i >= plans_num_allocated || plans[i] == 0) @@ -134,17 +75,17 @@ static inline int mkplan(void) if (plans_num_allocated >= INT_MAX - PLANS_START - 1) mexErrMsgTxt("nsft: Too many plans already allocated."); - nfst_plan** plans_old = plans; - plans = nfft_malloc((plans_num_allocated+PLANS_START)*sizeof(nfst_plan*)); + NFST(plan)** plans_old = plans; + plans = X(malloc)((plans_num_allocated+PLANS_START)*sizeof(NFST(plan)*)); for (l = 0; l < plans_num_allocated; l++) plans[l] = plans_old[l]; for (l = plans_num_allocated; l < plans_num_allocated+PLANS_START; l++) plans[l] = 0; if (plans_num_allocated > 0) - nfft_free(plans_old); + X(free)(plans_old); plans_num_allocated += PLANS_START; } - plans[i] = nfft_malloc(sizeof(nfst_plan)); + plans[i] = X(malloc)(sizeof(NFST(plan))); return i; } @@ -158,14 +99,14 @@ static void cleanup(void) for (i = 0; i < plans_num_allocated; i++) if (plans[i]) { - nfst_finalize(plans[i]); - nfft_free(plans[i]); + NFST(finalize)(plans[i]); + X(free)(plans[i]); plans[i] = NULL; } if (plans_num_allocated > 0) { - nfft_free(plans); + X(free)(plans); plans = NULL; plans_num_allocated = 0; } @@ -199,39 +140,39 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) if (strcmp(cmd,"init_1d") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for init."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for init."); { int i; int n, m; - get_nm(prhs,&n,&m); + nfft_mex_get_nm_odd(prhs,&n,&m); i = mkplan(); - nfst_init_1d(plans[i],n,m); + NFST(init_1d)(plans[i],n,m); plhs[0] = mxCreateDoubleScalar((double)i); } return; } else if (strcmp(cmd,"init_2d") == 0) { - check_nargs(nrhs,4,"Wrong number of arguments for init."); + nfft_mex_check_nargs(nrhs,4,"Wrong number of arguments for init."); { int i; int n1, n2, m; - get_n1n2m(prhs,&n1,&n2,&m); + nfft_mex_get_n1n2m_odd(prhs,&n1,&n2,&m); i = mkplan(); - nfst_init_2d(plans[i],n1,n2,m); + NFST(init_2d)(plans[i],n1,n2,m); plhs[0] = mxCreateDoubleScalar((double)i); } return; } else if (strcmp(cmd,"init_3d") == 0) { - check_nargs(nrhs,5,"Wrong number of arguments for init."); + nfft_mex_check_nargs(nrhs,5,"Wrong number of arguments for init."); { int i; int n1, n2, n3, m; - get_n1n2n3m(prhs,&n1,&n2,&n3,&m); + nfft_mex_get_n1n2n3m_odd(prhs,&n1,&n2,&n3,&m); i = mkplan(); - nfst_init_3d(plans[i],n1,n2,n3,m); + NFST(init_3d)(plans[i],n1,n2,n3,m); plhs[0] = mxCreateDoubleScalar((double)i); } return; @@ -250,7 +191,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) get_guru(prhs,d,N,&M,n,&m,&f1,&f2); i = mkplan(); - nfst_init_guru(plans[i],d,N,M,n,m, + NFST(init_guru)(plans[i],d,N,M,n,m, f1 | MALLOC_X | MALLOC_F | MALLOC_F_HAT | FFTW_INIT, f2); @@ -261,7 +202,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"precompute_psi") == 0) { mexErrMsgTxt("not implemented, precompute_psi is already called in set_x"); -/* check_nargs(nrhs,2,"Wrong number of arguments for precompute_psi."); +/* nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for precompute_psi."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); check_plan(i); @@ -272,59 +213,59 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"trafo") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); check_plan(i); - nfst_trafo(plans[i]); + NFST(trafo)(plans[i]); } return; } else if (strcmp(cmd,"adjoint") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); check_plan(i); - nfst_adjoint(plans[i]); + NFST(adjoint)(plans[i]); } return; } else if (strcmp(cmd,"finalize") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for finalize."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for finalize."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); check_plan(i); - nfst_finalize(plans[i]); - nfft_free(plans[i]); + NFST(finalize)(plans[i]); + X(free)(plans[i]); plans[i] = 0; } return; } else if (strcmp(cmd,"trafo_direct") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo direct."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo direct."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); check_plan(i); - nfst_trafo_direct(plans[i]); + NFST(trafo_direct)(plans[i]); } return; } else if (strcmp(cmd,"adjoint_direct") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for adjoint direct."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for adjoint direct."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); check_plan(i); - nfst_adjoint_direct(plans[i]); + NFST(adjoint_direct)(plans[i]); } return; } else if (strcmp(cmd,"get_x") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_x."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_x."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); int m, d; @@ -344,7 +285,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_f") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); int m; @@ -364,7 +305,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_f_hat") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); int n; @@ -384,7 +325,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_x") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_x."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_x."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); int m, d; @@ -406,13 +347,13 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) plans[i]->x[d*j+t] = x[d*j+t]; } } - nfst_precompute_one_psi(plans[i]); + NFST(precompute_one_psi)(plans[i]); } return; } else if (strcmp(cmd,"set_f") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); int m; @@ -433,7 +374,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_f_hat") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); int n; @@ -456,7 +397,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"display") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for set_f_hat_linear."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for set_f_hat_linear."); { int i = nfft_mex_get_int(prhs[1],"nfst: Input argument plan must be a scalar."); mexPrintf("Plan %d\n",i); @@ -474,12 +415,23 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if(strcmp(cmd,"get_num_threads") == 0) { - int32_t nthreads = X(get_num_threads)(); - plhs[0] = mxCreateNumericMatrix(1, 1, mxINT32_CLASS, mxREAL); - *((int32_t *)mxGetData(plhs[0])) = nthreads; + INT nthreads = X(get_num_threads)(); + plhs[0] = mxCreateDoubleScalar((double) nthreads); + return; + } + else if(strcmp(cmd,"set_num_threads") == 0) + { + int nthreads_new = nfft_mex_set_num_threads_check(nrhs, prhs, (void **) plans, plans_num_allocated); + X(set_num_threads)(nthreads_new); return; } + else if(strcmp(cmd,"has_threads_enabled") == 0) + { + INT threads_enabled = X(has_threads_enabled)(); + plhs[0] = mxCreateDoubleScalar((double) threads_enabled); + return; + } else mexErrMsgTxt("nfst: Unknown command.\n"); } diff --git a/matlab/nfst/test_nfst1d.m b/matlab/nfst/test_nfst1d.m index 42fbe079..40ac70cb 100644 --- a/matlab/nfst/test_nfst1d.m +++ b/matlab/nfst/test_nfst1d.m @@ -1,4 +1,4 @@ -% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% Copyright (c) 2002, 2020 Jens Keiner, Stefan Kunis, Daniel Potts % % This program 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 @@ -17,8 +17,8 @@ % Test script of class nfst for spatial dimension d=1. clear all; -M=16; % number of nodes -N=24; % number of Fourier coefficients in first direction +M=19; % number of nodes +N=43; % number of Fourier coefficients in first direction x=0.5*rand(M,1); %nodes diff --git a/matlab/nnfft/Makefile.am b/matlab/nnfft/Makefile.am index 98fb5919..978fc6d2 100644 --- a/matlab/nnfft/Makefile.am +++ b/matlab/nnfft/Makefile.am @@ -22,7 +22,8 @@ dist_nnfftmatlab_DATA = Contents.m nnfft.m nnfft_display.m nnfft_finalize.m \ nnfft_init_2d.m nnfft_init_3d.m nnfft_init_guru.m nnfft_precompute_psi.m \ nnfft_set_f.m nnfft_set_f_hat.m nnfft_set_v.m nnfft_set_x.m nnfft_trafo.m \ nnfft_trafo_direct.m PRE_FULL_PSI.m PRE_LIN_PSI.m PRE_PHI_HUT.m PRE_PSI.m \ - simple_test.m test_nnfft1d.m test_nnfft2d.m nnfft_get_num_threads.m + simple_test.m test_nnfft1d.m test_nnfft2d.m nnfft_get_num_threads.m \ + nnfft_set_num_threads.m # target all-am builds .libs/libnnfft@matlab_mexext@ nnfftmex@matlab_mexext@: all-am diff --git a/matlab/nnfft/nnfft_set_num_threads.m b/matlab/nnfft/nnfft_set_num_threads.m new file mode 100644 index 00000000..0e37986c --- /dev/null +++ b/matlab/nnfft/nnfft_set_num_threads.m @@ -0,0 +1,23 @@ +%NFFT_GET_NUM_THREADS Get number of threads (at most) used for computation +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts + +% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts +% +% This program 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. +% +% 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., 51 +% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +function nthreads_old = nnfft_set_num_threads(nthreads_new) + +nthreads_old = nnfftmex('get_num_threads'); +nnfftmex('set_num_threads', nthreads_new); + diff --git a/matlab/nnfft/nnfftmex.c b/matlab/nnfft/nnfftmex.c index 4506aff0..011249cc 100644 --- a/matlab/nnfft/nnfftmex.c +++ b/matlab/nnfft/nnfftmex.c @@ -111,12 +111,6 @@ static inline void get_guru(const mxArray *prhs[], int d, int *N_total, int *M, -static inline void check_nargs(const int nrhs, const int n, const char* errmsg) -{ - DM(if (nrhs != n) - mexErrMsgTxt(errmsg);) -} - static inline void check_plan(int i) { DM(if (i < 0 || i >= plans_num_allocated || plans[i] == 0) @@ -221,7 +215,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"init_1d") == 0) { - check_nargs(nrhs,4,"Wrong number of arguments for init_1d."); + nfft_mex_check_nargs(nrhs,4,"Wrong number of arguments for init_1d."); { int i; int N_total, M,N[1]; @@ -234,7 +228,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"init_2d") == 0) { - check_nargs(nrhs,5,"Wrong number of arguments for init_2d."); + nfft_mex_check_nargs(nrhs,5,"Wrong number of arguments for init_2d."); { int i; int N_total,M,N[2]; @@ -247,7 +241,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"init_3d") == 0) { - check_nargs(nrhs,6,"Wrong number of arguments for init_3d."); + nfft_mex_check_nargs(nrhs,6,"Wrong number of arguments for init_3d."); { int i; int N_total,M,N[3]; @@ -282,7 +276,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"precompute_psi") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for precompute_psi."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for precompute_psi."); { int i = nfft_mex_get_int(prhs[1],"nnfft: Input argument plan must be a scalar."); check_plan(i); @@ -292,7 +286,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"trafo") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for trafo."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo."); { int i = nfft_mex_get_int(prhs[1],"nnfft: Input argument plan must be a scalar."); check_plan(i); @@ -303,7 +297,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"adjoint") == 0) { mexErrMsgTxt("No implementation available."); -// check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); +// nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for adjoint."); // { // int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); // check_plan(i); @@ -313,7 +307,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"finalize") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for finalize."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for finalize."); { int i = nfft_mex_get_int(prhs[1],"nnfft: Input argument plan must be a scalar."); check_plan(i); @@ -326,7 +320,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"trafo_direct") == 0) { // mexErrMsgTxt("No implementation available."); - check_nargs(nrhs,2,"Wrong number of arguments for trafo direct."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for trafo direct."); { int i = nfft_mex_get_int(prhs[1],"nnfft: Input argument plan must be a scalar."); check_plan(i); @@ -337,7 +331,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) else if (strcmp(cmd,"adjoint_direct") == 0) { mexErrMsgTxt("No implementation available."); -// check_nargs(nrhs,2,"Wrong number of arguments for adjoint direct."); +// nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for adjoint direct."); // { // int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); // check_plan(i); @@ -347,7 +341,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_x") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_x."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_x."); { int i = nfft_mex_get_int(prhs[1],"nnfft: Input argument plan must be a scalar."); int m, d; @@ -367,7 +361,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_f") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f."); { int i = nfft_mex_get_int(prhs[1],"nnfft: Input argument plan must be a scalar."); int m; @@ -388,7 +382,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"get_f_hat") == 0) { - check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); + nfft_mex_check_nargs(nrhs,2,"Wrong number of arguments for get_f_hat."); { int i = nfft_mex_get_int(prhs[1],"nnfft: Input argument plan must be a scalar."); int n; @@ -409,7 +403,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_x") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_x."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_x."); { int i = nfft_mex_get_int(prhs[1],"nnfft: Input argument plan must be a scalar."); int m, d; @@ -433,7 +427,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_v") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_v."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_v."); { int i = nfft_mex_get_int(prhs[1],"nnfft: Input argument plan must be a scalar."); int m, d; @@ -456,7 +450,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_f") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f."); { int i = nfft_mex_get_int(prhs[1],"nnfft: Input argument plan must be a scalar."); int m; @@ -479,7 +473,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"set_f_hat") == 0) { - check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); + nfft_mex_check_nargs(nrhs,3,"Wrong number of arguments for set_f_hat."); { int i = nfft_mex_get_int(prhs[1],"nnfft: Input argument plan must be a scalar."); int n; @@ -522,12 +516,23 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if(strcmp(cmd,"get_num_threads") == 0) { - int32_t nthreads = X(get_num_threads)(); - plhs[0] = mxCreateNumericMatrix(1, 1, mxINT32_CLASS, mxREAL); - *((int32_t *)mxGetData(plhs[0])) = nthreads; + INT nthreads = X(get_num_threads)(); + plhs[0] = mxCreateDoubleScalar((double) nthreads); + return; + } + else if(strcmp(cmd,"set_num_threads") == 0) + { + int nthreads_new = nfft_mex_set_num_threads_check(nrhs, prhs, (void **) plans, plans_num_allocated); + X(set_num_threads)(nthreads_new); return; } + else if(strcmp(cmd,"has_threads_enabled") == 0) + { + INT threads_enabled = X(has_threads_enabled)(); + plhs[0] = mxCreateDoubleScalar((double) threads_enabled); + return; + } else{ mexPrintf(cmd); mexErrMsgTxt("nnfft: Unknown command SUSE."); diff --git a/matlab/nnfft/test_nnfft2d_N215.m b/matlab/nnfft/test_nnfft2d_N215.m deleted file mode 100644 index ba68594d..00000000 --- a/matlab/nnfft/test_nnfft2d_N215.m +++ /dev/null @@ -1,86 +0,0 @@ - -% Copyright (c) 2002, 2017 Jens Keiner, Stefan Kunis, Daniel Potts -% -% This program 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. -% -% 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., 51 -% Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -% Test script of class nnfft for spatial dimension d=2. -clear all; - -%M=16; % number of nodes -%N_1=24; % number of Fourier coefficients in first direction -%N_2=32; % number of Fourier coefficients in second direction -%N=[N_1;N_2]; -%N_total=N_1*N_2; % total number of Fourier coefficients -M=2^15; -N_1=2^15; -N_2=2^15; -N=[N_1;N_2]; -N_total=2^15; - - - -x=rand(M,2)-0.5; %nodes -x(1,:)=[0.5;0.5]; -v=rand(N_total,2)-0.5; %nodes - -% Plan initialisation simple interface -plan=nnfft(2,N_total,M,N); % create plan of class type nnfft - -plan -% Plan initialisation guru interface -%sigma=2; % oversampling factor -%N1_1=sigma*N_1; % FFTW length, must be even natural number! -%N1_2=sigma*N_2; % FFTW length, must be even natural number! -%m=6; % window cut-off parameter -%plan=nnfft(2,N_total,M,N,N1_1,N1_2,m,bitor(PRE_PHI_HUT,PRE_PSI)); % create plan of class type nnfft - -plan.x=x; % set nodes in plan -plan.v=v; % set nodes in plan -nnfft_precompute_psi(plan); % precomputations - -% NFFT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%fhat=rand(N_1,N_2); % Fourier coefficients -fhatv=rand(N_total,1)-0.5; -%fhat=ones(N_total,1); - -%Test mit zweitem Einheitsvektor -%fhat=zeros(N_total,1); -%fhat(2)=1; -%fhatv=fhat;%(:); - -% Compute samples with NNFFT - plan.fhat=fhatv; % set Fourier coefficients - nnfft_trafo(plan); % compute nonequispaced Fourier transform - f1=plan.f; % get samples - -% Compute samples direct -nnfft_trafo_direct(plan); -f2=plan.f; - -%% Compare results -disp('NNFFT vs NNDFT'); -max(abs(f1-f2)) - - -%A=exp(-2*pi*1i*x*diag(N)*v'); -%f3=A*fhatv; - -%tmpv=(v.*repmat(N',size(v,1),1)).'; - -%geflipter zweiter Einheitsvektor -%f3=exp(-2*pi*1i*(x*tmpv))*flipud(plan.fhat); -%f3=exp(-2*pi*1i*(tmpx*v.'))*fhatv; -%max(abs(f2-f3)) diff --git a/matlab/tests/nfftTestcaseInitDelegate.m b/matlab/tests/nfftTestcaseInitDelegate.m index 18b33dd8..acbfc3a5 100644 --- a/matlab/tests/nfftTestcaseInitDelegate.m +++ b/matlab/tests/nfftTestcaseInitDelegate.m @@ -14,7 +14,11 @@ methods function h = nfftTestcaseInitDelegate(name, m, flags, fftw_flags) h.name = name; - h.m = m; + if (m==0) + h.m = nfftmex('get_default_window_cut_off_m'); + else + h.m = m; + end h.flags = flags; h.fftw_flags = fftw_flags; end diff --git a/matlab/tests/nfftTestcaseTrafoDelegate.m b/matlab/tests/nfftTestcaseTrafoDelegate.m index 15969377..2b1ee2fe 100644 --- a/matlab/tests/nfftTestcaseTrafoDelegate.m +++ b/matlab/tests/nfftTestcaseTrafoDelegate.m @@ -85,12 +85,13 @@ end function val = acc(h, m, sigma) + epsilon = nfftmex('get_epsilon'); switch h.name case {'trafo_direct', 'adjoint_direct'} - val = 48 * eps; + val = 48 * epsilon; otherwise err = pi * (sqrt(m) + m) * sqrt(sqrt(1 - 1/2)) * exp(-2*pi * m * sqrt(1 - 1 / 2)); - val = max(0.33 * err, 2500 * eps); + val = max(0.33 * err, 2500 * epsilon); end end end diff --git a/matlab/tests/nfftUnitTests.m.in b/matlab/tests/nfftUnitTests.m.in index 4b7e4c0f..ad08df6f 100644 --- a/matlab/tests/nfftUnitTests.m.in +++ b/matlab/tests/nfftUnitTests.m.in @@ -47,19 +47,19 @@ classdef nfftUnitTests nfftTestcaseDelegateFile('@ABS_SRCDIR@/tests/data/nfft_adjoint_1d_50_20.txt') ... nfftTestcaseDelegateFile('@ABS_SRCDIR@/tests/data/nfft_adjoint_1d_50_50.txt')}; -% initializers_direct = nfftTestcaseInitDelegate('init_guru', 8, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE); - initializers_1d = {nfftTestcaseInitDelegate('init_1d', 8, [], []) ... - nfftTestcaseInitDelegate('init', 8, [], []) ... - nfftTestcaseInitDelegate('init_class_no_flags', 8, 0, 0) ... - nfftTestcaseInitDelegate('init_class', 8, 0, 0) ... - nfftTestcaseInitDelegate('init_class', 8, [], []) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(PRE_PSI,FFT_OUT_OF_PLACE), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_class_flags', 8, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_class_flags', 8, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_class_flags', 8, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE)}; +% initializers_direct = nfftTestcaseInitDelegate('init_guru', 0, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE); + initializers_1d = {nfftTestcaseInitDelegate('init_1d', 0, [], []) ... + nfftTestcaseInitDelegate('init', 0, [], []) ... + nfftTestcaseInitDelegate('init_class_no_flags', 0, 0, 0) ... + nfftTestcaseInitDelegate('init_class', 0, 0, 0) ... + nfftTestcaseInitDelegate('init_class', 0, [], []) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(PRE_PSI,FFT_OUT_OF_PLACE), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_class_flags', 0, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_class_flags', 0, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_class_flags', 0, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE)}; testcases_1d_online = {nfftTestcaseDelegateOnline(1, 50, 50, 'trafo') ... nfftTestcaseDelegateOnline(1, 100, 50, 'trafo') ... @@ -95,18 +95,18 @@ classdef nfftUnitTests nfftTestcaseDelegateFile('@ABS_SRCDIR@/tests/data/nfft_adjoint_2d_20_20_20.txt') ... nfftTestcaseDelegateFile('@ABS_SRCDIR@/tests/data/nfft_adjoint_2d_20_20_50.txt')}; - initializers_2d = {nfftTestcaseInitDelegate('init_2d', 8, [], []) ... - nfftTestcaseInitDelegate('init', 8, [], []) ... - nfftTestcaseInitDelegate('init_class_no_flags', 8, 0, 0) ... - nfftTestcaseInitDelegate('init_class', 8, 0, 0) ... - nfftTestcaseInitDelegate('init_class', 8, [], []) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(PRE_PSI,FFT_OUT_OF_PLACE), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_class_flags', 8, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_class_flags', 8, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_class_flags', 8, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE)}; + initializers_2d = {nfftTestcaseInitDelegate('init_2d', 0, [], []) ... + nfftTestcaseInitDelegate('init', 0, [], []) ... + nfftTestcaseInitDelegate('init_class_no_flags', 0, 0, 0) ... + nfftTestcaseInitDelegate('init_class', 0, 0, 0) ... + nfftTestcaseInitDelegate('init_class', 0, [], []) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(PRE_PSI,FFT_OUT_OF_PLACE), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_class_flags', 0, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_class_flags', 0, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_class_flags', 0, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE)}; testcases_2d_online = {nfftTestcaseDelegateOnline(2, [50,50], 50, 'trafo') ... nfftTestcaseDelegateOnline(2, [70,100], 50, 'trafo') ... @@ -130,18 +130,18 @@ classdef nfftUnitTests testcases_adjoint_3d_file = {nfftTestcaseDelegateFile('@ABS_SRCDIR@/tests/data/nfft_adjoint_3d_10_10_10_10.txt')}; - initializers_3d = {nfftTestcaseInitDelegate('init_3d', 8, [], []) ... - nfftTestcaseInitDelegate('init', 8, [], []) ... - nfftTestcaseInitDelegate('init_class_no_flags', 8, 0, 0) ... - nfftTestcaseInitDelegate('init_class', 8, 0, 0) ... - nfftTestcaseInitDelegate('init_class', 8, [], []) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(PRE_PSI,FFT_OUT_OF_PLACE), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_class_flags', 8, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_class_flags', 8, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_class_flags', 8, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE)}; + initializers_3d = {nfftTestcaseInitDelegate('init_3d', 0, [], []) ... + nfftTestcaseInitDelegate('init', 0, [], []) ... + nfftTestcaseInitDelegate('init_class_no_flags', 0, 0, 0) ... + nfftTestcaseInitDelegate('init_class', 0, 0, 0) ... + nfftTestcaseInitDelegate('init_class', 0, [], []) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(PRE_PSI,FFT_OUT_OF_PLACE), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_class_flags', 0, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_class_flags', 0, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_class_flags', 0, bitor(PRE_FULL_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE)}; testcases_3d_online = {nfftTestcaseDelegateOnline(3, [24,32,30], 77, 'trafo') ... nfftTestcaseDelegateOnline(3, [50,50,50], 50, 'trafo')}; @@ -150,15 +150,15 @@ classdef nfftUnitTests nfftTestcaseDelegateOnline(3, [50,50,50], 50, 'adjoint')}; - initializers_4d = {nfftTestcaseInitDelegate('init', 8, [], []) ... - nfftTestcaseInitDelegate('init_class_no_flags', 8, 0, 0) ... - nfftTestcaseInitDelegate('init_class', 8, 0, 0) ... - nfftTestcaseInitDelegate('init_class', 8, [], []) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(PRE_PSI,FFT_OUT_OF_PLACE), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_guru', 8, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_class_flags', 8, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... - nfftTestcaseInitDelegate('init_class_flags', 8, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE)}; + initializers_4d = {nfftTestcaseInitDelegate('init', 0, [], []) ... + nfftTestcaseInitDelegate('init_class_no_flags', 0, 0, 0) ... + nfftTestcaseInitDelegate('init_class', 0, 0, 0) ... + nfftTestcaseInitDelegate('init_class', 0, [], []) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(PRE_PSI,FFT_OUT_OF_PLACE), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_guru', 0, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_class_flags', 0, bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT), FFTW_ESTIMATE) ... + nfftTestcaseInitDelegate('init_class_flags', 0, bitor(PRE_PSI,bitor(FFT_OUT_OF_PLACE,NFFT_OMP_BLOCKWISE_ADJOINT)), FFTW_ESTIMATE)}; testcases_4d_online = {nfftTestcaseDelegateOnline(4, [14,14,14,14], 50, 'trafo') ... nfftTestcaseDelegateOnline(4, [24,32,30,10], 65, 'trafo')}; diff --git a/matlab/tests/nfftUnitTestsRunAndExit.m b/matlab/tests/nfftUnitTestsRunAndExit.m index 3691cef8..4a1d153f 100644 --- a/matlab/tests/nfftUnitTestsRunAndExit.m +++ b/matlab/tests/nfftUnitTestsRunAndExit.m @@ -28,9 +28,12 @@ result = nfft_check_4d_online(tests); ok = min(ok, result); result = nfft_check_adjoint_4d_online(tests); ok = min(ok, result); - - result = nfft_check_5d_online(tests); ok = min(ok, result); - result = nfft_check_adjoint_5d_online(tests); ok = min(ok, result); + + % 5d tests only in double precision + if (nfftmex('get_epsilon') < 1e-10) + result = nfft_check_5d_online(tests); ok = min(ok, result); + result = nfft_check_adjoint_5d_online(tests); ok = min(ok, result); + end clear tests; catch err diff --git a/matlab/tests/nfsftTestcaseDelegateOnline.m b/matlab/tests/nfsftTestcaseDelegateOnline.m index cf3308a4..194ec100 100644 --- a/matlab/tests/nfsftTestcaseDelegateOnline.m +++ b/matlab/tests/nfsftTestcaseDelegateOnline.m @@ -18,7 +18,7 @@ if (h.M==0) % equispaced nodes fprintf('%-31s', 'nfsft_online_equispaced'); ph=(-h.N-1:h.N)/(2*h.N+2)*2*pi; - th=(0:h.N)/(2*h.N+2)*2*pi; + th=(0:h.N+1)/(2*h.N+2)*2*pi; [ph,th]=meshgrid(ph,th); h.x=[ph(:)';th(:)']; h.M=size(h.x,2); diff --git a/matlab/tests/nfsftUnitTests.m.in b/matlab/tests/nfsftUnitTests.m.in index 4cdf07f1..bc703990 100644 --- a/matlab/tests/nfsftUnitTests.m.in +++ b/matlab/tests/nfsftUnitTests.m.in @@ -14,11 +14,11 @@ classdef nfsftUnitTests nfsftTestcaseDelegateOnline(128, 10, 'trafo') ... nfsftTestcaseDelegateOnline(128, 100, 'trafo') ... nfsftTestcaseDelegateOnline(256, 10, 'trafo') ... - nfsftTestcaseDelegateOnline(256, 100, 'trafo') ... }; testcases_online_trafo_exhaustive = { ... nfsftTestcaseDelegateOnline(128, 1000, 'trafo') ... + nfsftTestcaseDelegateOnline(256, 100, 'trafo') ... nfsftTestcaseDelegateOnline(256, 1000, 'trafo') ... nfsftTestcaseDelegateOnline(512, 10, 'trafo') ... nfsftTestcaseDelegateOnline(512, 100, 'trafo') ... @@ -35,11 +35,11 @@ classdef nfsftUnitTests nfsftTestcaseDelegateOnline(128, 10, 'adjoint') ... nfsftTestcaseDelegateOnline(128, 100, 'adjoint') ... nfsftTestcaseDelegateOnline(256, 10, 'adjoint') ... - nfsftTestcaseDelegateOnline(256, 100, 'adjoint') ... }; testcases_online_adjoint_exhaustive = { ... nfsftTestcaseDelegateOnline(128, 1000, 'adjoint') ... + nfsftTestcaseDelegateOnline(256, 100, 'adjoint') ... nfsftTestcaseDelegateOnline(256, 1000, 'adjoint') ... nfsftTestcaseDelegateOnline(512, 10, 'adjoint') ... nfsftTestcaseDelegateOnline(512, 100, 'adjoint') ... diff --git a/support/nfsft.dox b/support/nfsft.dox index 435b6c7d..59568698 100644 --- a/support/nfsft.dox +++ b/support/nfsft.dox @@ -253,8 +253,8 @@ * \li \c x * the array of nodes \f$\mathbf{x}(m) \in * [-\frac{1}{2},\frac{1}{2}] \times [0,\frac{1}{2}]\f$ for \f$m = 0, - * \ldots,M-1\f$ such that \c f[\f$2m\f$\c] = \f$x_1\f$ and - * \c f[\f$2m+1\f$\c] = \f$x_2\f$ + * \ldots,M-1\f$ such that \c x[\f$2m\f$\c] = \f$x_1\f$ and + * \c x[\f$2m+1\f$\c] = \f$x_2\f$ * * \subsection gtn Good to know... * When using the routines of this module you should bear in mind the following: @@ -563,11 +563,11 @@ * \author Jens Keiner */ -/*! \def NFSFT_USE_FSFT +/*! \def NFSFT_EQUISPACED * If this flag is set, we use the equispaced FFT instead of the NFFT. * This implies that the nodes are fixed to * \f[ \varphi_i = 2\pi \frac{i}{2N+2}, \qquad i=-N-1,\dots,N, \f] - * \f[ \vartheta_j = 2\pi \frac{j}{2N+2}, \qquad j=0,\dots,N. \f] + * \f[ \vartheta_j = 2\pi \frac{j}{2N+2}, \qquad j=0,\dots,N+1. \f] * * \author Michael Quellmalz */ diff --git a/tests/Makefile.am b/tests/Makefile.am index 240ca4a3..de074f94 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -2,6 +2,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/include -DSRCDIR=@abs_srcdir@ SUBDIRS= data +if HAVE_CUNIT if HAVE_THREADS if HAVE_OPENMP CHECK_THREADS = checkall_threads @@ -11,6 +12,9 @@ endif else CHECK_THREADS = endif +else + CHECK_THREADS = +endif if HAVE_CUNIT CHECK=checkall diff --git a/tests/bessel.c b/tests/bessel.c index a105dadb..270fa5b9 100644 --- a/tests/bessel.c +++ b/tests/bessel.c @@ -135,15 +135,16 @@ static const R r[] = #define ERR(x,y) IF(ABS(x - y) == K(0.0), ABS(x - y), ABS(x - y) / ABS(y)) #if defined(NFFT_LDOUBLE) -static const R bound = K(58.0) * NFFT_EPSILON; +static const R bound_multiplier = K(58.0); #elif defined(NFFT_SINGLE) -static const R bound = K(24.0) * NFFT_EPSILON; +static const R bound_multiplier = K(24.0); #else -static const R bound = K(4.0) * NFFT_EPSILON; +static const R bound_multiplier = K(4.0); #endif void X(check_bessel_i0)(void) { + R bound = bound_multiplier * Y(float_property)(NFFT_EPSILON); R x = K(0.0); R err = K(0.0); unsigned int j; diff --git a/tests/bspline.c b/tests/bspline.c index 14785d8e..ef5dc71c 100644 --- a/tests/bspline.c +++ b/tests/bspline.c @@ -6323,16 +6323,17 @@ static const R b30[] = #define ERR(x,y) IF(ABS(y) == K(0.0), ABS(x - y), ABS(x - y) / ABS(y)) #if defined(NFFT_LDOUBLE) -static const R bound = K(17.0) * NFFT_EPSILON; +static const R bound_multiplier = K(17.0); #elif defined(NFFT_SINGLE) -static const R bound = K(20.0) * NFFT_EPSILON; +static const R bound_multiplier = K(20.0); #else -static const R bound = K(16.0) * NFFT_EPSILON; +static const R bound_multiplier = K(16.0); #endif static int check_bspline(const unsigned n, const unsigned int m, const R *r) { unsigned int j; + R bound = bound_multiplier * Y(float_property)(NFFT_EPSILON); R err = K(0.0); int ok; diff --git a/tests/check_nfct.m b/tests/check_nfct.m index 3a88dc35..e157ac61 100644 --- a/tests/check_nfct.m +++ b/tests/check_nfct.m @@ -19,13 +19,16 @@ +(* ::Input::Initialization:: *) AppendTo[$Path, NotebookDirectory[]]; <ToString[d]<>"d_"<>StringJoin[Map[Function[x,ToString[x]<>"_"],NN]<>ToString[M]<>".txt"]}]]] GenerateFilenameAdjoint[prefix_][NN_,M_]:=Module[{d=Length[NN] (* Dimension. *)},Return[FileNameJoin[{prefix,"nfct_adjoint_"<>ToString[d]<>"d_"<>StringJoin[Map[Function[x,ToString[x]<>"_"],NN]<>ToString[M]<>".txt"]}]]] Generate[NN_,M_,FilenameGenerator_]:=Module[ @@ -38,7 +41,7 @@ II[[0]]=Sequence; II=Flatten[Outer[List,II],d-1];(* Index set. *) x =Transpose[ Table[RandomReal[{0,1/2},M,WorkingPrecision->P](*Table[1/4,{j,1,M}]*),{i,1,d}]];(* Random nodes. *) -fhat = (*Table[If[i==3,1,0],{i,1,Length[II]}]*) RandomReal[{-1,1},Length[II],WorkingPrecision->P]; (* Random Fourier coefficients. *) +fhat = (*Table[If[i\[Equal]3,1,0],{i,1,Length[II]}]*) RandomReal[{-1,1},Length[II],WorkingPrecision->P]; (* Random Fourier coefficients. *) f=Table[Sum[fhat[[k]]*Product[Cos[2*\[Pi]*II[[k]][[i]]*x[[j]][[i]]],{i,1,d}],{k,1,Length[II]}],{j,1,M}];(* Function values. *) filename=FilenameGenerator[NN,M]; file = OpenWrite[filename]; diff --git a/tests/check_nfct.nb b/tests/check_nfct.nb index 695d8407..00f200c5 100644 --- a/tests/check_nfct.nb +++ b/tests/check_nfct.nb @@ -10,10 +10,10 @@ NotebookFileLineBreakTest NotebookFileLineBreakTest NotebookDataPosition[ 145, 7] -NotebookDataLength[ 47562, 1176] -NotebookOptionsPosition[ 46722, 1146] -NotebookOutlinePosition[ 47111, 1163] -CellTagsIndexPosition[ 47068, 1160] +NotebookDataLength[ 49228, 1199] +NotebookOptionsPosition[ 47714, 1168] +NotebookOutlinePosition[ 48225, 1186] +CellTagsIndexPosition[ 48182, 1183] WindowFrame->Normal*) (* Beginning of Notebook Content *) @@ -45,7 +45,8 @@ Cell[BoxData[{ 3.497721253141778*^9, 3.497721260212431*^9}, {3.4977213873833313`*^9, 3.497721394326082*^9}, {3.4977214268766117`*^9, 3.497721450684969*^9}, 3.517368305980814*^9, 3.517368338946211*^9, {3.548337349389185*^9, - 3.54833735124184*^9}}], + 3.54833735124184*^9}},ExpressionUUID->"d08def02-380d-4a78-a040-\ +650fbbaff617"], Cell[BoxData[ RowBox[{ @@ -57,7 +58,9 @@ Cell[BoxData[ InitializationCell->True, InitializationGroup->True, CellChangeTimes->{{3.5173364544175253`*^9, 3.517336455143111*^9}, { - 3.548337583667452*^9, 3.548337584482711*^9}}], + 3.548337583667452*^9, + 3.548337584482711*^9}},ExpressionUUID->"e179aea0-64f1-4208-8170-\ +a1b3afef541f"], Cell[BoxData[{ RowBox[{ @@ -544,7 +547,9 @@ Cell[BoxData[{ 3.593188530743766*^9, 3.593188552283791*^9}, {3.5931886098703938`*^9, 3.593188613659782*^9}, {3.59318887481059*^9, 3.5931889151003733`*^9}, { 3.593188946789352*^9, 3.593189039411675*^9}, 3.593189097027725*^9, { - 3.5931891428499613`*^9, 3.59318914310351*^9}, 3.593538366087583*^9}], + 3.5931891428499613`*^9, 3.59318914310351*^9}, + 3.593538366087583*^9},ExpressionUUID->"b2101191-5c90-41b4-9c90-\ +8db0700c675a"], Cell[BoxData[ RowBox[{ @@ -557,7 +562,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"NN", "=", RowBox[{"{", - RowBox[{"1", ",", "2", ",", "4", ",", "10", ",", "20", ",", "50"}], + RowBox[{"1", ",", "2", ",", "4", ",", "10", ",", "25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", @@ -581,7 +586,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"M", "=", RowBox[{"{", - RowBox[{"1", ",", "10", ",", "20", ",", "50"}], "}"}]}], ";"}], + RowBox[{"1", ",", "10", ",", "25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", @@ -648,7 +653,9 @@ Cell[BoxData[ 3.591542837929201*^9}, {3.592322290766035*^9, 3.59232229166604*^9}, { 3.5931891661553383`*^9, 3.593189167918091*^9}, {3.59318930167062*^9, 3.593189306206168*^9}, {3.593189412013714*^9, 3.593189412511335*^9}, { - 3.59327456018216*^9, 3.5932745607433968`*^9}}], + 3.59327456018216*^9, 3.5932745607433968`*^9}, {3.795609228118267*^9, + 3.795609235329742*^9}},ExpressionUUID->"49d485e4-c4e0-4ba8-9f5d-\ +106dd7a670ee"], Cell[BoxData[ RowBox[{ @@ -661,7 +668,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"NN", "=", RowBox[{"{", - RowBox[{"1", ",", "2", ",", "4", ",", "10", ",", "20", ",", "50"}], + RowBox[{"1", ",", "2", ",", "4", ",", "10", ",", "25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", @@ -685,7 +692,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"M", "=", RowBox[{"{", - RowBox[{"1", ",", "10", ",", "20", ",", "50"}], "}"}]}], ";"}], + RowBox[{"1", ",", "10", ",", "25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", @@ -730,7 +737,10 @@ Cell[BoxData[ "]"}]}]}]], "Input", CellChangeTimes->{{3.593189194755818*^9, 3.593189238850958*^9}, { 3.593189308082303*^9, 3.593189312920251*^9}, {3.59318941509933*^9, - 3.593189415475584*^9}, {3.59327453400912*^9, 3.593274534716311*^9}}], + 3.593189415475584*^9}, {3.59327453400912*^9, 3.593274534716311*^9}, { + 3.795609242580759*^9, + 3.795609255351746*^9}},ExpressionUUID->"d2a5381d-472f-453f-a932-\ +f7a47cd09f54"], Cell[BoxData[ RowBox[{ @@ -743,7 +753,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"NN", "=", RowBox[{"{", - RowBox[{"10", ",", "20"}], "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"10", ",", "25"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", RowBox[{"Table", "[", @@ -766,7 +776,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"M", "=", RowBox[{"{", - RowBox[{"20", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", RowBox[{"Flatten", "[", @@ -809,13 +819,14 @@ Cell[BoxData[ "\"\\"", ",", " ", "Formatter"}], "]"}]}]}]], "Input", CellChangeTimes->CompressedData[" -1:eJxTTMoPSmViYGAQAWIQvc02e0uu2SvHjHfhW0H04oW39oNoCWG7OyA6f87u +1:eJxTTMoPSmViYGAQBWIQvc02e0uu2SvHjHfhW0H04oW39oNoCWG7OyA6f87u 5yB6TctFMJ1zdOI7EN3TOAdMb9z8SO1d/ivHPSVxWiCaJ2qjAYjetF3PBEQ/ NtG2BtFzVtjZguieu04q74F0wJJYVRBdnX5yddAhoL6052tA9JGNLk9BdPL7 MDBt89uALRhITznCyw6iNZIN5pw9/Mrx0Z4HYJprmvoxEF2jshZMq2yvMDsH pN+x7bcA0beC9fxAtMPCff4gOs/4XP95ID3BeMsEEH3o97tPZUeB5j1j+Qyi -v06wZy0H0lfZfcC0yr+8gLnHgO5sywoE0av9PewWAOnJR2eAaQAqPrJj - "]], +v06wZy0H0lfZfcC0yr+8gLnHgO5sywoE0av9PewWAOnJR2eA6bwPwjd73N84 +LsnhuAWiAZosuqA= + "],ExpressionUUID->"dea7cf02-1f30-4c55-913e-1d4543c63653"], Cell[BoxData[ RowBox[{ @@ -828,7 +839,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"NN", "=", RowBox[{"{", - RowBox[{"10", ",", "20"}], "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"10", ",", "25"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", RowBox[{"Table", "[", @@ -851,10 +862,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"M", "=", RowBox[{"{", - RowBox[{"1", ",", "2"}], - RowBox[{"(*", - RowBox[{"20", ",", "50"}], "*)"}], "}"}]}], ";"}], - "\[IndentingNewLine]", + RowBox[{"25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", RowBox[{"Flatten", "[", @@ -899,7 +907,10 @@ Cell[BoxData[ CellChangeTimes->{{3.593189278068646*^9, 3.593189284894328*^9}, { 3.593189420873682*^9, 3.593189421399495*^9}, {3.593275075595599*^9, 3.593275081980492*^9}, 3.593792151330961*^9, {3.593792207329873*^9, - 3.593792219290654*^9}, {3.5937981230042877`*^9, 3.593798125037159*^9}}], + 3.593792219290654*^9}, {3.5937981230042877`*^9, 3.593798125037159*^9}, { + 3.79560930379634*^9, 3.795609304326085*^9}, {3.795611179882037*^9, + 3.795611198537874*^9}},ExpressionUUID->"4c4bee33-f912-446b-8121-\ +73fc9e4a3157"], Cell[BoxData[ RowBox[{ @@ -911,7 +922,8 @@ Cell[BoxData[ RowBox[{"d", "=", "3"}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", - RowBox[{"{", "10", "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"{", + RowBox[{"5", ",", "10"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", RowBox[{"Table", "[", @@ -933,7 +945,8 @@ Cell[BoxData[ RowBox[{"d", "-", "1"}]}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"M", "=", - RowBox[{"{", "10", "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"{", + RowBox[{"5", ",", "10"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", RowBox[{"Flatten", "[", @@ -984,7 +997,9 @@ Cell[BoxData[ 3.5483471569767027`*^9}, {3.548347414821805*^9, 3.548347416066527*^9}, { 3.5915427341204157`*^9, 3.591542743990086*^9}, {3.591542788982143*^9, 3.5915427947782373`*^9}, {3.593189355304345*^9, 3.593189356127204*^9}, { - 3.593189426850175*^9, 3.5931894272246532`*^9}}], + 3.593189426850175*^9, 3.5931894272246532`*^9}, {3.79561376224041*^9, + 3.79561376955438*^9}},ExpressionUUID->"eae45701-73de-471e-a0a3-\ +0b207837f8a1"], Cell[BoxData[ RowBox[{ @@ -996,7 +1011,8 @@ Cell[BoxData[ RowBox[{"d", "=", "3"}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", - RowBox[{"{", "10", "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"{", + RowBox[{"5", ",", "10"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", RowBox[{"Table", "[", @@ -1018,7 +1034,8 @@ Cell[BoxData[ RowBox[{"d", "-", "1"}]}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"M", "=", - RowBox[{"{", "10", "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"{", + RowBox[{"5", ",", "10"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", RowBox[{"Flatten", "[", @@ -1061,7 +1078,10 @@ Cell[BoxData[ "\"\\"", ",", " ", "Formatter"}], "]"}]}]}]], "Input", CellChangeTimes->{{3.5931893517565947`*^9, 3.593189366525586*^9}, { - 3.593189429437948*^9, 3.593189429912216*^9}}], + 3.593189429437948*^9, 3.593189429912216*^9}, {3.795613694297868*^9, + 3.7956136952668867`*^9}, {3.7956137801241007`*^9, + 3.795613780291707*^9}},ExpressionUUID->"21285066-2aa4-4471-8565-\ +a30f9dc1c82d"], Cell[BoxData[ RowBox[{ @@ -1142,14 +1162,17 @@ Cell[BoxData[ 3.591543710105554*^9}, {3.5915437905916433`*^9, 3.5915437911266193`*^9}, { 3.591543853165766*^9, 3.591543856741955*^9}, {3.591545189200889*^9, 3.591545190137417*^9}, {3.593189432012995*^9, 3.593189432538142*^9}, - 3.593274576174675*^9, {3.593538732977047*^9, 3.5935387337241173`*^9}}] + 3.593274576174675*^9, {3.593538732977047*^9, + 3.5935387337241173`*^9}},ExpressionUUID->"092b44c9-f8a7-4338-a439-\ +701920cdc3df"] }, AutoGeneratedPackage->Automatic, -WindowSize->{1920, 1068}, -WindowMargins->{{0, Automatic}, {Automatic, 0}}, -FrontEndVersion->"8.0 for Mac OS X x86 (32-bit, 64-bit Kernel) (November 6, \ -2010)", -StyleDefinitions->"Default.nb" +WindowSize->{1280.25, 672.75}, +WindowMargins->{{6, Automatic}, {Automatic, 23.25}}, +PrivateNotebookOptions->{"VersionedStylesheet"->{"Default.nb"[8.] -> False}}, +FrontEndVersion->"12.1 for Linux x86 (64-bit) (March 14, 2020)", +StyleDefinitions->"Default.nb", +ExpressionUUID->"b15b8f5e-681a-4dd8-8730-bce54c3c197c" ] (* End of Notebook Content *) @@ -1162,24 +1185,23 @@ CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ -Cell[545, 20, 1621, 27, 43, "Input", +Cell[545, 20, 1678, 28, 67, "Input",ExpressionUUID->"d08def02-380d-4a78-a040-650fbbaff617", InitializationCell->True, InitializationGroup->True], -Cell[2169, 49, 352, 10, 27, "Input", +Cell[2226, 50, 412, 12, 45, "Input",ExpressionUUID->"e179aea0-64f1-4208-8170-a1b3afef541f", InitializationCell->True, InitializationGroup->True], -Cell[2524, 61, 21721, 485, 808, "Input", +Cell[2641, 64, 21782, 487, 1242, "Input",ExpressionUUID->"b2101191-5c90-41b4-9c90-8db0700c675a", InitializationCell->True, InitializationGroup->True], -Cell[24248, 548, 4521, 102, 163, "Input"], -Cell[28772, 652, 2922, 80, 163, "Input"], -Cell[31697, 734, 3029, 83, 163, "Input"], -Cell[34729, 819, 2993, 82, 163, "Input"], -Cell[37725, 903, 3279, 83, 163, "Input"], -Cell[41007, 988, 2702, 75, 163, "Input"], -Cell[43712, 1065, 3006, 79, 163, "Input"] +Cell[24426, 553, 4628, 104, 216, "Input",ExpressionUUID->"49d485e4-c4e0-4ba8-9f5d-106dd7a670ee"], +Cell[29057, 659, 3031, 83, 216, "Input",ExpressionUUID->"d2a5381d-472f-453f-a932-f7a47cd09f54"], +Cell[32091, 744, 3105, 84, 216, "Input",ExpressionUUID->"dea7cf02-1f30-4c55-913e-1d4543c63653"], +Cell[35199, 830, 3083, 82, 216, "Input",ExpressionUUID->"4c4bee33-f912-446b-8121-73fc9e4a3157"], +Cell[38285, 914, 3437, 87, 216, "Input",ExpressionUUID->"eae45701-73de-471e-a0a3-0b207837f8a1"], +Cell[41725, 1003, 2915, 80, 216, "Input",ExpressionUUID->"21285066-2aa4-4471-8565-a30f9dc1c82d"], +Cell[44643, 1085, 3067, 81, 216, "Input",ExpressionUUID->"092b44c9-f8a7-4338-a439-701920cdc3df"] } ] *) -(* End of internal cache information *) diff --git a/tests/check_nfst.m b/tests/check_nfst.m index 5ff3cc36..7b27ae09 100644 --- a/tests/check_nfst.m +++ b/tests/check_nfst.m @@ -19,13 +19,16 @@ +(* ::Input::Initialization:: *) AppendTo[$Path, NotebookDirectory[]]; <ToString[d]<>"d_"<>StringJoin[Map[Function[x,ToString[x]<>"_"],NN]<>ToString[M]<>".txt"]}]]] GenerateFilenameAdjoint[prefix_][NN_,M_]:=Module[{d=Length[NN] (* Dimension. *)},Return[FileNameJoin[{prefix,"nfst_adjoint_"<>ToString[d]<>"d_"<>StringJoin[Map[Function[x,ToString[x]<>"_"],NN]<>ToString[M]<>".txt"]}]]] Generate[NN_,M_,FilenameGenerator_]:=Module[ @@ -38,7 +41,7 @@ II[[0]]=Sequence; II=Flatten[Outer[List,II],d-1];(* Index set. *) x =Transpose[ Table[RandomReal[{0,1/2},M,WorkingPrecision->P](*Table[1/4,{j,1,M}]*),{i,1,d}]];(* Random nodes. *) -fhat = (*Table[If[i==3,1,0],{i,1,Length[II]}]*) RandomReal[{-1,1},Length[II],WorkingPrecision->P]; (* Random Fourier coefficients. *) +fhat = (*Table[If[i\[Equal]3,1,0],{i,1,Length[II]}]*) RandomReal[{-1,1},Length[II],WorkingPrecision->P]; (* Random Fourier coefficients. *) f=Table[Sum[fhat[[k]]*Product[Sin[2*\[Pi]*II[[k]][[i]]*x[[j]][[i]]],{i,1,d}],{k,1,Length[II]}],{j,1,M}];(* Function values. *) filename=FilenameGenerator[NN,M]; file = OpenWrite[filename]; diff --git a/tests/check_nfst.nb b/tests/check_nfst.nb index 7c7187a5..3c7e4164 100644 --- a/tests/check_nfst.nb +++ b/tests/check_nfst.nb @@ -10,10 +10,10 @@ NotebookFileLineBreakTest NotebookFileLineBreakTest NotebookDataPosition[ 145, 7] -NotebookDataLength[ 46895, 1166] -NotebookOptionsPosition[ 46055, 1136] -NotebookOutlinePosition[ 46444, 1153] -CellTagsIndexPosition[ 46401, 1150] +NotebookDataLength[ 48504, 1189] +NotebookOptionsPosition[ 46991, 1158] +NotebookOutlinePosition[ 47502, 1176] +CellTagsIndexPosition[ 47459, 1173] WindowFrame->Normal*) (* Beginning of Notebook Content *) @@ -45,7 +45,8 @@ Cell[BoxData[{ 3.497721253141778*^9, 3.497721260212431*^9}, {3.4977213873833313`*^9, 3.497721394326082*^9}, {3.4977214268766117`*^9, 3.497721450684969*^9}, 3.517368305980814*^9, 3.517368338946211*^9, {3.548337349389185*^9, - 3.54833735124184*^9}}], + 3.54833735124184*^9}},ExpressionUUID->"aed704da-1ca1-45ec-9895-\ +01bb81359921"], Cell[BoxData[ RowBox[{ @@ -57,7 +58,9 @@ Cell[BoxData[ InitializationCell->True, InitializationGroup->True, CellChangeTimes->{{3.5173364544175253`*^9, 3.517336455143111*^9}, { - 3.548337583667452*^9, 3.548337584482711*^9}}], + 3.548337583667452*^9, + 3.548337584482711*^9}},ExpressionUUID->"6204fefe-bda5-445d-b016-\ +e9180f4f42d1"], Cell[BoxData[{ RowBox[{ @@ -537,7 +540,9 @@ Cell[BoxData[{ 3.5935392453978024`*^9, 3.5935392570926237`*^9}, {3.627039083769657*^9, 3.627039093833117*^9}, {3.6270392885431633`*^9, 3.627039331740234*^9}, { 3.627040424610591*^9, 3.627040439399218*^9}, {3.627042128141202*^9, - 3.627042128248746*^9}, {3.627042242514501*^9, 3.62704228882651*^9}}], + 3.627042128248746*^9}, {3.627042242514501*^9, + 3.62704228882651*^9}},ExpressionUUID->"ba255383-05f5-46b2-a338-\ +5e165bdd2957"], Cell[BoxData[ RowBox[{ @@ -550,7 +555,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"NN", "=", RowBox[{"{", - RowBox[{"2", ",", "4", ",", "10", ",", "20", ",", "50"}], "}"}]}], + RowBox[{"2", ",", "4", ",", "10", ",", "25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", @@ -574,7 +579,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"M", "=", RowBox[{"{", - RowBox[{"1", ",", "10", ",", "20", ",", "50"}], "}"}]}], ";"}], + RowBox[{"1", ",", "10", ",", "25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", @@ -640,7 +645,10 @@ Cell[BoxData[ 3.591544996230394*^9, 3.591545006562292*^9}, {3.591545042326754*^9, 3.591545045425953*^9}, {3.5915450820129423`*^9, 3.591545082636587*^9}, { 3.591545161262951*^9, 3.591545163237905*^9}, {3.593538497342165*^9, - 3.593538500841062*^9}, {3.593538562687183*^9, 3.593538593798908*^9}}], + 3.593538500841062*^9}, {3.593538562687183*^9, 3.593538593798908*^9}, { + 3.7956128670127783`*^9, + 3.7956128731195498`*^9}},ExpressionUUID->"db4dd1e0-f389-4bcd-ab01-\ +67153de8be7d"], Cell[BoxData[ RowBox[{ @@ -653,7 +661,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"NN", "=", RowBox[{"{", - RowBox[{"2", ",", "4", ",", "10", ",", "20", ",", "50"}], "}"}]}], + RowBox[{"2", ",", "4", ",", "10", ",", "25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", @@ -677,7 +685,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"M", "=", RowBox[{"{", - RowBox[{"1", ",", "10", ",", "20", ",", "50"}], "}"}]}], ";"}], + RowBox[{"1", ",", "10", ",", "25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", @@ -720,7 +728,10 @@ Cell[BoxData[ "\"\<*testcases_adjoint_1d_file\>\"", ",", " ", "\"\\"", ",", " ", "Formatter"}], "]"}]}]}]], "Input", - CellChangeTimes->{{3.593538598765287*^9, 3.593538620185602*^9}}], + CellChangeTimes->{{3.593538598765287*^9, 3.593538620185602*^9}, { + 3.795612846330943*^9, + 3.795612853721611*^9}},ExpressionUUID->"a95c9889-8689-4c59-9878-\ +05b7b919dbe6"], Cell[BoxData[ RowBox[{ @@ -733,7 +744,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"NN", "=", RowBox[{"{", - RowBox[{"10", ",", "20"}], "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"10", ",", "25"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", RowBox[{"Table", "[", @@ -756,7 +767,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"M", "=", RowBox[{"{", - RowBox[{"20", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", RowBox[{"Flatten", "[", @@ -809,7 +820,9 @@ Cell[BoxData[ 3.593538687490222*^9, 3.593538688326289*^9}, {3.627039685063574*^9, 3.6270396866865997`*^9}, {3.6270397190004463`*^9, 3.627039723448547*^9}, { 3.627040188861188*^9, 3.627040193839114*^9}, {3.627042297138122*^9, - 3.627042302574615*^9}}], + 3.627042302574615*^9}, {3.795612830714613*^9, + 3.795612838837202*^9}},ExpressionUUID->"705f5a01-fc4a-4588-bce8-\ +071baffa5612"], Cell[BoxData[ RowBox[{ @@ -822,7 +835,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"NN", "=", RowBox[{"{", - RowBox[{"10", ",", "20"}], "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"10", ",", "25"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", RowBox[{"Table", "[", @@ -845,10 +858,7 @@ Cell[BoxData[ RowBox[{ RowBox[{"M", "=", RowBox[{"{", - RowBox[{"1", ",", "2"}], - RowBox[{"(*", - RowBox[{"20", ",", "50"}], "*)"}], "}"}]}], ";"}], - "\[IndentingNewLine]", + RowBox[{"25", ",", "50"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", RowBox[{"Flatten", "[", @@ -891,7 +901,9 @@ Cell[BoxData[ "\"\\"", ",", " ", "Formatter"}], "]"}]}]}]], "Input", CellChangeTimes->{{3.593538665067552*^9, 3.593538691601541*^9}, { - 3.6270394191645803`*^9, 3.627039421625848*^9}}], + 3.6270394191645803`*^9, 3.627039421625848*^9}, {3.795612800938916*^9, + 3.795612822545516*^9}},ExpressionUUID->"bae3ce9e-6ad9-43f0-b777-\ +ea3677d63989"], Cell[BoxData[ RowBox[{ @@ -903,7 +915,8 @@ Cell[BoxData[ RowBox[{"d", "=", "3"}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", - RowBox[{"{", "10", "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"{", + RowBox[{"5", ",", "10"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", RowBox[{"Table", "[", @@ -925,7 +938,8 @@ Cell[BoxData[ RowBox[{"d", "-", "1"}]}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"M", "=", - RowBox[{"{", "10", "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"{", + RowBox[{"5", ",", "10"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", RowBox[{"Flatten", "[", @@ -976,7 +990,9 @@ Cell[BoxData[ 3.5483471569767027`*^9}, {3.548347414821805*^9, 3.548347416066527*^9}, { 3.5915450136367273`*^9, 3.591545049924941*^9}, 3.5915450918888407`*^9, { 3.591545168950128*^9, 3.591545169962603*^9}, {3.59353869812422*^9, - 3.5935387078767843`*^9}}], + 3.5935387078767843`*^9}, {3.795613806775816*^9, + 3.7956138137204514`*^9}},ExpressionUUID->"7db9a8f9-5a1f-4b88-8c2d-\ +d49d31b192a6"], Cell[BoxData[ RowBox[{ @@ -988,7 +1004,8 @@ Cell[BoxData[ RowBox[{"d", "=", "3"}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", - RowBox[{"{", "10", "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"{", + RowBox[{"5", ",", "10"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"NN", "=", RowBox[{"Table", "[", @@ -1010,7 +1027,8 @@ Cell[BoxData[ RowBox[{"d", "-", "1"}]}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"M", "=", - RowBox[{"{", "10", "}"}]}], ";"}], "\[IndentingNewLine]", + RowBox[{"{", + RowBox[{"5", ",", "10"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"x", " ", "=", " ", RowBox[{"Flatten", "[", @@ -1052,7 +1070,10 @@ Cell[BoxData[ "\"\<*testcases_adjoint_3d_file\>\"", ",", " ", "\"\\"", ",", " ", "Formatter"}], "]"}]}]}]], "Input", - CellChangeTimes->{{3.593538703953491*^9, 3.5935387170726357`*^9}}], + CellChangeTimes->{{3.593538703953491*^9, 3.5935387170726357`*^9}, { + 3.7956138214482393`*^9, + 3.7956138267476997`*^9}},ExpressionUUID->"47bbb812-da3b-4d8e-a79e-\ +61d7c6e23516"], Cell[BoxData[ RowBox[{ @@ -1132,14 +1153,16 @@ Cell[BoxData[ 3.548347420747239*^9, 3.548347430447401*^9}, {3.591545022249495*^9, 3.5915450523366613`*^9}, {3.591545093100852*^9, 3.591545094948818*^9}, { 3.591545173675761*^9, 3.5915451743999863`*^9}, {3.593538740179062*^9, - 3.593538746648733*^9}}] + 3.593538746648733*^9}},ExpressionUUID->"c9262d68-6bf7-4f97-bac6-\ +e7a79d892da1"] }, AutoGeneratedPackage->Automatic, -WindowSize->{1920, 1068}, -WindowMargins->{{1, Automatic}, {Automatic, 0}}, -FrontEndVersion->"8.0 for Mac OS X x86 (32-bit, 64-bit Kernel) (November 6, \ -2010)", -StyleDefinitions->"Default.nb" +WindowSize->{1279.5, 705.75}, +WindowMargins->{{Automatic, -5.25}, {-9, Automatic}}, +PrivateNotebookOptions->{"VersionedStylesheet"->{"Default.nb"[8.] -> False}}, +FrontEndVersion->"12.1 for Linux x86 (64-bit) (March 14, 2020)", +StyleDefinitions->"Default.nb", +ExpressionUUID->"1f38b35e-1d2b-472d-b622-b26657272f43" ] (* End of Notebook Content *) @@ -1152,24 +1175,23 @@ CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ -Cell[545, 20, 1621, 27, 43, "Input", +Cell[545, 20, 1678, 28, 67, "Input",ExpressionUUID->"aed704da-1ca1-45ec-9895-01bb81359921", InitializationCell->True, InitializationGroup->True], -Cell[2169, 49, 352, 10, 27, "Input", +Cell[2226, 50, 412, 12, 45, "Input",ExpressionUUID->"6204fefe-bda5-445d-b016-e9180f4f42d1", InitializationCell->True, InitializationGroup->True], -Cell[2524, 61, 21193, 478, 808, "Input", +Cell[2641, 64, 21254, 480, 1242, "Input",ExpressionUUID->"ba255383-05f5-46b2-a338-5e165bdd2957", InitializationCell->True, InitializationGroup->True], -Cell[23720, 541, 4456, 101, 163, "Input"], -Cell[28179, 644, 2768, 78, 163, "Input"], -Cell[30950, 724, 3467, 87, 163, "Input"], -Cell[34420, 813, 2824, 80, 163, "Input"], -Cell[37247, 895, 3263, 83, 163, "Input"], -Cell[40513, 980, 2653, 74, 163, "Input"], -Cell[43169, 1056, 2882, 78, 163, "Input"] +Cell[23898, 546, 4571, 104, 216, "Input",ExpressionUUID->"db4dd1e0-f389-4bcd-ab01-67153de8be7d"], +Cell[28472, 652, 2877, 81, 216, "Input",ExpressionUUID->"a95c9889-8689-4c59-9878-05b7b919dbe6"], +Cell[31352, 735, 3574, 89, 216, "Input",ExpressionUUID->"705f5a01-fc4a-4588-bce8-071baffa5612"], +Cell[34929, 826, 2864, 79, 216, "Input",ExpressionUUID->"bae3ce9e-6ad9-43f0-b777-ea3677d63989"], +Cell[37796, 907, 3426, 87, 216, "Input",ExpressionUUID->"7db9a8f9-5a1f-4b88-8c2d-d49d31b192a6"], +Cell[41225, 996, 2820, 79, 216, "Input",ExpressionUUID->"47bbb812-da3b-4d8e-a79e-61d7c6e23516"], +Cell[44048, 1077, 2939, 79, 216, "Input",ExpressionUUID->"c9262d68-6bf7-4f97-bac6-e7a79d892da1"] } ] *) -(* End of internal cache information *) diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 5da74324..45666b80 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -1,68 +1,68 @@ EXTRA_DIST = nfct_1d_10_1.txt \ nfct_1d_10_10.txt \ -nfct_1d_10_20.txt \ +nfct_1d_10_25.txt \ nfct_1d_10_50.txt \ nfct_1d_1_1.txt \ nfct_1d_1_10.txt \ -nfct_1d_1_20.txt \ +nfct_1d_1_25.txt \ nfct_1d_1_50.txt \ -nfct_1d_20_1.txt \ -nfct_1d_20_10.txt \ -nfct_1d_20_20.txt \ -nfct_1d_20_50.txt \ +nfct_1d_25_1.txt \ +nfct_1d_25_10.txt \ +nfct_1d_25_25.txt \ +nfct_1d_25_50.txt \ nfct_1d_2_1.txt \ nfct_1d_2_10.txt \ -nfct_1d_2_20.txt \ +nfct_1d_2_25.txt \ nfct_1d_2_50.txt \ nfct_1d_4_1.txt \ nfct_1d_4_10.txt \ -nfct_1d_4_20.txt \ +nfct_1d_4_25.txt \ nfct_1d_4_50.txt \ nfct_1d_50_1.txt \ nfct_1d_50_10.txt \ -nfct_1d_50_20.txt \ +nfct_1d_50_25.txt \ nfct_1d_50_50.txt \ -nfct_2d_10_10_20.txt \ +nfct_2d_10_10_25.txt \ nfct_2d_10_10_50.txt \ -nfct_2d_10_20_20.txt \ -nfct_2d_10_20_50.txt \ -nfct_2d_20_10_20.txt \ -nfct_2d_20_10_50.txt \ -nfct_2d_20_20_20.txt \ -nfct_2d_20_20_50.txt \ +nfct_2d_10_25_25.txt \ +nfct_2d_10_25_50.txt \ +nfct_2d_25_10_25.txt \ +nfct_2d_25_10_50.txt \ +nfct_2d_25_25_25.txt \ +nfct_2d_25_25_50.txt \ nfct_3d_10_10_10_10.txt \ nfct_adjoint_1d_10_1.txt \ nfct_adjoint_1d_10_10.txt \ -nfct_adjoint_1d_10_20.txt \ +nfct_adjoint_1d_10_25.txt \ nfct_adjoint_1d_10_50.txt \ nfct_adjoint_1d_1_1.txt \ nfct_adjoint_1d_1_10.txt \ -nfct_adjoint_1d_1_20.txt \ +nfct_adjoint_1d_1_25.txt \ nfct_adjoint_1d_1_50.txt \ -nfct_adjoint_1d_20_1.txt \ -nfct_adjoint_1d_20_10.txt \ -nfct_adjoint_1d_20_20.txt \ -nfct_adjoint_1d_20_50.txt \ +nfct_adjoint_1d_25_1.txt \ +nfct_adjoint_1d_25_10.txt \ +nfct_adjoint_1d_25_25.txt \ +nfct_adjoint_1d_25_50.txt \ nfct_adjoint_1d_2_1.txt \ nfct_adjoint_1d_2_10.txt \ -nfct_adjoint_1d_2_20.txt \ +nfct_adjoint_1d_2_25.txt \ nfct_adjoint_1d_2_50.txt \ nfct_adjoint_1d_4_1.txt \ nfct_adjoint_1d_4_10.txt \ -nfct_adjoint_1d_4_20.txt \ +nfct_adjoint_1d_4_25.txt \ nfct_adjoint_1d_4_50.txt \ nfct_adjoint_1d_50_1.txt \ nfct_adjoint_1d_50_10.txt \ -nfct_adjoint_1d_50_20.txt \ +nfct_adjoint_1d_50_25.txt \ nfct_adjoint_1d_50_50.txt \ -nfct_adjoint_2d_10_10_20.txt \ +nfct_adjoint_2d_10_10_25.txt \ nfct_adjoint_2d_10_10_50.txt \ -nfct_adjoint_2d_10_20_20.txt \ -nfct_adjoint_2d_10_20_50.txt \ -nfct_adjoint_2d_20_10_20.txt \ -nfct_adjoint_2d_20_10_50.txt \ -nfct_adjoint_2d_20_20_20.txt \ -nfct_adjoint_2d_20_20_50.txt \ +nfct_adjoint_2d_10_25_25.txt \ +nfct_adjoint_2d_10_25_50.txt \ +nfct_adjoint_2d_25_10_25.txt \ +nfct_adjoint_2d_25_10_50.txt \ +nfct_adjoint_2d_25_25_25.txt \ +nfct_adjoint_2d_25_25_50.txt \ nfct_adjoint_3d_10_10_10_10.txt \ nfft_1d_10_1.txt \ nfft_1d_10_10.txt \ @@ -132,64 +132,59 @@ nfft_adjoint_2d_20_20_50.txt \ nfft_adjoint_3d_10_10_10_10.txt \ nfst_1d_10_1.txt \ nfst_1d_10_10.txt \ -nfst_1d_10_2.txt \ -nfst_1d_10_20.txt \ +nfst_1d_10_25.txt \ nfst_1d_10_50.txt \ -nfst_1d_20_1.txt \ -nfst_1d_20_10.txt \ -nfst_1d_20_2.txt \ -nfst_1d_20_20.txt \ -nfst_1d_20_50.txt \ +nfst_1d_25_1.txt \ +nfst_1d_25_10.txt \ +nfst_1d_25_25.txt \ +nfst_1d_25_50.txt \ nfst_1d_2_1.txt \ nfst_1d_2_10.txt \ -nfst_1d_2_2.txt \ -nfst_1d_2_20.txt \ +nfst_1d_2_25.txt \ nfst_1d_2_50.txt \ nfst_1d_4_1.txt \ nfst_1d_4_10.txt \ -nfst_1d_4_2.txt \ -nfst_1d_4_20.txt \ +nfst_1d_4_25.txt \ nfst_1d_4_50.txt \ nfst_1d_50_1.txt \ nfst_1d_50_10.txt \ -nfst_1d_50_2.txt \ -nfst_1d_50_20.txt \ +nfst_1d_50_25.txt \ nfst_1d_50_50.txt \ -nfst_2d_10_10_20.txt \ +nfst_2d_10_10_25.txt \ nfst_2d_10_10_50.txt \ -nfst_2d_10_20_20.txt \ -nfst_2d_10_20_50.txt \ -nfst_2d_20_10_20.txt \ -nfst_2d_20_10_50.txt \ -nfst_2d_20_20_20.txt \ -nfst_2d_20_20_50.txt \ +nfst_2d_10_25_25.txt \ +nfst_2d_10_25_50.txt \ +nfst_2d_25_10_25.txt \ +nfst_2d_25_10_50.txt \ +nfst_2d_25_25_25.txt \ +nfst_2d_25_25_50.txt \ nfst_3d_10_10_10_10.txt \ nfst_adjoint_1d_10_1.txt \ nfst_adjoint_1d_10_10.txt \ -nfst_adjoint_1d_10_20.txt \ +nfst_adjoint_1d_10_25.txt \ nfst_adjoint_1d_10_50.txt \ -nfst_adjoint_1d_20_1.txt \ -nfst_adjoint_1d_20_10.txt \ -nfst_adjoint_1d_20_20.txt \ -nfst_adjoint_1d_20_50.txt \ +nfst_adjoint_1d_25_1.txt \ +nfst_adjoint_1d_25_10.txt \ +nfst_adjoint_1d_25_25.txt \ +nfst_adjoint_1d_25_50.txt \ nfst_adjoint_1d_2_1.txt \ nfst_adjoint_1d_2_10.txt \ -nfst_adjoint_1d_2_20.txt \ +nfst_adjoint_1d_2_25.txt \ nfst_adjoint_1d_2_50.txt \ nfst_adjoint_1d_4_1.txt \ nfst_adjoint_1d_4_10.txt \ -nfst_adjoint_1d_4_20.txt \ +nfst_adjoint_1d_4_25.txt \ nfst_adjoint_1d_4_50.txt \ nfst_adjoint_1d_50_1.txt \ nfst_adjoint_1d_50_10.txt \ -nfst_adjoint_1d_50_20.txt \ +nfst_adjoint_1d_50_25.txt \ nfst_adjoint_1d_50_50.txt \ -nfst_adjoint_2d_10_10_20.txt \ +nfst_adjoint_2d_10_10_25.txt \ nfst_adjoint_2d_10_10_50.txt \ -nfst_adjoint_2d_10_20_20.txt \ -nfst_adjoint_2d_10_20_50.txt \ -nfst_adjoint_2d_20_10_20.txt \ -nfst_adjoint_2d_20_10_50.txt \ -nfst_adjoint_2d_20_20_20.txt \ -nfst_adjoint_2d_20_20_50.txt \ +nfst_adjoint_2d_10_25_25.txt \ +nfst_adjoint_2d_10_25_50.txt \ +nfst_adjoint_2d_25_10_25.txt \ +nfst_adjoint_2d_25_10_50.txt \ +nfst_adjoint_2d_25_25_25.txt \ +nfst_adjoint_2d_25_25_50.txt \ nfst_adjoint_3d_10_10_10_10.txt \ No newline at end of file diff --git a/tests/data/nfct_1d_10_20.txt b/tests/data/nfct_1d_10_20.txt deleted file mode 100644 index f4d939b4..00000000 --- a/tests/data/nfct_1d_10_20.txt +++ /dev/null @@ -1,59 +0,0 @@ -1 - -10 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 --0.07838835742104840389052756169146943544000206230123216084325830017 --0.3158305122954834491361879876118745635891842225287967281157858672 -0.3458309153991207858067077092337332970573207566667458110876416196 --0.01097686940732606761440422015891875954490441842087149586770120005 -0.2626555858903124974165091427737336367005240661151773835219310271 - -0.16056894549015343425055544384856047549129866134114649281981871 --0.61092664263250442564378128671633679981416447848249482734229068 -0.92319830487778248368744006849690731739751613775027208021359258 --0.3558166076480162502955400855887592615746085396236438374278862 --1.26456425645217775727617693964448910743146718546245994417920591 -0.92360150245730436201786209412632560290284688770297784604422352 --0.534000130441089182347217670063372454747015643879672842756170322 -0.88920800220996353487072252475715745376296405089261795787541144 -0.71688687748022809173281537755468804006011823588371465844890693 -0.5442470989409346612652530503212302653592903522005957369552839 -0.13428418491648772153303549341411119585989479347329789724359567 -0.6483451547843813588181141579078938933516733927545908485281856 --1.132295085880124092561599858752265512078273132024249685488532205 --0.08089039317623325671225825925932689504576871085704552941063149 --0.986618493610978676735990350349808190102494834124714077608848991 --1.633676719926195708732712373088119045866444948137080333314635469 -0.81841541066371774640443401020932199864912922195420751808472887 --1.374025944932203084531763460475579955649708785469719294834037864 --0.74928304500663225143951825446837599090359407826224103155099722 -0.92259735487922954389121839252499173765705106385076842777572286 - diff --git a/tests/data/nfst_1d_20_20.txt b/tests/data/nfct_1d_10_25.txt similarity index 50% rename from tests/data/nfst_1d_20_20.txt rename to tests/data/nfct_1d_10_25.txt index c4885665..834d6ce9 100644 --- a/tests/data/nfst_1d_20_20.txt +++ b/tests/data/nfct_1d_10_25.txt @@ -1,8 +1,8 @@ 1 -20 +10 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 0.3617754793224075120106402493333532892515347077462591193717225348 @@ -24,12 +24,12 @@ 0.03079002005616818689379437555430409384272056975521080286977436553 0.1993205021632423713244796634655407513154492251671262244936746809 0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 -0.07838835742104840389052756169146943544000206230123216084325830017 -0.3158305122954834491361879876118745635891842225287967281157858672 0.3458309153991207858067077092337332970573207566667458110876416196 @@ -40,29 +40,30 @@ 0.9495591103622864735737804468916775971319894153057637661282509133 0.1280772471342585841455757702545741213596517009855068302808317718 -0.1946943926350927100029394214607870756382213566654573743676056718 --0.8391269337210497321784330437702418478537689733296865638890089907 -0.09000979948494377602070534800332955914923353808674104151336312387 --0.1766812336766545879148652249537685082960598655086779135604123172 --0.1002499995910402071291914694552929590775602478191912580994509247 -1.9204467613223434130615888633063424421645077096488251368679042 --0.94568199252941667444264109377175280737076078223383978725852017 -1.99755413517302134475940667748317828569662628502750075788174843 -1.30118961379569866340032821809379808419564712517817244225554151 --1.79257220359149596509756182271246744854499229878508850079839947 -1.9901055052487944829678767393754971042075781688968922574204886 -0.197276224125521743689275480967273934690091447513125875768077 --0.41122535752096118023154595081532171334577327883794162514233766 --1.4352399741626618770064697842292076596453244043832712902296841 --1.6197205847727729620387819710113906859873142265798135535589807 -1.8662065228992906988284140343275095353483179366105341023220793 -1.3441315842590245664277757014818217350024879583252854560222531 --0.916776059919034404507355552653905962787046960140363003704210884 -1.2661949719431837227994706521140217275619678833855596757217487 --0.962890654499348645791785594349460721039267291985620919765313728 --1.32575610411863322196308441966610749197775438041721381265174129 -0.46842899224077019874363102071333977838301680071897133196322562 --0.1695573372091627062790807158483571686220919601913278985371632 --3.39306802116806820662335228544534491424481829330136172693369433 --0.81394614284247381110255005017919464761476628996967175402492112 +0.98442203636632787237263312983366617526469784542776920739617075 +-1.49523975963317840755391176509799256195176324749158749191037292 +0.94964752939881062070281467643204036821280527237710337170576712 +0.1859800972723871567226736320982870783510064250090498944508714 +-1.65686735722762407016150456488552916154796953985356534025130456 +0.95247719497232135038374305200194881661649205836267946026451433 +0.067583621133304384723540863737561824467778911676876939870907361 +1.41594414041289297969838498748541611291703708998090287788667213 +1.15934372670201147793017386003806570657130231551811682764893737 +0.92939830791937737584511075033960061981706303754437348617817093 +0.95460691622726838971995085341650526833148721526174568622401833 +1.35394762280048680419081668391362107462720652139715519086839357 +-0.110562461344395345917655513913424379555904081008175298578880268 +0.67254415938892777267983763556041822630059323996681293929034702 +-0.069259951834212169422273718296351255550368829323334348010398625 +-0.10766494100684364085358978499043392816993635110601554095979954 +1.09335084073494659109294545245963771718128524666860160209111636 +-0.181609153890858614240348211473630728828988542762412004800044366 +-1.97862510233355519390942309357356253107895999209259937594500881 +1.55020961495764564890862498260363763306114673170380374612486919 +0.27876909791353710880287216795193742740857763389906784918919866 +-0.096121316408733346178830994626741623306940756410677635459113054 +0.4188013445512569182161788964730219814506892561294213480898359 +0.51015293162511929094895076522608078607942747620114446519517112 +-0.44853380938850365758259442210689903261292810111607163095678495 diff --git a/tests/data/nfct_1d_1_20.txt b/tests/data/nfct_1d_1_20.txt deleted file mode 100644 index 584f50aa..00000000 --- a/tests/data/nfct_1d_1_20.txt +++ /dev/null @@ -1,50 +0,0 @@ -1 - -1 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --0.4413098759704276115157486122940138778382450314554048934666388869 - --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.4413098759704276115157486122940138778382450314554048934666388869 - diff --git a/tests/data/nfct_1d_1_25.txt b/tests/data/nfct_1d_1_25.txt new file mode 100644 index 00000000..03de1b39 --- /dev/null +++ b/tests/data/nfct_1d_1_25.txt @@ -0,0 +1,60 @@ +1 + +1 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +-0.07838835742104840389052756169146943544000206230123216084325830017 + +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.07838835742104840389052756169146943544000206230123216084325830017 + diff --git a/tests/data/nfct_1d_20_20.txt b/tests/data/nfct_1d_20_20.txt deleted file mode 100644 index f34b79f5..00000000 --- a/tests/data/nfct_1d_20_20.txt +++ /dev/null @@ -1,69 +0,0 @@ -1 - -20 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 --0.07838835742104840389052756169146943544000206230123216084325830017 --0.3158305122954834491361879876118745635891842225287967281157858672 -0.3458309153991207858067077092337332970573207566667458110876416196 --0.01097686940732606761440422015891875954490441842087149586770120005 -0.2626555858903124974165091427737336367005240661151773835219310271 --0.4833001744929688887627302318231007732586579925667420767092911497 --0.6470889183313806476439784979725465604750285292906649332158905915 -0.9495591103622864735737804468916775971319894153057637661282509133 -0.1280772471342585841455757702545741213596517009855068302808317718 --0.1946943926350927100029394214607870756382213566654573743676056718 --0.8391269337210497321784330437702418478537689733296865638890089907 -0.09000979948494377602070534800332955914923353808674104151336312387 --0.1766812336766545879148652249537685082960598655086779135604123172 --0.1002499995910402071291914694552929590775602478191912580994509247 -0.8558312786548114618473704491843378278983698142481509704680004653 - -0.4790185289334465592951109742376629012853913159184133772638562 --0.2573928610197776111171018223647761716875249998878371452180352 -2.5167767887118458542117919917227830341210435917054814385276732 -0.3344611353970216717447355030076451650906913421500055150109923 --2.85313296318710402916232328230338987306401018501363608977608431 -2.5136294524644936676221924721212076247793934618330167597777453 -0.40501567285315209963437887121664542698984878708708958878592049 --1.58297048447156555880656144770783610554740760069036837158898007 --0.2674896173708194399795151279901243268289012617569966053555094 --1.2604509142619383038967416587587555573874994908820514239476027 -0.2992475933167000535149683975504755059373581115482563214384534 -2.7615032988146267416753099624234448357953409527457932396788514 --1.54870508576709954126202082109471592950939092334961113126562617 --1.0435750568351762815233809744364609760811498785230417772018034 --1.49379664704895220981555848234069700200126911972683146878499743 --1.85548591634712905371366766818917342005342437926736278301196155 --0.64943014602091935799176782375038348959729730184804692182679049 --1.17676196740181683379738363369482998100305138004725314044696684 --2.74177456087954184894967937338040318619077141573659040849348996 --1.70778645737946928979215157998813104159698862897721177384940458 - diff --git a/tests/data/nfst_1d_20_1.txt b/tests/data/nfct_1d_25_1.txt similarity index 74% rename from tests/data/nfst_1d_20_1.txt rename to tests/data/nfct_1d_25_1.txt index d63e7685..ad85c18f 100644 --- a/tests/data/nfst_1d_20_1.txt +++ b/tests/data/nfct_1d_25_1.txt @@ -1,6 +1,6 @@ 1 -20 +25 1 @@ -25,6 +25,12 @@ -0.8768399197753272524248224977827836246291177209791567885209025379 -0.2027179913470305147020813461378369947382030993314951020253012762 0.1375057760993413749724126299163162462121619232755876011030820512 +-0.4413098759704276115157486122940138778382450314554048934666388869 +-0.9286394390238346619050912089405834508747965422378917835718069263 +-0.4763986698707299918532811013155870587476071700798709986377725737 +0.2184244610344805776516307003112049282480936070481769173095132673 +0.5284655557490481515292532588784919125603831832265742904204270183 +-0.07838835742104840389052756169146943544000206230123216084325830017 -3.3917764338735925128924784207898505844314078733398900348497873 +4.6078379743145557729410137062605951271806135232325284167608987 diff --git a/tests/data/nfst_1d_20_10.txt b/tests/data/nfct_1d_25_10.txt similarity index 65% rename from tests/data/nfst_1d_20_10.txt rename to tests/data/nfct_1d_25_10.txt index f61977de..13a3defd 100644 --- a/tests/data/nfst_1d_20_10.txt +++ b/tests/data/nfct_1d_25_10.txt @@ -1,6 +1,6 @@ 1 -20 +25 10 @@ -34,15 +34,21 @@ -0.3158305122954834491361879876118745635891842225287967281157858672 0.3458309153991207858067077092337332970573207566667458110876416196 -0.01097686940732606761440422015891875954490441842087149586770120005 +0.2626555858903124974165091427737336367005240661151773835219310271 +-0.4833001744929688887627302318231007732586579925667420767092911497 +-0.6470889183313806476439784979725465604750285292906649332158905915 +0.9495591103622864735737804468916775971319894153057637661282509133 +0.1280772471342585841455757702545741213596517009855068302808317718 +-0.1946943926350927100029394214607870756382213566654573743676056718 --2.2223728610347613542848829155174119055665332546107640287123094 --0.1128819695314852602068200809430218041805103785922665888184966 --1.29444935519520365448522159669324275519676031166404801696393346 --0.4501445109607015764349198311652839723655897563674642151749487 --0.88635290957262481599258096944363344440994902187559040489365489 --1.29854444343910818965119869973017712170316921081161292162969615 --0.0686011076864133020635986908654531268254402477538110957605703 -1.96470669060643544503048599426187450978280208440634270648688405 --1.6436858915699448125209533301449705060729443458864323795272999 --0.7897314323353096620899656998553211110652962777184151417198696 +0.6820630659705079343639753072636145556973958517644576620285853 +4.1974096122362364594640791496558229943365222034495409611625381 +-1.8606915636327880224591742969312915395635276945653907031258349 +-1.4803658718763477087781318181288462406123218843349798602802516 +-0.53446734424438089745258935326420318343179464937479716291054046 +-1.8531618919144825631228484514437832846817778260475394688213601 +-0.92444204901563655980065262481330521527900785701791253357568961 +-0.1348601844280030031659009444729592517136722609238793871878476 +-2.0821879270358711434887665622231373227819952334044805564999126 +-1.1812287344774820838917387563968003882377356349146986350655181 diff --git a/tests/data/nfct_1d_25_25.txt b/tests/data/nfct_1d_25_25.txt new file mode 100644 index 00000000..9062c5b1 --- /dev/null +++ b/tests/data/nfct_1d_25_25.txt @@ -0,0 +1,84 @@ +1 + +25 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.3158305122954834491361879876118745635891842225287967281157858672 +0.3458309153991207858067077092337332970573207566667458110876416196 +-0.01097686940732606761440422015891875954490441842087149586770120005 +0.2626555858903124974165091427737336367005240661151773835219310271 +-0.4833001744929688887627302318231007732586579925667420767092911497 +-0.6470889183313806476439784979725465604750285292906649332158905915 +0.9495591103622864735737804468916775971319894153057637661282509133 +0.1280772471342585841455757702545741213596517009855068302808317718 +-0.1946943926350927100029394214607870756382213566654573743676056718 +-0.8391269337210497321784330437702418478537689733296865638890089907 +0.09000979948494377602070534800332955914923353808674104151336312387 +-0.1766812336766545879148652249537685082960598655086779135604123172 +-0.1002499995910402071291914694552929590775602478191912580994509247 +0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 + +0.2217666499116560750222410690298708865021654320831205687541453 +-1.0499988147206251742772871605597754974966582239200215315821731 +-0.8695937253205656315946650767684545161598346028820238095315645 +-0.2615987718894737888537558062139012647814979898057954510997811 +-3.2980308553744248922762097685754594515591739110893820402875462 +-0.8685008601499962068011693716861462495625220321304265474109351 +-1.87738174348043771496194084440873625104677679710447469784512195 +3.6046326877582649628429211254148807270599905464328285644576565 +0.0528705021447608196816464351187193940917889013420207303256487 +0.954769653684148679710683624176522973371206550044277638915044 +-0.0768645903023677885933360498451078279015070901651480358754467 +3.2888560593771591993064182084858924188025328467110278256642969 +-1.2843536396193613071375044606578153009217242261526326160636966 +-2.1603632072992117198774593480923693783930049456081436014121054 +0.40776679112808262356132989570601739465121253693500820532903136 +-3.22094983801112215072065649387376760381105085310047477638055499 +0.4421315933724310860162931728462145620322766443979330756758726 +-2.72510719085198313113126171686879746951646299227500040772195458 +-2.7641720240025580420671965181327713329020806372586123631507262 +4.7231940296650007937682027262826620460371137733408338060925936 +-0.44198072470484851067921713858629679797047330093521864406111375 +-0.75144289944890097241588427190049688558754277582440512928435009 +0.29880598232097890942620157205949169704698456238605348477987784 +-3.3949529376344501153925201900357110855062551678927978071293011 +-0.2021891974261206207343245721598147645436742084944253705469548 + diff --git a/tests/data/nfst_1d_20_50.txt b/tests/data/nfct_1d_25_50.txt similarity index 56% rename from tests/data/nfst_1d_20_50.txt rename to tests/data/nfct_1d_25_50.txt index 288ebe7e..e577fb4a 100644 --- a/tests/data/nfst_1d_20_50.txt +++ b/tests/data/nfct_1d_25_50.txt @@ -1,6 +1,6 @@ 1 -20 +25 50 @@ -74,55 +74,61 @@ 0.7727562160593342436881229708062656539223995010850938445718232095 0.2216455512897554102911455213296037106714896153079531893725412128 0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 -0.6990664979896484107450404742286744286521137451603374137306255 -0.024824136847026787709244056824625791583581836246595273460098 -1.38159340660199720688749038338665587526735169923793014844058421 -0.0875212853275566558477594599279756340557999577585457383348718 -1.05518751135334886032076847142334118314189775959708428610724172 -1.374560767287194223069861665205075911525050881925080756113872 -0.0680138725082378698555820259406731389383934389884415961743566 --3.2969640935280964357765480918507825692104662517911554201509375 -0.8824353032943382991547856272066609357500800364933960631027146 --0.7523153637512070934968039520911962085378534486175741123926691 -0.6831091979244390547429794045286409870227534227397796424545321 -2.2770771487981583785579748672987325246959873781622886897217156 -0.17488464765491574964148103864724225848079483410767666100612291 -0.8866413128297430614426983146870888098159621825437327925014389 -0.912145336600598855310423559915700724446731379986740065138192475 --0.7890298517459237861203117929739287365886017988861801623044799 --2.9218722289917966169041320255477840191328666075969948292107561 --1.81847668253005108796264412599027580164711404124257905211084717 --2.24649153023543960344941832025178618466649980382589456922322292 --3.2189681195084267877070636739614606509057401224815221920841952 --3.68449566613925555355340962333722468412450475809631977474197591 -0.524238787587334941086016610502652080263189647892387129845599 --2.19157660592293108136151789322485694054866768668955013549618145 --1.7070193853597030059616182832029551787592732774261230676481047 -2.7756069506156476252111659307578015191884673200023558607897091 -0.6870730313595727143359797195234171950386540195384862819193889 -1.13427957427730160952338066225706661479955553158554985462296392 --1.0758420341958422881638647700766904448876869199157108598163105 -2.20839414773792069940825443293383048164760189325865795438804409 --0.2592547021491574950496715970008106399505984713487501812721887 --1.86166549231568500639618550535485742928408152504541362094888587 --1.1049536678158494959755490407104024637613066670313878941141853 -0.1984957253138109491060216206873930421452997101792725416880634 --3.0718887148639526034615408797557159312153322466659967387742161 --2.59785657506074186685399756055406559067831838119841952498015565 --2.91058417188041511669087649940164062615289237648104312101427754 --1.8407838154633458925934449205009313104378270981104927078646802 --3.09214814557884936406279669379146934456264746316929224230412227 --0.57958160608740601422317092669478310808833017304991087331781364 --1.4685509919460049582936956486560447064247165719898576926048266 -2.7192644014348827918759691514160195867796264076665278722297826 -1.8143212013774219228090465418104540029296415156612269086534478 -0.2170481154667864976253573371361067068711185535022045202725998 -0.0494573271062685404949107587233985079067203094521821555853418 -1.4896431118517228484628125528732332100062125437049615490474139 --2.12777261605703334205303836299004936006612669279976795849332692 -2.6686104403001849620739489986624072946028062428274089118746407 --3.97605841512196319502818107107943940466286105613519579366258134 --2.47407586408496035810429931680207706582387915070295462524348548 --1.7370056125195930399645547742360592758625570488380141109062899 +-0.1386362558075076757587261133077995769614649494847989112986756 +-2.6411672050639892423085713623503811821935415577277161103155249 +1.9126213208617383369173048328570254023691273578684026356494608 +-0.4264542884264193711714911037756761333893550462210782552825737 +-0.1668489846309109689297120873634852868634581009896731694962124 +1.8992010051407774429301017112469230391393000108056511599065721 +0.12626089774283686256251549334653053516759299641925829235682911 +-2.5615899741923681695773371231719488179995455263907566510828471 +2.5439513454427712509737647628903098240713340309150841242254243 +1.6904808732818809658445592702073284239528148043809117516796087 +-0.0854673599725136139920991568501711393896125363870410080904026 +0.8661058176933883671309554657979127533035365798851614713769068 +-3.08893370230681007297177937928654787511133931111202709365123003 +0.5638140766318603763328438081692714157221833296319552712705055 +-1.75001582656365726147864272973438528865544794732836211156854991 +-3.08289234842600857824289625154237308910418108117267395938913886 +-2.4139533657740715602300597304878849973807120990860491711564213 +-4.02440399397561894084942043232613940250963107188099900387722148 +-0.9098452806424833133981914269250172542198949264893785727874489 +-2.7121389269016254090642253909508863761288850017973891702243857 +-3.67375247890173446460729615743923626109872922554703026653844242 +-2.67263745497432966383528745779372298308158116001746451941845705 +-4.80459284444520378380399657924110962153722562574437613890833348 +-2.3270236469449395735286746433364594794326790028485975318949248 +1.1577705380659912199526894193664423314709041344484621344305447 +0.263822102489208796424058828451899479443983373850139730678808 +0.49416294382349790694505009709610953270487119124837098937992727 +-0.8263860040347594538200930239839930861253069445423066565229064 +3.4863397872837105033435196216903389621338460394214587489543364 +-1.656431976471853461965277478339618859480451230220552657016343 +-4.66517606010120804416357700125790510965169756938875340115974481 +-2.75666896962122126884219437129928333331913799304551837311243732 +-0.3071517540609830356944311676656600643556039678833676975098519 +-2.7852437041239918072837021091393036156323180779012600036303292 +-1.2097417414494757349351278318032122190347116571495772247424083 +-2.73536905588395716723098284390351132902820466405782246238982417 +-2.4938934449549336735777810685137317702608881892790356293554717 +-1.9709128778024797814128935703875269457377339712472099517930335 +-1.5293267982319973403290329969488492097590746376533813646167366 +0.3795778425839743788644130281365892927328904450269884587161061 +1.3555097888600412624134658910876906013373612981484196042304125 +2.3837054716717336368689130705397395307091663388366594988649332 +-0.2773546578768291659379010003348579908305473639039744848308218 +0.13007024402901567393270869612401940653377394882992654488134271 +-0.0615134081858694029103456264947238915842809332973973764092004 +-3.95636803778886356426672394440135919664548200512867099903125413 +1.4361515254589319794511648988041593284690022582212569491121832 +-2.60753813407270811010551609506591583046650213797318531243242041 +-3.74124718173850745393995556737713764450281834418039259484402789 +-1.9896113730070459932381725642407079429957186622449948016777508 diff --git a/tests/data/nfct_1d_2_20.txt b/tests/data/nfct_1d_2_20.txt deleted file mode 100644 index efb5435d..00000000 --- a/tests/data/nfct_1d_2_20.txt +++ /dev/null @@ -1,51 +0,0 @@ -1 - -2 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 - -0.338659199330042340615961744764564410072749195758570382081834953 -0.158572384243962923085902544613817242820829090077327328325952611 --0.411477214456056069434784826776254545624589662958207381226772607 -0.483229498313007859984303218236451660299731189090556822129652243 --0.811853100828815770694903009646353662287690795376426895023069973 --0.411207160230005442071709327507424814300297047915033167877138673 -0.48728761330489810750720568765587515763863081205380095924503604 --0.21842995189390420246639835068452711140166023209356357200968032 -0.433838138426939921357835738319723130936926845112462586965029451 -0.450322436516574477879603066809932247279198345422598103016076991 -0.336160287728380298356122403330969347501114507027282476699324048 -0.389491838421987662167085049493590298094183150117847921856331242 --1.362373838133861343283404038185247425054523393162096367836946022 -0.315015624220621131298377527645323058476982758673329861927474145 --1.367215868632381802974382117505205309833959097647574292466923246 --1.240984661106023302797223770612730332238920840181394773031717988 --0.179828533656446669521128876155063365897596439552573181463645956 --1.35262556632730180035639198252090209416656498446804756113242664 --0.732043312365727409462648535437044490974305190346826870198361764 --0.242285714444514333363711563937656633545758973665938198263270809 - diff --git a/tests/data/nfct_1d_2_25.txt b/tests/data/nfct_1d_2_25.txt new file mode 100644 index 00000000..5d99dc86 --- /dev/null +++ b/tests/data/nfct_1d_2_25.txt @@ -0,0 +1,61 @@ +1 + +2 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.3158305122954834491361879876118745635891842225287967281157858672 + +0.1868793258960924760861505648306340949238406980577731692641200258 +0.1256317537209474954070952578649298377077765349342386783911649511 +-0.0682422615594231596386293052826106537746597242270208145238829887 +0.2360477218006404173822182356389544767009861051680779464352093851 +-0.2044102035938357755103416104047774598461989979098378912196985214 +-0.0681504160476163529653590214299447361377912581619600953199323119 +0.2374278877541669536904449635646765330791144535399801737549051844 +-0.0025868378609254134876001645998388477527036919024076042109255347 +0.2192497075873036810879586994414547296579581078389609917203757383 +0.2248560216115641955457933802285661195907334239452137345243766854 +0.1860294454170082862715959368537281181681682419606687806338555191 +0.204167519538413595788955328905045593405493730549523418326270382 +-0.3916424480859601213175526133466606993512810058704135361843557371 +0.1788381399142061492267548412229791937955313120356186305573804811 +-0.3932892239051150749058627603231367095734891180325820307137268696 +-0.3503579577264620282948489875555214212969837015827610438241278489 +0.010541514419787403161071274555686866116276848104563467746065479 +-0.3883270583348014940951296403077658098470318925587266395789720786 +-0.1772668739900578664880625400793916549941669225571966481155296164 +-0.0107001888461889497439604152638772138315061550323261199543878023 +-0.2802065838295102327921691260790697694181655494672852402088512814 +-0.3922367696759611699953567403833428013916089717200210799728291012 +-0.2932833641555638362546097307068920558702006602369221430107483099 +0.0278596627465371050054949312087643732870047111197016290905307015 +0.1546967040172383394714978709285128922293670893558062473159531729 + diff --git a/tests/data/nfct_1d_4_20.txt b/tests/data/nfct_1d_4_20.txt deleted file mode 100644 index 1f91d10b..00000000 --- a/tests/data/nfct_1d_4_20.txt +++ /dev/null @@ -1,53 +0,0 @@ -1 - -4 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 - -0.175614481925146662320098262071842564685008533175080935785330805 -0.425157089117904608971585360014767173061400600345254466569707191 -0.084959921081124243742809781080673562177811178686858659911255837 --0.194570421134606274465577011107936054507581134697664445159740448 --0.693113761439313039789068287461935709925799267780922102674257408 -0.085401856166059977140887946225522623683599027184696724892053798 --0.207360640140739154367967828137818448056513876901356922692540983 -0.348275530656553607778107262101056646236008034011453739180795498 --0.049675147782650267055301212255934300968325547974921793461777263 --0.095841675712296595879369417944369205430966894834536333093167748 -0.180611959655319047644845756557277069730298588082795918002134758 -0.063897400214980120000451509603471113268733288333387364430796095 --1.620728797666678803277425943479882335402658239038423439997151875 -0.221084024411392413830192005444654951856618776222383358628859832 --1.625352918774277275836639541293417894712169698521521148246423747 --1.477487629776430396125470347354739012628704630137595698561817395 -0.386031834703483923191724647357429083627557391219848301853143467 --1.61114837133674839864513370092384761914008347922132525944436372 --0.527372723543109376289098785791525370306297274666638569629345695 -0.322184987938899014793653717700929381730728843937657081296137779 - diff --git a/tests/data/nfct_1d_4_25.txt b/tests/data/nfct_1d_4_25.txt new file mode 100644 index 00000000..7269f95f --- /dev/null +++ b/tests/data/nfct_1d_4_25.txt @@ -0,0 +1,63 @@ +1 + +4 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.3158305122954834491361879876118745635891842225287967281157858672 +0.3458309153991207858067077092337332970573207566667458110876416196 +-0.01097686940732606761440422015891875954490441842087149586770120005 + +0.327331561905667569774700142413063331987048177762840718867041604 +0.058987507030158397784049189032569234410283758660942283004643152 +-0.414415809745508976420128757011765523470934516550938755596647762 +0.586327819397995411590987410549726387375689657728772303564184689 +-0.429767836935410214915680047354367975043122664350971288196688438 +-0.414320519005440400457197292524473465914829538671819367838396535 +0.5941687221286385251883117759361157216881263193038994306917258963 +-0.315872267985310358582660405473568186095973842234958360063357611 +0.493408361661639277673820378654528277417864733378960752747169168 +0.523904989506155318428637218992272348564843350624698558477308846 +0.323199560294173468719087676787132678480706568980547953766903599 +0.413913687174405495528777072254902559902261763112839285283695145 +-0.0672298238741059209444463923775872343146962310003660922659432328 +0.28870081735834481710638968159213798295921185500746348460915612 +-0.0622113395530432636961658557554243709567590738517103658140617798 +-0.1829763499316802552626150421204373308609993547947844006241596261 +-0.288743695891307469762091388053280659584389334631843874621797236 +-0.0772407774384587502952435223705789027319115558851483400835673236 +-0.446341677614176061068136198217221021711034238824859554222518566 +-0.331386939590011711394034080821210399325779499596872468323215796 +-0.334024091393661778462051437131711523469279801492860580383874909 +-0.0654221682833744221948809065373797919499904909885148067973410746 +-0.310326430315335574767495092666255562773710450306615957625462655 +-0.249101992271282908424796081846264086170246717537985080458454542 +0.178928148429590225634240135776490765671121547078631994337777186 + diff --git a/tests/data/nfst_1d_50_20.txt b/tests/data/nfct_1d_50_25.txt similarity index 64% rename from tests/data/nfst_1d_50_20.txt rename to tests/data/nfct_1d_50_25.txt index f12790e7..43e476ff 100644 --- a/tests/data/nfst_1d_50_20.txt +++ b/tests/data/nfct_1d_50_25.txt @@ -2,7 +2,7 @@ 50 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 0.3617754793224075120106402493333532892515347077462591193717225348 @@ -24,12 +24,12 @@ 0.03079002005616818689379437555430409384272056975521080286977436553 0.1993205021632423713244796634655407513154492251671262244936746809 0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 -0.07838835742104840389052756169146943544000206230123216084325830017 -0.3158305122954834491361879876118745635891842225287967281157858672 0.3458309153991207858067077092337332970573207566667458110876416196 @@ -74,25 +74,36 @@ 0.7727562160593342436881229708062656539223995010850938445718232095 0.2216455512897554102911455213296037106714896153079531893725412128 0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 -4.775538253439782717003876076494601371477925744640471919035212 --4.8191233875094458314467073528674474162808589166054891467938227 -3.2357596354969819175100512299359760925784666492082849740858166 -1.899173542127037047570749702594120826368331804071238849011609 --3.1588535008687818452650976063996146409982656535251974952130562 -3.2737557183368324622982136271982726098606761650012509075046844 -0.528715403704126124046517653884384741308741501322373141224161 --1.6986351213481924187332477989622977185637036758785329375053052 --2.035541034801863165842483198819856626605548539162815253614483 -1.610578059927788415752276752326068408647998545247404757973956 -4.653754332771295115331947461809103607613049581655643176556126 --0.467542433899287881481816307956737485298445334120364362725409 -2.2798023593893386566561777187538198315633162193187381419003661 -2.4339824632454222786803014611186109271607515110095836644443285 --0.31031631212893964595473939059927123376649903951354714027069425 --1.9150974173857768568427412172306973413264847033644171062535316 --2.0698564562893895734908704076114184721211141345006827082042852 --2.81196896021907754993915470764470223906250587022376413484917308 --5.9941348115290726530249639764910609181110113911172964709818586 --1.0558770123276082971928101394470257102900800937280678028478378 +0.978836420847894033811358016107648798525141221712890040930073 +-2.8468425884871364063338068792726846160077158158912757090156381 +-4.2346373292457944284752696476741316917110533296055727337951338 +-0.502784275680004044528306433122817252644673824116380051326485 +-3.2409596379663200854369026353953432902831604880973064630387783 +-4.2244418532525693817697687220300627346414613133945252760665587 +-1.9871869895209458663375044213707204550307221647793809674663775 +3.0563916572438386956214825056235720601966887087856002526546167 +1.6025852414267310952521475618423286113122447966058383439410145 +-1.155239234447076175193786165073390648140371832602779233057823 +0.593870714014544573075907157320691000689928779435093502127909 +0.956141879064766662204575560922698419128173576496868556068856 +1.85365991590779645008762140802477684110460042635193630783440535 +-1.4962399621087523091193487615578432452570716373061260403267906 +-0.1508641052682000060881457821406315881009473863473105133414334 +-5.0978925253144752772509276620103660040919372915432070855484337 +2.4938466888379740330412763151246692658556372661852616593795984 +-4.18587153219193779594276585115657381828329804005092379449664363 +-3.5896952789798430845222277186171805093432483726268411873829589 +2.4337420640400562142165848881234207122256934302241323340670868 +3.4001564085785231650066923010785194639812478391861811784644649 +1.37117784038618478596115124533060188048762923228013709933860097 +1.4150157761766658645284574405910457084920282950003750758201785 +-2.2383950136514809726524854416004326916052465241629104514579579 +-2.2777304707947826605250658455161409784837783557282625977433538 diff --git a/tests/data/nfst_2d_10_10_20.txt b/tests/data/nfct_2d_10_10_25.txt similarity index 63% rename from tests/data/nfst_2d_10_10_20.txt rename to tests/data/nfct_2d_10_10_25.txt index 25bf73aa..b37b5335 100644 --- a/tests/data/nfst_2d_10_10_20.txt +++ b/tests/data/nfct_2d_10_10_25.txt @@ -3,59 +3,59 @@ 10 10 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 +0.230402910644737899027368109577132641139999484424691959789185425 0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 +0.1710423719261291377159530030970313591027039443678008179710535332 0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 +0.3364577288497801964516769273084333242643301891666864527719104049 0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 +0.2472557826481684830963989449602703101137738953947821260330747 0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 +0.3156638964725781243541272856934334091751310165287943458804827568 0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 +0.1291749563767577778093174420442248066853355018583144808226772126 0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 +0.08822777041715483808900537550686335988124286767733376669602735212 0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 +0.4873897775905716183934451117229193992829973538264409415320627283 0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 +0.2820193117835646460363939425636435303399129252463767075702079429 0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 +0.201326401841226822499265144634803231090444660833635656408098582 0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 +0.04021826656973756695539173905743953803655775666757835902774775232 0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 +0.272502449871235944005176337000832389787308384521685260378340781 0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 +0.2058296915808363530212836937615578729259850336228305216098969207 0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 +0.2249375001022399482177021326361767602306099380452021854751372688 0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 +0.4639578196637028654618426122960844569745924535620377426170001163 0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 +0.3839126554233829641792241169995056112118738549435185680451106415 0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 +0.2368715426933632797203883114608453601301280965983514357031010166 0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 +0.4879523795531072195691844705038987386977815390062911906717683948 0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 +0.4989055963203276874130654061778803284303962145484476976641785229 0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 -0.7335087736711041883089151876515694737975402817556229765975958245 -0.8786687027770929787301562525828872003547410177701220950278899658 0.1944979336074391420204691208780533563017707991268605634570366201 @@ -127,25 +127,59 @@ 0.3319152007540851906913026983763584438955853838764895977762668678 -0.4414898031680223608932387792017485771255689761890070706015387399 0.04675554236208552284539297942143061834219393972333359647545914081 +-0.8152568938325646993310760006867681539054279301843202148958871677 +0.3952163240756655529212705355453418848569049122249531536768131848 +-0.9395163144138835125672454933008856593503204403133472584898229717 +-0.08780353633292157461769946866167963633505729824902226238512671868 +-0.1743560068378512679152575299947443762504689480476570621749324843 +0.6018835924636782523215034400201993341434060856497418585329625279 +0.5094537464059880326374352490064905763350159638438638190213421193 +-0.6412882157453879879998117648467144628970706782597054160685555631 +0.9017103216368149546517732133490469846549850682301607701578308401 +0.9631270643127979384664069651403286361478505285019531813591892173 +-0.6210835173793688086670082589175993809833456274087668762475476635 +-0.8137281645240375388576750044830353268919925528507904843095256157 +-0.7041297500866612607234884784407130317305843364144413223065323821 +-0.1235721593345202217795554759876880268687368789792682195280803184 +0.01793996302825844948175557573252934185711456214972052895861572493 +-0.3411596862218241172328579047617234818967459872060847679144866809 +-0.7379746599220903325806827424480469595800618414934950958452657346 +0.6843546378904107483368305041075808036585650068151329599810630045 +0.4265099420399003863248167494626862205659560797404855195341684806 +-0.9874151891964456486571993218370826427302121071375833081581536189 +0.4601637140807105378191037234478805179877043129140064777542238544 +-0.4841039802362244364267157134690841461075259779700777041439742307 +0.9965877589863013394561112420396792373833365736836351278348301833 +0.191567730523304776574190978829765313731471509331205854313016986 +-0.9100049476348622207723944867294612891098821253248738836563459568 +0.8085565025927605798160394591787637574375967583263627553971120289 +-0.8851479413535487385573817957243936843534909265401263726020814395 +0.6064591258881136876029163103297147737049475826316704311935105558 +-0.7125906556497681391201675092436355218810428000432951124150783383 --1.503308277105659933852210997585764711993972164715843056510313 --1.6177630809608098216935804956580480440363476010056595772250971 -0.8960987298745676816727787537295168530221561592585140674858076 -2.6068583986049260397398313809031947747636579339606532263276481 -2.2799048475337996234851639796579987825520153132790588012039488 --6.1713009579787503219087900984295376797557873473914689219300003 -0.3130845495593592262485820385696520628809018835917503212344799 -1.4194389875462662590040044677101012094949218029494031326016722 -1.4389817002077109201757473145795678971467773720654773394380975 -1.9017780172686886389625734574074652033280145789696121323445489 --0.3248193958296753342686701955173333269113542706307364090068966 --0.4020736584100906602569386402509209688812275532857400372714832 -1.0138847382659369940912832361086576802788152795123739534412821 --3.0951395419514905821850614346271266798652697397362897270328635 --1.05068631494957087781953571806144710997361816734294069792479422 -2.49892018495813212113781299700491953909269772547767146746812847 -0.0773194149733676326961775167666715155245777383683184691817043 --2.0111048361894317927574219158922030030830624086098367246611406 --0.4409353014418641023715575026447934283053000593296583060442785 -3.6025567887519325204966689017250708002046574367259586605169407 +1.4958249560728511050664692077920619505790764213878704858435251 +-2.8121873024141914437213006631316224530427995934779761839670186 +0.708825311916896087135966439363964297435453298871093134184006 +9.8676903981579587269259695727048447957968212359265731780790346 +-7.4189282699491528629613872930661146450688008780838533358350698 +-3.2676162381121703443901827701845557631168905305429563093851122 +0.7829096427456597291331959417232954620451696037880490732199905 +0.599793450934535973286618308384341883671574845479443067599855 +1.3766066962755049162647047693474430386750318436678592851125165 +3.3486588836492740831501083724091593769082349320829872949686868 +0.3728821690022668615084154896408759802018664921455578270867042 +-1.1795599462311568132571354628498287418851741124024296168343277 +-0.9359753605453945373202373887547251191940955698288182155827519 +3.1263045143405736208415360984716393398528290291260691816061304 +1.6534453407896693446784758953607932761222067885017607203518448 +-0.4116019514513037101217194474874365426091001745311965268202468 +-5.2774908499148048089971577543326004056554768549612528919129679 +2.0353694197335774360887635573406491152365866068528866305840099 +-1.53299653128380634720706377860132884468094615220273488142431 +6.2588564001801038181256841092423946481408669404352437647628683 +-4.5928030095205913829753140637762267532063211691377959840434745 +-0.1071634751078184579789157854823575566782425099207368670158668 +-1.139588242104416830152691905505610112083191114271378169056954 +-3.3275401795834923117430994924702300797114475061795305657867039 +-2.4372888867555822856081855821204271872804396399671142588935579 diff --git a/tests/data/nfct_2d_10_25_25.txt b/tests/data/nfct_2d_10_25_25.txt new file mode 100644 index 00000000..c6b01d3c --- /dev/null +++ b/tests/data/nfct_2d_10_25_25.txt @@ -0,0 +1,335 @@ +2 + +10 +25 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.230402910644737899027368109577132641139999484424691959789185425 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.2472557826481684830963989449602703101137738953947821260330747 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.454917586626400190455113486728514743998772785129201763658322789 +0.201326401841226822499265144634803231090444660833635656408098582 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.272502449871235944005176337000832389787308384521685260378340781 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 + +-0.7335087736711041883089151876515694737975402817556229765975958245 +-0.8786687027770929787301562525828872003547410177701220950278899658 +0.1944979336074391420204691208780533563017707991268605634570366201 +-0.6717069716036456017860348911350501039034020263227184271420653514 +0.1841240265716411858721923885202834145897392121583597644960322461 +0.531416327611542071221970089939764430329756625444579259583169101 +-0.7793598342770851820561551396646691186537674923197586552161425487 +-0.04982739811897050028189209963034074300557183166488389610036293982 +-0.2152831478765442996690076717147867376683641103330644151579049018 +-0.1430325904665435237882241441707630670064919508747748361914900932 +-0.5458569288127476004682590208265714990676611459841400026017844665 +0.1856688150172391527088040246433169286752829500750590071977203062 +0.8193143821859564924477154245099351963436429074028089074430038904 +0.4604487491339531156973853721884505256237012331451385915640611729 +-0.8606535828683120015533980099014960687963233985081987928030018579 +-0.2028782443808202039078700152556584967073846417006795171717789768 +0.7727562160593342436881229708062656539223995010850938445718232095 +0.2216455512897554102911455213296037106714896153079531893725412128 +0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 +-0.6756547625687923165084584127259768184144567299620396875756298559 +0.8687355316920355914551191479618699998090617653378680974249892199 +0.6573707348942885034556657549189062350008259948442460481059842193 +0.304092255431421724386276285709205877741518261756931899126135274 +0.6923315191547459490617708873077670147989473956854336908747033971 +-0.8796784447840898801814093263554195453289300559080999490503364787 +-0.02378306045101476542041128049120676361822587626846492046663605803 +0.9854996726419986830846511304498671064695985279263874167222764802 +0.6717005563662298476413580139956207272362245386339234470714331016 +-0.8378043093573693797427988998204722223522674424680899644391943176 +-0.3904035160770493684430115148009967524256991556076221372265894266 +0.3596214942327276879157632590476519168937540906266077357147819608 +0.7958628339830083470736213000945699871834494249238046750007408612 +0.5412530329369591795695895418300581875196694253995928145942436878 +-0.2613537732594101756765510813982454595302525696986533152069370387 +0.435828324052182771698190217679588447000849558850289775314256024 +-0.5937465792299257034198201886287226952400923687140794966015317515 +-0.3218041479377133937935849601301732622610394503588237190352903562 +-0.7360914574746049921434644450737043073420684008447334807822853276 +0.553187364694831117272984365230687982396001421226655790220741406 +0.01417576197421767893279369309359545621976513518858252000938611031 +0.6897588478092123244219967589255606032813281483291811335150355542 +-0.6996703139503628987183738269577949838863048093871175900433716284 +-0.1309677757443125377194229250386971011803561306992623123400631451 +0.09049503268981439002460219767349217513483951010643022102321620286 +0.7721031360269444536624854764846278079390436516442447307214583713 +0.7113282365127787106295924505560767722199840055537543517442585349 +0.7679535856628120283990827155162180966010981503917935490380557142 +-0.6127602430473631495393181955733023028663546816025211937039540524 +-0.5944056790460496081717996899055920305811666877696698395774078378 +0.9839367502424209997890558933686976016082869978582241397510153252 +-0.4548419343247805224460011391703079342763504118566706946966391853 +-0.8849845588398620212194475625021727518116463369860566764411889312 +-0.2496600323413886386258990085306122333313701779141184118995463959 +0.2013567579813494116381818105314838610969816486807952028421948124 +-0.85858010457166611374976182888109386496982051035674989499979384 +0.7326702292582058588316598422918662773838658327971514003421703067 +-0.2697443704573465465233716116511309018200366900116819867580635278 +-0.6468087813680422377672655136982917947328505318460482424201962 +-0.2812302577494115409480047067683469320314228801749259890701395474 +-0.02167413194230472805204979364706614220652157873015883116130884482 +-0.680894955890704100546661726757747116024714493408288024374190234 +-0.9306530725185795934583927665790248017610038861531896668451002839 +0.3319152007540851906913026983763584438955853838764895977762668678 +-0.4414898031680223608932387792017485771255689761890070706015387399 +0.04675554236208552284539297942143061834219393972333359647545914081 +-0.8152568938325646993310760006867681539054279301843202148958871677 +0.3952163240756655529212705355453418848569049122249531536768131848 +-0.9395163144138835125672454933008856593503204403133472584898229717 +-0.08780353633292157461769946866167963633505729824902226238512671868 +-0.1743560068378512679152575299947443762504689480476570621749324843 +0.6018835924636782523215034400201993341434060856497418585329625279 +0.5094537464059880326374352490064905763350159638438638190213421193 +-0.6412882157453879879998117648467144628970706782597054160685555631 +0.9017103216368149546517732133490469846549850682301607701578308401 +0.9631270643127979384664069651403286361478505285019531813591892173 +-0.6210835173793688086670082589175993809833456274087668762475476635 +-0.8137281645240375388576750044830353268919925528507904843095256157 +-0.7041297500866612607234884784407130317305843364144413223065323821 +-0.1235721593345202217795554759876880268687368789792682195280803184 +0.01793996302825844948175557573252934185711456214972052895861572493 +-0.3411596862218241172328579047617234818967459872060847679144866809 +-0.7379746599220903325806827424480469595800618414934950958452657346 +0.6843546378904107483368305041075808036585650068151329599810630045 +0.4265099420399003863248167494626862205659560797404855195341684806 +-0.9874151891964456486571993218370826427302121071375833081581536189 +0.4601637140807105378191037234478805179877043129140064777542238544 +-0.4841039802362244364267157134690841461075259779700777041439742307 +0.9965877589863013394561112420396792373833365736836351278348301833 +0.191567730523304776574190978829765313731471509331205854313016986 +-0.9100049476348622207723944867294612891098821253248738836563459568 +0.8085565025927605798160394591787637574375967583263627553971120289 +-0.8851479413535487385573817957243936843534909265401263726020814395 +0.6064591258881136876029163103297147737049475826316704311935105558 +-0.7125906556497681391201675092436355218810428000432951124150783383 +-0.7605582778547942408060351317015194879473019118917060721292547632 +0.9359455243018989598720894094889086512450300947660621306436953491 +0.64033297030031448665328828110131678884788143990971470968562862 +-0.7566145378422368715122716757726615136162685098609876740055635889 +0.498393464867089132881118789295770940752838691384942740522239679 +-0.4971948424110283155918942363898656650230845195141350175248779212 +-0.3682837387895926737476498418989480477365801929350913148252356807 +0.6148970507477253459184467315745337121338375212139515007860628315 +-0.9083524682273578446532722997799475788834527253595073048265657245 +-0.3916716877161613504785809028033398517645549846406356231576213868 +-0.5193518691808852117378350732261309854332184624171433727414006814 +-0.9750431258817692289559363598684739941265076062018304867776204819 +0.05005097085661604605086728229374112382053058454731767435671635371 +0.4399150750505159978489133507713340072340352057744402647976718275 +0.1872909367861505164718492831692222169018789408412172493435499423 +0.9419321039051109549245680082622391092246632631231828777233002149 +-0.4287041936652777153072881590344721321081952456510997660597381855 +-0.2333391111205556198207256592076331117879880842914267473885863455 +0.7889477067277564731712862630611699647549102063099584994888747696 +-0.2563747285446000361218237435955077669028092056157149416120292486 +0.8211574497098423675796354902233745259806437217163965161734702361 +-0.2430326281692574737943057410600918611450147916626606070615468027 +-0.5566744269539672218404388199827460990960984415899809143036909069 +0.4524110448637644360868388875231267640338311624103409145041788539 +-0.4077100331640054846709900852315956380002910175183742932154068317 +0.9925432694290908433525570320250227385826836114793383624485189244 +-0.6845441772530325736299180977635806745002567201737916085152286412 +-0.5689275448635581694575383584343021970227104177442089801706330228 +0.3985567814775143901221253743791327148945266133080683203695999962 +0.06961382826101090949578301124383292455559947536661707583968975184 +0.04307050119059237005387541827491059927895209375649378090223139587 +0.5849881776459916509815348468661649535409940486756497653761724118 +0.02943622593745917222898833754618856585348471594569686881397428726 +0.3572417013316431962026919347150511042636763596269956578845059238 +0.8246603472400295391578505724317567517180656867730457579866275623 +0.08267470722577286001217633724236129336011575576077446531397711074 +0.5296493544860877224747590127030477951987987258874100707895850711 +0.178161671839420517570934964597356447578898824155879129858818805 +-0.8633908949968827943561744577901901026376268752722144571223670853 +-0.3459820993240706010475901311688197838023719669999227712290509004 +-0.8814262497135981437569523940906532685397798861799997656375266034 +-0.9722552720272006984678084914751283988556792015475269427349942943 +0.6486167889394565452584685154506739738504706411589692034776454683 +0.7237216114456588829885327945423834052953613010855527824331391861 +0.9153832161606877637775414865990581395464326012246760580785761313 +-0.5010512652356920074204032205934276172215285762480987760943959851 +-0.003517119711452846559277971844364606295296520854275366315952866112 +-0.7432644962454565902867854377146609433353697756825593784757725371 +-0.6678889143320625765336213759043802181180754155696893060399849702 +-0.6231432486376980435414857670687342821530306865222818413703487444 +-0.761265558015959776038963903242211813247582799987701574301727408 +0.1046561870893663260798556882535941223232955552582338303672866205 +-0.4422178249719287625023613714462236578393297082084105686699745527 +-0.3006761386836519584160039426021947715604263308295216335254395417 +-0.3931472033430920383369653755030364057981520323323553764459192375 +0.800956473746882928456987043862133272850468280050235725390942984 +-0.117336384734927911842612913616027626554640600021179492329548556 +0.4299591565232924801870368761556079288133632606094048768501521181 +0.351950842714972405603834006572622410785881893665581295538500859 +0.4719165407085054156880418423268675488422117760448059022673468457 +-0.1600709565700552484491336034747507816107856100797576115468140784 +-0.7196566232553047172113131790990428945643928116318893875786802199 +0.9506852903491360468879758484099667312771993016096956267658366287 +-0.3776736725704435658453332291251578463493585478972191163904289213 +0.6001953620324393368833490197603304801854572549372059847172328017 +0.6978878736648347125949172253483236996713754832649550025174381314 +0.8508443401291057488517795791511283359984797073308503806275388226 +-0.4669474695063991815703085816201270850746349019459750890255838246 +-0.4916857659539131984511014678316277462480514807356006060275370059 +0.6805454442564243054841615570704809357725921633306984108877804159 +-0.7429928693445994197394008924008488085983664860223161935727994358 +-0.6969676211949719236627008807329635886036631346596064918901094455 +0.7197019444966162425693701580554867509036572823057158142921206547 +0.7821091276993633157184444189269089852199610591029476119050859896 +0.853322612153932922155019514171215033718470215426888526974581991 +-0.527123190429983130601023007335782170127141621028130059541603522 +-0.04518836599707041257371263007133991513702551585551047967233360089 +-0.399491020501502399597869265119952339350000411493961463635298064 +0.1151112248581587985459044273509734339372139569519498681662926204 +0.4120054991803597141675815179438163442823969621208991056428168406 +0.4343579826046095597725968699957767082823418268721181549420071456 +0.2535126428268633086086116718856542176680789611156801564801311848 +0.0757591082002124635881632323270228980382304124620507025889787107 +-0.009921455995466628736212379839332998874975285848956671613709936322 +-0.5891566693005274615768435832037723406013603962165946345013825592 +0.4725424296459514103640632185799575468737722475096114637473172301 +-0.3642689669126664223527375212471788979005234643229363317834063467 +0.9106160875739411428476569185959640646231793213239998804082355729 +-0.1554296096295892351142787706783742826880784898341993011418432069 +-0.8069065915498787556695276318086362565827819941733622970182376756 +0.377414941913701641980604281714521283600422741949240555908727434 +0.286257156034881826917947161474943151268083089341448769053424682 +0.9392006333865916821227548404291848184201007925131229813910957774 +0.5114205299580920868823613420213360686329180904621350249508347984 +-0.6408078680635244612899765081025913686282954450887306823350772997 +0.61034769186326371064247171222348075927083751612531179530760314 +-0.1695324055840820458497589349479760035964663521113253737383164439 +-0.8353594742240205937097730115138661305557325449129426505768609534 +0.1821483418007667766250895141417107286953921543595289977783017637 +-0.4074526958925963909486488891837393063126910851657623153854908031 +0.519412312832116093970077697359996336676003120133546342882630559 +-0.1339026726689501933617889040862807661257038358606191032725698017 +0.1617840119849052908674425797539541379830915417411164257796009655 +-0.5833399591688895541493678958036554117556929951798174740043291689 +0.2558611196916433369649336532000849479904305619298222327625863899 +0.9637184128969163713272727389388526394331293708405231601274766637 +0.02398516466411951663039478357357263297576765858214578984119980389 +0.7220807768185265925885711430037484304092954076856054861183001563 +-0.8314034062393001851412680462190559603040746972786212429324375224 +-0.2313683087056718682580625867623460795004227069874977160354372877 +0.5241531162028989758906123049906275766571616823241720374203214447 +0.09003216360057281587724105549690566269005814841108581287665281058 +-0.1599268816032428776743959117270259866309677355351818460136443291 +0.7126643265921692501928118835762400720628273345745039396768073268 +0.1443381463559750344148688262608847179704805274810841956785523095 +-0.9541149480810226451568227541620900387924893378859274527595762471 +0.3516772517804962317135771244694045300550581304302552629989927399 +0.8312645047002901343481040986077492354211106507977246573848547872 +0.8922074343575836687927424867109565448477559678636672119414443701 +-0.03914580715076807517564668371313115131680481962361916796431130169 +0.9746573852711840936336177201962708050687509298510135226623575906 +-0.7287905575728605025843722055111257091486772902084438557782657679 +0.02849594996466824865218850207780069267985584074611847663329993142 +0.6459433245400880395491408374407025292588521318149535734854910274 +0.8136628661132407079541934173897141567434892632439804419184181281 +-0.567269077607843925028375791245291662428913186501477835474640964 +-0.9476387464140397458861421362921055215974651715794066883914951208 +-0.2605437240709855372272831411319884164143200014969561164796810212 +-0.3311597085631775241605389615954882776971235843100995205029515984 +-0.8695822150875121724691553338257829869250127182425918912387649806 +0.8891098289754707421060220890985710245132795198449297271458423909 +0.2895552325554255930167653346015931047558748269272406529926466973 +0.2650936900762128600362413578030729270793479332746334793752266553 +0.7046936151828971593710415948632896548808680079056988913118083777 +-0.2115570299364757676008017443811649086191736127455534555376144021 +0.1470216587412559156294994682432100810761459629584248289010138317 +-0.4329010361486256961244622956913108506550874170254014125575533479 +-0.1766818323431859044625743795499747752198631648846896440459670393 +0.3427075333057822059987675632859967887158938796610229803331114623 +-0.183376886573271100129574182681696169179735558213922855123562123 +0.5665067551831146950685364521560101025985707475803564862178192914 +0.5846720091653589171386464934439494744713232525388330403763032709 +0.3128821017947787434710701629862425068710081298914976621641025408 +0.1943703959062877206669871517590249058034169064564194870074554031 +0.8893705554674630659403991877841826994191514257022249874261157104 +-0.8883357910902242353575856676539666074648753053656660309143767467 +-0.460716573466163781751268186859141052046462069031383085126522242 +0.2571290378683215613044136510821588749887474163677002652639520119 +0.05683348973511969001808746192505133291481235528637618587938493271 +0.8458238445504835463314748515393830432307810942061667936052115581 + +9.498718502603289378298157621147707224645496333603356820349932 +6.512738165001686399552233509395336212519864171558515071776952 +-4.199191137043465501492057314896277680260523707687569201962142 +-0.154487655858943446470602238773669594504992678324655191639107 +3.737917377833371751452834504265184043411260923340272647338847 +-9.7250778993166293121994612542974288488572090345777434454492258 +6.3594629533183708602203533642828758344000377125046931961868811 +1.778125168717551503938542155306633278500886649833931843399205 +-4.090904457051836562801339988915735470512163329397880987462155 +1.728346905370133587257799122122206654035485810312615124930593 +-1.7080136384616995761761797842229964769824725878617339654073585 +0.212380297685824332393825317456956058057723398422775825568629 +0.31871619547644846812469328878389777669036162940007230086672 +7.39679730229274888988032263038511001998324710385210549205991 +-2.295586588477552393662067835328351870529785419553067844133385 +3.85951871558494562614965048712771370054834834402967369005687 +3.614689101140066960088119921771959506693175504395138854908154 +-1.150513573177045894588159482932397417602418077871803443802724 +-4.3130776887369248711599396405111704132467637385924285588841915 +-9.909577879548721441185102071225058710486196701499656653315151 +-8.2866708672914599727422969141661989678790869726298253684426654 +2.15612133173326407610804314862910121909421041525917690631509 +-5.7737504723163279213827760134204307796220804659024865133891349 +-7.8474264158857756027007186100321262558084949531211304107948603 +3.445260010475152273097424798525316253034695264628521042887962 + diff --git a/tests/data/nfst_2d_20_20_20.txt b/tests/data/nfct_2d_10_25_50.txt similarity index 69% rename from tests/data/nfst_2d_20_20_20.txt rename to tests/data/nfct_2d_10_25_50.txt index a4b5f332..9b47a7fe 100644 --- a/tests/data/nfst_2d_20_20_20.txt +++ b/tests/data/nfct_2d_10_25_50.txt @@ -1,111 +1,111 @@ 2 -20 -20 +10 +25 -20 +50 0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 +0.06662280658222395292277120308710763155061492956109425585060104387 0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 +0.03033282430572675531746093685427819991131474555746947624302750854 0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 +0.298624483401859785505117280219513339075442699781715140864259155 0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 +0.08207325709908859955349127721623747402414949341932039321448366214 0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 +0.2960310066429102964680480971300708536474348030395899411240080615 0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 +0.3828540819028855178054925224849411075824391563611448148957922752 0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 +0.05516004143072870448596121508383272033655812692006033619596436283 0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 +0.237543150470257374929526975092414814248607042083779025974909265 0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 +0.1961792130308639250827480820713033155829089724167338962105237746 0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 +0.2142418523833641190529439639573092332483770122813062909521274767 0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 +0.1135357677968130998829352447933571252330847135039649993495538834 0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 +0.2964172037543097881772010061608292321688207375187647517994300766 0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 +0.4548285955464891231119288561274837990859107268507022268607509726 0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 +0.3651121872834882789243463430471126314059253082862846478910152932 0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 +0.03483660428292199961165049752462598280091915037295030179924953551 0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 +0.1992804389047949490230324961860853758231538395748301207070552558 0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 +0.4431890540148335609220307427015664134805998752712734611429558024 0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 +0.3054113878224388525727863803324009276678724038269882973431353032 0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 +0.4515130176933212461457379892011009039970207793061012850021972899 0.2843764440248353437431031574790790615530404808188969002757705128 +0.3123746114641262123026545021046848366396752725405471632077695806 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.4231801157326450939593950301163204387907848365988263186034774935 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.3371051625361155191605058367081984631262698548567050132698474129 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1158569246667318677726382100194916993028532082942523770687608535 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.1257540256523933131861849134591394031118487575140133228233992713 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.2225091693511738630364909160801392395880684222208336319127352641 +0.230402910644737899027368109577132641139999484424691959789185425 +0.08108630935780192087288539681850579539638581750949007810609253602 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.467183882923008897863779786990467499952265441334467024356247305 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4143426837235721258639164387297265587502064987110615120264960548 +0.2472557826481684830963989449602703101137738953947821260330747 +0.3260230638578554310965690714273014694353795654392329747815338185 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.4230828797886864872654427218269417536997368489213584227186758493 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.03008038880397752995464766841114511366776748602297501273741588034 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2440542348872463086448971798771983090954435309328837698833409855 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4963749181604996707711627826124667766173996319815968541805691201 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.4179251390915574619103395034989051818090561346584808617678582754 +0.201326401841226822499265144634803231090444660833635656408098582 +0.04054892266065765506430027504488194441193313938297750889020142059 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.1523991209807376578892471212997508118935752110980944656933526434 +0.272502449871235944005176337000832389787308384521685260378340781 +0.3399053735581819219789408147619129792234385226566519339286954902 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4489657084957520867684053250236424967958623562309511687501852153 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.3853132582342397948923973854575145468799173563498982036485609219 0.4639578196637028654618426122960844569745924535620377426170001163 +0.1846615566851474560808622296504386351174368575753366711982657403 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.358957081013045692924547554419897111750212389712572443828564006 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.1015633551925185741450449528428193261899769078214801258496170621 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1695489630155716515516037599674566844347401374102940702411774109 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.06597713563134875196413388873157392316448289978881662980442866809 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.3882968411737077793182460913076719955990003553066639475551853515 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.2535439404935544197331984232733988640549412837971456300023465276 +0.384865504568687870081160661201127839598602309270532264614380477 +0.4224397119523030811054991897313901508203320370822952833787588886 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.07508242151240927532040654326055125402842379765322060248915709291 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.2172580560639218655701442687403257247049109673251844219149842137 +0.3455515607589044047244320070401003626747106946235853743454314733 +0.2726237581724535975061505494183730437837098775266075552558040507 -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 --0.8786687027770929787301562525828872003547410177701220950278899658 -0.1944979336074391420204691208780533563017707991268605634570366201 --0.6717069716036456017860348911350501039034020263227184271420653514 -0.1841240265716411858721923885202834145897392121583597644960322461 -0.531416327611542071221970089939764430329756625444579259583169101 --0.7793598342770851820561551396646691186537674923197586552161425487 --0.04982739811897050028189209963034074300557183166488389610036293982 --0.2152831478765442996690076717147867376683641103330644151579049018 --0.1430325904665435237882241441707630670064919508747748361914900932 --0.5458569288127476004682590208265714990676611459841400026017844665 -0.1856688150172391527088040246433169286752829500750590071977203062 -0.8193143821859564924477154245099351963436429074028089074430038904 -0.4604487491339531156973853721884505256237012331451385915640611729 --0.8606535828683120015533980099014960687963233985081987928030018579 --0.2028782443808202039078700152556584967073846417006795171717789768 -0.7727562160593342436881229708062656539223995010850938445718232095 -0.2216455512897554102911455213296037106714896153079531893725412128 -0.8060520707732849845829519568044036159880831172244051400087891596 -0.2494984458565048492106180084187393465587010901621886528310783225 -0.692720462930580375837580120465281755163139346395305274413909974 -0.3484206501444620766420233468327938525050794194268200530793896515 --0.5365723013330725289094471599220332027885871668229904917249565862 --0.4969838973904267472552603461634423875526049699439467087064029146 --0.1099633225953045478540363356794430416477263111166654723490589437 --0.6756547625687923165084584127259768184144567299620396875756298559 -0.8687355316920355914551191479618699998090617653378680974249892199 -0.6573707348942885034556657549189062350008259948442460481059842193 -0.304092255431421724386276285709205877741518261756931899126135274 -0.6923315191547459490617708873077670147989473956854336908747033971 --0.8796784447840898801814093263554195453289300559080999490503364787 --0.02378306045101476542041128049120676361822587626846492046663605803 -0.9854996726419986830846511304498671064695985279263874167222764802 -0.6717005563662298476413580139956207272362245386339234470714331016 --0.8378043093573693797427988998204722223522674424680899644391943176 --0.3904035160770493684430115148009967524256991556076221372265894266 -0.3596214942327276879157632590476519168937540906266077357147819608 -0.7958628339830083470736213000945699871834494249238046750007408612 -0.5412530329369591795695895418300581875196694253995928145942436878 --0.2613537732594101756765510813982454595302525696986533152069370387 -0.435828324052182771698190217679588447000849558850289775314256024 --0.5937465792299257034198201886287226952400923687140794966015317515 --0.3218041479377133937935849601301732622610394503588237190352903562 --0.7360914574746049921434644450737043073420684008447334807822853276 -0.553187364694831117272984365230687982396001421226655790220741406 -0.01417576197421767893279369309359545621976513518858252000938611031 -0.6897588478092123244219967589255606032813281483291811335150355542 --0.6996703139503628987183738269577949838863048093871175900433716284 --0.1309677757443125377194229250386971011803561306992623123400631451 -0.09049503268981439002460219767349217513483951010643022102321620286 0.7721031360269444536624854764846278079390436516442447307214583713 0.7113282365127787106295924505560767722199840055537543517442585349 0.7679535856628120283990827155162180966010981503917935490380557142 @@ -356,76 +356,55 @@ -0.4415653525364425875595561926619571676937519758818885848285036367 -0.2086520325624420487101916822135314045088175303036646863500495381 -0.1511824375843169824185114172319147719223588913836399964007230083 --0.7035924603583511535986984592864385797537640709172487432674768657 --0.6564151567101526404248033266354854181628562195765596859557723591 -0.6965977875831549207460696210505433710177694513815592587963931164 -0.5816085290684877844083071838790011353935994102902484256340030157 --0.527253715551282406607425535965902718962742079261395869051002919 --0.8587217878456442924783287669774302171560923546889427532593498197 -0.802615497785384047600984758361791353972886095624237938117483346 -0.8316489546057848621322523310402149298559936201982941913906852864 --0.6097628083165813974260954335449904988521230536577883358240508937 --0.7453827739395389922953742392780783948094849228955462762695809318 --0.1809554132180854707773280908184743372302489521523696413745651906 --0.8150644675782343977339925655387466104832252738719676821788883516 -0.8917866574285656025686075793775106139378346795002297501283298878 -0.1101358891689796743272094664641471479081663952426245980291616029 --0.0541967333689012077592263814659907729121237619035205051756287072 -0.8788147199714254107037333013127960617440138295766969973173354907 --0.927037926394366126809727405514811573238161533791917190660326036 -0.4642977843367946473083173399076729199459994296180290689057358231 -0.1101424766711395834493541735390025259293259452693930682212953338 -0.9804018990020609521055380413227891839510323211141337706692935583 -0.8144388485796060257725468016904833551056739055694392606072812336 --0.8395517493960846429066650820934625099120153763823264316622178314 --0.535636302410552606673000089274072814148368252053769909998058602 -0.3785984554723058056848684987205281373405286509670642510688353225 -0.8125408356507693035783621684477489598336579370455636449932920399 --0.730498839098918994556008955395986000999974868552030434899102998 -0.7456261383135196385610840292806346156606897621955571769519287646 -0.7757376987729343002700728678244609761294630501410110238207420656 -0.4078040359990933213948732923927214812372340416337539086249054226 -0.1767712938446947695198229699328249449877999447752262239584762909 -0.07365715096199305303280147905505827004287730234420360693427261478 --0.3108355387530528344022186566449990520542204513871372429842394977 --0.9157841385420411790181903606309676436954041107787988394005532203 -0.5517970855559362574840981197851271127548171428450299159534222246 -0.8076059738124808816284579607205742577625775175934575040140126923 --0.3623547609761457713662054674281991237079618589827581000231798627 -0.8183208109839758987990961359356649031888827382055407382873878803 --0.8535325136050236145755622731382685357658674118927526952194103789 -0.7385965807078199198295561757281636178085738161163241745076529168 -0.4178732695594172450325633659542989992529347731253116371174433175 --0.5340515573220288676539037563933896861133701709641430080525373334 --0.4642629009871243127720569534731497065151730863379424324926815934 --0.8697898736666791719966463521302103516597198677810465705462889386 -0.9260211067928626234987335196506123804866588031248091568668186807 --0.008817333363577657304077859427800946074653041725554105998740790418 -0.5582339538069273279851977709472563742471538090477435724053193958 --0.7255700875545188795082017268145707633365451965771130961377344798 --0.9882699898882978270887601698779901692432742326870804476209571454 --0.9276804865150421462892365252888320798428705497677187785005965023 --0.7832811923001301276864916736742146403933964466320677660322633051 -0.9875308623632782097656312821453924896496525870736205800843638587 -0.889747600415460960400093602673697900288387980460494050373405 --3.276133079152709335576745751625576831853258863011688127893312 -1.313784221378299076664396291698238368905393361481757503043322 -0.749480842901926770463096143671480474054791842684961895512389 --2.990132793768236450981959335520811064045003562696618079485886 -5.892165367534542807122492495357682780023780432188218658154696 -0.21919892927260861764798488092668331738294275601342932419637 -0.904977771762815886519273752148791886260973914908079663991583 --9.945409709107107417806212251980761475793462650159730177234519 -5.842563775103953154872734794868192603365499646526004783152198 --1.749042892949373927002188771004818845622535270194727558531556 --2.967352791815836524712681211897115952780615861248032689472127 -1.203271465554987025663545757701647151331661542255400593860289 --4.640442060679902646734275229332487156816296836221070776426701 --4.599408640205628302758592302561590919776932315718157949337473 -2.704621296951925655042146309716538157806424261391869157151865 -4.413286891811600059489763805825839053879944254001353989255292 --1.645828989219013492294617797268436855679970260486233854188235 --2.625970845452660156468635456994286004246535484191429052823552 -4.306980953241285913212709234456989004154028765520159685627932 +1.393173179251826459588954591455599657550158440507828597538274 +12.1538037628437613760268772023938366623426057592001068981262911 +-13.204717133485324201238332509570465809040385935526280309492705 +8.40656543107890316984878287203222606778477117876950323409716 +-3.343486499017115932481211196618627111933296198023846588095902 +0.576052109401837418210620935321101040831478258184094978369787 +2.5724954520355405584398829504517792946713825765761583846838238 +-2.734390258014505246406941553206389743941446356043222423963467 +1.328551457613889803074545559248630944613426680146938748699184 +-1.479724656639208005586037322890366640003283839175026469131223 +2.908724600523068653735961719800842381215510683497366800182852 +-10.306913083392452950503309569875783858978942086307536283584915 +2.765912789269859528191501502917245607733470344085051706388015 +0.439721497253700205389477004419740261434888373358776942088709 +0.6565763146959126050440330638380514171948043179030199309983594 +5.0387914115043756102262391090556332840259010670679742497571825 +-3.250763167663993703785577566084199069883434138710355191852272 +-7.164284945392264407202652251897522245592056264633704683048019 +2.559950615215286149152404493288835570765822363130655611429945 +-2.755434358622963600833118528714516845482451509555112199071535 +-5.06864051157118171333821896667608214029729044648884964738809 +-2.182211591447718856851481159193965443150402286847674641503446 +4.1439721129756412740988293218602883108766236686430575373233721 +0.874326722116360608894671309859214186849339901366626290204312 +-1.816913293101735436486014310430547570483084166555064512795385 +8.5428478329387631115420394872349446080703827888669394987282354 +1.38865600542279708281749765342145729443292157890269207633531 +2.826740626835608044709862063129483314768647273817467577934905 +4.446954472485396696522941538062602000000718782821875438969954 +8.816155634273533551347016415591114685318600993889563566908933 +7.7572931266648208844789509107475932628920879960200446737627281 +-1.646388687322510950962111189264105649425482714070474941444295 +8.449129304099619143660057041316200263854928047893567320489324 +12.027713446605932519749638675108821058904510395872709919585011 +1.0202367989831329261066394433172844921011261591759460205834455 +2.2610104687853420816336429611442873772593482926340913723688864 +-1.017458126357523294505980998512213576508329707672721839446167 +4.8378109187527574513096968355084259908776181087539196774117 +-1.606400030327441712474277579179228628181216102590491510455896 +-2.792219662435511494868497083658145864123782317950851291192377 +6.949186795785551554165314157990174351117769761216972990925768 +5.4515983607714480603220031674385027603514650423721047978747703 +-0.991351265827666573871120546007318184084653718636441323614587 +-2.6587540323468656567256359266154230436066913703954660327523706 +1.103668482412624405160951390599075678035035792465653019034428 +-3.081919830906998947938570956783719087492893082082005229953009 +-7.487711124430343509344919577324344082720451689690739824316709 +1.4816014221334505843488669258043475969752737295406929940909623 +9.4330959818716568506999108296268717968950400227696043251785067 +4.045817288317287682854734642512510143688720356754464197783072 diff --git a/tests/data/nfct_2d_25_10_25.txt b/tests/data/nfct_2d_25_10_25.txt new file mode 100644 index 00000000..4aa5dd32 --- /dev/null +++ b/tests/data/nfct_2d_25_10_25.txt @@ -0,0 +1,335 @@ +2 + +25 +10 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.230402910644737899027368109577132641139999484424691959789185425 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.2472557826481684830963989449602703101137738953947821260330747 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.454917586626400190455113486728514743998772785129201763658322789 +0.201326401841226822499265144634803231090444660833635656408098582 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.272502449871235944005176337000832389787308384521685260378340781 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 + +-0.7335087736711041883089151876515694737975402817556229765975958245 +-0.8786687027770929787301562525828872003547410177701220950278899658 +0.1944979336074391420204691208780533563017707991268605634570366201 +-0.6717069716036456017860348911350501039034020263227184271420653514 +0.1841240265716411858721923885202834145897392121583597644960322461 +0.531416327611542071221970089939764430329756625444579259583169101 +-0.7793598342770851820561551396646691186537674923197586552161425487 +-0.04982739811897050028189209963034074300557183166488389610036293982 +-0.2152831478765442996690076717147867376683641103330644151579049018 +-0.1430325904665435237882241441707630670064919508747748361914900932 +-0.5458569288127476004682590208265714990676611459841400026017844665 +0.1856688150172391527088040246433169286752829500750590071977203062 +0.8193143821859564924477154245099351963436429074028089074430038904 +0.4604487491339531156973853721884505256237012331451385915640611729 +-0.8606535828683120015533980099014960687963233985081987928030018579 +-0.2028782443808202039078700152556584967073846417006795171717789768 +0.7727562160593342436881229708062656539223995010850938445718232095 +0.2216455512897554102911455213296037106714896153079531893725412128 +0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 +-0.6756547625687923165084584127259768184144567299620396875756298559 +0.8687355316920355914551191479618699998090617653378680974249892199 +0.6573707348942885034556657549189062350008259948442460481059842193 +0.304092255431421724386276285709205877741518261756931899126135274 +0.6923315191547459490617708873077670147989473956854336908747033971 +-0.8796784447840898801814093263554195453289300559080999490503364787 +-0.02378306045101476542041128049120676361822587626846492046663605803 +0.9854996726419986830846511304498671064695985279263874167222764802 +0.6717005563662298476413580139956207272362245386339234470714331016 +-0.8378043093573693797427988998204722223522674424680899644391943176 +-0.3904035160770493684430115148009967524256991556076221372265894266 +0.3596214942327276879157632590476519168937540906266077357147819608 +0.7958628339830083470736213000945699871834494249238046750007408612 +0.5412530329369591795695895418300581875196694253995928145942436878 +-0.2613537732594101756765510813982454595302525696986533152069370387 +0.435828324052182771698190217679588447000849558850289775314256024 +-0.5937465792299257034198201886287226952400923687140794966015317515 +-0.3218041479377133937935849601301732622610394503588237190352903562 +-0.7360914574746049921434644450737043073420684008447334807822853276 +0.553187364694831117272984365230687982396001421226655790220741406 +0.01417576197421767893279369309359545621976513518858252000938611031 +0.6897588478092123244219967589255606032813281483291811335150355542 +-0.6996703139503628987183738269577949838863048093871175900433716284 +-0.1309677757443125377194229250386971011803561306992623123400631451 +0.09049503268981439002460219767349217513483951010643022102321620286 +0.7721031360269444536624854764846278079390436516442447307214583713 +0.7113282365127787106295924505560767722199840055537543517442585349 +0.7679535856628120283990827155162180966010981503917935490380557142 +-0.6127602430473631495393181955733023028663546816025211937039540524 +-0.5944056790460496081717996899055920305811666877696698395774078378 +0.9839367502424209997890558933686976016082869978582241397510153252 +-0.4548419343247805224460011391703079342763504118566706946966391853 +-0.8849845588398620212194475625021727518116463369860566764411889312 +-0.2496600323413886386258990085306122333313701779141184118995463959 +0.2013567579813494116381818105314838610969816486807952028421948124 +-0.85858010457166611374976182888109386496982051035674989499979384 +0.7326702292582058588316598422918662773838658327971514003421703067 +-0.2697443704573465465233716116511309018200366900116819867580635278 +-0.6468087813680422377672655136982917947328505318460482424201962 +-0.2812302577494115409480047067683469320314228801749259890701395474 +-0.02167413194230472805204979364706614220652157873015883116130884482 +-0.680894955890704100546661726757747116024714493408288024374190234 +-0.9306530725185795934583927665790248017610038861531896668451002839 +0.3319152007540851906913026983763584438955853838764895977762668678 +-0.4414898031680223608932387792017485771255689761890070706015387399 +0.04675554236208552284539297942143061834219393972333359647545914081 +-0.8152568938325646993310760006867681539054279301843202148958871677 +0.3952163240756655529212705355453418848569049122249531536768131848 +-0.9395163144138835125672454933008856593503204403133472584898229717 +-0.08780353633292157461769946866167963633505729824902226238512671868 +-0.1743560068378512679152575299947443762504689480476570621749324843 +0.6018835924636782523215034400201993341434060856497418585329625279 +0.5094537464059880326374352490064905763350159638438638190213421193 +-0.6412882157453879879998117648467144628970706782597054160685555631 +0.9017103216368149546517732133490469846549850682301607701578308401 +0.9631270643127979384664069651403286361478505285019531813591892173 +-0.6210835173793688086670082589175993809833456274087668762475476635 +-0.8137281645240375388576750044830353268919925528507904843095256157 +-0.7041297500866612607234884784407130317305843364144413223065323821 +-0.1235721593345202217795554759876880268687368789792682195280803184 +0.01793996302825844948175557573252934185711456214972052895861572493 +-0.3411596862218241172328579047617234818967459872060847679144866809 +-0.7379746599220903325806827424480469595800618414934950958452657346 +0.6843546378904107483368305041075808036585650068151329599810630045 +0.4265099420399003863248167494626862205659560797404855195341684806 +-0.9874151891964456486571993218370826427302121071375833081581536189 +0.4601637140807105378191037234478805179877043129140064777542238544 +-0.4841039802362244364267157134690841461075259779700777041439742307 +0.9965877589863013394561112420396792373833365736836351278348301833 +0.191567730523304776574190978829765313731471509331205854313016986 +-0.9100049476348622207723944867294612891098821253248738836563459568 +0.8085565025927605798160394591787637574375967583263627553971120289 +-0.8851479413535487385573817957243936843534909265401263726020814395 +0.6064591258881136876029163103297147737049475826316704311935105558 +-0.7125906556497681391201675092436355218810428000432951124150783383 +-0.7605582778547942408060351317015194879473019118917060721292547632 +0.9359455243018989598720894094889086512450300947660621306436953491 +0.64033297030031448665328828110131678884788143990971470968562862 +-0.7566145378422368715122716757726615136162685098609876740055635889 +0.498393464867089132881118789295770940752838691384942740522239679 +-0.4971948424110283155918942363898656650230845195141350175248779212 +-0.3682837387895926737476498418989480477365801929350913148252356807 +0.6148970507477253459184467315745337121338375212139515007860628315 +-0.9083524682273578446532722997799475788834527253595073048265657245 +-0.3916716877161613504785809028033398517645549846406356231576213868 +-0.5193518691808852117378350732261309854332184624171433727414006814 +-0.9750431258817692289559363598684739941265076062018304867776204819 +0.05005097085661604605086728229374112382053058454731767435671635371 +0.4399150750505159978489133507713340072340352057744402647976718275 +0.1872909367861505164718492831692222169018789408412172493435499423 +0.9419321039051109549245680082622391092246632631231828777233002149 +-0.4287041936652777153072881590344721321081952456510997660597381855 +-0.2333391111205556198207256592076331117879880842914267473885863455 +0.7889477067277564731712862630611699647549102063099584994888747696 +-0.2563747285446000361218237435955077669028092056157149416120292486 +0.8211574497098423675796354902233745259806437217163965161734702361 +-0.2430326281692574737943057410600918611450147916626606070615468027 +-0.5566744269539672218404388199827460990960984415899809143036909069 +0.4524110448637644360868388875231267640338311624103409145041788539 +-0.4077100331640054846709900852315956380002910175183742932154068317 +0.9925432694290908433525570320250227385826836114793383624485189244 +-0.6845441772530325736299180977635806745002567201737916085152286412 +-0.5689275448635581694575383584343021970227104177442089801706330228 +0.3985567814775143901221253743791327148945266133080683203695999962 +0.06961382826101090949578301124383292455559947536661707583968975184 +0.04307050119059237005387541827491059927895209375649378090223139587 +0.5849881776459916509815348468661649535409940486756497653761724118 +0.02943622593745917222898833754618856585348471594569686881397428726 +0.3572417013316431962026919347150511042636763596269956578845059238 +0.8246603472400295391578505724317567517180656867730457579866275623 +0.08267470722577286001217633724236129336011575576077446531397711074 +0.5296493544860877224747590127030477951987987258874100707895850711 +0.178161671839420517570934964597356447578898824155879129858818805 +-0.8633908949968827943561744577901901026376268752722144571223670853 +-0.3459820993240706010475901311688197838023719669999227712290509004 +-0.8814262497135981437569523940906532685397798861799997656375266034 +-0.9722552720272006984678084914751283988556792015475269427349942943 +0.6486167889394565452584685154506739738504706411589692034776454683 +0.7237216114456588829885327945423834052953613010855527824331391861 +0.9153832161606877637775414865990581395464326012246760580785761313 +-0.5010512652356920074204032205934276172215285762480987760943959851 +-0.003517119711452846559277971844364606295296520854275366315952866112 +-0.7432644962454565902867854377146609433353697756825593784757725371 +-0.6678889143320625765336213759043802181180754155696893060399849702 +-0.6231432486376980435414857670687342821530306865222818413703487444 +-0.761265558015959776038963903242211813247582799987701574301727408 +0.1046561870893663260798556882535941223232955552582338303672866205 +-0.4422178249719287625023613714462236578393297082084105686699745527 +-0.3006761386836519584160039426021947715604263308295216335254395417 +-0.3931472033430920383369653755030364057981520323323553764459192375 +0.800956473746882928456987043862133272850468280050235725390942984 +-0.117336384734927911842612913616027626554640600021179492329548556 +0.4299591565232924801870368761556079288133632606094048768501521181 +0.351950842714972405603834006572622410785881893665581295538500859 +0.4719165407085054156880418423268675488422117760448059022673468457 +-0.1600709565700552484491336034747507816107856100797576115468140784 +-0.7196566232553047172113131790990428945643928116318893875786802199 +0.9506852903491360468879758484099667312771993016096956267658366287 +-0.3776736725704435658453332291251578463493585478972191163904289213 +0.6001953620324393368833490197603304801854572549372059847172328017 +0.6978878736648347125949172253483236996713754832649550025174381314 +0.8508443401291057488517795791511283359984797073308503806275388226 +-0.4669474695063991815703085816201270850746349019459750890255838246 +-0.4916857659539131984511014678316277462480514807356006060275370059 +0.6805454442564243054841615570704809357725921633306984108877804159 +-0.7429928693445994197394008924008488085983664860223161935727994358 +-0.6969676211949719236627008807329635886036631346596064918901094455 +0.7197019444966162425693701580554867509036572823057158142921206547 +0.7821091276993633157184444189269089852199610591029476119050859896 +0.853322612153932922155019514171215033718470215426888526974581991 +-0.527123190429983130601023007335782170127141621028130059541603522 +-0.04518836599707041257371263007133991513702551585551047967233360089 +-0.399491020501502399597869265119952339350000411493961463635298064 +0.1151112248581587985459044273509734339372139569519498681662926204 +0.4120054991803597141675815179438163442823969621208991056428168406 +0.4343579826046095597725968699957767082823418268721181549420071456 +0.2535126428268633086086116718856542176680789611156801564801311848 +0.0757591082002124635881632323270228980382304124620507025889787107 +-0.009921455995466628736212379839332998874975285848956671613709936322 +-0.5891566693005274615768435832037723406013603962165946345013825592 +0.4725424296459514103640632185799575468737722475096114637473172301 +-0.3642689669126664223527375212471788979005234643229363317834063467 +0.9106160875739411428476569185959640646231793213239998804082355729 +-0.1554296096295892351142787706783742826880784898341993011418432069 +-0.8069065915498787556695276318086362565827819941733622970182376756 +0.377414941913701641980604281714521283600422741949240555908727434 +0.286257156034881826917947161474943151268083089341448769053424682 +0.9392006333865916821227548404291848184201007925131229813910957774 +0.5114205299580920868823613420213360686329180904621350249508347984 +-0.6408078680635244612899765081025913686282954450887306823350772997 +0.61034769186326371064247171222348075927083751612531179530760314 +-0.1695324055840820458497589349479760035964663521113253737383164439 +-0.8353594742240205937097730115138661305557325449129426505768609534 +0.1821483418007667766250895141417107286953921543595289977783017637 +-0.4074526958925963909486488891837393063126910851657623153854908031 +0.519412312832116093970077697359996336676003120133546342882630559 +-0.1339026726689501933617889040862807661257038358606191032725698017 +0.1617840119849052908674425797539541379830915417411164257796009655 +-0.5833399591688895541493678958036554117556929951798174740043291689 +0.2558611196916433369649336532000849479904305619298222327625863899 +0.9637184128969163713272727389388526394331293708405231601274766637 +0.02398516466411951663039478357357263297576765858214578984119980389 +0.7220807768185265925885711430037484304092954076856054861183001563 +-0.8314034062393001851412680462190559603040746972786212429324375224 +-0.2313683087056718682580625867623460795004227069874977160354372877 +0.5241531162028989758906123049906275766571616823241720374203214447 +0.09003216360057281587724105549690566269005814841108581287665281058 +-0.1599268816032428776743959117270259866309677355351818460136443291 +0.7126643265921692501928118835762400720628273345745039396768073268 +0.1443381463559750344148688262608847179704805274810841956785523095 +-0.9541149480810226451568227541620900387924893378859274527595762471 +0.3516772517804962317135771244694045300550581304302552629989927399 +0.8312645047002901343481040986077492354211106507977246573848547872 +0.8922074343575836687927424867109565448477559678636672119414443701 +-0.03914580715076807517564668371313115131680481962361916796431130169 +0.9746573852711840936336177201962708050687509298510135226623575906 +-0.7287905575728605025843722055111257091486772902084438557782657679 +0.02849594996466824865218850207780069267985584074611847663329993142 +0.6459433245400880395491408374407025292588521318149535734854910274 +0.8136628661132407079541934173897141567434892632439804419184181281 +-0.567269077607843925028375791245291662428913186501477835474640964 +-0.9476387464140397458861421362921055215974651715794066883914951208 +-0.2605437240709855372272831411319884164143200014969561164796810212 +-0.3311597085631775241605389615954882776971235843100995205029515984 +-0.8695822150875121724691553338257829869250127182425918912387649806 +0.8891098289754707421060220890985710245132795198449297271458423909 +0.2895552325554255930167653346015931047558748269272406529926466973 +0.2650936900762128600362413578030729270793479332746334793752266553 +0.7046936151828971593710415948632896548808680079056988913118083777 +-0.2115570299364757676008017443811649086191736127455534555376144021 +0.1470216587412559156294994682432100810761459629584248289010138317 +-0.4329010361486256961244622956913108506550874170254014125575533479 +-0.1766818323431859044625743795499747752198631648846896440459670393 +0.3427075333057822059987675632859967887158938796610229803331114623 +-0.183376886573271100129574182681696169179735558213922855123562123 +0.5665067551831146950685364521560101025985707475803564862178192914 +0.5846720091653589171386464934439494744713232525388330403763032709 +0.3128821017947787434710701629862425068710081298914976621641025408 +0.1943703959062877206669871517590249058034169064564194870074554031 +0.8893705554674630659403991877841826994191514257022249874261157104 +-0.8883357910902242353575856676539666074648753053656660309143767467 +-0.460716573466163781751268186859141052046462069031383085126522242 +0.2571290378683215613044136510821588749887474163677002652639520119 +0.05683348973511969001808746192505133291481235528637618587938493271 +0.8458238445504835463314748515393830432307810942061667936052115581 + +3.554145155457834944020679804111496739117385889573251605572888 +-10.312527598774277681013196757617291798146719449857378576593937 +4.945821101484503594844203597457275456306443426644150359478685 +8.138969356483131858056375850361017471927226614765077676261371 +-8.651900876026801981192896223970257160610277733301902728042441 +0.663763587057437843351304061753259291280570761178119297816703 +3.7322156405071312847189161505863564089677615212849986074310651 +3.067689146551115845742595524751904177070881582716302515357015 +2.639863929218323886882011165466274548375137077331572435186291 +6.252822778911673490547937923935839859422189451508170670920483 +0.2279120848919470313558306405681683916060743389980857411567 +-3.11414745213831295035363092401097250123822611349741327525487 +0.2993882100992137997284439747441511038177989264891748194595912 +3.624010814251416496661117182392962431496324498895361289205311 +0.9143886920230338497445603378446219931598699555716379477686409 +0.5175090688812216108682768576446036224240294126394409845325487 +-10.519914044079734509085454852814228854954388841219107931788287 +0.4118283121899823242784529784384840129378363092429937528420177 +-4.331340479712277582055522532072717315827290081569991562790089 +1.841489271160967142827622029394464718604316137499471169320192 +-5.1478161412433649329911628001388918054106500476649723974974907 +-3.2128281578145824486703337009660332196292587459127718227438526 +-4.5956002158727327462824083789684539126589980794449374650283592 +1.572746284931326699996639281766003177452480755363996519985716 +-4.837440175852534133925170734691848667230356540023434573544601 + diff --git a/tests/data/nfst_2d_20_20_50.txt b/tests/data/nfct_2d_25_10_50.txt similarity index 68% rename from tests/data/nfst_2d_20_20_50.txt rename to tests/data/nfct_2d_25_10_50.txt index 651c12e6..bb38752d 100644 --- a/tests/data/nfst_2d_20_20_50.txt +++ b/tests/data/nfct_2d_25_10_50.txt @@ -1,7 +1,7 @@ 2 -20 -20 +25 +10 50 @@ -356,166 +356,55 @@ -0.4415653525364425875595561926619571676937519758818885848285036367 -0.2086520325624420487101916822135314045088175303036646863500495381 -0.1511824375843169824185114172319147719223588913836399964007230083 --0.7035924603583511535986984592864385797537640709172487432674768657 --0.6564151567101526404248033266354854181628562195765596859557723591 -0.6965977875831549207460696210505433710177694513815592587963931164 -0.5816085290684877844083071838790011353935994102902484256340030157 --0.527253715551282406607425535965902718962742079261395869051002919 --0.8587217878456442924783287669774302171560923546889427532593498197 -0.802615497785384047600984758361791353972886095624237938117483346 -0.8316489546057848621322523310402149298559936201982941913906852864 --0.6097628083165813974260954335449904988521230536577883358240508937 --0.7453827739395389922953742392780783948094849228955462762695809318 --0.1809554132180854707773280908184743372302489521523696413745651906 --0.8150644675782343977339925655387466104832252738719676821788883516 -0.8917866574285656025686075793775106139378346795002297501283298878 -0.1101358891689796743272094664641471479081663952426245980291616029 --0.0541967333689012077592263814659907729121237619035205051756287072 -0.8788147199714254107037333013127960617440138295766969973173354907 --0.927037926394366126809727405514811573238161533791917190660326036 -0.4642977843367946473083173399076729199459994296180290689057358231 -0.1101424766711395834493541735390025259293259452693930682212953338 -0.9804018990020609521055380413227891839510323211141337706692935583 -0.8144388485796060257725468016904833551056739055694392606072812336 --0.8395517493960846429066650820934625099120153763823264316622178314 --0.535636302410552606673000089274072814148368252053769909998058602 -0.3785984554723058056848684987205281373405286509670642510688353225 -0.8125408356507693035783621684477489598336579370455636449932920399 --0.730498839098918994556008955395986000999974868552030434899102998 -0.7456261383135196385610840292806346156606897621955571769519287646 -0.7757376987729343002700728678244609761294630501410110238207420656 -0.4078040359990933213948732923927214812372340416337539086249054226 -0.1767712938446947695198229699328249449877999447752262239584762909 -0.07365715096199305303280147905505827004287730234420360693427261478 --0.3108355387530528344022186566449990520542204513871372429842394977 --0.9157841385420411790181903606309676436954041107787988394005532203 -0.5517970855559362574840981197851271127548171428450299159534222246 -0.8076059738124808816284579607205742577625775175934575040140126923 --0.3623547609761457713662054674281991237079618589827581000231798627 -0.8183208109839758987990961359356649031888827382055407382873878803 --0.8535325136050236145755622731382685357658674118927526952194103789 -0.7385965807078199198295561757281636178085738161163241745076529168 -0.4178732695594172450325633659542989992529347731253116371174433175 --0.5340515573220288676539037563933896861133701709641430080525373334 --0.4642629009871243127720569534731497065151730863379424324926815934 --0.8697898736666791719966463521302103516597198677810465705462889386 -0.9260211067928626234987335196506123804866588031248091568668186807 --0.008817333363577657304077859427800946074653041725554105998740790418 -0.5582339538069273279851977709472563742471538090477435724053193958 --0.7255700875545188795082017268145707633365451965771130961377344798 --0.9882699898882978270887601698779901692432742326870804476209571454 --0.9276804865150421462892365252888320798428705497677187785005965023 --0.7832811923001301276864916736742146403933964466320677660322633051 -0.9875308623632782097656312821453924896496525870736205800843638587 -0.1783373466436970660022454632463179035762888722766888416391448363 -0.7336545898457146349237975784794059749253087905334857489144998895 -0.9127856868366581467510500732005220443872380003084957447131950721 --0.3632881183963366167884860409201422151102177606787650299072097307 --0.3268576018334922472384377473775779415605488146060240031080037115 -0.9427149588672463047630742061537997891278684495348468159028173334 -0.7916571579983658653317798731563225080239623370784297265192438825 --0.6817701452011630996907953818868671270735516339211681814255907609 --0.5168940707242169951406978648595076294647040487113324969763690473 -0.4155311954965517114024103086773167213755429855677272377839721067 -0.6506707691016388017357516362760131941221566979795718699904936102 --0.7043718208306549962960929614939365734224121070283816720729220425 --0.9030673117697692613858834879354138789682350761417043644810908266 -0.5465706740090774853953336301894435415008351646460109707839721596 --0.6814239608934778019209189605706175697331566277120687413401512713 -0.9205925082347564380336697132499017123825554431098646503055203834 --0.5020782788038677346392099888475830183897864323626792080264544951 -0.1045062318771655437961420896781653537832869869453123103733053855 --0.1600201060994392446745228713066083331646179396065484107159119337 --0.1176882561544923620215084381200312622694313533614808151971725197 --0.189825171609586721044013508138189985950604720902663500662099781 -0.7858779951083861580332996484728804881745801231417586365625881696 --0.2279832493810412940114966076664112325854082672090777285019621618 -0.07761160430503009576118799101543653660926181662195182427626478291 --0.2055488181060608320954691371766551168555828485198254292077222517 --0.8570653123756356936765798157651852007633450856266713907351356642 -0.8510470630599207981929699284163199387691742475697788917650312737 --0.16560123613326167092245232006380763867174148167607503754889637 -0.4313169396402067420747675191335695107540210953445957632944683466 --0.6136943581151102724274558633917286896829715873222934810854627144 -0.6107089044121956416324813364187592386184059323011742030772237424 -0.4569955077979069087363694857841772836360708458051620753700613184 --0.205631651713017368814492512843157697507919536778183448181516378 --0.3127653344142269367017311068934194736573539345353684494263561034 -0.5675769204970204695935245199626881958749158960158155816882247751 --0.7973797882525385651192136516616674358654229933256541899442767797 -0.5012904467166158311205187729565579292182659743325041112386977484 --0.2570017860782360774767408845442523659054818260225494146244853645 -0.815285634526596302121470271218431186471214471233707249972351082 -0.3474550590975565404544821867969338696280672245517491821876495039 -0.7718119181978566336150728291679018907122826327418198982205731192 -0.04535880498283686865208322483522967139304884767842664817216330064 --0.7174845876743344015633175484139120449777707133419695966520824564 --0.853296184466734367261440721862287405945662264918150798455455718 --0.3551691762386405619967249318449133353395153150287271325435124081 --0.3797572987358468877601704908647997438784227376119508300980299747 -0.376493226974464138185316874204450738186203149130236541221263506 -0.2816632617692655097062060192076384166912647824219953750826131631 -0.6936970465516315197236088803729008972356138275937389314888615401 --0.8093948466492362612217398058810377625062288216775489656468562411 -0.7179094192553983421088688870290454722724258927762520549683983736 --0.8752125899339353908597128121427435294227530087554395150859455125 -0.04176278772058224232241432506737925045260833246510034386845030186 -0.9269329565460541008731323076781001715661419867914361439680533663 -0.7868192948478988386779315105006009612933033201432314519183555363 --0.006266353716036539320572064746082526752743361256443337864258505608 -0.2266154233841305998807280483192876569901369827513556377738818721 -0.2746350702494963366663352365693945459844370045750631885709403566 --0.5247772986387898164750425486144677116796659442569793354035835811 --0.4928925951310793013273500011155592100819574396889780507999573189 --0.751892802703204519143242195800854464517538017971097814182778 --4.558171987906096659610774011631922886788614992712584168960532 --6.936634489315386485765077083415283806733057188461598636234293 -3.802396944008746149893178048464912095063427000070596810845807 --3.806751251424963004540134859008343142874449390103437251643474 -5.80002212575569547805462200965596957980343189137378092254308 --0.081982374603306259337528928160941516541224137246381119328349 -6.346360281296698054175793171368664421328375510204646055684879 -10.649605474699812331724047566949297517154893028212789972161209 -16.681212079225712913188712478800010306322326799014285553683522 -3.352459814937428774486856146226501491153733249923901878726007 -5.677054268143667177673255919396221904574605138434687926036772 -4.833727116855517298952119029492710128061031995173975221090412 --9.275029183608587399302886661477963009124479129118386241519115 --4.1651897674958356857157549905366338080757845315818824332230235 -3.638867885187435431905602221385014783463936684500734045903838 -9.951891168155819954009101817827895035594619032687324689581409 --2.545137825254336856302609210390849478150405315372357101100162 -0.036936044898179759171368266030141505331003786838199558911845 --7.905569388432877304445728501398065154824934764848641874035891 --8.243816171575485121325942157979714723572089850361160773208218 -2.508695531705234104718897840538879461003594204962499195415659 -5.335607378906451827817099183920490422428355970899310662881552 -5.100029152652859560974744905886288874457951245334125899515263 -10.670406519558908133413584011354251252756073760859895104314491 --6.010029087737852386316704452974988269668688416436470624969773 -3.062154220851480973761632057622179522160169220043798502262968 --2.389430534316428968889138961053998467718686007424147175943126 -6.857325427064348162010017349438194326526838019657548546289309 -2.706033944108598739259960904676281564833591589590965743124989 -0.2973007141548542925096611190716964342624021377901839188483896 --4.855211069517163362142970321357520953095947021551237387083261 -0.759039932711324947730727626279236854395658821445381748956535 -8.649911975140560145156338553479851832453142755622842460058308 --0.943382355907944026622404460143412513851817910939499273682776 --2.5076966006936131616132367483132300129285658453263725152526 --0.025028947103962401452190389302938212256068346009981402729429 --2.703741084043025347050985786126639209872879247834719638104103 --6.364681026586976955783771799336394188354209640322346888942717 --1.123341485257654829670102514639525180551149861960397279628157 --6.148837977929676864384456585370783908439271325716639731439263 --3.834286216058472916912571765195176830029209136562766408658279 -5.390458030858245871935557405677329754839205308368997160939405 --0.425101127965556194225426961797031974310696579623479689037145 --1.000005215448341496857235415697461402184996902050770510766434 --0.445300789747384356639561423624540004398266823558455502889591 --1.635763641955152542398893431656578781061120878289145366872525 -5.508678507362783617709582903880609047787141303807935699190614 -1.725578184541035681535649748989819999199538981450877053268381 -2.892250554995143053575799918549666083430389894078071535958012 +5.411416103106188871331545999121798958625746780212229974778811 +6.939223711068207213149474179203221725984336266689866995057682 +1.628112072131631220433768315269218609850987652108660923731648 +-4.742641006269113625087499819251363500083230096323336160984944 +-3.143546066438555912368085870101047630987292429191679847200162 +-9.872756347069677330729876749559581821525714182636881035236598 +-2.7349556074310735056713933873227585799676642985865658660880171 +11.352383260260794684738700170973019007669398612417756872037126 +-0.026416356704354168256644732132926844709414189586276762275021 +3.411744377120211396305627731253400266769449672125269736593704 +2.801079323412314254022311317873244983383413602800954135314046 +2.15071443781700106866368342562304967852423017104679662908211 +-3.1708652367338282059986547195765613878858135106001472969553895 +-4.526935150601714924539130018037317803305714755489966003022851 +1.2355158298843070724761206825689572020647113475885513495228503 +4.6414373537223960765299738282795925495126013438440061493480274 +-6.46740970945052180802928972445551505146307239826430265072349 +-9.4645030391660674481645596955661550701964644408282538071742701 +-5.58901329069475164121421690145711076890294195217535889383361 +-4.548209581323558128315163011827090485212803131780482497189564 +5.480024217737886187953674175518831055365188837461438448029996 +-3.702922162925268255471979430569509367921621060317106172874166 +-4.7354992153987637165625803676447967187501809276377519498967501 +7.839808922709559759969264152475503911029063357728530675900768 +3.769855146443712680135955448959623650887663169921239930066553 +8.432168667200856323409527531142499551636733436147977088692743 +0.48592644586310086697300194572421390375947203954045220549093 +5.616578457329665538486267206621947902307831542182678397082682 +3.74167784285488530558324855753047383922395348384778448514033 +2.085786505087945605866178034866933348797088511420127663034943 +1.7420793413972022841080739957327190168777962498644000448694974 +-7.8117836994330962700036403320904846228587322835320606234290566 +0.338004919137961241425304818590535904619467771249648632899826 +6.085482501635944741971744711904346269817610265409963737885054 +-0.1503492295944954294662268087491778863402662930286245964780247 +5.8378766478241161282556920371602729623619793435758112262659063 +5.54383684123535789493608047391448795282642330018266214391676 +-5.805857857751906540882370269410356682587396458794752071183022 +2.341417319384530116303258449909872920537805965313338044605246 +9.727526013318705277279848121141776068131403128604479326750026 +-7.038224517757013972052128828710816583301567172600271217216446 +0.323446821474590004058102209361321862634543314021236185774257 +-3.405175069508151456824565681834587447666850776038906826773272 +-4.2774283364227832737536288348481198744099028398409383800626267 +1.182616678524811869710547983434668841742470809933207893958275 +-4.3532350387131575006211399399572589698894725300156736536964539 +7.774658117717195718947436397150559321449909120057996164081176 +4.7579173624407451794518352655477482355366406803694491405730487 +5.4391501561447990880875795342402563335556778311664176671543004 +-4.861334122121871344640738452202178858850938463530193429768754 diff --git a/tests/data/nfct_2d_20_20_20.txt b/tests/data/nfct_2d_25_25_25.txt similarity index 61% rename from tests/data/nfct_2d_20_20_20.txt rename to tests/data/nfct_2d_25_25_25.txt index ead1ba98..20fc40e8 100644 --- a/tests/data/nfct_2d_20_20_20.txt +++ b/tests/data/nfct_2d_25_25_25.txt @@ -1,61 +1,61 @@ 2 -20 -20 +25 +25 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 +0.230402910644737899027368109577132641139999484424691959789185425 0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 +0.1710423719261291377159530030970313591027039443678008179710535332 0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 +0.3364577288497801964516769273084333242643301891666864527719104049 0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 +0.2472557826481684830963989449602703101137738953947821260330747 0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 +0.3156638964725781243541272856934334091751310165287943458804827568 0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 +0.1291749563767577778093174420442248066853355018583144808226772126 0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 +0.08822777041715483808900537550686335988124286767733376669602735212 0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 +0.4873897775905716183934451117229193992829973538264409415320627283 0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 +0.2820193117835646460363939425636435303399129252463767075702079429 0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 +0.201326401841226822499265144634803231090444660833635656408098582 0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 +0.04021826656973756695539173905743953803655775666757835902774775232 0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 +0.272502449871235944005176337000832389787308384521685260378340781 0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 +0.2058296915808363530212836937615578729259850336228305216098969207 0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 +0.2249375001022399482177021326361767602306099380452021854751372688 0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 +0.4639578196637028654618426122960844569745924535620377426170001163 0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 +0.3839126554233829641792241169995056112118738549435185680451106415 0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 +0.2368715426933632797203883114608453601301280965983514357031010166 0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 +0.4879523795531072195691844705038987386977815390062911906717683948 0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 +0.4989055963203276874130654061778803284303962145484476976641785229 0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 -0.7335087736711041883089151876515694737975402817556229765975958245 -0.8786687027770929787301562525828872003547410177701220950278899658 0.1944979336074391420204691208780533563017707991268605634570366201 @@ -446,25 +446,265 @@ 0.5012904467166158311205187729565579292182659743325041112386977484 -0.2570017860782360774767408845442523659054818260225494146244853645 0.815285634526596302121470271218431186471214471233707249972351082 +0.3474550590975565404544821867969338696280672245517491821876495039 +0.7718119181978566336150728291679018907122826327418198982205731192 +0.04535880498283686865208322483522967139304884767842664817216330064 +-0.7174845876743344015633175484139120449777707133419695966520824564 +-0.853296184466734367261440721862287405945662264918150798455455718 +-0.3551691762386405619967249318449133353395153150287271325435124081 +-0.3797572987358468877601704908647997438784227376119508300980299747 +0.376493226974464138185316874204450738186203149130236541221263506 +0.2816632617692655097062060192076384166912647824219953750826131631 +0.6936970465516315197236088803729008972356138275937389314888615401 +-0.8093948466492362612217398058810377625062288216775489656468562411 +0.7179094192553983421088688870290454722724258927762520549683983736 +-0.8752125899339353908597128121427435294227530087554395150859455125 +0.04176278772058224232241432506737925045260833246510034386845030186 +0.9269329565460541008731323076781001715661419867914361439680533663 +0.7868192948478988386779315105006009612933033201432314519183555363 +-0.006266353716036539320572064746082526752743361256443337864258505608 +0.2266154233841305998807280483192876569901369827513556377738818721 +0.2746350702494963366663352365693945459844370045750631885709403566 +-0.5247772986387898164750425486144677116796659442569793354035835811 +-0.4928925951310793013273500011155592100819574396889780507999573189 +-0.3113637472666701974473222596908779747755145602641740095469526339 +-0.5748854355426279234162395955225246347221834110564955747956209638 +-0.2554460407289573319602333075606187389397146712378109702048311016 +-0.576542912883993928715652331022719536448966752471880286018776653 +0.9094805878752663366484875502653563100058416506406189283398268678 +0.8848752416174802394989820330821347631944308988732361074957483326 +-0.2800064663747466167971611334477592148285678388000719119052505901 +-0.3524957419793069043802183938505947717728662986795036125951037387 +-0.92661757991300447545015659444519280829067045255691447808600615 +-0.5330220313943443910835605702117655504592614398056913858309712345 +-0.7330266194736301185266620028746862947402855823289205835841036965 +-0.08901643770401430747538873378587416087951119772581637121305331682 +0.8550765251384289421250035837565358470833355010809526497352204912 +-0.6907357918123153055314910754893467338334399179189583430196498864 +0.8787770736433328745035234902871834306966611855454194152763085168 +-0.01738793803090707722596079625349684366463055472987575653160098446 +-0.843789436167682845942043151679017937854325407163610849246652901 +-0.8141497075382254027096074950311514491854968487203741238943799987 +0.03889316514893840261980283978604250703936072380623394289182754247 +-0.5493273108612277875600478109570404534520845332638624479667841502 +0.6715912488533200815290011024385797575217363717470920802742883653 +-0.8438919390970836161462370188424965610990320605153865447984219469 +0.7184582122882689810255427112660454958040291396946043511983687288 +-0.4086097264688666636790174928803728608266459573162410770584140364 +-0.5697919261032078557614020481060183849522111669616974872492012829 +-0.6278243966060881460501444931432866833291695231208083680886203722 +0.0336828617705931544383250099730864952662928062350424608691618717 +-0.7436883526680899648969850724114253803054818951808117927039564586 +-0.4515446035045963800470270932006012917142703741148728102920678819 +-0.4810931364819359747828351037417496237257328332185652823964021884 +0.4458845011005795413736316288478062406750213207171946521339936816 +-0.07022130270408117391201617422037495983519685200057324281521736371 +-0.9363332435815881306934514312012861106386014749526768950073553811 +0.5931834085557288286300206310139754784241341457686571795494994774 +0.7036190395840156286745266326175275923901923175942468576350074587 +-0.5793821363841516257942372216607612745507267978856920167262365904 +0.00904502267908283601336368137866081061069210352581761545503802156 +-0.2778968847485682179896478779214700059419569060048743113852325563 +-0.2784308881971247865302566270327586460636817633229294056506703495 +0.154652062686142233335996164065894879050336448396759084360086347 +-0.6225775243116540313116281463349420309042753281761340281921133715 +-0.471116359097837612645498505928182428889732655753776028642471372 +0.05019084624368743889926916934552108615492017653478974426758842368 +0.6461406780733109189385884425756901416390710262453176809391037054 +-0.3646945557234024586517840337629880176834748783187949036037901754 +-0.3370795553642254807046883165466968306962599317309657519831180634 +0.07406951035684034748316975863636120744360012351054481175945110032 +-0.0706071377017734071574459854474813417829167710025638691080824309 +0.09360709618916370956867688682300922265055482761303476467874635515 +-0.4903988627030185676892387805777880755902392098553657129246566032 +0.8668617192033373216803865611020212154378552305142050619982759533 +-0.1745567235833106956445457069963316833929324818668372064961096495 +-0.6495725409582065831276338775327045761031092852475255376332913976 +0.3132302317415336986457546693818300494005409790462961496623925972 +-0.08002014266656912107124326141465267585210492463107808149275462116 +0.8439760661050647193221008089223906976491469018983477783830651032 +0.2742491031513893827528343314344994279572977620848668278687664294 +-0.02731317148254747797517682815221303356852477238112794448774630271 +0.8474076414796548139557410486347838750741787558443005871442567576 +-0.05779005908514727153148268653835324462294291367795091759798861981 +0.6263509070486716842858384400904599373074897647536296406115669676 +0.9742953226314242461965632460638579799905807780876871234627553275 +-0.5412738282089598200095228242549815505925302427991012087392399282 +-0.2810841851319220937367807869615879057727320463374091858347990139 +-0.6332274216696186147542273193898355103863532218808631013492331016 +0.02172241435608649221235119486946747660849609106303200545112768013 +0.7184196840602424035733157087786269966875702807495568534158194777 +0.3749586907344833235687996618371211329945742347114437060445496025 +0.5197997067097932079572481275469253932045397138803211253153129772 +0.1001908957778599515703760968602291233036923939615286132670111686 +0.1982609831290281879535544386961448200899094658928947930993426901 +0.2265305308299656396847919737333043590525494945051651354564266382 +0.7906018990132069071786050772247164464130165003035494689544865899 +0.6124546368149888732224396347205514888588534382757197943350914313 +-0.2036417356829187550510823664309236059942206079488018356074124469 +-0.4438641124602506074890760872561035010575387638641217902217169658 +-0.544767226142520327341708643509310597533503231008421701753029047 +0.4877743695516254187304790685268488336758168947119202326402657771 +0.3326494238536684877812162306671513312155429822231139301441247885 +0.5288035512647287264400603641207174184836483925130588246958035505 +-0.05640118305249958065859491687650402005035008328934427052170270651 +-0.9339602027658081848487965258726967589939079607563390689984129939 +-0.321275957553128745693922641853921576922022691685968198941970056 +-0.1418273761530124142414318806991383724249955778125131615411614959 +-0.4264505073732180514731028302116498991019475563421457885360967122 +-0.3923419951379572363099277373060742200052172625687618481037698142 +0.8711561101780366371965222118006359089295680450882925107561352892 +-0.4467304300012012793076027789623627915431040635298455194234986428 +-0.2307052332975307401648420105809548829532849045676342380730437307 +0.6986593716253086507864036814802859528738405415349193484448192348 +-0.9881297466207630693750918682605017613031699244501296308233100941 +-0.6760661791650244249188462300591840173691864903003885411720888657 +0.4739376045463275401017721226048506342846991506758626675206797346 +-0.07231115199509153957529197477078330317517719228116128797380329585 +-0.2135268112097198247010681889001898755255288900766137207891430752 +-0.00391719982426902043959346995217451979511795015993884792888825644 +-0.4074397155278875973813395109079469465734104483931918973323186003 +0.6066576651382865740459746508693765522490832331025440239481867214 +0.5054494871102213639926772825334560876816388786177817611761657915 +0.8226583267458482637565255432456222691986173539474741807557700154 +0.9730166336949259260659399295334240422964809729308435599151328247 +-0.364185457502622256307866947693356486103622853614760666076420203 +-0.4001542376557859551557248563046997931549614286245539273687375468 +-0.599100169628289804012363486827377728153644244666681806548743669 +-0.8583780681190373783452031494167712583130326378561487627832196622 +-0.3045463752630304889449065225990597597721299636237444059518468086 +0.7886150417047268238377576739443317830511703278264640239600600345 +-0.5588043912338361844241544228067077162062321498757294327644573793 +0.907133074597731305198810561446025916829146667322489554834535833 +-0.524311683190174937888559570575683572384050389075376539064024188 +0.6581907342494117061956856142004712902056506998470355167826692893 +0.1974669756782317180727160357254418526609096592424426109684117699 +-0.01972112572276554306178203846081429764689884696412132525401824731 +-0.394337251493017165762973203726973092159618930132047937098203061 +-0.8596972563284409333221353720093891317237347467906295445875608281 +0.2054557247504006267846823161008744108436686866387260670209192195 +0.9164793193765776053806704726303778876533969118110393675531419928 +-0.6145730810103541808333969921377717371467821795648928293281783767 +0.007095154334222720138793901658750269696036135112599827909026723408 +0.8623200152218083367220882180263569709602229105502792928185580311 +0.2328862533541289876695060577850480885078345462436653283599123436 +-0.8594243434084773575696832444002804697287780740482575549078989199 +0.4665227761410612503864559792071327777686034364978804464477715773 +-0.9811624944532105651955157652071808929067746331174047524578239984 +-0.5372721741325555621080856058022867645684999577425925732434683467 +0.9142689324243093913109361832104779693761718654772557241029242509 +-0.8519800093917999049786710873262630254438596819890789333402870548 +-0.8663463923987564465482638692819190364387064757346171016284231869 +0.2709558465428488894177444835034893857451398992362135202765939096 +0.8083674519889074596117164158478163589581003465847262190755456111 +0.08192318101143036468909245818104351795349752285255508370548377145 +0.4432662295285746068645760939682334332432727709335441542485014646 +0.7098458531193496043308156335940587627787235570183896188894276827 +0.90322989019219600061196867059798813661922909644595685154839827 +0.4794254791268536633480562976950887435436025549286522438789030803 +-0.7746484154169456512809937246271660173202685744110036148882342333 +-0.2763771350523139054750111351929364757670962641805178507420343842 +-0.6737640502546376711965235263761153629368423334845050663282786384 +0.9860843557274707818224203215557433615103323795855487753603071846 +-0.09908250822208310979388125313393386625642518646689831540002743491 +0.4083364361722581165801901479594515422760935325739573558840448982 +-0.1987464128103913290537565707198845322065664181338633370605495606 +-0.5407738721582197458183352565621496660631978320791939263962860219 +0.3927066115442214638047153163113331662262162359392646773307752893 +-0.3547265721044417796948020637228927981006372674781249634536133803 +0.7443511718754498369053636558248957547288930096116725829118390452 +-0.6106514856175809946267252713465468241183844646996285763158471635 +0.976523926183381328411157151775497729758348938804345757697622217 +0.7738274296309371782471493836581620439388102593378042753716890516 +0.6303435590127475728343988381089812280592884794559438601115730286 +-0.484063371813939130083050651772175383209126084648446213771534038 +0.8525922176927925458770820230111251769664015980843161969462044384 +-0.08163044187898704046903120648457597371959955348165323805504010125 +0.421148022345636083380666926166508150293522832173233944655555408 +0.1636579949610354489441057651722542939624135888641020127310796368 +0.1158996829838767780820446554770404024129821417414276676244486116 +0.6122743525100609786427539952903164332986527922843188026822436303 +0.8287184948673512642625509766623864745682445181955817748687592982 +-0.9776838203117432640468561992811674532088503638852841073034452293 +0.4475824486005748840610281907314246250638614806065401547533877687 +-0.2012889019039510414651830187674193045950194169108930931856542009 +-0.01171834366241198933438406373716581804955151297150743304159782864 +0.4922455338395964925166766918239575749296275172064692575993556194 +-0.05364567611959903567502330013213963546585099551575719307976293259 +0.2859039723670674295294361938847146749682776282795557426834523284 +0.8750329779299614706148239867721002941643109143868880399745229725 +-0.7722586575162211931712103266374485003179050625215461656404618225 +0.140103474533723761562030202095101893875706398592221339805012909 +0.8390047845124423734044204882406751006849491027338704535253123886 +-0.3131244711658136124319194937374637201951191483185787516824163028 +0.5906431155148677342149308852685885638274033210013285902888289507 +-0.916204807843398213138374272217346839955126571982524680966302845 +0.4438198023728849844308452858166958526884620742389769268237679581 +0.6601586762490308568348505588115261580494881196839526850118211037 +-0.9618853586098018371722211571527418635003319023500739295420333417 +-0.1292609718107532753146691377641856162241453138036350409973849233 +0.2813027204528153923329019336432992610341145263276842828170084429 +0.02901692607382806767360968742809799650944015215104495220771449394 +0.3041938498059602562920829742497990465452656988389381717366180348 +-0.8416332863784354708625199574482551667809708135793159735459802674 +-0.314950008126667019050031257450545808172579515682962559472777899 +-0.003275852688626340591683182725592289209533360992124403573787800845 +-0.8378625925962227631792682994265765481907889744535199746129185636 +-0.4342779984921702749034944690110939090155169682108203705245647346 +-0.9068313407149762968086567340954913610684595084886817903492351126 +-0.5878274041052291477943021502436561002773261803924218942833270832 +0.7976934088261920073242997664284179394988305733935216816478972594 +0.3072993380346806450796644618533558809298372285335849801472800055 +-0.3158899277774763040436693675498339368716705701915489772738691617 +0.4666714471594296105907779829907728877151358508508298995416084212 +-0.839252315736576298292024833817840220786429992773043003201199367 +0.3724656798429113456573796032664972786754306954066217858782865155 +0.7833206787384097305592819931133370072071003949491040665893856821 +-0.7544051316606455187663010577509845083171139981413787259246099009 +0.3363836481324219723370186210692794125850649784394352985597901553 +-0.6491840008149435654312968884792746101712975654905192131468895032 +-0.5376568533061764969177810125554299187960447693632897302426453216 +0.3436505628709939568617544614844578999694824109632610235366179258 +-0.9878395889167084950186530859519776075387863865636110539086573895 +0.231430699527959400864415392219075285031748034145026692189254385 +0.8865073285770955099860020924501486556125845788147491503154690747 +0.9964078756487818306982678918396703581497863065837502553775568638 +-0.1327340387426539333160769890953460166634179046951612739896832303 +0.1516135436026911837076485354625099431713490636151252380398422077 +-0.6794254217136540815383429489211152521219412790709340904663043984 +-0.8608338971722177289009152884317389810381974752382902396992736197 +-0.8579601284570283198168880475663448240213020365272821075300399251 +0.8642621396528582742546522275938696917350964149850345375415910969 +0.9793589839033901948731783645080578582463688236077166539472268901 +0.9683660064401229939001661515228452132613132290247913394628566994 +0.9871325644646234051116914095144895949244082254772823408822757459 +0.7429408357918861651391940854314483777231519683391271617922207998 +-0.6679971490414301274552666497306612376613754110623070491783068932 +-0.2222054162805692664553590963524746378422134405027779312108432929 -5.304046455701003658639816396306506328105451818195617285856039 --0.144971908183684759941664367251225890032699430340523527270776 --3.379249104589014847050838688374332220734620241581222139809445 --2.257293131940796341212231719526918685471123899507162140710303 -0.597199891436948050577692272677648693739925223186993764481213 -9.964094889196455710746675841242832568210851828837093346118029 --4.763992522109748441501570240180228688900537700746181580074543 -14.146834719810752210180682076026961559829416672618163479995544 --8.804414522451910236672449153883680665246729490068714514004394 -10.101871302423012199349161701626274526434408743349775341029326 --3.779589300926453837377842944256580728486893502809947316283949 -2.622059660623466573634161675725460252599135479261243402608506 -4.824441810653706795233778670924580562296637443416494580403165 --3.731148143917688902918996938645015061062176457650969491397072 --4.268090325717781238057920850624738762011788529014351732733971 -4.5702142837713192865537774155677212852809067453483608990634174 --0.411933969854306956089686998801497593497090190155321387985087 -3.772911452939457357158319525711140134956850534970100714905655 -0.10639084708554845660989530112892020446787166975832126708745 -1.113903896509569717147290762265676363237815533448444148905835 +7.898254224921406777313338852777808775960170780808416704077956 +8.612890968719827806553450811890488741931220068365652087687363 +-1.235824913061249600461614763891317053688996588214917512678155 +-4.295797845282419633929617458817976671133146432638635753926593 +-1.301299656618604148852207502932512901899609753095569872200729 +-13.633986890277641942126621586822377457695154536914874853118319 +8.560202896268846998035948878422301104247691982822995817876744 +2.149730939815835681954686056963473085791172910166010533492892 +2.490821255037885777836767426735713537192245718171718889373225 +4.161197089374789821677274194650545920665093461017658775967108 +-1.885196907587567895760524894507921685268024051852196212085608 +2.928131947252063009110499917698731683172502069827371915558219 +0.033267832960328149940004683447559298055894437754170736737924 +13.981329601361340536160140338573533774397917717695866411846333 +-3.101775905423261599351311998130960482323303314180499737520418 +3.348958132342158886494595310774704614128791354082950722866207 +9.732861246319260748893661148489426489756940037067261825448406 +-7.948246369829223649521867962804871478897716489511602871877377 +-4.581680600754279103812353060366698530095577853183464041685248 +-4.046667801369721280846076174423522716721300011137152441557116 +-7.243837460047745954791287307824058182518703090328598127496254 +4.472495598775402963687358769919605429489664829017854580285447 +-5.721775801090884944287904763293055542848069746625418354962342 +3.985347024149439797338308994876146793309732529495941826367753 +-3.614079411212426037210930429499458623236527059460604298685506 diff --git a/tests/data/nfct_2d_25_25_50.txt b/tests/data/nfct_2d_25_25_50.txt new file mode 100644 index 00000000..78790239 --- /dev/null +++ b/tests/data/nfct_2d_25_25_50.txt @@ -0,0 +1,785 @@ +2 + +25 +25 + +50 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.06662280658222395292277120308710763155061492956109425585060104387 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.03033282430572675531746093685427819991131474555746947624302750854 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.298624483401859785505117280219513339075442699781715140864259155 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.08207325709908859955349127721623747402414949341932039321448366214 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2960310066429102964680480971300708536474348030395899411240080615 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.3828540819028855178054925224849411075824391563611448148957922752 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.05516004143072870448596121508383272033655812692006033619596436283 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.237543150470257374929526975092414814248607042083779025974909265 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.1961792130308639250827480820713033155829089724167338962105237746 +0.454917586626400190455113486728514743998772785129201763658322789 +0.2142418523833641190529439639573092332483770122813062909521274767 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.1135357677968130998829352447933571252330847135039649993495538834 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.2964172037543097881772010061608292321688207375187647517994300766 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4548285955464891231119288561274837990859107268507022268607509726 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.3651121872834882789243463430471126314059253082862846478910152932 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.03483660428292199961165049752462598280091915037295030179924953551 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.1992804389047949490230324961860853758231538395748301207070552558 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.4431890540148335609220307427015664134805998752712734611429558024 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.3054113878224388525727863803324009276678724038269882973431353032 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4515130176933212461457379892011009039970207793061012850021972899 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.3123746114641262123026545021046848366396752725405471632077695806 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.4231801157326450939593950301163204387907848365988263186034774935 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.3371051625361155191605058367081984631262698548567050132698474129 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1158569246667318677726382100194916993028532082942523770687608535 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.1257540256523933131861849134591394031118487575140133228233992713 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.2225091693511738630364909160801392395880684222208336319127352641 +0.230402910644737899027368109577132641139999484424691959789185425 +0.08108630935780192087288539681850579539638581750949007810609253602 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.467183882923008897863779786990467499952265441334467024356247305 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4143426837235721258639164387297265587502064987110615120264960548 +0.2472557826481684830963989449602703101137738953947821260330747 +0.3260230638578554310965690714273014694353795654392329747815338185 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.4230828797886864872654427218269417536997368489213584227186758493 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.03008038880397752995464766841114511366776748602297501273741588034 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2440542348872463086448971798771983090954435309328837698833409855 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4963749181604996707711627826124667766173996319815968541805691201 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.4179251390915574619103395034989051818090561346584808617678582754 +0.201326401841226822499265144634803231090444660833635656408098582 +0.04054892266065765506430027504488194441193313938297750889020142059 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.1523991209807376578892471212997508118935752110980944656933526434 +0.272502449871235944005176337000832389787308384521685260378340781 +0.3399053735581819219789408147619129792234385226566519339286954902 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4489657084957520867684053250236424967958623562309511687501852153 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.3853132582342397948923973854575145468799173563498982036485609219 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.1846615566851474560808622296504386351174368575753366711982657403 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.358957081013045692924547554419897111750212389712572443828564006 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.1015633551925185741450449528428193261899769078214801258496170621 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1695489630155716515516037599674566844347401374102940702411774109 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.06597713563134875196413388873157392316448289978881662980442866809 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.3882968411737077793182460913076719955990003553066639475551853515 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.2535439404935544197331984232733988640549412837971456300023465276 +0.384865504568687870081160661201127839598602309270532264614380477 +0.4224397119523030811054991897313901508203320370822952833787588886 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.07508242151240927532040654326055125402842379765322060248915709291 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.2172580560639218655701442687403257247049109673251844219149842137 +0.3455515607589044047244320070401003626747106946235853743454314733 +0.2726237581724535975061505494183730437837098775266075552558040507 + +0.7721031360269444536624854764846278079390436516442447307214583713 +0.7113282365127787106295924505560767722199840055537543517442585349 +0.7679535856628120283990827155162180966010981503917935490380557142 +-0.6127602430473631495393181955733023028663546816025211937039540524 +-0.5944056790460496081717996899055920305811666877696698395774078378 +0.9839367502424209997890558933686976016082869978582241397510153252 +-0.4548419343247805224460011391703079342763504118566706946966391853 +-0.8849845588398620212194475625021727518116463369860566764411889312 +-0.2496600323413886386258990085306122333313701779141184118995463959 +0.2013567579813494116381818105314838610969816486807952028421948124 +-0.85858010457166611374976182888109386496982051035674989499979384 +0.7326702292582058588316598422918662773838658327971514003421703067 +-0.2697443704573465465233716116511309018200366900116819867580635278 +-0.6468087813680422377672655136982917947328505318460482424201962 +-0.2812302577494115409480047067683469320314228801749259890701395474 +-0.02167413194230472805204979364706614220652157873015883116130884482 +-0.680894955890704100546661726757747116024714493408288024374190234 +-0.9306530725185795934583927665790248017610038861531896668451002839 +0.3319152007540851906913026983763584438955853838764895977762668678 +-0.4414898031680223608932387792017485771255689761890070706015387399 +0.04675554236208552284539297942143061834219393972333359647545914081 +-0.8152568938325646993310760006867681539054279301843202148958871677 +0.3952163240756655529212705355453418848569049122249531536768131848 +-0.9395163144138835125672454933008856593503204403133472584898229717 +-0.08780353633292157461769946866167963633505729824902226238512671868 +-0.1743560068378512679152575299947443762504689480476570621749324843 +0.6018835924636782523215034400201993341434060856497418585329625279 +0.5094537464059880326374352490064905763350159638438638190213421193 +-0.6412882157453879879998117648467144628970706782597054160685555631 +0.9017103216368149546517732133490469846549850682301607701578308401 +0.9631270643127979384664069651403286361478505285019531813591892173 +-0.6210835173793688086670082589175993809833456274087668762475476635 +-0.8137281645240375388576750044830353268919925528507904843095256157 +-0.7041297500866612607234884784407130317305843364144413223065323821 +-0.1235721593345202217795554759876880268687368789792682195280803184 +0.01793996302825844948175557573252934185711456214972052895861572493 +-0.3411596862218241172328579047617234818967459872060847679144866809 +-0.7379746599220903325806827424480469595800618414934950958452657346 +0.6843546378904107483368305041075808036585650068151329599810630045 +0.4265099420399003863248167494626862205659560797404855195341684806 +-0.9874151891964456486571993218370826427302121071375833081581536189 +0.4601637140807105378191037234478805179877043129140064777542238544 +-0.4841039802362244364267157134690841461075259779700777041439742307 +0.9965877589863013394561112420396792373833365736836351278348301833 +0.191567730523304776574190978829765313731471509331205854313016986 +-0.9100049476348622207723944867294612891098821253248738836563459568 +0.8085565025927605798160394591787637574375967583263627553971120289 +-0.8851479413535487385573817957243936843534909265401263726020814395 +0.6064591258881136876029163103297147737049475826316704311935105558 +-0.7125906556497681391201675092436355218810428000432951124150783383 +-0.7605582778547942408060351317015194879473019118917060721292547632 +0.9359455243018989598720894094889086512450300947660621306436953491 +0.64033297030031448665328828110131678884788143990971470968562862 +-0.7566145378422368715122716757726615136162685098609876740055635889 +0.498393464867089132881118789295770940752838691384942740522239679 +-0.4971948424110283155918942363898656650230845195141350175248779212 +-0.3682837387895926737476498418989480477365801929350913148252356807 +0.6148970507477253459184467315745337121338375212139515007860628315 +-0.9083524682273578446532722997799475788834527253595073048265657245 +-0.3916716877161613504785809028033398517645549846406356231576213868 +-0.5193518691808852117378350732261309854332184624171433727414006814 +-0.9750431258817692289559363598684739941265076062018304867776204819 +0.05005097085661604605086728229374112382053058454731767435671635371 +0.4399150750505159978489133507713340072340352057744402647976718275 +0.1872909367861505164718492831692222169018789408412172493435499423 +0.9419321039051109549245680082622391092246632631231828777233002149 +-0.4287041936652777153072881590344721321081952456510997660597381855 +-0.2333391111205556198207256592076331117879880842914267473885863455 +0.7889477067277564731712862630611699647549102063099584994888747696 +-0.2563747285446000361218237435955077669028092056157149416120292486 +0.8211574497098423675796354902233745259806437217163965161734702361 +-0.2430326281692574737943057410600918611450147916626606070615468027 +-0.5566744269539672218404388199827460990960984415899809143036909069 +0.4524110448637644360868388875231267640338311624103409145041788539 +-0.4077100331640054846709900852315956380002910175183742932154068317 +0.9925432694290908433525570320250227385826836114793383624485189244 +-0.6845441772530325736299180977635806745002567201737916085152286412 +-0.5689275448635581694575383584343021970227104177442089801706330228 +0.3985567814775143901221253743791327148945266133080683203695999962 +0.06961382826101090949578301124383292455559947536661707583968975184 +0.04307050119059237005387541827491059927895209375649378090223139587 +0.5849881776459916509815348468661649535409940486756497653761724118 +0.02943622593745917222898833754618856585348471594569686881397428726 +0.3572417013316431962026919347150511042636763596269956578845059238 +0.8246603472400295391578505724317567517180656867730457579866275623 +0.08267470722577286001217633724236129336011575576077446531397711074 +0.5296493544860877224747590127030477951987987258874100707895850711 +0.178161671839420517570934964597356447578898824155879129858818805 +-0.8633908949968827943561744577901901026376268752722144571223670853 +-0.3459820993240706010475901311688197838023719669999227712290509004 +-0.8814262497135981437569523940906532685397798861799997656375266034 +-0.9722552720272006984678084914751283988556792015475269427349942943 +0.6486167889394565452584685154506739738504706411589692034776454683 +0.7237216114456588829885327945423834052953613010855527824331391861 +0.9153832161606877637775414865990581395464326012246760580785761313 +-0.5010512652356920074204032205934276172215285762480987760943959851 +-0.003517119711452846559277971844364606295296520854275366315952866112 +-0.7432644962454565902867854377146609433353697756825593784757725371 +-0.6678889143320625765336213759043802181180754155696893060399849702 +-0.6231432486376980435414857670687342821530306865222818413703487444 +-0.761265558015959776038963903242211813247582799987701574301727408 +0.1046561870893663260798556882535941223232955552582338303672866205 +-0.4422178249719287625023613714462236578393297082084105686699745527 +-0.3006761386836519584160039426021947715604263308295216335254395417 +-0.3931472033430920383369653755030364057981520323323553764459192375 +0.800956473746882928456987043862133272850468280050235725390942984 +-0.117336384734927911842612913616027626554640600021179492329548556 +0.4299591565232924801870368761556079288133632606094048768501521181 +0.351950842714972405603834006572622410785881893665581295538500859 +0.4719165407085054156880418423268675488422117760448059022673468457 +-0.1600709565700552484491336034747507816107856100797576115468140784 +-0.7196566232553047172113131790990428945643928116318893875786802199 +0.9506852903491360468879758484099667312771993016096956267658366287 +-0.3776736725704435658453332291251578463493585478972191163904289213 +0.6001953620324393368833490197603304801854572549372059847172328017 +0.6978878736648347125949172253483236996713754832649550025174381314 +0.8508443401291057488517795791511283359984797073308503806275388226 +-0.4669474695063991815703085816201270850746349019459750890255838246 +-0.4916857659539131984511014678316277462480514807356006060275370059 +0.6805454442564243054841615570704809357725921633306984108877804159 +-0.7429928693445994197394008924008488085983664860223161935727994358 +-0.6969676211949719236627008807329635886036631346596064918901094455 +0.7197019444966162425693701580554867509036572823057158142921206547 +0.7821091276993633157184444189269089852199610591029476119050859896 +0.853322612153932922155019514171215033718470215426888526974581991 +-0.527123190429983130601023007335782170127141621028130059541603522 +-0.04518836599707041257371263007133991513702551585551047967233360089 +-0.399491020501502399597869265119952339350000411493961463635298064 +0.1151112248581587985459044273509734339372139569519498681662926204 +0.4120054991803597141675815179438163442823969621208991056428168406 +0.4343579826046095597725968699957767082823418268721181549420071456 +0.2535126428268633086086116718856542176680789611156801564801311848 +0.0757591082002124635881632323270228980382304124620507025889787107 +-0.009921455995466628736212379839332998874975285848956671613709936322 +-0.5891566693005274615768435832037723406013603962165946345013825592 +0.4725424296459514103640632185799575468737722475096114637473172301 +-0.3642689669126664223527375212471788979005234643229363317834063467 +0.9106160875739411428476569185959640646231793213239998804082355729 +-0.1554296096295892351142787706783742826880784898341993011418432069 +-0.8069065915498787556695276318086362565827819941733622970182376756 +0.377414941913701641980604281714521283600422741949240555908727434 +0.286257156034881826917947161474943151268083089341448769053424682 +0.9392006333865916821227548404291848184201007925131229813910957774 +0.5114205299580920868823613420213360686329180904621350249508347984 +-0.6408078680635244612899765081025913686282954450887306823350772997 +0.61034769186326371064247171222348075927083751612531179530760314 +-0.1695324055840820458497589349479760035964663521113253737383164439 +-0.8353594742240205937097730115138661305557325449129426505768609534 +0.1821483418007667766250895141417107286953921543595289977783017637 +-0.4074526958925963909486488891837393063126910851657623153854908031 +0.519412312832116093970077697359996336676003120133546342882630559 +-0.1339026726689501933617889040862807661257038358606191032725698017 +0.1617840119849052908674425797539541379830915417411164257796009655 +-0.5833399591688895541493678958036554117556929951798174740043291689 +0.2558611196916433369649336532000849479904305619298222327625863899 +0.9637184128969163713272727389388526394331293708405231601274766637 +0.02398516466411951663039478357357263297576765858214578984119980389 +0.7220807768185265925885711430037484304092954076856054861183001563 +-0.8314034062393001851412680462190559603040746972786212429324375224 +-0.2313683087056718682580625867623460795004227069874977160354372877 +0.5241531162028989758906123049906275766571616823241720374203214447 +0.09003216360057281587724105549690566269005814841108581287665281058 +-0.1599268816032428776743959117270259866309677355351818460136443291 +0.7126643265921692501928118835762400720628273345745039396768073268 +0.1443381463559750344148688262608847179704805274810841956785523095 +-0.9541149480810226451568227541620900387924893378859274527595762471 +0.3516772517804962317135771244694045300550581304302552629989927399 +0.8312645047002901343481040986077492354211106507977246573848547872 +0.8922074343575836687927424867109565448477559678636672119414443701 +-0.03914580715076807517564668371313115131680481962361916796431130169 +0.9746573852711840936336177201962708050687509298510135226623575906 +-0.7287905575728605025843722055111257091486772902084438557782657679 +0.02849594996466824865218850207780069267985584074611847663329993142 +0.6459433245400880395491408374407025292588521318149535734854910274 +0.8136628661132407079541934173897141567434892632439804419184181281 +-0.567269077607843925028375791245291662428913186501477835474640964 +-0.9476387464140397458861421362921055215974651715794066883914951208 +-0.2605437240709855372272831411319884164143200014969561164796810212 +-0.3311597085631775241605389615954882776971235843100995205029515984 +-0.8695822150875121724691553338257829869250127182425918912387649806 +0.8891098289754707421060220890985710245132795198449297271458423909 +0.2895552325554255930167653346015931047558748269272406529926466973 +0.2650936900762128600362413578030729270793479332746334793752266553 +0.7046936151828971593710415948632896548808680079056988913118083777 +-0.2115570299364757676008017443811649086191736127455534555376144021 +0.1470216587412559156294994682432100810761459629584248289010138317 +-0.4329010361486256961244622956913108506550874170254014125575533479 +-0.1766818323431859044625743795499747752198631648846896440459670393 +0.3427075333057822059987675632859967887158938796610229803331114623 +-0.183376886573271100129574182681696169179735558213922855123562123 +0.5665067551831146950685364521560101025985707475803564862178192914 +0.5846720091653589171386464934439494744713232525388330403763032709 +0.3128821017947787434710701629862425068710081298914976621641025408 +0.1943703959062877206669871517590249058034169064564194870074554031 +0.8893705554674630659403991877841826994191514257022249874261157104 +-0.8883357910902242353575856676539666074648753053656660309143767467 +-0.460716573466163781751268186859141052046462069031383085126522242 +0.2571290378683215613044136510821588749887474163677002652639520119 +0.05683348973511969001808746192505133291481235528637618587938493271 +0.8458238445504835463314748515393830432307810942061667936052115581 +0.2568190130746644331048317748223591322462097932104379543095780599 +0.9282397683744983930469496205745698232573096227549226254155622007 +0.6733680895626635922558736333908780380926273791887898430485173634 +0.6834258455476852992466772196651133096274086383123765308288566681 +-0.3197260966794518948885909003357003020869183279810950125249989182 +-0.3602154836971247653552601690662060499632143516459194629015046587 +0.5644944652643029946030943876077187355907298250270171876933333996 +0.300245006064926546622443908848084786661329770571675039165636725 +0.9109171936013987677935840681404253773950900911474823029568083952 +0.9809865904559495207084689029816148884009367903151903920423149056 +0.6673430101175698152854688993768041548769019864465421762641808302 +0.1912403836532585581545915780169638266665110774534903895312903483 +-0.8390872225468263142545242699093560592768485203012323759548269441 +-0.1694425027392812196149909158729299355102867577367629176586906841 +-0.1109481979293641305323565532634133494943626968908239858539934786 +-0.7576390226829376962602306885924643215709630457357178698800775945 +-0.2384036559822549222513803512289385096334288445624862912807231185 +0.3322077770142086566449475410492734728431728270878221527000512398 +0.3008294101164568639831269327829387098511379992571638835271467486 +-0.8500127542413940364553721045188171752513697377512921485742321549 +0.8368368938909749223146178710811008588487209933709262501849117012 +-0.6301301812957352916599361333234055414853612961930455283065817178 +0.92912991593823651905014229592884312166630951576917436549436522 +-0.2057454411726747632614076986736370443370299660132771686206360685 +-0.1506655683923674574544013920490541109453108644791859114657837843 +0.8300887071220306139363536768734752416692057466278345728554448043 +0.8244806963149490337769127166910316223379101498545059699144474846 +-0.3267801787861358921558326193709571898654303757814961069177939802 +0.3173522145518535642355402682590855477810669842087119833799882044 +-0.9157683658115979207506514703487531113998263500938211160185082296 +-0.5134442544464950511308392504791416236936576938651094919168340614 +-0.7129018571172519683293420596961998697718416105831222546361506794 +0.9065123083843027156086152486704570882336886865580199421650643667 +-0.2793634385919329761753480106077153213406385720130702294691355484 +0.9164978685669781253679917402797926874507921723240255331025472326 +-0.7596059702886165943031875281927001506068162489624554198112485991 +0.7396561092486294627586234874177829200642603190414086001487983221 +0.2718148178589837914007749073085756104697032416499157400657364344 +0.4662517483044007390427270839972516857434523020114609710559500148 +0.08808257115588047484358934167308625153926780195956135649522315482 +0.07657390220669434590596313316601208477726655511807687988961336808 +0.4588569896068761120165974962862286433176923282523892852244105839 +-0.6615298742890711325192770516946564063654133133292967525875541474 +0.07011733953074958640104399325017215014827304325156759173135366906 +-0.9612259440538002535765483137294916063381851202661518339189071839 +0.9171138429339400553744807769217606095680344268845843714152250596 +-0.918764366993980620946375697358810909530550693434750302372938919 +-0.4415653525364425875595561926619571676937519758818885848285036367 +-0.2086520325624420487101916822135314045088175303036646863500495381 +-0.1511824375843169824185114172319147719223588913836399964007230083 +-0.7035924603583511535986984592864385797537640709172487432674768657 +-0.6564151567101526404248033266354854181628562195765596859557723591 +0.6965977875831549207460696210505433710177694513815592587963931164 +0.5816085290684877844083071838790011353935994102902484256340030157 +-0.527253715551282406607425535965902718962742079261395869051002919 +-0.8587217878456442924783287669774302171560923546889427532593498197 +0.802615497785384047600984758361791353972886095624237938117483346 +0.8316489546057848621322523310402149298559936201982941913906852864 +-0.6097628083165813974260954335449904988521230536577883358240508937 +-0.7453827739395389922953742392780783948094849228955462762695809318 +-0.1809554132180854707773280908184743372302489521523696413745651906 +-0.8150644675782343977339925655387466104832252738719676821788883516 +0.8917866574285656025686075793775106139378346795002297501283298878 +0.1101358891689796743272094664641471479081663952426245980291616029 +-0.0541967333689012077592263814659907729121237619035205051756287072 +0.8788147199714254107037333013127960617440138295766969973173354907 +-0.927037926394366126809727405514811573238161533791917190660326036 +0.4642977843367946473083173399076729199459994296180290689057358231 +0.1101424766711395834493541735390025259293259452693930682212953338 +0.9804018990020609521055380413227891839510323211141337706692935583 +0.8144388485796060257725468016904833551056739055694392606072812336 +-0.8395517493960846429066650820934625099120153763823264316622178314 +-0.535636302410552606673000089274072814148368252053769909998058602 +0.3785984554723058056848684987205281373405286509670642510688353225 +0.8125408356507693035783621684477489598336579370455636449932920399 +-0.730498839098918994556008955395986000999974868552030434899102998 +0.7456261383135196385610840292806346156606897621955571769519287646 +0.7757376987729343002700728678244609761294630501410110238207420656 +0.4078040359990933213948732923927214812372340416337539086249054226 +0.1767712938446947695198229699328249449877999447752262239584762909 +0.07365715096199305303280147905505827004287730234420360693427261478 +-0.3108355387530528344022186566449990520542204513871372429842394977 +-0.9157841385420411790181903606309676436954041107787988394005532203 +0.5517970855559362574840981197851271127548171428450299159534222246 +0.8076059738124808816284579607205742577625775175934575040140126923 +-0.3623547609761457713662054674281991237079618589827581000231798627 +0.8183208109839758987990961359356649031888827382055407382873878803 +-0.8535325136050236145755622731382685357658674118927526952194103789 +0.7385965807078199198295561757281636178085738161163241745076529168 +0.4178732695594172450325633659542989992529347731253116371174433175 +-0.5340515573220288676539037563933896861133701709641430080525373334 +-0.4642629009871243127720569534731497065151730863379424324926815934 +-0.8697898736666791719966463521302103516597198677810465705462889386 +0.9260211067928626234987335196506123804866588031248091568668186807 +-0.008817333363577657304077859427800946074653041725554105998740790418 +0.5582339538069273279851977709472563742471538090477435724053193958 +-0.7255700875545188795082017268145707633365451965771130961377344798 +-0.9882699898882978270887601698779901692432742326870804476209571454 +-0.9276804865150421462892365252888320798428705497677187785005965023 +-0.7832811923001301276864916736742146403933964466320677660322633051 +0.9875308623632782097656312821453924896496525870736205800843638587 +0.1783373466436970660022454632463179035762888722766888416391448363 +0.7336545898457146349237975784794059749253087905334857489144998895 +0.9127856868366581467510500732005220443872380003084957447131950721 +-0.3632881183963366167884860409201422151102177606787650299072097307 +-0.3268576018334922472384377473775779415605488146060240031080037115 +0.9427149588672463047630742061537997891278684495348468159028173334 +0.7916571579983658653317798731563225080239623370784297265192438825 +-0.6817701452011630996907953818868671270735516339211681814255907609 +-0.5168940707242169951406978648595076294647040487113324969763690473 +0.4155311954965517114024103086773167213755429855677272377839721067 +0.6506707691016388017357516362760131941221566979795718699904936102 +-0.7043718208306549962960929614939365734224121070283816720729220425 +-0.9030673117697692613858834879354138789682350761417043644810908266 +0.5465706740090774853953336301894435415008351646460109707839721596 +-0.6814239608934778019209189605706175697331566277120687413401512713 +0.9205925082347564380336697132499017123825554431098646503055203834 +-0.5020782788038677346392099888475830183897864323626792080264544951 +0.1045062318771655437961420896781653537832869869453123103733053855 +-0.1600201060994392446745228713066083331646179396065484107159119337 +-0.1176882561544923620215084381200312622694313533614808151971725197 +-0.189825171609586721044013508138189985950604720902663500662099781 +0.7858779951083861580332996484728804881745801231417586365625881696 +-0.2279832493810412940114966076664112325854082672090777285019621618 +0.07761160430503009576118799101543653660926181662195182427626478291 +-0.2055488181060608320954691371766551168555828485198254292077222517 +-0.8570653123756356936765798157651852007633450856266713907351356642 +0.8510470630599207981929699284163199387691742475697788917650312737 +-0.16560123613326167092245232006380763867174148167607503754889637 +0.4313169396402067420747675191335695107540210953445957632944683466 +-0.6136943581151102724274558633917286896829715873222934810854627144 +0.6107089044121956416324813364187592386184059323011742030772237424 +0.4569955077979069087363694857841772836360708458051620753700613184 +-0.205631651713017368814492512843157697507919536778183448181516378 +-0.3127653344142269367017311068934194736573539345353684494263561034 +0.5675769204970204695935245199626881958749158960158155816882247751 +-0.7973797882525385651192136516616674358654229933256541899442767797 +0.5012904467166158311205187729565579292182659743325041112386977484 +-0.2570017860782360774767408845442523659054818260225494146244853645 +0.815285634526596302121470271218431186471214471233707249972351082 +0.3474550590975565404544821867969338696280672245517491821876495039 +0.7718119181978566336150728291679018907122826327418198982205731192 +0.04535880498283686865208322483522967139304884767842664817216330064 +-0.7174845876743344015633175484139120449777707133419695966520824564 +-0.853296184466734367261440721862287405945662264918150798455455718 +-0.3551691762386405619967249318449133353395153150287271325435124081 +-0.3797572987358468877601704908647997438784227376119508300980299747 +0.376493226974464138185316874204450738186203149130236541221263506 +0.2816632617692655097062060192076384166912647824219953750826131631 +0.6936970465516315197236088803729008972356138275937389314888615401 +-0.8093948466492362612217398058810377625062288216775489656468562411 +0.7179094192553983421088688870290454722724258927762520549683983736 +-0.8752125899339353908597128121427435294227530087554395150859455125 +0.04176278772058224232241432506737925045260833246510034386845030186 +0.9269329565460541008731323076781001715661419867914361439680533663 +0.7868192948478988386779315105006009612933033201432314519183555363 +-0.006266353716036539320572064746082526752743361256443337864258505608 +0.2266154233841305998807280483192876569901369827513556377738818721 +0.2746350702494963366663352365693945459844370045750631885709403566 +-0.5247772986387898164750425486144677116796659442569793354035835811 +-0.4928925951310793013273500011155592100819574396889780507999573189 +-0.3113637472666701974473222596908779747755145602641740095469526339 +-0.5748854355426279234162395955225246347221834110564955747956209638 +-0.2554460407289573319602333075606187389397146712378109702048311016 +-0.576542912883993928715652331022719536448966752471880286018776653 +0.9094805878752663366484875502653563100058416506406189283398268678 +0.8848752416174802394989820330821347631944308988732361074957483326 +-0.2800064663747466167971611334477592148285678388000719119052505901 +-0.3524957419793069043802183938505947717728662986795036125951037387 +-0.92661757991300447545015659444519280829067045255691447808600615 +-0.5330220313943443910835605702117655504592614398056913858309712345 +-0.7330266194736301185266620028746862947402855823289205835841036965 +-0.08901643770401430747538873378587416087951119772581637121305331682 +0.8550765251384289421250035837565358470833355010809526497352204912 +-0.6907357918123153055314910754893467338334399179189583430196498864 +0.8787770736433328745035234902871834306966611855454194152763085168 +-0.01738793803090707722596079625349684366463055472987575653160098446 +-0.843789436167682845942043151679017937854325407163610849246652901 +-0.8141497075382254027096074950311514491854968487203741238943799987 +0.03889316514893840261980283978604250703936072380623394289182754247 +-0.5493273108612277875600478109570404534520845332638624479667841502 +0.6715912488533200815290011024385797575217363717470920802742883653 +-0.8438919390970836161462370188424965610990320605153865447984219469 +0.7184582122882689810255427112660454958040291396946043511983687288 +-0.4086097264688666636790174928803728608266459573162410770584140364 +-0.5697919261032078557614020481060183849522111669616974872492012829 +-0.6278243966060881460501444931432866833291695231208083680886203722 +0.0336828617705931544383250099730864952662928062350424608691618717 +-0.7436883526680899648969850724114253803054818951808117927039564586 +-0.4515446035045963800470270932006012917142703741148728102920678819 +-0.4810931364819359747828351037417496237257328332185652823964021884 +0.4458845011005795413736316288478062406750213207171946521339936816 +-0.07022130270408117391201617422037495983519685200057324281521736371 +-0.9363332435815881306934514312012861106386014749526768950073553811 +0.5931834085557288286300206310139754784241341457686571795494994774 +0.7036190395840156286745266326175275923901923175942468576350074587 +-0.5793821363841516257942372216607612745507267978856920167262365904 +0.00904502267908283601336368137866081061069210352581761545503802156 +-0.2778968847485682179896478779214700059419569060048743113852325563 +-0.2784308881971247865302566270327586460636817633229294056506703495 +0.154652062686142233335996164065894879050336448396759084360086347 +-0.6225775243116540313116281463349420309042753281761340281921133715 +-0.471116359097837612645498505928182428889732655753776028642471372 +0.05019084624368743889926916934552108615492017653478974426758842368 +0.6461406780733109189385884425756901416390710262453176809391037054 +-0.3646945557234024586517840337629880176834748783187949036037901754 +-0.3370795553642254807046883165466968306962599317309657519831180634 +0.07406951035684034748316975863636120744360012351054481175945110032 +-0.0706071377017734071574459854474813417829167710025638691080824309 +0.09360709618916370956867688682300922265055482761303476467874635515 +-0.4903988627030185676892387805777880755902392098553657129246566032 +0.8668617192033373216803865611020212154378552305142050619982759533 +-0.1745567235833106956445457069963316833929324818668372064961096495 +-0.6495725409582065831276338775327045761031092852475255376332913976 +0.3132302317415336986457546693818300494005409790462961496623925972 +-0.08002014266656912107124326141465267585210492463107808149275462116 +0.8439760661050647193221008089223906976491469018983477783830651032 +0.2742491031513893827528343314344994279572977620848668278687664294 +-0.02731317148254747797517682815221303356852477238112794448774630271 +0.8474076414796548139557410486347838750741787558443005871442567576 +-0.05779005908514727153148268653835324462294291367795091759798861981 +0.6263509070486716842858384400904599373074897647536296406115669676 +0.9742953226314242461965632460638579799905807780876871234627553275 +-0.5412738282089598200095228242549815505925302427991012087392399282 +-0.2810841851319220937367807869615879057727320463374091858347990139 +-0.6332274216696186147542273193898355103863532218808631013492331016 +0.02172241435608649221235119486946747660849609106303200545112768013 +0.7184196840602424035733157087786269966875702807495568534158194777 +0.3749586907344833235687996618371211329945742347114437060445496025 +0.5197997067097932079572481275469253932045397138803211253153129772 +0.1001908957778599515703760968602291233036923939615286132670111686 +0.1982609831290281879535544386961448200899094658928947930993426901 +0.2265305308299656396847919737333043590525494945051651354564266382 +0.7906018990132069071786050772247164464130165003035494689544865899 +0.6124546368149888732224396347205514888588534382757197943350914313 +-0.2036417356829187550510823664309236059942206079488018356074124469 +-0.4438641124602506074890760872561035010575387638641217902217169658 +-0.544767226142520327341708643509310597533503231008421701753029047 +0.4877743695516254187304790685268488336758168947119202326402657771 +0.3326494238536684877812162306671513312155429822231139301441247885 +0.5288035512647287264400603641207174184836483925130588246958035505 +-0.05640118305249958065859491687650402005035008328934427052170270651 +-0.9339602027658081848487965258726967589939079607563390689984129939 +-0.321275957553128745693922641853921576922022691685968198941970056 +-0.1418273761530124142414318806991383724249955778125131615411614959 +-0.4264505073732180514731028302116498991019475563421457885360967122 +-0.3923419951379572363099277373060742200052172625687618481037698142 +0.8711561101780366371965222118006359089295680450882925107561352892 +-0.4467304300012012793076027789623627915431040635298455194234986428 +-0.2307052332975307401648420105809548829532849045676342380730437307 +0.6986593716253086507864036814802859528738405415349193484448192348 +-0.9881297466207630693750918682605017613031699244501296308233100941 +-0.6760661791650244249188462300591840173691864903003885411720888657 +0.4739376045463275401017721226048506342846991506758626675206797346 +-0.07231115199509153957529197477078330317517719228116128797380329585 +-0.2135268112097198247010681889001898755255288900766137207891430752 +-0.00391719982426902043959346995217451979511795015993884792888825644 +-0.4074397155278875973813395109079469465734104483931918973323186003 +0.6066576651382865740459746508693765522490832331025440239481867214 +0.5054494871102213639926772825334560876816388786177817611761657915 +0.8226583267458482637565255432456222691986173539474741807557700154 +0.9730166336949259260659399295334240422964809729308435599151328247 +-0.364185457502622256307866947693356486103622853614760666076420203 +-0.4001542376557859551557248563046997931549614286245539273687375468 +-0.599100169628289804012363486827377728153644244666681806548743669 +-0.8583780681190373783452031494167712583130326378561487627832196622 +-0.3045463752630304889449065225990597597721299636237444059518468086 +0.7886150417047268238377576739443317830511703278264640239600600345 +-0.5588043912338361844241544228067077162062321498757294327644573793 +0.907133074597731305198810561446025916829146667322489554834535833 +-0.524311683190174937888559570575683572384050389075376539064024188 +0.6581907342494117061956856142004712902056506998470355167826692893 +0.1974669756782317180727160357254418526609096592424426109684117699 +-0.01972112572276554306178203846081429764689884696412132525401824731 +-0.394337251493017165762973203726973092159618930132047937098203061 +-0.8596972563284409333221353720093891317237347467906295445875608281 +0.2054557247504006267846823161008744108436686866387260670209192195 +0.9164793193765776053806704726303778876533969118110393675531419928 +-0.6145730810103541808333969921377717371467821795648928293281783767 +0.007095154334222720138793901658750269696036135112599827909026723408 +0.8623200152218083367220882180263569709602229105502792928185580311 +0.2328862533541289876695060577850480885078345462436653283599123436 +-0.8594243434084773575696832444002804697287780740482575549078989199 +0.4665227761410612503864559792071327777686034364978804464477715773 +-0.9811624944532105651955157652071808929067746331174047524578239984 +-0.5372721741325555621080856058022867645684999577425925732434683467 +0.9142689324243093913109361832104779693761718654772557241029242509 +-0.8519800093917999049786710873262630254438596819890789333402870548 +-0.8663463923987564465482638692819190364387064757346171016284231869 +0.2709558465428488894177444835034893857451398992362135202765939096 +0.8083674519889074596117164158478163589581003465847262190755456111 +0.08192318101143036468909245818104351795349752285255508370548377145 +0.4432662295285746068645760939682334332432727709335441542485014646 +0.7098458531193496043308156335940587627787235570183896188894276827 +0.90322989019219600061196867059798813661922909644595685154839827 +0.4794254791268536633480562976950887435436025549286522438789030803 +-0.7746484154169456512809937246271660173202685744110036148882342333 +-0.2763771350523139054750111351929364757670962641805178507420343842 +-0.6737640502546376711965235263761153629368423334845050663282786384 +0.9860843557274707818224203215557433615103323795855487753603071846 +-0.09908250822208310979388125313393386625642518646689831540002743491 +0.4083364361722581165801901479594515422760935325739573558840448982 +-0.1987464128103913290537565707198845322065664181338633370605495606 +-0.5407738721582197458183352565621496660631978320791939263962860219 +0.3927066115442214638047153163113331662262162359392646773307752893 +-0.3547265721044417796948020637228927981006372674781249634536133803 +0.7443511718754498369053636558248957547288930096116725829118390452 +-0.6106514856175809946267252713465468241183844646996285763158471635 +0.976523926183381328411157151775497729758348938804345757697622217 +0.7738274296309371782471493836581620439388102593378042753716890516 +0.6303435590127475728343988381089812280592884794559438601115730286 +-0.484063371813939130083050651772175383209126084648446213771534038 +0.8525922176927925458770820230111251769664015980843161969462044384 +-0.08163044187898704046903120648457597371959955348165323805504010125 +0.421148022345636083380666926166508150293522832173233944655555408 +0.1636579949610354489441057651722542939624135888641020127310796368 +0.1158996829838767780820446554770404024129821417414276676244486116 +0.6122743525100609786427539952903164332986527922843188026822436303 +0.8287184948673512642625509766623864745682445181955817748687592982 +-0.9776838203117432640468561992811674532088503638852841073034452293 +0.4475824486005748840610281907314246250638614806065401547533877687 +-0.2012889019039510414651830187674193045950194169108930931856542009 +-0.01171834366241198933438406373716581804955151297150743304159782864 +0.4922455338395964925166766918239575749296275172064692575993556194 +-0.05364567611959903567502330013213963546585099551575719307976293259 +0.2859039723670674295294361938847146749682776282795557426834523284 +0.8750329779299614706148239867721002941643109143868880399745229725 +-0.7722586575162211931712103266374485003179050625215461656404618225 +0.140103474533723761562030202095101893875706398592221339805012909 +0.8390047845124423734044204882406751006849491027338704535253123886 +-0.3131244711658136124319194937374637201951191483185787516824163028 +0.5906431155148677342149308852685885638274033210013285902888289507 +-0.916204807843398213138374272217346839955126571982524680966302845 +0.4438198023728849844308452858166958526884620742389769268237679581 +0.6601586762490308568348505588115261580494881196839526850118211037 +-0.9618853586098018371722211571527418635003319023500739295420333417 +-0.1292609718107532753146691377641856162241453138036350409973849233 +0.2813027204528153923329019336432992610341145263276842828170084429 +0.02901692607382806767360968742809799650944015215104495220771449394 +0.3041938498059602562920829742497990465452656988389381717366180348 +-0.8416332863784354708625199574482551667809708135793159735459802674 +-0.314950008126667019050031257450545808172579515682962559472777899 +-0.003275852688626340591683182725592289209533360992124403573787800845 +-0.8378625925962227631792682994265765481907889744535199746129185636 +-0.4342779984921702749034944690110939090155169682108203705245647346 +-0.9068313407149762968086567340954913610684595084886817903492351126 +-0.5878274041052291477943021502436561002773261803924218942833270832 +0.7976934088261920073242997664284179394988305733935216816478972594 +0.3072993380346806450796644618533558809298372285335849801472800055 +-0.3158899277774763040436693675498339368716705701915489772738691617 +0.4666714471594296105907779829907728877151358508508298995416084212 +-0.839252315736576298292024833817840220786429992773043003201199367 +0.3724656798429113456573796032664972786754306954066217858782865155 +0.7833206787384097305592819931133370072071003949491040665893856821 +-0.7544051316606455187663010577509845083171139981413787259246099009 +0.3363836481324219723370186210692794125850649784394352985597901553 +-0.6491840008149435654312968884792746101712975654905192131468895032 +-0.5376568533061764969177810125554299187960447693632897302426453216 +0.3436505628709939568617544614844578999694824109632610235366179258 +-0.9878395889167084950186530859519776075387863865636110539086573895 +0.231430699527959400864415392219075285031748034145026692189254385 +0.8865073285770955099860020924501486556125845788147491503154690747 +0.9964078756487818306982678918396703581497863065837502553775568638 +-0.1327340387426539333160769890953460166634179046951612739896832303 +0.1516135436026911837076485354625099431713490636151252380398422077 +-0.6794254217136540815383429489211152521219412790709340904663043984 +-0.8608338971722177289009152884317389810381974752382902396992736197 +-0.8579601284570283198168880475663448240213020365272821075300399251 +0.8642621396528582742546522275938696917350964149850345375415910969 +0.9793589839033901948731783645080578582463688236077166539472268901 +0.9683660064401229939001661515228452132613132290247913394628566994 +0.9871325644646234051116914095144895949244082254772823408822757459 +0.7429408357918861651391940854314483777231519683391271617922207998 +-0.6679971490414301274552666497306612376613754110623070491783068932 +-0.2222054162805692664553590963524746378422134405027779312108432929 +0.2825286514059141882920658191340775973641769752737899181429072621 +-0.8641655578339237157426364564226402388621743753891534760458972311 +-0.999608410793501567947359407871488407498148846407377827921738579 +0.6918702869983347579958468231672430091995168889418395643526262834 +-0.9376354253015494471896434810153189325665084438405669131018104586 +0.4924687906770157503064991069141120219191665852506741133594520199 +-0.7528019931350588413939154566388023308331979635236679471693177896 +0.6977106568122303299097295004137729206078400517066513083779044291 +-0.9241816059668043365862855436852035390363373632288175077727370967 +0.5191919026143328960366321977745092648338330203592978236081348129 +0.6714084342259733896142403819832445282754246581821439681178412078 +-0.3305661727568643970967579496852928159892749092036565327744186388 +-0.9004094513551951169051621458619598995816695783221496309703950609 +-0.9884847412191905817622272610251608563747945077452623649671510335 +0.8297590431974834390160620549937730525352694881027721814298674934 +-0.2609452664773769489135290033372776145152097963873696107291657849 +-0.3951818418178703493034052559225176300190976118265294520872713497 +-0.4205393286734249298736520308575155093951794910953125656434538838 +0.05443728213987669453050764608083824248316758211754927414048785268 +-0.6146453888431441977579264187991304908673042553348506918953110581 +-0.7563078968082354624200473875899165193618716500707274646443978808 +0.09396735259632912882662399404023686834860630896601823063552973929 +-0.5785656457034163940108434599486778925179861427139603882087606858 +0.03957899544097907583965796242273333021337860785083816690457151443 +-0.8523897650942072388808518940380192479382746023303926709202228227 +-0.0783278486518552435911237017548891443409964014583108296334729426 +0.6033167859658457194486961001342941735744068154496164938059859501 +-0.3586026685282925549652109446290082081072664311191650680624687117 +-0.1022768096029592458455381062000780279188050363478560222801108958 +0.8294682959773017741218920869469493367635666889096531886515534716 +0.2439910403168467755961516475103100677957670811159700079381010653 +-0.6217436439651384803300734137423667977560295277969228092600510878 +-0.4555149377465992268639969728371691262215382223593256475914395574 +-0.3638121656089442802844698751087347999906808525959787225726673495 +0.08022634781470307543831149021588896288336888891859159188614295157 +-0.3442492480706474446280159530436383963980497643713948380702723602 +0.7731435513750314635297578456626328452295898224889367523690353904 +-0.8066018250843343819679233406902709051909675387567362077697223646 +0.6498496955876471932216884562708997543204996823603089491219376678 +0.1642905711773671334665778070841332282088323895041996317816766814 +-0.4518494760071388063906173756614064107276944654373102185018585977 +-0.9844987906209126811310473648289719482037695495421754529715646006 +-0.686263785230994236933017760416487786457347579482201632713307669 +-0.4753695156132390969461568813093716281405845709725218384460712431 +0.6556099024117094888056949870591826089394312227646540750168521309 +-0.6080521800564137609237437916037781526823806391293867985443226801 +-0.07321134672111011808388258675460374818656780673570195420048014019 +0.8884544237779923905868256068860494057150693464894071066550039493 +-0.8354897195734111780068198561837673077169847832110436146953999212 +0.1896995674958023935839174980322220379530103420320344001246792964 + +-0.476567938969208552920551983189650829071580911646134823917316 +8.135977742266451977620380460621958051016709158663166135008038 +-13.121375314839783120387354925925638827135390930870259057939121 +5.232118979761815885917150381055831420575669442631675089753858 +-5.197978869811624505519378185052898013241284132644783534169276 +0.698931328540126505128985328533284794945494779116205916730374 +7.817113375434951486420615353792584212346198403251653784115325 +5.078431034908170247654671392161681251514898334832264843398009 +4.646461473035226173686245081040322481782226913406863346330987 +0.026543735601127572642030588757063746611200778798863487250248 +-0.304127147255157063253193798433409711238255931431525611645751 +-14.197113002642497319066911658758006900725154945902411864131859 +3.394770741739423329931765553257001106446604720334603258233385 +-5.724013498037283554991978236696337479131447964189783006815319 +1.5614996887421297035772236581770363061993764306013161722834579 +4.013521609602956470312701428036151512791546666722673546991992 +-7.402504500276065695996052319358298099466998186213075984406395 +-5.825100341315618056231789656929866142140744711037076184625584 +-0.271913945044647793333942203528824901385557846184418623378487 +0.606386894836475293467677316234262837135384292137554573049057 +-4.131660227656190394889515673108706515088560023113361771325172 +-0.6047585144044789699203529966029013491124411398960172950606 +-3.823088399282130752596204252322776438642953022426603402215235 +7.979950683248220159687709052585457939872545728537865660555187 +2.536271946113009842137394342851164550643106748543626565012353 +14.287003719548018997461707644288098661603609072870930814208442 +3.185020064496704113723514869529212159953512609994930178563643 +-1.037793102899386201282884939160049435005598863905729740977137 +7.06215549208976981537863081327225807254048280065499681679214 +24.972549378879518177001679963636594039081115910252958824623098 +8.199526085694665170096647982657259852629089721304585453504055 +-13.201717030766126062866170973062551464070091002254828835831989 +3.54772273076735749746499048013651931247899140164428507725068 +-0.053251259074029148850848578541024560913897319502368667925927 +-0.296109102146562115656369965852051943045871766429826428743922 +5.158992499794131778469553206905178441493537466206875967985705 +1.223069970906783397318828780437426357503960657021418397515626 +-2.054623229836947728191485705882082262045599541192303756646612 +8.018610956349219494759615585722315322915896367811367893089705 +-14.559627467068299969126665983999544609858804825414058341163831 +11.544883454039104528962765346536833726001379268535962998131765 +0.651488505181510361850715591512899015759852005615605160231954 +3.53373639459520731430507998310881352536669903781220205192196 +-9.545357304495424715827038679736003864600645703792304856788967 +-3.557996013997936146274896914056431518581684414704372512906467 +-6.077414982123327987845275361263271928733400568950933268442126 +2.231447133611642863660979721463851577392420370246111467408724 +4.684945207562947246377091071515645214678713466825953244966454 +15.070608264617326932912432078129990289853407856623002685097009 +3.971219725209492507647176208106328097819189551601701166986769 + diff --git a/tests/data/nfct_adjoint_1d_20_20.txt b/tests/data/nfct_adjoint_1d_10_25.txt similarity index 58% rename from tests/data/nfct_adjoint_1d_20_20.txt rename to tests/data/nfct_adjoint_1d_10_25.txt index b8db7498..500d7414 100644 --- a/tests/data/nfct_adjoint_1d_20_20.txt +++ b/tests/data/nfct_adjoint_1d_10_25.txt @@ -1,8 +1,8 @@ 1 -20 +10 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 0.3617754793224075120106402493333532892515347077462591193717225348 @@ -24,33 +24,23 @@ 0.03079002005616818689379437555430409384272056975521080286977436553 0.1993205021632423713244796634655407513154492251671262244936746809 0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 --1.313831422727774651555845755917101990528470330521651169614664193 -1.46355442483928096702736490785862133486191559046504281025787006 --1.18451482947596109043000397033789725114267460887252124181270873 -0.05951524075769099922476787090855746084963627903213878001719051 -2.70872759016867475683647207682602374720601214499401821015042636 --0.94416147610101625361944500413293193257818930563500271428239929 -2.71180569820343380176966868586535984049622697797417244266439908 -2.15233843730804231706836465791701168875063301744261884900928713 --0.97311566878031548708171942382413749407439175591270498714337787 --0.67925989347953101555873612315211951129912110007083598581225085 -0.89734483718988015387418290317302059146554324842099644785910861 -0.98319349765713609792873098924220198252857238352763326070107864 --3.41337268533831779784415112586515899078353830062974298567748742 -0.6433180073954211557848966733296801732652803190183647832399513 --1.0120075232249457019046791466273487079279956970555518128092816 -0.4822205467311505237701828525286126742167480807005569629326281 --0.9524155620320098926462503974917677521765367630717893845646069 -0.8240097973854196045604285627887058761834231656377552130499927 -2.8794546924077633900793000684636121811662427410739472149682647 --3.0370223714013945918322981409136440037653572639764203695831612 +1.65423947344366349277858517425272269156209974357662762380224268 +3.53141493506174451393309157153449080505807210343310900615911219 +-0.0369406470672615612638674519942994912347996456149982255313315 +2.72454731061284626005385594757746513177064385103354917003147446 +3.58035021997468647541643680232210859782733157540325418862992292 +2.34654595768658976582610370563756953913165578878952261316406849 +0.24929362162610003465182249188086346718188917665847325197294513 +-0.07499451229351171730103148317023457937732168606468647561111642 +-1.71118136573218390349054987029203316794336103113353031959959322 +0.2859219930906060253582268397633603988343394849158164580695687 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 -0.07838835742104840389052756169146943544000206230123216084325830017 -0.3158305122954834491361879876118745635891842225287967281157858672 0.3458309153991207858067077092337332970573207566667458110876416196 @@ -66,4 +56,14 @@ -0.1766812336766545879148652249537685082960598655086779135604123172 -0.1002499995910402071291914694552929590775602478191912580994509247 0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 diff --git a/tests/data/nfct_adjoint_1d_1_20.txt b/tests/data/nfct_adjoint_1d_1_20.txt deleted file mode 100644 index 2a0010be..00000000 --- a/tests/data/nfct_adjoint_1d_1_20.txt +++ /dev/null @@ -1,50 +0,0 @@ -1 - -1 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --1.313831422727774651555845755917101990528470330521651169614664193 - --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 --0.07838835742104840389052756169146943544000206230123216084325830017 --0.3158305122954834491361879876118745635891842225287967281157858672 -0.3458309153991207858067077092337332970573207566667458110876416196 --0.01097686940732606761440422015891875954490441842087149586770120005 -0.2626555858903124974165091427737336367005240661151773835219310271 --0.4833001744929688887627302318231007732586579925667420767092911497 --0.6470889183313806476439784979725465604750285292906649332158905915 -0.9495591103622864735737804468916775971319894153057637661282509133 -0.1280772471342585841455757702545741213596517009855068302808317718 --0.1946943926350927100029394214607870756382213566654573743676056718 --0.8391269337210497321784330437702418478537689733296865638890089907 -0.09000979948494377602070534800332955914923353808674104151336312387 --0.1766812336766545879148652249537685082960598655086779135604123172 --0.1002499995910402071291914694552929590775602478191912580994509247 -0.8558312786548114618473704491843378278983698142481509704680004653 - diff --git a/tests/data/nfst_adjoint_1d_4_20.txt b/tests/data/nfct_adjoint_1d_1_25.txt similarity index 68% rename from tests/data/nfst_adjoint_1d_4_20.txt rename to tests/data/nfct_adjoint_1d_1_25.txt index 4b42c4e2..8f6dd61c 100644 --- a/tests/data/nfst_adjoint_1d_4_20.txt +++ b/tests/data/nfct_adjoint_1d_1_25.txt @@ -1,8 +1,8 @@ 1 -4 +1 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 0.3617754793224075120106402493333532892515347077462591193717225348 @@ -24,16 +24,14 @@ 0.03079002005616818689379437555430409384272056975521080286977436553 0.1993205021632423713244796634655407513154492251671262244936746809 0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 --0.60181416955370489069022560302259870185972960698264033911466164 -1.19172238459678387400170417103632942467649645516274293814593026 --2.85175134703177109300829218327113268476825639018130941890474268 +1.65423947344366349277858517425272269156209974357662762380224268 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 -0.07838835742104840389052756169146943544000206230123216084325830017 -0.3158305122954834491361879876118745635891842225287967281157858672 0.3458309153991207858067077092337332970573207566667458110876416196 @@ -49,4 +47,14 @@ -0.1766812336766545879148652249537685082960598655086779135604123172 -0.1002499995910402071291914694552929590775602478191912580994509247 0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 diff --git a/tests/data/nfct_adjoint_1d_20_1.txt b/tests/data/nfct_adjoint_1d_25_1.txt similarity index 81% rename from tests/data/nfct_adjoint_1d_20_1.txt rename to tests/data/nfct_adjoint_1d_25_1.txt index cf5fab08..ff65141d 100644 --- a/tests/data/nfct_adjoint_1d_20_1.txt +++ b/tests/data/nfct_adjoint_1d_25_1.txt @@ -1,6 +1,6 @@ 1 -20 +25 1 @@ -26,6 +26,11 @@ 0.42327846482572518352845941476063953312209790775268051758166212 -0.27736120644572979464890931867632914022416156736782470212727844 0.0426357632908477547531906893934378715710551610515587507219777 +0.2057412095529664973322171600463426239444010530571019849578993 +-0.38824197862650461170623175935538674252621851979386007904339875 +0.446431688424431296443140046044716741792356318921906317547011604 +-0.36167859672888720695664244757187841983251279405588507826630486 +0.16111976543830162047988643420870686174594597619841422902038295 0.4471019172896300480425609973334131570061388309850364774868901391 diff --git a/tests/data/nfct_adjoint_1d_20_10.txt b/tests/data/nfct_adjoint_1d_25_10.txt similarity index 89% rename from tests/data/nfct_adjoint_1d_20_10.txt rename to tests/data/nfct_adjoint_1d_25_10.txt index aa6e11f9..4595504a 100644 --- a/tests/data/nfct_adjoint_1d_20_10.txt +++ b/tests/data/nfct_adjoint_1d_25_10.txt @@ -1,6 +1,6 @@ 1 -20 +25 10 @@ -35,6 +35,11 @@ 0.5009907517694399539709469634560452528733114789576513854170775 0.3092891727313212684271577075059324424030929434820004560275816 1.5322339486144313540329959323289970652403885592260279844930099 +-0.7625648970627195235680470069406278620657318104181159699644211 +-1.5782595101223886639127585008479650246553267090562660527343248 +2.0984810249370009435426565500856173615840325188302436675501106 +-1.2970228931623500904144760468419856340803485721954613734218919 +-1.1291827930804934061141548196371626621428007300225548934672343 0.6316345452201721830125859283102821997036574445025868003866206636 0.7051415661084367709201814372310498119360160763950294411494790334 diff --git a/tests/data/nfct_adjoint_1d_25_25.txt b/tests/data/nfct_adjoint_1d_25_25.txt new file mode 100644 index 00000000..4d35d1a7 --- /dev/null +++ b/tests/data/nfct_adjoint_1d_25_25.txt @@ -0,0 +1,84 @@ +1 + +25 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +1.65423947344366349277858517425272269156209974357662762380224268 +3.53141493506174451393309157153449080505807210343310900615911219 +-0.0369406470672615612638674519942994912347996456149982255313315 +2.72454731061284626005385594757746513177064385103354917003147446 +3.58035021997468647541643680232210859782733157540325418862992292 +2.34654595768658976582610370563756953913165578878952261316406849 +0.24929362162610003465182249188086346718188917665847325197294513 +-0.07499451229351171730103148317023457937732168606468647561111642 +-1.71118136573218390349054987029203316794336103113353031959959322 +0.2859219930906060253582268397633603988343394849158164580695687 +2.0079562584339378907952101663142538655173722218725629732899629 +5.2446837063332558348988633924327186927093681840296402055380111 +-1.9134342783458306927336081080753035832019513925005108017633533 +-0.913139664265278758437034947495011998937304506240757693577369 +-0.1200352577233106624211726762444577562392462092266104274795473 +-0.6117965382541599000074037130997242211615874643961974725690743 +-2.1854595858370908281862687955445553005525014546290126176890632 +-1.4749295682189093763415281189552770953902600467086885681378984 +1.0569600910223880865914589516191168848831621095083658838514668 +-1.616470055068781608847971245680765054543173662536477845629168 +-2.6926785942594348386586631223456785376094375669705911213075937 +3.7516205509688797216853836492987816631203807307823760707905956 +-4.5965369486743764039230733779528199841453306175662024221755419 +-2.1641824007199478775077246089636671833191048117013795614271886 +0.7902787165956942088801721074525550969538333537467948167141635 + +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.3158305122954834491361879876118745635891842225287967281157858672 +0.3458309153991207858067077092337332970573207566667458110876416196 +-0.01097686940732606761440422015891875954490441842087149586770120005 +0.2626555858903124974165091427737336367005240661151773835219310271 +-0.4833001744929688887627302318231007732586579925667420767092911497 +-0.6470889183313806476439784979725465604750285292906649332158905915 +0.9495591103622864735737804468916775971319894153057637661282509133 +0.1280772471342585841455757702545741213596517009855068302808317718 +-0.1946943926350927100029394214607870756382213566654573743676056718 +-0.8391269337210497321784330437702418478537689733296865638890089907 +0.09000979948494377602070534800332955914923353808674104151336312387 +-0.1766812336766545879148652249537685082960598655086779135604123172 +-0.1002499995910402071291914694552929590775602478191912580994509247 +0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 + diff --git a/tests/data/nfct_adjoint_1d_20_50.txt b/tests/data/nfct_adjoint_1d_25_50.txt similarity index 96% rename from tests/data/nfct_adjoint_1d_20_50.txt rename to tests/data/nfct_adjoint_1d_25_50.txt index fe799ea6..f56cec52 100644 --- a/tests/data/nfct_adjoint_1d_20_50.txt +++ b/tests/data/nfct_adjoint_1d_25_50.txt @@ -1,6 +1,6 @@ 1 -20 +25 50 @@ -75,6 +75,11 @@ -2.4811502918403979019387138469101007054825884532439070841704805 1.6990960343020787595305708747552898387318457153240031987488198 1.6267105509948570192982539269810107931563023567209522190762833 +-3.2646915853441030083484415655952394656487508535987501049147419 +2.3821815613600216922655617804888003103013755125903793043389044 +-8.1271916697660827935927173373130410113078810836912616301929796 +1.3881098040680525892403289323948188848922000729896458660402545 +-0.754166087999568085031906206062357845970439112128866893624469 -0.7335087736711041883089151876515694737975402817556229765975958245 -0.8786687027770929787301562525828872003547410177701220950278899658 diff --git a/tests/data/nfct_adjoint_1d_2_20.txt b/tests/data/nfct_adjoint_1d_2_25.txt similarity index 67% rename from tests/data/nfct_adjoint_1d_2_20.txt rename to tests/data/nfct_adjoint_1d_2_25.txt index 8350090f..b9aa8756 100644 --- a/tests/data/nfct_adjoint_1d_2_20.txt +++ b/tests/data/nfct_adjoint_1d_2_25.txt @@ -2,7 +2,7 @@ 2 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 0.3617754793224075120106402493333532892515347077462591193717225348 @@ -24,15 +24,15 @@ 0.03079002005616818689379437555430409384272056975521080286977436553 0.1993205021632423713244796634655407513154492251671262244936746809 0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 --1.313831422727774651555845755917101990528470330521651169614664193 -1.46355442483928096702736490785862133486191559046504281025787006 +1.65423947344366349277858517425272269156209974357662762380224268 +3.53141493506174451393309157153449080505807210343310900615911219 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 -0.07838835742104840389052756169146943544000206230123216084325830017 -0.3158305122954834491361879876118745635891842225287967281157858672 0.3458309153991207858067077092337332970573207566667458110876416196 @@ -48,4 +48,14 @@ -0.1766812336766545879148652249537685082960598655086779135604123172 -0.1002499995910402071291914694552929590775602478191912580994509247 0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 diff --git a/tests/data/nfct_adjoint_1d_4_20.txt b/tests/data/nfct_adjoint_1d_4_25.txt similarity index 65% rename from tests/data/nfct_adjoint_1d_4_20.txt rename to tests/data/nfct_adjoint_1d_4_25.txt index e611133f..57f351c7 100644 --- a/tests/data/nfct_adjoint_1d_4_20.txt +++ b/tests/data/nfct_adjoint_1d_4_25.txt @@ -2,7 +2,7 @@ 4 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 0.3617754793224075120106402493333532892515347077462591193717225348 @@ -24,17 +24,17 @@ 0.03079002005616818689379437555430409384272056975521080286977436553 0.1993205021632423713244796634655407513154492251671262244936746809 0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 --1.313831422727774651555845755917101990528470330521651169614664193 -1.46355442483928096702736490785862133486191559046504281025787006 --1.18451482947596109043000397033789725114267460887252124181270873 -0.05951524075769099922476787090855746084963627903213878001719051 +1.65423947344366349277858517425272269156209974357662762380224268 +3.53141493506174451393309157153449080505807210343310900615911219 +-0.0369406470672615612638674519942994912347996456149982255313315 +2.72454731061284626005385594757746513177064385103354917003147446 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 -0.07838835742104840389052756169146943544000206230123216084325830017 -0.3158305122954834491361879876118745635891842225287967281157858672 0.3458309153991207858067077092337332970573207566667458110876416196 @@ -50,4 +50,14 @@ -0.1766812336766545879148652249537685082960598655086779135604123172 -0.1002499995910402071291914694552929590775602478191912580994509247 0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 diff --git a/tests/data/nfct_adjoint_1d_50_20.txt b/tests/data/nfct_adjoint_1d_50_20.txt deleted file mode 100644 index f4b119b6..00000000 --- a/tests/data/nfct_adjoint_1d_50_20.txt +++ /dev/null @@ -1,99 +0,0 @@ -1 - -50 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --1.313831422727774651555845755917101990528470330521651169614664193 -1.46355442483928096702736490785862133486191559046504281025787006 --1.18451482947596109043000397033789725114267460887252124181270873 -0.05951524075769099922476787090855746084963627903213878001719051 -2.70872759016867475683647207682602374720601214499401821015042636 --0.94416147610101625361944500413293193257818930563500271428239929 -2.71180569820343380176966868586535984049622697797417244266439908 -2.15233843730804231706836465791701168875063301744261884900928713 --0.97311566878031548708171942382413749407439175591270498714337787 --0.67925989347953101555873612315211951129912110007083598581225085 -0.89734483718988015387418290317302059146554324842099644785910861 -0.98319349765713609792873098924220198252857238352763326070107864 --3.41337268533831779784415112586515899078353830062974298567748742 -0.6433180073954211557848966733296801732652803190183647832399513 --1.0120075232249457019046791466273487079279956970555518128092816 -0.4822205467311505237701828525286126742167480807005569629326281 --0.9524155620320098926462503974917677521765367630717893845646069 -0.8240097973854196045604285627887058761834231656377552130499927 -2.8794546924077633900793000684636121811662427410739472149682647 --3.0370223714013945918322981409136440037653572639764203695831612 --1.2864812279672841321171514119648782236522299681740409204379155 -1.9771612587561825145795608455349464498255699222174356304362061 --2.1419367331863936183475770333789890676677426216636010606691467 --1.8730255674923001137504342181732330350348147120900539323862984 --2.0981458016516746866998931468484564535852664928757557914957257 --1.3170187689339270450358949868371576804744399104727086801834156 --1.2477526257562927818997781877285041939647826574703159213467519 --0.5793956018200137757020566735492680796476092180831890804521069 --0.0419491738201773248078820349159115880642036957437455154746542 -1.1527604072858531094792326812257268686172738021991321771580114 --2.4820992172828682704166543402713524732334619335484711099070959 -0.7848328605283545373402585276581840880858378308706438633150825 -0.1668015509907723255318413808435505759784645428197686902077343 --0.4597024834794213715657595591962815865814196540531196934760866 --1.6317065313959550541940673102036423261254381804035339671054773 --0.0697811244667020193966722065272096862208634095357196970902548 --2.7762119526710607232388990401231164538692831358770665626536578 -0.0935427815624543973018358987849829237820955500495682209997535 -1.7220636849566699053439130382195870852665351839945644873578008 -0.2723542691477729258555144637357007750282621858090811865721724 -0.1297158840533142164964211319067772694203590264934769772130912 -1.7325566304633880631499754448771448695024983734732046215109451 -1.2303966341348882506507261164768079753898311232000361653314361 -3.4863525264504854187565830319804526131911303145190968966443199 --1.4081775215799270325447411712302529139063551330604450355589362 -2.3924065949382235774185862448533837612278119999936404696521514 -1.2632028980239442372905177684085630729529906136694002879103849 --2.7834443648349972620102458983771814467427069861615691636208702 -2.491904543315073175549027949834691058873318835170179495057961 -1.6898897059068377526431942195582360871711617927937328050538006 - --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 --0.07838835742104840389052756169146943544000206230123216084325830017 --0.3158305122954834491361879876118745635891842225287967281157858672 -0.3458309153991207858067077092337332970573207566667458110876416196 --0.01097686940732606761440422015891875954490441842087149586770120005 -0.2626555858903124974165091427737336367005240661151773835219310271 --0.4833001744929688887627302318231007732586579925667420767092911497 --0.6470889183313806476439784979725465604750285292906649332158905915 -0.9495591103622864735737804468916775971319894153057637661282509133 -0.1280772471342585841455757702545741213596517009855068302808317718 --0.1946943926350927100029394214607870756382213566654573743676056718 --0.8391269337210497321784330437702418478537689733296865638890089907 -0.09000979948494377602070534800332955914923353808674104151336312387 --0.1766812336766545879148652249537685082960598655086779135604123172 --0.1002499995910402071291914694552929590775602478191912580994509247 -0.8558312786548114618473704491843378278983698142481509704680004653 - diff --git a/tests/data/nfct_adjoint_1d_50_25.txt b/tests/data/nfct_adjoint_1d_50_25.txt new file mode 100644 index 00000000..2af95b41 --- /dev/null +++ b/tests/data/nfct_adjoint_1d_50_25.txt @@ -0,0 +1,109 @@ +1 + +50 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +1.65423947344366349277858517425272269156209974357662762380224268 +3.53141493506174451393309157153449080505807210343310900615911219 +-0.0369406470672615612638674519942994912347996456149982255313315 +2.72454731061284626005385594757746513177064385103354917003147446 +3.58035021997468647541643680232210859782733157540325418862992292 +2.34654595768658976582610370563756953913165578878952261316406849 +0.24929362162610003465182249188086346718188917665847325197294513 +-0.07499451229351171730103148317023457937732168606468647561111642 +-1.71118136573218390349054987029203316794336103113353031959959322 +0.2859219930906060253582268397633603988343394849158164580695687 +2.0079562584339378907952101663142538655173722218725629732899629 +5.2446837063332558348988633924327186927093681840296402055380111 +-1.9134342783458306927336081080753035832019513925005108017633533 +-0.913139664265278758437034947495011998937304506240757693577369 +-0.1200352577233106624211726762444577562392462092266104274795473 +-0.6117965382541599000074037130997242211615874643961974725690743 +-2.1854595858370908281862687955445553005525014546290126176890632 +-1.4749295682189093763415281189552770953902600467086885681378984 +1.0569600910223880865914589516191168848831621095083658838514668 +-1.616470055068781608847971245680765054543173662536477845629168 +-2.6926785942594348386586631223456785376094375669705911213075937 +3.7516205509688797216853836492987816631203807307823760707905956 +-4.5965369486743764039230733779528199841453306175662024221755419 +-2.1641824007199478775077246089636671833191048117013795614271886 +0.7902787165956942088801721074525550969538333537467948167141635 +2.8592436606417981616970426858913097271103471888427736736276632 +-0.2687879504438970969910553508708702734137111183543606239743638 +-1.4339630651387784079235063332424458299027827809070170991619934 +0.2078815420498619433787484811574919272144048555463391773731441 +-1.6447534286001158817738683050901870772936432483232370473705412 +-3.5808954147423586519684397351638747057189011530065427150113995 +3.0917927296619888361354229141915108626223626632067728598405954 +-0.4574476408983167627187565241270297663493052192282520837929133 +-1.1401196085508241132823586100152957242234732114330476081035612 +0.7993628517399982712570650334220860708115521969728828832465768 +2.8375341289636563677925044513939303833878866747999545611450234 +-2.1021938303693810957693475969656818948531308428546544181151587 +-2.2398266142130078474451419106243200374344767417628524375978076 +0.8066686918365902941458036316839831987579392267900778451955934 +-0.6473993359014406761307433992279517426271181612915442683384944 +-1.6534016296543558842726844035321707037521318420587508371980796 +0.5634455759733720351130181068720931872410386718768463340132055 +-2.4852438436581271622621499558428500904120655442223615102552598 +-2.7813149789698294004584496800052124165178837452960190329310568 +-3.900219928195944591134496290417644867309937273183825987005153 +2.5891099750558173686509895186133251730240225921390956807827019 +-1.9852554055066380095516837914718732947540676437523143570278165 +-1.8975887872715783256852430335118812335918311126135715158333979 +-0.72253155741583893686591731081265276791624722153850394073891 +-0.3952949151855968451635381047699067392446887677944853772358653 + +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.3158305122954834491361879876118745635891842225287967281157858672 +0.3458309153991207858067077092337332970573207566667458110876416196 +-0.01097686940732606761440422015891875954490441842087149586770120005 +0.2626555858903124974165091427737336367005240661151773835219310271 +-0.4833001744929688887627302318231007732586579925667420767092911497 +-0.6470889183313806476439784979725465604750285292906649332158905915 +0.9495591103622864735737804468916775971319894153057637661282509133 +0.1280772471342585841455757702545741213596517009855068302808317718 +-0.1946943926350927100029394214607870756382213566654573743676056718 +-0.8391269337210497321784330437702418478537689733296865638890089907 +0.09000979948494377602070534800332955914923353808674104151336312387 +-0.1766812336766545879148652249537685082960598655086779135604123172 +-0.1002499995910402071291914694552929590775602478191912580994509247 +0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 + diff --git a/tests/data/nfct_adjoint_2d_10_10_20.txt b/tests/data/nfct_adjoint_2d_10_10_20.txt deleted file mode 100644 index a9cdee5a..00000000 --- a/tests/data/nfct_adjoint_2d_10_10_20.txt +++ /dev/null @@ -1,170 +0,0 @@ -2 - -10 -10 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 -0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 - --0.69273620291038926726455982040262810773021395371128338842658488 --0.23172991783966588861854324624888614532914776087643807558307305 -2.05618442897426120068337700338965166282847527966642731762768228 --0.01022033089161611068332096381115849989961630069063173908045719 --3.20475412646054458808241126586578239637505749283722606279431038 -0.79065482847140723740185002087936207002460845720404056035606603 -4.48966502699150622472759377803981334584871849234846745818689428 -1.52060621552185612628500836824586435699214366057843562658094556 --1.93563529070494316650987496128801906743400792343542493131748492 --1.91711181879629891697712137567943728799053287765997042103039235 -1.78167157407696022863678598744320023087120774907816049982870453 -0.91818541341122356548761866303738925895622890314943209640039772 -0.74508495464914282661722138989759882840266298279921408150813473 --0.09306255688002215114436089034798327118730242637707466157042011 -0.95392249506070205958929845278188948569010729804066387798062486 --0.24233080215483634035466256466498393995807182645702548417171481 --3.02906412879434747743069502065438487822774817513061286160677301 --1.34214792999239277175607189831524739966132007920179355748806557 -2.60879832363683809318843910485365931563540511345594811985298511 --0.25576081777212720774571574119184968715669066410479094984091066 -1.73508323613837075617759534980666767647258657198120745833441016 --1.15657292297682197920193782483779822645467983067299421950195748 --2.01816309592698447300676140426398771499441769316713478476013729 -1.11517354883777216415772959796124892463655341432703245902571341 -2.6180378862302393749803763302900142021888279987573656853057054 --0.00967863777003045633765242118873518692230065210543670634412596 -1.94453870940900999496993532988199176207062770280928904174603708 --0.2777001892439004354158994992351672002196183932824538646316831 --2.979464074016227344495021101679894778948928479989747601521437 --0.09803748096637924111218697627587668876875419021782323207516424 --2.52608017800368214360402926794371643938691593186115567127755983 -0.98028688243293783682497007760822294899886764648096710899720962 -1.47543980042739525536203188664850500103566720279902161835293566 --1.95016119427822439023859024505340737857131951614318006821852904 -0.69145742549615826876874290650989308940299262158954568003475873 -0.88769548287530254181853868333122902368926703440105653121489352 --1.28493496617011049415000585335031477841883147226940633938672647 --1.59906370348656058554635862858713041528077719140898834528189991 -1.22778590334809240101245476032648935513050915377960551544581623 -1.5322977932901436252895595569972475540577617342724861187270267 -1.75274168736523422397242619774204722683659397870241292345202444 -0.56625626722285651756253311275720288673940656244573689944011309 --0.2659067993421472465082576498441093967934993420406696922060148 --0.53760628906124551876546056977774369781800402294276300214155997 --1.95910988597432498631632368980972753594323330867762174465075306 --2.43289079978063753770654544323993729548390836702116747051577724 -1.79870149400383343046026737254257359724107808347923412038798083 -2.51765858717118974204493182761122688225575998906863429172398217 --0.90745710607117632307820891487482937004367350499329545736922132 --0.90445880774757875846793457747739464474365350457735820870526694 --1.58754491018976580534405259878555331512965186971132136571855749 --2.05647197884308533276113723626008344061362800943279415329265226 -0.35709031982602405804855625897791750653523175116321281233365192 -0.01083206843374254042384029715645464651177525250941663736295202 --0.00862811635902271955641096497834202490032630218018780479148863 -1.6200593315277499204031822354894483020591446460401315018236897 --0.0107731472944121045760093832874201804777448056772025686391772 --1.15939961411822465771151006397327697065085012590561882894790677 -1.7891281732285345533778128300940893106930470219255936025054854 --0.15348880213677475180585926104723205140482188998675013260143003 -3.37322303160095232390359810920683662277809399869522480529566305 --0.87511235444906838201524703086113424845374515774405202959636405 --2.39611633365417238645778470107027833937588710287756144428232735 -0.3665165509714438242501831580523590623938511665737645659763043 -0.91036908447977686958100382961934735098865811926972289237240298 --0.6444546923673214888788017940783748922427184242737660293953686 --1.35980060900567925237512896392003941263870983095636213636066066 --1.20740607994692716266469889894909390058494233021215831454722278 --0.461376248347220485942903435956598292820804102089940070336573 --0.22737611281624591999492552938586420879284190724605103699274584 --4.4188358094088534407604747431108586460951234986522366412618209 --0.56298659643026857347108307660060017507453494347031079790640871 -1.63678517606428845616750703256660858872950157497870125984282995 --1.3723455129350018515306789120462873882192970201312693253127398 --0.63336474686527516159105489324070368892834485573405592694787803 -1.8282943158708066084142949213872093462078631489372026101353699 -1.22331741292827337471225690954551758057322544466958034432352765 --0.399171418630850920427002218543542562046694008903276377086125 -0.4519741565629437015676630180743173597058731856855881189369435 -1.0241649039473104185903095618746878796817186757797436230004765 -2.6438610063185876768063654582388222686148213712886396566125073 -1.33805453911548484553338769607549156103029373317431843298372058 --1.27733872725772637516646155974744899938867283497227926371811925 --1.3112126763314345696611412515028012072808056896348891608635233 --0.33015977676778115389613849165704909304579510399789022945269894 --2.5758460629878856764751155195970791051440710270998404560841924 --0.0013118443343490685340393183369479908977589198537988816398802 -1.5023111738064273252300600992948350126043209795525165054038804 --0.1561804840165386991277911332587250686303261719886367449582625 -0.0467493639834492714968011536031003207065716870004435457193129 --0.8192569055066069248611046406740283945380357833764100043026141 --0.83277665375516235413516313125552351275758777541973891076128983 -0.15130013795397367259366715912749400725911874076624791850653412 -0.7765679134355393999852883314607700529464635263031104208119501 -0.8860347453073088344869937628236209246311481009532570313443225 --0.5994977450353401549309925768494505805566140162507019862627804 -0.5539019246964717815974574554299950256275648821365763477122719 -0.183259424032344095549832075505542588687401153829033901133527 --0.4346348990869774489110713112280442172262699419398807637533423 -0.5161932035854036429022674465772466233521301745519286102506977 - -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 --0.8786687027770929787301562525828872003547410177701220950278899658 -0.1944979336074391420204691208780533563017707991268605634570366201 --0.6717069716036456017860348911350501039034020263227184271420653514 -0.1841240265716411858721923885202834145897392121583597644960322461 -0.531416327611542071221970089939764430329756625444579259583169101 --0.7793598342770851820561551396646691186537674923197586552161425487 --0.04982739811897050028189209963034074300557183166488389610036293982 --0.2152831478765442996690076717147867376683641103330644151579049018 --0.1430325904665435237882241441707630670064919508747748361914900932 - diff --git a/tests/data/nfct_adjoint_2d_10_10_25.txt b/tests/data/nfct_adjoint_2d_10_10_25.txt new file mode 100644 index 00000000..633b8243 --- /dev/null +++ b/tests/data/nfct_adjoint_2d_10_10_25.txt @@ -0,0 +1,185 @@ +2 + +10 +10 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.230402910644737899027368109577132641139999484424691959789185425 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.2472557826481684830963989449602703101137738953947821260330747 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.454917586626400190455113486728514743998772785129201763658322789 +0.201326401841226822499265144634803231090444660833635656408098582 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.272502449871235944005176337000832389787308384521685260378340781 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 + +-0.7577320649899768043476779289618193542773805281629940387718805 +-1.73015264181740758756616251053351829698363608098936977911847341 +-0.26602819711320196398892335313949272330444243278143829840690223 +0.19470878297413401347055142436289090821303824114232867718416179 +0.8922695967731001874438721294128672852823250988834419925034281 +0.33905058122044834457837800441514708952263207209956081214678425 +0.68579570493935420399502273795534294629175152217441856992132423 +-1.27828207134862851027697755662222215309678592274958341388469187 +1.53426130172378777762318545986513706513975413684366623948944396 +0.85401724560492171469995802433331525719985601022700789083870206 +3.60054779332008253941637500256572445689480624004961651480882888 +2.19054236483712578667755678272545573391833149608976289487631939 +-0.82032968732858329552869107008137643457042909651498396311001263 +0.26503488402703946700924176743275364860764117076122703404065179 +1.14789473937612812157081559958751615951127129025003986489934176 +1.02488006374181602551077805075822600755546597749205541667470855 +-0.39545783794035822063007193710505062091052345524769795616302178 +-2.31092833570966667045748815804624213797868044849926966988736143 +-0.29580396939410532193685716168192632398902221593128841958071358 +-0.99567172413591171719413938476716402212103449668887939508159599 +-3.49443986557223223388362898992166410593640820459759297671468689 +0.62546866516100900759536882140402130720701395455603722654533019 +-0.52045555835124392681345695131058715950040338259986733733353684 +0.9175625060499207514689129089528442096557188180385085842578834 +-1.11987683871254351421104084570594274184058465110288754734442617 +2.51232315871471724783557971281434585453786734204427999304599848 +1.51782462934825379889814750390061103233060431514581768375412072 +0.31841591034233604155916094478907417102045852005473803646470399 +-1.67144659417010596311140122800145860832782047866982064908326041 +-1.24790721170732654421988797015609057347458226962235765457386663 +0.47589722227689297642949194433487374954138612944754043222543896 +0.82749391826631540234534270884494930833121033771354944268057677 +-3.39607399912230247284537555966449621381218961656999111945891418 +-0.28174296344197405463890927691692156361775053415109317978446844 +-1.07426236612697546887370296676384819313187867086219049732815783 +0.6881838523267266860486626087284474951063405225550544529984782 +-3.77254090092494611381750390616363286429301882421531022682933629 +-1.03794824053005497157894411562124431805614491151999743365491672 +1.32465114481897276874303050585771025063793107509720093605805269 +1.92160879338602099977079856975656723941298872043373121629483729 +1.53146793551747259341329560713525578495552692110837256892663419 +0.08847904200386347600258064204796547794685900581653358614803482 +-1.95176470698572628271620758181069463946434711379452144000251435 +-1.7622810556781091876908609499338251001388530401673461844063545 +-1.9523620855231829729187395202497108683662511808704571788533466 +1.76116727736598303228562230510664670998058899942652474363927225 +2.22062417450245901819792857660886010188716506344998965128099083 +0.21815761497772307444790833576078665379343392099597671520648704 +0.55039215427752628565285098059797553238225967079237349001379429 +-1.0350427047855917174532197376193915900680024911065676983602164 +1.2589631602848881553134145864920078205368749323495000374690683 +0.13840998162337732591794758930266283894186774218375181945397831 +0.10721655925916404561091004709687760865533199329559594528368825 +-0.44691457896857544319066201403798420418438492568420605146237987 +-0.44627973712554447720467781341093198707349785522362763367044276 +-1.21766816160126629594352475524774481209997600134491865628034144 +0.30378575314766492249571586323162355993955636519281902690757964 +-1.63135065939812757891689548285204894281855573598835223686642984 +1.16569878190602385115683853320176591325366187595985543302551609 +-1.4731467269918020330411714828679169227840173732524039028305982 +-0.82145820570610162663801694939637922283847561397108537276835757 +-0.35132313071743729265911740440018644734951498424885648815917811 +-0.10994723089471332730863352055349092289289938579263684022184198 +1.42737161655216615161660120066281827264771322873045890077239909 +1.19569248757432296763744328259922468267701964735480417025694654 +2.08554650339373355115401361120908532694971888588867050040004485 +0.6448208685962291417831573886599809110590887766460605401938137 +-1.42564251511302219974854091526638224407246291706977657562964018 +-0.0266339099694500684705100693155146582139413217456593163288024 +-0.9712071342315687367253167400669758235742696216967184625401925 +2.05646310296064884929466235060348796066486264055856870969172627 +1.8500090818121557498986423239668340938114013487418906311961985 +-2.47583510541217941703906955725239761080991667392219207597061682 +0.48488118662411894460876254241641280449243749243480588557450541 +-0.93641903876134200337408877267169857309158344709337547592803253 +2.11397178916934620840152623799718072390245240785737345725701518 +-2.13241093142026849835217888427274920599988079121975710895769875 +-0.5640327679915874386050810453085639196263977209247766289166822 +-0.3075069026245230522099720776289884857289864385049093430420064 +0.2653013280860396309058532291538240569397954641379078178699714 +-1.8689045574374140726892880756309063321369904868404361783695284 +1.31347621158960407786787086022101196803276863153945305219289188 +0.18680709237580755198285998604717007993939638302481040504378497 +2.65680634208854048472233787509307726223803531635103386697986808 +-0.58460351936649615874842117011423666309925895080346075161132715 +2.19873099930948939637527802776882517796733957474899780401431724 +0.116586989764605478738607761475743802067800050506430730326901 +0.5185022950868069625138686165910105741731120518747305470571868 +-0.5570628720096754218063105273736931699761550634422353200656218 +0.5627241050631528878794592145599016713364359600152834129289765 +0.2172907231983201281294681897239540191177501237876530707859505 +1.22532494351534895062999793452178280491732385814005395021248317 +0.1005565912631120892615516972012859389561251213277414369163328 +0.64399455510751802930347374190095768724225590200006596322721286 +-0.1756636674482951387186438435730556216303114684130787187713102 +-0.239683234359567323947093681302771499198700026649991421558987 +-0.7725045664284122824322760317165501669069569426945902800899299 +-1.6550735410490775212698562080547022157763239859626673121011475 +0.2599676473411084481406271502404557144542149502639609858322637 +-0.750472732056610629898580658102368917962444455714343235836923 + +-0.7335087736711041883089151876515694737975402817556229765975958245 +-0.8786687027770929787301562525828872003547410177701220950278899658 +0.1944979336074391420204691208780533563017707991268605634570366201 +-0.6717069716036456017860348911350501039034020263227184271420653514 +0.1841240265716411858721923885202834145897392121583597644960322461 +0.531416327611542071221970089939764430329756625444579259583169101 +-0.7793598342770851820561551396646691186537674923197586552161425487 +-0.04982739811897050028189209963034074300557183166488389610036293982 +-0.2152831478765442996690076717147867376683641103330644151579049018 +-0.1430325904665435237882241441707630670064919508747748361914900932 +-0.5458569288127476004682590208265714990676611459841400026017844665 +0.1856688150172391527088040246433169286752829500750590071977203062 +0.8193143821859564924477154245099351963436429074028089074430038904 +0.4604487491339531156973853721884505256237012331451385915640611729 +-0.8606535828683120015533980099014960687963233985081987928030018579 +-0.2028782443808202039078700152556584967073846417006795171717789768 +0.7727562160593342436881229708062656539223995010850938445718232095 +0.2216455512897554102911455213296037106714896153079531893725412128 +0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 + diff --git a/tests/data/nfct_adjoint_2d_10_20_20.txt b/tests/data/nfct_adjoint_2d_10_20_20.txt deleted file mode 100644 index 9eef2d05..00000000 --- a/tests/data/nfct_adjoint_2d_10_20_20.txt +++ /dev/null @@ -1,270 +0,0 @@ -2 - -10 -20 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 -0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 - --0.69273620291038926726455982040262810773021395371128338842658488 --0.23172991783966588861854324624888614532914776087643807558307305 -2.05618442897426120068337700338965166282847527966642731762768228 --0.01022033089161611068332096381115849989961630069063173908045719 --3.20475412646054458808241126586578239637505749283722606279431038 -0.79065482847140723740185002087936207002460845720404056035606603 -4.48966502699150622472759377803981334584871849234846745818689428 -1.52060621552185612628500836824586435699214366057843562658094556 --1.93563529070494316650987496128801906743400792343542493131748492 --1.91711181879629891697712137567943728799053287765997042103039235 -1.2554256298988411799984269796112080703660912577971473422927807 --2.6704333394705105410711821038426310513818239945780255696049912 --2.8365143591894490865096844225122146460309823213842546809800565 -0.9846208232562866625248550654679881027899039629871428350700387 --1.089149533717771703962933209324345443985672341046150895771671 --0.8643951502799969012073673581453525623343758450770721175340342 -3.5249843046558931979017366619370671637461664824523460188835386 --0.7809881458859131421399907927473316928682452820543059965905968 --1.8483228205590361142892484341702499053202286456310306787834038 -1.8100664141062937411942308120382146465266969461664538907024223 -1.78167157407696022863678598744320023087120774907816049982870453 -0.91818541341122356548761866303738925895622890314943209640039772 -0.74508495464914282661722138989759882840266298279921408150813473 --0.09306255688002215114436089034798327118730242637707466157042011 -0.95392249506070205958929845278188948569010729804066387798062486 --0.24233080215483634035466256466498393995807182645702548417171481 --3.02906412879434747743069502065438487822774817513061286160677301 --1.34214792999239277175607189831524739966132007920179355748806557 -2.60879832363683809318843910485365931563540511345594811985298511 --0.25576081777212720774571574119184968715669066410479094984091066 --0.89602670454864088594711525299859798956567241649720185434219529 -1.3688880989580372065699233660447013267719445066926469227832729 -0.1131976522383563953339272160181695052226020358481988191091788 --2.08126615023015798579175192130750864737666424672331051779704351 --0.04410874869830314671131771291243168217537037265285884871941497 -1.1087384174093582216464732062735566921941832840088715256148579 --1.1235493384331642843279800693927393602371713177399480729157427 --1.2934570956905040411219091436760619932141875012801756507218946 -0.12277670265015926272645709593265128530587633037204030097572761 --1.8049494875436817320467935071390825374056999124679361000067152 -1.73508323613837075617759534980666767647258657198120745833441016 --1.15657292297682197920193782483779822645467983067299421950195748 --2.01816309592698447300676140426398771499441769316713478476013729 -1.11517354883777216415772959796124892463655341432703245902571341 -2.6180378862302393749803763302900142021888279987573656853057054 --0.00967863777003045633765242118873518692230065210543670634412596 -1.94453870940900999496993532988199176207062770280928904174603708 --0.2777001892439004354158994992351672002196183932824538646316831 --2.979464074016227344495021101679894778948928479989747601521437 --0.09803748096637924111218697627587668876875419021782323207516424 -0.5452927545180712321134029745410671052470358519507532442714337 --0.96123617977810950651790500530609728222180656422691762360146378 -0.4278139244619769518371503958708058861156738486038270137697751 -0.77179410740908579146062740019095354818072807015206854158425924 --0.3393923341502785512640755062797707447006074608700057683259297 --2.0406247057000038152171863910272764425299675108542548253822471 --1.7630058288058724232343631821949707871717199512653928188659189 -1.1482996779125292896276544457719578982343780285264609656751927 -1.8026445352635110181283414254241615877494353530311741458445366 -1.7186194709241044053160070681266758625795676952195589679386331 --2.52608017800368214360402926794371643938691593186115567127755983 -0.98028688243293783682497007760822294899886764648096710899720962 -1.47543980042739525536203188664850500103566720279902161835293566 --1.95016119427822439023859024505340737857131951614318006821852904 -0.69145742549615826876874290650989308940299262158954568003475873 -0.88769548287530254181853868333122902368926703440105653121489352 --1.28493496617011049415000585335031477841883147226940633938672647 --1.59906370348656058554635862858713041528077719140898834528189991 -1.22778590334809240101245476032648935513050915377960551544581623 -1.5322977932901436252895595569972475540577617342724861187270267 --1.04660642130683786358409037270895820373975414828698450903191989 --0.6401078425558002348454575334891015403292516552201047427659388 -1.0460864268015475310001677400931801137195487362246640709829858 --0.93346925435099468768426733178212934255746804117638037053828101 -0.7366272451477409122727179347683658073336523660653029442541828 -0.4864415065354669390652250049033672957160745799062318970331155 --0.2160578237231053191724792659399773178792360199000878604311528 -0.0267199268075289886706952506206913753361854202180119073350901 --1.3422287020932418613030456500680472415714377189014536241023608 --0.5319678681172251934597264488414763375111947859096563672063884 -1.75274168736523422397242619774204722683659397870241292345202444 -0.56625626722285651756253311275720288673940656244573689944011309 --0.2659067993421472465082576498441093967934993420406696922060148 --0.53760628906124551876546056977774369781800402294276300214155997 --1.95910988597432498631632368980972753594323330867762174465075306 --2.43289079978063753770654544323993729548390836702116747051577724 -1.79870149400383343046026737254257359724107808347923412038798083 -2.51765858717118974204493182761122688225575998906863429172398217 --0.90745710607117632307820891487482937004367350499329545736922132 --0.90445880774757875846793457747739464474365350457735820870526694 -2.2860351645450708786912239527244104317618298285125465172444565 -0.1974853968161606761760830469428312993487496351020711239268678 --1.330094353124147014738949813289052018815888223865657506113775 --0.1689467825200443333433756893735248365094900832245732379860508 -0.6163158364234839193622416875598208300991090156655827401828844 -0.3197929651728552372891860451081674058251484117704415874018126 -2.1321084042957098898695343159240977766598769426526002711007312 -0.5637227077072539592232759245120205236594251304118777894047668 --1.6605065036877837559063857226319367410982776153932639603039266 --0.5925908755457789706721357920530694053801955240019399542877243 --1.58754491018976580534405259878555331512965186971132136571855749 --2.05647197884308533276113723626008344061362800943279415329265226 -0.35709031982602405804855625897791750653523175116321281233365192 -0.01083206843374254042384029715645464651177525250941663736295202 --0.00862811635902271955641096497834202490032630218018780479148863 -1.6200593315277499204031822354894483020591446460401315018236897 --0.0107731472944121045760093832874201804777448056772025686391772 --1.15939961411822465771151006397327697065085012590561882894790677 -1.7891281732285345533778128300940893106930470219255936025054854 --0.15348880213677475180585926104723205140482188998675013260143003 --1.1580169043985819592801606610923603523864297847384729803588829 -0.7236287834818075611540742956898438721521547192128455327173822 -0.5699582411428688930135077967403740213380387399207650753955918 --0.5810886049089425721654858659789886308040548466999036607043018 -0.3244555663739011770068562403221148607841195775857698226555129 -2.7136151201761521571922004870091058054910396727426604190982313 --0.2427868178109391802700678230564966079587007530148344763487687 --2.0744329253323575246491843213734701710520358812199261364422604 -1.6006391587253668402061464664060116893584530011519847145212302 -0.9804833948996422932944851698486230130148236190648252243244369 -3.37322303160095232390359810920683662277809399869522480529566305 --0.87511235444906838201524703086113424845374515774405202959636405 --2.39611633365417238645778470107027833937588710287756144428232735 -0.3665165509714438242501831580523590623938511665737645659763043 -0.91036908447977686958100382961934735098865811926972289237240298 --0.6444546923673214888788017940783748922427184242737660293953686 --1.35980060900567925237512896392003941263870983095636213636066066 --1.20740607994692716266469889894909390058494233021215831454722278 --0.461376248347220485942903435956598292820804102089940070336573 --0.22737611281624591999492552938586420879284190724605103699274584 -2.241258941883996650656534270660568977722883004946655061973948 -1.6195681564850126423179684291234349747047571369446522566025949 -1.3269495800458474900979107794735044491226313128902342727774428 -2.6890327553116628589274482931643779941513799444348122277270547 --0.643988916861133774372310973884704925707937757817486501824278 --2.6597891466640323369974467561004503566400004666205671314987416 --0.0404998274586438824604821242377006717904540933146241835761843 -1.087374080200502073615920910189875003807346260826687648423752 -0.6180333528758981612133415658075428929764641351093016397863608 --0.8373389842960251882906848211386422898996131296990885634549999 --4.4188358094088534407604747431108586460951234986522366412618209 --0.56298659643026857347108307660060017507453494347031079790640871 -1.63678517606428845616750703256660858872950157497870125984282995 --1.3723455129350018515306789120462873882192970201312693253127398 --0.63336474686527516159105489324070368892834485573405592694787803 -1.8282943158708066084142949213872093462078631489372026101353699 -1.22331741292827337471225690954551758057322544466958034432352765 --0.399171418630850920427002218543542562046694008903276377086125 -0.4519741565629437015676630180743173597058731856855881189369435 -1.0241649039473104185903095618746878796817186757797436230004765 -0.1804978947982362871055807145244601715016740052833150130736509 --1.4926544283547393576642850106652702228627478911428488666471208 --0.9082670409215992385964621861945220814778610387317364814358138 --0.1135298179858229336849461368777972710473497705571891078060426 -1.5885355405248116936159778275685861474457288821879226284560639 -1.1748574014531180188596530306232049782724854965998665242505789 -0.8490493796207991315179355934136627440299507026689983775537096 --0.0905317527151166431603725611080839615950154058063889757335349 -0.0711850549276018828651511623253603345119219563415095103693355 -0.8205282578530923747530842218330141420768603115334234221128805 -2.6438610063185876768063654582388222686148213712886396566125073 -1.33805453911548484553338769607549156103029373317431843298372058 --1.27733872725772637516646155974744899938867283497227926371811925 --1.3112126763314345696611412515028012072808056896348891608635233 --0.33015977676778115389613849165704909304579510399789022945269894 --2.5758460629878856764751155195970791051440710270998404560841924 --0.0013118443343490685340393183369479908977589198537988816398802 -1.5023111738064273252300600992948350126043209795525165054038804 --0.1561804840165386991277911332587250686303261719886367449582625 -0.0467493639834492714968011536031003207065716870004435457193129 -0.022069289957253959478860279152962842265230853030046733476496 -0.9163811103380731337762924000573917589702363709249570131100607 -1.4201697090888755672955706453987658796060864624123132659640201 --0.879975278667586691217132751995837489353910672116714835454023 -0.1209738093525263700181517241679632709852537312315034746188831 -0.8781940956538611527193230480794629920801818619248265963285945 -0.7593482331456288009705646424149910100102812552130512516610277 -0.1954713803065225044082273832980799794405878564137748564575729 --2.5050049686538270638071574245951472578783366615827692744627723 --0.7022221823134086931842737484170548233275910160646146700843181 --0.8192569055066069248611046406740283945380357833764100043026141 --0.83277665375516235413516313125552351275758777541973891076128983 -0.15130013795397367259366715912749400725911874076624791850653412 -0.7765679134355393999852883314607700529464635263031104208119501 -0.8860347453073088344869937628236209246311481009532570313443225 --0.5994977450353401549309925768494505805566140162507019862627804 -0.5539019246964717815974574554299950256275648821365763477122719 -0.183259424032344095549832075505542588687401153829033901133527 --0.4346348990869774489110713112280442172262699419398807637533423 -0.5161932035854036429022674465772466233521301745519286102506977 -0.1451916480036551216616082743243820204364881277270178938978915 -0.047966834116317483648993225337441903583400523804458822177733 --1.3078790233711976170637511690936259555002420556530100852470013 --2.225400662482430676583429831446595352981485998581504648779124 -1.4630498395195089028473210639459815285410473953574513489218487 -2.1571920356089934197149634725652719757928536382617261112402101 --1.9386700119588516757740482752814952732870874419271848026307852 --0.2393944625245605815335626750948460145434013616554842373522534 -2.28698974992654700394434841206786844625564088880644302267651 -0.2765164590695396820917942479648985685576820142380846744345135 - -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 --0.8786687027770929787301562525828872003547410177701220950278899658 -0.1944979336074391420204691208780533563017707991268605634570366201 --0.6717069716036456017860348911350501039034020263227184271420653514 -0.1841240265716411858721923885202834145897392121583597644960322461 -0.531416327611542071221970089939764430329756625444579259583169101 --0.7793598342770851820561551396646691186537674923197586552161425487 --0.04982739811897050028189209963034074300557183166488389610036293982 --0.2152831478765442996690076717147867376683641103330644151579049018 --0.1430325904665435237882241441707630670064919508747748361914900932 - diff --git a/tests/data/nfct_adjoint_2d_10_25_25.txt b/tests/data/nfct_adjoint_2d_10_25_25.txt new file mode 100644 index 00000000..e9452fbd --- /dev/null +++ b/tests/data/nfct_adjoint_2d_10_25_25.txt @@ -0,0 +1,335 @@ +2 + +10 +25 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.230402910644737899027368109577132641139999484424691959789185425 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.2472557826481684830963989449602703101137738953947821260330747 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.454917586626400190455113486728514743998772785129201763658322789 +0.201326401841226822499265144634803231090444660833635656408098582 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.272502449871235944005176337000832389787308384521685260378340781 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 + +-0.7577320649899768043476779289618193542773805281629940387718805 +-1.73015264181740758756616251053351829698363608098936977911847341 +-0.26602819711320196398892335313949272330444243278143829840690223 +0.19470878297413401347055142436289090821303824114232867718416179 +0.8922695967731001874438721294128672852823250988834419925034281 +0.33905058122044834457837800441514708952263207209956081214678425 +0.68579570493935420399502273795534294629175152217441856992132423 +-1.27828207134862851027697755662222215309678592274958341388469187 +1.53426130172378777762318545986513706513975413684366623948944396 +0.85401724560492171469995802433331525719985601022700789083870206 +3.0467757881522963938551120445412935963698242476501383816739021 +-3.3431458936818860368509748964906933865804947906896098337143291 +-0.4934602096499368122933394796674606442486843042242477082756873 +-2.6238841762713280921699676803003194348043932871454283842740601 +3.0398377282361013902429823336560618441885896698097184845532307 +0.4773753700144205551796597293897023347896813066657294916957982 +2.5248955688144800921738112384272665842625632360372134999224637 +-1.7370181855246459493848603194142283998897710555182046967159566 +1.7031348384973583311902115682042090014906738621032310127475105 +-0.4854135357045061148828126305763610289809762620083654115432861 +-0.1051742151649660631205484986954897115187454050853644114381595 +-1.9932012885305247895219719981582804907601818811832202820627969 +-0.8331447992615597776756752348239575494586707431618136995366486 +-1.9422286342712450583300392048995691360526630438305281852061791 +-0.6392940579031917233951991365052381920432090444937550165659146 +3.60054779332008253941637500256572445689480624004961651480882888 +2.19054236483712578667755678272545573391833149608976289487631939 +-0.82032968732858329552869107008137643457042909651498396311001263 +0.26503488402703946700924176743275364860764117076122703404065179 +1.14789473937612812157081559958751615951127129025003986489934176 +1.02488006374181602551077805075822600755546597749205541667470855 +-0.39545783794035822063007193710505062091052345524769795616302178 +-2.31092833570966667045748815804624213797868044849926966988736143 +-0.29580396939410532193685716168192632398902221593128841958071358 +-0.99567172413591171719413938476716402212103449668887939508159599 +1.41038428644823545118342480548949464120601880812097065927717037 +-0.62183141333795747290097091611251588338313094406933904379886738 +1.13799398837920987203771346501002267760255239643129702758965573 +-1.85182298798272513268217296530228862861064772742179690158107308 +-0.64260311290412495333855215983172629223453958590831677147177092 +-2.76364770427936304628595530014072800073213274308143977684057 +0.0356647434317094685503720733570084832966124822134152182454039 +-2.2993033837191009927912261020327706587869249979109807384036182 +-0.2876416916474419095643548889170007648972225598533435942639284 +-1.2205970338081790625685386617767904049711857573379045414771448 +0.9621122472869725100020913284487116568813223607664218757093401 +-0.1710214171929397102889533534079058888857863522710056822670896 +-0.8695939960019706747307156793815840080260396695191843132985755 +1.4817689615499325971038680356881658537802443876984336787296842 +2.8380722355329608929098570191351442464552139771698485613203037 +-3.49443986557223223388362898992166410593640820459759297671468689 +0.62546866516100900759536882140402130720701395455603722654533019 +-0.52045555835124392681345695131058715950040338259986733733353684 +0.9175625060499207514689129089528442096557188180385085842578834 +-1.11987683871254351421104084570594274184058465110288754734442617 +2.51232315871471724783557971281434585453786734204427999304599848 +1.51782462934825379889814750390061103233060431514581768375412072 +0.31841591034233604155916094478907417102045852005473803646470399 +-1.67144659417010596311140122800145860832782047866982064908326041 +-1.24790721170732654421988797015609057347458226962235765457386663 +1.42811529688099289882516050368002474049172044181506009313934228 +0.6145478197600600081235874350256477274789946830837510447284781 +-2.09424112604351614191829051897192424844801323517091639800868615 +-1.23270765982211140381117315916600010833921705320328694674362363 +1.112623328838290932914387688440538143283714894769448664152031 +0.8904962358401632890710806219443483539728410230528683839391937 +-0.4526520401565819309210725386637273671619212142493240599740024 +-1.6136776297695271846508464949431435243964902394802281335357426 +1.5520994043459350243048696692347827953569785196281078315155215 +2.5397082649012971914697816304442019015994313189551970084692055 +-0.1753930352901424137610140527360169331847741365584990267492862 +-1.3876419078822528345269754899842188375085265275086236949780142 +-2.5034552646062173276370812188569207592949594267723298971728157 +1.3723217419129031252586147016564800307834093658726572994066603 +-2.1220966416654996524723469165142540348521977884883865614710504 +0.47589722227689297642949194433487374954138612944754043222543896 +0.82749391826631540234534270884494930833121033771354944268057677 +-3.39607399912230247284537555966449621381218961656999111945891418 +-0.28174296344197405463890927691692156361775053415109317978446844 +-1.07426236612697546887370296676384819313187867086219049732815783 +0.6881838523267266860486626087284474951063405225550544529984782 +-3.77254090092494611381750390616363286429301882421531022682933629 +-1.03794824053005497157894411562124431805614491151999743365491672 +1.32465114481897276874303050585771025063793107509720093605805269 +1.92160879338602099977079856975656723941298872043373121629483729 +1.02694635909826302587438721135699813862697096556025169165629982 +-0.0753620372625000958012528586841581165905424775920926619151771 +0.84161685892317644354220588727512238417632318820705960498957175 +1.7082682972506735093152458997092917129435511583485113830910597 +2.2954382347692532548647353622344728531174673269197490797181973 +1.5732408918813656074645812895340368525099204068488014548909772 +0.9867798107310622355369494477387163356571094627209863110658958 +-1.0507895943372550716251499353753200725293064356310332605472026 +-1.5997662765165290258423236361528388069182351096061754472263865 +0.2354734820481123666663138753202995079643829359468985580378781 +1.8646331941982646863148271948941012828422816537062213376564254 +3.4148930205854817839953039135735485940778718854034514152627817 +-1.6126895070847563687507787699546719415535782002398346098952691 +-0.0411921264409970753019340410232386390760326034396681673763261 +-0.5067913187012038416903472020929866425752909235086713395927613 +1.53146793551747259341329560713525578495552692110837256892663419 +0.08847904200386347600258064204796547794685900581653358614803482 +-1.95176470698572628271620758181069463946434711379452144000251435 +-1.7622810556781091876908609499338251001388530401673461844063545 +-1.9523620855231829729187395202497108683662511808704571788533466 +1.76116727736598303228562230510664670998058899942652474363927225 +2.22062417450245901819792857660886010188716506344998965128099083 +0.21815761497772307444790833576078665379343392099597671520648704 +0.55039215427752628565285098059797553238225967079237349001379429 +-1.0350427047855917174532197376193915900680024911065676983602164 +0.4032077307375204516862545847146489406043241553886213221937766 +-2.4408666418698987448836419823488652152994005259284554580127962 +-0.0590502584775873430264420091882565620142172332313004804791967 +-0.9112188677051583384066087232686214315901396815458605740748142 +2.0723544064888140674159941418946485623249404616262138575895746 +0.1504983873335104992884175805971538725589929415221647599929474 +1.8351823144149623926934935279591060807235506707408576779456566 +0.3285869807511513867827642725536455957654633167287074929597522 +2.6928040891313998025233949027929125306842621608805994673668179 +-0.3699163579130802351819672234446988775182086542297773329399759 +-0.2577676396735532390861304715354361585801246913204318946621836 +0.1778059815921028739540127815854122458221125911567978942051957 +-0.2293477312067283736160057155261536460278177938656344079699474 +0.7108381178436292837109233925798644865870246643007441200092451 +0.0164356971461698129066241247810055587225051535652336892194543 +1.2589631602848881553134145864920078205368749323495000374690683 +0.13840998162337732591794758930266283894186774218375181945397831 +0.10721655925916404561091004709687760865533199329559594528368825 +-0.44691457896857544319066201403798420418438492568420605146237987 +-0.44627973712554447720467781341093198707349785522362763367044276 +-1.21766816160126629594352475524774481209997600134491865628034144 +0.30378575314766492249571586323162355993955636519281902690757964 +-1.63135065939812757891689548285204894281855573598835223686642984 +1.16569878190602385115683853320176591325366187595985543302551609 +-1.4731467269918020330411714828679169227840173732524039028305982 +3.2363693151814810937924755608901348396290532123303095671007745 +-0.1194751352746897000933585741951283028355349436484970495343008 +1.0215724635906979698645226904854978173693990591190331690535002 +-1.11245704494936344834113696509935342307866850843394662425696171 +2.2192775762870966314257286587031285974507127932524968771212649 +0.1788442980688802449181032879291922815903497626962850438930744 +1.5449337789818397695777423308882584068210357924699256628232153 +-5.3420341195056616197292322708630069417165303912776781636785842 +-0.0242488947640986906937409781802285365006160031217836677759215 +-0.0490693712557359071500802302015674023483054462376806923175083 +2.3255279383022614576143331793119256622323721917869017664040243 +-1.0508720551738679892908909110105534238067967068142041905069351 +-0.6582871490460035469927212776764657265336393174558259151553737 +0.7936729738913895653050623352360026523205237914072873563493654 +1.2748562860975098287651714097260550960150877370450436949143046 +-0.82145820570610162663801694939637922283847561397108537276835757 +-0.35132313071743729265911740440018644734951498424885648815917811 +-0.10994723089471332730863352055349092289289938579263684022184198 +1.42737161655216615161660120066281827264771322873045890077239909 +1.19569248757432296763744328259922468267701964735480417025694654 +2.08554650339373355115401361120908532694971888588867050040004485 +0.6448208685962291417831573886599809110590887766460605401938137 +-1.42564251511302219974854091526638224407246291706977657562964018 +-0.0266339099694500684705100693155146582139413217456593163288024 +-0.9712071342315687367253167400669758235742696216967184625401925 +1.452880052758437912985125383196705622949445492006227723152965 +-2.3745772245028242420121795416111391905934026374262211683071567 +-1.6833635370512804413796809830869171304134218549040144633677168 +-1.1544283896340962557610306776499977293851161487569113685130101 +0.8373406734855221278751264839411359525392644645110138277177183 +-1.5153717459880079125917738203976415206129813403030526186818365 +0.6968751483688064589555133592387058679964492534166708805903472 +-1.5128144964893182695476628926457000618107323034081033719182414 +1.7424870135113298907210482958018863380460316935773752360615563 +0.2220344694568289809935245640823583533035880759686468999224604 +0.8423315067132770405748490371760327629204256107720963258532133 +0.1568457325201578128997807004356736427151047676716200674180829 +-0.9070145917341724522094601697582388897332797192310210616281493 +-1.2179881197195509307703580043481254172014977286552333698388671 +-1.5404985311034587624398373728299528567969948131670052689786932 +2.05646310296064884929466235060348796066486264055856870969172627 +1.8500090818121557498986423239668340938114013487418906311961985 +-2.47583510541217941703906955725239761080991667392219207597061682 +0.48488118662411894460876254241641280449243749243480588557450541 +-0.93641903876134200337408877267169857309158344709337547592803253 +2.11397178916934620840152623799718072390245240785737345725701518 +-2.13241093142026849835217888427274920599988079121975710895769875 +-0.5640327679915874386050810453085639196263977209247766289166822 +-0.3075069026245230522099720776289884857289864385049093430420064 +0.2653013280860396309058532291538240569397954641379078178699714 +0.4549730893919981284168925135154954590522454546061782164560166 +1.4304499134562099308743544944439542889939414522901371710455213 +2.0970703745834424124732000035314092464259378714410713593483676 +0.4098338442690447054228855214784321894816362489044428679368372 +-1.5213198482473941851523987816556805756175447160137220778880872 +-1.3533052338252547046290931667331685701207667319358473741664712 +0.0076821584264736892964994782030280272466810688872657612696705 +-0.0285313839059286550497776322021160740197847195329638220097114 +-0.6238842880976587896355793846203805062352649822083777007273515 +-0.4017701535678862381032252699863997607574958764545482471882755 +-1.3670312277848062290514943110694669855777426721949879617615535 +0.1903598473786465695828787666611632028154933050231524422293766 +-2.029371222109469773968529807117256426665336852722022669311499 +1.9312603163329930150198632942705230994736070943586763452558868 +1.4464688259926601757667237995028865633995992994132897230611144 +-1.8689045574374140726892880756309063321369904868404361783695284 +1.31347621158960407786787086022101196803276863153945305219289188 +0.18680709237580755198285998604717007993939638302481040504378497 +2.65680634208854048472233787509307726223803531635103386697986808 +-0.58460351936649615874842117011423666309925895080346075161132715 +2.19873099930948939637527802776882517796733957474899780401431724 +0.116586989764605478738607761475743802067800050506430730326901 +0.5185022950868069625138686165910105741731120518747305470571868 +-0.5570628720096754218063105273736931699761550634422353200656218 +0.5627241050631528878794592145599016713364359600152834129289765 +0.6174815467698846622110370041602756210248390434552443989065126 +-1.4440352910997898644869066725189828344539889050571128495094229 +-4.2148558801275688283478083018610056096155321685521163011921349 +-2.5137895683566434864724608707171347639634590491252739563184627 +0.2438937723871658643629115094554391785868888280424178743572587 +1.1017528401691987130749980892901974602872497910929458290347835 +-0.623952926792224430591933643321536374543597128156856754927308 +-1.0957714498309134508132168588221552623755005980273082174933964 +0.3372612678926873284825136941184386544086277794856936569174134 +0.1330382634131918217700955229754789593056642791626260668884348 +-1.4984896709434127906836407565635031205989456388997540818177588 +-0.1135835809001635331920891318727443447563103965293650438226484 +-2.3132767434070103458465871350228017427518851772671410126532931 +0.9333768034506510793232069980230516571327959881939231801145491 +-0.4330417756096611803560862579241306296562374781844872715398997 +0.2172907231983201281294681897239540191177501237876530707859505 +1.22532494351534895062999793452178280491732385814005395021248317 +0.1005565912631120892615516972012859389561251213277414369163328 +0.64399455510751802930347374190095768724225590200006596322721286 +-0.1756636674482951387186438435730556216303114684130787187713102 +-0.239683234359567323947093681302771499198700026649991421558987 +-0.7725045664284122824322760317165501669069569426945902800899299 +-1.6550735410490775212698562080547022157763239859626673121011475 +0.2599676473411084481406271502404557144542149502639609858322637 +-0.750472732056610629898580658102368917962444455714343235836923 +0.965461853789557670459650135123895202195037082461790763346809 +0.631227001815153967246536746914785653645464971242020628568679 +1.4142947801060016609681452751597899977178297794350968365035043 +-0.7967411425333626097063580586753124901723866295557936204071981 +-0.1126674480118542688867881378798957999352302575840220600523452 +-1.2144708862662705406584839761229319620181064553436403168785695 +0.4471949707525937442185251168274445089712662995564164173614007 +-2.1101184583317717863504533350330888556683348786936410706766267 +-0.0405174518675681442447610874913448635593450618707892565819483 +-0.5336221058283979748770549645794079420975625860932892023537012 +1.4204695916829543512329380813818988639898414845209796696927645 +-0.0885033614660832531881830280776610519405353040535922602884726 +-0.3508499544372834838363498118660393398053496322350871847787917 +1.6366824015531664912565227138725545663302832443370583087404096 +1.1987851208948940396124371833506101339755525133365728629944665 + +-0.7335087736711041883089151876515694737975402817556229765975958245 +-0.8786687027770929787301562525828872003547410177701220950278899658 +0.1944979336074391420204691208780533563017707991268605634570366201 +-0.6717069716036456017860348911350501039034020263227184271420653514 +0.1841240265716411858721923885202834145897392121583597644960322461 +0.531416327611542071221970089939764430329756625444579259583169101 +-0.7793598342770851820561551396646691186537674923197586552161425487 +-0.04982739811897050028189209963034074300557183166488389610036293982 +-0.2152831478765442996690076717147867376683641103330644151579049018 +-0.1430325904665435237882241441707630670064919508747748361914900932 +-0.5458569288127476004682590208265714990676611459841400026017844665 +0.1856688150172391527088040246433169286752829500750590071977203062 +0.8193143821859564924477154245099351963436429074028089074430038904 +0.4604487491339531156973853721884505256237012331451385915640611729 +-0.8606535828683120015533980099014960687963233985081987928030018579 +-0.2028782443808202039078700152556584967073846417006795171717789768 +0.7727562160593342436881229708062656539223995010850938445718232095 +0.2216455512897554102911455213296037106714896153079531893725412128 +0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 + diff --git a/tests/data/nfct_adjoint_2d_10_20_50.txt b/tests/data/nfct_adjoint_2d_10_25_50.txt similarity index 87% rename from tests/data/nfct_adjoint_2d_10_20_50.txt rename to tests/data/nfct_adjoint_2d_10_25_50.txt index ddc4828c..1c1b60ce 100644 --- a/tests/data/nfct_adjoint_2d_10_20_50.txt +++ b/tests/data/nfct_adjoint_2d_10_25_50.txt @@ -1,7 +1,7 @@ 2 10 -20 +25 50 @@ -126,6 +126,11 @@ -0.0958067706249842520987192932867922814116292834010301201881017 -0.3684997698331157747320084365405711585897235048777937429255546 2.9811856389267329325479166051634770927778283754138586373569783 +-4.3074437385896983807157941516773454490661131885416653673488913 +3.8816839004347100066155114178662853172085182670845636897663749 +-6.2606524560659809872860498852939233788267434414458900842350811 +0.1862298570719541748621059434344429191892298492936304514199565 +-2.9629268037552651546486292087220955011409172359889483480062542 -1.43891142524257033249396129670083780849998739028783879146733072 0.23847852450979237513482602692088441310632294670918834198570647 1.37125115440045893224928843294490330762894139603411342197131311 @@ -146,6 +151,11 @@ -1.5025951930597454050836829274660211016079393295498681332098696 3.5884478935356084614372907472074048075725859011460154000917161 1.8631930796364074813662549007956852546551359142477586827995703 +-1.339342218489567140351476926769943662047947506041962942891261 +-2.0332043451768840071755791105235983150370343824036219880635579 +5.8052579669624569815972490322751360233654544391178698930172892 +-0.0663226125628593284781006344973056009232940615649623043615304 +-0.9837394254238066024259228913927688710519309726258776982523684 -2.09669861730980949586090717823585483817864920025459957869861663 2.16893419567954363257656714612890455423873468516744928691608423 -1.13780951871347950629746551995585582561147312710432762585612919 @@ -166,6 +176,11 @@ 2.1209905589735978074399338158392651394624401787387255462676898 1.2861479301260643219680095316570755876412228002467010111621926 -1.6178303010828436565022498060358816162482471300910940657009021 +-3.482800375064251231427569610029429401693124185836129556590444 +-1.4384908544644515351811793273961652469388961573063596471054702 +2.3573709382906676790292721818602406303231243968779796032370439 +-2.0135872317197497773824540750010228138066024646101936316460362 +-3.5484432093013348268606629152306045285151582023372115716522714 -3.3492593752811134208945537345538007305121831359327825615449473 0.27469296101530391297726133100302203607945830905764474143947011 3.208754543275873563941803848022126636943683851451460682495122 @@ -186,6 +201,11 @@ -1.6386277914489392528812289956580623774057620258911792989799966 0.0825982103880040712609241154624133507261382336138959849360147 0.3402973430781222852418467487020582658998051662909073200347693 +-0.3647693228991134063155593926833675009587008706384959402797073 +0.8196563190495177857109227274238376998940255675227049690760726 +1.0604497280623132679617035131299592351233972957071245841012096 +-0.0670208125638537382331599742213139345899456138266608836504188 +3.9107889309890477600477371670862409501881939541944842706412613 -3.8327306126290769631061436100608011061883191552993772730173195 0.6139420818851361614153380977910068115520508963925910171087496 -3.2674948122252669236894827948950488657473483756852126322417824 @@ -206,6 +226,11 @@ 1.9495815695880203719592691397969898408563927743647598958608242 2.228135781772752469928936843528053570260346268544549896228388 2.2735114180637674739286251689956635052332697050653769965264563 +0.6201368402665753671366499312770971610768928868442439881016457 +0.526231473235617312137831016849272756336814728564928923270422 +-0.6610023661574263085303750616865214365036371036634939199033956 +0.8273244983175225009843197414425583504858274695090503294030004 +-5.1003646272046671712877441345935006299937722338400607809215114 1.2850835460471294902612963839964580662905684450589351363168695 -0.1476972974882451294145405158052198638063317116873266380171972 0.5750300412165891547008609515090434651303081976679191561557287 @@ -226,6 +251,11 @@ -0.5723372430529039898502072869548752033413451325324332133494802 1.8183512249271271037540444668526980276841369901119590712516578 -2.5465267595608932747428478492373358397407033915392577380015546 +-1.2058280848692682805061197400711349378079171228963829206155242 +2.294122846834053568255665543095226778183600438526166102233421 +0.973993274697643084030271832275708823975543199053815105610773 +1.1377176339848624252920170295232732585955507039820163271634179 +1.782303648377751803927687874126121364334355193937553116227016 -2.9696667238999406390253682769592973860539195261688049753693445 -0.2597024867639060406057588427511447161329790969752691010566913 1.1809470005576424613381127451185402413861197462036947681115059 @@ -246,6 +276,11 @@ 2.7712421150424027946466957102978748531633912941369296722738869 -3.4394335016017435261522425580618123938034483827709110839419394 4.639203188592559043120553103732545539210096564507701690758296 +-2.8033099613041392371648163769710694918688438661910770616593262 +-0.2916805570638142564395499902321973935296635503433682085485754 +2.1523829244369089921536267743184820354663023549257472361034251 +-5.5317301370031345843657803191619156766432367927971915906153457 +-2.2359521089855209474945440762665692476484173596032952046809683 -1.882968384959710233051318905436400378041075822045215520349633 -0.3082897041367398707341562924049490170434380111058175739472871 -0.6821704969461249925107483887854372107206363745494738095857624 @@ -266,6 +301,11 @@ -0.892414878447332957170938723832587628492659465704156784675324 1.1174646988977020167492691748319432348807911824707704885578645 0.2279411139034688888158511203458561094544433411342385286139094 +2.3143732856621314496417611021870662354983417757427826726100993 +-0.557506220365114320835894466750125820918692076024123961613045 +1.6776800520664732785571708162771554205944711786782672168802861 +1.8497291928791730539342005755560279413503470031339765519448007 +0.8184873625176134017232173909618930956403788563537283303830478 0.8891782070041834864649413924073931051636218788974242912902486 2.9988929075772324589111167027701303634531507963649241724050351 0.4991667381638754019973569280726264761991024009421507045372595 @@ -286,6 +326,11 @@ -0.6843053227467830073856995481987933497135721391735526377795256 -0.3064687486689322837777413565427439466296702019981727805180725 -2.5296917887293825059869163734447293191338474195772771041979871 +-0.1089512926199842769235842277985101634271701890338874147236974 +0.336990352535440304445808577579469559137862458867844982421739 +-4.9286661395004155568391380893169712232105783807316514184786147 +-0.1405136857150963815922264819719628174381727541323482604908898 +-1.9604478382212243964913025568612028408731041268686630883753041 4.8100495647248071626402766046799168973657870951525488705642238 -1.3525852523139365527327538290166382094920979811384688746255061 -0.8008666463628030484857275774992386183995080193341380730908948 @@ -306,6 +351,11 @@ 1.6563981270785187318290023808123848615230634281887972342168863 -1.8388244608312479513787515080453795839258872564915641340930199 -0.1146342601527075752235357892985085257301267295926254076241909 +1.8261721033252580487746113028087591239865625253898836932902165 +-1.5055735032130396069665447843980353903059081417292793024382563 +1.7196307839245585835298761674799196508206574991656477417899788 +0.3388861409288623223728767961544166076823716203306148049556197 +1.265586849191854135771365921615382122565090430092328341434358 0.7721031360269444536624854764846278079390436516442447307214583713 0.7113282365127787106295924505560767722199840055537543517442585349 diff --git a/tests/data/nfct_adjoint_2d_20_10_20.txt b/tests/data/nfct_adjoint_2d_20_10_20.txt deleted file mode 100644 index fe63aac5..00000000 --- a/tests/data/nfct_adjoint_2d_20_10_20.txt +++ /dev/null @@ -1,270 +0,0 @@ -2 - -20 -10 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 -0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 - --0.69273620291038926726455982040262810773021395371128338842658488 --0.23172991783966588861854324624888614532914776087643807558307305 -2.05618442897426120068337700338965166282847527966642731762768228 --0.01022033089161611068332096381115849989961630069063173908045719 --3.20475412646054458808241126586578239637505749283722606279431038 -0.79065482847140723740185002087936207002460845720404056035606603 -4.48966502699150622472759377803981334584871849234846745818689428 -1.52060621552185612628500836824586435699214366057843562658094556 --1.93563529070494316650987496128801906743400792343542493131748492 --1.91711181879629891697712137567943728799053287765997042103039235 -1.78167157407696022863678598744320023087120774907816049982870453 -0.91818541341122356548761866303738925895622890314943209640039772 -0.74508495464914282661722138989759882840266298279921408150813473 --0.09306255688002215114436089034798327118730242637707466157042011 -0.95392249506070205958929845278188948569010729804066387798062486 --0.24233080215483634035466256466498393995807182645702548417171481 --3.02906412879434747743069502065438487822774817513061286160677301 --1.34214792999239277175607189831524739966132007920179355748806557 -2.60879832363683809318843910485365931563540511345594811985298511 --0.25576081777212720774571574119184968715669066410479094984091066 -1.73508323613837075617759534980666767647258657198120745833441016 --1.15657292297682197920193782483779822645467983067299421950195748 --2.01816309592698447300676140426398771499441769316713478476013729 -1.11517354883777216415772959796124892463655341432703245902571341 -2.6180378862302393749803763302900142021888279987573656853057054 --0.00967863777003045633765242118873518692230065210543670634412596 -1.94453870940900999496993532988199176207062770280928904174603708 --0.2777001892439004354158994992351672002196183932824538646316831 --2.979464074016227344495021101679894778948928479989747601521437 --0.09803748096637924111218697627587668876875419021782323207516424 --2.52608017800368214360402926794371643938691593186115567127755983 -0.98028688243293783682497007760822294899886764648096710899720962 -1.47543980042739525536203188664850500103566720279902161835293566 --1.95016119427822439023859024505340737857131951614318006821852904 -0.69145742549615826876874290650989308940299262158954568003475873 -0.88769548287530254181853868333122902368926703440105653121489352 --1.28493496617011049415000585335031477841883147226940633938672647 --1.59906370348656058554635862858713041528077719140898834528189991 -1.22778590334809240101245476032648935513050915377960551544581623 -1.5322977932901436252895595569972475540577617342724861187270267 -1.75274168736523422397242619774204722683659397870241292345202444 -0.56625626722285651756253311275720288673940656244573689944011309 --0.2659067993421472465082576498441093967934993420406696922060148 --0.53760628906124551876546056977774369781800402294276300214155997 --1.95910988597432498631632368980972753594323330867762174465075306 --2.43289079978063753770654544323993729548390836702116747051577724 -1.79870149400383343046026737254257359724107808347923412038798083 -2.51765858717118974204493182761122688225575998906863429172398217 --0.90745710607117632307820891487482937004367350499329545736922132 --0.90445880774757875846793457747739464474365350457735820870526694 --1.58754491018976580534405259878555331512965186971132136571855749 --2.05647197884308533276113723626008344061362800943279415329265226 -0.35709031982602405804855625897791750653523175116321281233365192 -0.01083206843374254042384029715645464651177525250941663736295202 --0.00862811635902271955641096497834202490032630218018780479148863 -1.6200593315277499204031822354894483020591446460401315018236897 --0.0107731472944121045760093832874201804777448056772025686391772 --1.15939961411822465771151006397327697065085012590561882894790677 -1.7891281732285345533778128300940893106930470219255936025054854 --0.15348880213677475180585926104723205140482188998675013260143003 -3.37322303160095232390359810920683662277809399869522480529566305 --0.87511235444906838201524703086113424845374515774405202959636405 --2.39611633365417238645778470107027833937588710287756144428232735 -0.3665165509714438242501831580523590623938511665737645659763043 -0.91036908447977686958100382961934735098865811926972289237240298 --0.6444546923673214888788017940783748922427184242737660293953686 --1.35980060900567925237512896392003941263870983095636213636066066 --1.20740607994692716266469889894909390058494233021215831454722278 --0.461376248347220485942903435956598292820804102089940070336573 --0.22737611281624591999492552938586420879284190724605103699274584 --4.4188358094088534407604747431108586460951234986522366412618209 --0.56298659643026857347108307660060017507453494347031079790640871 -1.63678517606428845616750703256660858872950157497870125984282995 --1.3723455129350018515306789120462873882192970201312693253127398 --0.63336474686527516159105489324070368892834485573405592694787803 -1.8282943158708066084142949213872093462078631489372026101353699 -1.22331741292827337471225690954551758057322544466958034432352765 --0.399171418630850920427002218543542562046694008903276377086125 -0.4519741565629437015676630180743173597058731856855881189369435 -1.0241649039473104185903095618746878796817186757797436230004765 -2.6438610063185876768063654582388222686148213712886396566125073 -1.33805453911548484553338769607549156103029373317431843298372058 --1.27733872725772637516646155974744899938867283497227926371811925 --1.3112126763314345696611412515028012072808056896348891608635233 --0.33015977676778115389613849165704909304579510399789022945269894 --2.5758460629878856764751155195970791051440710270998404560841924 --0.0013118443343490685340393183369479908977589198537988816398802 -1.5023111738064273252300600992948350126043209795525165054038804 --0.1561804840165386991277911332587250686303261719886367449582625 -0.0467493639834492714968011536031003207065716870004435457193129 --0.8192569055066069248611046406740283945380357833764100043026141 --0.83277665375516235413516313125552351275758777541973891076128983 -0.15130013795397367259366715912749400725911874076624791850653412 -0.7765679134355393999852883314607700529464635263031104208119501 -0.8860347453073088344869937628236209246311481009532570313443225 --0.5994977450353401549309925768494505805566140162507019862627804 -0.5539019246964717815974574554299950256275648821365763477122719 -0.183259424032344095549832075505542588687401153829033901133527 --0.4346348990869774489110713112280442172262699419398807637533423 -0.5161932035854036429022674465772466233521301745519286102506977 -0.3012263881722802801714352379473953630039906503104574794992783 -0.10571677166705436607907490957358424265546254666227433494332703 --0.19048539848744749046436079429261407771174793817693058548497954 --0.4543526329728118315550151377263766720450801753871651409765009 -1.33897265858979347073403530137989416000445182775168588070780576 -2.9223655725954307322360641204273780049054528853238250264199376 --0.4924633963373781429209259569034560458201841200741033713248441 --2.4390407142663775224993970129866580758344990062472950828009799 --0.4840114921705225126187322570558307512318605532028776221005985 --0.3341395330479692171987418261482187375975786370601342366796323 -0.6645482062980250804129728099771371282306162819786371863536254 -0.39031553754612943967710282524447413495525612701685117118990236 -1.4925315216536228299181717921703560978021752455618580650197976 -1.03190957005480030743823163568625044939130088026035156677662409 --1.6029333626118710481748451107621322531216682890101767584380123 --0.8041725109404865649732821163367524673265257059173531644749357 --0.4608415269838004671128390389932631679813374573081993697173383 -0.1792685236242660303613018096504207655703910075232760022355845 -0.4712290977546030069250488500588198103268065600361455181192783 --0.7802261301658090953410374025889161550466156345316015422223515 -2.4021910107441696164097045072244780528860489245867022745712851 -0.20646371000031784628675302745986196064632524928072323424203241 --0.8174658799852905991733644327383076414277565886372743597360997 --0.0562464818686902911430939705451849045252095661593082193020875 -0.0154869160517409876795676581282001070520919853882986287576744 -0.2237556687785903375321518575266806796551056462331281729107646 -1.5147325402235597749934824767469885255745369573771909682860936 -1.7971888850886163790859667183972082539597746028250175449107557 -0.4660063663825890877838472989315077485480487686769594313206052 --1.7191568522430425148655890412622164345641145072559925027367562 --0.2453787548602301415496266007534061460109572247656060414266099 -1.21631459641686564651800677660737940447608481107646412364080311 -1.2539792260776678757526143858147486076740354813479994966069886 -0.1866278228122056371216677782048731700948573562925236848821915 -0.5708356962524043665836318488964679826560329590140131467985965 --0.4233510259048861771281560422119531967115506641614704030407801 --1.0304119641274293765654977773859253271677322878927406497263143 --2.0985940857898105386970658383155051994419970879740517445991604 --1.1369314587988870483100666860440053262403734033973011781319921 -2.2340311511389789300669712084054150995600335812495731779469145 --1.3499412302922897498774017492442916706020715623004963530270803 -0.09039683235923395608270538314875051588232050394181034671147004 --1.2426985096133605626984753547678680227262922399832632144414401 --0.6722618806913794966135752048835756991488004573545053885341272 -2.4189892477921981854811129441552344885240938783354723718375558 -1.7775167548798040118890234038326229924744687271139998454776843 -0.4241829293891081899922678301755910715540907395625124121761247 -0.1038380074317494048049907523405053755295489995842381075314565 --1.2965537906072155524972791052589306882362244422073657293700333 --0.5283911412462067899999056516336334079083576182803047274258519 -0.5257214095190079053218036462182650687176946979793755871827127 -0.3297678670086208860013783751417353494191693667863773938999074 -0.4655591392092285251663239043352597976741137337424156024266062 -0.5804040257306114150110534290282428984274520256453818600844901 --0.7506583690020524446588088875273240310326407865758893936694943 --1.0771271469779249272010566931228716019998211658755245932798969 --0.9039104302752945324401651287148193069236913298931028478804229 --0.2218122643321576663434729088756209831440786658626224825624125 -0.6134620163800192542079853438461485466545482321907007261480465 -0.457603520477109072060260540876341878914673706874063120828496 -1.253106299642683723546091739139736388367534376314609738205217 --0.5708375485926199839599971575636516573931078970807573273683642 --0.1859552958418944435583199860754283089771050609762025863242652 --0.1754580268457383270258857118322484481887601315730488901544142 --2.7889440891856226134293901390181335220948078909400240503188371 --0.7487718402246906216288779368170817418750484892471859381201378 -1.8814029280267940890680344642734359922666358140785500116457881 -2.2228522489051213783198574143059075958380980023457525436865559 -0.3180743092424882295812603098029851336749365435803533197526187 --1.3278513765927883800854003679124085400675696274245068124263602 --1.4540818568665147839359807567909653441246940435908424042646196 --0.9110196670604731150799250319312329668441515180246817003279859 --0.5859458364758688532870109419271376413129859587185591954564647 --0.1914207402138672034383740344205278594429585061956000140326472 -0.7211445950921926600649695636754854769498158712147149114862769 -1.9921325936578647038849555703694280381741849697701097762701257 --1.6593877841547949749951248590133830682996227076030592743327899 --2.0585981248610550988253873933714014226211848655768589730532937 -0.9537435908837924441313869150846867312153473525478497005723267 -1.2766368942764610810848426484234400292854798105713355667710521 --0.5563367348575345553370474564628853255203370836869949368563128 -0.2819626033265114534236839677918271230386883422205773915465369 --0.916528317311498517252850930059026522162722445970828939805472 --0.6672566270267865796439306271273607736809168896528606400707053 -0.3400535718612533189508954597022441270667195662769633336339281 -0.5345330722768620148908174720547888397178812585142272914239041 --0.2587639801634846020826235587407872051979775935258864743418198 --0.8973556677921349915472394760897134511012538650120710636230748 --1.4679700483289246769050588753442738977745398656543176488020667 -0.6396969163341587905837381625283381931956433501271408026991445 -0.0206554023516779051099383209201531709500930095444246542256908 --0.763307055386274747048745667578547705768842382106712536132009 --2.1253144414892529189843434110498535516132641816040520491429137 -0.4424031138249129039547822947876797222603525602694932586238564 -1.4304025824917250618480108436679575332633618788368096679037563 --1.7655612648038264924137529835276212199520316392639166458407255 --0.3044747373862375475234604725287945853417074140091427619475491 -2.4051575776831382597826630537845839107398260380960824250098292 -1.1088854412138527772107668817053800338982050918002622045989945 -0.5119965395592898607881492142393223556523861402348086154258796 - -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 --0.8786687027770929787301562525828872003547410177701220950278899658 -0.1944979336074391420204691208780533563017707991268605634570366201 --0.6717069716036456017860348911350501039034020263227184271420653514 -0.1841240265716411858721923885202834145897392121583597644960322461 -0.531416327611542071221970089939764430329756625444579259583169101 --0.7793598342770851820561551396646691186537674923197586552161425487 --0.04982739811897050028189209963034074300557183166488389610036293982 --0.2152831478765442996690076717147867376683641103330644151579049018 --0.1430325904665435237882241441707630670064919508747748361914900932 - diff --git a/tests/data/nfct_adjoint_2d_20_20_20.txt b/tests/data/nfct_adjoint_2d_20_20_20.txt deleted file mode 100644 index db9ee154..00000000 --- a/tests/data/nfct_adjoint_2d_20_20_20.txt +++ /dev/null @@ -1,470 +0,0 @@ -2 - -20 -20 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 -0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 - --0.69273620291038926726455982040262810773021395371128338842658488 --0.23172991783966588861854324624888614532914776087643807558307305 -2.05618442897426120068337700338965166282847527966642731762768228 --0.01022033089161611068332096381115849989961630069063173908045719 --3.20475412646054458808241126586578239637505749283722606279431038 -0.79065482847140723740185002087936207002460845720404056035606603 -4.48966502699150622472759377803981334584871849234846745818689428 -1.52060621552185612628500836824586435699214366057843562658094556 --1.93563529070494316650987496128801906743400792343542493131748492 --1.91711181879629891697712137567943728799053287765997042103039235 -1.2554256298988411799984269796112080703660912577971473422927807 --2.6704333394705105410711821038426310513818239945780255696049912 --2.8365143591894490865096844225122146460309823213842546809800565 -0.9846208232562866625248550654679881027899039629871428350700387 --1.089149533717771703962933209324345443985672341046150895771671 --0.8643951502799969012073673581453525623343758450770721175340342 -3.5249843046558931979017366619370671637461664824523460188835386 --0.7809881458859131421399907927473316928682452820543059965905968 --1.8483228205590361142892484341702499053202286456310306787834038 -1.8100664141062937411942308120382146465266969461664538907024223 -1.78167157407696022863678598744320023087120774907816049982870453 -0.91818541341122356548761866303738925895622890314943209640039772 -0.74508495464914282661722138989759882840266298279921408150813473 --0.09306255688002215114436089034798327118730242637707466157042011 -0.95392249506070205958929845278188948569010729804066387798062486 --0.24233080215483634035466256466498393995807182645702548417171481 --3.02906412879434747743069502065438487822774817513061286160677301 --1.34214792999239277175607189831524739966132007920179355748806557 -2.60879832363683809318843910485365931563540511345594811985298511 --0.25576081777212720774571574119184968715669066410479094984091066 --0.89602670454864088594711525299859798956567241649720185434219529 -1.3688880989580372065699233660447013267719445066926469227832729 -0.1131976522383563953339272160181695052226020358481988191091788 --2.08126615023015798579175192130750864737666424672331051779704351 --0.04410874869830314671131771291243168217537037265285884871941497 -1.1087384174093582216464732062735566921941832840088715256148579 --1.1235493384331642843279800693927393602371713177399480729157427 --1.2934570956905040411219091436760619932141875012801756507218946 -0.12277670265015926272645709593265128530587633037204030097572761 --1.8049494875436817320467935071390825374056999124679361000067152 -1.73508323613837075617759534980666767647258657198120745833441016 --1.15657292297682197920193782483779822645467983067299421950195748 --2.01816309592698447300676140426398771499441769316713478476013729 -1.11517354883777216415772959796124892463655341432703245902571341 -2.6180378862302393749803763302900142021888279987573656853057054 --0.00967863777003045633765242118873518692230065210543670634412596 -1.94453870940900999496993532988199176207062770280928904174603708 --0.2777001892439004354158994992351672002196183932824538646316831 --2.979464074016227344495021101679894778948928479989747601521437 --0.09803748096637924111218697627587668876875419021782323207516424 -0.5452927545180712321134029745410671052470358519507532442714337 --0.96123617977810950651790500530609728222180656422691762360146378 -0.4278139244619769518371503958708058861156738486038270137697751 -0.77179410740908579146062740019095354818072807015206854158425924 --0.3393923341502785512640755062797707447006074608700057683259297 --2.0406247057000038152171863910272764425299675108542548253822471 --1.7630058288058724232343631821949707871717199512653928188659189 -1.1482996779125292896276544457719578982343780285264609656751927 -1.8026445352635110181283414254241615877494353530311741458445366 -1.7186194709241044053160070681266758625795676952195589679386331 --2.52608017800368214360402926794371643938691593186115567127755983 -0.98028688243293783682497007760822294899886764648096710899720962 -1.47543980042739525536203188664850500103566720279902161835293566 --1.95016119427822439023859024505340737857131951614318006821852904 -0.69145742549615826876874290650989308940299262158954568003475873 -0.88769548287530254181853868333122902368926703440105653121489352 --1.28493496617011049415000585335031477841883147226940633938672647 --1.59906370348656058554635862858713041528077719140898834528189991 -1.22778590334809240101245476032648935513050915377960551544581623 -1.5322977932901436252895595569972475540577617342724861187270267 --1.04660642130683786358409037270895820373975414828698450903191989 --0.6401078425558002348454575334891015403292516552201047427659388 -1.0460864268015475310001677400931801137195487362246640709829858 --0.93346925435099468768426733178212934255746804117638037053828101 -0.7366272451477409122727179347683658073336523660653029442541828 -0.4864415065354669390652250049033672957160745799062318970331155 --0.2160578237231053191724792659399773178792360199000878604311528 -0.0267199268075289886706952506206913753361854202180119073350901 --1.3422287020932418613030456500680472415714377189014536241023608 --0.5319678681172251934597264488414763375111947859096563672063884 -1.75274168736523422397242619774204722683659397870241292345202444 -0.56625626722285651756253311275720288673940656244573689944011309 --0.2659067993421472465082576498441093967934993420406696922060148 --0.53760628906124551876546056977774369781800402294276300214155997 --1.95910988597432498631632368980972753594323330867762174465075306 --2.43289079978063753770654544323993729548390836702116747051577724 -1.79870149400383343046026737254257359724107808347923412038798083 -2.51765858717118974204493182761122688225575998906863429172398217 --0.90745710607117632307820891487482937004367350499329545736922132 --0.90445880774757875846793457747739464474365350457735820870526694 -2.2860351645450708786912239527244104317618298285125465172444565 -0.1974853968161606761760830469428312993487496351020711239268678 --1.330094353124147014738949813289052018815888223865657506113775 --0.1689467825200443333433756893735248365094900832245732379860508 -0.6163158364234839193622416875598208300991090156655827401828844 -0.3197929651728552372891860451081674058251484117704415874018126 -2.1321084042957098898695343159240977766598769426526002711007312 -0.5637227077072539592232759245120205236594251304118777894047668 --1.6605065036877837559063857226319367410982776153932639603039266 --0.5925908755457789706721357920530694053801955240019399542877243 --1.58754491018976580534405259878555331512965186971132136571855749 --2.05647197884308533276113723626008344061362800943279415329265226 -0.35709031982602405804855625897791750653523175116321281233365192 -0.01083206843374254042384029715645464651177525250941663736295202 --0.00862811635902271955641096497834202490032630218018780479148863 -1.6200593315277499204031822354894483020591446460401315018236897 --0.0107731472944121045760093832874201804777448056772025686391772 --1.15939961411822465771151006397327697065085012590561882894790677 -1.7891281732285345533778128300940893106930470219255936025054854 --0.15348880213677475180585926104723205140482188998675013260143003 --1.1580169043985819592801606610923603523864297847384729803588829 -0.7236287834818075611540742956898438721521547192128455327173822 -0.5699582411428688930135077967403740213380387399207650753955918 --0.5810886049089425721654858659789886308040548466999036607043018 -0.3244555663739011770068562403221148607841195775857698226555129 -2.7136151201761521571922004870091058054910396727426604190982313 --0.2427868178109391802700678230564966079587007530148344763487687 --2.0744329253323575246491843213734701710520358812199261364422604 -1.6006391587253668402061464664060116893584530011519847145212302 -0.9804833948996422932944851698486230130148236190648252243244369 -3.37322303160095232390359810920683662277809399869522480529566305 --0.87511235444906838201524703086113424845374515774405202959636405 --2.39611633365417238645778470107027833937588710287756144428232735 -0.3665165509714438242501831580523590623938511665737645659763043 -0.91036908447977686958100382961934735098865811926972289237240298 --0.6444546923673214888788017940783748922427184242737660293953686 --1.35980060900567925237512896392003941263870983095636213636066066 --1.20740607994692716266469889894909390058494233021215831454722278 --0.461376248347220485942903435956598292820804102089940070336573 --0.22737611281624591999492552938586420879284190724605103699274584 -2.241258941883996650656534270660568977722883004946655061973948 -1.6195681564850126423179684291234349747047571369446522566025949 -1.3269495800458474900979107794735044491226313128902342727774428 -2.6890327553116628589274482931643779941513799444348122277270547 --0.643988916861133774372310973884704925707937757817486501824278 --2.6597891466640323369974467561004503566400004666205671314987416 --0.0404998274586438824604821242377006717904540933146241835761843 -1.087374080200502073615920910189875003807346260826687648423752 -0.6180333528758981612133415658075428929764641351093016397863608 --0.8373389842960251882906848211386422898996131296990885634549999 --4.4188358094088534407604747431108586460951234986522366412618209 --0.56298659643026857347108307660060017507453494347031079790640871 -1.63678517606428845616750703256660858872950157497870125984282995 --1.3723455129350018515306789120462873882192970201312693253127398 --0.63336474686527516159105489324070368892834485573405592694787803 -1.8282943158708066084142949213872093462078631489372026101353699 -1.22331741292827337471225690954551758057322544466958034432352765 --0.399171418630850920427002218543542562046694008903276377086125 -0.4519741565629437015676630180743173597058731856855881189369435 -1.0241649039473104185903095618746878796817186757797436230004765 -0.1804978947982362871055807145244601715016740052833150130736509 --1.4926544283547393576642850106652702228627478911428488666471208 --0.9082670409215992385964621861945220814778610387317364814358138 --0.1135298179858229336849461368777972710473497705571891078060426 -1.5885355405248116936159778275685861474457288821879226284560639 -1.1748574014531180188596530306232049782724854965998665242505789 -0.8490493796207991315179355934136627440299507026689983775537096 --0.0905317527151166431603725611080839615950154058063889757335349 -0.0711850549276018828651511623253603345119219563415095103693355 -0.8205282578530923747530842218330141420768603115334234221128805 -2.6438610063185876768063654582388222686148213712886396566125073 -1.33805453911548484553338769607549156103029373317431843298372058 --1.27733872725772637516646155974744899938867283497227926371811925 --1.3112126763314345696611412515028012072808056896348891608635233 --0.33015977676778115389613849165704909304579510399789022945269894 --2.5758460629878856764751155195970791051440710270998404560841924 --0.0013118443343490685340393183369479908977589198537988816398802 -1.5023111738064273252300600992948350126043209795525165054038804 --0.1561804840165386991277911332587250686303261719886367449582625 -0.0467493639834492714968011536031003207065716870004435457193129 -0.022069289957253959478860279152962842265230853030046733476496 -0.9163811103380731337762924000573917589702363709249570131100607 -1.4201697090888755672955706453987658796060864624123132659640201 --0.879975278667586691217132751995837489353910672116714835454023 -0.1209738093525263700181517241679632709852537312315034746188831 -0.8781940956538611527193230480794629920801818619248265963285945 -0.7593482331456288009705646424149910100102812552130512516610277 -0.1954713803065225044082273832980799794405878564137748564575729 --2.5050049686538270638071574245951472578783366615827692744627723 --0.7022221823134086931842737484170548233275910160646146700843181 --0.8192569055066069248611046406740283945380357833764100043026141 --0.83277665375516235413516313125552351275758777541973891076128983 -0.15130013795397367259366715912749400725911874076624791850653412 -0.7765679134355393999852883314607700529464635263031104208119501 -0.8860347453073088344869937628236209246311481009532570313443225 --0.5994977450353401549309925768494505805566140162507019862627804 -0.5539019246964717815974574554299950256275648821365763477122719 -0.183259424032344095549832075505542588687401153829033901133527 --0.4346348990869774489110713112280442172262699419398807637533423 -0.5161932035854036429022674465772466233521301745519286102506977 -0.1451916480036551216616082743243820204364881277270178938978915 -0.047966834116317483648993225337441903583400523804458822177733 --1.3078790233711976170637511690936259555002420556530100852470013 --2.225400662482430676583429831446595352981485998581504648779124 -1.4630498395195089028473210639459815285410473953574513489218487 -2.1571920356089934197149634725652719757928536382617261112402101 --1.9386700119588516757740482752814952732870874419271848026307852 --0.2393944625245605815335626750948460145434013616554842373522534 -2.28698974992654700394434841206786844625564088880644302267651 -0.2765164590695396820917942479648985685576820142380846744345135 -0.3012263881722802801714352379473953630039906503104574794992783 -0.10571677166705436607907490957358424265546254666227433494332703 --0.19048539848744749046436079429261407771174793817693058548497954 --0.4543526329728118315550151377263766720450801753871651409765009 -1.33897265858979347073403530137989416000445182775168588070780576 -2.9223655725954307322360641204273780049054528853238250264199376 --0.4924633963373781429209259569034560458201841200741033713248441 --2.4390407142663775224993970129866580758344990062472950828009799 --0.4840114921705225126187322570558307512318605532028776221005985 --0.3341395330479692171987418261482187375975786370601342366796323 --0.4682217067047821820074517754175029107270581429526979075239534 --0.7346936696481372186296773705276853617606634870713245235119517 -1.9621050472614605517292702810908088126596427820180559270413548 -3.1042631477311332644104873126936213194330840831391859348955745 --2.3881459199578578315705698114976096795490141733597023479849004 --4.2468567931754454118970550704077617852955665703719160537326172 -0.8984890505969127483118344596827999253793790538984102337674041 -0.7074497711558141639959850309666617450552850120948443926392646 --1.4704708765292141724293916858040627186585496514660910114444059 -0.5390972210781171767688554734444428311487284205069579118702892 -0.6645482062980250804129728099771371282306162819786371863536254 -0.39031553754612943967710282524447413495525612701685117118990236 -1.4925315216536228299181717921703560978021752455618580650197976 -1.03190957005480030743823163568625044939130088026035156677662409 --1.6029333626118710481748451107621322531216682890101767584380123 --0.8041725109404865649732821163367524673265257059173531644749357 --0.4608415269838004671128390389932631679813374573081993697173383 -0.1792685236242660303613018096504207655703910075232760022355845 -0.4712290977546030069250488500588198103268065600361455181192783 --0.7802261301658090953410374025889161550466156345316015422223515 -1.4866894579306633146240563559711098834434779021108971043314142 -0.0974384831371237587232370593726465912507175726711710298630093 --2.9827153516753469045191166120635803982630073524636487798123355 --1.4442383892556121406060895750871832896080626939242671521159106 -0.6167627632453927897887297336929118147541907252766838371134627 -1.3134003107794075073319085808747185952315198435145460089888474 -0.0514610125326244279999972535591854808833312730719520923305445 --1.9422733495281726002885673595405966825858103711223417211468939 -0.729175485453578071677821393451699509759158288407886361837818 --0.3011660646692481943133166883684674340809308859696370339097919 -2.4021910107441696164097045072244780528860489245867022745712851 -0.20646371000031784628675302745986196064632524928072323424203241 --0.8174658799852905991733644327383076414277565886372743597360997 --0.0562464818686902911430939705451849045252095661593082193020875 -0.0154869160517409876795676581282001070520919853882986287576744 -0.2237556687785903375321518575266806796551056462331281729107646 -1.5147325402235597749934824767469885255745369573771909682860936 -1.7971888850886163790859667183972082539597746028250175449107557 -0.4660063663825890877838472989315077485480487686769594313206052 --1.7191568522430425148655890412622164345641145072559925027367562 --1.9552676566482691385553414984430720733100640961221703622424556 --0.2835353828409140018758473040879324732022248328946816516478022 --0.8738746409715810722016539493271203281035481323541670789889646 --1.8065773984758494777836573860363280468885731538108419312506565 --0.7395935022992333864662329740168473708914217071508660952920147 -1.4835154617235773145121142350414048881293464497532611918288016 -0.5332874516625778510287436379105098241513266440849073623798264 --0.3725240228041476262816980210108682966551744143185543950105624 --0.155400218627949601498142990096676555094230722195330986980007 -0.171404687632885856703947920145163571838882867641768594862493 --0.2453787548602301415496266007534061460109572247656060414266099 -1.21631459641686564651800677660737940447608481107646412364080311 -1.2539792260776678757526143858147486076740354813479994966069886 -0.1866278228122056371216677782048731700948573562925236848821915 -0.5708356962524043665836318488964679826560329590140131467985965 --0.4233510259048861771281560422119531967115506641614704030407801 --1.0304119641274293765654977773859253271677322878927406497263143 --2.0985940857898105386970658383155051994419970879740517445991604 --1.1369314587988870483100666860440053262403734033973011781319921 -2.2340311511389789300669712084054150995600335812495731779469145 -0.5041071733917166346169192691924724739276934922856970056809511 --0.8164055122863793339423970884363167596330018109420950635596641 -0.5316963056941594373086249500498877558414453767539985942799444 -0.2306457706780808961846386263246453679319499753059534764573335 --0.0087728277322136596602528881970913137483317949885278768142476 --0.8130468412815598290566605205372124799601060488866388998794965 --1.5577361318395282966323266887666868195071867044268337865825467 --0.6470988748359878441998595382717375330324108343000955874121118 --1.0911460147276454335014136328430433183085164590732482632371223 --0.0012824072961965221681493011788029778190760318828507513169219 --1.3499412302922897498774017492442916706020715623004963530270803 -0.09039683235923395608270538314875051588232050394181034671147004 --1.2426985096133605626984753547678680227262922399832632144414401 --0.6722618806913794966135752048835756991488004573545053885341272 -2.4189892477921981854811129441552344885240938783354723718375558 -1.7775167548798040118890234038326229924744687271139998454776843 -0.4241829293891081899922678301755910715540907395625124121761247 -0.1038380074317494048049907523405053755295489995842381075314565 --1.2965537906072155524972791052589306882362244422073657293700333 --0.5283911412462067899999056516336334079083576182803047274258519 --0.2224533490543981356219931532755048524199969858581489118386891 --0.751950037811322977458542749804850370911332157714672905732093 --0.2466868657903929292967002412423077742002264725402224645064684 -0.0331856060438874615740722013953724097475003970959583003168772 -0.0978247196989879703824453355738123856545981592602134896107468 --2.6140992826669572604577639143554875522639365951636839185690531 --0.5378964072759764849117246449513042911880275752546990238490153 -3.0711639566201696731673751241515943647374333401069544653213052 -1.268933081369882067777955325548277168778826467395104713411203 -0.2802935854637928679051704317867838790351177370669912025617276 -0.5257214095190079053218036462182650687176946979793755871827127 -0.3297678670086208860013783751417353494191693667863773938999074 -0.4655591392092285251663239043352597976741137337424156024266062 -0.5804040257306114150110534290282428984274520256453818600844901 --0.7506583690020524446588088875273240310326407865758893936694943 --1.0771271469779249272010566931228716019998211658755245932798969 --0.9039104302752945324401651287148193069236913298931028478804229 --0.2218122643321576663434729088756209831440786658626224825624125 -0.6134620163800192542079853438461485466545482321907007261480465 -0.457603520477109072060260540876341878914673706874063120828496 --0.2688394165303559118093202766456732337405113924829784755848585 -0.7586234716117726279810191646264998175105664181177945707530102 -1.0362436177023308038443934072478551789638639257214733854198522 --0.3207403097000605203624868814261728813207917158854291835457632 --0.1441052998495796895528288223000780177410219328346047680520723 -1.9152087398450571254892343913896821956814195540176929212438854 -0.2047323993444084705239582040216902471613152900217836302735975 --2.8979955813215103614998529648101129597640297520698974348077041 --1.9795332306044605181324414686245928892577802195409760868001251 -0.5284404328310819080021140255039256690363039696510002808076599 -1.253106299642683723546091739139736388367534376314609738205217 --0.5708375485926199839599971575636516573931078970807573273683642 --0.1859552958418944435583199860754283089771050609762025863242652 --0.1754580268457383270258857118322484481887601315730488901544142 --2.7889440891856226134293901390181335220948078909400240503188371 --0.7487718402246906216288779368170817418750484892471859381201378 -1.8814029280267940890680344642734359922666358140785500116457881 -2.2228522489051213783198574143059075958380980023457525436865559 -0.3180743092424882295812603098029851336749365435803533197526187 --1.3278513765927883800854003679124085400675696274245068124263602 -0.9016394525595105053696561571354867782554701530841401694389326 -1.2406539154715983579514213600185638836618911354522674339093423 --2.3759375641412971378036532967432209726901782233807992183926012 --1.4097873502771349992299842275530751675903238134032469810036191 -0.5206900900420010464909257004173932602927471308803170504574492 -2.5387470782583585515405844876372515142739635604089698840008029 -1.0006539992733959151724490011233648587260499354109104811866999 -0.3124334840383176113279986386917531451422720215423676690439798 -1.7460887579402664586708594348692589096466918360711993212556001 --0.8729751865202843897173950898459366702386802460599321832425034 --1.4540818568665147839359807567909653441246940435908424042646196 --0.9110196670604731150799250319312329668441515180246817003279859 --0.5859458364758688532870109419271376413129859587185591954564647 --0.1914207402138672034383740344205278594429585061956000140326472 -0.7211445950921926600649695636754854769498158712147149114862769 -1.9921325936578647038849555703694280381741849697701097762701257 --1.6593877841547949749951248590133830682996227076030592743327899 --2.0585981248610550988253873933714014226211848655768589730532937 -0.9537435908837924441313869150846867312153473525478497005723267 -1.2766368942764610810848426484234400292854798105713355667710521 -0.0378479620203924478475720271870752204016786164391099959954855 --0.8892517042741312680976326319519580880792425723318132914904752 -1.0584751780888937705039838597672122922649095987329264346104609 -3.2935897292293191652449765524905395354901807985785961867173295 --0.3441011889858614812689287545518038140685583384358272147591028 --1.5807790442137829672029591520071881089053659175618423607052338 -1.2153938588141611219238636009847580793697733222645065501915036 --0.1992642204759655355930799414861547402320512647463144829945923 --1.5098512659040911375962603330473272250742623559127197127417964 -0.3432699354523655459732337225206641064685595319525317213764241 --0.5563367348575345553370474564628853255203370836869949368563128 -0.2819626033265114534236839677918271230386883422205773915465369 --0.916528317311498517252850930059026522162722445970828939805472 --0.6672566270267865796439306271273607736809168896528606400707053 -0.3400535718612533189508954597022441270667195662769633336339281 -0.5345330722768620148908174720547888397178812585142272914239041 --0.2587639801634846020826235587407872051979775935258864743418198 --0.8973556677921349915472394760897134511012538650120710636230748 --1.4679700483289246769050588753442738977745398656543176488020667 -0.6396969163341587905837381625283381931956433501271408026991445 -1.5602053131911399584603394343041132685403184164463149324800887 -1.4126856905471561641816009129950989453734842122681999800387897 -1.2747632983142395371131454209506893011674050467360154676956039 -0.9492717763911007208638220110679759749844341276253944582061909 -0.8068850797504753562929209977602083251566309864751768293112621 --1.2726064763053314378603712255261819334045044039267854447265262 --1.7806770215965857611411605343320917055364098206412613712726831 -0.7509863983430280539259461717596448439461173398699992739736604 -2.1362402590531146713679240554789116052543975480919897581972237 -0.5419324021670431976803773683568306273627188674950284341075776 -0.0206554023516779051099383209201531709500930095444246542256908 --0.763307055386274747048745667578547705768842382106712536132009 --2.1253144414892529189843434110498535516132641816040520491429137 -0.4424031138249129039547822947876797222603525602694932586238564 -1.4304025824917250618480108436679575332633618788368096679037563 --1.7655612648038264924137529835276212199520316392639166458407255 --0.3044747373862375475234604725287945853417074140091427619475491 -2.4051575776831382597826630537845839107398260380960824250098292 -1.1088854412138527772107668817053800338982050918002622045989945 -0.5119965395592898607881492142393223556523861402348086154258796 --1.4942990187878095252235333930804920522996706301657718110477874 -0.0361342803014835674837490527054118058130116632896966925240316 --0.3513522455915443087036136096303468482082278966887260296551299 --2.210971918099210232945082587317854335633100873195417192648934 -1.1294784930943829067763479799901300195424860429803843350906446 -3.1039070732614253725599484198379054406661210007760397583503791 -0.5159274460235603196756859255560939708320798603860647306064919 -0.91293581743145843854077719777201333073077004515868660966554 --0.7356846773104901049590836395522410162770235069917380835037734 --0.5810044248162291838255324427145774121689449702791688339247125 - -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 --0.8786687027770929787301562525828872003547410177701220950278899658 -0.1944979336074391420204691208780533563017707991268605634570366201 --0.6717069716036456017860348911350501039034020263227184271420653514 -0.1841240265716411858721923885202834145897392121583597644960322461 -0.531416327611542071221970089939764430329756625444579259583169101 --0.7793598342770851820561551396646691186537674923197586552161425487 --0.04982739811897050028189209963034074300557183166488389610036293982 --0.2152831478765442996690076717147867376683641103330644151579049018 --0.1430325904665435237882241441707630670064919508747748361914900932 - diff --git a/tests/data/nfct_adjoint_2d_25_10_25.txt b/tests/data/nfct_adjoint_2d_25_10_25.txt new file mode 100644 index 00000000..81eba49a --- /dev/null +++ b/tests/data/nfct_adjoint_2d_25_10_25.txt @@ -0,0 +1,335 @@ +2 + +25 +10 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.230402910644737899027368109577132641139999484424691959789185425 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.2472557826481684830963989449602703101137738953947821260330747 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.454917586626400190455113486728514743998772785129201763658322789 +0.201326401841226822499265144634803231090444660833635656408098582 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.272502449871235944005176337000832389787308384521685260378340781 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 + +-0.7577320649899768043476779289618193542773805281629940387718805 +-1.73015264181740758756616251053351829698363608098936977911847341 +-0.26602819711320196398892335313949272330444243278143829840690223 +0.19470878297413401347055142436289090821303824114232867718416179 +0.8922695967731001874438721294128672852823250988834419925034281 +0.33905058122044834457837800441514708952263207209956081214678425 +0.68579570493935420399502273795534294629175152217441856992132423 +-1.27828207134862851027697755662222215309678592274958341388469187 +1.53426130172378777762318545986513706513975413684366623948944396 +0.85401724560492171469995802433331525719985601022700789083870206 +3.60054779332008253941637500256572445689480624004961651480882888 +2.19054236483712578667755678272545573391833149608976289487631939 +-0.82032968732858329552869107008137643457042909651498396311001263 +0.26503488402703946700924176743275364860764117076122703404065179 +1.14789473937612812157081559958751615951127129025003986489934176 +1.02488006374181602551077805075822600755546597749205541667470855 +-0.39545783794035822063007193710505062091052345524769795616302178 +-2.31092833570966667045748815804624213797868044849926966988736143 +-0.29580396939410532193685716168192632398902221593128841958071358 +-0.99567172413591171719413938476716402212103449668887939508159599 +-3.49443986557223223388362898992166410593640820459759297671468689 +0.62546866516100900759536882140402130720701395455603722654533019 +-0.52045555835124392681345695131058715950040338259986733733353684 +0.9175625060499207514689129089528442096557188180385085842578834 +-1.11987683871254351421104084570594274184058465110288754734442617 +2.51232315871471724783557971281434585453786734204427999304599848 +1.51782462934825379889814750390061103233060431514581768375412072 +0.31841591034233604155916094478907417102045852005473803646470399 +-1.67144659417010596311140122800145860832782047866982064908326041 +-1.24790721170732654421988797015609057347458226962235765457386663 +0.47589722227689297642949194433487374954138612944754043222543896 +0.82749391826631540234534270884494930833121033771354944268057677 +-3.39607399912230247284537555966449621381218961656999111945891418 +-0.28174296344197405463890927691692156361775053415109317978446844 +-1.07426236612697546887370296676384819313187867086219049732815783 +0.6881838523267266860486626087284474951063405225550544529984782 +-3.77254090092494611381750390616363286429301882421531022682933629 +-1.03794824053005497157894411562124431805614491151999743365491672 +1.32465114481897276874303050585771025063793107509720093605805269 +1.92160879338602099977079856975656723941298872043373121629483729 +1.53146793551747259341329560713525578495552692110837256892663419 +0.08847904200386347600258064204796547794685900581653358614803482 +-1.95176470698572628271620758181069463946434711379452144000251435 +-1.7622810556781091876908609499338251001388530401673461844063545 +-1.9523620855231829729187395202497108683662511808704571788533466 +1.76116727736598303228562230510664670998058899942652474363927225 +2.22062417450245901819792857660886010188716506344998965128099083 +0.21815761497772307444790833576078665379343392099597671520648704 +0.55039215427752628565285098059797553238225967079237349001379429 +-1.0350427047855917174532197376193915900680024911065676983602164 +1.2589631602848881553134145864920078205368749323495000374690683 +0.13840998162337732591794758930266283894186774218375181945397831 +0.10721655925916404561091004709687760865533199329559594528368825 +-0.44691457896857544319066201403798420418438492568420605146237987 +-0.44627973712554447720467781341093198707349785522362763367044276 +-1.21766816160126629594352475524774481209997600134491865628034144 +0.30378575314766492249571586323162355993955636519281902690757964 +-1.63135065939812757891689548285204894281855573598835223686642984 +1.16569878190602385115683853320176591325366187595985543302551609 +-1.4731467269918020330411714828679169227840173732524039028305982 +-0.82145820570610162663801694939637922283847561397108537276835757 +-0.35132313071743729265911740440018644734951498424885648815917811 +-0.10994723089471332730863352055349092289289938579263684022184198 +1.42737161655216615161660120066281827264771322873045890077239909 +1.19569248757432296763744328259922468267701964735480417025694654 +2.08554650339373355115401361120908532694971888588867050040004485 +0.6448208685962291417831573886599809110590887766460605401938137 +-1.42564251511302219974854091526638224407246291706977657562964018 +-0.0266339099694500684705100693155146582139413217456593163288024 +-0.9712071342315687367253167400669758235742696216967184625401925 +2.05646310296064884929466235060348796066486264055856870969172627 +1.8500090818121557498986423239668340938114013487418906311961985 +-2.47583510541217941703906955725239761080991667392219207597061682 +0.48488118662411894460876254241641280449243749243480588557450541 +-0.93641903876134200337408877267169857309158344709337547592803253 +2.11397178916934620840152623799718072390245240785737345725701518 +-2.13241093142026849835217888427274920599988079121975710895769875 +-0.5640327679915874386050810453085639196263977209247766289166822 +-0.3075069026245230522099720776289884857289864385049093430420064 +0.2653013280860396309058532291538240569397954641379078178699714 +-1.8689045574374140726892880756309063321369904868404361783695284 +1.31347621158960407786787086022101196803276863153945305219289188 +0.18680709237580755198285998604717007993939638302481040504378497 +2.65680634208854048472233787509307726223803531635103386697986808 +-0.58460351936649615874842117011423666309925895080346075161132715 +2.19873099930948939637527802776882517796733957474899780401431724 +0.116586989764605478738607761475743802067800050506430730326901 +0.5185022950868069625138686165910105741731120518747305470571868 +-0.5570628720096754218063105273736931699761550634422353200656218 +0.5627241050631528878794592145599016713364359600152834129289765 +0.2172907231983201281294681897239540191177501237876530707859505 +1.22532494351534895062999793452178280491732385814005395021248317 +0.1005565912631120892615516972012859389561251213277414369163328 +0.64399455510751802930347374190095768724225590200006596322721286 +-0.1756636674482951387186438435730556216303114684130787187713102 +-0.239683234359567323947093681302771499198700026649991421558987 +-0.7725045664284122824322760317165501669069569426945902800899299 +-1.6550735410490775212698562080547022157763239859626673121011475 +0.2599676473411084481406271502404557144542149502639609858322637 +-0.750472732056610629898580658102368917962444455714343235836923 +-1.08775659404994142496487353137128028569601112462298991854725924 +-2.08292883822924965935934835961821879256139661716481601036153489 +-2.48525092954961227838180161717095956373035502206695265518453766 +-2.18796167808206671914826125383847197763090007418891045123260998 +0.35073635390619031418100239735417285177898617837928903228950368 +0.86841001988994031977320381191676120103028061076689578293196559 +1.3170153459622417051100817866458464921067548887864785989929679 +-0.282294518678024301340931425920456563017399588828587889197533 +0.2179513671149459854082338706839096365130066621912059188954573 +-1.3423501211230627706772557080528091307273136640021978536519572 +1.0686880872717134989537816405013262260712379062901051079884628 +1.13141237005148820303819029575737104284989795467384651211396084 +-0.0493031780407887676009308751118934069163750818096920998376396 +0.52027381235707517007963474468273047353882004803171755584276706 +-0.4758821989100698026801384742607446633853617818248374972194675 +-1.18485664716777245080291468436764857855512450727304094111716825 +-1.9027649482935478201937189261248038559091964947332496443497681 +-0.8274378520833607583953661155952487520574124951712822411598861 +1.1841413587374826931541610928910212188824193272990625340312793 +1.1188820473689628975917459584929512131361345765192420505387355 +-2.0691663604142501595367474899906211131257397402214157388657432 +1.00593828647735631436231353252275131770174715391898928222871012 +-1.5777050023470336743372375782202812623447484593938853675777736 +0.1385366845947055477061634695443838237525245991518728720485878 +-3.0185191011315461385288048454218899932214002449810380823356239 +0.4193722059954435222672103066133920822575692733325988668598555 +2.4502199959994042885659587601880570056330139368398585366889027 +2.8758630388490251453639026115960125760852989666406185234378041 +-1.0644416509975747744164580844711445595698051531223278097241289 +-0.5240083370832334571287646604284898483383989809330542627743792 +-0.3357124607673760803337581071871044682746840519118209464879616 +2.40586616924177473541177721639982915885566644190952346025139783 +-1.606576905739785863355683528764121962656657603335704827415361 +0.2814903537063804371074330276102432212041070502705592988896737 +-0.6873071548272088155872019529549773110775162229405190837824897 +0.9430382696612114008391265410379308550240649836491046846535608 +-2.3235341932067067421441803854451149269819588021432301825196496 +-0.201653757286732953074527197842066625088195146892487040533004 +-0.3129923188778511110981304738765584842914674943121596195843782 +1.0788019264591760509636311829012319613918439425331687812983595 +-1.8110705785124803522733479269828833110751503405259682290844155 +-0.34646819371914832487388540735164272291337471550812868693858117 +0.5939268386498115875142301997471654102142143766638318556964988 +2.3114525974243047650433108394949713823309291854572192748659516 +2.0487198117490757642737216080172533066532851780871577383119561 +1.368678045229427010536249264605559067869078621376673389553538 +-0.8914554053453114108798172704900925695661042788483397283811556 +0.1531877241341268127540052044682879689623471086847146254051191 +0.4397687279272226698488635773449075880726606386301025212261972 +-0.3283600382214791432445100949569219539682766381073951900983551 +1.2181569107962337742076028952991441911736171947543176538486761 +1.04473549901991621739083231145422867594819572421416964225316123 +1.8129548176330565796691929732459788024392531977210580534449517 +0.1214481028193964077853189628456633291747329424461153677223936 +-0.5697744629248411523306126959619214483217609865232966585535042 +-1.0094253281842095108281697973949606751725779595800824350171889 +1.3547473397003202903664276802371169287410002557966670246948752 +-0.5631329007636309751542352625044702359178855308546512149513548 +-0.5180063142566640844961232608738976391124788304590430957244901 +-1.6511791348643648645959480320627499579655335969364258171902866 +-1.0730959037671083739864598417279437469000614231997045129029039 +-0.30868554110685351280436606228996696035585596463205158925281528 +-0.1569604820206100070761102804167632576402937902043109715175823 +1.0635388715986703125999564098064273695997726100463974296893073 +0.5084909794294006019935796050204856431052134356788993734228447 +-0.1317164461488211845651246862589801799142853302455611960136092 +0.6611496298434709435994589070922837169776915138432627507973685 +0.0987665589692177677705125984989989143640655970226379503862658 +0.8968777979932663998326657558473919978034460597621975560479402 +-0.0493457844201914706470662626274086260656618894035683337107413 +-2.0802213103277266192525701364244062775461250490855728737439084 +-0.2855752463223918048495234254156532202343697827568639375636546 +-1.5587535552901244724048433096851219854150401577776541408227687 +1.4104511540767346814989893218903204781400852021312692096325785 +-1.6153580243217736784832732138031298164566152570243226284599996 +-0.8574879776741729682028820297609887332804384659885899194170727 +-2.934799454963159673283742000685322781194427013919519948101638 +0.4227845785113752965940943829267605863028665658553683364318086 +-0.2127041813193705901982148832033820428932435788421120922546946 +1.4672515372661902198282543822174501491215731922882477856428945 +-1.6815388514966243353512574594020260181109108040167528372715581 +0.72838803588385714464924661369953863120139517319966613372306322 +-1.07771919050313364003421192587274965442954841624905241895278 +0.1876043387554223033183809665698730194473313360243431967096865 +-0.9676660373914171281181641864305610867387802401643042785808566 +2.5542725113991625378942997447389024206195346237561057180902504 +0.1449661532065629405946132601016865450098137872966577704486868 +1.8809845045617390010103515333506063526716935300243408606496684 +-1.1015952713568738900927886072341008261841708066646076649695609 +-0.8653766360297887229438570182680085606407020107710708661415643 +-1.1584602625381718925175730801041674207616927179409409975283295 +0.3501524057026041351388543933936247861258667350747636962369863 +1.1999292119414913112548604135975101573228918457162034357207825 +0.2671273833932259143815654781681706280603478268961530730586393 +-2.2716431639690854720257797187261807250001636973518243123828539 +-3.0623917484448861161338584409865689864580250930027115894043619 +-0.2196739909026920205826142886654764314424457337591383228848699 +1.1077202805734149775785298257787616887658380431177159374934616 +0.832877554461026690595499079436716159110463644977814749610469 +-0.5843612275934452878589302035924472442120793885270178991145288 +-0.2383873793701019012956606095882379218827554874505670699082121 +-1.233767701921323739873491859338175156343360434284881954066514 +-0.3182134392807308785567013662919087901247660569828573800387955 +-1.2883583120883061063864965476602310399983014440090416670520848 +0.3550778790705687997788071716955982242757378670092437536988355 +-0.8324848887568550996113241617818313631702851089905027785893011 +1.193040173765821233278509611548019905736346418575568690082048 +0.363771939431837504519722638991469280795185377344959041472313 +2.8173209215412633263962962350786108098826984165711799960094693 +0.4446829129101932579562783634090349223951889990038238733995444 +2.6035771621041890496983043855161252157435491596321040303872601 +1.967236620143267796095443896865305173750674995015582716994238 +1.6515401942127628315933012014648336409912056662759772469973323 +0.7229157424671962300558856612072553643920936983768087720549724 +1.1342965989431097537531759135826998643271410700543141741935308 +-0.3528302488067111179605925581252664709854529323139049440018256 +-0.2021288372227882738884067692241256639850915319308103224403702 +0.4210239951823448038602072008386632877801056442216172695412085 +-1.1367388295283506226442222724222321448858604447446873424030624 +-1.726699301461316429076925309370349455526190794430161186012553 +-5.1316767252255852849873232460466468201216317037879832525066733 +-0.8277653597199992126786137858637227691024662613486273279592634 +1.6608572260437501319152738715093029881531751727724033581486485 +3.1972943269171904870565307445527872263239058946726089216906866 +0.1516605237039555101879436442701032138392609860022255881825548 +-0.3974830519548367915587597202969573411121186045982111302522989 +0.1701187867697760417141889478030724744442974250506082825970541 +2.0117195869967339250364488863041363522133792492466387378145809 +-0.9332979601021408948442739344841084980707098101038138524486246 +0.5149726107184610002192344180643190673312202464871932208984026 +-0.2639506413352250727310342968017711082986322091766100925248069 +1.7898366852483424360384795068746152479079259458515525678337746 +-0.4733280825321445148547346042260546481977787968147112880683453 +0.4634485025591961524316974176510814186537192516393822088320204 +-0.4333506663536367298222245381572238915672921139979218335600869 +-0.9040946377664563720590227141943015047527118963096043600552933 +-1.2315194376935952640381531697193903292618688622163325797521455 +-0.011495043645941431858199597935424973465740476325149372352315 +-1.0910983818968519247160403560716228764150935986275077597089595 +1.5677376473730116730142473458233845473443475361878736432979265 +-1.201096858840702597739705573287804496737175590907138931471445 +-1.1036042253249558718907064666880600476088145569023658295969154 +-0.2401460632626733525929600576191676830365289213147221711415729 +-0.4154479388194360559786210924175714670671439490634144620282801 +0.8984754564376434528861559325401934201094134639005516557769127 +-0.943285525786952453324490627482980998873010653596597426751831 +0.265681418929817139637917187757085090064741026043308990356392 +1.7363755693733132955274500633744157540308382683894405210989286 +1.130130500448648732225425265481638502298349877454205668259937 +-0.3173668013443184890164391930392234184583480359640681390979009 + +-0.7335087736711041883089151876515694737975402817556229765975958245 +-0.8786687027770929787301562525828872003547410177701220950278899658 +0.1944979336074391420204691208780533563017707991268605634570366201 +-0.6717069716036456017860348911350501039034020263227184271420653514 +0.1841240265716411858721923885202834145897392121583597644960322461 +0.531416327611542071221970089939764430329756625444579259583169101 +-0.7793598342770851820561551396646691186537674923197586552161425487 +-0.04982739811897050028189209963034074300557183166488389610036293982 +-0.2152831478765442996690076717147867376683641103330644151579049018 +-0.1430325904665435237882241441707630670064919508747748361914900932 +-0.5458569288127476004682590208265714990676611459841400026017844665 +0.1856688150172391527088040246433169286752829500750590071977203062 +0.8193143821859564924477154245099351963436429074028089074430038904 +0.4604487491339531156973853721884505256237012331451385915640611729 +-0.8606535828683120015533980099014960687963233985081987928030018579 +-0.2028782443808202039078700152556584967073846417006795171717789768 +0.7727562160593342436881229708062656539223995010850938445718232095 +0.2216455512897554102911455213296037106714896153079531893725412128 +0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 + diff --git a/tests/data/nfct_adjoint_2d_20_10_50.txt b/tests/data/nfct_adjoint_2d_25_10_50.txt similarity index 87% rename from tests/data/nfct_adjoint_2d_20_10_50.txt rename to tests/data/nfct_adjoint_2d_25_10_50.txt index 581c2e6d..a8cefd40 100644 --- a/tests/data/nfct_adjoint_2d_20_10_50.txt +++ b/tests/data/nfct_adjoint_2d_25_10_50.txt @@ -1,6 +1,6 @@ 2 -20 +25 10 50 @@ -306,6 +306,56 @@ 2.1098290292077114744163133965104685821935823208549565167415186 -0.8847509184380256830994668535541604085298574024735849287486972 -1.6852037868027264533288869390668907004675205352468047937693691 +-2.7222712384675596755172014184714321951954037917198660164797483 +-0.5883727963207430836757870651571830479403908969371423096565603 +-1.9246513131360549020025285900551523548762411530002061273508262 +2.11267650077055529799074552085059165941788305124201938378324 +0.3091540993735140528521719885473024715154532991606070743511967 +-0.7858870977236834972077409456368371003391899437233166018144216 +0.4949123725004393423233874754254468565047492108863128686198739 +-2.3590765983205657082977714084821786581078623608154019375804776 +-1.7177718621427656973324274335569880540624279058125341532016702 +-1.4767518965686892367983602416101387020567813774046652503436663 +-3.0526135281591626964807913098364394669434228124375963849363892 +-0.9747275157676427121981624506426515516248983436142811160702229 +-1.1998542176982452946989205971488209461495284339419466538201345 +-2.1100208351935419821114855739801558783252375718225912781973048 +-2.2935061647152210608756525218899403157626399861082328039245678 +-1.4628574725034848604938976938933651776437307154675121563891848 +2.091046014318067164116124958654217381056956211253060542682402 +4.3702900766805183331307784358622489193508408305947925617681118 +1.9400303559881893592343547963777116537822622443715317615072528 +3.0741709115550413891437553142484481108378723416196441579613905 +4.5312648143854268166179480192278172229512353701299265397709579 +0.559869926724668360803330203291085069625551314315138252999554 +2.2727835704281034687745220244078217004867421847064444681376771 +0.8430482554561386995906724912319154074875813865158271409645016 +1.119290677913517722292291800329834317592180117443472067073599 +0.7339674802557780801488325325104210816119386006169140129330788 +0.6166915231421003366845693645060869978080589032125581090375672 +-2.1077912725410396213476562011680646249391532455495000163579498 +-1.3324408414200112599472632218251991904987368745504298988182603 +1.6191195848092531737015628445463423554448765441611359467145267 +2.2163167486666689372943457345114605762904278168198379032486656 +-3.0013088245710841264300755990228589273570744932882917962213328 +0.269072666463480637510988926230521957527815742442062622467911 +2.5242090777052325050441125536268576321524918221279930034115717 +-0.2543683615523161230981528549783369015941457479841671357986375 +1.1350083829318454481546544213820455782055808620236193170373293 +1.6317064725105080428020914197744967420557915810808055288860104 +2.1381116529015210537590481250697078800480391274480160094740718 +-1.1926889730854227024025705436717740071866772002263101623725184 +1.9312973968426291468059798047940762379347368105563430958926538 +4.0717592553463869321553160931448468253509585136193668191138342 +2.280937535870491074283588690354769299533406767624257319754401 +0.9397761523633327939709544960517070588079564492415359692918779 +1.6455828279268509361425149619632639055903581745633969005964044 +-1.5994553605422743104662997269226211407153336388504615540400165 +-2.635882481954187227082620398028696480007582425183474417161422 +1.5675669572981117618366016963830654987846839809657820574147646 +-3.0034750143399520798252832838352582032184246154772072410653796 +-1.5419177424960619191603737330054217507103742484995116427320579 +-3.5807759314589642642338996133235502820552100502089910709391598 0.7721031360269444536624854764846278079390436516442447307214583713 0.7113282365127787106295924505560767722199840055537543517442585349 diff --git a/tests/data/nfct_adjoint_2d_25_25_25.txt b/tests/data/nfct_adjoint_2d_25_25_25.txt new file mode 100644 index 00000000..75bd5698 --- /dev/null +++ b/tests/data/nfct_adjoint_2d_25_25_25.txt @@ -0,0 +1,710 @@ +2 + +25 +25 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.230402910644737899027368109577132641139999484424691959789185425 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.2472557826481684830963989449602703101137738953947821260330747 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.454917586626400190455113486728514743998772785129201763658322789 +0.201326401841226822499265144634803231090444660833635656408098582 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.272502449871235944005176337000832389787308384521685260378340781 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 + +-0.7577320649899768043476779289618193542773805281629940387718805 +-1.73015264181740758756616251053351829698363608098936977911847341 +-0.26602819711320196398892335313949272330444243278143829840690223 +0.19470878297413401347055142436289090821303824114232867718416179 +0.8922695967731001874438721294128672852823250988834419925034281 +0.33905058122044834457837800441514708952263207209956081214678425 +0.68579570493935420399502273795534294629175152217441856992132423 +-1.27828207134862851027697755662222215309678592274958341388469187 +1.53426130172378777762318545986513706513975413684366623948944396 +0.85401724560492171469995802433331525719985601022700789083870206 +3.0467757881522963938551120445412935963698242476501383816739021 +-3.3431458936818860368509748964906933865804947906896098337143291 +-0.4934602096499368122933394796674606442486843042242477082756873 +-2.6238841762713280921699676803003194348043932871454283842740601 +3.0398377282361013902429823336560618441885896698097184845532307 +0.4773753700144205551796597293897023347896813066657294916957982 +2.5248955688144800921738112384272665842625632360372134999224637 +-1.7370181855246459493848603194142283998897710555182046967159566 +1.7031348384973583311902115682042090014906738621032310127475105 +-0.4854135357045061148828126305763610289809762620083654115432861 +-0.1051742151649660631205484986954897115187454050853644114381595 +-1.9932012885305247895219719981582804907601818811832202820627969 +-0.8331447992615597776756752348239575494586707431618136995366486 +-1.9422286342712450583300392048995691360526630438305281852061791 +-0.6392940579031917233951991365052381920432090444937550165659146 +3.60054779332008253941637500256572445689480624004961651480882888 +2.19054236483712578667755678272545573391833149608976289487631939 +-0.82032968732858329552869107008137643457042909651498396311001263 +0.26503488402703946700924176743275364860764117076122703404065179 +1.14789473937612812157081559958751615951127129025003986489934176 +1.02488006374181602551077805075822600755546597749205541667470855 +-0.39545783794035822063007193710505062091052345524769795616302178 +-2.31092833570966667045748815804624213797868044849926966988736143 +-0.29580396939410532193685716168192632398902221593128841958071358 +-0.99567172413591171719413938476716402212103449668887939508159599 +1.41038428644823545118342480548949464120601880812097065927717037 +-0.62183141333795747290097091611251588338313094406933904379886738 +1.13799398837920987203771346501002267760255239643129702758965573 +-1.85182298798272513268217296530228862861064772742179690158107308 +-0.64260311290412495333855215983172629223453958590831677147177092 +-2.76364770427936304628595530014072800073213274308143977684057 +0.0356647434317094685503720733570084832966124822134152182454039 +-2.2993033837191009927912261020327706587869249979109807384036182 +-0.2876416916474419095643548889170007648972225598533435942639284 +-1.2205970338081790625685386617767904049711857573379045414771448 +0.9621122472869725100020913284487116568813223607664218757093401 +-0.1710214171929397102889533534079058888857863522710056822670896 +-0.8695939960019706747307156793815840080260396695191843132985755 +1.4817689615499325971038680356881658537802443876984336787296842 +2.8380722355329608929098570191351442464552139771698485613203037 +-3.49443986557223223388362898992166410593640820459759297671468689 +0.62546866516100900759536882140402130720701395455603722654533019 +-0.52045555835124392681345695131058715950040338259986733733353684 +0.9175625060499207514689129089528442096557188180385085842578834 +-1.11987683871254351421104084570594274184058465110288754734442617 +2.51232315871471724783557971281434585453786734204427999304599848 +1.51782462934825379889814750390061103233060431514581768375412072 +0.31841591034233604155916094478907417102045852005473803646470399 +-1.67144659417010596311140122800145860832782047866982064908326041 +-1.24790721170732654421988797015609057347458226962235765457386663 +1.42811529688099289882516050368002474049172044181506009313934228 +0.6145478197600600081235874350256477274789946830837510447284781 +-2.09424112604351614191829051897192424844801323517091639800868615 +-1.23270765982211140381117315916600010833921705320328694674362363 +1.112623328838290932914387688440538143283714894769448664152031 +0.8904962358401632890710806219443483539728410230528683839391937 +-0.4526520401565819309210725386637273671619212142493240599740024 +-1.6136776297695271846508464949431435243964902394802281335357426 +1.5520994043459350243048696692347827953569785196281078315155215 +2.5397082649012971914697816304442019015994313189551970084692055 +-0.1753930352901424137610140527360169331847741365584990267492862 +-1.3876419078822528345269754899842188375085265275086236949780142 +-2.5034552646062173276370812188569207592949594267723298971728157 +1.3723217419129031252586147016564800307834093658726572994066603 +-2.1220966416654996524723469165142540348521977884883865614710504 +0.47589722227689297642949194433487374954138612944754043222543896 +0.82749391826631540234534270884494930833121033771354944268057677 +-3.39607399912230247284537555966449621381218961656999111945891418 +-0.28174296344197405463890927691692156361775053415109317978446844 +-1.07426236612697546887370296676384819313187867086219049732815783 +0.6881838523267266860486626087284474951063405225550544529984782 +-3.77254090092494611381750390616363286429301882421531022682933629 +-1.03794824053005497157894411562124431805614491151999743365491672 +1.32465114481897276874303050585771025063793107509720093605805269 +1.92160879338602099977079856975656723941298872043373121629483729 +1.02694635909826302587438721135699813862697096556025169165629982 +-0.0753620372625000958012528586841581165905424775920926619151771 +0.84161685892317644354220588727512238417632318820705960498957175 +1.7082682972506735093152458997092917129435511583485113830910597 +2.2954382347692532548647353622344728531174673269197490797181973 +1.5732408918813656074645812895340368525099204068488014548909772 +0.9867798107310622355369494477387163356571094627209863110658958 +-1.0507895943372550716251499353753200725293064356310332605472026 +-1.5997662765165290258423236361528388069182351096061754472263865 +0.2354734820481123666663138753202995079643829359468985580378781 +1.8646331941982646863148271948941012828422816537062213376564254 +3.4148930205854817839953039135735485940778718854034514152627817 +-1.6126895070847563687507787699546719415535782002398346098952691 +-0.0411921264409970753019340410232386390760326034396681673763261 +-0.5067913187012038416903472020929866425752909235086713395927613 +1.53146793551747259341329560713525578495552692110837256892663419 +0.08847904200386347600258064204796547794685900581653358614803482 +-1.95176470698572628271620758181069463946434711379452144000251435 +-1.7622810556781091876908609499338251001388530401673461844063545 +-1.9523620855231829729187395202497108683662511808704571788533466 +1.76116727736598303228562230510664670998058899942652474363927225 +2.22062417450245901819792857660886010188716506344998965128099083 +0.21815761497772307444790833576078665379343392099597671520648704 +0.55039215427752628565285098059797553238225967079237349001379429 +-1.0350427047855917174532197376193915900680024911065676983602164 +0.4032077307375204516862545847146489406043241553886213221937766 +-2.4408666418698987448836419823488652152994005259284554580127962 +-0.0590502584775873430264420091882565620142172332313004804791967 +-0.9112188677051583384066087232686214315901396815458605740748142 +2.0723544064888140674159941418946485623249404616262138575895746 +0.1504983873335104992884175805971538725589929415221647599929474 +1.8351823144149623926934935279591060807235506707408576779456566 +0.3285869807511513867827642725536455957654633167287074929597522 +2.6928040891313998025233949027929125306842621608805994673668179 +-0.3699163579130802351819672234446988775182086542297773329399759 +-0.2577676396735532390861304715354361585801246913204318946621836 +0.1778059815921028739540127815854122458221125911567978942051957 +-0.2293477312067283736160057155261536460278177938656344079699474 +0.7108381178436292837109233925798644865870246643007441200092451 +0.0164356971461698129066241247810055587225051535652336892194543 +1.2589631602848881553134145864920078205368749323495000374690683 +0.13840998162337732591794758930266283894186774218375181945397831 +0.10721655925916404561091004709687760865533199329559594528368825 +-0.44691457896857544319066201403798420418438492568420605146237987 +-0.44627973712554447720467781341093198707349785522362763367044276 +-1.21766816160126629594352475524774481209997600134491865628034144 +0.30378575314766492249571586323162355993955636519281902690757964 +-1.63135065939812757891689548285204894281855573598835223686642984 +1.16569878190602385115683853320176591325366187595985543302551609 +-1.4731467269918020330411714828679169227840173732524039028305982 +3.2363693151814810937924755608901348396290532123303095671007745 +-0.1194751352746897000933585741951283028355349436484970495343008 +1.0215724635906979698645226904854978173693990591190331690535002 +-1.11245704494936344834113696509935342307866850843394662425696171 +2.2192775762870966314257286587031285974507127932524968771212649 +0.1788442980688802449181032879291922815903497626962850438930744 +1.5449337789818397695777423308882584068210357924699256628232153 +-5.3420341195056616197292322708630069417165303912776781636785842 +-0.0242488947640986906937409781802285365006160031217836677759215 +-0.0490693712557359071500802302015674023483054462376806923175083 +2.3255279383022614576143331793119256622323721917869017664040243 +-1.0508720551738679892908909110105534238067967068142041905069351 +-0.6582871490460035469927212776764657265336393174558259151553737 +0.7936729738913895653050623352360026523205237914072873563493654 +1.2748562860975098287651714097260550960150877370450436949143046 +-0.82145820570610162663801694939637922283847561397108537276835757 +-0.35132313071743729265911740440018644734951498424885648815917811 +-0.10994723089471332730863352055349092289289938579263684022184198 +1.42737161655216615161660120066281827264771322873045890077239909 +1.19569248757432296763744328259922468267701964735480417025694654 +2.08554650339373355115401361120908532694971888588867050040004485 +0.6448208685962291417831573886599809110590887766460605401938137 +-1.42564251511302219974854091526638224407246291706977657562964018 +-0.0266339099694500684705100693155146582139413217456593163288024 +-0.9712071342315687367253167400669758235742696216967184625401925 +1.452880052758437912985125383196705622949445492006227723152965 +-2.3745772245028242420121795416111391905934026374262211683071567 +-1.6833635370512804413796809830869171304134218549040144633677168 +-1.1544283896340962557610306776499977293851161487569113685130101 +0.8373406734855221278751264839411359525392644645110138277177183 +-1.5153717459880079125917738203976415206129813403030526186818365 +0.6968751483688064589555133592387058679964492534166708805903472 +-1.5128144964893182695476628926457000618107323034081033719182414 +1.7424870135113298907210482958018863380460316935773752360615563 +0.2220344694568289809935245640823583533035880759686468999224604 +0.8423315067132770405748490371760327629204256107720963258532133 +0.1568457325201578128997807004356736427151047676716200674180829 +-0.9070145917341724522094601697582388897332797192310210616281493 +-1.2179881197195509307703580043481254172014977286552333698388671 +-1.5404985311034587624398373728299528567969948131670052689786932 +2.05646310296064884929466235060348796066486264055856870969172627 +1.8500090818121557498986423239668340938114013487418906311961985 +-2.47583510541217941703906955725239761080991667392219207597061682 +0.48488118662411894460876254241641280449243749243480588557450541 +-0.93641903876134200337408877267169857309158344709337547592803253 +2.11397178916934620840152623799718072390245240785737345725701518 +-2.13241093142026849835217888427274920599988079121975710895769875 +-0.5640327679915874386050810453085639196263977209247766289166822 +-0.3075069026245230522099720776289884857289864385049093430420064 +0.2653013280860396309058532291538240569397954641379078178699714 +0.4549730893919981284168925135154954590522454546061782164560166 +1.4304499134562099308743544944439542889939414522901371710455213 +2.0970703745834424124732000035314092464259378714410713593483676 +0.4098338442690447054228855214784321894816362489044428679368372 +-1.5213198482473941851523987816556805756175447160137220778880872 +-1.3533052338252547046290931667331685701207667319358473741664712 +0.0076821584264736892964994782030280272466810688872657612696705 +-0.0285313839059286550497776322021160740197847195329638220097114 +-0.6238842880976587896355793846203805062352649822083777007273515 +-0.4017701535678862381032252699863997607574958764545482471882755 +-1.3670312277848062290514943110694669855777426721949879617615535 +0.1903598473786465695828787666611632028154933050231524422293766 +-2.029371222109469773968529807117256426665336852722022669311499 +1.9312603163329930150198632942705230994736070943586763452558868 +1.4464688259926601757667237995028865633995992994132897230611144 +-1.8689045574374140726892880756309063321369904868404361783695284 +1.31347621158960407786787086022101196803276863153945305219289188 +0.18680709237580755198285998604717007993939638302481040504378497 +2.65680634208854048472233787509307726223803531635103386697986808 +-0.58460351936649615874842117011423666309925895080346075161132715 +2.19873099930948939637527802776882517796733957474899780401431724 +0.116586989764605478738607761475743802067800050506430730326901 +0.5185022950868069625138686165910105741731120518747305470571868 +-0.5570628720096754218063105273736931699761550634422353200656218 +0.5627241050631528878794592145599016713364359600152834129289765 +0.6174815467698846622110370041602756210248390434552443989065126 +-1.4440352910997898644869066725189828344539889050571128495094229 +-4.2148558801275688283478083018610056096155321685521163011921349 +-2.5137895683566434864724608707171347639634590491252739563184627 +0.2438937723871658643629115094554391785868888280424178743572587 +1.1017528401691987130749980892901974602872497910929458290347835 +-0.623952926792224430591933643321536374543597128156856754927308 +-1.0957714498309134508132168588221552623755005980273082174933964 +0.3372612678926873284825136941184386544086277794856936569174134 +0.1330382634131918217700955229754789593056642791626260668884348 +-1.4984896709434127906836407565635031205989456388997540818177588 +-0.1135835809001635331920891318727443447563103965293650438226484 +-2.3132767434070103458465871350228017427518851772671410126532931 +0.9333768034506510793232069980230516571327959881939231801145491 +-0.4330417756096611803560862579241306296562374781844872715398997 +0.2172907231983201281294681897239540191177501237876530707859505 +1.22532494351534895062999793452178280491732385814005395021248317 +0.1005565912631120892615516972012859389561251213277414369163328 +0.64399455510751802930347374190095768724225590200006596322721286 +-0.1756636674482951387186438435730556216303114684130787187713102 +-0.239683234359567323947093681302771499198700026649991421558987 +-0.7725045664284122824322760317165501669069569426945902800899299 +-1.6550735410490775212698562080547022157763239859626673121011475 +0.2599676473411084481406271502404557144542149502639609858322637 +-0.750472732056610629898580658102368917962444455714343235836923 +0.965461853789557670459650135123895202195037082461790763346809 +0.631227001815153967246536746914785653645464971242020628568679 +1.4142947801060016609681452751597899977178297794350968365035043 +-0.7967411425333626097063580586753124901723866295557936204071981 +-0.1126674480118542688867881378798957999352302575840220600523452 +-1.2144708862662705406584839761229319620181064553436403168785695 +0.4471949707525937442185251168274445089712662995564164173614007 +-2.1101184583317717863504533350330888556683348786936410706766267 +-0.0405174518675681442447610874913448635593450618707892565819483 +-0.5336221058283979748770549645794079420975625860932892023537012 +1.4204695916829543512329380813818988639898414845209796696927645 +-0.0885033614660832531881830280776610519405353040535922602884726 +-0.3508499544372834838363498118660393398053496322350871847787917 +1.6366824015531664912565227138725545663302832443370583087404096 +1.1987851208948940396124371833506101339755525133365728629944665 +-1.08775659404994142496487353137128028569601112462298991854725924 +-2.08292883822924965935934835961821879256139661716481601036153489 +-2.48525092954961227838180161717095956373035502206695265518453766 +-2.18796167808206671914826125383847197763090007418891045123260998 +0.35073635390619031418100239735417285177898617837928903228950368 +0.86841001988994031977320381191676120103028061076689578293196559 +1.3170153459622417051100817866458464921067548887864785989929679 +-0.282294518678024301340931425920456563017399588828587889197533 +0.2179513671149459854082338706839096365130066621912059188954573 +-1.3423501211230627706772557080528091307273136640021978536519572 +2.1094951118117587747100859999746835949310058056793687861934415 +-0.4509378257573330411587107819277159404133198086964619894336446 +2.1946154730115384653069825978301565443458306190511456308163973 +0.2661550875444146406153321909769845690154952331165789045463659 +2.9105443907316056701951046773884324169531711473170161618992056 +-0.7298555485350964860061996231291698515707058161016685140463227 +2.3816069103582672579817951104246735661890847966995386431609364 +0.8403684503238861838531226336142384939127535613481838047920816 +3.3724493512376348843702046987309023648759723880222308808071084 +0.6656000217333963043652235120283666937842163817242806140356492 +0.7825270538666064781859893676526244389093260137534251484478374 +-1.3649616041630536021126808859614881547179163759728362191663883 +-0.0922999147012343166067785200292087224265119794529474568697567 +-2.3852041651514480150389196706760411631737525611059034023787246 +-1.265680338850421418374788537170660391179743512118848262196256 +1.0686880872717134989537816405013262260712379062901051079884628 +1.13141237005148820303819029575737104284989795467384651211396084 +-0.0493031780407887676009308751118934069163750818096920998376396 +0.52027381235707517007963474468273047353882004803171755584276706 +-0.4758821989100698026801384742607446633853617818248374972194675 +-1.18485664716777245080291468436764857855512450727304094111716825 +-1.9027649482935478201937189261248038559091964947332496443497681 +-0.8274378520833607583953661155952487520574124951712822411598861 +1.1841413587374826931541610928910212188824193272990625340312793 +1.1188820473689628975917459584929512131361345765192420505387355 +-0.0160347366112062384684655763595921905191072762610166698993279 +-2.4443374753036268330600599087290245871887621174347771377952757 +1.0476055277219375751806077296864602224991099791348734890487437 +0.1281752754378371184810634568666494747170469437157871750059272 +1.313762496181210652743044815574043682704116353846449240339757 +-0.5161683958177512450943954019879239285101164191479330592866155 +0.8285614343388504219353055596973712648406112455322687522615613 +-1.8116914202041593441716200470770583493150972707528807283077067 +-1.7276114638759764995219829157081259649868538501904288973516073 +-0.8434263353637513927283102758975231067213150023742046402648718 +1.9666276720636677612501512123415492885257825738132694212440838 +2.1980292741531599318573409168342455269625317886971848231067039 +1.8697864295092249464994488744412196072828677003222950351056066 +0.1049760740513634655681958554090392444566179657636638563028482 +0.1245954626524812852825257544871723158152318626110323173210288 +-2.0691663604142501595367474899906211131257397402214157388657432 +1.00593828647735631436231353252275131770174715391898928222871012 +-1.5777050023470336743372375782202812623447484593938853675777736 +0.1385366845947055477061634695443838237525245991518728720485878 +-3.0185191011315461385288048454218899932214002449810380823356239 +0.4193722059954435222672103066133920822575692733325988668598555 +2.4502199959994042885659587601880570056330139368398585366889027 +2.8758630388490251453639026115960125760852989666406185234378041 +-1.0644416509975747744164580844711445595698051531223278097241289 +-0.5240083370832334571287646604284898483383989809330542627743792 +-0.440246999195648497951484864366118068147790953631235752498971 +0.7858779338698693976109894703364385305937334582025979119823617 +-1.5596312177384610255115027745200668866486056919865849962999785 +-1.2609652819959169224454788551263225445373469961321999702069795 +1.2473331726462518749214091389591876586691679769744416039125973 +2.9616504916852546916041301304520391864620542198223027444449156 +0.2810702224266831980513987890974649637918591270353841420579127 +-0.1063036016252274827460643367028631800347067576640658972261299 +0.7831433836939284490267207564749760589129147694705744905886118 +1.2039904761425819114004742145956230850361284096292680467867929 +-0.9241436980554297387946690068659397365040384820589326004542506 +-1.1254710790091263255263059828219675554723671814774576605501587 +-1.4968860703876176461117840529382879571073217175343199211879459 +1.6157931524618083519117427276432844469455401265845547520236476 +-1.2148341240744009692682052334859157974312870440868457702783828 +-0.3357124607673760803337581071871044682746840519118209464879616 +2.40586616924177473541177721639982915885566644190952346025139783 +-1.606576905739785863355683528764121962656657603335704827415361 +0.2814903537063804371074330276102432212041070502705592988896737 +-0.6873071548272088155872019529549773110775162229405190837824897 +0.9430382696612114008391265410379308550240649836491046846535608 +-2.3235341932067067421441803854451149269819588021432301825196496 +-0.201653757286732953074527197842066625088195146892487040533004 +-0.3129923188778511110981304738765584842914674943121596195843782 +1.0788019264591760509636311829012319613918439425331687812983595 +-0.8951722993889600968418773993259280639144923380225914255492209 +0.6352273540160763215874464403757428239182758544482574057453431 +1.3412330920040238360526206970380669912657541129863572301178781 +2.1636927106494289148825238459000330193607237839911766776512345 +-0.6975183597526140232953355112762943636676722953645600897377317 +-1.5530276519139345872184440918478008487433035419210994710708345 +-0.8927221031322197798319814152416412525907085687960488974901734 +0.8044504730968071769242447314655574632806516953969926624274802 +-0.9881307730463918310386784115316758604153110977284681076247011 +-0.5005048011490915220294959315419466950825901150556962494501938 +-0.4073092701027189806736426168399389743629291167454782390301527 +1.710672949113489150528941097369468516638645390043187049639386 +0.281689205599508531076705453403184297555110338627670516233239 +1.1580208844772028729421915764529110619275062772402628746427833 +-0.7919438393373288380426303367459915918748838690355151436304818 +-1.8110705785124803522733479269828833110751503405259682290844155 +-0.34646819371914832487388540735164272291337471550812868693858117 +0.5939268386498115875142301997471654102142143766638318556964988 +2.3114525974243047650433108394949713823309291854572192748659516 +2.0487198117490757642737216080172533066532851780871577383119561 +1.368678045229427010536249264605559067869078621376673389553538 +-0.8914554053453114108798172704900925695661042788483397283811556 +0.1531877241341268127540052044682879689623471086847146254051191 +0.4397687279272226698488635773449075880726606386301025212261972 +-0.3283600382214791432445100949569219539682766381073951900983551 +-0.4634757615454625244088594953611608635647688795798835635252831 +-1.5703757201485487570886079372625541712980057993362008927164395 +-0.7946199349823895600461128535914054436186197619169862270409174 +-2.0914945695947843746889258278214037096453412951441666375070658 +-0.0131715604165891887007758712903455025577469077990230237244884 +-1.2308340075411514480200678217770951895763781600598327435157419 +-0.0171719574713513945330583835326385596087021999874360692730899 +-0.159570271198947178699846389293460594989307955974349806327362 +-0.2244709313726390311827765860533878441093512418145922062928371 +-0.3199360811636868041743931143456240414805038595720545411095182 +0.6212942202892450960450695997315597222354811761569161754130114 +0.2134282370077511698874794579898298379316198371029223213590996 +-0.6953154739061361699969546865901724250279093701209761511462537 +-2.6121226571625961409843887742097105980320758359163229648020973 +-1.3955313163648803461216716312735030797009020523250040093939143 +1.2181569107962337742076028952991441911736171947543176538486761 +1.04473549901991621739083231145422867594819572421416964225316123 +1.8129548176330565796691929732459788024392531977210580534449517 +0.1214481028193964077853189628456633291747329424461153677223936 +-0.5697744629248411523306126959619214483217609865232966585535042 +-1.0094253281842095108281697973949606751725779595800824350171889 +1.3547473397003202903664276802371169287410002557966670246948752 +-0.5631329007636309751542352625044702359178855308546512149513548 +-0.5180063142566640844961232608738976391124788304590430957244901 +-1.6511791348643648645959480320627499579655335969364258171902866 +1.6762419208225162372018290009115222084400016005404277892456838 +0.7912616885199968968553024856597377470146417285870374788392676 +1.7947112625543259158909742452425183984719719374007154659188248 +-1.8868938777110867992486257094911537359183969246552351494910478 +-0.4354017064479732529397568017299909020676995198337915137882663 +-2.4333192864031216735439778840634293061477084730123388914106501 +-0.2895470953495628545677715155540471141073297618359525472418325 +-1.7863170106412794315337879066260606817390826078926028544359803 +0.8740037981372383289152489035384692167577226164216864493421622 +-1.5821609667585716757823286715498142428371974924599255894759455 +-1.0288710155774744285196835450913763514729685582578026738625196 +-2.790529166320093969516692780403420180352699383219317278209199 +0.8136715710508152837181838204841246456689139880128136709746043 +1.9871541359105324693945355585933876830306028116358989953939838 +2.8353199778523368397971297789977471828067078366537855447953446 +-1.0730959037671083739864598417279437469000614231997045129029039 +-0.30868554110685351280436606228996696035585596463205158925281528 +-0.1569604820206100070761102804167632576402937902043109715175823 +1.0635388715986703125999564098064273695997726100463974296893073 +0.5084909794294006019935796050204856431052134356788993734228447 +-0.1317164461488211845651246862589801799142853302455611960136092 +0.6611496298434709435994589070922837169776915138432627507973685 +0.0987665589692177677705125984989989143640655970226379503862658 +0.8968777979932663998326657558473919978034460597621975560479402 +-0.0493457844201914706470662626274086260656618894035683337107413 +-0.6719984410945127163007953734880717808515847647279563185170537 +-1.8533902557567496168289183442654866739780520313403013310529952 +-0.6878994113099225326660828596374375085167808014027520769053687 +-0.958864349844867341039526725479809110284974012892107632724698 +-0.7383853094008856894593039855290207738377478267252931169534886 +-0.3313426561395630645985902816718522331241789732030525274540272 +2.0427756575298549329528150132963733063361261897041877373386297 +0.8304643060715809109446738130466367516296144905185474829394812 +1.6370823694913045954936271635259182753257574760189885032988607 +-0.8341141532933633484156985335160021980988105625851096694655676 +-0.4252796998703614643721087850598449525803807156214948238284738 +-0.441032162481787731100832886030592762459390952716773558891596 +0.4823462828840902759878133128975427874773115582707662743534942 +-0.2464798936508325761392294273264966352307321006517652980329129 +-0.4363670958179414526619665961918169384857954947864827635981547 +-2.0802213103277266192525701364244062775461250490855728737439084 +-0.2855752463223918048495234254156532202343697827568639375636546 +-1.5587535552901244724048433096851219854150401577776541408227687 +1.4104511540767346814989893218903204781400852021312692096325785 +-1.6153580243217736784832732138031298164566152570243226284599996 +-0.8574879776741729682028820297609887332804384659885899194170727 +-2.934799454963159673283742000685322781194427013919519948101638 +0.4227845785113752965940943829267605863028665658553683364318086 +-0.2127041813193705901982148832033820428932435788421120922546946 +1.4672515372661902198282543822174501491215731922882477856428945 +0.4454749209513197672257690188188907277228128422599239842615333 +2.1812654381547080824785541651074109928587644388764482542539824 +1.6364985457588533932568170297946790289868167415551664386808278 +2.3851837432082029208578462339528758442825774392686635079278105 +0.5153888260759311171131894680294719864799733176324956456931369 +0.7807502934388702255589129119665695932380804008791711734613912 +-0.0485012152132188568754876486777838128896828401488485187144377 +0.9142484121798053080420529871647558364261233445727707176196123 +-0.9496920759491344805943151203698325673126134911523490362972269 +0.3301335841711816643841970156457997173492331204944870963395017 +0.0428721743711310197590723821246565247044265991055867860624619 +2.0793681899331846924366362862115077333405037134780907974508119 +-0.1209013542606888935455696268621714595356789218025849780219662 +-0.3359587583543618139633686904451130534971382434443911381530448 +-1.6565195977816099525059701516514037387065623105810830105189262 +-1.6815388514966243353512574594020260181109108040167528372715581 +0.72838803588385714464924661369953863120139517319966613372306322 +-1.07771919050313364003421192587274965442954841624905241895278 +0.1876043387554223033183809665698730194473313360243431967096865 +-0.9676660373914171281181641864305610867387802401643042785808566 +2.5542725113991625378942997447389024206195346237561057180902504 +0.1449661532065629405946132601016865450098137872966577704486868 +1.8809845045617390010103515333506063526716935300243408606496684 +-1.1015952713568738900927886072341008261841708066646076649695609 +-0.8653766360297887229438570182680085606407020107710708661415643 +-2.3585379768670899331001225581371379490023641068100979256899836 +-0.0412628742884589552865089305594490942342106636423646634198723 +0.1861129486451451393465280133751113768697069172055231363929777 +1.3108361623379505443993841799743380447132034669982165404786182 +-1.6666553740105837723523289779669891705999495985148655559393818 +-1.1357689502343775765611013910789464871071027386361301540394262 +-0.214822124049257189297360437436995351629149561353027591214944 +2.6321605918008282190773548454030353572595236403621430192878392 +0.8404810778630693416344848684570108694903045849881298527487015 +1.4865524716655929643956397835496876487583362268857650825564879 +-1.300104287600193175917313341240672187645330743399690586449083 +0.3237537132086336934776435231768367124876519586240173418277249 +-0.0748682446410998053127398119685465654193449810649610799429766 +0.9669854015644203706659517890503192988812103683357482873725772 +-1.4701588209875727545916120500276052506788218750702347991527398 +-1.1584602625381718925175730801041674207616927179409409975283295 +0.3501524057026041351388543933936247861258667350747636962369863 +1.1999292119414913112548604135975101573228918457162034357207825 +0.2671273833932259143815654781681706280603478268961530730586393 +-2.2716431639690854720257797187261807250001636973518243123828539 +-3.0623917484448861161338584409865689864580250930027115894043619 +-0.2196739909026920205826142886654764314424457337591383228848699 +1.1077202805734149775785298257787616887658380431177159374934616 +0.832877554461026690595499079436716159110463644977814749610469 +-0.5843612275934452878589302035924472442120793885270178991145288 +0.3933381180489864287777795893476608321415899389786359185129669 +1.3066721805030688168900423192707466065110065409520519386633783 +0.1925049613608855624076518980284363674226256677484944739751843 +-0.1781577799340928165926912311984094687873739219600952129652407 +1.9646393555387542019373451379040248318662146867698546112958654 +1.8614629722437301007099111162495696810395187592155909360933014 +-0.0577492392554657366271672544713454504438634270585959949135938 +-1.7606423593195444503649878586094928203130063091686407667524565 +-0.5713751526016024843317451687393255937158862886922194716845352 +-0.8569656518448601979731505193501395063895741803628713600012661 +0.9806576843027011402427071861970428876339318586678226844162334 +1.4263769356068687008451972553728421767928052381340617119959712 +1.4646650705834365279538312056366195207861254800745266838915538 +0.5356458808636467234865603746713514466596722175035288118712808 +-0.2947863069185531458730750905805020735509181980242658725629563 +-0.2383873793701019012956606095882379218827554874505670699082121 +-1.233767701921323739873491859338175156343360434284881954066514 +-0.3182134392807308785567013662919087901247660569828573800387955 +-1.2883583120883061063864965476602310399983014440090416670520848 +0.3550778790705687997788071716955982242757378670092437536988355 +-0.8324848887568550996113241617818313631702851089905027785893011 +1.193040173765821233278509611548019905736346418575568690082048 +0.363771939431837504519722638991469280795185377344959041472313 +2.8173209215412633263962962350786108098826984165711799960094693 +0.4446829129101932579562783634090349223951889990038238733995444 +-1.58367169373324206663054064593044898014508598290881224118244 +-2.6362418129825010229143912114150146861802657451080306662521305 +1.4718575180644804780829431609047578612969637369185594059881465 +0.4409005573495926439722367119340169381206634676552610233552819 +0.8645857394216554710277754697854334483248300479944290054592269 +-0.6135310351318541576991734406673194745699115895756145219534086 +2.3934639157616293102202686699343120688909613852002612012427713 +1.5977653112997796766435294109088025912269871401292388657617753 +1.0701710594009841027417807642072760396774979802120257927453036 +-2.2833192032203900035040035918494388852352786966449370709144294 +0.3993383359970853502200403613918297443188566151887788392981724 +-0.4453124008983413330719619139645856955189332455513519726762634 +0.7549627970850097429386533848890556377658343433303363953755306 +-1.7234311844550916160070029518519180754551039078227260341597005 +-0.8633202484834761398595517474290825766586804001298412512742956 +2.6035771621041890496983043855161252157435491596321040303872601 +1.967236620143267796095443896865305173750674995015582716994238 +1.6515401942127628315933012014648336409912056662759772469973323 +0.7229157424671962300558856612072553643920936983768087720549724 +1.1342965989431097537531759135826998643271410700543141741935308 +-0.3528302488067111179605925581252664709854529323139049440018256 +-0.2021288372227882738884067692241256639850915319308103224403702 +0.4210239951823448038602072008386632877801056442216172695412085 +-1.1367388295283506226442222724222321448858604447446873424030624 +-1.726699301461316429076925309370349455526190794430161186012553 +-0.7272315808119977564911213390531309800496236892161740670998474 +-0.0636260931562484869562510578595822639874758171554625690632807 +1.3914679493837443211376077161042550916854211663995088489633213 +-0.7163829894359453459189295341231180347490731206414557858520579 +-1.9209657595707845493424797837553535794217987458390203060828636 +-3.9718388355291256438242391223355647895202327408653426061711483 +-2.1529887469666377588344136108995416922721746255125643278138518 +-0.2866531985635784518958595862487392688920123120747193292219823 +-0.5980222218102573407848110711274467505640143961656827160196915 +-1.359689277939061229248108575821135284397324048297338130776407 +-1.510079457932375657414151989891117842539034509620064227723424 +0.1678413445622343459649930006279997168414654667762644406826001 +3.1701904173571038361412746554154317863504655983605444811296619 +0.1731070261609580937974749112440505879452350707459877502974109 +0.6783995976291899383021544068105119721455852303328260517568992 +-5.1316767252255852849873232460466468201216317037879832525066733 +-0.8277653597199992126786137858637227691024662613486273279592634 +1.6608572260437501319152738715093029881531751727724033581486485 +3.1972943269171904870565307445527872263239058946726089216906866 +0.1516605237039555101879436442701032138392609860022255881825548 +-0.3974830519548367915587597202969573411121186045982111302522989 +0.1701187867697760417141889478030724744442974250506082825970541 +2.0117195869967339250364488863041363522133792492466387378145809 +-0.9332979601021408948442739344841084980707098101038138524486246 +0.5149726107184610002192344180643190673312202464871932208984026 +-1.0986694703188205832586426397824940264032152193075451056813854 +0.8058091088373646929268461311880923954417765049318305100728663 +-0.9119866635014890986607308913596577615565796723568079937956381 +-0.8654921645049627129856973357038500160862428158328657968461023 +-1.4189547206905420119192530893845392833668731430819030689548738 +1.0028080436017946069057940798046826558633168952062920400072928 +-0.1810799435294405741377946540159235225741565952936221231603196 +0.6169812869668688223674449686875767696268131289982252934781515 +-1.6569657734458810669759294045267063658723273348510650957683868 +1.6294127841232256331119841316378929128935681179671990267070313 +-0.0956097678538209525518802619191757625086300152039577265906313 +-1.4344337436518287662789278303803617262162212376714109175509846 +-1.9118470751697188895246466202773044912351351512879612248629061 +-0.6520515301917244427975433690386644455682749575830867923181268 +-1.9459064744206184429180374582540603659540061685488524455571999 +-0.2639506413352250727310342968017711082986322091766100925248069 +1.7898366852483424360384795068746152479079259458515525678337746 +-0.4733280825321445148547346042260546481977787968147112880683453 +0.4634485025591961524316974176510814186537192516393822088320204 +-0.4333506663536367298222245381572238915672921139979218335600869 +-0.9040946377664563720590227141943015047527118963096043600552933 +-1.2315194376935952640381531697193903292618688622163325797521455 +-0.011495043645941431858199597935424973465740476325149372352315 +-1.0910983818968519247160403560716228764150935986275077597089595 +1.5677376473730116730142473458233845473443475361878736432979265 +-1.0941837134443542613868419363440778064025567689356181575816085 +1.4423327818693125887682086929270266404116523745618853712180056 +0.5724719284883453837510352526192724028971183148456639125011529 +1.4380123572496439211566519865486860717260400070344823060338982 +-1.4883813399253155480288092954335961326012839221823629678870791 +-0.9009789817986425997219939208239040369669472617782510682104934 +-1.6582977580944686559969986454469635161056724962717165779912907 +2.6145997773309686456393321924908310376831779174705496925756963 +0.1829616679995415148581504250853845863687151992084302382339139 +-0.9041389033232381401482319628323771948960647350810748982826237 +-2.5368237885434461381784288516304337190156872879552101624103188 +0.7924789589922853304344202543837952677867381457527135534928886 +2.2225123684856362014392864065005126394908320940763820995026068 +2.0146916401547605111345309173778508012546632081007706980042027 +-0.7272005467084469033577757496007719909320129724763109737720062 +-1.201096858840702597739705573287804496737175590907138931471445 +-1.1036042253249558718907064666880600476088145569023658295969154 +-0.2401460632626733525929600576191676830365289213147221711415729 +-0.4154479388194360559786210924175714670671439490634144620282801 +0.8984754564376434528861559325401934201094134639005516557769127 +-0.943285525786952453324490627482980998873010653596597426751831 +0.265681418929817139637917187757085090064741026043308990356392 +1.7363755693733132955274500633744157540308382683894405210989286 +1.130130500448648732225425265481638502298349877454205668259937 +-0.3173668013443184890164391930392234184583480359640681390979009 +-2.2804475792659943032235320983988223932879259764600607840910569 +-0.1709525550976124891459698217976411739231872209334490740296411 +1.8202478095132445328592053276883796238705738198404471153926244 +-0.6233136378772199529007068727808111702627067015928568968433741 +-1.2457416348872913445373724462815634141076452183961534149426806 +-0.4279443407439877998906919083731492887789932002923913446310496 +1.8023536454227842604281449605418159551300981247695258050648919 +3.7712592224025173222147438646435843361859476876156740376303768 +0.4817780655733804206650666802421618163990610304624843108916637 +-1.1160072982183982043224377876672870718236910107082497770438386 +-0.4976075006512694734490592723032430398437956983879274165195325 +-0.3728263034774459137639238699641581048452559533732466514267933 +0.0586103963198139974519621315849274305551574608734565685518405 +-1.4619124120022718277608425218469978276414539910735342728012727 +0.6856253082550054368417322879197376647693939141917844890514483 + +-0.7335087736711041883089151876515694737975402817556229765975958245 +-0.8786687027770929787301562525828872003547410177701220950278899658 +0.1944979336074391420204691208780533563017707991268605634570366201 +-0.6717069716036456017860348911350501039034020263227184271420653514 +0.1841240265716411858721923885202834145897392121583597644960322461 +0.531416327611542071221970089939764430329756625444579259583169101 +-0.7793598342770851820561551396646691186537674923197586552161425487 +-0.04982739811897050028189209963034074300557183166488389610036293982 +-0.2152831478765442996690076717147867376683641103330644151579049018 +-0.1430325904665435237882241441707630670064919508747748361914900932 +-0.5458569288127476004682590208265714990676611459841400026017844665 +0.1856688150172391527088040246433169286752829500750590071977203062 +0.8193143821859564924477154245099351963436429074028089074430038904 +0.4604487491339531156973853721884505256237012331451385915640611729 +-0.8606535828683120015533980099014960687963233985081987928030018579 +-0.2028782443808202039078700152556584967073846417006795171717789768 +0.7727562160593342436881229708062656539223995010850938445718232095 +0.2216455512897554102911455213296037106714896153079531893725412128 +0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 + diff --git a/tests/data/nfct_adjoint_2d_20_20_50.txt b/tests/data/nfct_adjoint_2d_25_25_50.txt similarity index 71% rename from tests/data/nfct_adjoint_2d_20_20_50.txt rename to tests/data/nfct_adjoint_2d_25_25_50.txt index 24b56b03..0acf3914 100644 --- a/tests/data/nfct_adjoint_2d_20_20_50.txt +++ b/tests/data/nfct_adjoint_2d_25_25_50.txt @@ -1,7 +1,7 @@ 2 -20 -20 +25 +25 50 @@ -126,6 +126,11 @@ -0.0958067706249842520987192932867922814116292834010301201881017 -0.3684997698331157747320084365405711585897235048777937429255546 2.9811856389267329325479166051634770927778283754138586373569783 +-4.3074437385896983807157941516773454490661131885416653673488913 +3.8816839004347100066155114178662853172085182670845636897663749 +-6.2606524560659809872860498852939233788267434414458900842350811 +0.1862298570719541748621059434344429191892298492936304514199565 +-2.9629268037552651546486292087220955011409172359889483480062542 -1.43891142524257033249396129670083780849998739028783879146733072 0.23847852450979237513482602692088441310632294670918834198570647 1.37125115440045893224928843294490330762894139603411342197131311 @@ -146,6 +151,11 @@ -1.5025951930597454050836829274660211016079393295498681332098696 3.5884478935356084614372907472074048075725859011460154000917161 1.8631930796364074813662549007956852546551359142477586827995703 +-1.339342218489567140351476926769943662047947506041962942891261 +-2.0332043451768840071755791105235983150370343824036219880635579 +5.8052579669624569815972490322751360233654544391178698930172892 +-0.0663226125628593284781006344973056009232940615649623043615304 +-0.9837394254238066024259228913927688710519309726258776982523684 -2.09669861730980949586090717823585483817864920025459957869861663 2.16893419567954363257656714612890455423873468516744928691608423 -1.13780951871347950629746551995585582561147312710432762585612919 @@ -166,6 +176,11 @@ 2.1209905589735978074399338158392651394624401787387255462676898 1.2861479301260643219680095316570755876412228002467010111621926 -1.6178303010828436565022498060358816162482471300910940657009021 +-3.482800375064251231427569610029429401693124185836129556590444 +-1.4384908544644515351811793273961652469388961573063596471054702 +2.3573709382906676790292721818602406303231243968779796032370439 +-2.0135872317197497773824540750010228138066024646101936316460362 +-3.5484432093013348268606629152306045285151582023372115716522714 -3.3492593752811134208945537345538007305121831359327825615449473 0.27469296101530391297726133100302203607945830905764474143947011 3.208754543275873563941803848022126636943683851451460682495122 @@ -186,6 +201,11 @@ -1.6386277914489392528812289956580623774057620258911792989799966 0.0825982103880040712609241154624133507261382336138959849360147 0.3402973430781222852418467487020582658998051662909073200347693 +-0.3647693228991134063155593926833675009587008706384959402797073 +0.8196563190495177857109227274238376998940255675227049690760726 +1.0604497280623132679617035131299592351233972957071245841012096 +-0.0670208125638537382331599742213139345899456138266608836504188 +3.9107889309890477600477371670862409501881939541944842706412613 -3.8327306126290769631061436100608011061883191552993772730173195 0.6139420818851361614153380977910068115520508963925910171087496 -3.2674948122252669236894827948950488657473483756852126322417824 @@ -206,6 +226,11 @@ 1.9495815695880203719592691397969898408563927743647598958608242 2.228135781772752469928936843528053570260346268544549896228388 2.2735114180637674739286251689956635052332697050653769965264563 +0.6201368402665753671366499312770971610768928868442439881016457 +0.526231473235617312137831016849272756336814728564928923270422 +-0.6610023661574263085303750616865214365036371036634939199033956 +0.8273244983175225009843197414425583504858274695090503294030004 +-5.1003646272046671712877441345935006299937722338400607809215114 1.2850835460471294902612963839964580662905684450589351363168695 -0.1476972974882451294145405158052198638063317116873266380171972 0.5750300412165891547008609515090434651303081976679191561557287 @@ -226,6 +251,11 @@ -0.5723372430529039898502072869548752033413451325324332133494802 1.8183512249271271037540444668526980276841369901119590712516578 -2.5465267595608932747428478492373358397407033915392577380015546 +-1.2058280848692682805061197400711349378079171228963829206155242 +2.294122846834053568255665543095226778183600438526166102233421 +0.973993274697643084030271832275708823975543199053815105610773 +1.1377176339848624252920170295232732585955507039820163271634179 +1.782303648377751803927687874126121364334355193937553116227016 -2.9696667238999406390253682769592973860539195261688049753693445 -0.2597024867639060406057588427511447161329790969752691010566913 1.1809470005576424613381127451185402413861197462036947681115059 @@ -246,6 +276,11 @@ 2.7712421150424027946466957102978748531633912941369296722738869 -3.4394335016017435261522425580618123938034483827709110839419394 4.639203188592559043120553103732545539210096564507701690758296 +-2.8033099613041392371648163769710694918688438661910770616593262 +-0.2916805570638142564395499902321973935296635503433682085485754 +2.1523829244369089921536267743184820354663023549257472361034251 +-5.5317301370031345843657803191619156766432367927971915906153457 +-2.2359521089855209474945440762665692476484173596032952046809683 -1.882968384959710233051318905436400378041075822045215520349633 -0.3082897041367398707341562924049490170434380111058175739472871 -0.6821704969461249925107483887854372107206363745494738095857624 @@ -266,6 +301,11 @@ -0.892414878447332957170938723832587628492659465704156784675324 1.1174646988977020167492691748319432348807911824707704885578645 0.2279411139034688888158511203458561094544433411342385286139094 +2.3143732856621314496417611021870662354983417757427826726100993 +-0.557506220365114320835894466750125820918692076024123961613045 +1.6776800520664732785571708162771554205944711786782672168802861 +1.8497291928791730539342005755560279413503470031339765519448007 +0.8184873625176134017232173909618930956403788563537283303830478 0.8891782070041834864649413924073931051636218788974242912902486 2.9988929075772324589111167027701303634531507963649241724050351 0.4991667381638754019973569280726264761991024009421507045372595 @@ -286,6 +326,11 @@ -0.6843053227467830073856995481987933497135721391735526377795256 -0.3064687486689322837777413565427439466296702019981727805180725 -2.5296917887293825059869163734447293191338474195772771041979871 +-0.1089512926199842769235842277985101634271701890338874147236974 +0.336990352535440304445808577579469559137862458867844982421739 +-4.9286661395004155568391380893169712232105783807316514184786147 +-0.1405136857150963815922264819719628174381727541323482604908898 +-1.9604478382212243964913025568612028408731041268686630883753041 4.8100495647248071626402766046799168973657870951525488705642238 -1.3525852523139365527327538290166382094920979811384688746255061 -0.8008666463628030484857275774992386183995080193341380730908948 @@ -306,6 +351,11 @@ 1.6563981270785187318290023808123848615230634281887972342168863 -1.8388244608312479513787515080453795839258872564915641340930199 -0.1146342601527075752235357892985085257301267295926254076241909 +1.8261721033252580487746113028087591239865625253898836932902165 +-1.5055735032130396069665447843980353903059081417292793024382563 +1.7196307839245585835298761674799196508206574991656477417899788 +0.3388861409288623223728767961544166076823716203306148049556197 +1.265586849191854135771365921615382122565090430092328341434358 -6.7740012602480134190454317705219903323873399771856651304039015 1.4253315437335164360227390532003685620871753063747926108870193 0.0366536660633618995748210861963775054334882327330451774883544 @@ -326,6 +376,11 @@ -1.3051566304035851356165591067679669072770336636089251408090045 -0.7006769679311195528166406901418030951847044483942994546965769 2.9782790983698321365938573332176612722457009540648188852417045 +-2.9491487067568536511353461618654442746959416670362658269125637 +0.6519592432212067123445517623266319166869240530112179860178731 +-1.3562361243242111474694406062570218554191938592155612281609326 +-1.6083116017078561714965291533530008255597886851564551885239644 +-3.3155508306310530500017826072937986937112237777304644602218414 -1.6845592841068553343617506716945323169609663166194164295757633 0.9574173028275138607677741687428121500774898102236710398217303 0.8210345146149058597342244544623191972248915549203840081264042 @@ -346,6 +401,11 @@ -1.4544145478566689394905872407036116513977406499025462736926455 -0.3699502807550975209671714093912161075906322626715976876995772 -0.2711001528447312123279961384779294494297029583561430585506687 +0.2754019519178579366442685351019679967125938991984932642663579 +-3.3005094361220635350202525805046121909649293215874909339237646 +3.2691558441902631952308737475640812339537078768189643887701431 +2.6399381591920664587729339768611665106270697175319623990583599 +2.089071188213900991982517622327471637230459828691959559920428 3.3781526536460115505092228812986008698822311549726745164229385 -3.8419629898844546575066600956186095706362804078562974101006568 -0.3735376492156487065141492698671786780791257691511280077174701 @@ -366,6 +426,11 @@ 4.1105152817630847996071355318248963248699222206286406021325471 -3.1337687907450781501632634353750853126010393861749823803794127 -0.4589794333769855797047772856251852112133814938692206928898217 +3.6445317778241764101905584625415857968277313865650796410708749 +-0.5973706473111059912240948053370756843924517930966993499583927 +-2.0263097619249667017498673719492074866675669606085190987328948 +0.9950362234087517408134330271573693224892522727510673512280467 +-1.4476751137004892381041789672048423202948477845510944238980407 -0.0310797048224847729883233814696322300704332272178451831124957 -3.2068294391109399287224464627935325977418582266063971166674879 -1.1836779372045746859444872001453932623103664072862475042652222 @@ -386,6 +451,11 @@ -1.0660581504554184643286315531428692222797994905781901252130539 0.7710394901769956627186472615264924796555114303492269467606735 4.3130761626083712762410445756862782739399755041975728823587237 +1.5760367288351584972827077435205027808687169105663430825064693 +3.9953314472320929883414600218636899919080945184590537157585903 +1.1928170033141654777111948276372346352671531979257072453200332 +1.3066209507467776246161521018543564770346830896552245056846135 +0.6021263155891069319407298368327813085150485141006389325164548 -2.9485008344940923268565857618493278410369773910992203024813339 2.4916203330680898524531499212575765407554668949496862077211229 -2.0980580409974852765554272113997967445370516987584223608547474 @@ -406,6 +476,11 @@ 0.0272212189424035568879747764060798919685319570444417066019122 -2.0434549297398711821303137428508032242241817658187199054322437 -0.3783063331283076031681778048943566263755948900428200812388984 +2.8022112113297374468348054417545696485816968493222486140736924 +-3.4206024106727753623857658157960369925622623781248966524975836 +-2.7819989969104779200183883959480277364647321439477743952507763 +-0.0082894713129875693282591393196392038707392467772552273762394 +-1.4817613539046898612567528697603331036201017133193393396087132 1.9228864728988767281402780692375516403829039665040503029677643 -0.1769097851275039971481820501046172325593609645657004943425805 -1.7037161402433195612109826079225400500336399027112419784363728 @@ -426,6 +501,11 @@ 0.0872035727231726146512015825450582220898135857162762043831339 -2.0442952631473127666059691338919632632783711555653293844863256 -2.1222590889788914466389751107865364673821291330252162067822533 +1.5889742312730037730985636675074191386975829605829876631186919 +-0.3467939148552858403036695365022807559853510863398981228260873 +0.4676580112286303501279412171759877597861722509855737689719215 +1.4569486079183823445123944407530560813783101034441760517750091 +1.962536027708323145506880013391885726297330397411364217032017 6.6167519796174632209037381740109590445016809115247767403358188 -1.3790494300808091798939502332567262636182073061907387476595215 -0.6657820457366500395019174883196161614931832461139677546214065 @@ -446,6 +526,11 @@ 0.5750633039147513543732016218869371075275336934343821496603051 -3.9868552305137048322274063012235864548108317492263936034327195 1.0821030492565883465672522768576519611751775381925222042746351 +-0.1581762541066501240156956885129055195385208319696226805358704 +-0.7072023951960681772928420252551135845425783794444184262632309 +-4.2669472161153346231476689707630534636624167891711058312778703 +-2.1368239497407701834106915162115802334543607271933445589271277 +0.4458608724663770748328579474407019276692891414654324128232998 1.223737863397634606542190456222201607360769712086725371345614 1.5327444763885425214588000299880421696741889260575206028415297 0.4728444142702825879575218539410277837804595844476242764386916 @@ -466,6 +551,11 @@ -0.992332752032129039608060913285662943294199912845644060139516 -3.0226640946510919649299107595669863608504412213481882681087624 -2.1280166647889370208038903969415772058592230422424294863529509 +4.5545978009090714345862712266665982593347276569645243438957355 +-2.067294116625418469758792921107667253067396619270031680969045 +-0.20318451289894848475826346792256308123175363625309316190335 +0.8198252530539061790664473441419842799647407921995740394057174 +-0.8893978049406172722208184796942603663425869398679687204247967 0.8933646406553911886149231035918500369255903117781677605007339 -0.2054582495104016491794191033434957594881752680231271979053211 -0.0282329722301437775515754244152976344246998928263564436899032 @@ -486,6 +576,11 @@ 0.7846399538546283756242431998206419885376519696262632609949479 0.0170880190184064531774473624478924176448444215678976579084072 -0.0373541578723710682363402235723216045584561029615321452047633 +-0.7473070244624094239816537046554488755859603993541877634819504 +-0.7056495928485831363855421276640088333722833979435088126790201 +-2.0441192674904582265963030674849766438558842533564996691098325 +0.0605331369911798998853606151261217266411395795983033957666821 +2.7574751568079513966809023609069016657967580519078925549355505 6.1354353910615298652036015359674496818240702875993786226123768 -4.3610283509290941064813833925233087567813742189061551018894119 -5.1992489641709797149234179741073564885284158140119665138433432 @@ -506,6 +601,136 @@ 1.3905944746377766603460311545347610039645505643720937516370608 -3.1223291940889288161989161028741746504991336047282309349724906 -0.320525380789017247777204717189441464069357524445488272615773 +2.1609146126322768105716865948020032618000711492402341162960512 +2.8763198222652859491293572320653160572930766731463258554473932 +-0.6589570680032721128905590970419427366063857648528470459161976 +1.2799528389873013175092289222115745125426248715980457203578335 +1.2531950256734706913067754699782020929944762225784736775839561 +-2.7222712384675596755172014184714321951954037917198660164797483 +-0.5883727963207430836757870651571830479403908969371423096565603 +-1.9246513131360549020025285900551523548762411530002061273508262 +2.11267650077055529799074552085059165941788305124201938378324 +0.3091540993735140528521719885473024715154532991606070743511967 +-0.7858870977236834972077409456368371003391899437233166018144216 +0.4949123725004393423233874754254468565047492108863128686198739 +-2.3590765983205657082977714084821786581078623608154019375804776 +-1.7177718621427656973324274335569880540624279058125341532016702 +-1.4767518965686892367983602416101387020567813774046652503436663 +0.242484170542100468246235743893375198500444442423692452966664 +-0.3927020996041144953720727059308942447969437020646370169783076 +3.4101269008045667716123644993755215754424981797359741163370506 +3.1313536393344848259859923541299920762274685127909314170110672 +1.85686026509466850487756467050452039343572262303105021727624 +0.6886148269871362533422531807726197326160549708565048820945306 +0.409268005385573134854669587489694998405476531595246490893142 +1.3229159602865814360903490456385290010285313600454982654846439 +-1.4159839693977607092690227480887224431764139083653196992256471 +0.2533960136654969607349774965150408716153527956082371285339447 +3.503819874534132745775109502105727504921923427158801048249171 +-0.7663078268502247594913395651440269956444165395688437018174407 +-1.8097039142022579255929442413098951959424700688154458485974457 +1.0870194912910284494126480097914338711803638282473463819898784 +-0.0914794664755422364969621382823263923709985035023456682169647 +-3.0526135281591626964807913098364394669434228124375963849363892 +-0.9747275157676427121981624506426515516248983436142811160702229 +-1.1998542176982452946989205971488209461495284339419466538201345 +-2.1100208351935419821114855739801558783252375718225912781973048 +-2.2935061647152210608756525218899403157626399861082328039245678 +-1.4628574725034848604938976938933651776437307154675121563891848 +2.091046014318067164116124958654217381056956211253060542682402 +4.3702900766805183331307784358622489193508408305947925617681118 +1.9400303559881893592343547963777116537822622443715317615072528 +3.0741709115550413891437553142484481108378723416196441579613905 +1.4467638536400504099417769507808268413840255118184264931794955 +0.5667233731585384507210665708357703046888413457250985387629763 +-2.1560294130516221658694137966437065372630626685843235244017778 +-5.031792186053437681403352388839689460799129170712214128567847 +-2.5065488640654106943828885693096342505002906731953277703992891 +0.1586258723667026962223042489888899933509618859479513836067731 +-0.1597697479819011784927160557224338939025073586294638838966092 +0.4207113491053605420428977864955213660960755084959493693968695 +2.918467803495361343691298832510681354102080348126772542914312 +2.2539902972942485697191753246637234786429487916772029761764939 +3.9127279624767146024501011443515141260689972238600055405219214 +0.7434583427890285166069074291917342577343101846603535955568141 +1.8786067221148432181431775396314879203197058566203826041145984 +1.5070355727339961979364189291140599788998471901077692180203281 +2.3062476075598882283823424072039214102272632485076832515074666 +4.5312648143854268166179480192278172229512353701299265397709579 +0.559869926724668360803330203291085069625551314315138252999554 +2.2727835704281034687745220244078217004867421847064444681376771 +0.8430482554561386995906724912319154074875813865158271409645016 +1.119290677913517722292291800329834317592180117443472067073599 +0.7339674802557780801488325325104210816119386006169140129330788 +0.6166915231421003366845693645060869978080589032125581090375672 +-2.1077912725410396213476562011680646249391532455495000163579498 +-1.3324408414200112599472632218251991904987368745504298988182603 +1.6191195848092531737015628445463423554448765441611359467145267 +-4.7765812261224038824232834292054295010167851118451577235169551 +0.6484866285665119719316688526253938762839793531042094216405889 +0.1870288634361875489019203577664903046603029061869692112238346 +-0.7317188309215682212758217363166730119259526177020191541483685 +-0.337522142387426072911073688136066158265096950141299364625057 +1.6342277518739816473353614979019380504605912313352312967347854 +0.144724500049113717413676102320606706125928192680307213039716 +-4.2067065436219578044525745137685879008475172189070765771354766 +2.2071627915993302011491291360033410147163860663052287734010986 +-2.0821851379298591927322584023822592570983283252319418405532147 +-2.763313697907532746336127813206209663565585837612149002646674 +-3.4923548474310342933902919053784738595515968564641575093140517 +1.8724044202882235634164843069536974950600892400400377772709504 +-1.0864812924290556376800961771977303354562521006295260329785291 +-4.2914853322588806814494165013811542515647499643830242798602645 +2.2163167486666689372943457345114605762904278168198379032486656 +-3.0013088245710841264300755990228589273570744932882917962213328 +0.269072666463480637510988926230521957527815742442062622467911 +2.5242090777052325050441125536268576321524918221279930034115717 +-0.2543683615523161230981528549783369015941457479841671357986375 +1.1350083829318454481546544213820455782055808620236193170373293 +1.6317064725105080428020914197744967420557915810808055288860104 +2.1381116529015210537590481250697078800480391274480160094740718 +-1.1926889730854227024025705436717740071866772002263101623725184 +1.9312973968426291468059798047940762379347368105563430958926538 +1.9670117655739142207685448494296934559337493744272621864132939 +-3.2337819763762080110372281395379514743194239060108125806194979 +-1.2953477331321296580527485491124494546901467786949343240814863 +0.4731330081794189325200515085462763505931638810910540593119505 +-3.798239610389947345875507721810159623621025174062775320394198 +-2.5271416920990355775838826316710004595990074652430383927944301 +-2.3540845404846128189086850628756728005526849001007170105223351 +0.3605019500819367403433627937929683369174888261446102488763278 +-0.8568394669435834953545335418980385964371464360300817988140065 +1.416477829528068561430323246253019461201835359096342465561248 +-0.3786611897980885404378092959824466690938433588916261192938008 +2.901819412856991152473470363254015094765527380985218631889102 +-2.6077140676276255241177920371377892107694425178241282952218931 +0.3101788528417866606361655207974319453882856761184348161879134 +2.8926012889257377902221997739538785686722404367046257251942606 +4.0717592553463869321553160931448468253509585136193668191138342 +2.280937535870491074283588690354769299533406767624257319754401 +0.9397761523633327939709544960517070588079564492415359692918779 +1.6455828279268509361425149619632639055903581745633969005964044 +-1.5994553605422743104662997269226211407153336388504615540400165 +-2.635882481954187227082620398028696480007582425183474417161422 +1.5675669572981117618366016963830654987846839809657820574147646 +-3.0034750143399520798252832838352582032184246154772072410653796 +-1.5419177424960619191603737330054217507103742484995116427320579 +-3.5807759314589642642338996133235502820552100502089910709391598 +2.6793799970645744751876859159956721207620712147826439661322729 +1.3498699557722256345050042585893848801382378329251529693714932 +-1.3928122155892328031082770190253148488423609322518412578479305 +1.2714868957176300610053664030486530125492175361323715822243327 +3.1300078419833737139853270931499507845584372134627699298576369 +3.193020230648207207902877060307962587109551869926112880990016 +-2.1653031950809993206811705548184707342196568603245396804311297 +1.2159602411326726899936532646389263951783576057359884672210693 +-1.5772418920930352044285501036376843809673784783793636481548714 +-2.6284952086859466793055508024286035104765501817338645193799823 +-2.883458369026502670406266543233163815169070059437037444152921 +-3.4461381236094483308444719759842565881078810936023102695237628 +-3.1261610310353664799737784788863590025056146463385332759101632 +1.0535823561750197514449316074000019414169393543576328164283039 +2.680315865093804742965086025907512656397450036601464046989966 0.7721031360269444536624854764846278079390436516442447307214583713 0.7113282365127787106295924505560767722199840055537543517442585349 diff --git a/tests/data/nfst_1d_10_2.txt b/tests/data/nfst_1d_10_2.txt deleted file mode 100644 index dad31419..00000000 --- a/tests/data/nfst_1d_10_2.txt +++ /dev/null @@ -1,22 +0,0 @@ -1 - -10 - -2 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 - -0.02045501150664698515444899608259832622778238194598181287024763486 -0.9401551428927267957022414807370223973718851691957439576252972471 --0.2612973453579209037151284175096642861921169860192733934510953033 -0.02064024103910974619444094927932620346955741162547603478536509901 -0.9939488506160911489389650693513789013109506369408951165937746417 -0.1542994539339733543335730199449084161763486165489462822736549181 -0.7828695683967973168186338933650258807396624889375162083366143712 -0.8196703465056007618204539469140589759950911405168070546332911559 -0.6316345452201721830125859283102821997036574445025868003866206636 - --1.16156918713850361883795203062585161614610934689753397271550432 --1.86235408562156250222689240593311746469746278321463473553598143 - diff --git a/tests/data/nfst_1d_10_20.txt b/tests/data/nfst_1d_10_20.txt deleted file mode 100644 index fce1df9d..00000000 --- a/tests/data/nfst_1d_10_20.txt +++ /dev/null @@ -1,58 +0,0 @@ -1 - -10 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 --0.07838835742104840389052756169146943544000206230123216084325830017 --0.3158305122954834491361879876118745635891842225287967281157858672 -0.3458309153991207858067077092337332970573207566667458110876416196 --0.01097686940732606761440422015891875954490441842087149586770120005 - -0.68716244147902512079974523579538391480435481181807231730553391 --0.3150590923715968194126307686495407722561409129255011455780857 -1.04268711057782317429815441135539350121975365764679695267386003 --0.23700681164539973801556539407207273201114958498953930164028669 --1.68360214776099286556833952783273837197910070965233382379469535 -1.04409559160086300440285189914058846482572207017658052072769376 --0.02706159389402769039435300178423471414014321652907330840638523 -1.09315450121088229859926975371024481501662994011785007318781195 -0.05486261324882639978593316562828737599596741061302271870214366 --0.14177559979666688078697893418022117744693226731728010309958339 -0.68628737912424474113015533366757704603008704581977187927549944 -0.5089559063389750799847428675874253569299975205433981647374483 --0.062850305040949923993353386792819184908313862674225683039164056 -0.64833778381708697957863223463628319444761853833367694360992983 --0.024896301839231760605577746867033741772704081393578983866697917 --1.207567260954058717164226285546983249554565638076909054751449354 -0.88238321973541567082378880341171368248885831730970178540152491 --0.154136107438982593928370292192691029587417837368080071874457679 --1.36657499324808147281178227420185213920858058068837644519300096 -1.19236098422666031738077831687478733389228944781106100339490145 - diff --git a/tests/data/nfst_1d_10_25.txt b/tests/data/nfst_1d_10_25.txt new file mode 100644 index 00000000..dd0d5732 --- /dev/null +++ b/tests/data/nfst_1d_10_25.txt @@ -0,0 +1,68 @@ +1 + +10 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.3158305122954834491361879876118745635891842225287967281157858672 +0.3458309153991207858067077092337332970573207566667458110876416196 +-0.01097686940732606761440422015891875954490441842087149586770120005 +0.2626555858903124974165091427737336367005240661151773835219310271 +-0.4833001744929688887627302318231007732586579925667420767092911497 +-0.6470889183313806476439784979725465604750285292906649332158905915 +0.9495591103622864735737804468916775971319894153057637661282509133 +0.1280772471342585841455757702545741213596517009855068302808317718 + +1.846799992182504891767561262512540488151208311006100310019473 +-0.57145998839628774068146419503779147682700696332281844973614152 +0.94312209315896705259860945638231118172743652276670712600394725 +-0.41924410217261897832462343414306340731406794617525523235290552 +-1.4308865714886017309032129732732269555771221119061535887992924 +0.94583498204126214085503674667451392569440861951246161248159616 +-0.04865337668021706272019768645887657161826689103814841300311111 +1.10723225163359862948446520082977856841779983106348209266284678 +0.35387080217848785800610599748756480148582102790772203609078449 +-0.09443966534686918150732722878410590483393561047250149389017814 +1.84742100719687049606608001257452873764338072955279071603827175 +1.39540428273692785491625747275004849338365926578261807238511329 +0.27801531307399367720960265473749731391823370592162256225446259 +1.78174106576437359726946439426647411965454037701870265807946343 +0.202376987369940758434304832907700063904268823735853139778237307 +-0.455129981049666362231903922180397539666111687319693932251822012 +0.71757873587115234939809686027709385148424742513636362671494771 +0.264295517549039876398207525451782199867813911418482656663949392 +-1.96335724153675116240224086163177404946060782897848329456099574 +1.28977179838766892441987899140721812666303236481770591848565413 +0.82076102449969499040844313815752330968071883334939116420907625 +0.261958872486811216134532333508805726681316324238528984553871482 +0.81728855061256610706030405402545579742179116571874432185668373 +0.08750779591015029281870559151719213574890669996491084352633699 +0.88928117008804566287144645248609190134170554157608209442517165 + diff --git a/tests/data/nfst_1d_20_2.txt b/tests/data/nfst_1d_20_2.txt deleted file mode 100644 index 64327580..00000000 --- a/tests/data/nfst_1d_20_2.txt +++ /dev/null @@ -1,32 +0,0 @@ -1 - -20 - -2 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 - -0.02045501150664698515444899608259832622778238194598181287024763486 -0.9401551428927267957022414807370223973718851691957439576252972471 --0.2612973453579209037151284175096642861921169860192733934510953033 -0.02064024103910974619444094927932620346955741162547603478536509901 -0.9939488506160911489389650693513789013109506369408951165937746417 -0.1542994539339733543335730199449084161763486165489462822736549181 -0.7828695683967973168186338933650258807396624889375162083366143712 -0.8196703465056007618204539469140589759950911405168070546332911559 -0.6316345452201721830125859283102821997036574445025868003866206636 -0.7051415661084367709201814372310498119360160763950294411494790334 --0.9186285185242277638228379667640336837252479527413557249796864599 -0.6059166146272276531659924142280879090009660941492851068272418515 --0.95114225448595864485771668441096849436578004346293095519883533 --0.6604794604223456380230982552803888415401900194413775997907443762 -0.1817134261437800570794256414315250650163873891461146114574620382 --0.8768399197753272524248224977827836246291177209791567885209025379 --0.2027179913470305147020813461378369947382030993314951020253012762 -0.1375057760993413749724126299163162462121619232755876011030820512 --0.4413098759704276115157486122940138778382450314554048934666388869 - --0.4318993466574751601014603449277504521128947944348488502359791 -0.0096529702037490407957367675498513534004690748427062485548096 - diff --git a/tests/data/nfct_1d_20_1.txt b/tests/data/nfst_1d_25_1.txt similarity index 80% rename from tests/data/nfct_1d_20_1.txt rename to tests/data/nfst_1d_25_1.txt index c2d5bc6b..f6418173 100644 --- a/tests/data/nfct_1d_20_1.txt +++ b/tests/data/nfst_1d_25_1.txt @@ -1,6 +1,6 @@ 1 -20 +25 1 @@ -26,6 +26,10 @@ -0.2027179913470305147020813461378369947382030993314951020253012762 0.1375057760993413749724126299163162462121619232755876011030820512 -0.4413098759704276115157486122940138778382450314554048934666388869 +-0.9286394390238346619050912089405834508747965422378917835718069263 +-0.4763986698707299918532811013155870587476071700798709986377725737 +0.2184244610344805776516307003112049282480936070481769173095132673 +0.5284655557490481515292532588784919125603831832265742904204270183 -4.8591328767153948066017370873646169670230164406972297299491461 +3.1220503135901907571273251042366420937741556190524805600867198 diff --git a/tests/data/nfct_1d_20_10.txt b/tests/data/nfst_1d_25_10.txt similarity index 69% rename from tests/data/nfct_1d_20_10.txt rename to tests/data/nfst_1d_25_10.txt index 42047c71..9504dba0 100644 --- a/tests/data/nfct_1d_20_10.txt +++ b/tests/data/nfst_1d_25_10.txt @@ -1,6 +1,6 @@ 1 -20 +25 10 @@ -35,15 +35,19 @@ 0.3458309153991207858067077092337332970573207566667458110876416196 -0.01097686940732606761440422015891875954490441842087149586770120005 0.2626555858903124974165091427737336367005240661151773835219310271 +-0.4833001744929688887627302318231007732586579925667420767092911497 +-0.6470889183313806476439784979725465604750285292906649332158905915 +0.9495591103622864735737804468916775971319894153057637661282509133 +0.1280772471342585841455757702545741213596517009855068302808317718 --0.4318075377384143568545338802271190633479492080951356210420096 -2.76826214881705495734159923679826712440440017699678544291652419 --1.10263592927676847811912948104406727821973073143106126917713594 --1.1151571021427263025313986052297805017187557754098655331367301 --1.29150816192129975032112112500140368640609551218145655875273208 --1.10542288234164913467227051511699676502619257431393238958603312 --1.69828350111249592538912674933516031857508507102421268134762712 -1.34061146799265684068995809084880391342759265997054452128645643 --2.4681029040808987906202888459616113397668329730551154579387877 --2.0527094890234481651959365700611706895219378356435796099948589 +-1.2753032914214085161303869310259785056613823196213938221461744 +1.3309571461233755718117090574920264836939956017673372235387229 +-1.7067700067527426631493501788270595804557375723400908311831481 +0.1130267461332983919029457364789964654164913409176889018234641 +-0.0444488576103850353618402892761285905866024717115654179304308 +-1.6997165097081011574341188210864995929013409789725741051529707 +0.0972433825492260161580040939380571427921817953121116096617263 +0.2210593082515263537573125227027265262728679220614044711449493 +-0.7144095237420791804743121380457421604746519754194335396080664 +-0.3569990306274526218705558972208147950142202791117457630116997 diff --git a/tests/data/nfst_1d_25_25.txt b/tests/data/nfst_1d_25_25.txt new file mode 100644 index 00000000..19a1f2ba --- /dev/null +++ b/tests/data/nfst_1d_25_25.txt @@ -0,0 +1,83 @@ +1 + +25 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.3158305122954834491361879876118745635891842225287967281157858672 +0.3458309153991207858067077092337332970573207566667458110876416196 +-0.01097686940732606761440422015891875954490441842087149586770120005 +0.2626555858903124974165091427737336367005240661151773835219310271 +-0.4833001744929688887627302318231007732586579925667420767092911497 +-0.6470889183313806476439784979725465604750285292906649332158905915 +0.9495591103622864735737804468916775971319894153057637661282509133 +0.1280772471342585841455757702545741213596517009855068302808317718 +-0.1946943926350927100029394214607870756382213566654573743676056718 +-0.8391269337210497321784330437702418478537689733296865638890089907 +0.09000979948494377602070534800332955914923353808674104151336312387 +-0.1766812336766545879148652249537685082960598655086779135604123172 +-0.1002499995910402071291914694552929590775602478191912580994509247 +0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 + +3.4265596673298184221824847987551516367532569783060659282857182 +0.3412489829848712771823772063130941547933031915774738613817552 +-1.0773687557259178637154367002911586112162870340373525890197191 +-2.4527734128868606055570988509648188482001073019526323565227602 +-2.2487952531618304572727835590460551978139486053530665527269824 +-1.0734592450862945151026020368599308561276243658074336488937 +-0.3976312730079341761618644862069163568723390706823081013193425 +2.2476433220858238037541515643456235543527686876159560791492325 +-0.2471814540507121184749639881094115607211548938469098762677649 +0.9278381046855355846754573280784220039667271587878578051281982 +3.2468966778144722295957502120461795876545224916174630526567653 +1.9077932952592562795945956177220349858885741715706135405493104 +1.69238033973859501704267763225448337063814609233055582210252834 +1.3055874479427650514023987737706510119577039079056141917013959 +1.52643967884737419171538298757064071737658391171671826333819841 +0.02739605993654886457714999302229647232210909524580621509911206 +-1.2306767204058529691447409562285003884369843179222392138646618 +-0.26779487812852915523894869229873026425143974372379031539624895 +-2.9930610036704044341572943110928452830381517661328477466820345 +3.9627401994105111141228212263799936501330383694747784066105144 +-0.0846195212177338695381464910965592154585551449654058000567854 +1.77793724919456088162957579651845368118503520952022872725512208 +0.7720570620904837975133072332623422641373038508779527597809247 +-3.9165015303223123549064111695948326181924545988058738953731687 +-0.6972947344169681747644853890093977851533368697080334766902748 + diff --git a/tests/data/nfct_1d_20_50.txt b/tests/data/nfst_1d_25_50.txt similarity index 57% rename from tests/data/nfct_1d_20_50.txt rename to tests/data/nfst_1d_25_50.txt index 7ec9069f..e866d678 100644 --- a/tests/data/nfct_1d_20_50.txt +++ b/tests/data/nfst_1d_25_50.txt @@ -1,6 +1,6 @@ 1 -20 +25 50 @@ -75,55 +75,59 @@ 0.2216455512897554102911455213296037106714896153079531893725412128 0.8060520707732849845829519568044036159880831172244051400087891596 0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 -0.0185137776595384085750711485679743736526843527583090284895784 --2.1590466948292312727528923259233176614534244959430740335439691 -1.58132815082011538640720182237449804658572759414391101232352885 --0.4008712280903681926996539487065809845913089201631010867740089 -0.22541954716294121633183538758986634518136442590399486537026134 -1.57614393854178856070239259163809631855099456430178636824191473 --0.06563451267256464359616938111710946244362634135774011779096979 --3.5156536158798769508877699598404301703562309180449483052044497 -2.3150994235827090730860903977583017348581155748810440084509494 -1.6028268617440695111391925170647611434194322950236036965089497 -0.0458034042911343541147626973802076393221206735818012276537091 -1.0102353978533224245697493723141734641461746678720482445740983 --3.30314495473281143083680457212886715922578901248350180717982313 -0.4425936227486223918847987651567455044654714545999243602240438 --1.94902457504112976766834585298862071418052039515626968799668763 --1.98700876801440489878818043916669695144243316158183738581932325 --3.4004041582041050750362475184068347437306561147739359514009195 --3.66947184143567952282549369090755268840065224479728265570615452 --2.54521534733995440856510328130691095370830411416673621446835494 --3.24225271390593919838482540338425260712110501394000362188639013 --3.64693415293453912768643005258701711019746295009215144462429559 --2.9339040932995565254699162425350620121884765312702656415714347 --3.33553653601393889665814697776549352008051733091822321673148177 --2.3350148699195907681408380932362078896833834233009181812080609 -0.9725132681576997994605333275050203778572593088667782135270661 -0.8467473060672513909257556381628700948646366091066785142010521 -1.98017102021564172847356649335201469573380763431039644786295709 --1.4311170544431416911693912646785281478450962265157085877713395 -2.12126809903934153906086063685054514051856284851715170530650774 --0.7733514576140788260900248175244324988945623680865218976157437 --3.11425209237024255700967572329889716865136509336505197659531587 --1.95952161287808005399096415508514477837970684741419037035845456 --0.3339584445901697942459940819282480356592448011256627647715576 --2.98370319024411054061264774862689635970852108395810201299425469 --2.71047979194881545070066259616951930017650831009075052516043332 --2.21026358836500419692824433300986994934490616061614667612304512 --1.4001149414866005377140036075632938131817352331407239724254067 --2.80832442264650874436452623825940226087425460364486353122824282 --0.12916042444153400950106805416213937461367796513383012153497767 -0.4999456108854195188909723229299260741014763276896523849992855 -1.0931948384450161440213069973613148449816270586293048526904247 -1.7096074869119833897399970811347152435946901214944570869144895 --0.3165081757388464841203045547966055247800394096329437505832796 --0.0631831778637149346108854811058016267394817258298118524505254 -0.2277415918156673856424096193188255502163378947488802003809335 --3.50737069354065148409099452666317049620617376609325434455776508 -1.1392535144701072161477262863816315354423185614211106925653756 --3.31779017815649427555526073831485418770424798036388357487266071 --3.20307005322924913551013187086130909954237345461969635250154095 --2.5514387501419313236568959392689334769905024402814000519091236 +0.7061016593503816845395987353214250299598743259212734086597343 +-0.244104594664544092420389624839996841564025089752433400526335 +1.8959808899460668017637070006941991119860716490789348278806116 +0.1200962577998201139056797480643088461794885664335438831924836 +-0.2664367095332610854448640801374799830454501629151014790556845 +1.880854891192484244595695819098216119172576121658915415442056 +0.0819158687812461050745183851167857059821516898566672919955112 +-2.3744721242038436573971087265836717974402246124438398355007153 +0.8942367920062887951478657563090366191915664447934872889403091 +-0.6958570078072212001812178263830876228901147769301054895031247 +0.6750083136344768639232844010848504690029419826856365279341199 +2.2843560281313558537407481158452316882716517245349157195835476 +0.58714299338522218240589084130059818850886553800225026712934769 +0.7608554525506039608912814197290945317710304908530097356144783 +1.19433614070717805001255469350914659979855899214881839871972083 +-1.91764892825302362606377059626334203086209498375901393211513257 +-2.1438387040550990981298374161298170142395094766800397452860536 +-1.83482458950636796340645006781348849571172070409677522754274929 +-0.6432343066473237711770901961836047524209201986698345701228063 +-2.644635320907496311528949763284210411167581867164000088103309 +-4.97330376234979773769006817826510020716085855963281220696571234 +0.92506809346431895653944477072518692208545280963675055487634788 +-3.71378661135934003849459005654148231454354917307244024175046801 +-1.965665388381285756951011023398392746669476464978303863259867 +2.9641492787009397109622051063727344589650983721529429377755652 +-0.3309106618007611851174109197729560556338020458575204924220255 +0.4395629104037930862631122056191265863401685810957431043871208 +-0.5349408093673227608612926611141949733895324890607074625426582 +3.595643713724222015940231342407258530846228942744180624183941 +-0.9570964802742455696243622163971676724043283228340617134874949 +-3.1478610144095507514722846906648977029738744114124415782222385 +-2.4652486963112329602943131771475554141349051163246418351840318 +0.245838684064674251268853083668148777272281488392354913732545 +-2.8067943463088045551000983886227594653408574009790712020282535 +-0.895429995215447565725211299698472624139777492582886198521291 +-3.59913459396153624584057276281364225708154439647901879484439298 +-2.8665660292661956682066738242729624208711453803940390618393837 +-1.6474880285833584004697794659045452980795041088452171938867032 +-2.1431896713147513383566402428600265265465582250020085500798012 +-1.4803794029537532833626550267756226922823458580528859725979598 +2.8601981026788968285959062519912022693097136125633557655660158 +2.0762835728512498036293160353248907483044623889171287096306106 +0.2668991836863846401499359566251098915916821770496605408246338 +0.0595661477411697137532160710162822508685495877770339546210279 +1.5795908507038851181903819495973941971772153242350805681155275 +-2.28077747457946719469616217450198431901130580614269264101563599 +2.7813045969154459020325980643768978942493267388697027542755643 +-4.57563433339777316464968893875394047143641943719417728392312031 +-2.81295957232848126281459493460158066446330234887074759519741331 +-1.6913005775570179826523053252635275659369413106457680124919575 diff --git a/tests/data/nfst_1d_2_2.txt b/tests/data/nfst_1d_2_2.txt deleted file mode 100644 index 4cfaaf11..00000000 --- a/tests/data/nfst_1d_2_2.txt +++ /dev/null @@ -1,14 +0,0 @@ -1 - -2 - -2 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 - -0.02045501150664698515444899608259832622778238194598181287024763486 - -0.01110161313540698669688818430394970420499258369172530093278750754 -0.01561442624994212091954794958766367796202797787248100904216591157 - diff --git a/tests/data/nfst_1d_2_20.txt b/tests/data/nfst_1d_2_20.txt deleted file mode 100644 index 8e428d9f..00000000 --- a/tests/data/nfst_1d_2_20.txt +++ /dev/null @@ -1,50 +0,0 @@ -1 - -2 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --0.4413098759704276115157486122940138778382450314554048934666388869 - --0.23951350573751007548287062891499930767609579506428930702171849 --0.3368759049327416595283373715240552575307105006818125930878895673 --0.441082096018037917214853638679078688633706883487100102715025088 --0.041423857856565638439713232236178551756461453335682186547053252 --0.4046561722393306208051731874583917879791989206465987110400444459 --0.4410779523984187560461681884088030660867328723237318554239415718 --0.004194641588429648881464393095253522868577426237630563416492174 --0.4284109039547241652634174124181333651682459413114449002065775307 --0.147615270133510874794325769491705925046560834192881520409218641 --0.123340958679639315150973705625559977685865443156610681786600874 --0.241341357776869177948179625473799749888434650389061312164395926 --0.197168288859500212478295153363818123294827456301082438896189609 --0.0562538897907509538421189285704923981451110771606070830767267164 --0.256066143986441839998025066505465881080911052574539772439637773 --0.03383533953988030606693078141882507908678699227558251647943602736 --0.2243588591802139304942299210947785040434748675144744621649572034 --0.4234541781515618817429504531340533672938942601916133898501362885 --0.0848439883542074100481820526632751602254958635361162461881831336 --0.4191245806400120352778419415987064739536462772537577193709181744 --0.4310555718181502306073383892909754118117418645900152493755819331 - diff --git a/tests/data/nfst_1d_2_25.txt b/tests/data/nfst_1d_2_25.txt new file mode 100644 index 00000000..a5610f24 --- /dev/null +++ b/tests/data/nfst_1d_2_25.txt @@ -0,0 +1,60 @@ +1 + +2 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +-0.07838835742104840389052756169146943544000206230123216084325830017 + +-0.0425439613233998732014918465547953256434700164511901793602877202 +-0.0598381098640458073683594959212854252268062107743836444780717695 +-0.07834789765050279924735406505274375520492597837290885504682605726 +-0.0073579775849765126603274913980037277634759775796693156848177602 +-0.0718776859284598662418185581120109485375852584198995609892644044 +-0.07834716163358269424626697877699816859401548001738082277949083073 +-0.0007450797772516908736269906325437170373273643204784605637966226 +-0.0760971573283524969690270707493298861678255036577908293604202994 +-0.0262203933927045440876620767550189528323921196989642600344540298 +-0.0219086308285614247067064186864390411132915891297448907128733504 +-0.0428686364026942123486775417940380048599885944613371861308324485 +-0.0350223259002042198724471894290897890605350644692218108965279675 +-0.00999218521802839590195348966739622715790890501032501286186630987 +-0.0454841495991898496992133181055597698187242269199924125165814199 +-0.00601005514205261194534664931863550355850046535066032496508276737 +-0.03985209350985790779734969130133939558808845359214663704772169925 +-0.0752167111497075957751176573175959552641464678488923470937086509 +-0.01507054622222537987049566148513773217971576095465025174140594477 +-0.0744476596153898054330183743319677719498947937425773882278258259 +-0.0765669205968094549952081179623380600548053400672424714644643649 +-0.0602963309584078916109902912475650473100267006335604269791543788 +-0.00876838970403640048033388981075503485678510144217114958016038441 +-0.0574452926092544294817977003703215228200624416199864150683994872 +-0.0738195870566469607632751497081979078064425228394860113470175527 +-0.0528959375404101266345606814532760742157075660278495008728809232 + diff --git a/tests/data/nfst_1d_4_2.txt b/tests/data/nfst_1d_4_2.txt deleted file mode 100644 index 7df49252..00000000 --- a/tests/data/nfst_1d_4_2.txt +++ /dev/null @@ -1,16 +0,0 @@ -1 - -4 - -2 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 - -0.02045501150664698515444899608259832622778238194598181287024763486 -0.9401551428927267957022414807370223973718851691957439576252972471 --0.2612973453579209037151284175096642861921169860192733934510953033 - --1.104380110490317105142377754088805737567693034939216540184336814 --1.045060537583812517925033944337463361149162448189528315724316369 - diff --git a/tests/data/nfst_1d_4_20.txt b/tests/data/nfst_1d_4_20.txt deleted file mode 100644 index d1da90cc..00000000 --- a/tests/data/nfst_1d_4_20.txt +++ /dev/null @@ -1,52 +0,0 @@ -1 - -4 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 - -0.136086475672089031952016764671995339018721543922093146179636582 -0.335622612157399029931902007958320766504925528313445732484108531 -0.092739605867975295181160543853318601475202945704114035939014713 --0.0004352912079150662240870842459669441912717878524488878487995 --0.925559518994938006483709533544357411800048933746388189476417023 -0.093242812044105475215633914335602364543594460035657843900639751 --0.00012488352641721058640263352118386818096064092957845346278051 -0.360233791177448541440413912945533425374708012788066873174921854 -0.031107651184753152885792363654353964282432407003325494966772941 -0.017219789330542317135759685006865379819621468736148609748136244 -0.139094961131234974047635842982121581704500685236498382409912938 -0.07661256560780909137565059559351029634423558366597141872152243 --0.4693035300590561699561710259018623175109517802143936759360049097 -0.164626192564206156347749759885225982411007744354850467201737055 --0.2845322124449119266751762453384596600371125646023880031175577658 --1.513653202391502835804371373039866330625764963550746240011271361 -0.390501557669534369291893300600804194673852269676410189253185955 --0.696482378222453703837738709952486053976150661802621738165173379 --0.696299461281467859631291383441357231021518583689195822221201132 -0.337578347601879284158079192502676434150150626198516877326727789 - diff --git a/tests/data/nfst_1d_4_25.txt b/tests/data/nfst_1d_4_25.txt new file mode 100644 index 00000000..d697ca1e --- /dev/null +++ b/tests/data/nfst_1d_4_25.txt @@ -0,0 +1,62 @@ +1 + +4 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.3158305122954834491361879876118745635891842225287967281157858672 +0.3458309153991207858067077092337332970573207566667458110876416196 + +0.587328964125291642340536847249489549126748983251706562868373197 +0.428293685920465324123167671776927042425351504724280743028995119 +-0.402291709879755025413532281364569227452241019011632544780918776 +0.147912472292743968332643193830494170161063368756049506829927102 +-0.418142074538803335928934691971861518258555148936143689906919873 +-0.402078386290038423208410301074743494310570866394762604958095937 +0.015118734484940240222397291197334293077865679853586201583537449 +-0.187292990650973115066697613751556527336877543879397677373260878 +0.468159107562455941555723708571537199258492974311296208210768215 +0.407364460396312739965105616745256231811482874634382282042373317 +0.587467492871500467121337223218700362917237806066964931818203501 +0.557620374639678544480368734435812595164137737528272718552245806 +0.0395309579720230336055003399079305598025033792004837401050819759 +0.584778785962230720859104650634554992636348595482400552180775523 +0.0246242636122147863491615440360713023983258701847081620992836548 +0.029296945242261804025050491462072680551387104433136092972249409 +-0.131153374183851640865640029941890855159613531365849367822083262 +0.0553879939183009445872032193333032075188029143193140787304085911 +-0.461937365957484043767029486497011289028034198915373006361728677 +-0.220068646603442092157317094396292226359543536646711438880386865 +-0.202300750870235739953746303010046707502527248130112877593405682 +0.0351345884285287604540261254506023532923929283485043647109722212 +-0.15652083493462798643063859131714620779276665794076230946436346 +-0.051956082666489281125719316356076591527373190071814641645352222 +0.536719541895021700181157096512362113285540724322008016631452638 + diff --git a/tests/data/nfst_1d_50_2.txt b/tests/data/nfst_1d_50_2.txt deleted file mode 100644 index d8cf87f5..00000000 --- a/tests/data/nfst_1d_50_2.txt +++ /dev/null @@ -1,62 +0,0 @@ -1 - -50 - -2 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 - -0.02045501150664698515444899608259832622778238194598181287024763486 -0.9401551428927267957022414807370223973718851691957439576252972471 --0.2612973453579209037151284175096642861921169860192733934510953033 -0.02064024103910974619444094927932620346955741162547603478536509901 -0.9939488506160911489389650693513789013109506369408951165937746417 -0.1542994539339733543335730199449084161763486165489462822736549181 -0.7828695683967973168186338933650258807396624889375162083366143712 -0.8196703465056007618204539469140589759950911405168070546332911559 -0.6316345452201721830125859283102821997036574445025868003866206636 -0.7051415661084367709201814372310498119360160763950294411494790334 --0.9186285185242277638228379667640336837252479527413557249796864599 -0.6059166146272276531659924142280879090009660941492851068272418515 --0.95114225448595864485771668441096849436578004346293095519883533 --0.6604794604223456380230982552803888415401900194413775997907443762 -0.1817134261437800570794256414315250650163873891461146114574620382 --0.8768399197753272524248224977827836246291177209791567885209025379 --0.2027179913470305147020813461378369947382030993314951020253012762 -0.1375057760993413749724126299163162462121619232755876011030820512 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 --0.07838835742104840389052756169146943544000206230123216084325830017 --0.3158305122954834491361879876118745635891842225287967281157858672 -0.3458309153991207858067077092337332970573207566667458110876416196 --0.01097686940732606761440422015891875954490441842087149586770120005 -0.2626555858903124974165091427737336367005240661151773835219310271 --0.4833001744929688887627302318231007732586579925667420767092911497 --0.6470889183313806476439784979725465604750285292906649332158905915 -0.9495591103622864735737804468916775971319894153057637661282509133 -0.1280772471342585841455757702545741213596517009855068302808317718 --0.1946943926350927100029394214607870756382213566654573743676056718 --0.8391269337210497321784330437702418478537689733296865638890089907 -0.09000979948494377602070534800332955914923353808674104151336312387 --0.1766812336766545879148652249537685082960598655086779135604123172 --0.1002499995910402071291914694552929590775602478191912580994509247 -0.8558312786548114618473704491843378278983698142481509704680004653 -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 - --2.626828403500342964369697150038043530159433166162842699206116 -2.2565985001343434230280011018446029876075878649285283018278614 - diff --git a/tests/data/nfct_1d_50_20.txt b/tests/data/nfst_1d_50_25.txt similarity index 66% rename from tests/data/nfct_1d_50_20.txt rename to tests/data/nfst_1d_50_25.txt index 245a0178..a736f305 100644 --- a/tests/data/nfct_1d_50_20.txt +++ b/tests/data/nfst_1d_50_25.txt @@ -2,7 +2,7 @@ 50 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 0.3617754793224075120106402493333532892515347077462591193717225348 @@ -24,12 +24,12 @@ 0.03079002005616818689379437555430409384272056975521080286977436553 0.1993205021632423713244796634655407513154492251671262244936746809 0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 -0.07838835742104840389052756169146943544000206230123216084325830017 -0.3158305122954834491361879876118745635891842225287967281157858672 0.3458309153991207858067077092337332970573207566667458110876416196 @@ -75,25 +75,34 @@ 0.2216455512897554102911455213296037106714896153079531893725412128 0.8060520707732849845829519568044036159880831172244051400087891596 0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 -2.301550461928645415151376039343047828025277436983808103520524 --5.9298531629151376556307214648820419212522114302034422669331848 -2.8659247013510089505512239021457644797430633869246982982688589 --0.034689503244046199408714992145022677706644994890594375645821 --2.8839760233828965132754100004983200391314209720128564425926839 -2.9033336617184396278399151735003789015747921793908786211517497 -2.113185461167203959751972816284624748017248154437399492324593 --1.6225189025794905364594560942121914665840886593369881934480332 --1.514451364956205354279474279008531226160134596538772112631426 -0.86045078538023967546023187819859573345517098426040287797162 -1.856742716711109478387319863465062185224735455429869132214024 -0.549636378865919759666687046947539928628685478379757741710117 --0.28063026941510593401595858875388219695625186957364992766079124 --1.5477504200712025937411432759584888315715762066451790346151142 --1.11615626685677564338692274208481640943047792599724778045299268 -1.9781740891341827404751312244428971145598175476739877832692813 --3.3127367057872107354356388732851092751680491631794965793738069 --6.53336062728282330195729956954117919809831683240639146907368732 --5.6274469072186574094402886063928601179199976494251687779574752 --0.9605469404209434310790222530096799601736481961598552701314406 +4.506647253581069181782425382735311112649058954309319996287747 +1.2771965758458124925965945742954607166716169367194535624560644 +-4.2616325942446073210254562991171945803680724371626758243758322 +-1.733957873674727758562934929176949313438317048254053416095677 +-2.2690978900462580198972065367336152300237875698986728537990088 +-4.2490207927838291334051224756273904266252772829640896716332749 +-0.442029922270438209824273940155254048850996613721642147861118 +2.7362750571488963657769616119119447994429528510293199844816677 +-1.224405594328600419640006150028679038309657872602129414484805 +0.209780886755106498029383037727108724226238574972863000306578 +4.309641412422146469053983857379697626477234504135555809053704 +0.198476816230799342090858016655484651900361816437334830526416 +1.26317865888580073939263721734546487173294768936094750478342842 +2.1199045709550597681013199209446874149267132049778316889112458 +-0.2855283488948444755477676187592153668314323892682826807789972 +-2.7006215248988186053658824287671082237496899346597007651074405 +1.2523824230612329951949018250435892828516046398376151239554195 +2.84620868016831064756177064436260896654921522450959692108129063 +-3.5794889234470129660307804067721292979520160875061764660991446 +2.3952673967605878367852424169286387735022204287351476385550384 +4.9086683989049477458145384067701952051910862729939027568333776 +0.06993696069286530202269666698175995354190825868849015793707296 +-1.2561916873165584237946566775500311315614357843552557658476828 +-3.7132619208377616105090130536152806134097243212824158675954551 +-3.9731954152310109563570418764061888159306299481021162566280103 diff --git a/tests/data/nfct_2d_10_10_20.txt b/tests/data/nfst_2d_10_10_25.txt similarity index 76% rename from tests/data/nfct_2d_10_10_20.txt rename to tests/data/nfst_2d_10_10_25.txt index d170613a..49ffea18 100644 --- a/tests/data/nfct_2d_10_10_20.txt +++ b/tests/data/nfst_2d_10_10_25.txt @@ -3,59 +3,59 @@ 10 10 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 +0.230402910644737899027368109577132641139999484424691959789185425 0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 +0.1710423719261291377159530030970313591027039443678008179710535332 0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 +0.3364577288497801964516769273084333242643301891666864527719104049 0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 +0.2472557826481684830963989449602703101137738953947821260330747 0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 +0.3156638964725781243541272856934334091751310165287943458804827568 0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 +0.1291749563767577778093174420442248066853355018583144808226772126 0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 +0.08822777041715483808900537550686335988124286767733376669602735212 0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 +0.4873897775905716183934451117229193992829973538264409415320627283 0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 +0.2820193117835646460363939425636435303399129252463767075702079429 0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 +0.201326401841226822499265144634803231090444660833635656408098582 0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 +0.04021826656973756695539173905743953803655775666757835902774775232 0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 +0.272502449871235944005176337000832389787308384521685260378340781 0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 +0.2058296915808363530212836937615578729259850336228305216098969207 0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 +0.2249375001022399482177021326361767602306099380452021854751372688 0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 +0.4639578196637028654618426122960844569745924535620377426170001163 0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 +0.3839126554233829641792241169995056112118738549435185680451106415 0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 +0.2368715426933632797203883114608453601301280965983514357031010166 0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 +0.4879523795531072195691844705038987386977815390062911906717683948 0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 +0.4989055963203276874130654061778803284303962145484476976641785229 0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 -0.7335087736711041883089151876515694737975402817556229765975958245 -0.8786687027770929787301562525828872003547410177701220950278899658 0.1944979336074391420204691208780533563017707991268605634570366201 @@ -137,34 +137,30 @@ -0.6412882157453879879998117648467144628970706782597054160685555631 0.9017103216368149546517732133490469846549850682301607701578308401 0.9631270643127979384664069651403286361478505285019531813591892173 --0.6210835173793688086670082589175993809833456274087668762475476635 --0.8137281645240375388576750044830353268919925528507904843095256157 --0.7041297500866612607234884784407130317305843364144413223065323821 --0.1235721593345202217795554759876880268687368789792682195280803184 -0.01793996302825844948175557573252934185711456214972052895861572493 --0.3411596862218241172328579047617234818967459872060847679144866809 --0.7379746599220903325806827424480469595800618414934950958452657346 -0.6843546378904107483368305041075808036585650068151329599810630045 -0.4265099420399003863248167494626862205659560797404855195341684806 --1.3502589817473881055672290257888259128874929564747676099758968 -5.8265874237883015219174037623795287970195479244574090625720673 --2.0846155938127425162055095484325744929107308657564327610389095 -1.3884669128367585726342475381673746763992429308038975493612961 -1.3846487768470710258849650063099789281282197591249421524230473 --5.3533131702495326138669773824279032574257094090896538587415793 --3.7608961947899123595131414769184575994600446447966237152965016 --1.2916045330886434734007855973695520507166587453578358775000232 -0.9893403554708623883863007933786971045833143829473269684605414 -1.3784586367058617498844015477097487845360449245816631368093797 --1.4071872303919210861311354781093100341628661459480869962764473 -1.7463564960888594132845597333919489605832163923320274266933245 -5.1487428397754444867354382875474040221336884813452096225388697 -2.5010692579671900381383118670839116733373690124075871436236191 -0.4106964476055043489874888908162806036458681783761092203421054 -0.9023017592280738906473020098216248248329436614340874916234448 -1.3262781131966960412467972891348241142439064366933225047930441 --3.375128151829611876922693385736174960114561136025504962925876 -2.773787503452449619759808074467556058174042378590321683191982 --2.8787216037577226934421982242865218636885848790864485512062989 +-1.1972416664191406528657617344969946584813573262176590987428137 +1.7945068712511629095150693419002894473887565089078929965548625 +-0.7289384459951032819442344444262083561342093646624776934072939 +4.539998587005620906061393301363970921720925567228012832661403 +-1.9198552893431048500242267663629613225125764567993049354950513 +-3.3386203314386227812658898556353271469672760357090422466813471 +-0.0435413210366067141328959447766284534162941345254576057197489 +-0.3706307163447423472864987876150320704778298055125549084228146 +-0.3988139913207653469472951570471659274557616190390000321319131 +-5.0193663627804459372412327950735295483687232867845530110433274 +-4.1663935915082820119736483999200141054747975497673091933203408 +-2.6011400495029945576841276735218466612820893311131464507775755 +1.8985901764303173273513176247176134264777323304792824927994254 +-0.1903145570058644565106908260551769772061608696262809938604001 +-1.6197837925994759732033000540444455372547711473484191747687544 +-1.4893160504132949822886612370945278123234298237617496588918304 +-1.5249385866660261866603566512794982697673845715864190819560998 +-1.4112865294425255257919136996060027172910150446554878428333394 +-0.2400527393585526292033120071800906096171492581602557375045419 +3.4224608147790592020374588222113959297040893340744974356848181 +-1.082804106190509276411292811735058434265395499649268104622234 +2.5864720503700851696337645044305810127618073254135744976246182 +-1.4025642619571943279493681578218721060352505798128418279278267 +-6.0122109048519017038474114104054838891379299261620780928080636 +3.1817005936226968886535674390142027226088212971677540209716299 diff --git a/tests/data/nfst_2d_10_20_20.txt b/tests/data/nfst_2d_10_20_20.txt deleted file mode 100644 index 8a122ef2..00000000 --- a/tests/data/nfst_2d_10_20_20.txt +++ /dev/null @@ -1,241 +0,0 @@ -2 - -10 -20 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 -0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 - -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 --0.8786687027770929787301562525828872003547410177701220950278899658 -0.1944979336074391420204691208780533563017707991268605634570366201 --0.6717069716036456017860348911350501039034020263227184271420653514 -0.1841240265716411858721923885202834145897392121583597644960322461 -0.531416327611542071221970089939764430329756625444579259583169101 --0.7793598342770851820561551396646691186537674923197586552161425487 --0.04982739811897050028189209963034074300557183166488389610036293982 --0.2152831478765442996690076717147867376683641103330644151579049018 --0.1430325904665435237882241441707630670064919508747748361914900932 --0.5458569288127476004682590208265714990676611459841400026017844665 -0.1856688150172391527088040246433169286752829500750590071977203062 -0.8193143821859564924477154245099351963436429074028089074430038904 -0.4604487491339531156973853721884505256237012331451385915640611729 --0.8606535828683120015533980099014960687963233985081987928030018579 --0.2028782443808202039078700152556584967073846417006795171717789768 -0.7727562160593342436881229708062656539223995010850938445718232095 -0.2216455512897554102911455213296037106714896153079531893725412128 -0.8060520707732849845829519568044036159880831172244051400087891596 -0.2494984458565048492106180084187393465587010901621886528310783225 -0.692720462930580375837580120465281755163139346395305274413909974 -0.3484206501444620766420233468327938525050794194268200530793896515 --0.5365723013330725289094471599220332027885871668229904917249565862 --0.4969838973904267472552603461634423875526049699439467087064029146 --0.1099633225953045478540363356794430416477263111166654723490589437 --0.6756547625687923165084584127259768184144567299620396875756298559 -0.8687355316920355914551191479618699998090617653378680974249892199 -0.6573707348942885034556657549189062350008259948442460481059842193 -0.304092255431421724386276285709205877741518261756931899126135274 -0.6923315191547459490617708873077670147989473956854336908747033971 --0.8796784447840898801814093263554195453289300559080999490503364787 --0.02378306045101476542041128049120676361822587626846492046663605803 -0.9854996726419986830846511304498671064695985279263874167222764802 -0.6717005563662298476413580139956207272362245386339234470714331016 --0.8378043093573693797427988998204722223522674424680899644391943176 --0.3904035160770493684430115148009967524256991556076221372265894266 -0.3596214942327276879157632590476519168937540906266077357147819608 -0.7958628339830083470736213000945699871834494249238046750007408612 -0.5412530329369591795695895418300581875196694253995928145942436878 --0.2613537732594101756765510813982454595302525696986533152069370387 -0.435828324052182771698190217679588447000849558850289775314256024 --0.5937465792299257034198201886287226952400923687140794966015317515 --0.3218041479377133937935849601301732622610394503588237190352903562 --0.7360914574746049921434644450737043073420684008447334807822853276 -0.553187364694831117272984365230687982396001421226655790220741406 -0.01417576197421767893279369309359545621976513518858252000938611031 -0.6897588478092123244219967589255606032813281483291811335150355542 --0.6996703139503628987183738269577949838863048093871175900433716284 --0.1309677757443125377194229250386971011803561306992623123400631451 -0.09049503268981439002460219767349217513483951010643022102321620286 -0.7721031360269444536624854764846278079390436516442447307214583713 -0.7113282365127787106295924505560767722199840055537543517442585349 -0.7679535856628120283990827155162180966010981503917935490380557142 --0.6127602430473631495393181955733023028663546816025211937039540524 --0.5944056790460496081717996899055920305811666877696698395774078378 -0.9839367502424209997890558933686976016082869978582241397510153252 --0.4548419343247805224460011391703079342763504118566706946966391853 --0.8849845588398620212194475625021727518116463369860566764411889312 --0.2496600323413886386258990085306122333313701779141184118995463959 -0.2013567579813494116381818105314838610969816486807952028421948124 --0.85858010457166611374976182888109386496982051035674989499979384 -0.7326702292582058588316598422918662773838658327971514003421703067 --0.2697443704573465465233716116511309018200366900116819867580635278 --0.6468087813680422377672655136982917947328505318460482424201962 --0.2812302577494115409480047067683469320314228801749259890701395474 --0.02167413194230472805204979364706614220652157873015883116130884482 --0.680894955890704100546661726757747116024714493408288024374190234 --0.9306530725185795934583927665790248017610038861531896668451002839 -0.3319152007540851906913026983763584438955853838764895977762668678 --0.4414898031680223608932387792017485771255689761890070706015387399 -0.04675554236208552284539297942143061834219393972333359647545914081 --0.8152568938325646993310760006867681539054279301843202148958871677 -0.3952163240756655529212705355453418848569049122249531536768131848 --0.9395163144138835125672454933008856593503204403133472584898229717 --0.08780353633292157461769946866167963633505729824902226238512671868 --0.1743560068378512679152575299947443762504689480476570621749324843 -0.6018835924636782523215034400201993341434060856497418585329625279 -0.5094537464059880326374352490064905763350159638438638190213421193 --0.6412882157453879879998117648467144628970706782597054160685555631 -0.9017103216368149546517732133490469846549850682301607701578308401 -0.9631270643127979384664069651403286361478505285019531813591892173 --0.6210835173793688086670082589175993809833456274087668762475476635 --0.8137281645240375388576750044830353268919925528507904843095256157 --0.7041297500866612607234884784407130317305843364144413223065323821 --0.1235721593345202217795554759876880268687368789792682195280803184 -0.01793996302825844948175557573252934185711456214972052895861572493 --0.3411596862218241172328579047617234818967459872060847679144866809 --0.7379746599220903325806827424480469595800618414934950958452657346 -0.6843546378904107483368305041075808036585650068151329599810630045 -0.4265099420399003863248167494626862205659560797404855195341684806 --0.9874151891964456486571993218370826427302121071375833081581536189 -0.4601637140807105378191037234478805179877043129140064777542238544 --0.4841039802362244364267157134690841461075259779700777041439742307 -0.9965877589863013394561112420396792373833365736836351278348301833 -0.191567730523304776574190978829765313731471509331205854313016986 --0.9100049476348622207723944867294612891098821253248738836563459568 -0.8085565025927605798160394591787637574375967583263627553971120289 --0.8851479413535487385573817957243936843534909265401263726020814395 -0.6064591258881136876029163103297147737049475826316704311935105558 --0.7125906556497681391201675092436355218810428000432951124150783383 --0.7605582778547942408060351317015194879473019118917060721292547632 -0.9359455243018989598720894094889086512450300947660621306436953491 -0.64033297030031448665328828110131678884788143990971470968562862 --0.7566145378422368715122716757726615136162685098609876740055635889 -0.498393464867089132881118789295770940752838691384942740522239679 --0.4971948424110283155918942363898656650230845195141350175248779212 --0.3682837387895926737476498418989480477365801929350913148252356807 -0.6148970507477253459184467315745337121338375212139515007860628315 --0.9083524682273578446532722997799475788834527253595073048265657245 --0.3916716877161613504785809028033398517645549846406356231576213868 --0.5193518691808852117378350732261309854332184624171433727414006814 --0.9750431258817692289559363598684739941265076062018304867776204819 -0.05005097085661604605086728229374112382053058454731767435671635371 -0.4399150750505159978489133507713340072340352057744402647976718275 -0.1872909367861505164718492831692222169018789408412172493435499423 -0.9419321039051109549245680082622391092246632631231828777233002149 --0.4287041936652777153072881590344721321081952456510997660597381855 --0.2333391111205556198207256592076331117879880842914267473885863455 -0.7889477067277564731712862630611699647549102063099584994888747696 --0.2563747285446000361218237435955077669028092056157149416120292486 -0.8211574497098423675796354902233745259806437217163965161734702361 --0.2430326281692574737943057410600918611450147916626606070615468027 --0.5566744269539672218404388199827460990960984415899809143036909069 -0.4524110448637644360868388875231267640338311624103409145041788539 --0.4077100331640054846709900852315956380002910175183742932154068317 -0.9925432694290908433525570320250227385826836114793383624485189244 --0.6845441772530325736299180977635806745002567201737916085152286412 --0.5689275448635581694575383584343021970227104177442089801706330228 -0.3985567814775143901221253743791327148945266133080683203695999962 -0.06961382826101090949578301124383292455559947536661707583968975184 -0.04307050119059237005387541827491059927895209375649378090223139587 -0.5849881776459916509815348468661649535409940486756497653761724118 -0.02943622593745917222898833754618856585348471594569686881397428726 -0.3572417013316431962026919347150511042636763596269956578845059238 -0.8246603472400295391578505724317567517180656867730457579866275623 -0.08267470722577286001217633724236129336011575576077446531397711074 -0.5296493544860877224747590127030477951987987258874100707895850711 -0.178161671839420517570934964597356447578898824155879129858818805 --0.8633908949968827943561744577901901026376268752722144571223670853 --0.3459820993240706010475901311688197838023719669999227712290509004 --0.8814262497135981437569523940906532685397798861799997656375266034 --0.9722552720272006984678084914751283988556792015475269427349942943 -0.6486167889394565452584685154506739738504706411589692034776454683 -0.7237216114456588829885327945423834052953613010855527824331391861 -0.9153832161606877637775414865990581395464326012246760580785761313 --0.5010512652356920074204032205934276172215285762480987760943959851 --0.003517119711452846559277971844364606295296520854275366315952866112 --0.7432644962454565902867854377146609433353697756825593784757725371 --0.6678889143320625765336213759043802181180754155696893060399849702 --0.6231432486376980435414857670687342821530306865222818413703487444 --0.761265558015959776038963903242211813247582799987701574301727408 -0.1046561870893663260798556882535941223232955552582338303672866205 --0.4422178249719287625023613714462236578393297082084105686699745527 --0.3006761386836519584160039426021947715604263308295216335254395417 --0.3931472033430920383369653755030364057981520323323553764459192375 -0.800956473746882928456987043862133272850468280050235725390942984 --0.117336384734927911842612913616027626554640600021179492329548556 -0.4299591565232924801870368761556079288133632606094048768501521181 -0.351950842714972405603834006572622410785881893665581295538500859 -0.4719165407085054156880418423268675488422117760448059022673468457 --0.1600709565700552484491336034747507816107856100797576115468140784 - --1.827699932700331903576533832904563022068307153712673996625189 --3.4857406928723553815900316840617120264260940604628724929357633 --3.7623934675107703965103623982400536671445253288666674181899224 -1.893929419849093827391908983984938407787485094851315982412305 --4.953472209504560381885921565020877435984614309546665812672794 --4.0741929018414392841975710426653607608241666170850749893851189 --0.2020891848035152029494465100655550192352368491132450508997437 -5.856504912261655060820978277014449795645060970812777113100674 --5.592192190592230950235389625611740790125040051673449946795252 -3.728888712971962357039588751703810248151635130609441225344212 --3.6861669106939751503375583403194165589650477165053165895258756 --0.366758533419100011800809455731429754229207840268581870340832 --0.1163846260397541555825099434987285958370140779430497587445805 --4.295414059860653285609154174838415358262558117144761942305938 --0.7609547192675212919249544489720570966278896182448140831778526 -5.1755805891229143402826262650072419249512803111474313542471289 -1.424292220051267637265247366624069565657982629338365540181824 --1.5477111235380169557067865917772850347666413856665834002386905 --6.2519184483209047005613557138606661908538082343286082151784841 -3.945961938331657203804728061462665833372279288089701247363284 - diff --git a/tests/data/nfst_2d_10_20_50.txt b/tests/data/nfst_2d_10_20_50.txt deleted file mode 100644 index 144a5c41..00000000 --- a/tests/data/nfst_2d_10_20_50.txt +++ /dev/null @@ -1,331 +0,0 @@ -2 - -10 -20 - -50 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.06662280658222395292277120308710763155061492956109425585060104387 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.03033282430572675531746093685427819991131474555746947624302750854 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.298624483401859785505117280219513339075442699781715140864259155 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.08207325709908859955349127721623747402414949341932039321448366214 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2960310066429102964680480971300708536474348030395899411240080615 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.3828540819028855178054925224849411075824391563611448148957922752 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.05516004143072870448596121508383272033655812692006033619596436283 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.237543150470257374929526975092414814248607042083779025974909265 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.1961792130308639250827480820713033155829089724167338962105237746 -0.454917586626400190455113486728514743998772785129201763658322789 -0.2142418523833641190529439639573092332483770122813062909521274767 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1135357677968130998829352447933571252330847135039649993495538834 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.2964172037543097881772010061608292321688207375187647517994300766 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4548285955464891231119288561274837990859107268507022268607509726 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.3651121872834882789243463430471126314059253082862846478910152932 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.03483660428292199961165049752462598280091915037295030179924953551 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.1992804389047949490230324961860853758231538395748301207070552558 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.4431890540148335609220307427015664134805998752712734611429558024 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.3054113878224388525727863803324009276678724038269882973431353032 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.4515130176933212461457379892011009039970207793061012850021972899 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.3123746114641262123026545021046848366396752725405471632077695806 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.4231801157326450939593950301163204387907848365988263186034774935 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.3371051625361155191605058367081984631262698548567050132698474129 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.1158569246667318677726382100194916993028532082942523770687608535 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1257540256523933131861849134591394031118487575140133228233992713 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2225091693511738630364909160801392395880684222208336319127352641 -0.230402910644737899027368109577132641139999484424691959789185425 -0.08108630935780192087288539681850579539638581750949007810609253602 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.467183882923008897863779786990467499952265441334467024356247305 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4143426837235721258639164387297265587502064987110615120264960548 -0.2472557826481684830963989449602703101137738953947821260330747 -0.3260230638578554310965690714273014694353795654392329747815338185 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4230828797886864872654427218269417536997368489213584227186758493 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.03008038880397752995464766841114511366776748602297501273741588034 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.2440542348872463086448971798771983090954435309328837698833409855 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4963749181604996707711627826124667766173996319815968541805691201 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.4179251390915574619103395034989051818090561346584808617678582754 -0.201326401841226822499265144634803231090444660833635656408098582 -0.04054892266065765506430027504488194441193313938297750889020142059 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.1523991209807376578892471212997508118935752110980944656933526434 -0.272502449871235944005176337000832389787308384521685260378340781 -0.3399053735581819219789408147619129792234385226566519339286954902 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.4489657084957520867684053250236424967958623562309511687501852153 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.3853132582342397948923973854575145468799173563498982036485609219 -0.4639578196637028654618426122960844569745924535620377426170001163 -0.1846615566851474560808622296504386351174368575753366711982657403 -0.3839126554233829641792241169995056112118738549435185680451106415 -0.358957081013045692924547554419897111750212389712572443828564006 -0.2368715426933632797203883114608453601301280965983514357031010166 -0.1015633551925185741450449528428193261899769078214801258496170621 -0.4879523795531072195691844705038987386977815390062911906717683948 -0.1695489630155716515516037599674566844347401374102940702411774109 -0.4989055963203276874130654061778803284303962145484476976641785229 -0.06597713563134875196413388873157392316448289978881662980442866809 -0.4185263199001522458669142863738759200408224269123403780399225034 -0.3882968411737077793182460913076719955990003553066639475551853515 -0.03255623598208432111570732264349275889070247369224840425020245548 -0.2535439404935544197331984232733988640549412837971456300023465276 -0.384865504568687870081160661201127839598602309270532264614380477 -0.4224397119523030811054991897313901508203320370822952833787588886 -0.1431288743493055020786095199054726087526637606135342513786504868 -0.07508242151240927532040654326055125402842379765322060248915709291 -0.03488256247317815731161238939613475543191815994111601665491122214 -0.2172580560639218655701442687403257247049109673251844219149842137 -0.3455515607589044047244320070401003626747106946235853743454314733 -0.2726237581724535975061505494183730437837098775266075552558040507 - -0.7721031360269444536624854764846278079390436516442447307214583713 -0.7113282365127787106295924505560767722199840055537543517442585349 -0.7679535856628120283990827155162180966010981503917935490380557142 --0.6127602430473631495393181955733023028663546816025211937039540524 --0.5944056790460496081717996899055920305811666877696698395774078378 -0.9839367502424209997890558933686976016082869978582241397510153252 --0.4548419343247805224460011391703079342763504118566706946966391853 --0.8849845588398620212194475625021727518116463369860566764411889312 --0.2496600323413886386258990085306122333313701779141184118995463959 -0.2013567579813494116381818105314838610969816486807952028421948124 --0.85858010457166611374976182888109386496982051035674989499979384 -0.7326702292582058588316598422918662773838658327971514003421703067 --0.2697443704573465465233716116511309018200366900116819867580635278 --0.6468087813680422377672655136982917947328505318460482424201962 --0.2812302577494115409480047067683469320314228801749259890701395474 --0.02167413194230472805204979364706614220652157873015883116130884482 --0.680894955890704100546661726757747116024714493408288024374190234 --0.9306530725185795934583927665790248017610038861531896668451002839 -0.3319152007540851906913026983763584438955853838764895977762668678 --0.4414898031680223608932387792017485771255689761890070706015387399 -0.04675554236208552284539297942143061834219393972333359647545914081 --0.8152568938325646993310760006867681539054279301843202148958871677 -0.3952163240756655529212705355453418848569049122249531536768131848 --0.9395163144138835125672454933008856593503204403133472584898229717 --0.08780353633292157461769946866167963633505729824902226238512671868 --0.1743560068378512679152575299947443762504689480476570621749324843 -0.6018835924636782523215034400201993341434060856497418585329625279 -0.5094537464059880326374352490064905763350159638438638190213421193 --0.6412882157453879879998117648467144628970706782597054160685555631 -0.9017103216368149546517732133490469846549850682301607701578308401 -0.9631270643127979384664069651403286361478505285019531813591892173 --0.6210835173793688086670082589175993809833456274087668762475476635 --0.8137281645240375388576750044830353268919925528507904843095256157 --0.7041297500866612607234884784407130317305843364144413223065323821 --0.1235721593345202217795554759876880268687368789792682195280803184 -0.01793996302825844948175557573252934185711456214972052895861572493 --0.3411596862218241172328579047617234818967459872060847679144866809 --0.7379746599220903325806827424480469595800618414934950958452657346 -0.6843546378904107483368305041075808036585650068151329599810630045 -0.4265099420399003863248167494626862205659560797404855195341684806 --0.9874151891964456486571993218370826427302121071375833081581536189 -0.4601637140807105378191037234478805179877043129140064777542238544 --0.4841039802362244364267157134690841461075259779700777041439742307 -0.9965877589863013394561112420396792373833365736836351278348301833 -0.191567730523304776574190978829765313731471509331205854313016986 --0.9100049476348622207723944867294612891098821253248738836563459568 -0.8085565025927605798160394591787637574375967583263627553971120289 --0.8851479413535487385573817957243936843534909265401263726020814395 -0.6064591258881136876029163103297147737049475826316704311935105558 --0.7125906556497681391201675092436355218810428000432951124150783383 --0.7605582778547942408060351317015194879473019118917060721292547632 -0.9359455243018989598720894094889086512450300947660621306436953491 -0.64033297030031448665328828110131678884788143990971470968562862 --0.7566145378422368715122716757726615136162685098609876740055635889 -0.498393464867089132881118789295770940752838691384942740522239679 --0.4971948424110283155918942363898656650230845195141350175248779212 --0.3682837387895926737476498418989480477365801929350913148252356807 -0.6148970507477253459184467315745337121338375212139515007860628315 --0.9083524682273578446532722997799475788834527253595073048265657245 --0.3916716877161613504785809028033398517645549846406356231576213868 --0.5193518691808852117378350732261309854332184624171433727414006814 --0.9750431258817692289559363598684739941265076062018304867776204819 -0.05005097085661604605086728229374112382053058454731767435671635371 -0.4399150750505159978489133507713340072340352057744402647976718275 -0.1872909367861505164718492831692222169018789408412172493435499423 -0.9419321039051109549245680082622391092246632631231828777233002149 --0.4287041936652777153072881590344721321081952456510997660597381855 --0.2333391111205556198207256592076331117879880842914267473885863455 -0.7889477067277564731712862630611699647549102063099584994888747696 --0.2563747285446000361218237435955077669028092056157149416120292486 -0.8211574497098423675796354902233745259806437217163965161734702361 --0.2430326281692574737943057410600918611450147916626606070615468027 --0.5566744269539672218404388199827460990960984415899809143036909069 -0.4524110448637644360868388875231267640338311624103409145041788539 --0.4077100331640054846709900852315956380002910175183742932154068317 -0.9925432694290908433525570320250227385826836114793383624485189244 --0.6845441772530325736299180977635806745002567201737916085152286412 --0.5689275448635581694575383584343021970227104177442089801706330228 -0.3985567814775143901221253743791327148945266133080683203695999962 -0.06961382826101090949578301124383292455559947536661707583968975184 -0.04307050119059237005387541827491059927895209375649378090223139587 -0.5849881776459916509815348468661649535409940486756497653761724118 -0.02943622593745917222898833754618856585348471594569686881397428726 -0.3572417013316431962026919347150511042636763596269956578845059238 -0.8246603472400295391578505724317567517180656867730457579866275623 -0.08267470722577286001217633724236129336011575576077446531397711074 -0.5296493544860877224747590127030477951987987258874100707895850711 -0.178161671839420517570934964597356447578898824155879129858818805 --0.8633908949968827943561744577901901026376268752722144571223670853 --0.3459820993240706010475901311688197838023719669999227712290509004 --0.8814262497135981437569523940906532685397798861799997656375266034 --0.9722552720272006984678084914751283988556792015475269427349942943 -0.6486167889394565452584685154506739738504706411589692034776454683 -0.7237216114456588829885327945423834052953613010855527824331391861 -0.9153832161606877637775414865990581395464326012246760580785761313 --0.5010512652356920074204032205934276172215285762480987760943959851 --0.003517119711452846559277971844364606295296520854275366315952866112 --0.7432644962454565902867854377146609433353697756825593784757725371 --0.6678889143320625765336213759043802181180754155696893060399849702 --0.6231432486376980435414857670687342821530306865222818413703487444 --0.761265558015959776038963903242211813247582799987701574301727408 -0.1046561870893663260798556882535941223232955552582338303672866205 --0.4422178249719287625023613714462236578393297082084105686699745527 --0.3006761386836519584160039426021947715604263308295216335254395417 --0.3931472033430920383369653755030364057981520323323553764459192375 -0.800956473746882928456987043862133272850468280050235725390942984 --0.117336384734927911842612913616027626554640600021179492329548556 -0.4299591565232924801870368761556079288133632606094048768501521181 -0.351950842714972405603834006572622410785881893665581295538500859 -0.4719165407085054156880418423268675488422117760448059022673468457 --0.1600709565700552484491336034747507816107856100797576115468140784 --0.7196566232553047172113131790990428945643928116318893875786802199 -0.9506852903491360468879758484099667312771993016096956267658366287 --0.3776736725704435658453332291251578463493585478972191163904289213 -0.6001953620324393368833490197603304801854572549372059847172328017 -0.6978878736648347125949172253483236996713754832649550025174381314 -0.8508443401291057488517795791511283359984797073308503806275388226 --0.4669474695063991815703085816201270850746349019459750890255838246 --0.4916857659539131984511014678316277462480514807356006060275370059 -0.6805454442564243054841615570704809357725921633306984108877804159 --0.7429928693445994197394008924008488085983664860223161935727994358 --0.6969676211949719236627008807329635886036631346596064918901094455 -0.7197019444966162425693701580554867509036572823057158142921206547 -0.7821091276993633157184444189269089852199610591029476119050859896 -0.853322612153932922155019514171215033718470215426888526974581991 --0.527123190429983130601023007335782170127141621028130059541603522 --0.04518836599707041257371263007133991513702551585551047967233360089 --0.399491020501502399597869265119952339350000411493961463635298064 -0.1151112248581587985459044273509734339372139569519498681662926204 -0.4120054991803597141675815179438163442823969621208991056428168406 -0.4343579826046095597725968699957767082823418268721181549420071456 -0.2535126428268633086086116718856542176680789611156801564801311848 -0.0757591082002124635881632323270228980382304124620507025889787107 --0.009921455995466628736212379839332998874975285848956671613709936322 --0.5891566693005274615768435832037723406013603962165946345013825592 -0.4725424296459514103640632185799575468737722475096114637473172301 --0.3642689669126664223527375212471788979005234643229363317834063467 -0.9106160875739411428476569185959640646231793213239998804082355729 --0.1554296096295892351142787706783742826880784898341993011418432069 --0.8069065915498787556695276318086362565827819941733622970182376756 -0.377414941913701641980604281714521283600422741949240555908727434 -0.286257156034881826917947161474943151268083089341448769053424682 -0.9392006333865916821227548404291848184201007925131229813910957774 -0.5114205299580920868823613420213360686329180904621350249508347984 --0.6408078680635244612899765081025913686282954450887306823350772997 -0.61034769186326371064247171222348075927083751612531179530760314 --0.1695324055840820458497589349479760035964663521113253737383164439 --0.8353594742240205937097730115138661305557325449129426505768609534 -0.1821483418007667766250895141417107286953921543595289977783017637 --0.4074526958925963909486488891837393063126910851657623153854908031 -0.519412312832116093970077697359996336676003120133546342882630559 --0.1339026726689501933617889040862807661257038358606191032725698017 -0.1617840119849052908674425797539541379830915417411164257796009655 --0.5833399591688895541493678958036554117556929951798174740043291689 -0.2558611196916433369649336532000849479904305619298222327625863899 -0.9637184128969163713272727389388526394331293708405231601274766637 -0.02398516466411951663039478357357263297576765858214578984119980389 -0.7220807768185265925885711430037484304092954076856054861183001563 --0.8314034062393001851412680462190559603040746972786212429324375224 --0.2313683087056718682580625867623460795004227069874977160354372877 -0.5241531162028989758906123049906275766571616823241720374203214447 -0.09003216360057281587724105549690566269005814841108581287665281058 --0.1599268816032428776743959117270259866309677355351818460136443291 -0.7126643265921692501928118835762400720628273345745039396768073268 -0.1443381463559750344148688262608847179704805274810841956785523095 --0.9541149480810226451568227541620900387924893378859274527595762471 -0.3516772517804962317135771244694045300550581304302552629989927399 -0.8312645047002901343481040986077492354211106507977246573848547872 -0.8922074343575836687927424867109565448477559678636672119414443701 --0.03914580715076807517564668371313115131680481962361916796431130169 -0.9746573852711840936336177201962708050687509298510135226623575906 - -1.0827136719688875880248610784496965144165598818431822075194501 --3.816457633609848897863140057399536395524034718947076679735005 --9.2109985234030282320684520354023316874886543924622682058294707 -3.3525009845089938070812582914190128092639714757993271935233377 --3.5380954589840387970496022377847990816426622563133114724825852 -2.692095307254629823012329082696113576131866197634859452430649 -0.46439608731029712955088410435557176028248157319011244990454 -2.4241956711515694338625576885355474549421583909927694779862288 -1.658061920936497648136021550355681654053062328603371939854308 -5.737571519686070307961559530709484371929939187475057042468069 --2.047123972954745403809020819071329133338947070725667155953834 -1.105645246969504316711264790287506946737037632237296189611229 --1.9670904736782014315183340310778720226957196031287207517345798 --4.852412807374071741794051976521805674885948360060140681981433 --0.41353338589790106564659227400808950038236453609882015687896709 -3.3908346177324504865177135344659608096175943320674794989651652 -9.388094472699171769856582715904625861500277294549047358378131 --3.9524157240608612953238601946756507671441602031281932837760773 -1.765200277635125811747918919048689891044621951139381337369919 --1.900048287017742229416304339908952025267973736965433818759437 --0.189912170543964076071304408730590747995525166581022789444999 -1.068289734566077205405131504921376892533412745013094936223522 --0.7236542867752689267494073018703709625166491995258865516760354 -3.0709549470193688896081093874055527921204899031110185798111061 -6.823085488798788437032581047870352074338606579952006381018124 --1.6556583085485630477947150372658007723494150796189118910239288 -1.107667891269167667784586141246110171922814029152826707318003 --0.803580918147894618993077976465638524923318489200648345872768 -2.9788570299970502498465750594022317242784101524657521776492617 -5.720215909323626772134831314248949854969558748449395086915355 -1.2032614173699145121884219171419389593050890277110877759009799 --2.9060180420823658785760897926687677112356277121697516175426879 -1.06658540399062587157621824170709905391532469095316423706039 -7.268420616649168784095980335773155924776901247903801530786837 -0.2530101232251225535170734758602709223033927099206409730021639 --5.5783733290835710851932755934669642319621353027636958460117325 -3.412156087709038964640026141644616052218754840659443917963216 -0.63456117733615670696749385252602868564988629870500397900711 --3.745768904635882903091844814558419413987425839709214900370024 --1.2721537311533878023255321732260590671085147559486725255865968 --1.204985283448206511465551546648210957112504940562052960252317 --0.088581810407851095975735622209253733787240263931443815723179 --3.1855705572146782602956284888152200456629953214086112395464796 -0.5284081848958513535271775436985976235924219652878172066921801 -0.060759452570522664728669394950462387444722930754968721961375 -0.2207304405762412342880333549796797838653169031660151420903842 --0.612694517259591966125685742786251125270236248483944647054262 -1.7186910630220069995416422328498751681315394158464100195470685 -2.2167636949597799280870665469584629825075725368579832892637533 -0.846586297393449148043541613374732387624705842954109279484223 - diff --git a/tests/data/nfct_2d_20_10_20.txt b/tests/data/nfst_2d_10_25_25.txt similarity index 79% rename from tests/data/nfct_2d_20_10_20.txt rename to tests/data/nfst_2d_10_25_25.txt index 0a76925e..6abf0310 100644 --- a/tests/data/nfct_2d_20_10_20.txt +++ b/tests/data/nfst_2d_10_25_25.txt @@ -1,61 +1,61 @@ 2 -20 10 +25 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 +0.230402910644737899027368109577132641139999484424691959789185425 0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 +0.1710423719261291377159530030970313591027039443678008179710535332 0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 +0.3364577288497801964516769273084333242643301891666864527719104049 0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 +0.2472557826481684830963989449602703101137738953947821260330747 0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 +0.3156638964725781243541272856934334091751310165287943458804827568 0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 +0.1291749563767577778093174420442248066853355018583144808226772126 0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 +0.08822777041715483808900537550686335988124286767733376669602735212 0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 +0.4873897775905716183934451117229193992829973538264409415320627283 0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 +0.2820193117835646460363939425636435303399129252463767075702079429 0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 +0.201326401841226822499265144634803231090444660833635656408098582 0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 +0.04021826656973756695539173905743953803655775666757835902774775232 0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 +0.272502449871235944005176337000832389787308384521685260378340781 0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 +0.2058296915808363530212836937615578729259850336228305216098969207 0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 +0.2249375001022399482177021326361767602306099380452021854751372688 0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 +0.4639578196637028654618426122960844569745924535620377426170001163 0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 +0.3839126554233829641792241169995056112118738549435185680451106415 0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 +0.2368715426933632797203883114608453601301280965983514357031010166 0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 +0.4879523795531072195691844705038987386977815390062911906717683948 0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 +0.4989055963203276874130654061778803284303962145484476976641785229 0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 -0.7335087736711041883089151876515694737975402817556229765975958245 -0.8786687027770929787301562525828872003547410177701220950278899658 0.1944979336074391420204691208780533563017707991268605634570366201 @@ -246,25 +246,56 @@ 0.9106160875739411428476569185959640646231793213239998804082355729 -0.1554296096295892351142787706783742826880784898341993011418432069 -0.8069065915498787556695276318086362565827819941733622970182376756 +0.377414941913701641980604281714521283600422741949240555908727434 +0.286257156034881826917947161474943151268083089341448769053424682 +0.9392006333865916821227548404291848184201007925131229813910957774 +0.5114205299580920868823613420213360686329180904621350249508347984 +-0.6408078680635244612899765081025913686282954450887306823350772997 +0.61034769186326371064247171222348075927083751612531179530760314 +-0.1695324055840820458497589349479760035964663521113253737383164439 +-0.8353594742240205937097730115138661305557325449129426505768609534 +0.1821483418007667766250895141417107286953921543595289977783017637 +-0.4074526958925963909486488891837393063126910851657623153854908031 +0.519412312832116093970077697359996336676003120133546342882630559 +-0.1339026726689501933617889040862807661257038358606191032725698017 +0.1617840119849052908674425797539541379830915417411164257796009655 +-0.5833399591688895541493678958036554117556929951798174740043291689 +0.2558611196916433369649336532000849479904305619298222327625863899 +0.9637184128969163713272727389388526394331293708405231601274766637 +0.02398516466411951663039478357357263297576765858214578984119980389 +0.7220807768185265925885711430037484304092954076856054861183001563 +-0.8314034062393001851412680462190559603040746972786212429324375224 +-0.2313683087056718682580625867623460795004227069874977160354372877 +0.5241531162028989758906123049906275766571616823241720374203214447 +0.09003216360057281587724105549690566269005814841108581287665281058 +-0.1599268816032428776743959117270259866309677355351818460136443291 +0.7126643265921692501928118835762400720628273345745039396768073268 +0.1443381463559750344148688262608847179704805274810841956785523095 +-0.9541149480810226451568227541620900387924893378859274527595762471 --6.391872826882582539679975490092650875020484355088297527632457 -9.215932470308105194596002743806915479083261320034817500606823 -0.6616421317839109842007445848595960141597394172146945524701737 -1.422225048248905884918821977896215980469769454401531480439582 --4.837260927608905100239597725168022115729157549858661888031695 --5.374560257972974441467418556600968522639522268155463713889046 --9.3933239935139681016746180411203371821794415879460775390463735 -1.509875727378554221210300534829390380514566271515196448695685 -2.044056634431279305974370386072185215118560097811280350336472 -1.429029605427669342326052357978915128954642364792370173744737 --7.309437012763280488967272166781016871647536652627433882584178 --0.622688667365933620186484328382226162305609726017090855180508 -4.9523479951721949245877562016634802409407050173255581880716997 -1.136038070952661130162634890595571522464089278917410758801085 --1.3382617268331905026753863154187092170617367323936889687002059 -2.1346947234431756304421458643817214901174158363097563183990835 --0.84692595159097318655684120886980463841409592969232768298957 --1.5338322706519470985159412762842203686861723972504027241822525 --3.5861552610558470680521549116923883935341253215541386115977439 -0.051289197305744138378399799398983716555149223467496200089744 +-6.653666050507887422593437839234275173159123397599437102576192 +-1.64094819171132816198928852280660265190249924777182721477232 +2.811791551067642012585870590535550502883689459675572469283026 +-2.600019095219134371854513379235951373630214446540284330112853 +-2.964695769262459325752084283155467837909434307420239119754512 +-2.3895114078048881254873313092286005455649285120363762557031968 +-0.164313108600569248684147947715141324022840859773670590661886 +-1.771300710270934873692837796409696506273445225653171429628915 +5.724027966810373582364314829392635263090020770345400032482529 +1.721583723509132136317469120577721102943504557215455925447916 +4.399448428185375320379149572010383898782218311843359661291474 +-2.922102897974509480536484064250172479851881194455061184649375 +-1.2019735682507341921173742937346084248884120170588090750677272 +-1.15587807913149077635090430804227356981885137869833353588463 +-0.1319074022969208425964540118295282763595760413249278351782017 +4.080930806122021382233065392309522442853996700490163252337854 +0.137599880178623641770951724653154490769282024858598295913789 +0.772889017398867309866468659743615786050612825223054197101968 +0.51864982794034145534140247338608178375091302490707693627018 +4.977859309869052812462747858215872953472225121261491057867324 +2.9483458888725724250578591626495474910984648086129881082927063 +-0.965819099498258351106217696590086217704405605390458243139843 +-1.1266656991074399280511379909318465414163304009976339245313574 +-8.8987617925606596575257956623407364223292568328027796530171108 +-2.354243000298737720594105219278045452947599503403565692297405 diff --git a/tests/data/nfct_2d_10_20_50.txt b/tests/data/nfst_2d_10_25_50.txt similarity index 82% rename from tests/data/nfct_2d_10_20_50.txt rename to tests/data/nfst_2d_10_25_50.txt index 40d40687..a612d7aa 100644 --- a/tests/data/nfct_2d_10_20_50.txt +++ b/tests/data/nfst_2d_10_25_50.txt @@ -1,7 +1,7 @@ 2 10 -20 +25 50 @@ -306,55 +306,71 @@ 0.2571290378683215613044136510821588749887474163677002652639520119 0.05683348973511969001808746192505133291481235528637618587938493271 0.8458238445504835463314748515393830432307810942061667936052115581 +0.2568190130746644331048317748223591322462097932104379543095780599 +0.9282397683744983930469496205745698232573096227549226254155622007 +0.6733680895626635922558736333908780380926273791887898430485173634 +0.6834258455476852992466772196651133096274086383123765308288566681 +-0.3197260966794518948885909003357003020869183279810950125249989182 +-0.3602154836971247653552601690662060499632143516459194629015046587 +0.5644944652643029946030943876077187355907298250270171876933333996 +0.300245006064926546622443908848084786661329770571675039165636725 +0.9109171936013987677935840681404253773950900911474823029568083952 +0.9809865904559495207084689029816148884009367903151903920423149056 +0.6673430101175698152854688993768041548769019864465421762641808302 +0.1912403836532585581545915780169638266665110774534903895312903483 +-0.8390872225468263142545242699093560592768485203012323759548269441 +-0.1694425027392812196149909158729299355102867577367629176586906841 +-0.1109481979293641305323565532634133494943626968908239858539934786 +-0.7576390226829376962602306885924643215709630457357178698800775945 -3.7195393807796141328805530262402393613430212391164019058806686 -0.4148214664516948608823051404928421652861449615886243722902804 -0.579470106413443298224643429597817353108715729411470352715412 -10.5868721000313247278709539276211002818425982383531882179477551 --12.25767922579913526058111330988701102279424572328956180367721 -5.344345556305405257104487994940283491537514401076713350816701 --1.9999114093764877840787327102140794816020945613399793442839232 --0.262473656462384709277184249357883543653521123110962886587501 -3.398948235735874963151532758041486194723956500150106768457507 --4.53508777380922559667820198730995810370968184127474413803526 -0.4782796148571131062425655702803527246260944414908786948174257 --12.033859904286574250331139447824499080362863441885164953043004 --4.244202392051193010707975434214661490804140112618317381654319 -3.449637685291462724816365871070773995065559660864085255901587 -6.1027727502825808998406244895218715813846027454672826943771197 -4.3647093398019990879358319401788693276359517263401693517786736 -5.697301813291163182276408543666460674725434512377001751015998 --7.4775328618145152874239420589840125027859639071083304193732587 -7.500624740466133896441397796652021757315204642168547932866912 --4.391538728588525751326438926333029922606147858468062019335376 -1.675360907240526131286963409888810700042758353550805587837281 -4.628651746942384448012946638970248511427397749385292340909039 -10.0898790820138550301299042823586633093352572046558584504751954 --2.3480161739429085608546302586000454454407919901470512528188058 -0.128418754101749605382542875140154000463374799194712147848062 -4.8472842002804255652447399016506048030766319991767571964190865 -3.756005667085635424668878486066015254989390318679234679405168 --0.062963059590121687174822101282516827194503537719250415145254 -2.852747911283321283389146877914957989743212774591987582594723 --1.87179360931187326162458092734291732477157332965471006965152 -6.3816608505931906801610478113990890284204412123336682403996887 --5.3569200568692465311632313296497713013449255724787942081035536 -2.680475004242332880382432959492055846774341815304686472729505 --0.188981979624784114748648806783043471127418736214022379671018 -1.9049287444261366983974301769903289161533454501877879557790724 --0.6942145448737286635814092274184955461455217314837909711537488 -1.071559878188052820201844468387242702188984701797805656604195 -8.643389118390159194887889231086584373601164247578535294475603 -1.453744514654264182659298802023336431324102781033003124528102 -4.065457123512286695992641208427704333587255942325336850471498 --1.302875648871491601740854545691241669863868530037579394909618 -3.3877030771033558814134188439807350298342512337550909873873752 -3.450643009337554327189091516385108740731661023897017173636607 -2.4596232267260653093840640596431955525919536356811106125553731 -0.22949046872790537242156551184689189666810969141955284312634 --2.9378136158881782567388291119585137345924558140894686696940113 --3.421844127043971083201210970278152905971182730873748924136745 -2.0592954347092636214624618917791895861555031686887890785708243 -0.9055944633470975727038956493861076752764133230958351665399907 -4.101180153228548998885178334724601051998000748435109747208042 +4.7531734429359179021955916265906734516736476992023675210466349 +6.4041552700937507495377190210668069095294711021508979518544886 +-9.427839250997621998218436798870269026003952351663473782273723 +-3.949432837643750347563836383931759277511833997307344358695031 +-6.687090719800817312579893182307706218666727332953970394403859 +6.786954857945131831409901628125427021775169733279868269059319 +-0.583026180457981710199871471755809580780318022471695686067695 +0.528622604813531370876358938648293038756690735424964049643968 +0.055648969442605773800075189178849281973796403898592322266902 +6.579667428466526124143659042548397689029190142331416440668193 +-4.264933017632507907253940887903848342676302395585743863890765 +3.136911637989501846287276485253998021716840068606794241288027 +4.574423643935765333306108627473789537589772699047626813149836 +-6.060386416538101794667712292019164658343060155948697616351657 +-1.5181785187050502421423154745023184089774486007845101948599598 +1.9299406035946239971525552330545664492849745833560247911047725 +-0.659333517442507170067936880677384783894619015808324010674488 +4.315149767418460757403342083838623566411237085952902127576586 +5.224408529933071857728513915368930988193335500166334571140815 +-1.167278382737366261726232042754448157776901702302621681227444 +-1.820403854647389244969320366585474977580927564158521501672878 +1.2410304969749073021902236370401054359020452740279586348286713 +1.8839634227648224515983153179537931934293824627564623300075049 +-7.0407092993329137777080564236439818028983163980018124996338605 +0.78796588938507013418648352721777636935133809025113585854015 +-1.7922180190886474837401379354865771425656997123342723396833283 +2.602831945493941512054890971047824466151087012893159005292568 +-6.294570357630626692754224767433632305716814811875835415705897 +2.41200123461485804940346299359432553295164931464908530378835 +-4.877639264912873016292519326778455625534736452024167054547757 +3.6097554776207008991042692555448117918007130357232085633835016 +0.917580523661756282179813279971964514156920688289579012071605 +-0.184306163899747633007542887731849204479192337771035644543619 +1.956419156069669932744484648226445958718272311752152582175985 +2.199130238520411133797676042598387688016124535263762843959009 +-4.0646591513018893785079375997828455393700112683203463477606031 +2.091384961141638603644240664457815788479701102703922997472093 +4.027376276048300442649244484570418373713873181925760246831961 +4.419592901494384002406628166993029855443104918170772666233147 +2.060714503643003715355124649289675359733675946621023901717766 +-4.202021457521683146686122279996377386638707031362736281549701 +0.4947592086855847067458019901702661447904990724192829688194715 +3.784571966449802252541215136739425404793315699574899086149625 +-0.115319147276686189322291228807181527350857099336212432323612 +4.803243159204611639188859834505075586728371670211521671845229 +-3.520499781598932812734617738104321975492960925626051382248526 +2.341842091068065291633181338222758640842022801484863371959031 +12.9459316827770697308935254124458829657070498760140534249880637 +-0.9401537819648783506902745456775224165524116253540277519225085 +5.654290479501270648873342390938937754768956642782122235229066 diff --git a/tests/data/nfst_2d_20_10_20.txt b/tests/data/nfst_2d_20_10_20.txt deleted file mode 100644 index b9c2fcf1..00000000 --- a/tests/data/nfst_2d_20_10_20.txt +++ /dev/null @@ -1,241 +0,0 @@ -2 - -20 -10 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 -0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 - -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 --0.8786687027770929787301562525828872003547410177701220950278899658 -0.1944979336074391420204691208780533563017707991268605634570366201 --0.6717069716036456017860348911350501039034020263227184271420653514 -0.1841240265716411858721923885202834145897392121583597644960322461 -0.531416327611542071221970089939764430329756625444579259583169101 --0.7793598342770851820561551396646691186537674923197586552161425487 --0.04982739811897050028189209963034074300557183166488389610036293982 --0.2152831478765442996690076717147867376683641103330644151579049018 --0.1430325904665435237882241441707630670064919508747748361914900932 --0.5458569288127476004682590208265714990676611459841400026017844665 -0.1856688150172391527088040246433169286752829500750590071977203062 -0.8193143821859564924477154245099351963436429074028089074430038904 -0.4604487491339531156973853721884505256237012331451385915640611729 --0.8606535828683120015533980099014960687963233985081987928030018579 --0.2028782443808202039078700152556584967073846417006795171717789768 -0.7727562160593342436881229708062656539223995010850938445718232095 -0.2216455512897554102911455213296037106714896153079531893725412128 -0.8060520707732849845829519568044036159880831172244051400087891596 -0.2494984458565048492106180084187393465587010901621886528310783225 -0.692720462930580375837580120465281755163139346395305274413909974 -0.3484206501444620766420233468327938525050794194268200530793896515 --0.5365723013330725289094471599220332027885871668229904917249565862 --0.4969838973904267472552603461634423875526049699439467087064029146 --0.1099633225953045478540363356794430416477263111166654723490589437 --0.6756547625687923165084584127259768184144567299620396875756298559 -0.8687355316920355914551191479618699998090617653378680974249892199 -0.6573707348942885034556657549189062350008259948442460481059842193 -0.304092255431421724386276285709205877741518261756931899126135274 -0.6923315191547459490617708873077670147989473956854336908747033971 --0.8796784447840898801814093263554195453289300559080999490503364787 --0.02378306045101476542041128049120676361822587626846492046663605803 -0.9854996726419986830846511304498671064695985279263874167222764802 -0.6717005563662298476413580139956207272362245386339234470714331016 --0.8378043093573693797427988998204722223522674424680899644391943176 --0.3904035160770493684430115148009967524256991556076221372265894266 -0.3596214942327276879157632590476519168937540906266077357147819608 -0.7958628339830083470736213000945699871834494249238046750007408612 -0.5412530329369591795695895418300581875196694253995928145942436878 --0.2613537732594101756765510813982454595302525696986533152069370387 -0.435828324052182771698190217679588447000849558850289775314256024 --0.5937465792299257034198201886287226952400923687140794966015317515 --0.3218041479377133937935849601301732622610394503588237190352903562 --0.7360914574746049921434644450737043073420684008447334807822853276 -0.553187364694831117272984365230687982396001421226655790220741406 -0.01417576197421767893279369309359545621976513518858252000938611031 -0.6897588478092123244219967589255606032813281483291811335150355542 --0.6996703139503628987183738269577949838863048093871175900433716284 --0.1309677757443125377194229250386971011803561306992623123400631451 -0.09049503268981439002460219767349217513483951010643022102321620286 -0.7721031360269444536624854764846278079390436516442447307214583713 -0.7113282365127787106295924505560767722199840055537543517442585349 -0.7679535856628120283990827155162180966010981503917935490380557142 --0.6127602430473631495393181955733023028663546816025211937039540524 --0.5944056790460496081717996899055920305811666877696698395774078378 -0.9839367502424209997890558933686976016082869978582241397510153252 --0.4548419343247805224460011391703079342763504118566706946966391853 --0.8849845588398620212194475625021727518116463369860566764411889312 --0.2496600323413886386258990085306122333313701779141184118995463959 -0.2013567579813494116381818105314838610969816486807952028421948124 --0.85858010457166611374976182888109386496982051035674989499979384 -0.7326702292582058588316598422918662773838658327971514003421703067 --0.2697443704573465465233716116511309018200366900116819867580635278 --0.6468087813680422377672655136982917947328505318460482424201962 --0.2812302577494115409480047067683469320314228801749259890701395474 --0.02167413194230472805204979364706614220652157873015883116130884482 --0.680894955890704100546661726757747116024714493408288024374190234 --0.9306530725185795934583927665790248017610038861531896668451002839 -0.3319152007540851906913026983763584438955853838764895977762668678 --0.4414898031680223608932387792017485771255689761890070706015387399 -0.04675554236208552284539297942143061834219393972333359647545914081 --0.8152568938325646993310760006867681539054279301843202148958871677 -0.3952163240756655529212705355453418848569049122249531536768131848 --0.9395163144138835125672454933008856593503204403133472584898229717 --0.08780353633292157461769946866167963633505729824902226238512671868 --0.1743560068378512679152575299947443762504689480476570621749324843 -0.6018835924636782523215034400201993341434060856497418585329625279 -0.5094537464059880326374352490064905763350159638438638190213421193 --0.6412882157453879879998117648467144628970706782597054160685555631 -0.9017103216368149546517732133490469846549850682301607701578308401 -0.9631270643127979384664069651403286361478505285019531813591892173 --0.6210835173793688086670082589175993809833456274087668762475476635 --0.8137281645240375388576750044830353268919925528507904843095256157 --0.7041297500866612607234884784407130317305843364144413223065323821 --0.1235721593345202217795554759876880268687368789792682195280803184 -0.01793996302825844948175557573252934185711456214972052895861572493 --0.3411596862218241172328579047617234818967459872060847679144866809 --0.7379746599220903325806827424480469595800618414934950958452657346 -0.6843546378904107483368305041075808036585650068151329599810630045 -0.4265099420399003863248167494626862205659560797404855195341684806 --0.9874151891964456486571993218370826427302121071375833081581536189 -0.4601637140807105378191037234478805179877043129140064777542238544 --0.4841039802362244364267157134690841461075259779700777041439742307 -0.9965877589863013394561112420396792373833365736836351278348301833 -0.191567730523304776574190978829765313731471509331205854313016986 --0.9100049476348622207723944867294612891098821253248738836563459568 -0.8085565025927605798160394591787637574375967583263627553971120289 --0.8851479413535487385573817957243936843534909265401263726020814395 -0.6064591258881136876029163103297147737049475826316704311935105558 --0.7125906556497681391201675092436355218810428000432951124150783383 --0.7605582778547942408060351317015194879473019118917060721292547632 -0.9359455243018989598720894094889086512450300947660621306436953491 -0.64033297030031448665328828110131678884788143990971470968562862 --0.7566145378422368715122716757726615136162685098609876740055635889 -0.498393464867089132881118789295770940752838691384942740522239679 --0.4971948424110283155918942363898656650230845195141350175248779212 --0.3682837387895926737476498418989480477365801929350913148252356807 -0.6148970507477253459184467315745337121338375212139515007860628315 --0.9083524682273578446532722997799475788834527253595073048265657245 --0.3916716877161613504785809028033398517645549846406356231576213868 --0.5193518691808852117378350732261309854332184624171433727414006814 --0.9750431258817692289559363598684739941265076062018304867776204819 -0.05005097085661604605086728229374112382053058454731767435671635371 -0.4399150750505159978489133507713340072340352057744402647976718275 -0.1872909367861505164718492831692222169018789408412172493435499423 -0.9419321039051109549245680082622391092246632631231828777233002149 --0.4287041936652777153072881590344721321081952456510997660597381855 --0.2333391111205556198207256592076331117879880842914267473885863455 -0.7889477067277564731712862630611699647549102063099584994888747696 --0.2563747285446000361218237435955077669028092056157149416120292486 -0.8211574497098423675796354902233745259806437217163965161734702361 --0.2430326281692574737943057410600918611450147916626606070615468027 --0.5566744269539672218404388199827460990960984415899809143036909069 -0.4524110448637644360868388875231267640338311624103409145041788539 --0.4077100331640054846709900852315956380002910175183742932154068317 -0.9925432694290908433525570320250227385826836114793383624485189244 --0.6845441772530325736299180977635806745002567201737916085152286412 --0.5689275448635581694575383584343021970227104177442089801706330228 -0.3985567814775143901221253743791327148945266133080683203695999962 -0.06961382826101090949578301124383292455559947536661707583968975184 -0.04307050119059237005387541827491059927895209375649378090223139587 -0.5849881776459916509815348468661649535409940486756497653761724118 -0.02943622593745917222898833754618856585348471594569686881397428726 -0.3572417013316431962026919347150511042636763596269956578845059238 -0.8246603472400295391578505724317567517180656867730457579866275623 -0.08267470722577286001217633724236129336011575576077446531397711074 -0.5296493544860877224747590127030477951987987258874100707895850711 -0.178161671839420517570934964597356447578898824155879129858818805 --0.8633908949968827943561744577901901026376268752722144571223670853 --0.3459820993240706010475901311688197838023719669999227712290509004 --0.8814262497135981437569523940906532685397798861799997656375266034 --0.9722552720272006984678084914751283988556792015475269427349942943 -0.6486167889394565452584685154506739738504706411589692034776454683 -0.7237216114456588829885327945423834052953613010855527824331391861 -0.9153832161606877637775414865990581395464326012246760580785761313 --0.5010512652356920074204032205934276172215285762480987760943959851 --0.003517119711452846559277971844364606295296520854275366315952866112 --0.7432644962454565902867854377146609433353697756825593784757725371 --0.6678889143320625765336213759043802181180754155696893060399849702 --0.6231432486376980435414857670687342821530306865222818413703487444 --0.761265558015959776038963903242211813247582799987701574301727408 -0.1046561870893663260798556882535941223232955552582338303672866205 --0.4422178249719287625023613714462236578393297082084105686699745527 --0.3006761386836519584160039426021947715604263308295216335254395417 --0.3931472033430920383369653755030364057981520323323553764459192375 -0.800956473746882928456987043862133272850468280050235725390942984 --0.117336384734927911842612913616027626554640600021179492329548556 -0.4299591565232924801870368761556079288133632606094048768501521181 -0.351950842714972405603834006572622410785881893665581295538500859 -0.4719165407085054156880418423268675488422117760448059022673468457 --0.1600709565700552484491336034747507816107856100797576115468140784 - --2.111809776803488988436948812054555272398350969894589942799704 --3.7676932584563463640577500418008954627098675799292169678546489 -1.024446424689883205112422908127335572916079300246136233594938 -3.800331207796250030652646239229475358143749833034970227512194 -4.0321835742226885866418283850648760133173147556900180720782326 --6.5413065727426371347587154570162204868725300048974434102091848 --0.425206659622459808185038291430583808145193802681347133956086 --3.012118217186074637782753084065541272231294135057619353646427 -1.048012899581255728220779690070293916220301505425692254683423 -3.924993672502923813968539289393800170313143548921138460698368 -0.656640935413920519409098245823415934988874205005689921468533 -0.974064133704454889745217285348995115279816510316061118374636 -2.9782950338683630233472652720607849535197830140454856460623732 --0.644839370749254559988756769703931520709519025099781857626717 --0.4085461128930485525221254416238821270278760726324431326400647 -2.1977706852661815497486062471335720611316014209182630324972508 --1.809642424704533779659033549630359893022980358009594244727683 -0.0274256522310817694000469287253552189730549522184976253090582 -3.6062716329063201440827237471386778809979280129787903857344757 -1.257383892897807379716288129173053072271525735549588690560581 - diff --git a/tests/data/nfst_2d_20_10_50.txt b/tests/data/nfst_2d_20_10_50.txt deleted file mode 100644 index 44e84e66..00000000 --- a/tests/data/nfst_2d_20_10_50.txt +++ /dev/null @@ -1,331 +0,0 @@ -2 - -20 -10 - -50 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.06662280658222395292277120308710763155061492956109425585060104387 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.03033282430572675531746093685427819991131474555746947624302750854 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.298624483401859785505117280219513339075442699781715140864259155 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.08207325709908859955349127721623747402414949341932039321448366214 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2960310066429102964680480971300708536474348030395899411240080615 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.3828540819028855178054925224849411075824391563611448148957922752 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.05516004143072870448596121508383272033655812692006033619596436283 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.237543150470257374929526975092414814248607042083779025974909265 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.1961792130308639250827480820713033155829089724167338962105237746 -0.454917586626400190455113486728514743998772785129201763658322789 -0.2142418523833641190529439639573092332483770122813062909521274767 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1135357677968130998829352447933571252330847135039649993495538834 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.2964172037543097881772010061608292321688207375187647517994300766 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4548285955464891231119288561274837990859107268507022268607509726 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.3651121872834882789243463430471126314059253082862846478910152932 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.03483660428292199961165049752462598280091915037295030179924953551 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.1992804389047949490230324961860853758231538395748301207070552558 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.4431890540148335609220307427015664134805998752712734611429558024 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.3054113878224388525727863803324009276678724038269882973431353032 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.4515130176933212461457379892011009039970207793061012850021972899 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.3123746114641262123026545021046848366396752725405471632077695806 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.4231801157326450939593950301163204387907848365988263186034774935 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.3371051625361155191605058367081984631262698548567050132698474129 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.1158569246667318677726382100194916993028532082942523770687608535 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1257540256523933131861849134591394031118487575140133228233992713 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2225091693511738630364909160801392395880684222208336319127352641 -0.230402910644737899027368109577132641139999484424691959789185425 -0.08108630935780192087288539681850579539638581750949007810609253602 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.467183882923008897863779786990467499952265441334467024356247305 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4143426837235721258639164387297265587502064987110615120264960548 -0.2472557826481684830963989449602703101137738953947821260330747 -0.3260230638578554310965690714273014694353795654392329747815338185 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4230828797886864872654427218269417536997368489213584227186758493 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.03008038880397752995464766841114511366776748602297501273741588034 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.2440542348872463086448971798771983090954435309328837698833409855 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4963749181604996707711627826124667766173996319815968541805691201 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.4179251390915574619103395034989051818090561346584808617678582754 -0.201326401841226822499265144634803231090444660833635656408098582 -0.04054892266065765506430027504488194441193313938297750889020142059 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.1523991209807376578892471212997508118935752110980944656933526434 -0.272502449871235944005176337000832389787308384521685260378340781 -0.3399053735581819219789408147619129792234385226566519339286954902 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.4489657084957520867684053250236424967958623562309511687501852153 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.3853132582342397948923973854575145468799173563498982036485609219 -0.4639578196637028654618426122960844569745924535620377426170001163 -0.1846615566851474560808622296504386351174368575753366711982657403 -0.3839126554233829641792241169995056112118738549435185680451106415 -0.358957081013045692924547554419897111750212389712572443828564006 -0.2368715426933632797203883114608453601301280965983514357031010166 -0.1015633551925185741450449528428193261899769078214801258496170621 -0.4879523795531072195691844705038987386977815390062911906717683948 -0.1695489630155716515516037599674566844347401374102940702411774109 -0.4989055963203276874130654061778803284303962145484476976641785229 -0.06597713563134875196413388873157392316448289978881662980442866809 -0.4185263199001522458669142863738759200408224269123403780399225034 -0.3882968411737077793182460913076719955990003553066639475551853515 -0.03255623598208432111570732264349275889070247369224840425020245548 -0.2535439404935544197331984232733988640549412837971456300023465276 -0.384865504568687870081160661201127839598602309270532264614380477 -0.4224397119523030811054991897313901508203320370822952833787588886 -0.1431288743493055020786095199054726087526637606135342513786504868 -0.07508242151240927532040654326055125402842379765322060248915709291 -0.03488256247317815731161238939613475543191815994111601665491122214 -0.2172580560639218655701442687403257247049109673251844219149842137 -0.3455515607589044047244320070401003626747106946235853743454314733 -0.2726237581724535975061505494183730437837098775266075552558040507 - -0.7721031360269444536624854764846278079390436516442447307214583713 -0.7113282365127787106295924505560767722199840055537543517442585349 -0.7679535856628120283990827155162180966010981503917935490380557142 --0.6127602430473631495393181955733023028663546816025211937039540524 --0.5944056790460496081717996899055920305811666877696698395774078378 -0.9839367502424209997890558933686976016082869978582241397510153252 --0.4548419343247805224460011391703079342763504118566706946966391853 --0.8849845588398620212194475625021727518116463369860566764411889312 --0.2496600323413886386258990085306122333313701779141184118995463959 -0.2013567579813494116381818105314838610969816486807952028421948124 --0.85858010457166611374976182888109386496982051035674989499979384 -0.7326702292582058588316598422918662773838658327971514003421703067 --0.2697443704573465465233716116511309018200366900116819867580635278 --0.6468087813680422377672655136982917947328505318460482424201962 --0.2812302577494115409480047067683469320314228801749259890701395474 --0.02167413194230472805204979364706614220652157873015883116130884482 --0.680894955890704100546661726757747116024714493408288024374190234 --0.9306530725185795934583927665790248017610038861531896668451002839 -0.3319152007540851906913026983763584438955853838764895977762668678 --0.4414898031680223608932387792017485771255689761890070706015387399 -0.04675554236208552284539297942143061834219393972333359647545914081 --0.8152568938325646993310760006867681539054279301843202148958871677 -0.3952163240756655529212705355453418848569049122249531536768131848 --0.9395163144138835125672454933008856593503204403133472584898229717 --0.08780353633292157461769946866167963633505729824902226238512671868 --0.1743560068378512679152575299947443762504689480476570621749324843 -0.6018835924636782523215034400201993341434060856497418585329625279 -0.5094537464059880326374352490064905763350159638438638190213421193 --0.6412882157453879879998117648467144628970706782597054160685555631 -0.9017103216368149546517732133490469846549850682301607701578308401 -0.9631270643127979384664069651403286361478505285019531813591892173 --0.6210835173793688086670082589175993809833456274087668762475476635 --0.8137281645240375388576750044830353268919925528507904843095256157 --0.7041297500866612607234884784407130317305843364144413223065323821 --0.1235721593345202217795554759876880268687368789792682195280803184 -0.01793996302825844948175557573252934185711456214972052895861572493 --0.3411596862218241172328579047617234818967459872060847679144866809 --0.7379746599220903325806827424480469595800618414934950958452657346 -0.6843546378904107483368305041075808036585650068151329599810630045 -0.4265099420399003863248167494626862205659560797404855195341684806 --0.9874151891964456486571993218370826427302121071375833081581536189 -0.4601637140807105378191037234478805179877043129140064777542238544 --0.4841039802362244364267157134690841461075259779700777041439742307 -0.9965877589863013394561112420396792373833365736836351278348301833 -0.191567730523304776574190978829765313731471509331205854313016986 --0.9100049476348622207723944867294612891098821253248738836563459568 -0.8085565025927605798160394591787637574375967583263627553971120289 --0.8851479413535487385573817957243936843534909265401263726020814395 -0.6064591258881136876029163103297147737049475826316704311935105558 --0.7125906556497681391201675092436355218810428000432951124150783383 --0.7605582778547942408060351317015194879473019118917060721292547632 -0.9359455243018989598720894094889086512450300947660621306436953491 -0.64033297030031448665328828110131678884788143990971470968562862 --0.7566145378422368715122716757726615136162685098609876740055635889 -0.498393464867089132881118789295770940752838691384942740522239679 --0.4971948424110283155918942363898656650230845195141350175248779212 --0.3682837387895926737476498418989480477365801929350913148252356807 -0.6148970507477253459184467315745337121338375212139515007860628315 --0.9083524682273578446532722997799475788834527253595073048265657245 --0.3916716877161613504785809028033398517645549846406356231576213868 --0.5193518691808852117378350732261309854332184624171433727414006814 --0.9750431258817692289559363598684739941265076062018304867776204819 -0.05005097085661604605086728229374112382053058454731767435671635371 -0.4399150750505159978489133507713340072340352057744402647976718275 -0.1872909367861505164718492831692222169018789408412172493435499423 -0.9419321039051109549245680082622391092246632631231828777233002149 --0.4287041936652777153072881590344721321081952456510997660597381855 --0.2333391111205556198207256592076331117879880842914267473885863455 -0.7889477067277564731712862630611699647549102063099584994888747696 --0.2563747285446000361218237435955077669028092056157149416120292486 -0.8211574497098423675796354902233745259806437217163965161734702361 --0.2430326281692574737943057410600918611450147916626606070615468027 --0.5566744269539672218404388199827460990960984415899809143036909069 -0.4524110448637644360868388875231267640338311624103409145041788539 --0.4077100331640054846709900852315956380002910175183742932154068317 -0.9925432694290908433525570320250227385826836114793383624485189244 --0.6845441772530325736299180977635806745002567201737916085152286412 --0.5689275448635581694575383584343021970227104177442089801706330228 -0.3985567814775143901221253743791327148945266133080683203695999962 -0.06961382826101090949578301124383292455559947536661707583968975184 -0.04307050119059237005387541827491059927895209375649378090223139587 -0.5849881776459916509815348468661649535409940486756497653761724118 -0.02943622593745917222898833754618856585348471594569686881397428726 -0.3572417013316431962026919347150511042636763596269956578845059238 -0.8246603472400295391578505724317567517180656867730457579866275623 -0.08267470722577286001217633724236129336011575576077446531397711074 -0.5296493544860877224747590127030477951987987258874100707895850711 -0.178161671839420517570934964597356447578898824155879129858818805 --0.8633908949968827943561744577901901026376268752722144571223670853 --0.3459820993240706010475901311688197838023719669999227712290509004 --0.8814262497135981437569523940906532685397798861799997656375266034 --0.9722552720272006984678084914751283988556792015475269427349942943 -0.6486167889394565452584685154506739738504706411589692034776454683 -0.7237216114456588829885327945423834052953613010855527824331391861 -0.9153832161606877637775414865990581395464326012246760580785761313 --0.5010512652356920074204032205934276172215285762480987760943959851 --0.003517119711452846559277971844364606295296520854275366315952866112 --0.7432644962454565902867854377146609433353697756825593784757725371 --0.6678889143320625765336213759043802181180754155696893060399849702 --0.6231432486376980435414857670687342821530306865222818413703487444 --0.761265558015959776038963903242211813247582799987701574301727408 -0.1046561870893663260798556882535941223232955552582338303672866205 --0.4422178249719287625023613714462236578393297082084105686699745527 --0.3006761386836519584160039426021947715604263308295216335254395417 --0.3931472033430920383369653755030364057981520323323553764459192375 -0.800956473746882928456987043862133272850468280050235725390942984 --0.117336384734927911842612913616027626554640600021179492329548556 -0.4299591565232924801870368761556079288133632606094048768501521181 -0.351950842714972405603834006572622410785881893665581295538500859 -0.4719165407085054156880418423268675488422117760448059022673468457 --0.1600709565700552484491336034747507816107856100797576115468140784 --0.7196566232553047172113131790990428945643928116318893875786802199 -0.9506852903491360468879758484099667312771993016096956267658366287 --0.3776736725704435658453332291251578463493585478972191163904289213 -0.6001953620324393368833490197603304801854572549372059847172328017 -0.6978878736648347125949172253483236996713754832649550025174381314 -0.8508443401291057488517795791511283359984797073308503806275388226 --0.4669474695063991815703085816201270850746349019459750890255838246 --0.4916857659539131984511014678316277462480514807356006060275370059 -0.6805454442564243054841615570704809357725921633306984108877804159 --0.7429928693445994197394008924008488085983664860223161935727994358 --0.6969676211949719236627008807329635886036631346596064918901094455 -0.7197019444966162425693701580554867509036572823057158142921206547 -0.7821091276993633157184444189269089852199610591029476119050859896 -0.853322612153932922155019514171215033718470215426888526974581991 --0.527123190429983130601023007335782170127141621028130059541603522 --0.04518836599707041257371263007133991513702551585551047967233360089 --0.399491020501502399597869265119952339350000411493961463635298064 -0.1151112248581587985459044273509734339372139569519498681662926204 -0.4120054991803597141675815179438163442823969621208991056428168406 -0.4343579826046095597725968699957767082823418268721181549420071456 -0.2535126428268633086086116718856542176680789611156801564801311848 -0.0757591082002124635881632323270228980382304124620507025889787107 --0.009921455995466628736212379839332998874975285848956671613709936322 --0.5891566693005274615768435832037723406013603962165946345013825592 -0.4725424296459514103640632185799575468737722475096114637473172301 --0.3642689669126664223527375212471788979005234643229363317834063467 -0.9106160875739411428476569185959640646231793213239998804082355729 --0.1554296096295892351142787706783742826880784898341993011418432069 --0.8069065915498787556695276318086362565827819941733622970182376756 -0.377414941913701641980604281714521283600422741949240555908727434 -0.286257156034881826917947161474943151268083089341448769053424682 -0.9392006333865916821227548404291848184201007925131229813910957774 -0.5114205299580920868823613420213360686329180904621350249508347984 --0.6408078680635244612899765081025913686282954450887306823350772997 -0.61034769186326371064247171222348075927083751612531179530760314 --0.1695324055840820458497589349479760035964663521113253737383164439 --0.8353594742240205937097730115138661305557325449129426505768609534 -0.1821483418007667766250895141417107286953921543595289977783017637 --0.4074526958925963909486488891837393063126910851657623153854908031 -0.519412312832116093970077697359996336676003120133546342882630559 --0.1339026726689501933617889040862807661257038358606191032725698017 -0.1617840119849052908674425797539541379830915417411164257796009655 --0.5833399591688895541493678958036554117556929951798174740043291689 -0.2558611196916433369649336532000849479904305619298222327625863899 -0.9637184128969163713272727389388526394331293708405231601274766637 -0.02398516466411951663039478357357263297576765858214578984119980389 -0.7220807768185265925885711430037484304092954076856054861183001563 --0.8314034062393001851412680462190559603040746972786212429324375224 --0.2313683087056718682580625867623460795004227069874977160354372877 -0.5241531162028989758906123049906275766571616823241720374203214447 -0.09003216360057281587724105549690566269005814841108581287665281058 --0.1599268816032428776743959117270259866309677355351818460136443291 -0.7126643265921692501928118835762400720628273345745039396768073268 -0.1443381463559750344148688262608847179704805274810841956785523095 --0.9541149480810226451568227541620900387924893378859274527595762471 -0.3516772517804962317135771244694045300550581304302552629989927399 -0.8312645047002901343481040986077492354211106507977246573848547872 -0.8922074343575836687927424867109565448477559678636672119414443701 --0.03914580715076807517564668371313115131680481962361916796431130169 -0.9746573852711840936336177201962708050687509298510135226623575906 - -4.6238451157900571934629922766236550084069009081771747898529725 --5.9271945813563327385504097591787563332255642493703399238227883 --2.9325665264379787047182987101512536229695161729900023642470657 --0.4460008583260121631726268850657503310183030361704235632432696 --4.0350157981755990269226896548311231060962779589010546731356407 -2.551212915675872454515270405936876757338743160537350324120236 --0.078553630638134257219386073942660203769574142773842810270639 --1.346339230178235193895857355702463250403908164397615133564673 -0.506322033834738671975541205890831859804726659368804148632046 --5.294586280283685272957517103500309186466753370005466838762179 -1.989936810450106959474354065783921148053342071306861647358496 --7.376596899651098968541850470468494778711197547548043661431171 -4.172154030231339805107128302699627584951829968546683785364141 --4.297620541520366016227361784551528132333818015456479376818234 -5.5547780077074733943528737595972806876003509791770705607162086 --1.0902415229660823384638809524047502531596091892243968202828291 -1.674121858418029937372232324299050486039616764585879984159687 -7.4821612236253036915910249508313110021872704600780737526976054 --1.2969621680121037247098498592107575033742447231095784350030116 --3.396086003600507884067370434367031505593590557090672677524932 -2.5587338206324229453056087313970508704313554466120674771897328 -1.4436946693842706804210498420994926589802002426625677301659497 -6.1127269882211552212805940610331966716695235051833179670241564 -1.3266127412465701192315324411663655133541657467942547553615931 --0.774311107969271695310173227597334334816920283156442535550796 -4.8475476510127700161927991878692494431833211656693612415820003 -3.7533851392289638500006806468315376445461761653225924517255222 --7.052905286402646775521642198669667179251741067715392927650703 --3.9035763102221555564970887515486292322351658068654382300220212 --0.760968969954238985431671508602130228320219804919638953925353 --2.9296642113220226947764928622319785993392366934764298015885519 --2.4553944687503674735945116455146949642691928489401082292017779 -0.919162229467909713031320359753707872726145187066216618323851 -6.410433756288620236226965980642800404127901432053922415735498 --6.5121107488996594372124087452716698963285821830244013112210789 --3.0075456040385664801572084919248952597801749739861757811373736 -2.820144524034353561866221938326884749628179117851744469694653 --4.32357932944481532462976386781239683451308730650257048932702 --0.442278750862643598459304112747383701722438814254654610825392 --7.808200564623883711850218403646434187609100129787237362571033 --4.825578813298361562061214435169524611290840486411994655384243 -0.7717356998744077254890280983722275455551018174000458020290668 --3.338247850452932441911354203883481839220988281173900109116532 --0.068987465190488871913036642336570567153930636795955303031118 --0.07061293297486790059250641277590195092537445354262665847774 --6.1225587041605879670041476865569996308597627929574912489507918 -0.317395339240975005027609235841305457850523944388783128409976 -5.7424618797919662996384272581675897597096934217011496412341319 --6.2975649527941705191408488456450193743912837827966155567986295 -4.76760613156555321562603614820110230721221379460543815517624 - diff --git a/tests/data/nfct_2d_10_20_20.txt b/tests/data/nfst_2d_25_10_25.txt similarity index 79% rename from tests/data/nfct_2d_10_20_20.txt rename to tests/data/nfst_2d_25_10_25.txt index c28a9951..d0a04e23 100644 --- a/tests/data/nfct_2d_10_20_20.txt +++ b/tests/data/nfst_2d_25_10_25.txt @@ -1,61 +1,61 @@ 2 +25 10 -20 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 +0.230402910644737899027368109577132641139999484424691959789185425 0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 +0.1710423719261291377159530030970313591027039443678008179710535332 0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 +0.3364577288497801964516769273084333242643301891666864527719104049 0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 +0.2472557826481684830963989449602703101137738953947821260330747 0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 +0.3156638964725781243541272856934334091751310165287943458804827568 0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 +0.1291749563767577778093174420442248066853355018583144808226772126 0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 +0.08822777041715483808900537550686335988124286767733376669602735212 0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 +0.4873897775905716183934451117229193992829973538264409415320627283 0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 +0.2820193117835646460363939425636435303399129252463767075702079429 0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 +0.201326401841226822499265144634803231090444660833635656408098582 0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 +0.04021826656973756695539173905743953803655775666757835902774775232 0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 +0.272502449871235944005176337000832389787308384521685260378340781 0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 +0.2058296915808363530212836937615578729259850336228305216098969207 0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 +0.2249375001022399482177021326361767602306099380452021854751372688 0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 +0.4639578196637028654618426122960844569745924535620377426170001163 0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 +0.3839126554233829641792241169995056112118738549435185680451106415 0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 +0.2368715426933632797203883114608453601301280965983514357031010166 0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 +0.4879523795531072195691844705038987386977815390062911906717683948 0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 +0.4989055963203276874130654061778803284303962145484476976641785229 0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 -0.7335087736711041883089151876515694737975402817556229765975958245 -0.8786687027770929787301562525828872003547410177701220950278899658 0.1944979336074391420204691208780533563017707991268605634570366201 @@ -246,25 +246,56 @@ 0.9106160875739411428476569185959640646231793213239998804082355729 -0.1554296096295892351142787706783742826880784898341993011418432069 -0.8069065915498787556695276318086362565827819941733622970182376756 +0.377414941913701641980604281714521283600422741949240555908727434 +0.286257156034881826917947161474943151268083089341448769053424682 +0.9392006333865916821227548404291848184201007925131229813910957774 +0.5114205299580920868823613420213360686329180904621350249508347984 +-0.6408078680635244612899765081025913686282954450887306823350772997 +0.61034769186326371064247171222348075927083751612531179530760314 +-0.1695324055840820458497589349479760035964663521113253737383164439 +-0.8353594742240205937097730115138661305557325449129426505768609534 +0.1821483418007667766250895141417107286953921543595289977783017637 +-0.4074526958925963909486488891837393063126910851657623153854908031 +0.519412312832116093970077697359996336676003120133546342882630559 +-0.1339026726689501933617889040862807661257038358606191032725698017 +0.1617840119849052908674425797539541379830915417411164257796009655 +-0.5833399591688895541493678958036554117556929951798174740043291689 +0.2558611196916433369649336532000849479904305619298222327625863899 +0.9637184128969163713272727389388526394331293708405231601274766637 +0.02398516466411951663039478357357263297576765858214578984119980389 +0.7220807768185265925885711430037484304092954076856054861183001563 +-0.8314034062393001851412680462190559603040746972786212429324375224 +-0.2313683087056718682580625867623460795004227069874977160354372877 +0.5241531162028989758906123049906275766571616823241720374203214447 +0.09003216360057281587724105549690566269005814841108581287665281058 +-0.1599268816032428776743959117270259866309677355351818460136443291 +0.7126643265921692501928118835762400720628273345745039396768073268 +0.1443381463559750344148688262608847179704805274810841956785523095 +-0.9541149480810226451568227541620900387924893378859274527595762471 -5.5319773784298443725253092622157214269236837852028251736349098 -0.2494881537496739346332178123451293324575827966223924420357772 -2.3471093501925545311005729085247522076372949877766852452057874 -1.41220293592469354572091576263561191686588459860512372575317 --2.094040153737036568415727371850328333481934111040996941917872 -2.4706888788619771219159049465908881041933666708373948039889094 --10.4530489838578489966033702550118885161352895790165768260703546 -6.497972932454737093153114197296618620658538902804164475835067 --1.311112659305695721790098945319908203785147132799578881698342 -5.409514700298341321517346826944666718120792229781393447024353 --0.7188197747989300014263248522177714750886702019856812933653815 -5.518502894692485732482505465514554436359509129326904891994083 -4.087474288973415752658280329844356075372719407416668586620978 -0.705372785404561836604037153959360018879786564080366420123279 --1.795868401174790526151329699852086024255644348038510259964843 -4.2810165490865755122617117862813739261153684202971844338514486 -1.392571221914814033593333460085261625424318303719078543274639 --0.4220771769650736912611063085630006175024237841939348508194456 --0.9120560975337911137366679543103134737416668541880248792512467 -5.05122869246961215363425034178154477953603704093868665435386 +-3.885005805798412693740602547045903214611154227937681715140081 +-0.870724916849934478964815143880456874347933047853313972100232 +-1.988521398995594941672864542410841696039436646962281779871278 +7.796947670100138059218887402983229391378547264149322013265248 +3.746019578997803869825836568831401909595376602401622074387923 +-0.683701569236664527067491382085860728232989768250790613173833 +-0.952386337304837126232552859683649860514664911914579784279489 +2.32706564802442592346450922967022122763778227379612175596372 +0.025965057487903719416803847250654325694315724909962957422732 +-7.86646760876567528888910273720556183070900494714173843976683 +-3.099745107867695804221428778325574395081833973118230508921372 +0.458076680191493342151412957823644522002601939711524723076225 +-9.2156472862776474406811963713184742674769328696587764122622792 +-0.880809750178020378211503877735592215726477845017452944607076 +-3.7314226196281884876825748522992663210934710625664716584155985 +-0.2577669936023396788049229837148155264575222959780903591608048 +-1.728786012619526250188317894621351228590994697834984776011012 +0.783497988926926180712958599248787927492456747110682493227959 +-0.222338719314303979595819452877733290127576065843714909255149 +-0.866356191570741586668685984858862505648041920690602935715605 +-4.6331761060836294662771453843201874399855333278444009555396936 +4.2016672503114008311619400886135351716479319995849169912723775 +-2.316065461439102893404717565835105828660295054325315279885827 +-7.836122752565164256177012959077900584092664382912834408114971 +3.106322145756953242396258487286788547564904671148361929398128 diff --git a/tests/data/nfct_2d_20_10_50.txt b/tests/data/nfst_2d_25_10_50.txt similarity index 82% rename from tests/data/nfct_2d_20_10_50.txt rename to tests/data/nfst_2d_25_10_50.txt index 8c25f48b..a673e572 100644 --- a/tests/data/nfct_2d_20_10_50.txt +++ b/tests/data/nfst_2d_25_10_50.txt @@ -1,6 +1,6 @@ 2 -20 +25 10 50 @@ -306,55 +306,71 @@ 0.2571290378683215613044136510821588749887474163677002652639520119 0.05683348973511969001808746192505133291481235528637618587938493271 0.8458238445504835463314748515393830432307810942061667936052115581 +0.2568190130746644331048317748223591322462097932104379543095780599 +0.9282397683744983930469496205745698232573096227549226254155622007 +0.6733680895626635922558736333908780380926273791887898430485173634 +0.6834258455476852992466772196651133096274086383123765308288566681 +-0.3197260966794518948885909003357003020869183279810950125249989182 +-0.3602154836971247653552601690662060499632143516459194629015046587 +0.5644944652643029946030943876077187355907298250270171876933333996 +0.300245006064926546622443908848084786661329770571675039165636725 +0.9109171936013987677935840681404253773950900911474823029568083952 +0.9809865904559495207084689029816148884009367903151903920423149056 +0.6673430101175698152854688993768041548769019864465421762641808302 +0.1912403836532585581545915780169638266665110774534903895312903483 +-0.8390872225468263142545242699093560592768485203012323759548269441 +-0.1694425027392812196149909158729299355102867577367629176586906841 +-0.1109481979293641305323565532634133494943626968908239858539934786 +-0.7576390226829376962602306885924643215709630457357178698800775945 -4.024293544857210307772047722675632344790547712675849194139763 -4.4500483900640083244050138414537842546063505867889118484329776 -3.7029357933834172888043919359696601584912997189210462055533 --3.458368598636258285488918548772600085428443494743977469796943 --5.3868882251198327968316357826291957557826035730380788061739458 --6.924290266695395631469082760399552886086787439080473636156096 --5.1026405287544984999879637102375817047467183548070171087325753 -8.451251199321999774659033490711367676094357430399415547522014 -1.519209099583369668988828687108974756386678658440553967067912 -0.771208675542460241312054226766638184247211474845871089256124 -2.763176890133910110245249753657188667308292227386172218694104 --0.985272807978351398337846973316558866869614039594523780120886 --3.4043322115444986435826165086489153219497973308535878719604644 --5.366875022489843060257571052432493726187593186366949129058505 -1.2127221977211809398179630512794050153812741435125529665371731 -4.0748420346720510543340805383249072139372053651831166662535718 --4.872528169336224343333301765176475205472482720792572964717533 --8.9935473997216235400961888327327380852072417527412349611776003 --3.074678000326227214287588825985405229648867680541729657534482 --5.239166372380062008565886114572503076687525585172617189848569 -6.0900934478039372470990510517466828638086353146217690302381914 --3.4407080100555174834891128586902224438336974015886593163821106 --1.3382460141194125703415816937680933419425102580752702756664803 -7.076502665958671997816038625333099030058543651474076922826617 -2.855558111052952574018461537043736316891333730197384119956432 -9.3737600090846393705140546878365213780387455711190371423815629 --0.420219204170415436966068024725743311775000183607817488468197 -5.419077519444436257220015566537306050194451828050103842291853 -2.826102801408043798911615696294928012958218058797855497947639 -1.208869856659930715923087929311566785110473870051558621786607 -3.1211425678797512802198829813397959964093014919226473714575528 --7.4896973419974987244387946516993126225918620676909106993620512 --1.189494715341579958555100118937464949397676488400714569890769 -3.824790666388708424981728169114873446941450935847426976135334 -0.0030752269833926212975542210871555534674253864139214305784558 -3.9109587545398332559191893556380395950392930279521244672831774 -6.199134874217678443574841885769617368857443078240343053324414 --4.17398776640598711910432118906396606928024708126822441774399 -1.278393273347621667615658597996830439720471298338338201217167 -7.24329297342170317734606146337946106438290410310621471640236 --4.311099075336348703687226717005642519810592886162254408477605 --0.9246200117570906705425503378414082624689722473512935958197793 --2.737251275707586992254121516492890671230960652421778088452918 --6.3970531644509023763380603901758491217073956579087632006116673 --3.294753271259449140422223072070028745601170417228309674460208 --3.9562650297134646685549634693465530211412522040899697305236576 -9.314791806542535976460748658180196079916919086086825706627811 -4.6387762461202570220725478771816435130407397845994874903901691 -5.0320315014272884214423587955472357679184086013576889495081739 --4.203181716622642954540745739624512849836927873934207578206411 +3.629400474431357303475798215019321224665107337839515516123767 +-6.231234942412924369722319219368305625634805588980738360865704 +1.270722773042784221818952241178829405330321788204809453442835 +-3.594514774350265531235730866238417355179099331573616219604262 +-6.77233322951929522694327590410744334611015647251773744920969 +1.361222736753350987599506799818199260923578925910140351481503 +0.184196022220461964885562029271353581420732569242691086018491 +2.113352382015382977336330158165446882628389336142399978525812 +1.395635298224763687723375606643295707244182184592773961762991 +-6.128776247295656556111425107584160595070312854073332462948246 +0.381857727568194128401402265549510483977724702390405333266238 +-7.029053027882084731079035825980582265503475395764875034362979 +2.9896768235785912283151453819142440967076545872322677722162195 +-3.197305170389842610440316995988901998708314228140217052171376 +7.2726352064209379421969321374176766762541831231466156155523427 +0.947087959311432775502788776877828265469286307757654435070404 +2.484502190086777421550820902799224420933592877459021361129975 +8.6744587984790807457628166069094662539859763883025721983508498 +-2.696637433014750694035285547482153756419975593988836945141206 +-7.510025805466485691471153055350509906688617413461813201848261 +1.484086920642242541555275663383281906318753270094132405307633 +1.9066760192018902364588315882574352913306502616546134121803414 +4.6739607218842405872707523249493821733293923468328411491958043 +4.132283657970071876174866371756280625979660472757247526611278 +-0.120244166989971579371371668005088587590701524815780680372047 +4.63268815883290324481352705412683293904807162105016186850892 +4.804951413943584472957827638177260764198542259610515911817433 +-5.512367899558209996192834885615801257135135522161752449407721 +-3.389722457286523653897675120203304319249714664069010837933263 +-2.004126156007035428507357781687098911638837973077735197231219 +-3.5667308561986500783688971237214791473454211370001845898752672 +-1.5262929310389328466433852169298303315549268219794352657143541 +1.190812810258406965487774942857049564714517133045975183555943 +5.480917058112571757133177780235849695601551570846356464509116 +-7.7315349050252321481125917454483795138049258798057230352337289 +-1.8061240722409422984056613402003594865631292513671926824504468 +1.660007743934509354924293737786303302878534548246828275123365 +-4.270797984963468616080056121266167250566371323646859560529878 +-2.556819025477003281367319176715106847416677055433730797977791 +-9.152835173432571150392084417730756281635104397652367726215563 +-5.015201400753218646349571403592778257793382662851490020810094 +-2.863802329265499050523312330222010073676308836243380723497285 +-1.941513119941013476486412123704144746218037401577848784661427 +-0.234128743888227349769552663826579766820262930904348008727341 +-0.394404485065064152079332819669898269953325988706107488255151 +-5.8975493525973830435274024645406790422920567144335482731133991 +1.893133003243317079810770370134328072423638695503263356262886 +9.6403259078431164578326033514262998291061042418378050150326449 +-5.0805136750646827955235073235064721767863291388123157277289927 +6.817577205947560744709292948143154088348390139704971762820884 diff --git a/tests/data/nfct_2d_20_20_50.txt b/tests/data/nfst_2d_25_25_25.txt similarity index 69% rename from tests/data/nfct_2d_20_20_50.txt rename to tests/data/nfst_2d_25_25_25.txt index 61ec00ed..5c09e499 100644 --- a/tests/data/nfct_2d_20_20_50.txt +++ b/tests/data/nfst_2d_25_25_25.txt @@ -1,111 +1,111 @@ 2 -20 -20 +25 +25 -50 +25 0.4086947450855356169152189517431289973211444954704229578022411938 -0.06662280658222395292277120308710763155061492956109425585060104387 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.03033282430572675531746093685427819991131474555746947624302750854 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.298624483401859785505117280219513339075442699781715140864259155 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.08207325709908859955349127721623747402414949341932039321448366214 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2960310066429102964680480971300708536474348030395899411240080615 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.3828540819028855178054925224849411075824391563611448148957922752 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.05516004143072870448596121508383272033655812692006033619596436283 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.237543150470257374929526975092414814248607042083779025974909265 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.1961792130308639250827480820713033155829089724167338962105237746 -0.454917586626400190455113486728514743998772785129201763658322789 -0.2142418523833641190529439639573092332483770122813062909521274767 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1135357677968130998829352447933571252330847135039649993495538834 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.2964172037543097881772010061608292321688207375187647517994300766 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4548285955464891231119288561274837990859107268507022268607509726 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.3651121872834882789243463430471126314059253082862846478910152932 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.03483660428292199961165049752462598280091915037295030179924953551 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.1992804389047949490230324961860853758231538395748301207070552558 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.4431890540148335609220307427015664134805998752712734611429558024 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.3054113878224388525727863803324009276678724038269882973431353032 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.4515130176933212461457379892011009039970207793061012850021972899 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.3123746114641262123026545021046848366396752725405471632077695806 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.4231801157326450939593950301163204387907848365988263186034774935 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.3371051625361155191605058367081984631262698548567050132698474129 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.1158569246667318677726382100194916993028532082942523770687608535 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1257540256523933131861849134591394031118487575140133228233992713 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2225091693511738630364909160801392395880684222208336319127352641 0.230402910644737899027368109577132641139999484424691959789185425 -0.08108630935780192087288539681850579539638581750949007810609253602 +0.3617754793224075120106402493333532892515347077462591193717225348 0.1710423719261291377159530030970313591027039443678008179710535332 -0.467183882923008897863779786990467499952265441334467024356247305 +0.2551137528766617462886122490206495815569455954864954532175619087 0.3364577288497801964516769273084333242643301891666864527719104049 -0.4143426837235721258639164387297265587502064987110615120264960548 +0.4850387857231816989255603701842555993429712922989359894063243118 0.2472557826481684830963989449602703101137738953947821260330747 -0.3260230638578554310965690714273014694353795654392329747815338185 +0.1846756636605197740712178956225839284519707534951816516372261742 0.3156638964725781243541272856934334091751310165287943458804827568 -0.4230828797886864872654427218269417536997368489213584227186758493 +0.2551600602597774365486102373198315508673893529063690086963412748 0.1291749563767577778093174420442248066853355018583144808226772126 -0.03008038880397752995464766841114511366776748602297501273741588034 +0.4984872126540227872347412673378447253277376592352237791484436604 0.08822777041715483808900537550686335988124286767733376669602735212 -0.2440542348872463086448971798771983090954435309328837698833409855 +0.2885748634834933385833932549862271040440871541372365705684137295 0.4873897775905716183934451117229193992829973538264409415320627283 -0.4963749181604996707711627826124667766173996319815968541805691201 +0.4457173920991993292046584733412564701849156222343790520841535928 0.2820193117835646460363939425636435303399129252463767075702079429 -0.4179251390915574619103395034989051818090561346584808617678582754 +0.454917586626400190455113486728514743998772785129201763658322789 0.201326401841226822499265144634803231090444660833635656408098582 -0.04054892266065765506430027504488194441193313938297750889020142059 +0.4079086363050430457531464820775705499259143611256467000966551659 0.04021826656973756695539173905743953803655775666757835902774775232 -0.1523991209807376578892471212997508118935752110980944656933526434 +0.4262853915271091927300453593077624529840040190987573602873697583 0.272502449871235944005176337000832389787308384521685260378340781 -0.3399053735581819219789408147619129792234385226566519339286954902 +0.02034287036894305904429050830899157906868801181466106875507838504 0.2058296915808363530212836937615578729259850336228305216098969207 -0.4489657084957520867684053250236424967958623562309511687501852153 +0.4014791536568069132914981035570219772502415235373212767068104629 0.2249375001022399482177021326361767602306099380452021854751372688 -0.3853132582342397948923973854575145468799173563498982036485609219 +0.0122144363785103387855708288972578764085549891342672612002911675 0.4639578196637028654618426122960844569745924535620377426170001163 -0.1846615566851474560808622296504386351174368575753366711982657403 +0.08488013489441359049422543617990278961495249513965560005231390596 0.3839126554233829641792241169995056112118738549435185680451106415 -0.358957081013045692924547554419897111750212389712572443828564006 +0.2954283565359450142698564103578812662540968472865286528643655096 0.2368715426933632797203883114608453601301280965983514357031010166 -0.1015633551925185741450449528428193261899769078214801258496170621 +0.03079002005616818689379437555430409384272056975521080286977436553 0.4879523795531072195691844705038987386977815390062911906717683948 -0.1695489630155716515516037599674566844347401374102940702411774109 +0.1993205021632423713244796634655407513154492251671262244936746809 0.4989055963203276874130654061778803284303962145484476976641785229 -0.06597713563134875196413388873157392316448289978881662980442866809 +0.2843764440248353437431031574790790615530404808188969002757705128 0.4185263199001522458669142863738759200408224269123403780399225034 -0.3882968411737077793182460913076719955990003553066639475551853515 +0.1396725310073930971210628469264965305404387421361487766333402783 0.03255623598208432111570732264349275889070247369224840425020245548 -0.2535439404935544197331984232733988640549412837971456300023465276 +0.01784014024404133452372719776485413728130086444052705410704826844 0.384865504568687870081160661201127839598602309270532264614380477 -0.4224397119523030811054991897313901508203320370822952833787588886 +0.1309003325323175020366797246711032353130982074800322503405568566 0.1431288743493055020786095199054726087526637606135342513786504868 -0.07508242151240927532040654326055125402842379765322060248915709291 +0.3046061152586201444129076750778012320620234017620442293273783168 0.03488256247317815731161238939613475543191815994111601665491122214 -0.2172580560639218655701442687403257247049109673251844219149842137 +0.3821163889372620378823133147196229781400957958066435726051067546 0.3455515607589044047244320070401003626747106946235853743454314733 -0.2726237581724535975061505494183730437837098775266075552558040507 +-0.7335087736711041883089151876515694737975402817556229765975958245 +-0.8786687027770929787301562525828872003547410177701220950278899658 +0.1944979336074391420204691208780533563017707991268605634570366201 +-0.6717069716036456017860348911350501039034020263227184271420653514 +0.1841240265716411858721923885202834145897392121583597644960322461 +0.531416327611542071221970089939764430329756625444579259583169101 +-0.7793598342770851820561551396646691186537674923197586552161425487 +-0.04982739811897050028189209963034074300557183166488389610036293982 +-0.2152831478765442996690076717147867376683641103330644151579049018 +-0.1430325904665435237882241441707630670064919508747748361914900932 +-0.5458569288127476004682590208265714990676611459841400026017844665 +0.1856688150172391527088040246433169286752829500750590071977203062 +0.8193143821859564924477154245099351963436429074028089074430038904 +0.4604487491339531156973853721884505256237012331451385915640611729 +-0.8606535828683120015533980099014960687963233985081987928030018579 +-0.2028782443808202039078700152556584967073846417006795171717789768 +0.7727562160593342436881229708062656539223995010850938445718232095 +0.2216455512897554102911455213296037106714896153079531893725412128 +0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 +-0.6756547625687923165084584127259768184144567299620396875756298559 +0.8687355316920355914551191479618699998090617653378680974249892199 +0.6573707348942885034556657549189062350008259948442460481059842193 +0.304092255431421724386276285709205877741518261756931899126135274 +0.6923315191547459490617708873077670147989473956854336908747033971 +-0.8796784447840898801814093263554195453289300559080999490503364787 +-0.02378306045101476542041128049120676361822587626846492046663605803 +0.9854996726419986830846511304498671064695985279263874167222764802 +0.6717005563662298476413580139956207272362245386339234470714331016 +-0.8378043093573693797427988998204722223522674424680899644391943176 +-0.3904035160770493684430115148009967524256991556076221372265894266 +0.3596214942327276879157632590476519168937540906266077357147819608 +0.7958628339830083470736213000945699871834494249238046750007408612 +0.5412530329369591795695895418300581875196694253995928145942436878 +-0.2613537732594101756765510813982454595302525696986533152069370387 +0.435828324052182771698190217679588447000849558850289775314256024 +-0.5937465792299257034198201886287226952400923687140794966015317515 +-0.3218041479377133937935849601301732622610394503588237190352903562 +-0.7360914574746049921434644450737043073420684008447334807822853276 +0.553187364694831117272984365230687982396001421226655790220741406 +0.01417576197421767893279369309359545621976513518858252000938611031 +0.6897588478092123244219967589255606032813281483291811335150355542 +-0.6996703139503628987183738269577949838863048093871175900433716284 +-0.1309677757443125377194229250386971011803561306992623123400631451 +0.09049503268981439002460219767349217513483951010643022102321620286 0.7721031360269444536624854764846278079390436516442447307214583713 0.7113282365127787106295924505560767722199840055537543517442585349 0.7679535856628120283990827155162180966010981503917935490380557142 @@ -506,55 +506,156 @@ 0.00904502267908283601336368137866081061069210352581761545503802156 -0.2778968847485682179896478779214700059419569060048743113852325563 -0.2784308881971247865302566270327586460636817633229294056506703495 +0.154652062686142233335996164065894879050336448396759084360086347 +-0.6225775243116540313116281463349420309042753281761340281921133715 +-0.471116359097837612645498505928182428889732655753776028642471372 +0.05019084624368743889926916934552108615492017653478974426758842368 +0.6461406780733109189385884425756901416390710262453176809391037054 +-0.3646945557234024586517840337629880176834748783187949036037901754 +-0.3370795553642254807046883165466968306962599317309657519831180634 +0.07406951035684034748316975863636120744360012351054481175945110032 +-0.0706071377017734071574459854474813417829167710025638691080824309 +0.09360709618916370956867688682300922265055482761303476467874635515 +-0.4903988627030185676892387805777880755902392098553657129246566032 +0.8668617192033373216803865611020212154378552305142050619982759533 +-0.1745567235833106956445457069963316833929324818668372064961096495 +-0.6495725409582065831276338775327045761031092852475255376332913976 +0.3132302317415336986457546693818300494005409790462961496623925972 +-0.08002014266656912107124326141465267585210492463107808149275462116 +0.8439760661050647193221008089223906976491469018983477783830651032 +0.2742491031513893827528343314344994279572977620848668278687664294 +-0.02731317148254747797517682815221303356852477238112794448774630271 +0.8474076414796548139557410486347838750741787558443005871442567576 +-0.05779005908514727153148268653835324462294291367795091759798861981 +0.6263509070486716842858384400904599373074897647536296406115669676 +0.9742953226314242461965632460638579799905807780876871234627553275 +-0.5412738282089598200095228242549815505925302427991012087392399282 +-0.2810841851319220937367807869615879057727320463374091858347990139 +-0.6332274216696186147542273193898355103863532218808631013492331016 +0.02172241435608649221235119486946747660849609106303200545112768013 +0.7184196840602424035733157087786269966875702807495568534158194777 +0.3749586907344833235687996618371211329945742347114437060445496025 +0.5197997067097932079572481275469253932045397138803211253153129772 +0.1001908957778599515703760968602291233036923939615286132670111686 +0.1982609831290281879535544386961448200899094658928947930993426901 +0.2265305308299656396847919737333043590525494945051651354564266382 +0.7906018990132069071786050772247164464130165003035494689544865899 +0.6124546368149888732224396347205514888588534382757197943350914313 +-0.2036417356829187550510823664309236059942206079488018356074124469 +-0.4438641124602506074890760872561035010575387638641217902217169658 +-0.544767226142520327341708643509310597533503231008421701753029047 +0.4877743695516254187304790685268488336758168947119202326402657771 +0.3326494238536684877812162306671513312155429822231139301441247885 +0.5288035512647287264400603641207174184836483925130588246958035505 +-0.05640118305249958065859491687650402005035008328934427052170270651 +-0.9339602027658081848487965258726967589939079607563390689984129939 +-0.321275957553128745693922641853921576922022691685968198941970056 +-0.1418273761530124142414318806991383724249955778125131615411614959 +-0.4264505073732180514731028302116498991019475563421457885360967122 +-0.3923419951379572363099277373060742200052172625687618481037698142 +0.8711561101780366371965222118006359089295680450882925107561352892 +-0.4467304300012012793076027789623627915431040635298455194234986428 +-0.2307052332975307401648420105809548829532849045676342380730437307 +0.6986593716253086507864036814802859528738405415349193484448192348 +-0.9881297466207630693750918682605017613031699244501296308233100941 +-0.6760661791650244249188462300591840173691864903003885411720888657 +0.4739376045463275401017721226048506342846991506758626675206797346 +-0.07231115199509153957529197477078330317517719228116128797380329585 +-0.2135268112097198247010681889001898755255288900766137207891430752 +-0.00391719982426902043959346995217451979511795015993884792888825644 +-0.4074397155278875973813395109079469465734104483931918973323186003 +0.6066576651382865740459746508693765522490832331025440239481867214 +0.5054494871102213639926772825334560876816388786177817611761657915 +0.8226583267458482637565255432456222691986173539474741807557700154 +0.9730166336949259260659399295334240422964809729308435599151328247 +-0.364185457502622256307866947693356486103622853614760666076420203 +-0.4001542376557859551557248563046997931549614286245539273687375468 +-0.599100169628289804012363486827377728153644244666681806548743669 +-0.8583780681190373783452031494167712583130326378561487627832196622 +-0.3045463752630304889449065225990597597721299636237444059518468086 +0.7886150417047268238377576739443317830511703278264640239600600345 +-0.5588043912338361844241544228067077162062321498757294327644573793 +0.907133074597731305198810561446025916829146667322489554834535833 +-0.524311683190174937888559570575683572384050389075376539064024188 +0.6581907342494117061956856142004712902056506998470355167826692893 +0.1974669756782317180727160357254418526609096592424426109684117699 +-0.01972112572276554306178203846081429764689884696412132525401824731 +-0.394337251493017165762973203726973092159618930132047937098203061 +-0.8596972563284409333221353720093891317237347467906295445875608281 +0.2054557247504006267846823161008744108436686866387260670209192195 +0.9164793193765776053806704726303778876533969118110393675531419928 +-0.6145730810103541808333969921377717371467821795648928293281783767 +0.007095154334222720138793901658750269696036135112599827909026723408 +0.8623200152218083367220882180263569709602229105502792928185580311 +0.2328862533541289876695060577850480885078345462436653283599123436 +-0.8594243434084773575696832444002804697287780740482575549078989199 +0.4665227761410612503864559792071327777686034364978804464477715773 +-0.9811624944532105651955157652071808929067746331174047524578239984 +-0.5372721741325555621080856058022867645684999577425925732434683467 +0.9142689324243093913109361832104779693761718654772557241029242509 +-0.8519800093917999049786710873262630254438596819890789333402870548 +-0.8663463923987564465482638692819190364387064757346171016284231869 +0.2709558465428488894177444835034893857451398992362135202765939096 +0.8083674519889074596117164158478163589581003465847262190755456111 +0.08192318101143036468909245818104351795349752285255508370548377145 +0.4432662295285746068645760939682334332432727709335441542485014646 +0.7098458531193496043308156335940587627787235570183896188894276827 +0.90322989019219600061196867059798813661922909644595685154839827 +0.4794254791268536633480562976950887435436025549286522438789030803 +-0.7746484154169456512809937246271660173202685744110036148882342333 +-0.2763771350523139054750111351929364757670962641805178507420343842 +-0.6737640502546376711965235263761153629368423334845050663282786384 +0.9860843557274707818224203215557433615103323795855487753603071846 +-0.09908250822208310979388125313393386625642518646689831540002743491 +0.4083364361722581165801901479594515422760935325739573558840448982 +-0.1987464128103913290537565707198845322065664181338633370605495606 +-0.5407738721582197458183352565621496660631978320791939263962860219 +0.3927066115442214638047153163113331662262162359392646773307752893 +-0.3547265721044417796948020637228927981006372674781249634536133803 +0.7443511718754498369053636558248957547288930096116725829118390452 +-0.6106514856175809946267252713465468241183844646996285763158471635 +0.976523926183381328411157151775497729758348938804345757697622217 +0.7738274296309371782471493836581620439388102593378042753716890516 +0.6303435590127475728343988381089812280592884794559438601115730286 +-0.484063371813939130083050651772175383209126084648446213771534038 +0.8525922176927925458770820230111251769664015980843161969462044384 +-0.08163044187898704046903120648457597371959955348165323805504010125 +0.421148022345636083380666926166508150293522832173233944655555408 +0.1636579949610354489441057651722542939624135888641020127310796368 +0.1158996829838767780820446554770404024129821417414276676244486116 +0.6122743525100609786427539952903164332986527922843188026822436303 +0.8287184948673512642625509766623864745682445181955817748687592982 +-0.9776838203117432640468561992811674532088503638852841073034452293 +0.4475824486005748840610281907314246250638614806065401547533877687 +-0.2012889019039510414651830187674193045950194169108930931856542009 +-0.01171834366241198933438406373716581804955151297150743304159782864 +0.4922455338395964925166766918239575749296275172064692575993556194 +-0.05364567611959903567502330013213963546585099551575719307976293259 +0.2859039723670674295294361938847146749682776282795557426834523284 -5.70287384299766372536490229499889348879981675046022691346884 --3.401548562381834269935363301302592703255520371982948738286276 --0.94413000838812518378639555503663857452123307899637840653151 -13.497045740798587179240499160558604321982023370092388545620221 --15.30951280873467184569816668759420274722290715048932505481663 -0.094445789338771412503945987184379977895851115044400437708753 --12.698911123744013497960467376951413788862153422630737670123128 -1.459137354168772964547385952569725908353456884336996021171447 -2.639129258853851080228775778180631482467438293437242867858482 --3.070788580196354721165520194137025463433790027305885826970966 -11.151941177883198048375925123555690816250475186836657942243574 --14.264274180323294772949781630608584825837637743788984825540203 --5.829386873985065405377227030500689435223003414587036100358995 -6.447667825946814171801776316155619726886770564102929195670248 -9.3906003975460888148930529134090520319311658666632046859997544 --1.731546914236432033048465902993931039151694841622172798052494 -8.566217819979837113846150587453132701499806783702487271305047 --8.084790098606801220696561995463146845950054095584340163287213 -8.259531475295963975461576984685284157991155142522666558821492 --1.594357772464967192772174601387033153338721812420860560779066 -1.06589990421795887520769947903162455347471335382887879147952 -3.669601457995595161655034079771673234631738112540540568502098 -13.642187102318265688977814107466308022710456217213820088527046 -3.667060763574348270350286854273955822357642626784611675829148 --1.391241676091191637744016396294145045414102859397243925678087 -3.302050607675532629229395553690785462081753384634939350509759 -1.00290064410295913082506507480821147452684781075875472572712 --2.15153190791412443978364001752718624337172846783805082142818 --3.371655677611821368254202775140551089172604669115539639503561 -5.536364751987388545029174240762777656330878377409304680649764 -9.21748688435047957525206453744103286634092074251639783959301 -3.731747412463057104969766782163269532716012639284286930566915 --6.045714057486955354697571759926218420098196232199237160712106 --11.265319535722186909398803372571096447764801370474566033499373 -9.088475590649881209374129834766670970112017608211648194764862 --1.138127468408792617219354421832964376271687726590127992143394 -6.147662413057248732278055664243750894414788785048093345911689 -6.706754026371221574766956245284012865762850165666125431509225 -5.050310945127172043426440720182848908642176161653614962173802 -5.789148647511209145313800625263297084198636689119384049292949 --4.709857401536315868979672279787073717560063222236557544005892 -5.133037231426394949485990140129376529429270403398042436547028 -1.526591801540502500130294649319900683585989894188708808147517 --6.959319696201942153213414349102515504875435459804117349461033 --4.692843801284806605111482057302283954473596220753955615524033 --0.520056755589451252728008087115063105826490168613808923309776 -4.062296628241439637490983754190167134888337646909985353321657 --0.160424969207331312153420455286108135478317052823652930963619 -2.118327904695505058938003573939422751293231972535975304832119 -2.444358287079080831340303399306012946347898409667575805345279 +-9.991840347809846863652926292972162434384104197488905364052358 +-9.483375146695781305101477842039609179686819097142694356744219 +0.108665125016779348928969814359769950853858336721957371081701 +4.378481897975460976160638786258250839155579912534685827725903 +-3.714868799276120139582775224814670631309950514215663607839858 +-12.602617230037957901056000394725145269520737036953512022922154 +0.577459444174009044886727739258213825095246203751027671232103 +-4.250327031519797370124455607368292096735525891937519717462034 +3.434587604295648720693545889923625928038188918984516674062426 +-1.742017061996260356305385493220058141367307334315585244499989 +-0.905256772109628282916061033047936660834492709610765637145672 +-2.620625156096534016111961244776335113670515754715534316997644 +-9.467710150721703497670242937974349484377576623496051102472436 +-1.69693568063312342837495682636214422524509543118375364033321 +5.568918966014482378772263003126245049398458548626142954374875 +-0.752510282420528654698361980362730991558303919305163469358968 +-0.235949701456690424987758133474147998674104857518527688269434 +9.539557618903482408423264529008465065363908650488927899929744 +0.064732849943946970601124755065146878286786394125137611327538 +7.941330575226335755316029023705295928649416585030368168537078 +0.958648234850001704586869413628889875422661691420547316526126 +0.248374229681661441350598846402326355877705603355624049096297 +5.13696877056075994433204192375478102041501517623098471000556 +-3.674994563950634932425217968431760417646309976803659927618243 +-17.88566241125514629211155655122266777568335426545529811982182 diff --git a/tests/data/nfst_2d_25_25_50.txt b/tests/data/nfst_2d_25_25_50.txt new file mode 100644 index 00000000..29dc5120 --- /dev/null +++ b/tests/data/nfst_2d_25_25_50.txt @@ -0,0 +1,736 @@ +2 + +25 +25 + +50 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.06662280658222395292277120308710763155061492956109425585060104387 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.03033282430572675531746093685427819991131474555746947624302750854 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.298624483401859785505117280219513339075442699781715140864259155 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.08207325709908859955349127721623747402414949341932039321448366214 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2960310066429102964680480971300708536474348030395899411240080615 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.3828540819028855178054925224849411075824391563611448148957922752 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.05516004143072870448596121508383272033655812692006033619596436283 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.237543150470257374929526975092414814248607042083779025974909265 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.1961792130308639250827480820713033155829089724167338962105237746 +0.454917586626400190455113486728514743998772785129201763658322789 +0.2142418523833641190529439639573092332483770122813062909521274767 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.1135357677968130998829352447933571252330847135039649993495538834 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.2964172037543097881772010061608292321688207375187647517994300766 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4548285955464891231119288561274837990859107268507022268607509726 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.3651121872834882789243463430471126314059253082862846478910152932 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.03483660428292199961165049752462598280091915037295030179924953551 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.1992804389047949490230324961860853758231538395748301207070552558 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.4431890540148335609220307427015664134805998752712734611429558024 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.3054113878224388525727863803324009276678724038269882973431353032 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4515130176933212461457379892011009039970207793061012850021972899 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.3123746114641262123026545021046848366396752725405471632077695806 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.4231801157326450939593950301163204387907848365988263186034774935 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.3371051625361155191605058367081984631262698548567050132698474129 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1158569246667318677726382100194916993028532082942523770687608535 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.1257540256523933131861849134591394031118487575140133228233992713 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.2225091693511738630364909160801392395880684222208336319127352641 +0.230402910644737899027368109577132641139999484424691959789185425 +0.08108630935780192087288539681850579539638581750949007810609253602 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.467183882923008897863779786990467499952265441334467024356247305 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4143426837235721258639164387297265587502064987110615120264960548 +0.2472557826481684830963989449602703101137738953947821260330747 +0.3260230638578554310965690714273014694353795654392329747815338185 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.4230828797886864872654427218269417536997368489213584227186758493 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.03008038880397752995464766841114511366776748602297501273741588034 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2440542348872463086448971798771983090954435309328837698833409855 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4963749181604996707711627826124667766173996319815968541805691201 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.4179251390915574619103395034989051818090561346584808617678582754 +0.201326401841226822499265144634803231090444660833635656408098582 +0.04054892266065765506430027504488194441193313938297750889020142059 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.1523991209807376578892471212997508118935752110980944656933526434 +0.272502449871235944005176337000832389787308384521685260378340781 +0.3399053735581819219789408147619129792234385226566519339286954902 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4489657084957520867684053250236424967958623562309511687501852153 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.3853132582342397948923973854575145468799173563498982036485609219 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.1846615566851474560808622296504386351174368575753366711982657403 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.358957081013045692924547554419897111750212389712572443828564006 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.1015633551925185741450449528428193261899769078214801258496170621 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1695489630155716515516037599674566844347401374102940702411774109 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.06597713563134875196413388873157392316448289978881662980442866809 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.3882968411737077793182460913076719955990003553066639475551853515 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.2535439404935544197331984232733988640549412837971456300023465276 +0.384865504568687870081160661201127839598602309270532264614380477 +0.4224397119523030811054991897313901508203320370822952833787588886 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.07508242151240927532040654326055125402842379765322060248915709291 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.2172580560639218655701442687403257247049109673251844219149842137 +0.3455515607589044047244320070401003626747106946235853743454314733 +0.2726237581724535975061505494183730437837098775266075552558040507 + +0.7721031360269444536624854764846278079390436516442447307214583713 +0.7113282365127787106295924505560767722199840055537543517442585349 +0.7679535856628120283990827155162180966010981503917935490380557142 +-0.6127602430473631495393181955733023028663546816025211937039540524 +-0.5944056790460496081717996899055920305811666877696698395774078378 +0.9839367502424209997890558933686976016082869978582241397510153252 +-0.4548419343247805224460011391703079342763504118566706946966391853 +-0.8849845588398620212194475625021727518116463369860566764411889312 +-0.2496600323413886386258990085306122333313701779141184118995463959 +0.2013567579813494116381818105314838610969816486807952028421948124 +-0.85858010457166611374976182888109386496982051035674989499979384 +0.7326702292582058588316598422918662773838658327971514003421703067 +-0.2697443704573465465233716116511309018200366900116819867580635278 +-0.6468087813680422377672655136982917947328505318460482424201962 +-0.2812302577494115409480047067683469320314228801749259890701395474 +-0.02167413194230472805204979364706614220652157873015883116130884482 +-0.680894955890704100546661726757747116024714493408288024374190234 +-0.9306530725185795934583927665790248017610038861531896668451002839 +0.3319152007540851906913026983763584438955853838764895977762668678 +-0.4414898031680223608932387792017485771255689761890070706015387399 +0.04675554236208552284539297942143061834219393972333359647545914081 +-0.8152568938325646993310760006867681539054279301843202148958871677 +0.3952163240756655529212705355453418848569049122249531536768131848 +-0.9395163144138835125672454933008856593503204403133472584898229717 +-0.08780353633292157461769946866167963633505729824902226238512671868 +-0.1743560068378512679152575299947443762504689480476570621749324843 +0.6018835924636782523215034400201993341434060856497418585329625279 +0.5094537464059880326374352490064905763350159638438638190213421193 +-0.6412882157453879879998117648467144628970706782597054160685555631 +0.9017103216368149546517732133490469846549850682301607701578308401 +0.9631270643127979384664069651403286361478505285019531813591892173 +-0.6210835173793688086670082589175993809833456274087668762475476635 +-0.8137281645240375388576750044830353268919925528507904843095256157 +-0.7041297500866612607234884784407130317305843364144413223065323821 +-0.1235721593345202217795554759876880268687368789792682195280803184 +0.01793996302825844948175557573252934185711456214972052895861572493 +-0.3411596862218241172328579047617234818967459872060847679144866809 +-0.7379746599220903325806827424480469595800618414934950958452657346 +0.6843546378904107483368305041075808036585650068151329599810630045 +0.4265099420399003863248167494626862205659560797404855195341684806 +-0.9874151891964456486571993218370826427302121071375833081581536189 +0.4601637140807105378191037234478805179877043129140064777542238544 +-0.4841039802362244364267157134690841461075259779700777041439742307 +0.9965877589863013394561112420396792373833365736836351278348301833 +0.191567730523304776574190978829765313731471509331205854313016986 +-0.9100049476348622207723944867294612891098821253248738836563459568 +0.8085565025927605798160394591787637574375967583263627553971120289 +-0.8851479413535487385573817957243936843534909265401263726020814395 +0.6064591258881136876029163103297147737049475826316704311935105558 +-0.7125906556497681391201675092436355218810428000432951124150783383 +-0.7605582778547942408060351317015194879473019118917060721292547632 +0.9359455243018989598720894094889086512450300947660621306436953491 +0.64033297030031448665328828110131678884788143990971470968562862 +-0.7566145378422368715122716757726615136162685098609876740055635889 +0.498393464867089132881118789295770940752838691384942740522239679 +-0.4971948424110283155918942363898656650230845195141350175248779212 +-0.3682837387895926737476498418989480477365801929350913148252356807 +0.6148970507477253459184467315745337121338375212139515007860628315 +-0.9083524682273578446532722997799475788834527253595073048265657245 +-0.3916716877161613504785809028033398517645549846406356231576213868 +-0.5193518691808852117378350732261309854332184624171433727414006814 +-0.9750431258817692289559363598684739941265076062018304867776204819 +0.05005097085661604605086728229374112382053058454731767435671635371 +0.4399150750505159978489133507713340072340352057744402647976718275 +0.1872909367861505164718492831692222169018789408412172493435499423 +0.9419321039051109549245680082622391092246632631231828777233002149 +-0.4287041936652777153072881590344721321081952456510997660597381855 +-0.2333391111205556198207256592076331117879880842914267473885863455 +0.7889477067277564731712862630611699647549102063099584994888747696 +-0.2563747285446000361218237435955077669028092056157149416120292486 +0.8211574497098423675796354902233745259806437217163965161734702361 +-0.2430326281692574737943057410600918611450147916626606070615468027 +-0.5566744269539672218404388199827460990960984415899809143036909069 +0.4524110448637644360868388875231267640338311624103409145041788539 +-0.4077100331640054846709900852315956380002910175183742932154068317 +0.9925432694290908433525570320250227385826836114793383624485189244 +-0.6845441772530325736299180977635806745002567201737916085152286412 +-0.5689275448635581694575383584343021970227104177442089801706330228 +0.3985567814775143901221253743791327148945266133080683203695999962 +0.06961382826101090949578301124383292455559947536661707583968975184 +0.04307050119059237005387541827491059927895209375649378090223139587 +0.5849881776459916509815348468661649535409940486756497653761724118 +0.02943622593745917222898833754618856585348471594569686881397428726 +0.3572417013316431962026919347150511042636763596269956578845059238 +0.8246603472400295391578505724317567517180656867730457579866275623 +0.08267470722577286001217633724236129336011575576077446531397711074 +0.5296493544860877224747590127030477951987987258874100707895850711 +0.178161671839420517570934964597356447578898824155879129858818805 +-0.8633908949968827943561744577901901026376268752722144571223670853 +-0.3459820993240706010475901311688197838023719669999227712290509004 +-0.8814262497135981437569523940906532685397798861799997656375266034 +-0.9722552720272006984678084914751283988556792015475269427349942943 +0.6486167889394565452584685154506739738504706411589692034776454683 +0.7237216114456588829885327945423834052953613010855527824331391861 +0.9153832161606877637775414865990581395464326012246760580785761313 +-0.5010512652356920074204032205934276172215285762480987760943959851 +-0.003517119711452846559277971844364606295296520854275366315952866112 +-0.7432644962454565902867854377146609433353697756825593784757725371 +-0.6678889143320625765336213759043802181180754155696893060399849702 +-0.6231432486376980435414857670687342821530306865222818413703487444 +-0.761265558015959776038963903242211813247582799987701574301727408 +0.1046561870893663260798556882535941223232955552582338303672866205 +-0.4422178249719287625023613714462236578393297082084105686699745527 +-0.3006761386836519584160039426021947715604263308295216335254395417 +-0.3931472033430920383369653755030364057981520323323553764459192375 +0.800956473746882928456987043862133272850468280050235725390942984 +-0.117336384734927911842612913616027626554640600021179492329548556 +0.4299591565232924801870368761556079288133632606094048768501521181 +0.351950842714972405603834006572622410785881893665581295538500859 +0.4719165407085054156880418423268675488422117760448059022673468457 +-0.1600709565700552484491336034747507816107856100797576115468140784 +-0.7196566232553047172113131790990428945643928116318893875786802199 +0.9506852903491360468879758484099667312771993016096956267658366287 +-0.3776736725704435658453332291251578463493585478972191163904289213 +0.6001953620324393368833490197603304801854572549372059847172328017 +0.6978878736648347125949172253483236996713754832649550025174381314 +0.8508443401291057488517795791511283359984797073308503806275388226 +-0.4669474695063991815703085816201270850746349019459750890255838246 +-0.4916857659539131984511014678316277462480514807356006060275370059 +0.6805454442564243054841615570704809357725921633306984108877804159 +-0.7429928693445994197394008924008488085983664860223161935727994358 +-0.6969676211949719236627008807329635886036631346596064918901094455 +0.7197019444966162425693701580554867509036572823057158142921206547 +0.7821091276993633157184444189269089852199610591029476119050859896 +0.853322612153932922155019514171215033718470215426888526974581991 +-0.527123190429983130601023007335782170127141621028130059541603522 +-0.04518836599707041257371263007133991513702551585551047967233360089 +-0.399491020501502399597869265119952339350000411493961463635298064 +0.1151112248581587985459044273509734339372139569519498681662926204 +0.4120054991803597141675815179438163442823969621208991056428168406 +0.4343579826046095597725968699957767082823418268721181549420071456 +0.2535126428268633086086116718856542176680789611156801564801311848 +0.0757591082002124635881632323270228980382304124620507025889787107 +-0.009921455995466628736212379839332998874975285848956671613709936322 +-0.5891566693005274615768435832037723406013603962165946345013825592 +0.4725424296459514103640632185799575468737722475096114637473172301 +-0.3642689669126664223527375212471788979005234643229363317834063467 +0.9106160875739411428476569185959640646231793213239998804082355729 +-0.1554296096295892351142787706783742826880784898341993011418432069 +-0.8069065915498787556695276318086362565827819941733622970182376756 +0.377414941913701641980604281714521283600422741949240555908727434 +0.286257156034881826917947161474943151268083089341448769053424682 +0.9392006333865916821227548404291848184201007925131229813910957774 +0.5114205299580920868823613420213360686329180904621350249508347984 +-0.6408078680635244612899765081025913686282954450887306823350772997 +0.61034769186326371064247171222348075927083751612531179530760314 +-0.1695324055840820458497589349479760035964663521113253737383164439 +-0.8353594742240205937097730115138661305557325449129426505768609534 +0.1821483418007667766250895141417107286953921543595289977783017637 +-0.4074526958925963909486488891837393063126910851657623153854908031 +0.519412312832116093970077697359996336676003120133546342882630559 +-0.1339026726689501933617889040862807661257038358606191032725698017 +0.1617840119849052908674425797539541379830915417411164257796009655 +-0.5833399591688895541493678958036554117556929951798174740043291689 +0.2558611196916433369649336532000849479904305619298222327625863899 +0.9637184128969163713272727389388526394331293708405231601274766637 +0.02398516466411951663039478357357263297576765858214578984119980389 +0.7220807768185265925885711430037484304092954076856054861183001563 +-0.8314034062393001851412680462190559603040746972786212429324375224 +-0.2313683087056718682580625867623460795004227069874977160354372877 +0.5241531162028989758906123049906275766571616823241720374203214447 +0.09003216360057281587724105549690566269005814841108581287665281058 +-0.1599268816032428776743959117270259866309677355351818460136443291 +0.7126643265921692501928118835762400720628273345745039396768073268 +0.1443381463559750344148688262608847179704805274810841956785523095 +-0.9541149480810226451568227541620900387924893378859274527595762471 +0.3516772517804962317135771244694045300550581304302552629989927399 +0.8312645047002901343481040986077492354211106507977246573848547872 +0.8922074343575836687927424867109565448477559678636672119414443701 +-0.03914580715076807517564668371313115131680481962361916796431130169 +0.9746573852711840936336177201962708050687509298510135226623575906 +-0.7287905575728605025843722055111257091486772902084438557782657679 +0.02849594996466824865218850207780069267985584074611847663329993142 +0.6459433245400880395491408374407025292588521318149535734854910274 +0.8136628661132407079541934173897141567434892632439804419184181281 +-0.567269077607843925028375791245291662428913186501477835474640964 +-0.9476387464140397458861421362921055215974651715794066883914951208 +-0.2605437240709855372272831411319884164143200014969561164796810212 +-0.3311597085631775241605389615954882776971235843100995205029515984 +-0.8695822150875121724691553338257829869250127182425918912387649806 +0.8891098289754707421060220890985710245132795198449297271458423909 +0.2895552325554255930167653346015931047558748269272406529926466973 +0.2650936900762128600362413578030729270793479332746334793752266553 +0.7046936151828971593710415948632896548808680079056988913118083777 +-0.2115570299364757676008017443811649086191736127455534555376144021 +0.1470216587412559156294994682432100810761459629584248289010138317 +-0.4329010361486256961244622956913108506550874170254014125575533479 +-0.1766818323431859044625743795499747752198631648846896440459670393 +0.3427075333057822059987675632859967887158938796610229803331114623 +-0.183376886573271100129574182681696169179735558213922855123562123 +0.5665067551831146950685364521560101025985707475803564862178192914 +0.5846720091653589171386464934439494744713232525388330403763032709 +0.3128821017947787434710701629862425068710081298914976621641025408 +0.1943703959062877206669871517590249058034169064564194870074554031 +0.8893705554674630659403991877841826994191514257022249874261157104 +-0.8883357910902242353575856676539666074648753053656660309143767467 +-0.460716573466163781751268186859141052046462069031383085126522242 +0.2571290378683215613044136510821588749887474163677002652639520119 +0.05683348973511969001808746192505133291481235528637618587938493271 +0.8458238445504835463314748515393830432307810942061667936052115581 +0.2568190130746644331048317748223591322462097932104379543095780599 +0.9282397683744983930469496205745698232573096227549226254155622007 +0.6733680895626635922558736333908780380926273791887898430485173634 +0.6834258455476852992466772196651133096274086383123765308288566681 +-0.3197260966794518948885909003357003020869183279810950125249989182 +-0.3602154836971247653552601690662060499632143516459194629015046587 +0.5644944652643029946030943876077187355907298250270171876933333996 +0.300245006064926546622443908848084786661329770571675039165636725 +0.9109171936013987677935840681404253773950900911474823029568083952 +0.9809865904559495207084689029816148884009367903151903920423149056 +0.6673430101175698152854688993768041548769019864465421762641808302 +0.1912403836532585581545915780169638266665110774534903895312903483 +-0.8390872225468263142545242699093560592768485203012323759548269441 +-0.1694425027392812196149909158729299355102867577367629176586906841 +-0.1109481979293641305323565532634133494943626968908239858539934786 +-0.7576390226829376962602306885924643215709630457357178698800775945 +-0.2384036559822549222513803512289385096334288445624862912807231185 +0.3322077770142086566449475410492734728431728270878221527000512398 +0.3008294101164568639831269327829387098511379992571638835271467486 +-0.8500127542413940364553721045188171752513697377512921485742321549 +0.8368368938909749223146178710811008588487209933709262501849117012 +-0.6301301812957352916599361333234055414853612961930455283065817178 +0.92912991593823651905014229592884312166630951576917436549436522 +-0.2057454411726747632614076986736370443370299660132771686206360685 +-0.1506655683923674574544013920490541109453108644791859114657837843 +0.8300887071220306139363536768734752416692057466278345728554448043 +0.8244806963149490337769127166910316223379101498545059699144474846 +-0.3267801787861358921558326193709571898654303757814961069177939802 +0.3173522145518535642355402682590855477810669842087119833799882044 +-0.9157683658115979207506514703487531113998263500938211160185082296 +-0.5134442544464950511308392504791416236936576938651094919168340614 +-0.7129018571172519683293420596961998697718416105831222546361506794 +0.9065123083843027156086152486704570882336886865580199421650643667 +-0.2793634385919329761753480106077153213406385720130702294691355484 +0.9164978685669781253679917402797926874507921723240255331025472326 +-0.7596059702886165943031875281927001506068162489624554198112485991 +0.7396561092486294627586234874177829200642603190414086001487983221 +0.2718148178589837914007749073085756104697032416499157400657364344 +0.4662517483044007390427270839972516857434523020114609710559500148 +0.08808257115588047484358934167308625153926780195956135649522315482 +0.07657390220669434590596313316601208477726655511807687988961336808 +0.4588569896068761120165974962862286433176923282523892852244105839 +-0.6615298742890711325192770516946564063654133133292967525875541474 +0.07011733953074958640104399325017215014827304325156759173135366906 +-0.9612259440538002535765483137294916063381851202661518339189071839 +0.9171138429339400553744807769217606095680344268845843714152250596 +-0.918764366993980620946375697358810909530550693434750302372938919 +-0.4415653525364425875595561926619571676937519758818885848285036367 +-0.2086520325624420487101916822135314045088175303036646863500495381 +-0.1511824375843169824185114172319147719223588913836399964007230083 +-0.7035924603583511535986984592864385797537640709172487432674768657 +-0.6564151567101526404248033266354854181628562195765596859557723591 +0.6965977875831549207460696210505433710177694513815592587963931164 +0.5816085290684877844083071838790011353935994102902484256340030157 +-0.527253715551282406607425535965902718962742079261395869051002919 +-0.8587217878456442924783287669774302171560923546889427532593498197 +0.802615497785384047600984758361791353972886095624237938117483346 +0.8316489546057848621322523310402149298559936201982941913906852864 +-0.6097628083165813974260954335449904988521230536577883358240508937 +-0.7453827739395389922953742392780783948094849228955462762695809318 +-0.1809554132180854707773280908184743372302489521523696413745651906 +-0.8150644675782343977339925655387466104832252738719676821788883516 +0.8917866574285656025686075793775106139378346795002297501283298878 +0.1101358891689796743272094664641471479081663952426245980291616029 +-0.0541967333689012077592263814659907729121237619035205051756287072 +0.8788147199714254107037333013127960617440138295766969973173354907 +-0.927037926394366126809727405514811573238161533791917190660326036 +0.4642977843367946473083173399076729199459994296180290689057358231 +0.1101424766711395834493541735390025259293259452693930682212953338 +0.9804018990020609521055380413227891839510323211141337706692935583 +0.8144388485796060257725468016904833551056739055694392606072812336 +-0.8395517493960846429066650820934625099120153763823264316622178314 +-0.535636302410552606673000089274072814148368252053769909998058602 +0.3785984554723058056848684987205281373405286509670642510688353225 +0.8125408356507693035783621684477489598336579370455636449932920399 +-0.730498839098918994556008955395986000999974868552030434899102998 +0.7456261383135196385610840292806346156606897621955571769519287646 +0.7757376987729343002700728678244609761294630501410110238207420656 +0.4078040359990933213948732923927214812372340416337539086249054226 +0.1767712938446947695198229699328249449877999447752262239584762909 +0.07365715096199305303280147905505827004287730234420360693427261478 +-0.3108355387530528344022186566449990520542204513871372429842394977 +-0.9157841385420411790181903606309676436954041107787988394005532203 +0.5517970855559362574840981197851271127548171428450299159534222246 +0.8076059738124808816284579607205742577625775175934575040140126923 +-0.3623547609761457713662054674281991237079618589827581000231798627 +0.8183208109839758987990961359356649031888827382055407382873878803 +-0.8535325136050236145755622731382685357658674118927526952194103789 +0.7385965807078199198295561757281636178085738161163241745076529168 +0.4178732695594172450325633659542989992529347731253116371174433175 +-0.5340515573220288676539037563933896861133701709641430080525373334 +-0.4642629009871243127720569534731497065151730863379424324926815934 +-0.8697898736666791719966463521302103516597198677810465705462889386 +0.9260211067928626234987335196506123804866588031248091568668186807 +-0.008817333363577657304077859427800946074653041725554105998740790418 +0.5582339538069273279851977709472563742471538090477435724053193958 +-0.7255700875545188795082017268145707633365451965771130961377344798 +-0.9882699898882978270887601698779901692432742326870804476209571454 +-0.9276804865150421462892365252888320798428705497677187785005965023 +-0.7832811923001301276864916736742146403933964466320677660322633051 +0.9875308623632782097656312821453924896496525870736205800843638587 +0.1783373466436970660022454632463179035762888722766888416391448363 +0.7336545898457146349237975784794059749253087905334857489144998895 +0.9127856868366581467510500732005220443872380003084957447131950721 +-0.3632881183963366167884860409201422151102177606787650299072097307 +-0.3268576018334922472384377473775779415605488146060240031080037115 +0.9427149588672463047630742061537997891278684495348468159028173334 +0.7916571579983658653317798731563225080239623370784297265192438825 +-0.6817701452011630996907953818868671270735516339211681814255907609 +-0.5168940707242169951406978648595076294647040487113324969763690473 +0.4155311954965517114024103086773167213755429855677272377839721067 +0.6506707691016388017357516362760131941221566979795718699904936102 +-0.7043718208306549962960929614939365734224121070283816720729220425 +-0.9030673117697692613858834879354138789682350761417043644810908266 +0.5465706740090774853953336301894435415008351646460109707839721596 +-0.6814239608934778019209189605706175697331566277120687413401512713 +0.9205925082347564380336697132499017123825554431098646503055203834 +-0.5020782788038677346392099888475830183897864323626792080264544951 +0.1045062318771655437961420896781653537832869869453123103733053855 +-0.1600201060994392446745228713066083331646179396065484107159119337 +-0.1176882561544923620215084381200312622694313533614808151971725197 +-0.189825171609586721044013508138189985950604720902663500662099781 +0.7858779951083861580332996484728804881745801231417586365625881696 +-0.2279832493810412940114966076664112325854082672090777285019621618 +0.07761160430503009576118799101543653660926181662195182427626478291 +-0.2055488181060608320954691371766551168555828485198254292077222517 +-0.8570653123756356936765798157651852007633450856266713907351356642 +0.8510470630599207981929699284163199387691742475697788917650312737 +-0.16560123613326167092245232006380763867174148167607503754889637 +0.4313169396402067420747675191335695107540210953445957632944683466 +-0.6136943581151102724274558633917286896829715873222934810854627144 +0.6107089044121956416324813364187592386184059323011742030772237424 +0.4569955077979069087363694857841772836360708458051620753700613184 +-0.205631651713017368814492512843157697507919536778183448181516378 +-0.3127653344142269367017311068934194736573539345353684494263561034 +0.5675769204970204695935245199626881958749158960158155816882247751 +-0.7973797882525385651192136516616674358654229933256541899442767797 +0.5012904467166158311205187729565579292182659743325041112386977484 +-0.2570017860782360774767408845442523659054818260225494146244853645 +0.815285634526596302121470271218431186471214471233707249972351082 +0.3474550590975565404544821867969338696280672245517491821876495039 +0.7718119181978566336150728291679018907122826327418198982205731192 +0.04535880498283686865208322483522967139304884767842664817216330064 +-0.7174845876743344015633175484139120449777707133419695966520824564 +-0.853296184466734367261440721862287405945662264918150798455455718 +-0.3551691762386405619967249318449133353395153150287271325435124081 +-0.3797572987358468877601704908647997438784227376119508300980299747 +0.376493226974464138185316874204450738186203149130236541221263506 +0.2816632617692655097062060192076384166912647824219953750826131631 +0.6936970465516315197236088803729008972356138275937389314888615401 +-0.8093948466492362612217398058810377625062288216775489656468562411 +0.7179094192553983421088688870290454722724258927762520549683983736 +-0.8752125899339353908597128121427435294227530087554395150859455125 +0.04176278772058224232241432506737925045260833246510034386845030186 +0.9269329565460541008731323076781001715661419867914361439680533663 +0.7868192948478988386779315105006009612933033201432314519183555363 +-0.006266353716036539320572064746082526752743361256443337864258505608 +0.2266154233841305998807280483192876569901369827513556377738818721 +0.2746350702494963366663352365693945459844370045750631885709403566 +-0.5247772986387898164750425486144677116796659442569793354035835811 +-0.4928925951310793013273500011155592100819574396889780507999573189 +-0.3113637472666701974473222596908779747755145602641740095469526339 +-0.5748854355426279234162395955225246347221834110564955747956209638 +-0.2554460407289573319602333075606187389397146712378109702048311016 +-0.576542912883993928715652331022719536448966752471880286018776653 +0.9094805878752663366484875502653563100058416506406189283398268678 +0.8848752416174802394989820330821347631944308988732361074957483326 +-0.2800064663747466167971611334477592148285678388000719119052505901 +-0.3524957419793069043802183938505947717728662986795036125951037387 +-0.92661757991300447545015659444519280829067045255691447808600615 +-0.5330220313943443910835605702117655504592614398056913858309712345 +-0.7330266194736301185266620028746862947402855823289205835841036965 +-0.08901643770401430747538873378587416087951119772581637121305331682 +0.8550765251384289421250035837565358470833355010809526497352204912 +-0.6907357918123153055314910754893467338334399179189583430196498864 +0.8787770736433328745035234902871834306966611855454194152763085168 +-0.01738793803090707722596079625349684366463055472987575653160098446 +-0.843789436167682845942043151679017937854325407163610849246652901 +-0.8141497075382254027096074950311514491854968487203741238943799987 +0.03889316514893840261980283978604250703936072380623394289182754247 +-0.5493273108612277875600478109570404534520845332638624479667841502 +0.6715912488533200815290011024385797575217363717470920802742883653 +-0.8438919390970836161462370188424965610990320605153865447984219469 +0.7184582122882689810255427112660454958040291396946043511983687288 +-0.4086097264688666636790174928803728608266459573162410770584140364 +-0.5697919261032078557614020481060183849522111669616974872492012829 +-0.6278243966060881460501444931432866833291695231208083680886203722 +0.0336828617705931544383250099730864952662928062350424608691618717 +-0.7436883526680899648969850724114253803054818951808117927039564586 +-0.4515446035045963800470270932006012917142703741148728102920678819 +-0.4810931364819359747828351037417496237257328332185652823964021884 +0.4458845011005795413736316288478062406750213207171946521339936816 +-0.07022130270408117391201617422037495983519685200057324281521736371 +-0.9363332435815881306934514312012861106386014749526768950073553811 +0.5931834085557288286300206310139754784241341457686571795494994774 +0.7036190395840156286745266326175275923901923175942468576350074587 +-0.5793821363841516257942372216607612745507267978856920167262365904 +0.00904502267908283601336368137866081061069210352581761545503802156 +-0.2778968847485682179896478779214700059419569060048743113852325563 +-0.2784308881971247865302566270327586460636817633229294056506703495 +0.154652062686142233335996164065894879050336448396759084360086347 +-0.6225775243116540313116281463349420309042753281761340281921133715 +-0.471116359097837612645498505928182428889732655753776028642471372 +0.05019084624368743889926916934552108615492017653478974426758842368 +0.6461406780733109189385884425756901416390710262453176809391037054 +-0.3646945557234024586517840337629880176834748783187949036037901754 +-0.3370795553642254807046883165466968306962599317309657519831180634 +0.07406951035684034748316975863636120744360012351054481175945110032 +-0.0706071377017734071574459854474813417829167710025638691080824309 +0.09360709618916370956867688682300922265055482761303476467874635515 +-0.4903988627030185676892387805777880755902392098553657129246566032 +0.8668617192033373216803865611020212154378552305142050619982759533 +-0.1745567235833106956445457069963316833929324818668372064961096495 +-0.6495725409582065831276338775327045761031092852475255376332913976 +0.3132302317415336986457546693818300494005409790462961496623925972 +-0.08002014266656912107124326141465267585210492463107808149275462116 +0.8439760661050647193221008089223906976491469018983477783830651032 +0.2742491031513893827528343314344994279572977620848668278687664294 +-0.02731317148254747797517682815221303356852477238112794448774630271 +0.8474076414796548139557410486347838750741787558443005871442567576 +-0.05779005908514727153148268653835324462294291367795091759798861981 +0.6263509070486716842858384400904599373074897647536296406115669676 +0.9742953226314242461965632460638579799905807780876871234627553275 +-0.5412738282089598200095228242549815505925302427991012087392399282 +-0.2810841851319220937367807869615879057727320463374091858347990139 +-0.6332274216696186147542273193898355103863532218808631013492331016 +0.02172241435608649221235119486946747660849609106303200545112768013 +0.7184196840602424035733157087786269966875702807495568534158194777 +0.3749586907344833235687996618371211329945742347114437060445496025 +0.5197997067097932079572481275469253932045397138803211253153129772 +0.1001908957778599515703760968602291233036923939615286132670111686 +0.1982609831290281879535544386961448200899094658928947930993426901 +0.2265305308299656396847919737333043590525494945051651354564266382 +0.7906018990132069071786050772247164464130165003035494689544865899 +0.6124546368149888732224396347205514888588534382757197943350914313 +-0.2036417356829187550510823664309236059942206079488018356074124469 +-0.4438641124602506074890760872561035010575387638641217902217169658 +-0.544767226142520327341708643509310597533503231008421701753029047 +0.4877743695516254187304790685268488336758168947119202326402657771 +0.3326494238536684877812162306671513312155429822231139301441247885 +0.5288035512647287264400603641207174184836483925130588246958035505 +-0.05640118305249958065859491687650402005035008328934427052170270651 +-0.9339602027658081848487965258726967589939079607563390689984129939 +-0.321275957553128745693922641853921576922022691685968198941970056 +-0.1418273761530124142414318806991383724249955778125131615411614959 +-0.4264505073732180514731028302116498991019475563421457885360967122 +-0.3923419951379572363099277373060742200052172625687618481037698142 +0.8711561101780366371965222118006359089295680450882925107561352892 +-0.4467304300012012793076027789623627915431040635298455194234986428 +-0.2307052332975307401648420105809548829532849045676342380730437307 +0.6986593716253086507864036814802859528738405415349193484448192348 +-0.9881297466207630693750918682605017613031699244501296308233100941 +-0.6760661791650244249188462300591840173691864903003885411720888657 +0.4739376045463275401017721226048506342846991506758626675206797346 +-0.07231115199509153957529197477078330317517719228116128797380329585 +-0.2135268112097198247010681889001898755255288900766137207891430752 +-0.00391719982426902043959346995217451979511795015993884792888825644 +-0.4074397155278875973813395109079469465734104483931918973323186003 +0.6066576651382865740459746508693765522490832331025440239481867214 +0.5054494871102213639926772825334560876816388786177817611761657915 +0.8226583267458482637565255432456222691986173539474741807557700154 +0.9730166336949259260659399295334240422964809729308435599151328247 +-0.364185457502622256307866947693356486103622853614760666076420203 +-0.4001542376557859551557248563046997931549614286245539273687375468 +-0.599100169628289804012363486827377728153644244666681806548743669 +-0.8583780681190373783452031494167712583130326378561487627832196622 +-0.3045463752630304889449065225990597597721299636237444059518468086 +0.7886150417047268238377576739443317830511703278264640239600600345 +-0.5588043912338361844241544228067077162062321498757294327644573793 +0.907133074597731305198810561446025916829146667322489554834535833 +-0.524311683190174937888559570575683572384050389075376539064024188 +0.6581907342494117061956856142004712902056506998470355167826692893 +0.1974669756782317180727160357254418526609096592424426109684117699 +-0.01972112572276554306178203846081429764689884696412132525401824731 +-0.394337251493017165762973203726973092159618930132047937098203061 +-0.8596972563284409333221353720093891317237347467906295445875608281 +0.2054557247504006267846823161008744108436686866387260670209192195 +0.9164793193765776053806704726303778876533969118110393675531419928 +-0.6145730810103541808333969921377717371467821795648928293281783767 +0.007095154334222720138793901658750269696036135112599827909026723408 +0.8623200152218083367220882180263569709602229105502792928185580311 +0.2328862533541289876695060577850480885078345462436653283599123436 +-0.8594243434084773575696832444002804697287780740482575549078989199 +0.4665227761410612503864559792071327777686034364978804464477715773 +-0.9811624944532105651955157652071808929067746331174047524578239984 +-0.5372721741325555621080856058022867645684999577425925732434683467 +0.9142689324243093913109361832104779693761718654772557241029242509 +-0.8519800093917999049786710873262630254438596819890789333402870548 +-0.8663463923987564465482638692819190364387064757346171016284231869 +0.2709558465428488894177444835034893857451398992362135202765939096 +0.8083674519889074596117164158478163589581003465847262190755456111 +0.08192318101143036468909245818104351795349752285255508370548377145 +0.4432662295285746068645760939682334332432727709335441542485014646 +0.7098458531193496043308156335940587627787235570183896188894276827 +0.90322989019219600061196867059798813661922909644595685154839827 +0.4794254791268536633480562976950887435436025549286522438789030803 +-0.7746484154169456512809937246271660173202685744110036148882342333 +-0.2763771350523139054750111351929364757670962641805178507420343842 +-0.6737640502546376711965235263761153629368423334845050663282786384 +0.9860843557274707818224203215557433615103323795855487753603071846 +-0.09908250822208310979388125313393386625642518646689831540002743491 +0.4083364361722581165801901479594515422760935325739573558840448982 +-0.1987464128103913290537565707198845322065664181338633370605495606 +-0.5407738721582197458183352565621496660631978320791939263962860219 +0.3927066115442214638047153163113331662262162359392646773307752893 +-0.3547265721044417796948020637228927981006372674781249634536133803 +0.7443511718754498369053636558248957547288930096116725829118390452 +-0.6106514856175809946267252713465468241183844646996285763158471635 +0.976523926183381328411157151775497729758348938804345757697622217 +0.7738274296309371782471493836581620439388102593378042753716890516 +0.6303435590127475728343988381089812280592884794559438601115730286 +-0.484063371813939130083050651772175383209126084648446213771534038 +0.8525922176927925458770820230111251769664015980843161969462044384 +-0.08163044187898704046903120648457597371959955348165323805504010125 +0.421148022345636083380666926166508150293522832173233944655555408 +0.1636579949610354489441057651722542939624135888641020127310796368 +0.1158996829838767780820446554770404024129821417414276676244486116 +0.6122743525100609786427539952903164332986527922843188026822436303 +0.8287184948673512642625509766623864745682445181955817748687592982 +-0.9776838203117432640468561992811674532088503638852841073034452293 +0.4475824486005748840610281907314246250638614806065401547533877687 +-0.2012889019039510414651830187674193045950194169108930931856542009 +-0.01171834366241198933438406373716581804955151297150743304159782864 +0.4922455338395964925166766918239575749296275172064692575993556194 +-0.05364567611959903567502330013213963546585099551575719307976293259 +0.2859039723670674295294361938847146749682776282795557426834523284 +0.8750329779299614706148239867721002941643109143868880399745229725 +-0.7722586575162211931712103266374485003179050625215461656404618225 +0.140103474533723761562030202095101893875706398592221339805012909 +0.8390047845124423734044204882406751006849491027338704535253123886 +-0.3131244711658136124319194937374637201951191483185787516824163028 +0.5906431155148677342149308852685885638274033210013285902888289507 +-0.916204807843398213138374272217346839955126571982524680966302845 +0.4438198023728849844308452858166958526884620742389769268237679581 +0.6601586762490308568348505588115261580494881196839526850118211037 +-0.9618853586098018371722211571527418635003319023500739295420333417 +-0.1292609718107532753146691377641856162241453138036350409973849233 +0.2813027204528153923329019336432992610341145263276842828170084429 +0.02901692607382806767360968742809799650944015215104495220771449394 +0.3041938498059602562920829742497990465452656988389381717366180348 +-0.8416332863784354708625199574482551667809708135793159735459802674 +-0.314950008126667019050031257450545808172579515682962559472777899 +-0.003275852688626340591683182725592289209533360992124403573787800845 +-0.8378625925962227631792682994265765481907889744535199746129185636 +-0.4342779984921702749034944690110939090155169682108203705245647346 +-0.9068313407149762968086567340954913610684595084886817903492351126 +-0.5878274041052291477943021502436561002773261803924218942833270832 +0.7976934088261920073242997664284179394988305733935216816478972594 +0.3072993380346806450796644618533558809298372285335849801472800055 +-0.3158899277774763040436693675498339368716705701915489772738691617 +0.4666714471594296105907779829907728877151358508508298995416084212 +-0.839252315736576298292024833817840220786429992773043003201199367 +0.3724656798429113456573796032664972786754306954066217858782865155 +0.7833206787384097305592819931133370072071003949491040665893856821 +-0.7544051316606455187663010577509845083171139981413787259246099009 +0.3363836481324219723370186210692794125850649784394352985597901553 +-0.6491840008149435654312968884792746101712975654905192131468895032 +-0.5376568533061764969177810125554299187960447693632897302426453216 +0.3436505628709939568617544614844578999694824109632610235366179258 +-0.9878395889167084950186530859519776075387863865636110539086573895 +0.231430699527959400864415392219075285031748034145026692189254385 +0.8865073285770955099860020924501486556125845788147491503154690747 +0.9964078756487818306982678918396703581497863065837502553775568638 +-0.1327340387426539333160769890953460166634179046951612739896832303 +0.1516135436026911837076485354625099431713490636151252380398422077 +-0.6794254217136540815383429489211152521219412790709340904663043984 +-0.8608338971722177289009152884317389810381974752382902396992736197 +-0.8579601284570283198168880475663448240213020365272821075300399251 +0.8642621396528582742546522275938696917350964149850345375415910969 +0.9793589839033901948731783645080578582463688236077166539472268901 +0.9683660064401229939001661515228452132613132290247913394628566994 +0.9871325644646234051116914095144895949244082254772823408822757459 +0.7429408357918861651391940854314483777231519683391271617922207998 +-0.6679971490414301274552666497306612376613754110623070491783068932 +-0.2222054162805692664553590963524746378422134405027779312108432929 +0.2825286514059141882920658191340775973641769752737899181429072621 + +9.470353418676787502237312274131814497512614114418203992449847 +10.990078873405810173996072100229098178390251824870834270122535 +1.350631401967851048623992911647708907329167205467653081909825 +4.108844155290633098774143158448224417997460237372696364805358 +-4.492386562371843935709577348294768175661601292737574541522286 +14.03740773262835039295547199335209672965690772914893570816952 +-1.731199980251136267820276091746127298741154275504129790380772 +9.40893956538680990224663327169394535629064284552582559458478 +8.559851905554697695657069737137787073911540968445112690173885 +6.416203010209131730825553802054587189783148111485657616181386 +-10.718853698092986084053970048193546176109533854004830739422406 +3.296540536512117434385225382682885587810932309533995244787768 +4.910365635602325642061023210895306261927801759206021038060243 +-2.263296853353656232932206224513663453486939218829646965947757 +-6.5229622344402672748409356642163902373141293377159658234510613 +-3.154795601374855707168843558648894229170864090954171158835878 +-1.811926555765442704546359082322245435321341403460122151952242 +4.126434216758039384254915716614799117447936880471775838737926 +1.638798174914764106251281146940242595153312740546721304385903 +-2.799062665704548325191495454311360438577593151460408178203909 +-1.759513901377642748972128573712141052822736105604520925717862 +-1.622485845663948955659070409107798125386507105875930870870566 +12.904583268150562438947285067506918789475995842859000299346277 +4.565352775376285624484388700854669109054435455864572025925509 +-0.061952363175388789003816911860181583841599535423142821448395 +-12.469285713307729554158423987509746144037225920194768414890944 +3.311731303511509471090188362437208267454031164326677924118869 +-4.073248922576975364367826329693625593872775848024200329921825 +-1.156088340733124153939761457377888446799867710060607729249682 +4.12413427774179473188749700046311097836410617340949856114797 +0.387269731263108280790965633340036757305474585335244266140211 +-3.981125308428204588325696130165636186417811678979551046345226 +-2.328926251252895415621579496406007069562045924867461804408629 +-0.81738771114703543714039091787227845404344329114650889925743 +2.281103464713012095261913017771427940706885359205665500590918 +-12.39168571518432721428068966422982564989821493880827866636917 +2.210140663775739591901566949430346705524233494543329965105273 +3.642130886579340024722869690031905454263877093874841012207999 +2.594000329264753929982753622599322072169468444469503111278348 +2.930276440989693680447251778709004013111164963285057342354785 +-5.919673652014681154711058635347712274111277470942416796800136 +2.865158201353787080244178146240127930230038238307591986616286 +17.607096758171675429483390735140123634057740156850663409027677 +-0.477698665198143959641907286331951979676223945995213235711774 +7.592969174367604004635912621685581703267613293367472305955256 +0.853580592927177757598557673453561947639573442994190600659632 +2.950400478276335543753410931569492099076429689998030132442272 +5.243655220153768286720573585722033596609623671738121871206775 +-3.194914583987736296570802132246829216304433850879475110327171 +7.990792612982897768842131334934068353480084796102026701265258 + diff --git a/tests/data/nfst_adjoint_1d_20_20.txt b/tests/data/nfst_adjoint_1d_10_25.txt similarity index 59% rename from tests/data/nfst_adjoint_1d_20_20.txt rename to tests/data/nfst_adjoint_1d_10_25.txt index cef6f618..3ec4a097 100644 --- a/tests/data/nfst_adjoint_1d_20_20.txt +++ b/tests/data/nfst_adjoint_1d_10_25.txt @@ -1,8 +1,8 @@ 1 -20 +10 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 0.3617754793224075120106402493333532892515347077462591193717225348 @@ -24,32 +24,22 @@ 0.03079002005616818689379437555430409384272056975521080286977436553 0.1993205021632423713244796634655407513154492251671262244936746809 0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 --0.60181416955370489069022560302259870185972960698264033911466164 -1.19172238459678387400170417103632942467649645516274293814593026 --2.85175134703177109300829218327113268476825639018130941890474268 -0.71823471380662699664708441642228600705175390014293552008335495 -0.20260494602163508986435886038875507372698629288814550673043989 --1.60676961488867304707059971708089350966230774320527046970097582 -3.15518510280904505842966430365895201405695418901423165879874611 -1.61379621395470814910879356891316252399576692591750127903085869 -0.58048331699908802355112481708496364860770881980620738940164023 --0.62303991724828508783974319400275388823307917762410780051652069 -3.4256621663281041210540409911613560577825412840975131089709623 -0.4302173073452875752895912378707925773938858993600275570161801 --0.84421239341465261923619223258664829857068808611216713289069289 -0.6148958096241956436270555680537162456597371268299147844157277 --0.488079522542554372367504183096640870933626748129356846566673 -0.7133503024916639149805762491236083231349809362179040954618478 --1.9907531437463623070961273248003125524480463515111275764506821 -2.6355466441654656903338090291680132758318442484540748999985083 -3.1158201823993234080076253946295214250843431419026606047057042 +0.82367045301122507018366680114869118123320141484557948881489079 +1.22670490026071066173531809226484159811754060167541287443703963 +-1.44910742180167553281348105225317945922196284268520728511786029 +1.63342379526669991282379036181680132222778083623515119741058071 +3.02074419795459274084350458273859861377466338720979417630029846 +2.77510177264587207339622957166939002442241792488072890533139406 +2.45569149578620199063675619444705091714790483340991668934723231 +0.66549984389173771148582732719919990730960253923446773536089848 +-0.74686155219037478766926791836598544349404423981592497797318038 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 -0.07838835742104840389052756169146943544000206230123216084325830017 -0.3158305122954834491361879876118745635891842225287967281157858672 0.3458309153991207858067077092337332970573207566667458110876416196 @@ -65,4 +55,14 @@ -0.1766812336766545879148652249537685082960598655086779135604123172 -0.1002499995910402071291914694552929590775602478191912580994509247 0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 diff --git a/tests/data/nfst_adjoint_1d_20_1.txt b/tests/data/nfst_adjoint_1d_25_1.txt similarity index 80% rename from tests/data/nfst_adjoint_1d_20_1.txt rename to tests/data/nfst_adjoint_1d_25_1.txt index 25ad78fd..28bc2403 100644 --- a/tests/data/nfst_adjoint_1d_20_1.txt +++ b/tests/data/nfst_adjoint_1d_25_1.txt @@ -1,6 +1,6 @@ 1 -20 +25 1 @@ -25,6 +25,11 @@ -0.14399814463679911269454907817916095534768718050845009682203727 0.3506720485054838890994972050370213783504755955383583679855869 -0.445064395489765039819920069763373794698476538878439078241994582 +0.39695173401277077150135524742408003035438285156130068104139812 +-0.22173923982065042865343716370421230578855334028579964953407569 +-0.02447186169000397245271993761157471527208946300381172094225019 +0.26284732662191215188207159462655635894039007923356123534631035 +-0.41706180073122239267259231923137433697680751887379519286650272 0.4471019172896300480425609973334131570061388309850364774868901391 diff --git a/tests/data/nfst_adjoint_1d_20_10.txt b/tests/data/nfst_adjoint_1d_25_10.txt similarity index 88% rename from tests/data/nfst_adjoint_1d_20_10.txt rename to tests/data/nfst_adjoint_1d_25_10.txt index 03c22e5e..8077110a 100644 --- a/tests/data/nfst_adjoint_1d_20_10.txt +++ b/tests/data/nfst_adjoint_1d_25_10.txt @@ -1,6 +1,6 @@ 1 -20 +25 10 @@ -34,6 +34,11 @@ -0.6290276732287110932369862317494299414616544571763965415902619 -0.8990551498513285938003353408937784155732356120115862565910735 0.5963950626060895079620763526983997510474008603916174006801075 +1.6463805805716240928238974173305132167900418030242200317198817 +-1.2206624870259228864249565337853211355023262309424712339479878 +-0.6377056562649018214524649229861755352072623240542173039706019 +2.2580355874039587484574048910242717403404211269448532748577577 +-2.7209942546849444156519763343097676944436973458223257324776883 0.6316345452201721830125859283102821997036574445025868003866206636 0.7051415661084367709201814372310498119360160763950294411494790334 diff --git a/tests/data/nfst_adjoint_1d_25_25.txt b/tests/data/nfst_adjoint_1d_25_25.txt new file mode 100644 index 00000000..c9b3a975 --- /dev/null +++ b/tests/data/nfst_adjoint_1d_25_25.txt @@ -0,0 +1,83 @@ +1 + +25 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +0.82367045301122507018366680114869118123320141484557948881489079 +1.22670490026071066173531809226484159811754060167541287443703963 +-1.44910742180167553281348105225317945922196284268520728511786029 +1.63342379526669991282379036181680132222778083623515119741058071 +3.02074419795459274084350458273859861377466338720979417630029846 +2.77510177264587207339622957166939002442241792488072890533139406 +2.45569149578620199063675619444705091714790483340991668934723231 +0.66549984389173771148582732719919990730960253923446773536089848 +-0.74686155219037478766926791836598544349404423981592497797318038 +-1.5170175221115229511783554365229089429825161008998235455327039 +3.3465347284588795053940220756312086627703253300394933792131657 +5.2660048693810081111998477925247386919436358679557140895675601 +0.4515841158481330913445252829381304990386366564003507921528271 +2.0588234389817676425293275185197313748346096737686915187404041 +2.0073595921191516054515533935010173370463552298903485751968594 +1.7305913126753514762943966755511436053973919004061144743650008 +-0.6541275543217917020312982434025726533628098410493259913022958 +0.3009958595850903827910865305049050307582509893586656088718243 +3.2253395672427106877405356747177319387593920020162969900888026 +-2.7193759025131057365325610617745802757317377823554917737955718 +1.5211119873600958581676912737398501204086864852820718935629072 +3.5017536822353254143454826136436355602576862434604447246889964 +-3.3936492977230372211514325995584149087632724137729663238090515 +-1.8210763287072845713746889380930538081769366749394300380072244 + +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.3158305122954834491361879876118745635891842225287967281157858672 +0.3458309153991207858067077092337332970573207566667458110876416196 +-0.01097686940732606761440422015891875954490441842087149586770120005 +0.2626555858903124974165091427737336367005240661151773835219310271 +-0.4833001744929688887627302318231007732586579925667420767092911497 +-0.6470889183313806476439784979725465604750285292906649332158905915 +0.9495591103622864735737804468916775971319894153057637661282509133 +0.1280772471342585841455757702545741213596517009855068302808317718 +-0.1946943926350927100029394214607870756382213566654573743676056718 +-0.8391269337210497321784330437702418478537689733296865638890089907 +0.09000979948494377602070534800332955914923353808674104151336312387 +-0.1766812336766545879148652249537685082960598655086779135604123172 +-0.1002499995910402071291914694552929590775602478191912580994509247 +0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 + diff --git a/tests/data/nfst_adjoint_1d_20_50.txt b/tests/data/nfst_adjoint_1d_25_50.txt similarity index 96% rename from tests/data/nfst_adjoint_1d_20_50.txt rename to tests/data/nfst_adjoint_1d_25_50.txt index 3e39e44c..f268ae56 100644 --- a/tests/data/nfst_adjoint_1d_20_50.txt +++ b/tests/data/nfst_adjoint_1d_25_50.txt @@ -1,6 +1,6 @@ 1 -20 +25 50 @@ -74,6 +74,11 @@ -2.0210347563147220651286042547191236387636306618828982507262884 -2.538945385866320781159406367040823108578828692499991824411563 3.7840155037426604232841654514299442803337290683944631246050982 +-0.8297775512606984066475492000519710843539742060696300504276975 +2.9889122746885299631107948494036448555032862772112453449961207 +1.058815540677975371663916445527993126685071295672375386011617 +-5.2869746571720073385368496160481686759786784833909170348944719 +2.6202747825578187530786818174504694514210993508012683008683712 -0.7335087736711041883089151876515694737975402817556229765975958245 -0.8786687027770929787301562525828872003547410177701220950278899658 diff --git a/tests/data/nfst_adjoint_1d_2_20.txt b/tests/data/nfst_adjoint_1d_2_20.txt deleted file mode 100644 index 3e0fff15..00000000 --- a/tests/data/nfst_adjoint_1d_2_20.txt +++ /dev/null @@ -1,50 +0,0 @@ -1 - -2 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --0.60181416955370489069022560302259870185972960698264033911466164 - --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 --0.07838835742104840389052756169146943544000206230123216084325830017 --0.3158305122954834491361879876118745635891842225287967281157858672 -0.3458309153991207858067077092337332970573207566667458110876416196 --0.01097686940732606761440422015891875954490441842087149586770120005 -0.2626555858903124974165091427737336367005240661151773835219310271 --0.4833001744929688887627302318231007732586579925667420767092911497 --0.6470889183313806476439784979725465604750285292906649332158905915 -0.9495591103622864735737804468916775971319894153057637661282509133 -0.1280772471342585841455757702545741213596517009855068302808317718 --0.1946943926350927100029394214607870756382213566654573743676056718 --0.8391269337210497321784330437702418478537689733296865638890089907 -0.09000979948494377602070534800332955914923353808674104151336312387 --0.1766812336766545879148652249537685082960598655086779135604123172 --0.1002499995910402071291914694552929590775602478191912580994509247 -0.8558312786548114618473704491843378278983698142481509704680004653 - diff --git a/tests/data/nfst_adjoint_1d_10_20.txt b/tests/data/nfst_adjoint_1d_2_25.txt similarity index 68% rename from tests/data/nfst_adjoint_1d_10_20.txt rename to tests/data/nfst_adjoint_1d_2_25.txt index a86a49d3..06fd4b38 100644 --- a/tests/data/nfst_adjoint_1d_10_20.txt +++ b/tests/data/nfst_adjoint_1d_2_25.txt @@ -1,8 +1,8 @@ 1 -10 +2 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 0.3617754793224075120106402493333532892515347077462591193717225348 @@ -24,22 +24,14 @@ 0.03079002005616818689379437555430409384272056975521080286977436553 0.1993205021632423713244796634655407513154492251671262244936746809 0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 --0.60181416955370489069022560302259870185972960698264033911466164 -1.19172238459678387400170417103632942467649645516274293814593026 --2.85175134703177109300829218327113268476825639018130941890474268 -0.71823471380662699664708441642228600705175390014293552008335495 -0.20260494602163508986435886038875507372698629288814550673043989 --1.60676961488867304707059971708089350966230774320527046970097582 -3.15518510280904505842966430365895201405695418901423165879874611 -1.61379621395470814910879356891316252399576692591750127903085869 -0.58048331699908802355112481708496364860770881980620738940164023 +0.82367045301122507018366680114869118123320141484557948881489079 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 -0.07838835742104840389052756169146943544000206230123216084325830017 -0.3158305122954834491361879876118745635891842225287967281157858672 0.3458309153991207858067077092337332970573207566667458110876416196 @@ -55,4 +47,14 @@ -0.1766812336766545879148652249537685082960598655086779135604123172 -0.1002499995910402071291914694552929590775602478191912580994509247 0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 diff --git a/tests/data/nfct_adjoint_1d_10_20.txt b/tests/data/nfst_adjoint_1d_4_25.txt similarity index 66% rename from tests/data/nfct_adjoint_1d_10_20.txt rename to tests/data/nfst_adjoint_1d_4_25.txt index 1b91372f..6bfa2d17 100644 --- a/tests/data/nfct_adjoint_1d_10_20.txt +++ b/tests/data/nfst_adjoint_1d_4_25.txt @@ -1,8 +1,8 @@ 1 -10 +4 -20 +25 0.4086947450855356169152189517431289973211444954704229578022411938 0.3617754793224075120106402493333532892515347077462591193717225348 @@ -24,23 +24,16 @@ 0.03079002005616818689379437555430409384272056975521080286977436553 0.1993205021632423713244796634655407513154492251671262244936746809 0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 --1.313831422727774651555845755917101990528470330521651169614664193 -1.46355442483928096702736490785862133486191559046504281025787006 --1.18451482947596109043000397033789725114267460887252124181270873 -0.05951524075769099922476787090855746084963627903213878001719051 -2.70872759016867475683647207682602374720601214499401821015042636 --0.94416147610101625361944500413293193257818930563500271428239929 -2.71180569820343380176966868586535984049622697797417244266439908 -2.15233843730804231706836465791701168875063301744261884900928713 --0.97311566878031548708171942382413749407439175591270498714337787 --0.67925989347953101555873612315211951129912110007083598581225085 +0.82367045301122507018366680114869118123320141484557948881489079 +1.22670490026071066173531809226484159811754060167541287443703963 +-1.44910742180167553281348105225317945922196284268520728511786029 --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 -0.07838835742104840389052756169146943544000206230123216084325830017 -0.3158305122954834491361879876118745635891842225287967281157858672 0.3458309153991207858067077092337332970573207566667458110876416196 @@ -56,4 +49,14 @@ -0.1766812336766545879148652249537685082960598655086779135604123172 -0.1002499995910402071291914694552929590775602478191912580994509247 0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 diff --git a/tests/data/nfst_adjoint_1d_50_20.txt b/tests/data/nfst_adjoint_1d_50_20.txt deleted file mode 100644 index 9059350b..00000000 --- a/tests/data/nfst_adjoint_1d_50_20.txt +++ /dev/null @@ -1,98 +0,0 @@ -1 - -50 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.454917586626400190455113486728514743998772785129201763658322789 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2843764440248353437431031574790790615530404808188969002757705128 - --0.60181416955370489069022560302259870185972960698264033911466164 -1.19172238459678387400170417103632942467649645516274293814593026 --2.85175134703177109300829218327113268476825639018130941890474268 -0.71823471380662699664708441642228600705175390014293552008335495 -0.20260494602163508986435886038875507372698629288814550673043989 --1.60676961488867304707059971708089350966230774320527046970097582 -3.15518510280904505842966430365895201405695418901423165879874611 -1.61379621395470814910879356891316252399576692591750127903085869 -0.58048331699908802355112481708496364860770881980620738940164023 --0.62303991724828508783974319400275388823307917762410780051652069 -3.4256621663281041210540409911613560577825412840975131089709623 -0.4302173073452875752895912378707925773938858993600275570161801 --0.84421239341465261923619223258664829857068808611216713289069289 -0.6148958096241956436270555680537162456597371268299147844157277 --0.488079522542554372367504183096640870933626748129356846566673 -0.7133503024916639149805762491236083231349809362179040954618478 --1.9907531437463623070961273248003125524480463515111275764506821 -2.6355466441654656903338090291680132758318442484540748999985083 -3.1158201823993234080076253946295214250843431419026606047057042 --2.3451381206822088943710811756771213526634824860076626006756114 -1.5957339169744645974925812328634344991906440503532209180357051 -2.2056589815270608272415536550478849535020086730239591654942434 -0.3162691456703716083714944318864213366570632079852393500238091 --0.3042774048620032250108019249989661655149196020206662352652593 --0.744773624934052117903584266047172339933229102651020016349712 --1.1977024864620133544953359275887464971444364779316309687155167 --0.9729654452905903821017975826864360404652699396789209019220983 --1.8467074143129747197090299022207301878044174000951719778886054 -0.8919072195595885172752703687252751406796623172538819724777841 --0.3332284596082425238917100855977165765506318987214761952894947 --1.8999290268316847520559750169631735716552968492739808260498662 -0.4088775968984713292276871963130051414900463250155766993204858 -0.3315957126112086243374044165016937696793465579516448051102665 --0.6473683463460859953038143869453727809620337183804465902725978 --0.5348190901012739367707971963395416359007720515066265040712452 --0.8513236000949739075466151932087634612132586421187704516124764 --4.0454344415496624227578285852305309442501329281860508437421302 --1.138919502874280449044286853320925543080295915042373987405404 --0.6229579637356638560304195919492581256646049870820826508634625 --1.9459707272526001066515638785447465450017768282643716074415002 --1.343740500014371541579988231049194502273654238086433263724625 --1.5285270728060024661392864457700848790540366246565047949192896 -0.5790390147616854729212402728463883711928206341182379505271669 -1.2329411710446945025929007285441082271867431654758051704002501 --2.4894396071936236988375152640386509547444670446407493606282719 -3.5565340348075619199375793832240934362518722575133464747619266 --1.5178657130104259993897901525417484995798735304551114110344832 --2.3143593708208358386789810491499392469151323740456618693719372 -0.6931402845489053773678480331590217155999504331713416667243809 - --0.4413098759704276115157486122940138778382450314554048934666388869 --0.9286394390238346619050912089405834508747965422378917835718069263 --0.4763986698707299918532811013155870587476071700798709986377725737 -0.2184244610344805776516307003112049282480936070481769173095132673 -0.5284655557490481515292532588784919125603831832265742904204270183 --0.07838835742104840389052756169146943544000206230123216084325830017 --0.3158305122954834491361879876118745635891842225287967281157858672 -0.3458309153991207858067077092337332970573207566667458110876416196 --0.01097686940732606761440422015891875954490441842087149586770120005 -0.2626555858903124974165091427737336367005240661151773835219310271 --0.4833001744929688887627302318231007732586579925667420767092911497 --0.6470889183313806476439784979725465604750285292906649332158905915 -0.9495591103622864735737804468916775971319894153057637661282509133 -0.1280772471342585841455757702545741213596517009855068302808317718 --0.1946943926350927100029394214607870756382213566654573743676056718 --0.8391269337210497321784330437702418478537689733296865638890089907 -0.09000979948494377602070534800332955914923353808674104151336312387 --0.1766812336766545879148652249537685082960598655086779135604123172 --0.1002499995910402071291914694552929590775602478191912580994509247 -0.8558312786548114618473704491843378278983698142481509704680004653 - diff --git a/tests/data/nfst_adjoint_1d_50_25.txt b/tests/data/nfst_adjoint_1d_50_25.txt new file mode 100644 index 00000000..6c5d0078 --- /dev/null +++ b/tests/data/nfst_adjoint_1d_50_25.txt @@ -0,0 +1,108 @@ +1 + +50 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.454917586626400190455113486728514743998772785129201763658322789 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.3821163889372620378823133147196229781400957958066435726051067546 + +0.82367045301122507018366680114869118123320141484557948881489079 +1.22670490026071066173531809226484159811754060167541287443703963 +-1.44910742180167553281348105225317945922196284268520728511786029 +1.63342379526669991282379036181680132222778083623515119741058071 +3.02074419795459274084350458273859861377466338720979417630029846 +2.77510177264587207339622957166939002442241792488072890533139406 +2.45569149578620199063675619444705091714790483340991668934723231 +0.66549984389173771148582732719919990730960253923446773536089848 +-0.74686155219037478766926791836598544349404423981592497797318038 +-1.5170175221115229511783554365229089429825161008998235455327039 +3.3465347284588795053940220756312086627703253300394933792131657 +5.2660048693810081111998477925247386919436358679557140895675601 +0.4515841158481330913445252829381304990386366564003507921528271 +2.0588234389817676425293275185197313748346096737686915187404041 +2.0073595921191516054515533935010173370463552298903485751968594 +1.7305913126753514762943966755511436053973919004061144743650008 +-0.6541275543217917020312982434025726533628098410493259913022958 +0.3009958595850903827910865305049050307582509893586656088718243 +3.2253395672427106877405356747177319387593920020162969900888026 +-2.7193759025131057365325610617745802757317377823554917737955718 +1.5211119873600958581676912737398501204086864852820718935629072 +3.5017536822353254143454826136436355602576862434604447246889964 +-3.3936492977230372211514325995584149087632724137729663238090515 +-1.8210763287072845713746889380930538081769366749394300380072244 +0.0862078261061210400724252647334903475599444449203386790263941 +3.0883778951516077804852101137447799905548419142177299286529507 +0.1983934235563320029137750474797702417169771453622568071643182 +0.5462698209971138044425108832253696993334615213297638980532106 +2.3728255665448578178376956974970847257052046191056533369228006 +-2.4577281212249313609103850443904577404753539400451789838876328 +-1.8653750907603717074392742899139797511278694837935762059550443 +2.5119137850600269081732268565137095864818308052934201540940235 +-0.9208449309957653031953120628803063239055853917632003634319777 +-1.128174747055075475035734609458591777665292015513944026959451 +1.6723556806764473508327146823107506295475702126824619104543969 +3.749556504188621698321062362681110787557240403002410352125961 +-1.1102773784535576966329407416528090479571525841234131672835452 +-0.0281105746486329798951146322430422990531541471538630979164434 +1.9992075696850902655445063025378064767450588648212925443315776 +-0.2368656922199145244191476370198195141107615457612008729324261 +1.3012959841262871308636624451107154323086897908382662947976378 +1.8409875921134606931398596610810516333762531483040206320639446 +0.8094232009589636311383170208565155651927865948528400248502523 +-2.8148501778195697316546076014176936654201701653401453336424703 +-1.892800548324135251684003641334585815298949362420117751409223 +2.4754576882584848741722145754447519486500981316817597011763481 +-1.9088685949780329607606950992254765555111088034780758056971352 +-0.575839758757111058461265797374666647271073403111636728689154 +-0.5933077213035425935932354640001636632355720669686895297856781 + +-0.07838835742104840389052756169146943544000206230123216084325830017 +-0.3158305122954834491361879876118745635891842225287967281157858672 +0.3458309153991207858067077092337332970573207566667458110876416196 +-0.01097686940732606761440422015891875954490441842087149586770120005 +0.2626555858903124974165091427737336367005240661151773835219310271 +-0.4833001744929688887627302318231007732586579925667420767092911497 +-0.6470889183313806476439784979725465604750285292906649332158905915 +0.9495591103622864735737804468916775971319894153057637661282509133 +0.1280772471342585841455757702545741213596517009855068302808317718 +-0.1946943926350927100029394214607870756382213566654573743676056718 +-0.8391269337210497321784330437702418478537689733296865638890089907 +0.09000979948494377602070534800332955914923353808674104151336312387 +-0.1766812336766545879148652249537685082960598655086779135604123172 +-0.1002499995910402071291914694552929590775602478191912580994509247 +0.8558312786548114618473704491843378278983698142481509704680004653 +0.5356506216935318567168964679980224448474954197740742721804425662 +-0.05251382922654688111844675415661855947948761360659425718759593363 +0.9518095182124288782767378820155949547911261560251647626870735792 +0.9956223852813107496522616247115213137215848581937907906567140918 +0.6741052796006089834676571454955036801632897076493615121596900136 +-0.8697750560716627155371707094260289644371901052310063829991901781 +0.539462018274751480324642644804511358394409237082129058457521908 +-0.4274845026027779916855619203781095649893449575458629944853980527 +-0.8604697501072873707535504424154609782723273602355359333803551115 +0.3822062430356176188977280281604014506988427784943414973817258933 + diff --git a/tests/data/nfst_adjoint_2d_10_10_20.txt b/tests/data/nfst_adjoint_2d_10_10_20.txt deleted file mode 100644 index 000d2de3..00000000 --- a/tests/data/nfst_adjoint_2d_10_10_20.txt +++ /dev/null @@ -1,151 +0,0 @@ -2 - -10 -10 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 -0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 - --1.76143146893263630507479969102574831711361320243036952536594684 -0.35899770819605732231881762940486068133788301466981915563161211 -2.83885693984458722014048253283289593582617061154339622561573007 --0.59645159715206175075797653417445997322411208367010787663570892 --2.70345075644926486124889580951495288356647764274422231897434439 -0.21103420597547403174372582156808481101804208339715706637167539 -0.80419416229930044937796908366804480752145501249073360645110793 -1.61823557797745338421874313098913819576515346547482347035491764 -0.38284768450806290663832043589241261030395899813851113686219901 -2.22689118033568770147464831307785161036355717797638855888804302 -0.18665355785887900118388995331464413721078804025935144929520248 -0.42229477681519930327948017732900551321342813012191274873967201 -1.41338872288696181936200256031878937991371036077637546116810517 -1.62002161552259685721973498080899625803650464222806704943673784 --0.02337545822870082537306946721421822005123595793586494137024739 --1.64652761209287698883999627693649701692054493039697913328717427 -0.44263180533338967144262404961245804245381462190156286675620342 -0.92228340697132823292628058252269411175602235872769815202244947 --0.3108367935356654353877414593399601606611691816399760916695634 --1.81935833904866201130107098395816442258167414765651570782128582 --1.74264586388126226268803996281912595485313021430278609610542069 --0.12973767606025167758694203679244445463657414801580073285651074 -0.90860654114391223623872728334624543939459551945176563710996218 -1.95722815645166269746427888565950602864421022837480104724835179 -2.94287298919397403236168886266953690858190500490543931754001335 --0.16639669916107372976751657950753450213846826235190622282724962 --0.16116327963024610354329691317021872984157158523094792669133574 --0.06673628288418047560134228869477944213687632264958706279654091 -2.83293378737776162539876370057798692612237489483699048545545287 -0.45146062305657285242797520918797305108069875585313283870139339 -0.08934143940779221316458669802868913365252834011281116754182792 -1.99739265411402036627229490652104184677185336652072327820123501 -0.22030870998022632285360682592179072706866532464350574221240961 --1.32968133055825866275546310116288038033479396274782659923854446 --0.95365058973474616671726048460686443244560021834273172865371528 -0.48176974473161931659188114377065480614076822825117440593324127 --0.97153440384426941570401684669334051649459182295444954258905037 -0.18666352144494250850692920084441757154234644598081868719507376 -1.21077252615593697976586057276086641519454747211932288456898783 -0.63498547346755824878504166693642014312695196354342763250058704 --2.37510898304837156701463759371340458036437161358791579853500166 --1.9266452456611821386085964120527993339573312333056876417414595 -2.6858653735489308752036481418147882867173218882120176628532612 -2.0579163136778167608181562575464034300538024851799874751263199 --0.49875679381536352388903337103151365799977548364250560532224709 -0.95476708849363764207890391559124465345505756145123931136135542 --0.34403551109873699208053471924535714353919958517200729799780336 --0.19895526408252056032409845135982443834511796757213375457963169 --0.4475238099526419459886413871952456513681700881927718429593659 -1.23518278360761984613419084432996754050496371463989745279793031 -0.9445661213686883925599246962191602476997062650507088214959299 --1.805288354686753996355397998794540324998559335969814710818734 --0.7235133959541791984901935219626046033847038938756732390531334 -1.8046881955308273157701567318463412166940758373310765920014845 -1.18625785604315112504333325767892788323587323876893425355320618 --2.0344505531371113483476358459845414712253343228913454188217468 --0.72129099250185619375686944441046077146296140676815788208702117 -0.69700274606603889922387315460622332673227536492327466867325904 -0.0338541803354434153565395229585236366275413935921277031608521 -0.27674134861628521963677988574356345768534610754243278179569536 -0.3450189911379297686147359836332619395978014632728541742395779 --0.5744612222294662666295095802845946744660060217144183389945272 --2.1401419851120298884050640897164792031089985938603731098953949 --2.475306758685792775224097905276378752817608946497611173462498 -0.74414538761380102305612934805024944986718041274867925295958327 -0.4009663622574130770822531144343837361582105319471925667351893 --2.95640043976892192053226420067679672095386561016639646399203391 --0.7705877863146956540458499370376907643725783068356462499631948 -1.6318917326119420452001871701673571620713847405506130082417133 --0.9753554350180776407534694237189415732841517430170038702624415 --0.6709007216840414789168327689639305312819135042015727691354356 -1.3063090429696816011032918220042441516631077306182734353976986 -2.2687830362339896110180984091935407623465082970400790270612644 -0.74455402362741207311990921755411407795344429555031945206137385 --0.0464330783628570546769891826610566519069778082652867536396097 -2.0862481489852289847362060654575221444061674995378324876043318 --0.981873559308810941430389974286071317402261769319129205102677 --4.4922947751289954392281606881965066549382956771758191511854306 --0.0426660642827708664251969273176147630319496660877702515848753 -0.0396010444934846036948766942569390602765665474253547165534288 --1.6077104491836659728053413997955799586957496537628542393547279 - -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 --0.8786687027770929787301562525828872003547410177701220950278899658 -0.1944979336074391420204691208780533563017707991268605634570366201 --0.6717069716036456017860348911350501039034020263227184271420653514 -0.1841240265716411858721923885202834145897392121583597644960322461 -0.531416327611542071221970089939764430329756625444579259583169101 --0.7793598342770851820561551396646691186537674923197586552161425487 --0.04982739811897050028189209963034074300557183166488389610036293982 --0.2152831478765442996690076717147867376683641103330644151579049018 --0.1430325904665435237882241441707630670064919508747748361914900932 - diff --git a/tests/data/nfst_adjoint_2d_10_10_25.txt b/tests/data/nfst_adjoint_2d_10_10_25.txt new file mode 100644 index 00000000..008eba06 --- /dev/null +++ b/tests/data/nfst_adjoint_2d_10_10_25.txt @@ -0,0 +1,166 @@ +2 + +10 +10 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.230402910644737899027368109577132641139999484424691959789185425 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.2472557826481684830963989449602703101137738953947821260330747 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.454917586626400190455113486728514743998772785129201763658322789 +0.201326401841226822499265144634803231090444660833635656408098582 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.272502449871235944005176337000832389787308384521685260378340781 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 + +0.36024533272759875053678464250444427703313495106701310122076194 +-0.76127401519591279048542701547769694507976580402021997953887198 +-0.4418776727162474426479200730001951142181524985521240514535558 +0.34204920139243555808422027483098822345896844419004868532934224 +0.71172329571142012240442631060471148007879037540078334351019328 +-0.36925775163129732311162466971425541755641063335497969779567766 +-1.40296609568177089149099288441533089762641571890108269475934906 +-1.24222826864136726680362537192547381481256230902552158780797057 +0.00607499407228038959892573905960884475869268326449569697231477 +0.92622262524205706128100221683153567164551224298931659146063051 +0.96870992446634450426442935083267457227152314241439241869560816 +0.24683502405368489976421119009095345992629582523743211765415744 +0.81662010161660137553385838832655266824555873321064310931977177 +0.96073948480102318767892786998404683335076075567417072488360436 +2.14786814873824287210940241180033830208962645397139987427864692 +2.72043277095446878580326053372587040605733307728814363729931663 +1.31161305563713719251017446478151743178284268741448438428301323 +0.29358855100947344660632242664243832115512329466704203386752918 +-2.33037285344114859049466890118901147867822149638499912228320459 +-0.65319457675557382151355969957475753713014914159323094975565585 +-0.06460808360130255514343503860987869975166597201400797358957041 +0.66802142378572414618609711067042193304273492797163381116531786 +0.35066660249714439248039685840882532858956284232749400860731416 +0.63312845821082450382247640310173892892614497189495443240059072 +0.58543158718255623515221806560020812595597596781494070587715082 +-0.04644295589176404948913435742038314272546497909548304759151194 +-1.33108841072144350907318333022746557158955138290592931052391389 +1.46222079699733778988237593162047651725024067913753337638443577 +0.30419730612171150858051913586349366778386048196415586552020431 +-1.49374678840376153542191125718239779013549906966155011891684801 +-0.85836698262039596818107400614847405054041616631510289768185754 +0.97699913035222672532113370547649462685845808873853380039547387 +0.80007556872441180890929198602290281746683950370601833482590501 +-1.90643827527857977615353177461668332266924675824806487368554079 +-1.164590527550060848416333223734558200489515441528017870246136 +-0.0252090015426247914584955822951742172962141181980558202922595 +1.36177955331240317843214597125815084795814068312915099957059653 +1.26257156556562518944516106597864955715977059806908796820421695 +0.25153902038591539092787115136533860304324657917688533620149376 +-1.69826602742099556302743439390426511438898946957831853041569147 +-2.80837359107673651463432814319771158375245703554579717720123666 +-0.62901443531509868741933360482930000283150628559320924435582136 +-0.09362678206988441887501271777091192728951732821622727808128908 +0.2626137390677240735838673345350990669352014446588289430552156 +-0.57353504932505921302915008398841148496547016214094167437145453 +0.0023905086574440812189029505691351620474997777252124975722553 +0.04595361813849631132884384149854278656195997945385307551075643 +-0.41248985663178036484351334239015429882960493987818728475645232 +0.29318342876005437888460243910916903734868175442787055780664264 +-0.6470514578902723955532246464518056436673670169941155931918575 +-0.10509828234546338583449228818591967119332319905286615122066837 +-0.7105930185700417151007115920371118243168560225863022786696278 +-0.3639809271779198341802739808982359190726556126436148903840906 +-0.6646841002583483721702871378293363786823562562765757783474517 +0.57633039165218187036682057343534321926038093683330527065861383 +-0.0143042543315503871780361644468942136519286511885816079718835 +-0.51220658752145481990931628077946743570822515947257895692817496 +-0.62667100348548533006861450875663969179784348261850757208098061 +-0.4383894642865408949752838509581638725911430370362681930722659 +1.6952292939386781689737995348264264959768988587693060270754032 +0.0509764684060401659972963078288456707774136788765347555849237 +-0.0882057349328144685098766176032276071352156121349515674916738 +-0.8701108839206839737565135844587642873043968240722007373847721 +2.47761064730819077125760684359206830963016236385501402319408895 +0.28110064791846525539712169668275741376222189301681491657073561 +-1.30704924985225584696943934695729294663567267146186235315395147 +-1.35188797824688590060011022805744935212432663768358552620048015 +-0.1828130177799204163469766916516007466440383154505045260354816 +1.42823363684948616643459779404155001687979263056604179363032158 +-1.2133284497556752522526601626029992722749584617376491997811062 +0.1465808456188106353762446056265723221385644506261193321998832 +-0.9250256199213278378757977005338617181155626793085673132153345 +-0.61089172771883269072266421565255303624083663149442861126675567 +0.09007738552059566491629640951054449225727381382627720151280171 +1.7136666856364154201490935383170508436913081742630631206267476 +1.93437115118678472371728566718493064762354339204839222167683478 +0.6917848676929598178220836703081323423224663446715917963673796 +3.0240690589669797442175921872373366030809531011953541532311477 +0.7313361277909390137252755694481932827050434137457777613794984 +0.7320546350547081933002038481751626640890678112288243942993648 +0.4103105863717511048870715061141664211910560775534508906243553 + +-0.7335087736711041883089151876515694737975402817556229765975958245 +-0.8786687027770929787301562525828872003547410177701220950278899658 +0.1944979336074391420204691208780533563017707991268605634570366201 +-0.6717069716036456017860348911350501039034020263227184271420653514 +0.1841240265716411858721923885202834145897392121583597644960322461 +0.531416327611542071221970089939764430329756625444579259583169101 +-0.7793598342770851820561551396646691186537674923197586552161425487 +-0.04982739811897050028189209963034074300557183166488389610036293982 +-0.2152831478765442996690076717147867376683641103330644151579049018 +-0.1430325904665435237882241441707630670064919508747748361914900932 +-0.5458569288127476004682590208265714990676611459841400026017844665 +0.1856688150172391527088040246433169286752829500750590071977203062 +0.8193143821859564924477154245099351963436429074028089074430038904 +0.4604487491339531156973853721884505256237012331451385915640611729 +-0.8606535828683120015533980099014960687963233985081987928030018579 +-0.2028782443808202039078700152556584967073846417006795171717789768 +0.7727562160593342436881229708062656539223995010850938445718232095 +0.2216455512897554102911455213296037106714896153079531893725412128 +0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 + diff --git a/tests/data/nfst_adjoint_2d_10_20_20.txt b/tests/data/nfst_adjoint_2d_10_20_20.txt deleted file mode 100644 index 41eb446f..00000000 --- a/tests/data/nfst_adjoint_2d_10_20_20.txt +++ /dev/null @@ -1,241 +0,0 @@ -2 - -10 -20 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 -0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 - --1.76143146893263630507479969102574831711361320243036952536594684 -0.35899770819605732231881762940486068133788301466981915563161211 -2.83885693984458722014048253283289593582617061154339622561573007 --0.59645159715206175075797653417445997322411208367010787663570892 --2.70345075644926486124889580951495288356647764274422231897434439 -0.21103420597547403174372582156808481101804208339715706637167539 -0.80419416229930044937796908366804480752145501249073360645110793 -1.61823557797745338421874313098913819576515346547482347035491764 -0.38284768450806290663832043589241261030395899813851113686219901 -0.40560700202193532337816644748471112151041375255018741569290129 -1.45454293685326843619385865328664304903329553181427240728217551 --1.12830432277914550162080892371604656737769895230634702379930972 --1.2111741018264079038982105404715832582249174484942610471922139 --0.33057860709593057774474971455516227034960897870508207223007765 --2.1631665457509841208166688513836022738374125750017972290753481 -0.6579544681292133656828144563115845386034348025147575888302745 -2.4573388337610701586005668699082279015236317267634359623180643 --1.1303213840152801128902369674933598241975405175426469145989591 --1.3202607564641824440676057191475051488294080165037908209157315 -2.22689118033568770147464831307785161036355717797638855888804302 -0.18665355785887900118388995331464413721078804025935144929520248 -0.42229477681519930327948017732900551321342813012191274873967201 -1.41338872288696181936200256031878937991371036077637546116810517 -1.62002161552259685721973498080899625803650464222806704943673784 --0.02337545822870082537306946721421822005123595793586494137024739 --1.64652761209287698883999627693649701692054493039697913328717427 -0.44263180533338967144262404961245804245381462190156286675620342 -0.92228340697132823292628058252269411175602235872769815202244947 --1.42824531919632421000568064720547392796364072231757775268092981 -0.48711833138245852553261734972517849237332089036309417870973055 -1.49387725607936522196783849443184686018709166682448120467846762 -0.37567866349895564725500667296409242979762484644521436159623511 --0.51387163793270107059423505048278209592657005392491425326095608 -0.01048929749160606567562210382488871475626297981836018265687245 -0.485477912813827997761446500476904361844286878052349538035493 --0.9416709692574697807211135905802181040962699875022078589719227 --0.073235342431847205988612325253608759414754453646331135421918 -0.57886861398705916290094573554869619969655839934569610380221739 --0.3108367935356654353877414593399601606611691816399760916695634 --1.81935833904866201130107098395816442258167414765651570782128582 --1.74264586388126226268803996281912595485313021430278609610542069 --0.12973767606025167758694203679244445463657414801580073285651074 -0.90860654114391223623872728334624543939459551945176563710996218 -1.95722815645166269746427888565950602864421022837480104724835179 -2.94287298919397403236168886266953690858190500490543931754001335 --0.16639669916107372976751657950753450213846826235190622282724962 --0.16116327963024610354329691317021872984157158523094792669133574 -1.09577841127351046192815010641367543805036397245703174723178227 --0.4484465012097205485866188786278442587366895850689328800039918 --1.2768412672926743012813252657952025019175814610975084715629791 -0.3773174596682081687439714302315994885609827077647003382553655 -0.6281913957432409021700609324779578310981684043238482182433803 -0.267064829046074695877163179753260772245961272848407047727946 --1.4804152716331516900867406877915594905562658430468732209977766 --2.6071328587962370901018107586534069248070380260914699694549473 --1.5506381412757315990669253850379659138341312458851599070019461 -0.5447114606380892069959523324943709815164329940395736654934704 --0.06673628288418047560134228869477944213687632264958706279654091 -2.83293378737776162539876370057798692612237489483699048545545287 -0.45146062305657285242797520918797305108069875585313283870139339 -0.08934143940779221316458669802868913365252834011281116754182792 -1.99739265411402036627229490652104184677185336652072327820123501 -0.22030870998022632285360682592179072706866532464350574221240961 --1.32968133055825866275546310116288038033479396274782659923854446 --0.95365058973474616671726048460686443244560021834273172865371528 -0.48176974473161931659188114377065480614076822825117440593324127 -0.6132275337358948078022423262056858209759475403729040487551984 --0.7517395617943339839157023100463655201805979177208331911498468 -0.6747731993946308873299269149597703475772096819261271624846899 -0.7147611986151006833032051761336881673003442325264153737838267 -0.0614858964706358516501929818837676936174968616425259426510917 -0.5269273896223616869475159634470181305462977746458103186493908 --1.4836368432641383987280806132081161786452881848992957152742043 -0.6649119274635969454582726157268512700707588716657731300097936 -0.9515633744096675420990961971810926992514225453192302216078136 --2.0981363036506163367692688013434957636971964810286476952337224 --0.97153440384426941570401684669334051649459182295444954258905037 -0.18666352144494250850692920084441757154234644598081868719507376 -1.21077252615593697976586057276086641519454747211932288456898783 -0.63498547346755824878504166693642014312695196354342763250058704 --2.37510898304837156701463759371340458036437161358791579853500166 --1.9266452456611821386085964120527993339573312333056876417414595 -2.6858653735489308752036481418147882867173218882120176628532612 -2.0579163136778167608181562575464034300538024851799874751263199 --0.49875679381536352388903337103151365799977548364250560532224709 -1.1429405507426701835284522058083422497725552710274254699869959 -1.8147216520802647049135377080121962810950443143082513880166162 --0.3895608323327321390484545383263904919067319514444942144915329 --1.9441220590549683618598570379746464548957804248791207558285712 --1.911360917410992159979740707273971567773718829760723163494899 --0.4332606021451201887931778873781820631836566155826536801693182 -0.4013635411937036863882887968227115501619765012794970130534125 -1.4063208631565966784167194522544906687760111040759289030566793 --0.4846598607170153221396398630392864817920930572303286809253945 --0.3115489839783544585400898122327124607091647407067230961980346 -0.95476708849363764207890391559124465345505756145123931136135542 --0.34403551109873699208053471924535714353919958517200729799780336 --0.19895526408252056032409845135982443834511796757213375457963169 --0.4475238099526419459886413871952456513681700881927718429593659 -1.23518278360761984613419084432996754050496371463989745279793031 -0.9445661213686883925599246962191602476997062650507088214959299 --1.805288354686753996355397998794540324998559335969814710818734 --0.7235133959541791984901935219626046033847038938756732390531334 -1.8046881955308273157701567318463412166940758373310765920014845 --1.6311692566104175377824106690856382893508454858707418533060143 --1.6309439084962166936782558880780161025747083253824869277423934 -1.0140448730121283640988430975875879521937438696860588497833986 -1.6132212707786796254034979411658911263800884477564817065068974 --0.7554796292521770880316086453215086363582907671757929559920391 -0.0706052816886972369433526246238788612020799907846494726977044 -1.3048103845057356099430897528526576200510648668015239987738342 --0.7686552962176008980058599409300175633288868063687433256010729 --0.7484654710897942481107523971656005505583460009719958133665619 -0.2422236962891424148974587374761352412254105103412358108990304 -1.18625785604315112504333325767892788323587323876893425355320618 --2.0344505531371113483476358459845414712253343228913454188217468 --0.72129099250185619375686944441046077146296140676815788208702117 -0.69700274606603889922387315460622332673227536492327466867325904 -0.0338541803354434153565395229585236366275413935921277031608521 -0.27674134861628521963677988574356345768534610754243278179569536 -0.3450189911379297686147359836332619395978014632728541742395779 --0.5744612222294662666295095802845946744660060217144183389945272 --2.1401419851120298884050640897164792031089985938603731098953949 --0.7738489551364070251809672254733728790728900163771822727537841 -2.0352569844187303009092282727776637627362250158808857516579972 --1.172044916425913714996262400349360111822198184355021577061512 --0.0932517665686746095669284119685028014192990847187244034751723 -2.4687236716958889678742775773050457265371063496572186336423835 -0.0293693471843298558801071259039891883710300403529463209002814 --1.3080780835884512400463166948855032152856554873440621131816372 --0.5670678312397311328100500455380277717641601431850827445462772 -0.1367428944200031908142387070613481149334043444885785279553009 -2.0029195867699519393010479477029511526281603566457526272625736 --2.475306758685792775224097905276378752817608946497611173462498 -0.74414538761380102305612934805024944986718041274867925295958327 -0.4009663622574130770822531144343837361582105319471925667351893 --2.95640043976892192053226420067679672095386561016639646399203391 --0.7705877863146956540458499370376907643725783068356462499631948 -1.6318917326119420452001871701673571620713847405506130082417133 --0.9753554350180776407534694237189415732841517430170038702624415 --0.6709007216840414789168327689639305312819135042015727691354356 -1.3063090429696816011032918220042441516631077306182734353976986 -0.2486386474884816388875252418173620543072670169195672743552431 --1.0908843623478222628382240250428309563163552496047877514853794 --0.8649052667017660181791321393484193994411470863653729899182186 -0.4124501220648015976960267346807032903994812467835316675946708 -0.1872468936568535030917695404446001678211987865197623056537281 --0.2788976312511903516594542024836479267127013655653911984900423 -0.2261847388459337325564608129248938512058929424464453856166749 -1.6823203207427276036715954499484031842671835267471182813149061 --0.0989487665050107206614526844022065503840606789793129470440085 --0.4009330520264926069400773802926388902423539482584582212360613 -2.2687830362339896110180984091935407623465082970400790270612644 -0.74455402362741207311990921755411407795344429555031945206137385 --0.0464330783628570546769891826610566519069778082652867536396097 -2.0862481489852289847362060654575221444061674995378324876043318 --0.981873559308810941430389974286071317402261769319129205102677 --4.4922947751289954392281606881965066549382956771758191511854306 --0.0426660642827708664251969273176147630319496660877702515848753 -0.0396010444934846036948766942569390602765665474253547165534288 --1.6077104491836659728053413997955799586957496537628542393547279 --0.4367021738146980469941325607571544614734391112660203672036371 -0.9603268003152493275145389952958160338048458621235922099717952 -1.0129261803640052395050590119169578972470118718530903304497926 --0.6641381995357217811546390835085151045317499738116576708921783 --1.8322623201686362167273951813204242580551430782748604423655935 -1.2111651447040516161944629593961572492648981104387769186107376 -1.3874657193197334007851892129722922100618132352399093504857668 -1.6109053379947642664443746447988134179024532801831537108517314 -0.8478740741698271511922221503038596179381560204319005863160594 -0.0263408430269528630954879147450289159925278543659567775893825 - -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 --0.8786687027770929787301562525828872003547410177701220950278899658 -0.1944979336074391420204691208780533563017707991268605634570366201 --0.6717069716036456017860348911350501039034020263227184271420653514 -0.1841240265716411858721923885202834145897392121583597644960322461 -0.531416327611542071221970089939764430329756625444579259583169101 --0.7793598342770851820561551396646691186537674923197586552161425487 --0.04982739811897050028189209963034074300557183166488389610036293982 --0.2152831478765442996690076717147867376683641103330644151579049018 --0.1430325904665435237882241441707630670064919508747748361914900932 - diff --git a/tests/data/nfst_adjoint_2d_10_25_25.txt b/tests/data/nfst_adjoint_2d_10_25_25.txt new file mode 100644 index 00000000..fc1ac057 --- /dev/null +++ b/tests/data/nfst_adjoint_2d_10_25_25.txt @@ -0,0 +1,301 @@ +2 + +10 +25 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.230402910644737899027368109577132641139999484424691959789185425 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.2472557826481684830963989449602703101137738953947821260330747 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.454917586626400190455113486728514743998772785129201763658322789 +0.201326401841226822499265144634803231090444660833635656408098582 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.272502449871235944005176337000832389787308384521685260378340781 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 + +0.36024533272759875053678464250444427703313495106701310122076194 +-0.76127401519591279048542701547769694507976580402021997953887198 +-0.4418776727162474426479200730001951142181524985521240514535558 +0.34204920139243555808422027483098822345896844419004868532934224 +0.71172329571142012240442631060471148007879037540078334351019328 +-0.36925775163129732311162466971425541755641063335497969779567766 +-1.40296609568177089149099288441533089762641571890108269475934906 +-1.24222826864136726680362537192547381481256230902552158780797057 +0.00607499407228038959892573905960884475869268326449569697231477 +1.91657284442035340328413648046587259061888115310698570758147815 +0.35317674560753661885765329603392307825003966650361075863928444 +-0.48950240896281016792176919778871480536527715183755180442476156 +-0.152058413122847042815943943901025572300147209252668563568811 +-0.6491115560302478831599544756204332499254115486756451314012207 +0.1685710055501812992269849506463615702111906798764852797872765 +0.2823209969369385727895147976092857243680253969199490389320264 +1.3584685418332212691251734173418617490702722398418081267262769 +0.713619367356051129502154469153995390055688392061163018158522 +0.4181018677598267810784210340677439833632588355307607330380675 +-0.2388653996537560845947317822584304964125527927408844417552274 +-0.2351288521898560620492028247227621707607426454067330312597866 +0.5230208550112205844981871133989086971747809223769999435544109 +0.0520757069879354904384139117112130122815864605877606009829551 +-0.9184702557111249899875011688666452540989666713487795202125444 +0.92622262524205706128100221683153567164551224298931659146063051 +0.96870992446634450426442935083267457227152314241439241869560816 +0.24683502405368489976421119009095345992629582523743211765415744 +0.81662010161660137553385838832655266824555873321064310931977177 +0.96073948480102318767892786998404683335076075567417072488360436 +2.14786814873824287210940241180033830208962645397139987427864692 +2.72043277095446878580326053372587040605733307728814363729931663 +1.31161305563713719251017446478151743178284268741448438428301323 +0.29358855100947344660632242664243832115512329466704203386752918 +0.17643780483994020846447195261513482338611880225624096861057175 +0.76961768546654612934105856170109599009723956755460961213161949 +1.47920116536627808697927068786191588765072762376755688732264656 +1.5895609810522847742744363204025215895416476880515069433286036 +0.2706453261069599171421394109291847903086207412891472820628118 +-0.8426141292080166804266673000405013343071520145161252827539609 +-1.9989140070106801187817711003632039293204913034500324806976242 +-1.2395099073023788939987761015195772897458499559552773225085403 +-0.7387182396196551498837445392496022083551420921170319785575484 +0.0187367046908426503908695743624868996640023317331996273817171 +-0.7614955339567790326783393465104961646465339506050959703058122 +-1.0439313461061027524149748849449686501675420793530928811557079 +-2.9573357073247999573785050490361239217569283000430696866484717 +-1.8841545962595933891213690660217396998955703124477211928357611 +-1.395085848419573474469528920063909189152621767295930717807111 +-2.33037285344114859049466890118901147867822149638499912228320459 +-0.65319457675557382151355969957475753713014914159323094975565585 +-0.06460808360130255514343503860987869975166597201400797358957041 +0.66802142378572414618609711067042193304273492797163381116531786 +0.35066660249714439248039685840882532858956284232749400860731416 +0.63312845821082450382247640310173892892614497189495443240059072 +0.58543158718255623515221806560020812595597596781494070587715082 +-0.04644295589176404948913435742038314272546497909548304759151194 +-1.33108841072144350907318333022746557158955138290592931052391389 +-0.81459901879434361432976391641660397296840058995919454879567032 +1.5160391867986691760706118845255516162117446733535134996388073 +1.4040988539415910330708556665070812776690108860763564953693018 +-0.2988635981240302409577948323931227619177082948428779879242412 +-0.3643528886563872029889059772587943516427125793619011136726405 +0.8944896063610245760045573585045855379373672697701013573257046 +1.2823953028942141124693088586439801377866883829905438446031167 +-0.1486320594469787654868716942223058809265779007345462482772153 +-2.012586043013087096071836656792618266637636063103253125741176 +0.0667818429274209841608247879802281241831747249599077545253783 +1.5535011760857070138794362709801550043319639098010273065530289 +1.1499744919618694911183410605994308923648688204287178091018962 +-1.436977677538246841507474281861740187218238710340888072868174 +-0.0932861238659303481284542175861266987062319535437727639273743 +-0.6184925786416135172056496118001521313466398925660966126546675 +1.46222079699733778988237593162047651725024067913753337638443577 +0.30419730612171150858051913586349366778386048196415586552020431 +-1.49374678840376153542191125718239779013549906966155011891684801 +-0.85836698262039596818107400614847405054041616631510289768185754 +0.97699913035222672532113370547649462685845808873853380039547387 +0.80007556872441180890929198602290281746683950370601833482590501 +-1.90643827527857977615353177461668332266924675824806487368554079 +-1.164590527550060848416333223734558200489515441528017870246136 +-0.0252090015426247914584955822951742172962141181980558202922595 +1.1467075490478885577343658482482055431781636518828584225009987 +-0.7161127319833518094565154800982261759362901714273252023917335 +-1.0329739421761498073341902205479079052536370498109008607072225 +-0.6224560531971384036517939323674404243291474398604369961468495 +-0.0774578672978431990743622711234283510534952282681497644745803 +0.3141237997848426962206394900753524571436813137243862611003474 +-0.8035031932104088440008004575778640402692444278325365437683772 +0.6906384173087935024045914958904671117948038249333470741165023 +0.7613579352589877163571881990587239607644794063016180577325675 +-0.4672536706600291724692321421307479157702406244906807163168295 +-1.3532399935106791465176325968900917526328327160380457962037191 +1.1959300372427937152290649424912895970803044553974597257378525 +2.0042046752740304665154815545858366376663454407073437871295096 +0.2296810130787041097742046455775013506790321619215927629311018 +-0.9801972880728055037314161786608073475314845544932495168493659 +1.36177955331240317843214597125815084795814068312915099957059653 +1.26257156556562518944516106597864955715977059806908796820421695 +0.25153902038591539092787115136533860304324657917688533620149376 +-1.69826602742099556302743439390426511438898946957831853041569147 +-2.80837359107673651463432814319771158375245703554579717720123666 +-0.62901443531509868741933360482930000283150628559320924435582136 +-0.09362678206988441887501271777091192728951732821622727808128908 +0.2626137390677240735838673345350990669352014446588289430552156 +-0.57353504932505921302915008398841148496547016214094167437145453 +-0.33369099163467275734414028983901784353412309516517566329630801 +-0.81977365940708860150741684208772286148236109444305865886343823 +-0.4517138398136921220525269044736882228785825991821222492779677 +-0.5287429528843499589422442452715806384443206125193345945707194 +-1.0099134009257233255913435137002389652388850354410576670225924 +0.578463316440707611696747067761567628278335203421387503131723 +0.3326127892501068827279749464899864170868221538895073352303545 +0.4895997199373940443267817520198174442952170221087157099060926 +0.1373189089552771125397992450262968058394280365968778178535654 +1.6792351928851476544983185623436095643534557052517863315034427 +0.2628431044609479934978330837592196407397147681290470369553742 +0.4615043220377406506284198073224234455724329774071188911214664 +-0.9247318341287949852939529852124797319139034088036555544027235 +0.5235493459660261774265256131134951936997638112390989070731074 +1.6747050896761591205980543859784641624042744116990285196943043 +0.0023905086574440812189029505691351620474997777252124975722553 +0.04595361813849631132884384149854278656195997945385307551075643 +-0.41248985663178036484351334239015429882960493987818728475645232 +0.29318342876005437888460243910916903734868175442787055780664264 +-0.6470514578902723955532246464518056436673670169941155931918575 +-0.10509828234546338583449228818591967119332319905286615122066837 +-0.7105930185700417151007115920371118243168560225863022786696278 +-0.3639809271779198341802739808982359190726556126436148903840906 +-0.6646841002583483721702871378293363786823562562765757783474517 +-0.0807603428207199949993162784217599120072852038293925535315467 +1.5707490197623138734659369866645171873530550433323713674149339 +-0.6069204636137842228879640743291443844412344072112162366563906 +-1.8717126868614655945811015442203447005143246135450952972427435 +-1.3139904355151289649991678891178889115954456767493784252954984 +1.0164420762166458360728535885684226237136207817961555397868476 +2.5859333500238601117143194439986947085211058734042516138951432 +1.2487513404194085510774361366089733675128578749755221356989306 +-2.7547848527299153337968060908107052276424390739966525931735375 +-0.7324144667618372773806646286802712633147213084031075233821193 +-0.4362994619448748803695510482188981293524348193874038397542994 +2.661150478358291705340622337678474851427812220898618888594022 +-0.0307887112977396442484644046139815519366615981827351300124591 +0.6941372065825907272856424769976359846883366553784414954319733 +-0.4814309668108932025814452459599737162079330064435943291552214 +0.57633039165218187036682057343534321926038093683330527065861383 +-0.0143042543315503871780361644468942136519286511885816079718835 +-0.51220658752145481990931628077946743570822515947257895692817496 +-0.62667100348548533006861450875663969179784348261850757208098061 +-0.4383894642865408949752838509581638725911430370362681930722659 +1.6952292939386781689737995348264264959768988587693060270754032 +0.0509764684060401659972963078288456707774136788765347555849237 +-0.0882057349328144685098766176032276071352156121349515674916738 +-0.8701108839206839737565135844587642873043968240722007373847721 +-0.1407417584412078510047642468720327809974029228069730662676148 +0.2002278171861680334840490972034818716641920142328708688961874 +-1.0615178669362479835125810692199776174362482206009914067803146 +-0.1329536290532419968267201975662163502393979186724181229564422 +0.6784161253119122800533494466937053948553531478822434333327943 +0.2230661303735887738808249547355690778903263807887299203284902 +-0.567852137126855500125647936006051584951514365054685049492478 +-0.0745624628583020984976910320497088464661649923200432676868318 +-1.5673160529743497969164118688087939545751872097151267577979009 +0.62177602977143221529107806283656411213727969604903574168581 +-0.5680437741027681582926564510831778412036076495238952191209056 +1.3874538817431219307020302705558975816671141559754533844394653 +0.0239326814269543117395013223847204859929497163324674041265001 +1.3091376069627920086062774741182571037892407450807690945288471 +-0.6041659947767015374765058919435015036775068471579371243028141 +2.47761064730819077125760684359206830963016236385501402319408895 +0.28110064791846525539712169668275741376222189301681491657073561 +-1.30704924985225584696943934695729294663567267146186235315395147 +-1.35188797824688590060011022805744935212432663768358552620048015 +-0.1828130177799204163469766916516007466440383154505045260354816 +1.42823363684948616643459779404155001687979263056604179363032158 +-1.2133284497556752522526601626029992722749584617376491997811062 +0.1465808456188106353762446056265723221385644506261193321998832 +-0.9250256199213278378757977005338617181155626793085673132153345 +-0.0113258179944209927253767859803626411334337339307492532772323 +0.1597945351931291210962099117136462486972959353608828454776202 +0.305998709167603881011895866721353262783674330651271152726209 +0.7026102681969057881793024509441148863926174788674660386843578 +0.1685319554698776405664691373005369277997555774453165783960004 +0.0307641512262974925890019155524021477271227400607678522950327 +0.2421818707887026992067543106873561529687386639200646879466716 +1.1129580835448875017406583626491724129425873561011424565347481 +-0.4597944855975626216268078319204715186672662530471351535114247 +1.2272471431462833474205047513332908519289895169922210351831093 +-0.10959710115692267744792344434932233197679999393724486355257 +1.3785104806611078270908780777917552077384635077712507037398976 +-0.6000151879508277786780790808689688292689970100065647335414353 +-1.6501188704823974464830500027847656734049270916992146520416907 +-0.5460274269441710343234624762609622222014437016182470622715241 +-0.61089172771883269072266421565255303624083663149442861126675567 +0.09007738552059566491629640951054449225727381382627720151280171 +1.7136666856364154201490935383170508436913081742630631206267476 +1.93437115118678472371728566718493064762354339204839222167683478 +0.6917848676929598178220836703081323423224663446715917963673796 +3.0240690589669797442175921872373366030809531011953541532311477 +0.7313361277909390137252755694481932827050434137457777613794984 +0.7320546350547081933002038481751626640890678112288243942993648 +0.4103105863717511048870715061141664211910560775534508906243553 +2.4801802255183439859115625263222419953232285008566413892610896 +3.6459517938591912419720003425869805691482187694929282535458745 +0.8665023974241966887009151918152737500296025922463297113546286 +-1.8277349179433724490939736505215361492268513832407854533560544 +-1.6145553749774221387878330559761858522529785695186182933507394 +0.2207964125601626610619067560848720254006084929080869380968641 +0.9620040627529881680251446222394214229181419007130845115426685 +-0.6671855992557848280719852300529857821288911664782410963171695 +-2.4763012940391181667181374916501890690055748969770106174418681 +-0.1372125555510086537412502558628715887620242615861822971301296 +-2.3889887806725926172113552852564041456277238731380081899677348 +-0.2364259507122986342342262698856876979056988639567033664103035 +-2.4556469663807474463956298495913067333308253194776091549093525 +-1.8985167043664389026867335066153448855914811780134564124900201 +-1.2759652368717618568331358824462736705979126408409022536615185 + +-0.7335087736711041883089151876515694737975402817556229765975958245 +-0.8786687027770929787301562525828872003547410177701220950278899658 +0.1944979336074391420204691208780533563017707991268605634570366201 +-0.6717069716036456017860348911350501039034020263227184271420653514 +0.1841240265716411858721923885202834145897392121583597644960322461 +0.531416327611542071221970089939764430329756625444579259583169101 +-0.7793598342770851820561551396646691186537674923197586552161425487 +-0.04982739811897050028189209963034074300557183166488389610036293982 +-0.2152831478765442996690076717147867376683641103330644151579049018 +-0.1430325904665435237882241441707630670064919508747748361914900932 +-0.5458569288127476004682590208265714990676611459841400026017844665 +0.1856688150172391527088040246433169286752829500750590071977203062 +0.8193143821859564924477154245099351963436429074028089074430038904 +0.4604487491339531156973853721884505256237012331451385915640611729 +-0.8606535828683120015533980099014960687963233985081987928030018579 +-0.2028782443808202039078700152556584967073846417006795171717789768 +0.7727562160593342436881229708062656539223995010850938445718232095 +0.2216455512897554102911455213296037106714896153079531893725412128 +0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 + diff --git a/tests/data/nfst_adjoint_2d_10_20_50.txt b/tests/data/nfst_adjoint_2d_10_25_50.txt similarity index 87% rename from tests/data/nfst_adjoint_2d_10_20_50.txt rename to tests/data/nfst_adjoint_2d_10_25_50.txt index f08628b4..c9d66416 100644 --- a/tests/data/nfst_adjoint_2d_10_20_50.txt +++ b/tests/data/nfst_adjoint_2d_10_25_50.txt @@ -1,7 +1,7 @@ 2 10 -20 +25 50 @@ -125,6 +125,11 @@ -1.3114006616124870411949136775451574726903656073360494406009535 -2.82850356310362669925338567401765910116674474764184277758124 -0.0701657463528352834546838108465813302285873581313484149607954 +-0.4285353494061338682618214605703490438722285217129853160109048 +0.8725549198959104512153110965453676226136900627696731600660117 +2.8850202021100455843283125702909104105042222102645634866126097 +-5.0378522858990189593921286372257784252953707202711827713652245 +6.3452866802902171070652601007893706790769724376442337852568945 0.36131938962752668564931956792005495013325505868474278578584952 0.93601322002679530568915122449216814183554098027726079258184644 0.17595332536433541971679625934322768155506990037749137502766111 @@ -144,6 +149,11 @@ -3.1799788942288055869936569592625448938053414101719597632990041 -1.0764291032799673955052365299860925695210075659219372927218329 1.438784078452364597103386008350521192720019602773434345599237 +2.2011962381012875698357576693799759835731852324207037466780222 +-2.4049378971641027380144389052228217947659613289035057195610798 +-1.611178469271674910692663193401872017692730888047448599476424 +4.4222980824967206026922168678299439083180070137430406917902602 +-3.0729311128174948203859682549537101167829545168314015246378505 -0.97429212762563456274906820184427241260234299372905422337708698 1.3759776067953720461801361420624123455033169154531054158382798 0.2376423178248998960522282080844813663564393806129836706561517 @@ -163,6 +173,11 @@ -0.7801554043935361292681797197739999129688054210855422709004839 1.6726525489756411191966672990974841737614872478785811891346975 1.8276899024690559989174647615885728992957581255375184832222743 +-1.2388183007211184366516428432426671797670890985427659295204465 +-3.0787939982889055615110904844298991097031981827868188148025888 +-0.4061141280921294224076885756236925265546706788033076564907406 +0.0143801310261719089281175465977239735660909641744904845377431 +-1.5846336445274503244445756914499613570426474409716416136845669 -3.4064566851709168754169772701227556093037016825897137223246397 0.7825833719935938933338872416563408225639681181534641367935008 2.2685355345106277597306553299038320355759612739707936768963681 @@ -182,6 +197,11 @@ -0.9402938264667808049290741147798221943532253510278843811782226 -2.6104294572778615861048678760858812506970986770348561323125387 0.3543666979608898901389286258401308800145737882451910226610964 +1.5666406866474943749705067618855715595368397301097008738130311 +-1.5050179391056904574505744900122066675549137673609242027960909 +-0.3694115474042381676402681183118837160999085946198270431687551 +0.3119519979373057802278992348584110478306383602844726474306318 +-2.1243733357046741985221976742419166562567059647203524857182125 -0.1227434546454076441295023851860886656580998828697771668236592 0.7874675952140726128509266603641277331050306044046615236001563 -1.4119559918420771425866064108225669447423419903335974671054855 @@ -201,6 +221,11 @@ -1.5530516959681811676973160427867676984628067560186510337307692 1.1465145567763507125047830364534883854742331627990327316122143 3.3034337483919145910101664534210737363031021437865632238626665 +-0.9586889110474464048780810579651536038429701509582112760710359 +2.5552938273571511393645561201945064980093119568980106417906876 +-1.0383132971465545869156047348750157515513289463449109180599573 +2.8106885930883527916198943449881955331845238699419895480371269 +3.4832502025469427166121962695135967275955046689714280418274094 -0.8735493595462440058907194148433406216402509150818860654058318 2.4471568663482879395187212781423566859461149449670868841654155 2.4176451750745355165929583802748574285686526433032642904678503 @@ -220,6 +245,11 @@ 0.4348270707393379824642736530876003065752806640458788543171655 0.5445036489879887488813739239125806572959741433354683010562248 3.6518531816846382541397251586258497728106044436232298851769171 +-1.9219371951793389644734478230032661272524123208486616639663922 +-1.9390135652676250056621364035952802501214685412273400025200758 +1.4701441133034637264336065088014842550788007993231884438173449 +-0.6644728556783771517118513704265440655481370024222732070926895 +-0.5371985013212611947363512259395141306646968956752207934685246 -2.4422967896572567092541637652527364573924825476060933707572896 -0.4539400726597934221870087687823420705043129391775678124213158 -0.2612640794353116227053233418509184540694957063691144914901066 @@ -239,6 +269,11 @@ -1.0132796118903577150603037515361876381711869611724000526365201 -0.6348271908421561313597055789088813349821815324804508894587834 -0.0709896909827038380883507941210170151176502795448109089643943 +4.4358069156573445615816998146641376471858097417184488253321471 +-4.7600184461230087669274923375424835538648031208842622981333253 +3.5767010054659576567577055261527479874776217338709592533869627 +4.000976467540729007320094016687135435605181672707624117720792 +-2.9600160428351437461926917778212662933986149106609157832814618 -3.7112968335856745773262691764319318577948290877976900740697014 2.4127923682949903045256864460995263583632033037557904630827129 -1.9856798440904900101354352746556906039073148321727535753770752 @@ -258,6 +293,11 @@ -2.5192058540906738212139988844458124681680134795847166306848854 -0.6818228181279743432951649555405360231184393523892655003991675 2.3891813001591570809150093881212747186033587896823950883042944 +-0.81986351831663872019585544119580989200628678251718648845332 +-0.2626974904548400256501706320922506131105366599301736415013067 +0.471598214084890613569920924613536428465480866432116979099705 +0.6233224632862744210621885136960877385746051391096119931515851 +1.0128544863336911935818562361562552007759667195327286407619711 0.8315803865643513676897295902353765976727919925999588340187098 2.0660062935529555810228317482255250563393344573450644810968124 1.2517713940259354988903941644476061542240930872367232236197187 @@ -277,6 +317,11 @@ -1.4917485847272523374374165641389452552349647205998028082403249 0.3298418472692085684085807795325857068353699573070208396743639 0.26577040791306180848509001907826098322253437677561640834511 +-2.0565375233219616015576917131066724068611611301112017567868169 +0.2100346116067670245496576799134430801017475228943621897387143 +-0.3590571328524095536871062267263711902304612184597827159780959 +-0.0886040591866854753037622183974631491302471109537851227579763 +-2.1491852970781177067055987481149525350056929230384762013826919 0.7721031360269444536624854764846278079390436516442447307214583713 0.7113282365127787106295924505560767722199840055537543517442585349 diff --git a/tests/data/nfst_adjoint_2d_20_10_20.txt b/tests/data/nfst_adjoint_2d_20_10_20.txt deleted file mode 100644 index 2cffb896..00000000 --- a/tests/data/nfst_adjoint_2d_20_10_20.txt +++ /dev/null @@ -1,241 +0,0 @@ -2 - -20 -10 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 -0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 - --1.76143146893263630507479969102574831711361320243036952536594684 -0.35899770819605732231881762940486068133788301466981915563161211 -2.83885693984458722014048253283289593582617061154339622561573007 --0.59645159715206175075797653417445997322411208367010787663570892 --2.70345075644926486124889580951495288356647764274422231897434439 -0.21103420597547403174372582156808481101804208339715706637167539 -0.80419416229930044937796908366804480752145501249073360645110793 -1.61823557797745338421874313098913819576515346547482347035491764 -0.38284768450806290663832043589241261030395899813851113686219901 -2.22689118033568770147464831307785161036355717797638855888804302 -0.18665355785887900118388995331464413721078804025935144929520248 -0.42229477681519930327948017732900551321342813012191274873967201 -1.41338872288696181936200256031878937991371036077637546116810517 -1.62002161552259685721973498080899625803650464222806704943673784 --0.02337545822870082537306946721421822005123595793586494137024739 --1.64652761209287698883999627693649701692054493039697913328717427 -0.44263180533338967144262404961245804245381462190156286675620342 -0.92228340697132823292628058252269411175602235872769815202244947 --0.3108367935356654353877414593399601606611691816399760916695634 --1.81935833904866201130107098395816442258167414765651570782128582 --1.74264586388126226268803996281912595485313021430278609610542069 --0.12973767606025167758694203679244445463657414801580073285651074 -0.90860654114391223623872728334624543939459551945176563710996218 -1.95722815645166269746427888565950602864421022837480104724835179 -2.94287298919397403236168886266953690858190500490543931754001335 --0.16639669916107372976751657950753450213846826235190622282724962 --0.16116327963024610354329691317021872984157158523094792669133574 --0.06673628288418047560134228869477944213687632264958706279654091 -2.83293378737776162539876370057798692612237489483699048545545287 -0.45146062305657285242797520918797305108069875585313283870139339 -0.08934143940779221316458669802868913365252834011281116754182792 -1.99739265411402036627229490652104184677185336652072327820123501 -0.22030870998022632285360682592179072706866532464350574221240961 --1.32968133055825866275546310116288038033479396274782659923854446 --0.95365058973474616671726048460686443244560021834273172865371528 -0.48176974473161931659188114377065480614076822825117440593324127 --0.97153440384426941570401684669334051649459182295444954258905037 -0.18666352144494250850692920084441757154234644598081868719507376 -1.21077252615593697976586057276086641519454747211932288456898783 -0.63498547346755824878504166693642014312695196354342763250058704 --2.37510898304837156701463759371340458036437161358791579853500166 --1.9266452456611821386085964120527993339573312333056876417414595 -2.6858653735489308752036481418147882867173218882120176628532612 -2.0579163136778167608181562575464034300538024851799874751263199 --0.49875679381536352388903337103151365799977548364250560532224709 -0.95476708849363764207890391559124465345505756145123931136135542 --0.34403551109873699208053471924535714353919958517200729799780336 --0.19895526408252056032409845135982443834511796757213375457963169 --0.4475238099526419459886413871952456513681700881927718429593659 -1.23518278360761984613419084432996754050496371463989745279793031 -0.9445661213686883925599246962191602476997062650507088214959299 --1.805288354686753996355397998794540324998559335969814710818734 --0.7235133959541791984901935219626046033847038938756732390531334 -1.8046881955308273157701567318463412166940758373310765920014845 -1.18625785604315112504333325767892788323587323876893425355320618 --2.0344505531371113483476358459845414712253343228913454188217468 --0.72129099250185619375686944441046077146296140676815788208702117 -0.69700274606603889922387315460622332673227536492327466867325904 -0.0338541803354434153565395229585236366275413935921277031608521 -0.27674134861628521963677988574356345768534610754243278179569536 -0.3450189911379297686147359836332619395978014632728541742395779 --0.5744612222294662666295095802845946744660060217144183389945272 --2.1401419851120298884050640897164792031089985938603731098953949 --2.475306758685792775224097905276378752817608946497611173462498 -0.74414538761380102305612934805024944986718041274867925295958327 -0.4009663622574130770822531144343837361582105319471925667351893 --2.95640043976892192053226420067679672095386561016639646399203391 --0.7705877863146956540458499370376907643725783068356462499631948 -1.6318917326119420452001871701673571620713847405506130082417133 --0.9753554350180776407534694237189415732841517430170038702624415 --0.6709007216840414789168327689639305312819135042015727691354356 -1.3063090429696816011032918220042441516631077306182734353976986 -2.2687830362339896110180984091935407623465082970400790270612644 -0.74455402362741207311990921755411407795344429555031945206137385 --0.0464330783628570546769891826610566519069778082652867536396097 -2.0862481489852289847362060654575221444061674995378324876043318 --0.981873559308810941430389974286071317402261769319129205102677 --4.4922947751289954392281606881965066549382956771758191511854306 --0.0426660642827708664251969273176147630319496660877702515848753 -0.0396010444934846036948766942569390602765665474253547165534288 --1.6077104491836659728053413997955799586957496537628542393547279 --1.5349408013906555600106109539207420242506746358654972677136591 --0.5137669189379050044239193081184290500592898980389602637702685 --1.5194400662600721540516227226144647569037368008371602956937161 --1.8736249595537908942731556674459114048444120282166142578754305 -0.1176193619107542223139758235412007899829549192227250957087861 -0.3646378843754825577604179899349616944014378733845789246127044 -0.6614336704749501040523214938942788452320164022147490782119061 --0.6201909261394876493541780132369834377979063687508998442643737 -1.1336932158706201266427695077855289604668602820892360700911833 -0.4011692583876588689461940808418090827242355185533628893879759 --0.031981665613701933100133348535252771659131477197664837478189 --0.4490321447779803137836409499419072587350805850332826723699027 -0.0329475382414193942566590340646769970796713282963859281278106 -1.1871222474761146452455281888547362464217800753431881842814197 -1.327905916926171352667761790457881359187746613801174356144108 --0.3880158414623024510754050432972355287268393163282409771040508 --2.1297076612641716090480059740801130191808332209264521669903206 --2.0650522966286903286635478127647039360574108353984519338515505 --0.6352791399521314724277897559546586836769299981268470891395981 --0.4947519972018366209847777194158825926422677506992806992816057 -1.1302881276822531759088036865261492167005720661601291744160478 --0.6152965031958286080324993839028033659468805864014895264179459 --1.2319891152892752829661934565954111193063291796743799162278346 --0.0965748290630814077445069038450904135890916696583891309681339 --0.4169348251658339565144938939563799468485746045414982658853979 -1.6922625163266315891115331103202956076379441757072862135428972 -1.0466615139241494341841952857979027615696173356004673459594196 -2.4352922526148354662687089239401618934423366810211413960209315 --0.2015271728220316419201705818130211679005940578877765626351141 -0.5231547867693168694952474231549921227123397337039134678337099 -1.0247984070450733664196791237259375455505543588882022587429184 --0.3108530041668850308078872241171229641084477245329241971069502 --0.869235764668352226543321544430016608581641314172446924101723 -0.3337385773009405663756434929175579083635817729797263266065435 -0.7824615933516339858607608957036608759662627966650440134611985 -1.1489447432517010202714369411762497030198457055861695248082207 --1.2675025648678892390094416522026273217482620786153223091996727 -1.1077280101615961351287295325052859911993532006346971114817787 -1.0258560730572172783065683576747829324456916431384689687875163 --0.3330435989122286995692900282365708895862188810033448368510979 -0.6363033733124077966633651777211727039515188614469790594528245 -1.295240527305576265306830944971658114570272892581654277830272 -0.8981521611810378433758162458878692118194976051530916764204863 --1.2444463804396122939087890420682960143602868470598664027172493 --0.4302659511093591686379337535615584315212054269466411276963959 -0.357839663382418508403421033244035492815637684415620502576932 --0.0266774526143596505942427440060401202519602400518725427187671 --3.0862014844727626319831047165191873697683053111827650008300842 --0.3605109710769521483053863684557276269049242714219563838029289 -2.7460904168814540346257389719981767627627983946827493960854137 -1.4054440482488948788428605594937121160107760810467954870668514 -1.2217690342168398174437106270970273285514430248085206681228696 -0.2777934604126524849162859587873922694884399671380953365217013 --0.0183768174605447268185647302007627553330211929196041418354499 --0.2979355072017907718192060959118417575916091398263254579907234 -1.370096988632309755422924603199809199169231656369629731545729 -2.3906500196632812560972428598237222827311785248056684096207134 -1.0222898700966580663256322661385480987099543548977066784588545 --0.3713525632844606292937815260056711325073473986408370945937134 --0.447111023421550405039404746201437940169757161479086198993782 -0.4230059645474924061306833576645281991167276687451703735316371 --0.3446175445072641769756334329698453184433985858811905410167659 -0.1116179558942008593176228951501089344040060545578310235330581 -1.6987626125488153349550523880588347527948629732104167120307034 --1.1636926159418146487205941875261369172996921750810496779819592 --0.0931390555224934520883524849708133179610146253164097963541224 -0.4280364909530966963718341061096700037004840657323275289570154 --1.3122526825377771747565119781477676566743979000648379619171664 --1.780948437804559773327000979943026467348752362255510124744673 -0.7860264409239121575758928769473192043414390252678253614610689 -2.4891430422182410656435047634265982321749802503391962992509541 -1.2164099837150167725464728637288195435683876490861000113618181 --1.4529023136104547330625140265743983885295452974090897811281382 -0.7170203724440175251814190360724320672733514023228441448090486 -1.6726238321939850351504736299661018715785889308916031867891208 --1.7334195718854327066314951540775794160235142783604335032053409 -0.2369013872184233297586885966017926094307519709564849764302474 -3.4705393302243079283872226752061752841187692347625633089463351 --1.0498215479440293809810320213829386569276458268187761957157179 --2.6624432649744351428167417619153896727779894258994617946409982 --0.6353892664730018295379408160490112296110230363087216109551017 -1.7711969997094218604070722448703908876418909728841572202110178 --1.3908660269024297189140700574835100613031774368366330835264122 --3.1431360384040415888454836879754593228092672443022233168880651 -0.0827128724359211308136539298498851173255024684168403317324753 -1.2507695144407452328700592953258741274146752150539743835727585 --0.4171975512811254753093965900396060994632658695249236960800335 --0.0524041363456177759750758880536729824346278158041556910971585 -0.3457406547083777170425842087266450413594643024566339306526938 --1.07382810157210482078267734185874008486040255920004869320556 - -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 --0.8786687027770929787301562525828872003547410177701220950278899658 -0.1944979336074391420204691208780533563017707991268605634570366201 --0.6717069716036456017860348911350501039034020263227184271420653514 -0.1841240265716411858721923885202834145897392121583597644960322461 -0.531416327611542071221970089939764430329756625444579259583169101 --0.7793598342770851820561551396646691186537674923197586552161425487 --0.04982739811897050028189209963034074300557183166488389610036293982 --0.2152831478765442996690076717147867376683641103330644151579049018 --0.1430325904665435237882241441707630670064919508747748361914900932 - diff --git a/tests/data/nfst_adjoint_2d_20_20_20.txt b/tests/data/nfst_adjoint_2d_20_20_20.txt deleted file mode 100644 index 796d9d5e..00000000 --- a/tests/data/nfst_adjoint_2d_20_20_20.txt +++ /dev/null @@ -1,431 +0,0 @@ -2 - -20 -20 - -20 - -0.4086947450855356169152189517431289973211444954704229578022411938 -0.1396725310073930971210628469264965305404387421361487766333402783 -0.3617754793224075120106402493333532892515347077462591193717225348 -0.01784014024404133452372719776485413728130086444052705410704826844 -0.2551137528766617462886122490206495815569455954864954532175619087 -0.1309003325323175020366797246711032353130982074800322503405568566 -0.4850387857231816989255603701842555993429712922989359894063243118 -0.3046061152586201444129076750778012320620234017620442293273783168 -0.1846756636605197740712178956225839284519707534951816516372261742 -0.3821163889372620378823133147196229781400957958066435726051067546 -0.2551600602597774365486102373198315508673893529063690086963412748 -0.230402910644737899027368109577132641139999484424691959789185425 -0.4984872126540227872347412673378447253277376592352237791484436604 -0.1710423719261291377159530030970313591027039443678008179710535332 -0.2885748634834933385833932549862271040440871541372365705684137295 -0.3364577288497801964516769273084333242643301891666864527719104049 -0.4457173920991993292046584733412564701849156222343790520841535928 -0.2472557826481684830963989449602703101137738953947821260330747 -0.454917586626400190455113486728514743998772785129201763658322789 -0.3156638964725781243541272856934334091751310165287943458804827568 -0.4079086363050430457531464820775705499259143611256467000966551659 -0.1291749563767577778093174420442248066853355018583144808226772126 -0.4262853915271091927300453593077624529840040190987573602873697583 -0.08822777041715483808900537550686335988124286767733376669602735212 -0.02034287036894305904429050830899157906868801181466106875507838504 -0.4873897775905716183934451117229193992829973538264409415320627283 -0.4014791536568069132914981035570219772502415235373212767068104629 -0.2820193117835646460363939425636435303399129252463767075702079429 -0.0122144363785103387855708288972578764085549891342672612002911675 -0.201326401841226822499265144634803231090444660833635656408098582 -0.08488013489441359049422543617990278961495249513965560005231390596 -0.04021826656973756695539173905743953803655775666757835902774775232 -0.2954283565359450142698564103578812662540968472865286528643655096 -0.272502449871235944005176337000832389787308384521685260378340781 -0.03079002005616818689379437555430409384272056975521080286977436553 -0.2058296915808363530212836937615578729259850336228305216098969207 -0.1993205021632423713244796634655407513154492251671262244936746809 -0.2249375001022399482177021326361767602306099380452021854751372688 -0.2843764440248353437431031574790790615530404808188969002757705128 -0.4639578196637028654618426122960844569745924535620377426170001163 - --1.76143146893263630507479969102574831711361320243036952536594684 -0.35899770819605732231881762940486068133788301466981915563161211 -2.83885693984458722014048253283289593582617061154339622561573007 --0.59645159715206175075797653417445997322411208367010787663570892 --2.70345075644926486124889580951495288356647764274422231897434439 -0.21103420597547403174372582156808481101804208339715706637167539 -0.80419416229930044937796908366804480752145501249073360645110793 -1.61823557797745338421874313098913819576515346547482347035491764 -0.38284768450806290663832043589241261030395899813851113686219901 -0.40560700202193532337816644748471112151041375255018741569290129 -1.45454293685326843619385865328664304903329553181427240728217551 --1.12830432277914550162080892371604656737769895230634702379930972 --1.2111741018264079038982105404715832582249174484942610471922139 --0.33057860709593057774474971455516227034960897870508207223007765 --2.1631665457509841208166688513836022738374125750017972290753481 -0.6579544681292133656828144563115845386034348025147575888302745 -2.4573388337610701586005668699082279015236317267634359623180643 --1.1303213840152801128902369674933598241975405175426469145989591 --1.3202607564641824440676057191475051488294080165037908209157315 -2.22689118033568770147464831307785161036355717797638855888804302 -0.18665355785887900118388995331464413721078804025935144929520248 -0.42229477681519930327948017732900551321342813012191274873967201 -1.41338872288696181936200256031878937991371036077637546116810517 -1.62002161552259685721973498080899625803650464222806704943673784 --0.02337545822870082537306946721421822005123595793586494137024739 --1.64652761209287698883999627693649701692054493039697913328717427 -0.44263180533338967144262404961245804245381462190156286675620342 -0.92228340697132823292628058252269411175602235872769815202244947 --1.42824531919632421000568064720547392796364072231757775268092981 -0.48711833138245852553261734972517849237332089036309417870973055 -1.49387725607936522196783849443184686018709166682448120467846762 -0.37567866349895564725500667296409242979762484644521436159623511 --0.51387163793270107059423505048278209592657005392491425326095608 -0.01048929749160606567562210382488871475626297981836018265687245 -0.485477912813827997761446500476904361844286878052349538035493 --0.9416709692574697807211135905802181040962699875022078589719227 --0.073235342431847205988612325253608759414754453646331135421918 -0.57886861398705916290094573554869619969655839934569610380221739 --0.3108367935356654353877414593399601606611691816399760916695634 --1.81935833904866201130107098395816442258167414765651570782128582 --1.74264586388126226268803996281912595485313021430278609610542069 --0.12973767606025167758694203679244445463657414801580073285651074 -0.90860654114391223623872728334624543939459551945176563710996218 -1.95722815645166269746427888565950602864421022837480104724835179 -2.94287298919397403236168886266953690858190500490543931754001335 --0.16639669916107372976751657950753450213846826235190622282724962 --0.16116327963024610354329691317021872984157158523094792669133574 -1.09577841127351046192815010641367543805036397245703174723178227 --0.4484465012097205485866188786278442587366895850689328800039918 --1.2768412672926743012813252657952025019175814610975084715629791 -0.3773174596682081687439714302315994885609827077647003382553655 -0.6281913957432409021700609324779578310981684043238482182433803 -0.267064829046074695877163179753260772245961272848407047727946 --1.4804152716331516900867406877915594905562658430468732209977766 --2.6071328587962370901018107586534069248070380260914699694549473 --1.5506381412757315990669253850379659138341312458851599070019461 -0.5447114606380892069959523324943709815164329940395736654934704 --0.06673628288418047560134228869477944213687632264958706279654091 -2.83293378737776162539876370057798692612237489483699048545545287 -0.45146062305657285242797520918797305108069875585313283870139339 -0.08934143940779221316458669802868913365252834011281116754182792 -1.99739265411402036627229490652104184677185336652072327820123501 -0.22030870998022632285360682592179072706866532464350574221240961 --1.32968133055825866275546310116288038033479396274782659923854446 --0.95365058973474616671726048460686443244560021834273172865371528 -0.48176974473161931659188114377065480614076822825117440593324127 -0.6132275337358948078022423262056858209759475403729040487551984 --0.7517395617943339839157023100463655201805979177208331911498468 -0.6747731993946308873299269149597703475772096819261271624846899 -0.7147611986151006833032051761336881673003442325264153737838267 -0.0614858964706358516501929818837676936174968616425259426510917 -0.5269273896223616869475159634470181305462977746458103186493908 --1.4836368432641383987280806132081161786452881848992957152742043 -0.6649119274635969454582726157268512700707588716657731300097936 -0.9515633744096675420990961971810926992514225453192302216078136 --2.0981363036506163367692688013434957636971964810286476952337224 --0.97153440384426941570401684669334051649459182295444954258905037 -0.18666352144494250850692920084441757154234644598081868719507376 -1.21077252615593697976586057276086641519454747211932288456898783 -0.63498547346755824878504166693642014312695196354342763250058704 --2.37510898304837156701463759371340458036437161358791579853500166 --1.9266452456611821386085964120527993339573312333056876417414595 -2.6858653735489308752036481418147882867173218882120176628532612 -2.0579163136778167608181562575464034300538024851799874751263199 --0.49875679381536352388903337103151365799977548364250560532224709 -1.1429405507426701835284522058083422497725552710274254699869959 -1.8147216520802647049135377080121962810950443143082513880166162 --0.3895608323327321390484545383263904919067319514444942144915329 --1.9441220590549683618598570379746464548957804248791207558285712 --1.911360917410992159979740707273971567773718829760723163494899 --0.4332606021451201887931778873781820631836566155826536801693182 -0.4013635411937036863882887968227115501619765012794970130534125 -1.4063208631565966784167194522544906687760111040759289030566793 --0.4846598607170153221396398630392864817920930572303286809253945 --0.3115489839783544585400898122327124607091647407067230961980346 -0.95476708849363764207890391559124465345505756145123931136135542 --0.34403551109873699208053471924535714353919958517200729799780336 --0.19895526408252056032409845135982443834511796757213375457963169 --0.4475238099526419459886413871952456513681700881927718429593659 -1.23518278360761984613419084432996754050496371463989745279793031 -0.9445661213686883925599246962191602476997062650507088214959299 --1.805288354686753996355397998794540324998559335969814710818734 --0.7235133959541791984901935219626046033847038938756732390531334 -1.8046881955308273157701567318463412166940758373310765920014845 --1.6311692566104175377824106690856382893508454858707418533060143 --1.6309439084962166936782558880780161025747083253824869277423934 -1.0140448730121283640988430975875879521937438696860588497833986 -1.6132212707786796254034979411658911263800884477564817065068974 --0.7554796292521770880316086453215086363582907671757929559920391 -0.0706052816886972369433526246238788612020799907846494726977044 -1.3048103845057356099430897528526576200510648668015239987738342 --0.7686552962176008980058599409300175633288868063687433256010729 --0.7484654710897942481107523971656005505583460009719958133665619 -0.2422236962891424148974587374761352412254105103412358108990304 -1.18625785604315112504333325767892788323587323876893425355320618 --2.0344505531371113483476358459845414712253343228913454188217468 --0.72129099250185619375686944441046077146296140676815788208702117 -0.69700274606603889922387315460622332673227536492327466867325904 -0.0338541803354434153565395229585236366275413935921277031608521 -0.27674134861628521963677988574356345768534610754243278179569536 -0.3450189911379297686147359836332619395978014632728541742395779 --0.5744612222294662666295095802845946744660060217144183389945272 --2.1401419851120298884050640897164792031089985938603731098953949 --0.7738489551364070251809672254733728790728900163771822727537841 -2.0352569844187303009092282727776637627362250158808857516579972 --1.172044916425913714996262400349360111822198184355021577061512 --0.0932517665686746095669284119685028014192990847187244034751723 -2.4687236716958889678742775773050457265371063496572186336423835 -0.0293693471843298558801071259039891883710300403529463209002814 --1.3080780835884512400463166948855032152856554873440621131816372 --0.5670678312397311328100500455380277717641601431850827445462772 -0.1367428944200031908142387070613481149334043444885785279553009 -2.0029195867699519393010479477029511526281603566457526272625736 --2.475306758685792775224097905276378752817608946497611173462498 -0.74414538761380102305612934805024944986718041274867925295958327 -0.4009663622574130770822531144343837361582105319471925667351893 --2.95640043976892192053226420067679672095386561016639646399203391 --0.7705877863146956540458499370376907643725783068356462499631948 -1.6318917326119420452001871701673571620713847405506130082417133 --0.9753554350180776407534694237189415732841517430170038702624415 --0.6709007216840414789168327689639305312819135042015727691354356 -1.3063090429696816011032918220042441516631077306182734353976986 -0.2486386474884816388875252418173620543072670169195672743552431 --1.0908843623478222628382240250428309563163552496047877514853794 --0.8649052667017660181791321393484193994411470863653729899182186 -0.4124501220648015976960267346807032903994812467835316675946708 -0.1872468936568535030917695404446001678211987865197623056537281 --0.2788976312511903516594542024836479267127013655653911984900423 -0.2261847388459337325564608129248938512058929424464453856166749 -1.6823203207427276036715954499484031842671835267471182813149061 --0.0989487665050107206614526844022065503840606789793129470440085 --0.4009330520264926069400773802926388902423539482584582212360613 -2.2687830362339896110180984091935407623465082970400790270612644 -0.74455402362741207311990921755411407795344429555031945206137385 --0.0464330783628570546769891826610566519069778082652867536396097 -2.0862481489852289847362060654575221444061674995378324876043318 --0.981873559308810941430389974286071317402261769319129205102677 --4.4922947751289954392281606881965066549382956771758191511854306 --0.0426660642827708664251969273176147630319496660877702515848753 -0.0396010444934846036948766942569390602765665474253547165534288 --1.6077104491836659728053413997955799586957496537628542393547279 --0.4367021738146980469941325607571544614734391112660203672036371 -0.9603268003152493275145389952958160338048458621235922099717952 -1.0129261803640052395050590119169578972470118718530903304497926 --0.6641381995357217811546390835085151045317499738116576708921783 --1.8322623201686362167273951813204242580551430782748604423655935 -1.2111651447040516161944629593961572492648981104387769186107376 -1.3874657193197334007851892129722922100618132352399093504857668 -1.6109053379947642664443746447988134179024532801831537108517314 -0.8478740741698271511922221503038596179381560204319005863160594 -0.0263408430269528630954879147450289159925278543659567775893825 --1.5349408013906555600106109539207420242506746358654972677136591 --0.5137669189379050044239193081184290500592898980389602637702685 --1.5194400662600721540516227226144647569037368008371602956937161 --1.8736249595537908942731556674459114048444120282166142578754305 -0.1176193619107542223139758235412007899829549192227250957087861 -0.3646378843754825577604179899349616944014378733845789246127044 -0.6614336704749501040523214938942788452320164022147490782119061 --0.6201909261394876493541780132369834377979063687508998442643737 -1.1336932158706201266427695077855289604668602820892360700911833 -0.1963879840631133048085083577012435856591188729940918218384554 --1.3116809009858509440112323098750147240603171676073791228903442 -0.566109437417772591424714986731289661392935139649294912319353 -0.0367831950433809544718663999320526838662289351056761848877367 --1.9730574662175040679065358525901787819790265407582373792297965 -1.4674571619685986920984125254953911430361333108758522516563141 -0.2263634436889931168215402903669916113995263797325392529455254 --1.3787704010670308679834471377966260708610557426636446585904147 -0.6905637174410055388280157657738354061406056616257086452092977 -1.8035197820169968109307284684879020457312741601971250834861694 -0.4011692583876588689461940808418090827242355185533628893879759 --0.031981665613701933100133348535252771659131477197664837478189 --0.4490321447779803137836409499419072587350805850332826723699027 -0.0329475382414193942566590340646769970796713282963859281278106 -1.1871222474761146452455281888547362464217800753431881842814197 -1.327905916926171352667761790457881359187746613801174356144108 --0.3880158414623024510754050432972355287268393163282409771040508 --2.1297076612641716090480059740801130191808332209264521669903206 --2.0650522966286903286635478127647039360574108353984519338515505 --0.0904238090000428818140893755030459467793348930195485948913758 --0.1435877115013386660413705612809084530877744287998003882597795 --1.9605375993547978856129660784596293482677638902556783157242594 -2.2669468589409421676682326216929323159781818363140318937774738 -4.4084665937009685259298733509988920374917650866218931472876024 --0.4737666595670335224901379861484753002618101025878844546485905 --2.2130139125585279832013785609477084761446430754883108700441704 -1.8632228069089716299360745281145603369999538095484250587441218 --0.3859363783222216561715757930217275022805751751543673080220207 --2.3672400797815551173951882894097002507897334218742746754037369 --0.6352791399521314724277897559546586836769299981268470891395981 --0.4947519972018366209847777194158825926422677506992806992816057 -1.1302881276822531759088036865261492167005720661601291744160478 --0.6152965031958286080324993839028033659468805864014895264179459 --1.2319891152892752829661934565954111193063291796743799162278346 --0.0965748290630814077445069038450904135890916696583891309681339 --0.4169348251658339565144938939563799468485746045414982658853979 -1.6922625163266315891115331103202956076379441757072862135428972 -1.0466615139241494341841952857979027615696173356004673459594196 --1.227594748830359884823952085724710957253256012059611006767423 -1.8707561071913371183303883701874485668737944211868511497783437 -1.1652170798977703548997625093956489963008256252787300948116798 --2.0806259628953629206350531894830125509140768222187277042607706 --2.8347406482205884396626659261203436216678349356658849471760808 -0.0066923236635105230697919539188243642504127733168127855887384 -1.3655728796935377537444473204212353860020320830812039365996023 --0.9539610262197571989847227031126506867852062641747053443293054 --0.469737027954702775192715073697834955813944612979059012909441 -3.3585060753541285754034715966486394912613188535963324339021777 -2.4352922526148354662687089239401618934423366810211413960209315 --0.2015271728220316419201705818130211679005940578877765626351141 -0.5231547867693168694952474231549921227123397337039134678337099 -1.0247984070450733664196791237259375455505543588882022587429184 --0.3108530041668850308078872241171229641084477245329241971069502 --0.869235764668352226543321544430016608581641314172446924101723 -0.3337385773009405663756434929175579083635817729797263266065435 -0.7824615933516339858607608957036608759662627966650440134611985 -1.1489447432517010202714369411762497030198457055861695248082207 --0.2592445830898175569654732175087604681871677236711214011962899 --0.0342011491396142817083003714167553420704909072311491859581195 --0.5170876099381527659418946561542363083213638948317423550504901 -0.7544760167092449631213888755352353821394249526092930287334737 --0.4851060780314592392192130792082967454900451239602639409073549 --1.1811854476881667623843350094455305168372578223544429108810373 -1.3581371229829790047681029023288546593727491447647367375173196 -1.9643380656086611705324840316493822502728178469265112593884275 --1.3662356794466954960251943376605372645831293100462011977553277 --2.3897940868122641258187430541103859263702120130047275653345428 --1.2675025648678892390094416522026273217482620786153223091996727 -1.1077280101615961351287295325052859911993532006346971114817787 -1.0258560730572172783065683576747829324456916431384689687875163 --0.3330435989122286995692900282365708895862188810033448368510979 -0.6363033733124077966633651777211727039515188614469790594528245 -1.295240527305576265306830944971658114570272892581654277830272 -0.8981521611810378433758162458878692118194976051530916764204863 --1.2444463804396122939087890420682960143602868470598664027172493 --0.4302659511093591686379337535615584315212054269466411276963959 -0.8295227042869193739094441405664141704256549784711287087481462 -0.8929712474006949297209327053566756550203527458828585995227957 -0.4184880360913225259763948979335687208600013226210910754415792 --0.494073152511769613540941474410921651622090346788503099232824 --0.8093006493632088467383288879916810767165880964516417609013606 -1.246104739359921017715692345189672912079360024234516871284281 --0.9931885775115179240373306061199007256101757395810807591225188 --2.0634648718768740147036531988847078618589960850317907668265538 --0.0508656014105428350536426195486236663976138295295943640001501 -1.5436864833743159742750915922561046719760586564313358852345142 -0.357839663382418508403421033244035492815637684415620502576932 --0.0266774526143596505942427440060401202519602400518725427187671 --3.0862014844727626319831047165191873697683053111827650008300842 --0.3605109710769521483053863684557276269049242714219563838029289 -2.7460904168814540346257389719981767627627983946827493960854137 -1.4054440482488948788428605594937121160107760810467954870668514 -1.2217690342168398174437106270970273285514430248085206681228696 -0.2777934604126524849162859587873922694884399671380953365217013 --0.0183768174605447268185647302007627553330211929196041418354499 -1.1281321777391201002462327804790536243730135786137139907004621 --0.7575958104368157281380376412374055183354455706930442840269075 --1.530616411041210434274657403809225278246613665622787980116335 -0.7913411432206845002082773712138775822988749614312316659208852 -1.9815722324418087744669585428528286998267653814530301066981006 --0.3605423648109982190087513612154559492228155110752339089231104 --3.8416864435372559371562614833547327921396750405397510336491496 -0.4545761192467260517624820712830585815958668389344454942317948 --0.011455867237755096283907014483580540606535060300528592143629 --2.7623530486309778079204874990854428125046876935978270118328033 --0.2979355072017907718192060959118417575916091398263254579907234 -1.370096988632309755422924603199809199169231656369629731545729 -2.3906500196632812560972428598237222827311785248056684096207134 -1.0222898700966580663256322661385480987099543548977066784588545 --0.3713525632844606292937815260056711325073473986408370945937134 --0.447111023421550405039404746201437940169757161479086198993782 -0.4230059645474924061306833576645281991167276687451703735316371 --0.3446175445072641769756334329698453184433985858811905410167659 -0.1116179558942008593176228951501089344040060545578310235330581 --0.6204005068462781024716002561273461468810515653239520391317346 --0.0164702105807811552983223057796830835360271663465455751374005 -2.0886451866903745745699948660673813034269630174455162543680589 -0.4196987170530458302916926197987466599408980772328450681627724 --2.7472400634158959966861154465514152366762588373398619845765536 -1.2497996121905790593538237620745672465402752649427955971216698 -2.6284450414858485778640166953161437429346160265353604408833332 --0.964252255178775501313754023905459646927827737347813983795653 --1.9783864189740700507327962285790966348007689455070677451071888 -0.502518762778165434753970203443449278421218287239239207572852 -1.6987626125488153349550523880588347527948629732104167120307034 --1.1636926159418146487205941875261369172996921750810496779819592 --0.0931390555224934520883524849708133179610146253164097963541224 -0.4280364909530966963718341061096700037004840657323275289570154 --1.3122526825377771747565119781477676566743979000648379619171664 --1.780948437804559773327000979943026467348752362255510124744673 -0.7860264409239121575758928769473192043414390252678253614610689 -2.4891430422182410656435047634265982321749802503391962992509541 -1.2164099837150167725464728637288195435683876490861000113618181 --0.1995106591432924008281693644949929496195497219057806331023159 -2.093956642977050823789781010893300886523508162877933985043177 --0.2736666212462762571198823484860720569708528695274644175839588 --1.9569980525346889411904853381559074689451661246956941054236402 --2.0191022867553373203411975882790001894442539063634721158058497 --1.8642754868258519287335770343800991167343446318882960946595756 --0.0533033459450924414620826379617582724777348328786715115148705 -1.6331709065519849250047550986330533142453266908962298050866026 -1.0073049585506481946377793707822389275264222929991317625387274 --0.1345637788668715528054018404642677008438334875582146450971728 --1.4529023136104547330625140265743983885295452974090897811281382 -0.7170203724440175251814190360724320672733514023228441448090486 -1.6726238321939850351504736299661018715785889308916031867891208 --1.7334195718854327066314951540775794160235142783604335032053409 -0.2369013872184233297586885966017926094307519709564849764302474 -3.4705393302243079283872226752061752841187692347625633089463351 --1.0498215479440293809810320213829386569276458268187761957157179 --2.6624432649744351428167417619153896727779894258994617946409982 --0.6353892664730018295379408160490112296110230363087216109551017 --0.3029401170293879926363092996395917993004566126359692829814109 --0.5716248308376305239971614311698773344236354939625795271961611 --1.3330694138453641553495793843361564698844619615241691547193119 -1.8104858626321508168484192079238181133090803832646170114962594 -2.8216402654410421986261833075476094751587510770436327924445789 -0.220835184452779732620885778632557086085693747212193277348536 -0.4383871879568647420523106925056091277829139259953324404715664 -0.1234851993110179658564860389432616688210777642720533392050427 --2.2277496360958876484397762525225859545776205720207268131109187 --0.4765615411124610093690031049132636519711869508610110392477159 -1.7711969997094218604070722448703908876418909728841572202110178 --1.3908660269024297189140700574835100613031774368366330835264122 --3.1431360384040415888454836879754593228092672443022233168880651 -0.0827128724359211308136539298498851173255024684168403317324753 -1.2507695144407452328700592953258741274146752150539743835727585 --0.4171975512811254753093965900396060994632658695249236960800335 --0.0524041363456177759750758880536729824346278158041556910971585 -0.3457406547083777170425842087266450413594643024566339306526938 --1.07382810157210482078267734185874008486040255920004869320556 --0.3201320738709138413000932926667172491621184721046751216886849 -1.4457282344888737377970429969153816434265171417092333240354552 --0.0933032714587544605626179147224317785437335463858156301926106 --0.9936556781633783461707289598136182497118999116338111430415862 -0.6050409459161970308719701954431559217284219287567037335788241 -0.6838126019125751615459013131144224282335331325206240117501543 --1.9006214627758446102600633914176032149827262566786660997632504 --0.7443942053571110838981746801934621953941291718336860706351144 -1.338006410766089050243871640566579508433070743304586611989292 -2.2274811154563868285327742634033547570838987116931057249251122 - -0.5356506216935318567168964679980224448474954197740742721804425662 --0.05251382922654688111844675415661855947948761360659425718759593363 -0.9518095182124288782767378820155949547911261560251647626870735792 -0.9956223852813107496522616247115213137215848581937907906567140918 -0.6741052796006089834676571454955036801632897076493615121596900136 --0.8697750560716627155371707094260289644371901052310063829991901781 -0.539462018274751480324642644804511358394409237082129058457521908 --0.4274845026027779916855619203781095649893449575458629944853980527 --0.8604697501072873707535504424154609782723273602355359333803551115 -0.3822062430356176188977280281604014506988427784943414973817258933 --0.7335087736711041883089151876515694737975402817556229765975958245 --0.8786687027770929787301562525828872003547410177701220950278899658 -0.1944979336074391420204691208780533563017707991268605634570366201 --0.6717069716036456017860348911350501039034020263227184271420653514 -0.1841240265716411858721923885202834145897392121583597644960322461 -0.531416327611542071221970089939764430329756625444579259583169101 --0.7793598342770851820561551396646691186537674923197586552161425487 --0.04982739811897050028189209963034074300557183166488389610036293982 --0.2152831478765442996690076717147867376683641103330644151579049018 --0.1430325904665435237882241441707630670064919508747748361914900932 - diff --git a/tests/data/nfst_adjoint_2d_25_10_25.txt b/tests/data/nfst_adjoint_2d_25_10_25.txt new file mode 100644 index 00000000..82fc5c3a --- /dev/null +++ b/tests/data/nfst_adjoint_2d_25_10_25.txt @@ -0,0 +1,301 @@ +2 + +25 +10 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.230402910644737899027368109577132641139999484424691959789185425 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.2472557826481684830963989449602703101137738953947821260330747 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.454917586626400190455113486728514743998772785129201763658322789 +0.201326401841226822499265144634803231090444660833635656408098582 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.272502449871235944005176337000832389787308384521685260378340781 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 + +0.36024533272759875053678464250444427703313495106701310122076194 +-0.76127401519591279048542701547769694507976580402021997953887198 +-0.4418776727162474426479200730001951142181524985521240514535558 +0.34204920139243555808422027483098822345896844419004868532934224 +0.71172329571142012240442631060471148007879037540078334351019328 +-0.36925775163129732311162466971425541755641063335497969779567766 +-1.40296609568177089149099288441533089762641571890108269475934906 +-1.24222826864136726680362537192547381481256230902552158780797057 +0.00607499407228038959892573905960884475869268326449569697231477 +0.92622262524205706128100221683153567164551224298931659146063051 +0.96870992446634450426442935083267457227152314241439241869560816 +0.24683502405368489976421119009095345992629582523743211765415744 +0.81662010161660137553385838832655266824555873321064310931977177 +0.96073948480102318767892786998404683335076075567417072488360436 +2.14786814873824287210940241180033830208962645397139987427864692 +2.72043277095446878580326053372587040605733307728814363729931663 +1.31161305563713719251017446478151743178284268741448438428301323 +0.29358855100947344660632242664243832115512329466704203386752918 +-2.33037285344114859049466890118901147867822149638499912228320459 +-0.65319457675557382151355969957475753713014914159323094975565585 +-0.06460808360130255514343503860987869975166597201400797358957041 +0.66802142378572414618609711067042193304273492797163381116531786 +0.35066660249714439248039685840882532858956284232749400860731416 +0.63312845821082450382247640310173892892614497189495443240059072 +0.58543158718255623515221806560020812595597596781494070587715082 +-0.04644295589176404948913435742038314272546497909548304759151194 +-1.33108841072144350907318333022746557158955138290592931052391389 +1.46222079699733778988237593162047651725024067913753337638443577 +0.30419730612171150858051913586349366778386048196415586552020431 +-1.49374678840376153542191125718239779013549906966155011891684801 +-0.85836698262039596818107400614847405054041616631510289768185754 +0.97699913035222672532113370547649462685845808873853380039547387 +0.80007556872441180890929198602290281746683950370601833482590501 +-1.90643827527857977615353177461668332266924675824806487368554079 +-1.164590527550060848416333223734558200489515441528017870246136 +-0.0252090015426247914584955822951742172962141181980558202922595 +1.36177955331240317843214597125815084795814068312915099957059653 +1.26257156556562518944516106597864955715977059806908796820421695 +0.25153902038591539092787115136533860304324657917688533620149376 +-1.69826602742099556302743439390426511438898946957831853041569147 +-2.80837359107673651463432814319771158375245703554579717720123666 +-0.62901443531509868741933360482930000283150628559320924435582136 +-0.09362678206988441887501271777091192728951732821622727808128908 +0.2626137390677240735838673345350990669352014446588289430552156 +-0.57353504932505921302915008398841148496547016214094167437145453 +0.0023905086574440812189029505691351620474997777252124975722553 +0.04595361813849631132884384149854278656195997945385307551075643 +-0.41248985663178036484351334239015429882960493987818728475645232 +0.29318342876005437888460243910916903734868175442787055780664264 +-0.6470514578902723955532246464518056436673670169941155931918575 +-0.10509828234546338583449228818591967119332319905286615122066837 +-0.7105930185700417151007115920371118243168560225863022786696278 +-0.3639809271779198341802739808982359190726556126436148903840906 +-0.6646841002583483721702871378293363786823562562765757783474517 +0.57633039165218187036682057343534321926038093683330527065861383 +-0.0143042543315503871780361644468942136519286511885816079718835 +-0.51220658752145481990931628077946743570822515947257895692817496 +-0.62667100348548533006861450875663969179784348261850757208098061 +-0.4383894642865408949752838509581638725911430370362681930722659 +1.6952292939386781689737995348264264959768988587693060270754032 +0.0509764684060401659972963078288456707774136788765347555849237 +-0.0882057349328144685098766176032276071352156121349515674916738 +-0.8701108839206839737565135844587642873043968240722007373847721 +2.47761064730819077125760684359206830963016236385501402319408895 +0.28110064791846525539712169668275741376222189301681491657073561 +-1.30704924985225584696943934695729294663567267146186235315395147 +-1.35188797824688590060011022805744935212432663768358552620048015 +-0.1828130177799204163469766916516007466440383154505045260354816 +1.42823363684948616643459779404155001687979263056604179363032158 +-1.2133284497556752522526601626029992722749584617376491997811062 +0.1465808456188106353762446056265723221385644506261193321998832 +-0.9250256199213278378757977005338617181155626793085673132153345 +-0.61089172771883269072266421565255303624083663149442861126675567 +0.09007738552059566491629640951054449225727381382627720151280171 +1.7136666856364154201490935383170508436913081742630631206267476 +1.93437115118678472371728566718493064762354339204839222167683478 +0.6917848676929598178220836703081323423224663446715917963673796 +3.0240690589669797442175921872373366030809531011953541532311477 +0.7313361277909390137252755694481932827050434137457777613794984 +0.7320546350547081933002038481751626640890678112288243942993648 +0.4103105863717511048870715061141664211910560775534508906243553 +0.9366704488179181685794411534455319883862784894824858156929118 +0.19885386663913853881700705140998986299513710246825007561049823 +-1.0794157422321459097080822484854781471605272244126656451285053 +-0.4311926754303843700914020356654514183280279194498017273758998 +-0.2825884090924180490089487696688507543251806624905532510283825 +2.1760952475694453314264102945633081299732092192756929266375477 +-0.2739876770768980424719435910955406096781958048755719198973838 +0.251560595621110018742297549225527359415098270008220713009769 +-1.0419319517987955126226238040896466326921848366578005595149502 +0.5574246389842888896308288189551396371259753817268711696153091 +-0.4039398735005507286706167692602706281248166765089716635818357 +-1.5958834967323111021145522914708945653721681993562504839361219 +-1.5514632205215175502350279837152366759809790133967504627649269 +-0.0433079901492853876255559740884962519729730083980334435167915 +2.2109131786245325567433474413430640095658860266341851691725882 +-1.115329815926436334170558513304486226915650432534341723183547 +-0.8510092000188046240031067179918993445584589477456435353219736 +-2.4675772211946651043674792639106437901964861090593523833933206 +1.2715173176202882397924673064715628970505961376152070564657153 +-0.0242948265465472946414816443505633755106282193224073875068306 +-0.4390905432018008536453426246842361977466748917471558588669719 +0.6556801935831163895656281596654044527180455914453544805909058 +0.1550392605707250691275931181886754856859032074077248779317755 +1.175009921387990837524314034436217222461421371346899454250368 +-1.6845109315437485888648409365662915108845638618003610359112779 +-0.2486919624023601307656942696167627892247622945831681333374314 +-0.1012639772320205105208376686878492947090124025571551278667772 +0.86468785724125771957674717825297224639639639145138751089309531 +1.42006800507506385994122063343503456658821062360961340166739841 +0.0033328696835324551712328510478083056248086002885951174507315 +-1.3489553414092778221484127800773284814869592856436801447858467 +-4.8054244431533848459190772255494994726997877145879227214465911 +-0.6183094729777217636404940692496892975789350192357572582994922 +0.8109942208779324786937815890636743658158591417786067984207293 +0.6640195372573032809596556814554565183425618674401347382252261 +-2.5384293640197580877755498622621504400877057584503749335072733 +1.6757809914497552139409927647614424744441149179703260155260685 +1.0668033285652392700946676641942158458843813718580352402025442 +-2.1005925190998746204215026852828507349050843845752843443396632 +-0.6801798133621110641188570472675130969488685622838264139578975 +0.9312203730203186027754477842803529821953374075735727844028952 +2.0539508297482492963113854579161761686012656770254575514271583 +-2.6945813121995842143204733494782862709680878968315263106891852 +-0.8269497479301794349058076378744485849109943251014042831828389 +0.2359607518007275257951765610340732700183434118477658277252431 +-0.4388917027387127805859221449303441973873421888663352273789563 +-0.2505486756620750362991054948659535973441734006343495731398977 +-0.3531955377069066651635978412555725665988834949938685381849217 +0.053309954436540234919668659160768202752613863886480182223163 +-0.2315038305835205449510774559008455980821858026326458106144663 +1.9449655687298311129743358389482934000865144481830259674016091 +-0.1240367648611087185822572345414204796776171513996928206742221 +1.0868073449210241167789723086203609648223124031192823916788056 +-1.9212448207973344678968923345073678803727793982544310408648113 +1.4329061304707100907576357622853742106974798092387767937234104 +1.9220673212865094413942951996024338396465831367329493255410769 +-0.0428019885023776642786138492334857828225419975218958154231261 +0.1399987062690967084780456166330535727804164233605752935878182 +-0.1836901539220727461232965311804031532606776224903982355024391 +2.961018893006489897281137880482352418983743984768959082420784 +0.8686066129695543674153567837597664347294057242679589509411055 +1.417092751722219424397632791157213807654377779368118792452233 +-0.1083592223295277230230527447540712163820015095993376622165241 +-0.236882199206723909116966829318686505658781444200747873100603 +-0.3529303075753931188803037016109055776407225076960893908147125 +-0.4720924139651003969462087564205854787887787382163371079170436 +1.5542700650666613754817535623541677900842086123078329343415146 +-0.6232884205546568230672923638257898114906698641667288748045413 +1.4806541242989223817207923234915596822529414386500834663886925 +-0.4768399500606588735223154529950816565603516850099021348909654 +-0.0660736467442123712096982614661862795169170877432797629877187 +-1.3220744519261618723527216834575210319467596518303261495121941 +1.1972372451842024850212083087959376733397300428693097877354232 +-0.5490590366474578765013031956805316802538940033428389238532498 +-2.1512005712598819832531678620686884883407375933960275061829429 +-0.4080593182663225971560554662287670828992296482324563151670645 +0.280746553443205416019752159451460603190089735950650803130986 +2.1860961005560868687770781893406696831071720156241033620713075 +-2.4800809071754269966410178732307272415380306987203525077242881 +-0.8418966508433190227554646576645410808281839274478355059431696 +-1.7298551230263941272821171263179320977802035969898035345641259 +0.0916825013737362631861229374547639439639964915842028971540368 +0.576690720944865071629401999274934560394068930847032232668191 +-0.0003583074670153651792361570036520904496065784799789421957613 +-0.4157952370777667226579872928541362015912421541435557353525941 +-0.9933392687715252080501187311679836217008088916293800442884692 +2.830687224547500116599400475962544616348063925782280096606754 +0.7339526967801281242066912351321666201884586834555329642326712 +2.047804563574612044682199299169606956149407036840203334755581 +-2.3687537636301015496410722226139940067381672172122209691899194 +-0.383522388394482475452854105038608041485586587065685158162785 +-0.4819334988655864650971227166986963050895508030851233058904571 +-0.6293740949991402252508866653769361704359001846222630636673058 +0.5123031121240923373047864526050982133901773216001104639390032 +-2.486050197690129722782295150294772337962843452186617506701904 +-0.8338725927463656956580619516822140300068981147113846035069839 +-3.5444704810493207436906180168337925356837260844015313277908499 +-0.618429990694256686226035546409035917577742964766806755976453 +-1.0869716650557862166465885684839096394916998704284978831905345 +1.9330248565816327911655546856901325270471403272837105268015939 +1.5981066800235643036936644393342258522658392600157325577963566 +-0.7898011232230050825235821209692454267006434228758870784795063 +-1.4800580023052179062680142180772395252026004595957858402310553 +-2.2906110450742944786845771711883515834127174025411421031837811 +1.6478316571780141847533175728985956259039017485820098537581869 +-1.4593736676121546462744742111121652193663123866690859127565308 +0.2292632861509107667151509736787654159008892511707096313805196 +-0.2320334671675028877091428420862871725209786600283189892869837 +1.3826189011643726946119991576205125594708935646322529036170085 +0.5773218911106797449453242032770208632758627310133111461267274 +-0.202972227439708975804566260350926126793824410511120131695899 +0.9678603285821014267095596816493334912120700834167577220431777 +0.4230047614959945164283126619952049996403326139433772117129406 +1.7982750480318696743061693101820677430419332652466931559985208 +-0.7391344987071225047742242074814428321125466871379146199015326 +2.932086156545162398391776022619014573229812290550668661759029 +-0.1840484659903504301188956901175171954479568810125496637487238 +-2.5272790978579211743728710429800421283756893668156874210396237 +-0.9589043897406908548319567466196575412204689918660589780163097 +0.7848020149517211662916603799337180536531700927058907850262214 +1.5226467892957047935094568781819865838001858521655194422137668 +-1.4209601303923323662302457687549627813836999175699187365743487 +1.7672144053893574955676870048958409179765642853057355079297726 +0.2548652673358067191681457115730079127581747567227696065871866 +0.7664078973622982098001990986880417412104947708649635642233887 +-1.8618112743498396440579137528443605568839310848790735613178011 +2.5241503319886529196548829982030106962886403443395830721922296 +1.5660429304035219929871678416671126433146282629529610222969753 +-1.8524343546938186304096052302023397407867323846190074575624575 +0.9112121433066069785065884780221566827896949963569484696573103 +0.5020092882228159583135562555513838661361253575837045851458799 +1.8577130007302637996158929035203878277000731220419984929486239 +-1.0355131722604702140015839924533640123827521315251781027407778 +1.2442841327784723811604273236202659515534179467449742557434487 +0.2521094803355687345203857556902705707746595448536327679763861 + +-0.7335087736711041883089151876515694737975402817556229765975958245 +-0.8786687027770929787301562525828872003547410177701220950278899658 +0.1944979336074391420204691208780533563017707991268605634570366201 +-0.6717069716036456017860348911350501039034020263227184271420653514 +0.1841240265716411858721923885202834145897392121583597644960322461 +0.531416327611542071221970089939764430329756625444579259583169101 +-0.7793598342770851820561551396646691186537674923197586552161425487 +-0.04982739811897050028189209963034074300557183166488389610036293982 +-0.2152831478765442996690076717147867376683641103330644151579049018 +-0.1430325904665435237882241441707630670064919508747748361914900932 +-0.5458569288127476004682590208265714990676611459841400026017844665 +0.1856688150172391527088040246433169286752829500750590071977203062 +0.8193143821859564924477154245099351963436429074028089074430038904 +0.4604487491339531156973853721884505256237012331451385915640611729 +-0.8606535828683120015533980099014960687963233985081987928030018579 +-0.2028782443808202039078700152556584967073846417006795171717789768 +0.7727562160593342436881229708062656539223995010850938445718232095 +0.2216455512897554102911455213296037106714896153079531893725412128 +0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 + diff --git a/tests/data/nfst_adjoint_2d_20_10_50.txt b/tests/data/nfst_adjoint_2d_25_10_50.txt similarity index 87% rename from tests/data/nfst_adjoint_2d_20_10_50.txt rename to tests/data/nfst_adjoint_2d_25_10_50.txt index d8e506e2..ca58ea88 100644 --- a/tests/data/nfst_adjoint_2d_20_10_50.txt +++ b/tests/data/nfst_adjoint_2d_25_10_50.txt @@ -1,6 +1,6 @@ 2 -20 +25 10 50 @@ -277,6 +277,51 @@ -3.4680932622403560639097539547965516526025322090484550116955947 0.8976616244516736216368695737233014856278335911657187459019222 1.1378508806493503612382665806646932408887739819546790519938352 +5.235643492616487615234738042831402763240398346196541107329118 +-1.9189767417563697780063593293254618730084000826872954880128706 +-2.3111566878521929577921173632498773179968136268961723977910669 +2.0143241922517169630429946943733297962634568199500707366131067 +3.1614228525565535243447485679552904531872420471462021819047138 +1.7894075249744222189138536489168590022064960977575919122247093 +0.5023581445976361078128020476316539561441337139396662457552938 +1.3051788371474748926885395422469290211834307308975293079935107 +-1.3227920287740107910116895743736225857495804360333845328159753 +-2.620580478667313411515583633700468855057045666240458489363743 +-1.8620323829912873832791868225832877072168648174991660504279298 +-3.9710746062272936790767742430528880074341606893149230524395126 +1.1240010549866801119473741769373699172885067939154208188270089 +-1.063078644694108108013313663561107163732552648001532757694666 +-2.3380276339038398135591947970591875568946803342621699309316728 +-3.597388382053514071237897316087660317825103008566625482014911 +1.3666741790136200346038854721550675258629765620955234432919487 +-2.5514910288123416864739614220912131665912777840758064371354693 +0.6112487110007931532100278162084352307141097289016115869324985 +2.2214578609608595713749947849354643035142331937691004013174326 +-1.7910443154583514785835668214341981839389385190273561329423714 +-0.9634823757801792295375308582450014075427950071219523048686948 +-1.8438739495483217893654388712808343013539500172704902155012908 +-3.585681379085039565078639510724429280372567179484448490460384 +-2.0952205388582799244562090446877284117355944798725208788531531 +0.7676665008859179884694459968820381323238394648431799612928917 +-0.5826137612482211590005216650313502691426151034543900519641451 +-1.2590210305891505682452793831729089970539326073816147763447484 +-1.9713738791230058874901896230161228350064048312185470251854232 +-1.348850696086925939075803794105922235525583499377669991578779 +-0.6559222934321909123599048120162240984043462430685940880412973 +2.5227685037446459169922056108221452145872537890614799028781286 +-0.5739022898179358600332524564288862131374277386361919906281276 +-0.2738254523412046726773422090701058595299654325223648170617661 +0.0889733014165345900126210131311325449663614956346197384686909 +3.549722967479385600074944609799391499666521126053932566464619 +3.2317426636921835283209252140847834819987621112243508735973099 +-3.1733868945382116350454880583008605142423851150637988944538801 +0.0117911643259419318034870524323126868788486433724295084750512 +-0.9264667095617212018198632914149856738379112345380602538641336 +-0.7960273897204740746129459406580294791865126592056686753906919 +-1.9519988282849607432339759687127796826540728337605138432742491 +0.015354534288584355581720014060709088665582275811568899606014 +2.7826098908553018073188235297577594384572198637140058059379825 +-3.3582050638138470595317179793419871525893953955357612856305048 0.7721031360269444536624854764846278079390436516442447307214583713 0.7113282365127787106295924505560767722199840055537543517442585349 diff --git a/tests/data/nfst_adjoint_2d_25_25_25.txt b/tests/data/nfst_adjoint_2d_25_25_25.txt new file mode 100644 index 00000000..5c7a5ef2 --- /dev/null +++ b/tests/data/nfst_adjoint_2d_25_25_25.txt @@ -0,0 +1,661 @@ +2 + +25 +25 + +25 + +0.4086947450855356169152189517431289973211444954704229578022411938 +0.230402910644737899027368109577132641139999484424691959789185425 +0.3617754793224075120106402493333532892515347077462591193717225348 +0.1710423719261291377159530030970313591027039443678008179710535332 +0.2551137528766617462886122490206495815569455954864954532175619087 +0.3364577288497801964516769273084333242643301891666864527719104049 +0.4850387857231816989255603701842555993429712922989359894063243118 +0.2472557826481684830963989449602703101137738953947821260330747 +0.1846756636605197740712178956225839284519707534951816516372261742 +0.3156638964725781243541272856934334091751310165287943458804827568 +0.2551600602597774365486102373198315508673893529063690086963412748 +0.1291749563767577778093174420442248066853355018583144808226772126 +0.4984872126540227872347412673378447253277376592352237791484436604 +0.08822777041715483808900537550686335988124286767733376669602735212 +0.2885748634834933385833932549862271040440871541372365705684137295 +0.4873897775905716183934451117229193992829973538264409415320627283 +0.4457173920991993292046584733412564701849156222343790520841535928 +0.2820193117835646460363939425636435303399129252463767075702079429 +0.454917586626400190455113486728514743998772785129201763658322789 +0.201326401841226822499265144634803231090444660833635656408098582 +0.4079086363050430457531464820775705499259143611256467000966551659 +0.04021826656973756695539173905743953803655775666757835902774775232 +0.4262853915271091927300453593077624529840040190987573602873697583 +0.272502449871235944005176337000832389787308384521685260378340781 +0.02034287036894305904429050830899157906868801181466106875507838504 +0.2058296915808363530212836937615578729259850336228305216098969207 +0.4014791536568069132914981035570219772502415235373212767068104629 +0.2249375001022399482177021326361767602306099380452021854751372688 +0.0122144363785103387855708288972578764085549891342672612002911675 +0.4639578196637028654618426122960844569745924535620377426170001163 +0.08488013489441359049422543617990278961495249513965560005231390596 +0.3839126554233829641792241169995056112118738549435185680451106415 +0.2954283565359450142698564103578812662540968472865286528643655096 +0.2368715426933632797203883114608453601301280965983514357031010166 +0.03079002005616818689379437555430409384272056975521080286977436553 +0.4879523795531072195691844705038987386977815390062911906717683948 +0.1993205021632423713244796634655407513154492251671262244936746809 +0.4989055963203276874130654061778803284303962145484476976641785229 +0.2843764440248353437431031574790790615530404808188969002757705128 +0.4185263199001522458669142863738759200408224269123403780399225034 +0.1396725310073930971210628469264965305404387421361487766333402783 +0.03255623598208432111570732264349275889070247369224840425020245548 +0.01784014024404133452372719776485413728130086444052705410704826844 +0.384865504568687870081160661201127839598602309270532264614380477 +0.1309003325323175020366797246711032353130982074800322503405568566 +0.1431288743493055020786095199054726087526637606135342513786504868 +0.3046061152586201444129076750778012320620234017620442293273783168 +0.03488256247317815731161238939613475543191815994111601665491122214 +0.3821163889372620378823133147196229781400957958066435726051067546 +0.3455515607589044047244320070401003626747106946235853743454314733 + +0.36024533272759875053678464250444427703313495106701310122076194 +-0.76127401519591279048542701547769694507976580402021997953887198 +-0.4418776727162474426479200730001951142181524985521240514535558 +0.34204920139243555808422027483098822345896844419004868532934224 +0.71172329571142012240442631060471148007879037540078334351019328 +-0.36925775163129732311162466971425541755641063335497969779567766 +-1.40296609568177089149099288441533089762641571890108269475934906 +-1.24222826864136726680362537192547381481256230902552158780797057 +0.00607499407228038959892573905960884475869268326449569697231477 +1.91657284442035340328413648046587259061888115310698570758147815 +0.35317674560753661885765329603392307825003966650361075863928444 +-0.48950240896281016792176919778871480536527715183755180442476156 +-0.152058413122847042815943943901025572300147209252668563568811 +-0.6491115560302478831599544756204332499254115486756451314012207 +0.1685710055501812992269849506463615702111906798764852797872765 +0.2823209969369385727895147976092857243680253969199490389320264 +1.3584685418332212691251734173418617490702722398418081267262769 +0.713619367356051129502154469153995390055688392061163018158522 +0.4181018677598267810784210340677439833632588355307607330380675 +-0.2388653996537560845947317822584304964125527927408844417552274 +-0.2351288521898560620492028247227621707607426454067330312597866 +0.5230208550112205844981871133989086971747809223769999435544109 +0.0520757069879354904384139117112130122815864605877606009829551 +-0.9184702557111249899875011688666452540989666713487795202125444 +0.92622262524205706128100221683153567164551224298931659146063051 +0.96870992446634450426442935083267457227152314241439241869560816 +0.24683502405368489976421119009095345992629582523743211765415744 +0.81662010161660137553385838832655266824555873321064310931977177 +0.96073948480102318767892786998404683335076075567417072488360436 +2.14786814873824287210940241180033830208962645397139987427864692 +2.72043277095446878580326053372587040605733307728814363729931663 +1.31161305563713719251017446478151743178284268741448438428301323 +0.29358855100947344660632242664243832115512329466704203386752918 +0.17643780483994020846447195261513482338611880225624096861057175 +0.76961768546654612934105856170109599009723956755460961213161949 +1.47920116536627808697927068786191588765072762376755688732264656 +1.5895609810522847742744363204025215895416476880515069433286036 +0.2706453261069599171421394109291847903086207412891472820628118 +-0.8426141292080166804266673000405013343071520145161252827539609 +-1.9989140070106801187817711003632039293204913034500324806976242 +-1.2395099073023788939987761015195772897458499559552773225085403 +-0.7387182396196551498837445392496022083551420921170319785575484 +0.0187367046908426503908695743624868996640023317331996273817171 +-0.7614955339567790326783393465104961646465339506050959703058122 +-1.0439313461061027524149748849449686501675420793530928811557079 +-2.9573357073247999573785050490361239217569283000430696866484717 +-1.8841545962595933891213690660217396998955703124477211928357611 +-1.395085848419573474469528920063909189152621767295930717807111 +-2.33037285344114859049466890118901147867822149638499912228320459 +-0.65319457675557382151355969957475753713014914159323094975565585 +-0.06460808360130255514343503860987869975166597201400797358957041 +0.66802142378572414618609711067042193304273492797163381116531786 +0.35066660249714439248039685840882532858956284232749400860731416 +0.63312845821082450382247640310173892892614497189495443240059072 +0.58543158718255623515221806560020812595597596781494070587715082 +-0.04644295589176404948913435742038314272546497909548304759151194 +-1.33108841072144350907318333022746557158955138290592931052391389 +-0.81459901879434361432976391641660397296840058995919454879567032 +1.5160391867986691760706118845255516162117446733535134996388073 +1.4040988539415910330708556665070812776690108860763564953693018 +-0.2988635981240302409577948323931227619177082948428779879242412 +-0.3643528886563872029889059772587943516427125793619011136726405 +0.8944896063610245760045573585045855379373672697701013573257046 +1.2823953028942141124693088586439801377866883829905438446031167 +-0.1486320594469787654868716942223058809265779007345462482772153 +-2.012586043013087096071836656792618266637636063103253125741176 +0.0667818429274209841608247879802281241831747249599077545253783 +1.5535011760857070138794362709801550043319639098010273065530289 +1.1499744919618694911183410605994308923648688204287178091018962 +-1.436977677538246841507474281861740187218238710340888072868174 +-0.0932861238659303481284542175861266987062319535437727639273743 +-0.6184925786416135172056496118001521313466398925660966126546675 +1.46222079699733778988237593162047651725024067913753337638443577 +0.30419730612171150858051913586349366778386048196415586552020431 +-1.49374678840376153542191125718239779013549906966155011891684801 +-0.85836698262039596818107400614847405054041616631510289768185754 +0.97699913035222672532113370547649462685845808873853380039547387 +0.80007556872441180890929198602290281746683950370601833482590501 +-1.90643827527857977615353177461668332266924675824806487368554079 +-1.164590527550060848416333223734558200489515441528017870246136 +-0.0252090015426247914584955822951742172962141181980558202922595 +1.1467075490478885577343658482482055431781636518828584225009987 +-0.7161127319833518094565154800982261759362901714273252023917335 +-1.0329739421761498073341902205479079052536370498109008607072225 +-0.6224560531971384036517939323674404243291474398604369961468495 +-0.0774578672978431990743622711234283510534952282681497644745803 +0.3141237997848426962206394900753524571436813137243862611003474 +-0.8035031932104088440008004575778640402692444278325365437683772 +0.6906384173087935024045914958904671117948038249333470741165023 +0.7613579352589877163571881990587239607644794063016180577325675 +-0.4672536706600291724692321421307479157702406244906807163168295 +-1.3532399935106791465176325968900917526328327160380457962037191 +1.1959300372427937152290649424912895970803044553974597257378525 +2.0042046752740304665154815545858366376663454407073437871295096 +0.2296810130787041097742046455775013506790321619215927629311018 +-0.9801972880728055037314161786608073475314845544932495168493659 +1.36177955331240317843214597125815084795814068312915099957059653 +1.26257156556562518944516106597864955715977059806908796820421695 +0.25153902038591539092787115136533860304324657917688533620149376 +-1.69826602742099556302743439390426511438898946957831853041569147 +-2.80837359107673651463432814319771158375245703554579717720123666 +-0.62901443531509868741933360482930000283150628559320924435582136 +-0.09362678206988441887501271777091192728951732821622727808128908 +0.2626137390677240735838673345350990669352014446588289430552156 +-0.57353504932505921302915008398841148496547016214094167437145453 +-0.33369099163467275734414028983901784353412309516517566329630801 +-0.81977365940708860150741684208772286148236109444305865886343823 +-0.4517138398136921220525269044736882228785825991821222492779677 +-0.5287429528843499589422442452715806384443206125193345945707194 +-1.0099134009257233255913435137002389652388850354410576670225924 +0.578463316440707611696747067761567628278335203421387503131723 +0.3326127892501068827279749464899864170868221538895073352303545 +0.4895997199373940443267817520198174442952170221087157099060926 +0.1373189089552771125397992450262968058394280365968778178535654 +1.6792351928851476544983185623436095643534557052517863315034427 +0.2628431044609479934978330837592196407397147681290470369553742 +0.4615043220377406506284198073224234455724329774071188911214664 +-0.9247318341287949852939529852124797319139034088036555544027235 +0.5235493459660261774265256131134951936997638112390989070731074 +1.6747050896761591205980543859784641624042744116990285196943043 +0.0023905086574440812189029505691351620474997777252124975722553 +0.04595361813849631132884384149854278656195997945385307551075643 +-0.41248985663178036484351334239015429882960493987818728475645232 +0.29318342876005437888460243910916903734868175442787055780664264 +-0.6470514578902723955532246464518056436673670169941155931918575 +-0.10509828234546338583449228818591967119332319905286615122066837 +-0.7105930185700417151007115920371118243168560225863022786696278 +-0.3639809271779198341802739808982359190726556126436148903840906 +-0.6646841002583483721702871378293363786823562562765757783474517 +-0.0807603428207199949993162784217599120072852038293925535315467 +1.5707490197623138734659369866645171873530550433323713674149339 +-0.6069204636137842228879640743291443844412344072112162366563906 +-1.8717126868614655945811015442203447005143246135450952972427435 +-1.3139904355151289649991678891178889115954456767493784252954984 +1.0164420762166458360728535885684226237136207817961555397868476 +2.5859333500238601117143194439986947085211058734042516138951432 +1.2487513404194085510774361366089733675128578749755221356989306 +-2.7547848527299153337968060908107052276424390739966525931735375 +-0.7324144667618372773806646286802712633147213084031075233821193 +-0.4362994619448748803695510482188981293524348193874038397542994 +2.661150478358291705340622337678474851427812220898618888594022 +-0.0307887112977396442484644046139815519366615981827351300124591 +0.6941372065825907272856424769976359846883366553784414954319733 +-0.4814309668108932025814452459599737162079330064435943291552214 +0.57633039165218187036682057343534321926038093683330527065861383 +-0.0143042543315503871780361644468942136519286511885816079718835 +-0.51220658752145481990931628077946743570822515947257895692817496 +-0.62667100348548533006861450875663969179784348261850757208098061 +-0.4383894642865408949752838509581638725911430370362681930722659 +1.6952292939386781689737995348264264959768988587693060270754032 +0.0509764684060401659972963078288456707774136788765347555849237 +-0.0882057349328144685098766176032276071352156121349515674916738 +-0.8701108839206839737565135844587642873043968240722007373847721 +-0.1407417584412078510047642468720327809974029228069730662676148 +0.2002278171861680334840490972034818716641920142328708688961874 +-1.0615178669362479835125810692199776174362482206009914067803146 +-0.1329536290532419968267201975662163502393979186724181229564422 +0.6784161253119122800533494466937053948553531478822434333327943 +0.2230661303735887738808249547355690778903263807887299203284902 +-0.567852137126855500125647936006051584951514365054685049492478 +-0.0745624628583020984976910320497088464661649923200432676868318 +-1.5673160529743497969164118688087939545751872097151267577979009 +0.62177602977143221529107806283656411213727969604903574168581 +-0.5680437741027681582926564510831778412036076495238952191209056 +1.3874538817431219307020302705558975816671141559754533844394653 +0.0239326814269543117395013223847204859929497163324674041265001 +1.3091376069627920086062774741182571037892407450807690945288471 +-0.6041659947767015374765058919435015036775068471579371243028141 +2.47761064730819077125760684359206830963016236385501402319408895 +0.28110064791846525539712169668275741376222189301681491657073561 +-1.30704924985225584696943934695729294663567267146186235315395147 +-1.35188797824688590060011022805744935212432663768358552620048015 +-0.1828130177799204163469766916516007466440383154505045260354816 +1.42823363684948616643459779404155001687979263056604179363032158 +-1.2133284497556752522526601626029992722749584617376491997811062 +0.1465808456188106353762446056265723221385644506261193321998832 +-0.9250256199213278378757977005338617181155626793085673132153345 +-0.0113258179944209927253767859803626411334337339307492532772323 +0.1597945351931291210962099117136462486972959353608828454776202 +0.305998709167603881011895866721353262783674330651271152726209 +0.7026102681969057881793024509441148863926174788674660386843578 +0.1685319554698776405664691373005369277997555774453165783960004 +0.0307641512262974925890019155524021477271227400607678522950327 +0.2421818707887026992067543106873561529687386639200646879466716 +1.1129580835448875017406583626491724129425873561011424565347481 +-0.4597944855975626216268078319204715186672662530471351535114247 +1.2272471431462833474205047513332908519289895169922210351831093 +-0.10959710115692267744792344434932233197679999393724486355257 +1.3785104806611078270908780777917552077384635077712507037398976 +-0.6000151879508277786780790808689688292689970100065647335414353 +-1.6501188704823974464830500027847656734049270916992146520416907 +-0.5460274269441710343234624762609622222014437016182470622715241 +-0.61089172771883269072266421565255303624083663149442861126675567 +0.09007738552059566491629640951054449225727381382627720151280171 +1.7136666856364154201490935383170508436913081742630631206267476 +1.93437115118678472371728566718493064762354339204839222167683478 +0.6917848676929598178220836703081323423224663446715917963673796 +3.0240690589669797442175921872373366030809531011953541532311477 +0.7313361277909390137252755694481932827050434137457777613794984 +0.7320546350547081933002038481751626640890678112288243942993648 +0.4103105863717511048870715061141664211910560775534508906243553 +2.4801802255183439859115625263222419953232285008566413892610896 +3.6459517938591912419720003425869805691482187694929282535458745 +0.8665023974241966887009151918152737500296025922463297113546286 +-1.8277349179433724490939736505215361492268513832407854533560544 +-1.6145553749774221387878330559761858522529785695186182933507394 +0.2207964125601626610619067560848720254006084929080869380968641 +0.9620040627529881680251446222394214229181419007130845115426685 +-0.6671855992557848280719852300529857821288911664782410963171695 +-2.4763012940391181667181374916501890690055748969770106174418681 +-0.1372125555510086537412502558628715887620242615861822971301296 +-2.3889887806725926172113552852564041456277238731380081899677348 +-0.2364259507122986342342262698856876979056988639567033664103035 +-2.4556469663807474463956298495913067333308253194776091549093525 +-1.8985167043664389026867335066153448855914811780134564124900201 +-1.2759652368717618568331358824462736705979126408409022536615185 +0.9366704488179181685794411534455319883862784894824858156929118 +0.19885386663913853881700705140998986299513710246825007561049823 +-1.0794157422321459097080822484854781471605272244126656451285053 +-0.4311926754303843700914020356654514183280279194498017273758998 +-0.2825884090924180490089487696688507543251806624905532510283825 +2.1760952475694453314264102945633081299732092192756929266375477 +-0.2739876770768980424719435910955406096781958048755719198973838 +0.251560595621110018742297549225527359415098270008220713009769 +-1.0419319517987955126226238040896466326921848366578005595149502 +-1.5548855986484019124659482121647925495249713310970423029426721 +0.6986136934167294083132992315812707044001098753793495174107343 +1.5795672418296713057049634674904125052086889773523872295195298 +0.9286538857762299984711596372778214212581894915236559308942112 +-0.1884373664131792801408311007149709325454295571999130149645913 +-0.458878912190919765143104784415420221755878436158506567497367 +0.413976298448064318702369333952457102059843632719172302999177 +0.3129064540293084006771875419259143783696300496475906953395944 +-1.4727326236398366227822697579990644499022718883889606070930717 +1.2121215250570876110082326230739211148453156697946594259113213 +0.0711688473135101483773147766784758826659851790048483479148565 +2.5890576175667808697869857501686880451998781341369757950527669 +-2.2723901183115262839729872612212458513314198689668569432007307 +-1.9867481260810980225295094855080870898496288765174102728829438 +-0.4770212895353552082639317478910575596432980719721009863242169 +0.5574246389842888896308288189551396371259753817268711696153091 +-0.4039398735005507286706167692602706281248166765089716635818357 +-1.5958834967323111021145522914708945653721681993562504839361219 +-1.5514632205215175502350279837152366759809790133967504627649269 +-0.0433079901492853876255559740884962519729730083980334435167915 +2.2109131786245325567433474413430640095658860266341851691725882 +-1.115329815926436334170558513304486226915650432534341723183547 +-0.8510092000188046240031067179918993445584589477456435353219736 +-2.4675772211946651043674792639106437901964861090593523833933206 +-0.0439322030816785451555203945904115106828058793393229288631723 +0.7468809949771846789182025940499311216927415545859723720972054 +-0.9314197947991962625365338922318038871850922136096589300265111 +-0.5997933957533536831152778234777909992448238005344352033027354 +0.9035384606470940544170317830491216421760962278646972608837749 +0.8605337921842568681093838076999961612574185849857077183248239 +-0.8629075599341134094199029049620288027704940859474752466374724 +0.0362962343877241729317208052265151325321666051310208528421671 +-0.9909422539540953587379591059524718923645481656243018474164702 +2.0922804032012433073948056582826076125268288889747692170576533 +0.0508731469899789908799646957593854707097453105733153858187159 +1.7286270290692215032743680115747891508571497055661049061644126 +0.5269341235019822130020558506098209348484732584442084731802378 +1.0148725461420089639604350826713367522922198860568592673525354 +-1.0517247615216896667711523703658718486587995197128479545111317 +1.2715173176202882397924673064715628970505961376152070564657153 +-0.0242948265465472946414816443505633755106282193224073875068306 +-0.4390905432018008536453426246842361977466748917471558588669719 +0.6556801935831163895656281596654044527180455914453544805909058 +0.1550392605707250691275931181886754856859032074077248779317755 +1.175009921387990837524314034436217222461421371346899454250368 +-1.6845109315437485888648409365662915108845638618003610359112779 +-0.2486919624023601307656942696167627892247622945831681333374314 +-0.1012639772320205105208376686878492947090124025571551278667772 +1.6405209874925182741275732917156218911997944152019449273801406 +0.3188931858562072869503788021597378355234130532660622560055426 +-0.6565117045829074087444624915071986072926448762002841744942606 +-0.8971917444315631454547018913886850366121398738627606887984003 +-1.5048922221780597220156868475692012458836996693472202634403357 +-0.1420431336231291370093229048197689109976398038145853834557503 +1.2510918656767870577314380665748584891149145725692451877944832 +1.8086440473879143825607175756135952820444030144497781783678512 +-2.3762506843365742102823741335686892969056793186874296502260031 +-1.2640045944135343589416112668958605562012731401303095519723074 +-1.491856178363799569037497058740921416564575041542595172300719 +2.2431900016754515385229060970632589035125760217730854626356137 +-0.0672841584640686395661616140619162820162762865157570739112789 +-0.1335970617223729922894125794913465904144451662670145753691243 +-0.8851274118200788028363968483798421105561341843017998950293353 +0.86468785724125771957674717825297224639639639145138751089309531 +1.42006800507506385994122063343503456658821062360961340166739841 +0.0033328696835324551712328510478083056248086002885951174507315 +-1.3489553414092778221484127800773284814869592856436801447858467 +-4.8054244431533848459190772255494994726997877145879227214465911 +-0.6183094729777217636404940692496892975789350192357572582994922 +0.8109942208779324786937815890636743658158591417786067984207293 +0.6640195372573032809596556814554565183425618674401347382252261 +-2.5384293640197580877755498622621504400877057584503749335072733 +-1.1462785577005129418201757307366699685271771907401458459623926 +0.9602822329499751119165136271845779145548303760266812562069431 +0.3413580835919951775336671690376398456459851848078297481949539 +-2.2301577229827093223697124352891790124975084594685842029381039 +-1.6340149904032911738795330879062850436428446102025890961101334 +1.4378668711793349424432178640999726104759537974409878869149186 +2.3253683377058677125360608362233304727359680411365313072380768 +0.1688849771989243033547135903967950890604845490535430162017116 +-1.3221762236522071657149974450948991080993340390815537455705338 +2.7514634076327670343908259659403072443484000047656076869156312 +1.1157637470964692655293775995957274128091793089919062057697274 +1.6564352887211861695036985129613143082376753326282885541485074 +-2.1177048271488645015463273406311502994333416630233680048459388 +0.6993669049727994396697182971433783488918118752530858424140972 +1.8237304667637632265731366772162370591927314879513271563800002 +1.6757809914497552139409927647614424744441149179703260155260685 +1.0668033285652392700946676641942158458843813718580352402025442 +-2.1005925190998746204215026852828507349050843845752843443396632 +-0.6801798133621110641188570472675130969488685622838264139578975 +0.9312203730203186027754477842803529821953374075735727844028952 +2.0539508297482492963113854579161761686012656770254575514271583 +-2.6945813121995842143204733494782862709680878968315263106891852 +-0.8269497479301794349058076378744485849109943251014042831828389 +0.2359607518007275257951765610340732700183434118477658277252431 +1.6448222599823459385620563681389720753586599159923525643197691 +-1.1629051365996600851880543544978663615790014561461892554957345 +-1.6968464086474453182326232016023425120558573346943942812247386 +-0.3935501169001617688238737257016007360458914603417933169607574 +0.8379683352412045247730440415497643445313480603124386186843153 +-0.259325947917088957288570304848157862600639852576050571955745 +-0.2602389691635807922092430985593211963054542534688129131157098 +1.3195287782682938933262644570602107011215771331285730927905336 +-0.8911737842973015969654676492572073148518018558665504707680083 +-1.0931650637516967376982993522085411383812689896880043264636727 +-1.8209472203191029475794203231061783337971919119730789164682394 +2.3429670514283882459557133791586613277275591600579283326590472 +1.3519222497831002184654643738867554587935534419763981114998258 +0.8383968691600733854978520418134122097531981131646804814247788 +-1.1428499481266335798480847028304910921870302274937160621409263 +-0.4388917027387127805859221449303441973873421888663352273789563 +-0.2505486756620750362991054948659535973441734006343495731398977 +-0.3531955377069066651635978412555725665988834949938685381849217 +0.053309954436540234919668659160768202752613863886480182223163 +-0.2315038305835205449510774559008455980821858026326458106144663 +1.9449655687298311129743358389482934000865144481830259674016091 +-0.1240367648611087185822572345414204796776171513996928206742221 +1.0868073449210241167789723086203609648223124031192823916788056 +-1.9212448207973344678968923345073678803727793982544310408648113 +0.4978963794641251169089313438118333532318755636419259947281784 +1.4552687601575700127793846952064999489275414148588650367839477 +1.4335112867068976185084957174957025211212148321001519142041958 +-1.6024703615405040385009179685443573249039206254284206975235133 +-0.941256789793270249220715696321362977890461651641589959401413 +2.1994214032292238335874921400842422827698431614165755871805863 +1.028824172575701877479533211515849478111167308791021202614389 +-0.091382124169238625330664105739891310384691305634473593704341 +-2.1972566710510189940751023164193196458498370506756336983822921 +0.0591785242457559048660995737592797504764181150562470713398195 +-0.2371060307819808830825950130119373177550417466730384116999385 +1.6522686470941541800693944032112793657648258344254831209879575 +-0.1115782562329289295530999730105228080200955944847966162877827 +-0.179583475257242748925237483316360217382866985452222821410998 +-1.796942299342918001193424113721530784931878423200270964209485 +1.4329061304707100907576357622853742106974798092387767937234104 +1.9220673212865094413942951996024338396465831367329493255410769 +-0.0428019885023776642786138492334857828225419975218958154231261 +0.1399987062690967084780456166330535727804164233605752935878182 +-0.1836901539220727461232965311804031532606776224903982355024391 +2.961018893006489897281137880482352418983743984768959082420784 +0.8686066129695543674153567837597664347294057242679589509411055 +1.417092751722219424397632791157213807654377779368118792452233 +-0.1083592223295277230230527447540712163820015095993376622165241 +1.0046860551922452695394207482953717448791874147923476294498652 +0.5671177268706307405430261055299263878468737131183969585354663 +1.1769332648005402842776908081166263977381918266182998704489295 +1.11293963907025988656369209711168221284287389799288990973739 +0.1934411561749934500932068199439085620014678344993117821242159 +-0.6308065688351248280350140531549885708647978066127758758669167 +-0.7467983114180365592996905154368801344101936485344824903218604 +0.0631287058148045652952661930176422275859186550557671255671217 +-1.7405132561998379233516666997191307442263764516025305769868238 +0.5817334389903781695849977644534789119162098986624778365311576 +-0.9187382535753569288408293918869789721698952696367621619780951 +0.405545595003246060411347824196989017139020981386626518408126 +-4.1419901923793736810965199093605770185937016541061927117437171 +-2.3627736754042826619274231915579464991292880340272557421194531 +-0.3926723629491199830982334678713221505692655862921630246663377 +-0.236882199206723909116966829318686505658781444200747873100603 +-0.3529303075753931188803037016109055776407225076960893908147125 +-0.4720924139651003969462087564205854787887787382163371079170436 +1.5542700650666613754817535623541677900842086123078329343415146 +-0.6232884205546568230672923638257898114906698641667288748045413 +1.4806541242989223817207923234915596822529414386500834663886925 +-0.4768399500606588735223154529950816565603516850099021348909654 +-0.0660736467442123712096982614661862795169170877432797629877187 +-1.3220744519261618723527216834575210319467596518303261495121941 +1.3870681435949576197570350846401919515195795687477832890301983 +2.2564321123748641936134892259830171049450730462061392987870492 +0.8634405455878997563851714238947039613743097600712050065918568 +-1.9755430922790107738925626533583670720382958764821702153361947 +-1.7591818720114109703614404241292542278809729373077263553287648 +0.1975750432117342267974568430535273469934932297625669078651697 +1.4043802298962861994029653501299466275460747746265077598014421 +0.2690126633167736042334637888239579129146099777755075152066853 +-1.4732955724626381878715964117911493493838085785422246428326964 +1.2605265296473172010852503505964766638081556846051189077063715 +-1.1171404117558510016357454237283715605208654669338001632508881 +1.124372837165470369017116052520688567647391863197986010705551 +-1.1023343041106768521237247123499780983298065711249990170055076 +0.1702396262432060635116034331311237698397560282715185419796607 +-1.7434100912109526425198433066293178675113822685762428093629679 +1.1972372451842024850212083087959376733397300428693097877354232 +-0.5490590366474578765013031956805316802538940033428389238532498 +-2.1512005712598819832531678620686884883407375933960275061829429 +-0.4080593182663225971560554662287670828992296482324563151670645 +0.280746553443205416019752159451460603190089735950650803130986 +2.1860961005560868687770781893406696831071720156241033620713075 +-2.4800809071754269966410178732307272415380306987203525077242881 +-0.8418966508433190227554646576645410808281839274478355059431696 +-1.7298551230263941272821171263179320977802035969898035345641259 +0.6798042217515628081871576217052307502558852531001725369447389 +-1.0246508385528843804007067073804793995472882201995214970185863 +-0.1189579122501789163907136351942523249595188233873314865259061 +0.9772911699362344554022717601207431270558426906848326207183617 +1.3986799624393281292209736265358360711016598147503272513355119 +-0.6199418572861159451619418554027230298339003749103063410875537 +-0.537529515105552595006186559924914737555335366870079336771515 +1.2916525500102804071679416897027107059291736394565752629797965 +-0.2294416075791660222771807368614685769812504178579119742690622 +0.6328948045293236955603610719210499151926623200210582557800581 +0.0523065339567959545677267265369970519268184156781547057700725 +2.340171878336800528064345796209853808413245514863136855372599 +0.007914813150664789755507731599159265399101779986090850473438 +-0.8467710705124579472921906337917754324849055923949668235429067 +-0.6840294445543725571848190069201549746629215924768025433089169 +0.0916825013737362631861229374547639439639964915842028971540368 +0.576690720944865071629401999274934560394068930847032232668191 +-0.0003583074670153651792361570036520904496065784799789421957613 +-0.4157952370777667226579872928541362015912421541435557353525941 +-0.9933392687715252080501187311679836217008088916293800442884692 +2.830687224547500116599400475962544616348063925782280096606754 +0.7339526967801281242066912351321666201884586834555329642326712 +2.047804563574612044682199299169606956149407036840203334755581 +-2.3687537636301015496410722226139940067381672172122209691899194 +-0.3301174894532902228391402554467443099366683121405226000829329 +0.774532971069297894249618282578305973909148214278871680624465 +0.7780247710590245916697626997575017751817095189751014804218653 +-0.9802766678553535771979043595032742403247407584122350847983434 +0.1740694724476084209097771993176102951660008846988377040212187 +-0.0079429998272439652680531122507849411306553133610370616515833 +-0.6152058171419585738584509944554540941877744970152121964731669 +-1.5404166783627209462233366939217521727750804117917901191151238 +-2.3411492537652307360182029251042136469181213154701805070920913 +1.4511158146038627868030446833763705156148924077835728924362876 +0.1835796206271881871221429936607757343474564709949872634645272 +-0.0263521264693727079914055553885016134730783823408020955333059 +-1.3097519461837320825872589476605550484664318349055376742883136 +0.1994645965933046193322298818562344456370930448866746273295947 +0.0493415737129438379998411502988386012308750214440044715924701 +-0.383522388394482475452854105038608041485586587065685158162785 +-0.4819334988655864650971227166986963050895508030851233058904571 +-0.6293740949991402252508866653769361704359001846222630636673058 +0.5123031121240923373047864526050982133901773216001104639390032 +-2.486050197690129722782295150294772337962843452186617506701904 +-0.8338725927463656956580619516822140300068981147113846035069839 +-3.5444704810493207436906180168337925356837260844015313277908499 +-0.618429990694256686226035546409035917577742964766806755976453 +-1.0869716650557862166465885684839096394916998704284978831905345 +-0.4073844773881409587038851759249759691573615176000776850501329 +-0.3056976760863631830315130917754644454583668071233940179874799 +-0.0540945351195908100068731035888087642900526943170224396383941 +-2.0305088785036671260836905560102407301832478696080699437128067 +-1.46691848475595629805941896555088537661450711537690758596251 +0.3555524756307509091590166982808052193475868201394671704981655 +3.3847182123820941771993650253493210981421476737130203726902077 +2.2864652466423459361309326618054468049194889849970562060549165 +-0.8907573806442911071856564493244823955557407445644642125501904 +0.0167957945932827584815662710591412684780236893036154947579844 +-0.6201458498740077183935390706204120766586527053116157600026198 +4.1974544019155263863993605283804194671134379227235566979990287 +0.8391770339905385749463221543728802396759646582891424595289804 +0.2326145792782539662625646173047369857091449916875157068658407 +1.0557402949173612694043671722613911912858657865104782851876067 +1.9330248565816327911655546856901325270471403272837105268015939 +1.5981066800235643036936644393342258522658392600157325577963566 +-0.7898011232230050825235821209692454267006434228758870784795063 +-1.4800580023052179062680142180772395252026004595957858402310553 +-2.2906110450742944786845771711883515834127174025411421031837811 +1.6478316571780141847533175728985956259039017485820098537581869 +-1.4593736676121546462744742111121652193663123866690859127565308 +0.2292632861509107667151509736787654159008892511707096313805196 +-0.2320334671675028877091428420862871725209786600283189892869837 +1.5205862502134958312640800768282504666319887142652865753117104 +-0.5815526283847451272877960889428032131342745439851640337853305 +-1.663414401575869786428588733303023968473437895771036896877875 +-1.4621194843017099290814392119601738892630720621147000968285544 +0.673902235935614436216615244645364432572694939521671681638696 +0.1988376735221240416621018714294139665180902346989879518287292 +-0.3855575864247034986112964406826747512057046516877833755280708 +-0.1093026776431775292743257862899426900873423269206730370463958 +0.4119074580348867389616000339637503247004076182905722779349409 +2.3027811407290425726306314037103914171598741936121437207836177 +-1.7653779892266459177736854963438704859790238280967718004791106 +0.2949085469575711649125180454469848858613631195121136844982326 +-0.0827519514972472670307590761440731519578533410229662069712914 +1.6076412128435799026673930810428841710831067244662099395416438 +0.7280641045409227302299775736125920285849494073139214309950227 +1.3826189011643726946119991576205125594708935646322529036170085 +0.5773218911106797449453242032770208632758627310133111461267274 +-0.202972227439708975804566260350926126793824410511120131695899 +0.9678603285821014267095596816493334912120700834167577220431777 +0.4230047614959945164283126619952049996403326139433772117129406 +1.7982750480318696743061693101820677430419332652466931559985208 +-0.7391344987071225047742242074814428321125466871379146199015326 +2.932086156545162398391776022619014573229812290550668661759029 +-0.1840484659903504301188956901175171954479568810125496637487238 +0.3845888732242282945383146351543980858932768984771270157420472 +-0.4570790908757074551657242913662277241328806462090520994511626 +0.9827790426000740005648191118037182379579457558616311538962054 +0.6809336687029872962943432538767343951230558665447374639996733 +0.6190475520793471293176310367955125105468458868057753554535737 +-0.2887690042962063359863651566923956850456541722174971896856724 +-0.054478585067689202227243638116629751713896739588068186522454 +0.5576082120282027595057356376800471687292914441842788221964623 +-2.0929564357714887758996330806362414988761490181527165403644529 +-1.0376211417559020326453584973399502607414686402019644706589934 +-1.7232332732069535895780395843132579918850805843675546112952368 +0.648645483019151864219239627041143316103366441308265322050527 +-0.4095011766533687243030308699297037611866399854210837382628426 +-1.0781367781787212807105988729334280790687064177001703266312799 +-1.5598755774042131011434973915715523889190117688024734259903112 +-2.5272790978579211743728710429800421283756893668156874210396237 +-0.9589043897406908548319567466196575412204689918660589780163097 +0.7848020149517211662916603799337180536531700927058907850262214 +1.5226467892957047935094568781819865838001858521655194422137668 +-1.4209601303923323662302457687549627813836999175699187365743487 +1.7672144053893574955676870048958409179765642853057355079297726 +0.2548652673358067191681457115730079127581747567227696065871866 +0.7664078973622982098001990986880417412104947708649635642233887 +-1.8618112743498396440579137528443605568839310848790735613178011 +1.3076308622094654035681297240117575765411711945249086321731254 +1.6346176199049242678580719201133683630960614626203345264180321 +0.8625944829024948174991147653380657665981926565087246281283973 +-1.5209649142082243649788970100188200070498055253507476682638959 +-0.1712404850795356554150212537957665439518611582285354053407987 +0.9074077402679747880695757556802023581966204437760717727158729 +1.7459334501658973055706009343705367761180956217452007569265337 +0.0810280558767807827705368585030737260069371356874296769908467 +-2.5096073556039373171342767254106275784146631826773870956722772 +0.1713767261501952861098039052954363348795442194782659048370826 +0.6311199145058146809840142172305649364469330580444887474911213 +1.2549643338642954281595437484250562731185656158545229853996936 +-1.5320439770331257313321599433528179785877226682699907164804 +0.4164269678350310892035067500517349071087689517035370856115296 +-0.1405021267789697058434672627044980105289050367767409468588513 +2.5241503319886529196548829982030106962886403443395830721922296 +1.5660429304035219929871678416671126433146282629529610222969753 +-1.8524343546938186304096052302023397407867323846190074575624575 +0.9112121433066069785065884780221566827896949963569484696573103 +0.5020092882228159583135562555513838661361253575837045851458799 +1.8577130007302637996158929035203878277000731220419984929486239 +-1.0355131722604702140015839924533640123827521315251781027407778 +1.2442841327784723811604273236202659515534179467449742557434487 +0.2521094803355687345203857556902705707746595448536327679763861 +0.746265722244690488101864235467093824130809570890765297039952 +-1.1122757654269739335221989155289481620735817195489781421135259 +0.6965531458774597916419973927037048669724167359186578787376542 +1.1452771435814935014517409830290961313234103191470710644427331 +1.2358384171301478978910829195822701891835193963989920774356355 +-1.7082699099240163413476015699973769743560979402116306215155828 +-1.6781115476778380394192386344906547556037960482922190727635139 +-0.3622348021673538700224171407212849312439073635772733211206547 +0.7461628758057274537128781434841625220645275090775273243459795 +1.2618047343705994699253328018663460673259112836523127341492595 +-2.0313422095680186535743876690807928199267141397183394220092842 +-0.7237630184526859143637197416981185930375622968647823051308891 +-1.3139528149650901703156667129435300608117739791858880592330176 +-0.5738088160308957332251557441186074117292045404185363939557636 +-1.1772259137525440417287284421684853792525597523826190032146601 + +-0.7335087736711041883089151876515694737975402817556229765975958245 +-0.8786687027770929787301562525828872003547410177701220950278899658 +0.1944979336074391420204691208780533563017707991268605634570366201 +-0.6717069716036456017860348911350501039034020263227184271420653514 +0.1841240265716411858721923885202834145897392121583597644960322461 +0.531416327611542071221970089939764430329756625444579259583169101 +-0.7793598342770851820561551396646691186537674923197586552161425487 +-0.04982739811897050028189209963034074300557183166488389610036293982 +-0.2152831478765442996690076717147867376683641103330644151579049018 +-0.1430325904665435237882241441707630670064919508747748361914900932 +-0.5458569288127476004682590208265714990676611459841400026017844665 +0.1856688150172391527088040246433169286752829500750590071977203062 +0.8193143821859564924477154245099351963436429074028089074430038904 +0.4604487491339531156973853721884505256237012331451385915640611729 +-0.8606535828683120015533980099014960687963233985081987928030018579 +-0.2028782443808202039078700152556584967073846417006795171717789768 +0.7727562160593342436881229708062656539223995010850938445718232095 +0.2216455512897554102911455213296037106714896153079531893725412128 +0.8060520707732849845829519568044036159880831172244051400087891596 +0.2494984458565048492106180084187393465587010901621886528310783225 +0.692720462930580375837580120465281755163139346395305274413909974 +0.3484206501444620766420233468327938525050794194268200530793896515 +-0.5365723013330725289094471599220332027885871668229904917249565862 +-0.4969838973904267472552603461634423875526049699439467087064029146 +-0.1099633225953045478540363356794430416477263111166654723490589437 + diff --git a/tests/data/nfst_adjoint_2d_20_20_50.txt b/tests/data/nfst_adjoint_2d_25_25_50.txt similarity index 70% rename from tests/data/nfst_adjoint_2d_20_20_50.txt rename to tests/data/nfst_adjoint_2d_25_25_50.txt index ef538372..20c4f418 100644 --- a/tests/data/nfst_adjoint_2d_20_20_50.txt +++ b/tests/data/nfst_adjoint_2d_25_25_50.txt @@ -1,7 +1,7 @@ 2 -20 -20 +25 +25 50 @@ -125,6 +125,11 @@ -1.3114006616124870411949136775451574726903656073360494406009535 -2.82850356310362669925338567401765910116674474764184277758124 -0.0701657463528352834546838108465813302285873581313484149607954 +-0.4285353494061338682618214605703490438722285217129853160109048 +0.8725549198959104512153110965453676226136900627696731600660117 +2.8850202021100455843283125702909104105042222102645634866126097 +-5.0378522858990189593921286372257784252953707202711827713652245 +6.3452866802902171070652601007893706790769724376442337852568945 0.36131938962752668564931956792005495013325505868474278578584952 0.93601322002679530568915122449216814183554098027726079258184644 0.17595332536433541971679625934322768155506990037749137502766111 @@ -144,6 +149,11 @@ -3.1799788942288055869936569592625448938053414101719597632990041 -1.0764291032799673955052365299860925695210075659219372927218329 1.438784078452364597103386008350521192720019602773434345599237 +2.2011962381012875698357576693799759835731852324207037466780222 +-2.4049378971641027380144389052228217947659613289035057195610798 +-1.611178469271674910692663193401872017692730888047448599476424 +4.4222980824967206026922168678299439083180070137430406917902602 +-3.0729311128174948203859682549537101167829545168314015246378505 -0.97429212762563456274906820184427241260234299372905422337708698 1.3759776067953720461801361420624123455033169154531054158382798 0.2376423178248998960522282080844813663564393806129836706561517 @@ -163,6 +173,11 @@ -0.7801554043935361292681797197739999129688054210855422709004839 1.6726525489756411191966672990974841737614872478785811891346975 1.8276899024690559989174647615885728992957581255375184832222743 +-1.2388183007211184366516428432426671797670890985427659295204465 +-3.0787939982889055615110904844298991097031981827868188148025888 +-0.4061141280921294224076885756236925265546706788033076564907406 +0.0143801310261719089281175465977239735660909641744904845377431 +-1.5846336445274503244445756914499613570426474409716416136845669 -3.4064566851709168754169772701227556093037016825897137223246397 0.7825833719935938933338872416563408225639681181534641367935008 2.2685355345106277597306553299038320355759612739707936768963681 @@ -182,6 +197,11 @@ -0.9402938264667808049290741147798221943532253510278843811782226 -2.6104294572778615861048678760858812506970986770348561323125387 0.3543666979608898901389286258401308800145737882451910226610964 +1.5666406866474943749705067618855715595368397301097008738130311 +-1.5050179391056904574505744900122066675549137673609242027960909 +-0.3694115474042381676402681183118837160999085946198270431687551 +0.3119519979373057802278992348584110478306383602844726474306318 +-2.1243733357046741985221976742419166562567059647203524857182125 -0.1227434546454076441295023851860886656580998828697771668236592 0.7874675952140726128509266603641277331050306044046615236001563 -1.4119559918420771425866064108225669447423419903335974671054855 @@ -201,6 +221,11 @@ -1.5530516959681811676973160427867676984628067560186510337307692 1.1465145567763507125047830364534883854742331627990327316122143 3.3034337483919145910101664534210737363031021437865632238626665 +-0.9586889110474464048780810579651536038429701509582112760710359 +2.5552938273571511393645561201945064980093119568980106417906876 +-1.0383132971465545869156047348750157515513289463449109180599573 +2.8106885930883527916198943449881955331845238699419895480371269 +3.4832502025469427166121962695135967275955046689714280418274094 -0.8735493595462440058907194148433406216402509150818860654058318 2.4471568663482879395187212781423566859461149449670868841654155 2.4176451750745355165929583802748574285686526433032642904678503 @@ -220,6 +245,11 @@ 0.4348270707393379824642736530876003065752806640458788543171655 0.5445036489879887488813739239125806572959741433354683010562248 3.6518531816846382541397251586258497728106044436232298851769171 +-1.9219371951793389644734478230032661272524123208486616639663922 +-1.9390135652676250056621364035952802501214685412273400025200758 +1.4701441133034637264336065088014842550788007993231884438173449 +-0.6644728556783771517118513704265440655481370024222732070926895 +-0.5371985013212611947363512259395141306646968956752207934685246 -2.4422967896572567092541637652527364573924825476060933707572896 -0.4539400726597934221870087687823420705043129391775678124213158 -0.2612640794353116227053233418509184540694957063691144914901066 @@ -239,6 +269,11 @@ -1.0132796118903577150603037515361876381711869611724000526365201 -0.6348271908421561313597055789088813349821815324804508894587834 -0.0709896909827038380883507941210170151176502795448109089643943 +4.4358069156573445615816998146641376471858097417184488253321471 +-4.7600184461230087669274923375424835538648031208842622981333253 +3.5767010054659576567577055261527479874776217338709592533869627 +4.000976467540729007320094016687135435605181672707624117720792 +-2.9600160428351437461926917778212662933986149106609157832814618 -3.7112968335856745773262691764319318577948290877976900740697014 2.4127923682949903045256864460995263583632033037557904630827129 -1.9856798440904900101354352746556906039073148321727535753770752 @@ -258,6 +293,11 @@ -2.5192058540906738212139988844458124681680134795847166306848854 -0.6818228181279743432951649555405360231184393523892655003991675 2.3891813001591570809150093881212747186033587896823950883042944 +-0.81986351831663872019585544119580989200628678251718648845332 +-0.2626974904548400256501706320922506131105366599301736415013067 +0.471598214084890613569920924613536428465480866432116979099705 +0.6233224632862744210621885136960877385746051391096119931515851 +1.0128544863336911935818562361562552007759667195327286407619711 0.8315803865643513676897295902353765976727919925999588340187098 2.0660062935529555810228317482255250563393344573450644810968124 1.2517713940259354988903941644476061542240930872367232236197187 @@ -277,6 +317,11 @@ -1.4917485847272523374374165641389452552349647205998028082403249 0.3298418472692085684085807795325857068353699573070208396743639 0.26577040791306180848509001907826098322253437677561640834511 +-2.0565375233219616015576917131066724068611611301112017567868169 +0.2100346116067670245496576799134430801017475228943621897387143 +-0.3590571328524095536871062267263711902304612184597827159780959 +-0.0886040591866854753037622183974631491302471109537851227579763 +-2.1491852970781177067055987481149525350056929230384762013826919 1.9623433509016602985243855130039947725740237397943308887694515 -0.9036412031934747233469060446971457663558907453386666569588382 1.2932768502863381614010242904952671097997508022885954680608942 @@ -296,6 +341,11 @@ 0.3068994914384037701089477197430379966918339025149198543408369 0.1672510109212676537054232372711791476732290489041712861187775 0.5653211099826707927524967617500210742629999358382718799603711 +-0.6403871385986731724773930735320235162707572880991111185632743 +0.4239101657058072713944357708076888560785508757777408792804619 +0.3222757053213084895965457344527179772108143183565282951738044 +0.5488018811725244242331693613729210672278990067782795268140155 +-1.3050738055010576681787879178717314946480965773921984334845788 -5.7783552036714685401122632579042894831708682614052252206083747 3.8209885670139769803416203130141756322509818198144443519015268 -1.9111656247035439351502437141370623449831187306485175665708727 @@ -315,6 +365,11 @@ -1.6168433334562393313331699159345987013714153416246471100630771 -3.0913017130476856052601245417668241377300051004184042384550495 4.161956563201275955423879835606854367294917013901093874675236 +0.8695424834547856669549735662201884874037642817331209810187341 +-3.3985158493763557993513318120220498500688890476866112604102963 +3.2514395509039257680171295836359679453496131719813650908395554 +0.9981272915514812457923146339264360500012514253143410126669274 +-1.3979481582159929841734780017368948050300202305894663716249713 -1.6416846709844911204001960077330433154050649745658587434093989 3.9112568271735366597255975731605072269724082625600881156247473 1.9157069775256919984451889115512286408200532579779768705194455 @@ -334,6 +389,11 @@ 0.7535443318060561715282253747389777302514298461886366942239879 1.8290626565629136669905728245752459550993161755457947068987536 1.0342648904938937332085363443859394390789628463575848727293294 +0.9127753546884669199710384024499285985908736102221225444866817 +-2.3679472448695017280434938008212722172177362124276254885173238 +-5.5294510299875831890739730644342010065946095607734937223490049 +1.1692193664505058573319714757230648253755236154589916531016482 +-4.267649044339310933114835921411861222625336919400799496271545 -0.5416053644263289311228948993929076010015179563433139650744344 -1.7063043324477035945991360095450719988378060859264658980977839 1.8969150435320384059122623032107052017792054829540212132094309 @@ -353,6 +413,11 @@ 2.0680804689065381943642074714160665585344534248156817253718344 1.8878929566855593053918589588421357628874047943621958101873356 0.5657225273438288234638837425305442079734450162029453216605149 +0.9106849051554991549607249683181426781902170138778850693397513 +-0.0037630542829598119685321882295232467216257430302857015265924 +3.4629046654995856533530481567718540075442636294988559066197255 +2.3056171834437146644344137615731556346106756633562883284834226 +2.7824052793706624564053076922175506808189188886641574881498368 -1.6980217512833742066859302570694394375938963587075438108798074 0.2315094591830748549298126297193992674293536900379639061008392 0.5818577232334147711235138212762948906977063975226039042666572 @@ -372,6 +437,11 @@ -2.248206181160154083080404961359744075808910341460976977710973 -4.0481319199462569663246801836050077656006300891136683329055 1.8764432769644546402142266826102637239008373314458880216334834 +1.506747007071893777106055991051155378497562645336253254065575 +-1.5864871751081494071147192505964960990652328678447338298504928 +1.7834058097233797561572133747001579818749181572411853524801356 +1.2298689882061279050984032577223508014294858012804008630656891 +2.5297717588280104900984222105736692962181178098550995082119001 -4.6418999143944161838415659774403043096836542473554308345366301 0.8934941240952884067563903564365557092403194176127228623095747 -2.3843416697046839093989258595042400829711605277057871808151948 @@ -391,6 +461,11 @@ -0.4963897855798728198385652636120012137909275260159973369695953 1.1093862668620070506674523739119705603847490337549350703216684 -1.1875745850110008298268502818824634430269673579997624697663722 +1.2605411520387667586274350744436734758517258905479201444278121 +1.9777538884896458420056994370201228508104262760864800908149694 +-0.9207812924913968544929721010545084186763790378303232728437558 +3.8210443906169720159729300041451673275260944645942919509313408 +-0.5698862068223595560585826434943583243131672789593681143239485 -0.0336605909574112373689053223150038174615396392246645588457314 1.4027534725653455014568263881099425470950243092403414804024753 -0.2705421418103551403205284636734185623841398123576246182369523 @@ -410,6 +485,11 @@ 2.7195369206594637700341065429333473864622524549575665285174197 -1.3285425816700597586364693649556879227943180277195695128263072 2.8914585086109743386080275827935722394594570555808800193267056 +-0.3658734874516264151733752427537696979284428721018874935098674 +-1.6270801102366957345298372915909286054223112289542188242097509 +-0.668005512519580871911828468437136396422826082291343613487376 +0.5023614086841765211568799386723528495219922344220125324908772 +0.6468223981628813106931127530996757017434711760876301711064349 1.19524703388068571928248528598202007766191264378983567647395 -2.6973072895473623036974741344016093825577854175328502905559194 -0.8567074494651868109528013171800843383159727274181221480101945 @@ -429,6 +509,11 @@ 1.9719944583675363558616199401194877809159924098465966538903055 -1.4604012361423014831001089898644153876196570428031382308851698 -2.9847329458995021896815467894172265364122453727762482378850755 +1.2032888941009067615607333362755169883217830673596271489050378 +1.2193192520327143285947385507828499263544760010458163325272503 +1.3021659153532185905000745494780131132863790986457043003954799 +-0.575259803907101160527273725491008530837754926444573850266985 +-1.2486141905501751724013039314319666899059030174784429926370874 -2.6615697707341923699143704150390917840552983463873136570586689 5.0813105546035446753668849238293439851645350404712998761969389 1.6220484489843750364628685772899731110144568721445476099115221 @@ -448,6 +533,11 @@ 0.64985688929298595732191786023339257032927027682244696571317 0.7026048136119361104831698364324042263875235815780984565114585 -1.6106953645470086880202019963275328035220321137253938639197989 +0.8548842428947479011271844309252520273954490217827293734297271 +0.2897484414978876030172318981427062028049799915038582391569053 +-3.7518355467289513476591813867040334191226152549817362231372633 +1.5123781119521652438374766124315660763451946292947372084767732 +-1.7019031128422184386045551951658308208556454744409258731400205 0.3782058379779012535167692129888044046330795988957637838451448 0.2743446597856672851883686553019752097213188505106572899816646 0.6224081762194213177437493143417434607870710164359019890172848 @@ -467,6 +557,131 @@ 2.3877813769888859220350253912454671983066071902983426263543559 0.2027106951165770038727858305480875063263986195475540269593212 0.0809558545985279759193825035288101619403900144881804712298128 +1.5203731693149685180229344320787889307383916430871035841646947 +-0.0776608538102646338404530542034962134575631978591095014090267 +1.5218405003867252091169303255748077348864641162574303881762498 +-2.1896782662562113564248464263363973831102503787738545605267606 +-1.7990734126958084856645163679733285418569225905722892789318662 +5.235643492616487615234738042831402763240398346196541107329118 +-1.9189767417563697780063593293254618730084000826872954880128706 +-2.3111566878521929577921173632498773179968136268961723977910669 +2.0143241922517169630429946943733297962634568199500707366131067 +3.1614228525565535243447485679552904531872420471462021819047138 +1.7894075249744222189138536489168590022064960977575919122247093 +0.5023581445976361078128020476316539561441337139396662457552938 +1.3051788371474748926885395422469290211834307308975293079935107 +-1.3227920287740107910116895743736225857495804360333845328159753 +-5.1419634077415853628642739872271169268485281948308184816647547 +-2.750829543347361618157950524996968699755687718509033090187571 +-3.2949467506231288427244135598182374373226936810642672071120086 +1.0166517195232814915594026823899245627328031898003486570843481 +4.1603330588863580970766253500941652044954123954866071991132062 +-0.1524304034244069260080104394144868469249717133331139068181158 +-1.0082288712125565674037317832108959158872007570770302342830328 +6.7896549103098294581252333879063368131501799198769833105923313 +1.2975393596043619992728476017098011979697588389621483469161892 +-2.016455426832920568717674894491302560402072051919505151410936 +-1.5236017364758080143431962965550424018992927976614094722408212 +0.3309466343384857527570931294295077735712442570341036344476857 +-1.169371434854966909913412648390981565148715655475608983496213 +-0.5103431936882273008817982115857913636401853744054828240721086 +-0.1845072973136220831458226660900687255080924257281127189874929 +-2.620580478667313411515583633700468855057045666240458489363743 +-1.8620323829912873832791868225832877072168648174991660504279298 +-3.9710746062272936790767742430528880074341606893149230524395126 +1.1240010549866801119473741769373699172885067939154208188270089 +-1.063078644694108108013313663561107163732552648001532757694666 +-2.3380276339038398135591947970591875568946803342621699309316728 +-3.597388382053514071237897316087660317825103008566625482014911 +1.3666741790136200346038854721550675258629765620955234432919487 +-2.5514910288123416864739614220912131665912777840758064371354693 +-0.710304134191174016791412134143205250640141093632007579611121 +-0.5976987083203614701718148726765885594959443002410303595010751 +-3.2461385376512475667163855585820267110717611651869754095688728 +0.6738714156315178248504825746805409442978631398060939761575176 +0.7784225946708738392577188159151318256388078185591797584484896 +-0.8431221786712765880781327224305972119068840536798370893648382 +-2.6980288876249190890651752001459775411642553946049756279168725 +3.1753495747245299818393468285183211739175230604644987780394371 +0.7513282982298443713332808385896618249303830291678225701859652 +-4.5206020739067645166084515942553497138438860517043197941382475 +2.3817894040753755374525071778836684846316977585222896979521046 +4.8077550960001550135714151120538590494320445518896357627553049 +2.7918530399057377652102480200675150792646334681725240760080765 +-1.6088534005910928470204948148560165136734912639740219595405013 +4.343715418894806503145602128077417938133300373137467379423458 +0.6112487110007931532100278162084352307141097289016115869324985 +2.2214578609608595713749947849354643035142331937691004013174326 +-1.7910443154583514785835668214341981839389385190273561329423714 +-0.9634823757801792295375308582450014075427950071219523048686948 +-1.8438739495483217893654388712808343013539500172704902155012908 +-3.585681379085039565078639510724429280372567179484448490460384 +-2.0952205388582799244562090446877284117355944798725208788531531 +0.7676665008859179884694459968820381323238394648431799612928917 +-0.5826137612482211590005216650313502691426151034543900519641451 +-2.8640998613594536789503029008228638099383500942363620117812711 +-0.4458013664605890584653382196168084165677405128032612118434729 +2.600846866060169155299030584723748317330891171273275954406682 +-0.0851712634545638272233546412313380848627725738081753649462547 +-1.2995801615759406493923523037610015727247827554553804760314873 +-2.5981380591382117609520985647333702542120986648862654091863316 +-0.8669029144624207659518205561114379771777009254753497528115846 +2.2194653144167646395692774181752091456119476827839906312347719 +-0.060860402628072774090940223216962744856926369246433783867689 +-1.321869260817612170437713725259514418871162118861042076125877 +0.9604929858456278262233125574509330966147574126631931628355014 +2.3421121894112056341546709224122331081454116778487370595091843 +-2.0664349396862031353739217619388670786190749564197509899814779 +3.9031689822919378420192250570586418287401576250122851315012939 +0.6091868958446201321284646913853404956678318397408701186485253 +-1.2590210305891505682452793831729089970539326073816147763447484 +-1.9713738791230058874901896230161228350064048312185470251854232 +-1.348850696086925939075803794105922235525583499377669991578779 +-0.6559222934321909123599048120162240984043462430685940880412973 +2.5227685037446459169922056108221452145872537890614799028781286 +-0.5739022898179358600332524564288862131374277386361919906281276 +-0.2738254523412046726773422090701058595299654325223648170617661 +0.0889733014165345900126210131311325449663614956346197384686909 +3.549722967479385600074944609799391499666521126053932566464619 +2.9375670571762584065950686759545814253114143277541652514260691 +-3.4018183310361219617690183302019662846632383096734830375646429 +0.893603581605028633387036271191329788074611491415496788770018 +0.1918233102740895834641328772948827139694827625285908467636068 +0.9605904247672475519722124471241657842906488137144865299057454 +-4.0443473811143316970725328446157259200565578658963717651915184 +1.6945532293775230539218256138438974570451636929199311321908625 +0.5484537982064565115091712584922293444091280568298622684423194 +-2.3967076188357307149113510971072514749797081185214205090431042 +-0.6913112688553785013138186479158596729557406401867511732365011 +1.3228015877896550403399828479287071528753618989627029145547833 +1.032728325926934101444380918955242248228956267615507092758674 +-0.2090120402920256936540024806953688642429250446941474985607841 +5.1654867256985146563794056395406793539323760556946234764575304 +-1.9408135828139026143107062656093427887269458947702534192381795 +3.2317426636921835283209252140847834819987621112243508735973099 +-3.1733868945382116350454880583008605142423851150637988944538801 +0.0117911643259419318034870524323126868788486433724295084750512 +-0.9264667095617212018198632914149856738379112345380602538641336 +-0.7960273897204740746129459406580294791865126592056686753906919 +-1.9519988282849607432339759687127796826540728337605138432742491 +0.015354534288584355581720014060709088665582275811568899606014 +2.7826098908553018073188235297577594384572198637140058059379825 +-3.3582050638138470595317179793419871525893953955357612856305048 +-0.1310195841907926093837419618782306289667103729173277813656682 +2.9921616811266212552432694519031918813323234156547577159781967 +-2.0376039170862745490876510050083066435759914012647414346168294 +3.951631563399057549484864487204467860324452249159084456445147 +2.195433726740362822470521407460289382052356727262280178167887 +-3.1520101704035799654833217480208976760572619982268610497240353 +-3.7169704761386086417340134814182929952144332204588527669588338 +3.2871660878084362128960644905540705211533967103886714251367283 +-1.3739865058412987898531776747824788428813633281144017125623488 +-2.2343638435123357017360704322969465991588244891297366651604519 +0.2019833484990625747034515286430275717159351652454202039026779 +1.4684367318818624603258604226768664602001616263183064945514111 +1.6947982878067978601393248377664481064539649476025910202646185 +-4.0147766021596046076585444610391342736782136846074102527151841 +2.9114640087688285146038010390553456040260543231078363722052162 0.7721031360269444536624854764846278079390436516442447307214583713 0.7113282365127787106295924505560767722199840055537543517442585349 diff --git a/tests/nfct.c b/tests/nfct.c index bb68567d..1cf8c5f9 100644 --- a/tests/nfct.c +++ b/tests/nfct.c @@ -210,7 +210,7 @@ static R trafo_direct_cost(X(plan) *p) static R err_trafo_direct(X(plan) *p) { UNUSED(p); - return K(120.0) * NFFT_EPSILON; + return K(120.0) * Y(float_property)(NFFT_EPSILON); } static R err_trafo(X(plan) *p) @@ -219,7 +219,7 @@ static R err_trafo(X(plan) *p) R s; /* oversampling factor */ R a; R b; - R eps = NFFT_EPSILON; + R eps = Y(float_property)(NFFT_EPSILON); R err; int i; for (i = 0, s = ((R)p->sigma[0]); i < p->d; i++) @@ -272,7 +272,7 @@ static R err_trafo(X(plan) *p) b = K(4800.0); #else a = K(0.3); - b = K(5000.0); + b = K(5050.0); #endif err = KPI * (SQRT(m) + m) * SQRT(SQRT(K(1.0) - K(1.0)/K(2.0))) * EXP(-K2PI * m * SQRT(K(1.0) - K(1.0) / K(2.0))); #else @@ -785,54 +785,54 @@ static const init_delegate_t* initializers_1d[] = static const testcase_delegate_file_t nfct_1d_1_1 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_1_1.txt")}; static const testcase_delegate_file_t nfct_1d_1_10 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_1_10.txt")}; -static const testcase_delegate_file_t nfct_1d_1_20 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_1_20.txt")}; +static const testcase_delegate_file_t nfct_1d_1_25 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_1_25.txt")}; static const testcase_delegate_file_t nfct_1d_1_50 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_1_50.txt")}; static const testcase_delegate_file_t nfct_1d_2_1 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_2_1.txt")}; static const testcase_delegate_file_t nfct_1d_2_10 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_2_10.txt")}; -static const testcase_delegate_file_t nfct_1d_2_20 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_2_20.txt")}; +static const testcase_delegate_file_t nfct_1d_2_25 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_2_25.txt")}; static const testcase_delegate_file_t nfct_1d_2_50 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_2_50.txt")}; static const testcase_delegate_file_t nfct_1d_4_1 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_4_1.txt")}; static const testcase_delegate_file_t nfct_1d_4_10 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_4_10.txt")}; -static const testcase_delegate_file_t nfct_1d_4_20 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_4_20.txt")}; +static const testcase_delegate_file_t nfct_1d_4_25 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_4_25.txt")}; static const testcase_delegate_file_t nfct_1d_4_50 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_4_50.txt")}; static const testcase_delegate_file_t nfct_1d_10_1 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_10_1.txt")}; static const testcase_delegate_file_t nfct_1d_10_10 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_10_10.txt")}; -static const testcase_delegate_file_t nfct_1d_10_20 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_10_20.txt")}; +static const testcase_delegate_file_t nfct_1d_10_25 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_10_25.txt")}; static const testcase_delegate_file_t nfct_1d_10_50 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_10_50.txt")}; -static const testcase_delegate_file_t nfct_1d_20_1 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_20_1.txt")}; -static const testcase_delegate_file_t nfct_1d_20_10 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_20_10.txt")}; -static const testcase_delegate_file_t nfct_1d_20_20 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_20_20.txt")}; -static const testcase_delegate_file_t nfct_1d_20_50 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_20_50.txt")}; +static const testcase_delegate_file_t nfct_1d_25_1 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_25_1.txt")}; +static const testcase_delegate_file_t nfct_1d_25_10 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_25_10.txt")}; +static const testcase_delegate_file_t nfct_1d_25_25 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_25_25.txt")}; +static const testcase_delegate_file_t nfct_1d_25_50 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_25_50.txt")}; static const testcase_delegate_file_t nfct_1d_50_1 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_50_1.txt")}; static const testcase_delegate_file_t nfct_1d_50_10 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_50_10.txt")}; -static const testcase_delegate_file_t nfct_1d_50_20 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_50_20.txt")}; +static const testcase_delegate_file_t nfct_1d_50_25 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_50_25.txt")}; static const testcase_delegate_file_t nfct_1d_50_50 = {setup_file,destroy_file,ABSPATH("data/nfct_1d_50_50.txt")}; static const testcase_delegate_file_t *testcases_1d_file[] = { &nfct_1d_1_1, &nfct_1d_1_10, - &nfct_1d_1_20, + &nfct_1d_1_25, &nfct_1d_1_50, &nfct_1d_2_1, &nfct_1d_2_10, - &nfct_1d_2_20, + &nfct_1d_2_25, &nfct_1d_2_50, &nfct_1d_4_1, &nfct_1d_4_10, - &nfct_1d_4_20, + &nfct_1d_4_25, &nfct_1d_4_50, &nfct_1d_10_1, &nfct_1d_10_10, - &nfct_1d_10_20, + &nfct_1d_10_25, &nfct_1d_10_50, - &nfct_1d_20_1, - &nfct_1d_20_10, - &nfct_1d_20_20, - &nfct_1d_20_50, + &nfct_1d_25_1, + &nfct_1d_25_10, + &nfct_1d_25_25, + &nfct_1d_25_50, &nfct_1d_50_1, &nfct_1d_50_10, - &nfct_1d_50_20, + &nfct_1d_50_25, &nfct_1d_50_50, }; @@ -856,54 +856,54 @@ void X(check_1d_fast_file)(void) static const testcase_delegate_file_t nfct_adjoint_1d_1_1 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_1_1.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_1_10 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_1_10.txt")}; -static const testcase_delegate_file_t nfct_adjoint_1d_1_20 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_1_20.txt")}; +static const testcase_delegate_file_t nfct_adjoint_1d_1_25 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_1_25.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_1_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_1_50.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_2_1 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_2_1.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_2_10 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_2_10.txt")}; -static const testcase_delegate_file_t nfct_adjoint_1d_2_20 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_2_20.txt")}; +static const testcase_delegate_file_t nfct_adjoint_1d_2_25 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_2_25.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_2_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_2_50.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_4_1 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_4_1.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_4_10 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_4_10.txt")}; -static const testcase_delegate_file_t nfct_adjoint_1d_4_20 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_4_20.txt")}; +static const testcase_delegate_file_t nfct_adjoint_1d_4_25 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_4_25.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_4_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_4_50.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_10_1 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_10_1.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_10_10 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_10_10.txt")}; -static const testcase_delegate_file_t nfct_adjoint_1d_10_20 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_10_20.txt")}; +static const testcase_delegate_file_t nfct_adjoint_1d_10_25 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_10_25.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_10_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_10_50.txt")}; -static const testcase_delegate_file_t nfct_adjoint_1d_20_1 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_20_1.txt")}; -static const testcase_delegate_file_t nfct_adjoint_1d_20_10 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_20_10.txt")}; -static const testcase_delegate_file_t nfct_adjoint_1d_20_20 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_20_20.txt")}; -static const testcase_delegate_file_t nfct_adjoint_1d_20_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_20_50.txt")}; +static const testcase_delegate_file_t nfct_adjoint_1d_25_1 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_25_1.txt")}; +static const testcase_delegate_file_t nfct_adjoint_1d_25_10 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_25_10.txt")}; +static const testcase_delegate_file_t nfct_adjoint_1d_25_25 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_25_25.txt")}; +static const testcase_delegate_file_t nfct_adjoint_1d_25_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_25_50.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_50_1 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_50_1.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_50_10 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_50_10.txt")}; -static const testcase_delegate_file_t nfct_adjoint_1d_50_20 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_50_20.txt")}; +static const testcase_delegate_file_t nfct_adjoint_1d_50_25 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_50_25.txt")}; static const testcase_delegate_file_t nfct_adjoint_1d_50_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_1d_50_50.txt")}; static const testcase_delegate_file_t *testcases_adjoint_1d_file[] = { &nfct_adjoint_1d_1_1, &nfct_adjoint_1d_1_10, - &nfct_adjoint_1d_1_20, + &nfct_adjoint_1d_1_25, &nfct_adjoint_1d_1_50, &nfct_adjoint_1d_2_1, &nfct_adjoint_1d_2_10, - &nfct_adjoint_1d_2_20, + &nfct_adjoint_1d_2_25, &nfct_adjoint_1d_2_50, &nfct_adjoint_1d_4_1, &nfct_adjoint_1d_4_10, - &nfct_adjoint_1d_4_20, + &nfct_adjoint_1d_4_25, &nfct_adjoint_1d_4_50, &nfct_adjoint_1d_10_1, &nfct_adjoint_1d_10_10, - &nfct_adjoint_1d_10_20, + &nfct_adjoint_1d_10_25, &nfct_adjoint_1d_10_50, - &nfct_adjoint_1d_20_1, - &nfct_adjoint_1d_20_10, - &nfct_adjoint_1d_20_20, - &nfct_adjoint_1d_20_50, + &nfct_adjoint_1d_25_1, + &nfct_adjoint_1d_25_10, + &nfct_adjoint_1d_25_25, + &nfct_adjoint_1d_25_50, &nfct_adjoint_1d_50_1, &nfct_adjoint_1d_50_10, - &nfct_adjoint_1d_50_20, + &nfct_adjoint_1d_50_25, &nfct_adjoint_1d_50_50, }; @@ -1002,25 +1002,25 @@ static const init_delegate_t* initializers_2d[] = #endif }; -static const testcase_delegate_file_t nfct_2d_10_10_20 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_10_10_20.txt")}; +static const testcase_delegate_file_t nfct_2d_10_10_25 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_10_10_25.txt")}; static const testcase_delegate_file_t nfct_2d_10_10_50 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_10_10_50.txt")}; -static const testcase_delegate_file_t nfct_2d_10_20_20 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_10_20_20.txt")}; -static const testcase_delegate_file_t nfct_2d_10_20_50 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_10_20_50.txt")}; -static const testcase_delegate_file_t nfct_2d_20_10_20 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_20_10_20.txt")}; -static const testcase_delegate_file_t nfct_2d_20_10_50 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_20_10_50.txt")}; -static const testcase_delegate_file_t nfct_2d_20_20_20 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_20_20_20.txt")}; -static const testcase_delegate_file_t nfct_2d_20_20_50 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_20_20_50.txt")}; +static const testcase_delegate_file_t nfct_2d_10_25_25 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_10_25_25.txt")}; +static const testcase_delegate_file_t nfct_2d_10_25_50 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_10_25_50.txt")}; +static const testcase_delegate_file_t nfct_2d_25_10_25 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_25_10_25.txt")}; +static const testcase_delegate_file_t nfct_2d_25_10_50 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_25_10_50.txt")}; +static const testcase_delegate_file_t nfct_2d_25_25_25 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_25_25_25.txt")}; +static const testcase_delegate_file_t nfct_2d_25_25_50 = {setup_file,destroy_file,ABSPATH("data/nfct_2d_25_25_50.txt")}; static const testcase_delegate_file_t *testcases_2d_file[] = { - &nfct_2d_10_10_20, + &nfct_2d_10_10_25, &nfct_2d_10_10_50, - &nfct_2d_10_20_20, - &nfct_2d_10_20_50, - &nfct_2d_20_10_20, - &nfct_2d_20_10_50, - &nfct_2d_20_20_20, - &nfct_2d_20_20_50, + &nfct_2d_10_25_25, + &nfct_2d_10_25_50, + &nfct_2d_25_10_25, + &nfct_2d_25_10_50, + &nfct_2d_25_25_25, + &nfct_2d_25_25_50, }; static const trafo_delegate_t* trafos_2d_direct_file[] = {&trafo_direct}; @@ -1041,25 +1041,25 @@ void X(check_2d_fast_file)(void) testcases_2d_file, initializers_2d, &check_trafo, trafos_2d_fast_file); } -static const testcase_delegate_file_t nfct_adjoint_2d_10_10_20 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_10_10_20.txt")}; +static const testcase_delegate_file_t nfct_adjoint_2d_10_10_25 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_10_10_25.txt")}; static const testcase_delegate_file_t nfct_adjoint_2d_10_10_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_10_10_50.txt")}; -static const testcase_delegate_file_t nfct_adjoint_2d_10_20_20 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_10_20_20.txt")}; -static const testcase_delegate_file_t nfct_adjoint_2d_10_20_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_10_20_50.txt")}; -static const testcase_delegate_file_t nfct_adjoint_2d_20_10_20 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_20_10_20.txt")}; -static const testcase_delegate_file_t nfct_adjoint_2d_20_10_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_20_10_50.txt")}; -static const testcase_delegate_file_t nfct_adjoint_2d_20_20_20 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_20_20_20.txt")}; -static const testcase_delegate_file_t nfct_adjoint_2d_20_20_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_20_20_50.txt")}; +static const testcase_delegate_file_t nfct_adjoint_2d_10_25_25 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_10_25_25.txt")}; +static const testcase_delegate_file_t nfct_adjoint_2d_10_25_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_10_25_50.txt")}; +static const testcase_delegate_file_t nfct_adjoint_2d_25_10_25 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_25_10_25.txt")}; +static const testcase_delegate_file_t nfct_adjoint_2d_25_10_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_25_10_50.txt")}; +static const testcase_delegate_file_t nfct_adjoint_2d_25_25_25 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_25_25_25.txt")}; +static const testcase_delegate_file_t nfct_adjoint_2d_25_25_50 = {setup_file,destroy_file,ABSPATH("data/nfct_adjoint_2d_25_25_50.txt")}; static const testcase_delegate_file_t *testcases_adjoint_2d_file[] = { - &nfct_adjoint_2d_10_10_20, + &nfct_adjoint_2d_10_10_25, &nfct_adjoint_2d_10_10_50, - &nfct_adjoint_2d_10_20_20, - &nfct_adjoint_2d_10_20_50, - &nfct_adjoint_2d_20_10_20, - &nfct_adjoint_2d_20_10_50, - &nfct_adjoint_2d_20_20_20, - &nfct_adjoint_2d_20_20_50, + &nfct_adjoint_2d_10_25_25, + &nfct_adjoint_2d_10_25_50, + &nfct_adjoint_2d_25_10_25, + &nfct_adjoint_2d_25_10_50, + &nfct_adjoint_2d_25_25_25, + &nfct_adjoint_2d_25_25_50, }; static const trafo_delegate_t* trafos_adjoint_2d_direct_file[] = {&adjoint_direct}; diff --git a/tests/nfft.c b/tests/nfft.c index 1131bce9..78ec836e 100644 --- a/tests/nfft.c +++ b/tests/nfft.c @@ -211,7 +211,7 @@ static R trafo_direct_cost(X(plan) *p) static R err_trafo_direct(X(plan) *p) { UNUSED(p); - return K(48.0) * NFFT_EPSILON; + return K(48.0) * Y(float_property)(NFFT_EPSILON); } static R err_trafo(X(plan) *p) @@ -220,7 +220,7 @@ static R err_trafo(X(plan) *p) R s; /* oversampling factor */ R a; R b; - R eps = NFFT_EPSILON; + R eps = Y(float_property)(NFFT_EPSILON); R err; int i; for (i = 0, s = ((R)p->sigma[0]); i < p->d; i++) @@ -1396,7 +1396,7 @@ static int check_single_file(const testcase_delegate_t *testcase, R err = check_delegate->compare(check_delegate, &p, NN, M, f, f_hat); FILE *file = fopen(filename, "a"); fprintf(file, "%d % 20.16lE\n", (int)p.m, (double)err); - printf(", %2d % 20.16lE (" __FE__ ")\n", (int)p.m, (double)err, NFFT_EPSILON); + printf(", %2d % 20.16lE (" __FE__ ")\n", (int)p.m, (double)err, Y(float_property)(NFFT_EPSILON)); fclose(file); } diff --git a/tests/nfst.c b/tests/nfst.c index 97f832fd..38631d21 100644 --- a/tests/nfst.c +++ b/tests/nfst.c @@ -210,7 +210,7 @@ static R trafo_direct_cost(X(plan) *p) static R err_trafo_direct(X(plan) *p) { UNUSED(p); - return K(130.0) * NFFT_EPSILON; + return K(130.0) * Y(float_property)(NFFT_EPSILON); } static R err_trafo(X(plan) *p) @@ -219,7 +219,7 @@ static R err_trafo(X(plan) *p) R s; /* oversampling factor */ R a; R b; - R eps = NFFT_EPSILON; + R eps = Y(float_property)(NFFT_EPSILON); R err; int i; for (i = 0, s = ((R)p->sigma[0]); i < p->d; i++) @@ -793,46 +793,46 @@ static const init_delegate_t* initializers_1d[] = static const testcase_delegate_file_t nfst_1d_2_1 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_2_1.txt")}; static const testcase_delegate_file_t nfst_1d_2_10 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_2_10.txt")}; -static const testcase_delegate_file_t nfst_1d_2_20 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_2_20.txt")}; +static const testcase_delegate_file_t nfst_1d_2_25 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_2_25.txt")}; static const testcase_delegate_file_t nfst_1d_2_50 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_2_50.txt")}; static const testcase_delegate_file_t nfst_1d_4_1 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_4_1.txt")}; static const testcase_delegate_file_t nfst_1d_4_10 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_4_10.txt")}; -static const testcase_delegate_file_t nfst_1d_4_20 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_4_20.txt")}; +static const testcase_delegate_file_t nfst_1d_4_25 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_4_25.txt")}; static const testcase_delegate_file_t nfst_1d_4_50 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_4_50.txt")}; static const testcase_delegate_file_t nfst_1d_10_1 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_10_1.txt")}; static const testcase_delegate_file_t nfst_1d_10_10 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_10_10.txt")}; -static const testcase_delegate_file_t nfst_1d_10_20 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_10_20.txt")}; +static const testcase_delegate_file_t nfst_1d_10_25 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_10_25.txt")}; static const testcase_delegate_file_t nfst_1d_10_50 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_10_50.txt")}; -static const testcase_delegate_file_t nfst_1d_20_1 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_20_1.txt")}; -static const testcase_delegate_file_t nfst_1d_20_10 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_20_10.txt")}; -static const testcase_delegate_file_t nfst_1d_20_20 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_20_20.txt")}; -static const testcase_delegate_file_t nfst_1d_20_50 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_20_50.txt")}; +static const testcase_delegate_file_t nfst_1d_25_1 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_25_1.txt")}; +static const testcase_delegate_file_t nfst_1d_25_10 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_25_10.txt")}; +static const testcase_delegate_file_t nfst_1d_25_25 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_25_25.txt")}; +static const testcase_delegate_file_t nfst_1d_25_50 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_25_50.txt")}; static const testcase_delegate_file_t nfst_1d_50_1 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_50_1.txt")}; static const testcase_delegate_file_t nfst_1d_50_10 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_50_10.txt")}; -static const testcase_delegate_file_t nfst_1d_50_20 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_50_20.txt")}; +static const testcase_delegate_file_t nfst_1d_50_25 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_50_25.txt")}; static const testcase_delegate_file_t nfst_1d_50_50 = {setup_file,destroy_file,ABSPATH("data/nfst_1d_50_50.txt")}; static const testcase_delegate_file_t *testcases_1d_file[] = { &nfst_1d_2_1, &nfst_1d_2_10, - &nfst_1d_2_20, + &nfst_1d_2_25, &nfst_1d_2_50, &nfst_1d_4_1, &nfst_1d_4_10, - &nfst_1d_4_20, + &nfst_1d_4_25, &nfst_1d_4_50, &nfst_1d_10_1, &nfst_1d_10_10, - &nfst_1d_10_20, + &nfst_1d_10_25, &nfst_1d_10_50, - &nfst_1d_20_1, - &nfst_1d_20_10, - &nfst_1d_20_20, - &nfst_1d_20_50, + &nfst_1d_25_1, + &nfst_1d_25_10, + &nfst_1d_25_25, + &nfst_1d_25_50, &nfst_1d_50_1, &nfst_1d_50_10, - &nfst_1d_50_20, + &nfst_1d_50_25, &nfst_1d_50_50, }; @@ -856,46 +856,46 @@ void X(check_1d_fast_file)(void) static const testcase_delegate_file_t nfst_adjoint_1d_2_1 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_2_1.txt")}; static const testcase_delegate_file_t nfst_adjoint_1d_2_10 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_2_10.txt")}; -static const testcase_delegate_file_t nfst_adjoint_1d_2_20 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_2_20.txt")}; +static const testcase_delegate_file_t nfst_adjoint_1d_2_25 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_2_25.txt")}; static const testcase_delegate_file_t nfst_adjoint_1d_2_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_2_50.txt")}; static const testcase_delegate_file_t nfst_adjoint_1d_4_1 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_4_1.txt")}; static const testcase_delegate_file_t nfst_adjoint_1d_4_10 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_4_10.txt")}; -static const testcase_delegate_file_t nfst_adjoint_1d_4_20 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_4_20.txt")}; +static const testcase_delegate_file_t nfst_adjoint_1d_4_25 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_4_25.txt")}; static const testcase_delegate_file_t nfst_adjoint_1d_4_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_4_50.txt")}; static const testcase_delegate_file_t nfst_adjoint_1d_10_1 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_10_1.txt")}; static const testcase_delegate_file_t nfst_adjoint_1d_10_10 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_10_10.txt")}; -static const testcase_delegate_file_t nfst_adjoint_1d_10_20 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_10_20.txt")}; +static const testcase_delegate_file_t nfst_adjoint_1d_10_25 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_10_25.txt")}; static const testcase_delegate_file_t nfst_adjoint_1d_10_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_10_50.txt")}; -static const testcase_delegate_file_t nfst_adjoint_1d_20_1 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_20_1.txt")}; -static const testcase_delegate_file_t nfst_adjoint_1d_20_10 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_20_10.txt")}; -static const testcase_delegate_file_t nfst_adjoint_1d_20_20 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_20_20.txt")}; -static const testcase_delegate_file_t nfst_adjoint_1d_20_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_20_50.txt")}; +static const testcase_delegate_file_t nfst_adjoint_1d_25_1 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_25_1.txt")}; +static const testcase_delegate_file_t nfst_adjoint_1d_25_10 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_25_10.txt")}; +static const testcase_delegate_file_t nfst_adjoint_1d_25_25 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_25_25.txt")}; +static const testcase_delegate_file_t nfst_adjoint_1d_25_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_25_50.txt")}; static const testcase_delegate_file_t nfst_adjoint_1d_50_1 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_50_1.txt")}; static const testcase_delegate_file_t nfst_adjoint_1d_50_10 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_50_10.txt")}; -static const testcase_delegate_file_t nfst_adjoint_1d_50_20 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_50_20.txt")}; +static const testcase_delegate_file_t nfst_adjoint_1d_50_25 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_50_25.txt")}; static const testcase_delegate_file_t nfst_adjoint_1d_50_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_1d_50_50.txt")}; static const testcase_delegate_file_t *testcases_adjoint_1d_file[] = { &nfst_adjoint_1d_2_1, &nfst_adjoint_1d_2_10, - &nfst_adjoint_1d_2_20, + &nfst_adjoint_1d_2_25, &nfst_adjoint_1d_2_50, &nfst_adjoint_1d_4_1, &nfst_adjoint_1d_4_10, - &nfst_adjoint_1d_4_20, + &nfst_adjoint_1d_4_25, &nfst_adjoint_1d_4_50, &nfst_adjoint_1d_10_1, &nfst_adjoint_1d_10_10, - &nfst_adjoint_1d_10_20, + &nfst_adjoint_1d_10_25, &nfst_adjoint_1d_10_50, - &nfst_adjoint_1d_20_1, - &nfst_adjoint_1d_20_10, - &nfst_adjoint_1d_20_20, - &nfst_adjoint_1d_20_50, + &nfst_adjoint_1d_25_1, + &nfst_adjoint_1d_25_10, + &nfst_adjoint_1d_25_25, + &nfst_adjoint_1d_25_50, &nfst_adjoint_1d_50_1, &nfst_adjoint_1d_50_10, - &nfst_adjoint_1d_50_20, + &nfst_adjoint_1d_50_25, &nfst_adjoint_1d_50_50, }; @@ -994,25 +994,25 @@ static const init_delegate_t* initializers_2d[] = #endif }; -static const testcase_delegate_file_t nfst_2d_10_10_20 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_10_10_20.txt")}; +static const testcase_delegate_file_t nfst_2d_10_10_25 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_10_10_25.txt")}; static const testcase_delegate_file_t nfst_2d_10_10_50 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_10_10_50.txt")}; -static const testcase_delegate_file_t nfst_2d_10_20_20 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_10_20_20.txt")}; -static const testcase_delegate_file_t nfst_2d_10_20_50 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_10_20_50.txt")}; -static const testcase_delegate_file_t nfst_2d_20_10_20 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_20_10_20.txt")}; -static const testcase_delegate_file_t nfst_2d_20_10_50 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_20_10_50.txt")}; -static const testcase_delegate_file_t nfst_2d_20_20_20 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_20_20_20.txt")}; -static const testcase_delegate_file_t nfst_2d_20_20_50 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_20_20_50.txt")}; +static const testcase_delegate_file_t nfst_2d_10_25_25 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_10_25_25.txt")}; +static const testcase_delegate_file_t nfst_2d_10_25_50 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_10_25_50.txt")}; +static const testcase_delegate_file_t nfst_2d_25_10_25 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_25_10_25.txt")}; +static const testcase_delegate_file_t nfst_2d_25_10_50 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_25_10_50.txt")}; +static const testcase_delegate_file_t nfst_2d_25_25_25 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_25_25_25.txt")}; +static const testcase_delegate_file_t nfst_2d_25_25_50 = {setup_file,destroy_file,ABSPATH("data/nfst_2d_25_25_50.txt")}; static const testcase_delegate_file_t *testcases_2d_file[] = { - &nfst_2d_10_10_20, + &nfst_2d_10_10_25, &nfst_2d_10_10_50, - &nfst_2d_10_20_20, - &nfst_2d_10_20_50, - &nfst_2d_20_10_20, - &nfst_2d_20_10_50, - &nfst_2d_20_20_20, - &nfst_2d_20_20_50, + &nfst_2d_10_25_25, + &nfst_2d_10_25_50, + &nfst_2d_25_10_25, + &nfst_2d_25_10_50, + &nfst_2d_25_25_25, + &nfst_2d_25_25_50, }; static const trafo_delegate_t* trafos_2d_direct_file[] = {&trafo_direct}; @@ -1033,25 +1033,25 @@ void X(check_2d_fast_file)(void) testcases_2d_file, initializers_2d, &check_trafo, trafos_2d_fast_file); } -static const testcase_delegate_file_t nfst_adjoint_2d_10_10_20 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_10_10_20.txt")}; +static const testcase_delegate_file_t nfst_adjoint_2d_10_10_25 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_10_10_25.txt")}; static const testcase_delegate_file_t nfst_adjoint_2d_10_10_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_10_10_50.txt")}; -static const testcase_delegate_file_t nfst_adjoint_2d_10_20_20 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_10_20_20.txt")}; -static const testcase_delegate_file_t nfst_adjoint_2d_10_20_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_10_20_50.txt")}; -static const testcase_delegate_file_t nfst_adjoint_2d_20_10_20 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_20_10_20.txt")}; -static const testcase_delegate_file_t nfst_adjoint_2d_20_10_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_20_10_50.txt")}; -static const testcase_delegate_file_t nfst_adjoint_2d_20_20_20 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_20_20_20.txt")}; -static const testcase_delegate_file_t nfst_adjoint_2d_20_20_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_20_20_50.txt")}; +static const testcase_delegate_file_t nfst_adjoint_2d_10_25_25 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_10_25_25.txt")}; +static const testcase_delegate_file_t nfst_adjoint_2d_10_25_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_10_25_50.txt")}; +static const testcase_delegate_file_t nfst_adjoint_2d_25_10_25 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_25_10_25.txt")}; +static const testcase_delegate_file_t nfst_adjoint_2d_25_10_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_25_10_50.txt")}; +static const testcase_delegate_file_t nfst_adjoint_2d_25_25_25 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_25_25_25.txt")}; +static const testcase_delegate_file_t nfst_adjoint_2d_25_25_50 = {setup_file,destroy_file,ABSPATH("data/nfst_adjoint_2d_25_25_50.txt")}; static const testcase_delegate_file_t *testcases_adjoint_2d_file[] = { - &nfst_adjoint_2d_10_10_20, + &nfst_adjoint_2d_10_10_25, &nfst_adjoint_2d_10_10_50, - &nfst_adjoint_2d_10_20_20, - &nfst_adjoint_2d_10_20_50, - &nfst_adjoint_2d_20_10_20, - &nfst_adjoint_2d_20_10_50, - &nfst_adjoint_2d_20_20_20, - &nfst_adjoint_2d_20_20_50, + &nfst_adjoint_2d_10_25_25, + &nfst_adjoint_2d_10_25_50, + &nfst_adjoint_2d_25_10_25, + &nfst_adjoint_2d_25_10_50, + &nfst_adjoint_2d_25_25_25, + &nfst_adjoint_2d_25_25_50, }; static const trafo_delegate_t* trafos_adjoint_2d_direct_file[] = {&adjoint_direct}; diff --git a/windows-build-dll.sh b/windows-build-dll.sh index 2c3c693a..1476b093 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -6,9 +6,9 @@ # The Matlab path should not contain spaces! # # Example call: -# ./nfft-build-dll.sh --fftw=3.3.8 --octave=5.1.0 --matlab=/c/path/to/matlab +# ./nfft-build-dll.sh --fftw=3.3.10 --octave=6.4.0 --matlab=/c/path/to/matlab # -# WARNING: This script downloads and compiles FFTW and downloads GCC and Octave (requires ~ 2GB). +# WARNING: This script downloads and compiles FFTW and downloads GCC, Julia and Octave (requires ~ 3GB). # # Optional flags: --arch=64 (default) or 32 (swich wheater to build 64 or 32 bit binaries) # To build for 32 bit you should use MinGW-w64 Win32 Shell. @@ -23,15 +23,21 @@ set -ex # default values (to be overwritten if respective parameters are set) -FFTWVERSION=3.3.8 -OCTAVEVERSION=5.1.0 +FFTWVERSION=3.3.10 +OCTAVEVERSION=6.4.0 MATLABVERSION="" ARCH=64 GCCARCH="" +BINARIES_ARCH_README=' +Please note that since the binaries were compiled with gcc flag -march=haswell, +they may not work on older CPUs (below Intel i3/i5/i7-4xxx or +AMD Excavator/4th gen Bulldozer) as well as on some Intel Atom/Pentium CPUs. +' SOVERSION=4 +OMP_ONLY= # read the options -TEMP=`getopt -o o:m:f:a:g:v: --long octave:,matlab:,fftw:,arch:,gcc-arch:,matlab-version: -n 'nfft-build-dll.sh' -- "$@"` +TEMP=`getopt -o o:m:f:a:g:v:s: --long octave:,matlab:,fftw:,arch:,gcc-arch:,matlab-version:,without-threads: -n 'nfft-build-dll.sh' -- "$@"` eval set -- "$TEMP" # extract options and their arguments into variables. @@ -67,6 +73,8 @@ while true ; do "") shift 2 ;; *) MATLABVERSION="$2"; shift 2 ;; esac ;; + -s|--without-threads) + OMP_ONLY=0; shift 2 ;; --) shift ; break ;; *) echo "Internal error!" ; exit 1 ;; esac @@ -82,7 +90,7 @@ elif [ "$ARCH" == "64" ]; then ARCHNAME=x86_64 MATLABARCHFLAG="" if [ "$GCCARCH" == "" ]; then - GCCARCH=core2; + GCCARCH=haswell; fi else echo "Unknown architecture!" ; exit 1 ; @@ -91,7 +99,6 @@ fi # Install required packages pacman -S --needed autoconf perl libtool automake mingw-w64-$ARCHNAME-gcc make mingw-w64-$ARCHNAME-cunit tar zip unzip wget dos2unix rsync p7zip -#NFFTDIR=$(pwd) NFFTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" HOMEDIR="$(pwd)"/windows-build-dll-$ARCHNAME mkdir -p "$HOMEDIR" @@ -113,16 +120,19 @@ if [ ! -f "$FFTWDIR/build-success" ]; then cd build-threads ../configure $FFTWFLAGS --with-windows-f77-mangling --enable-shared --enable-threads --with-combined-threads make -j4 - cd ../build-threads-static + cd "$FFTWDIR"/build-threads-static ../configure $FFTWFLAGS --host=$ARCHNAME-w64-mingw32.static --disable-fortran --enable-static --disable-shared --enable-threads --with-combined-threads make -j4 - cd ../build - ../configure $FFTWFLAGS --with-windows-f77-mangling --enable-shared + touch "$FFTWDIR/build-success" +fi +if [ "$OMP_ONLY" = "0" ] && [ ! -f "$FFTWDIR/build/build-success" ]; then + cd "$FFTWDIR"/build + "$FFTWDIR"/configure $FFTWFLAGS --with-windows-f77-mangling --enable-shared make -j4 cd ../build-static - ../configure $FFTWFLAGS --host=$ARCHNAME-w64-mingw32.static --enable-static --disable-shared + "$FFTWDIR"/configure $FFTWFLAGS --host=$ARCHNAME-w64-mingw32.static --enable-static --disable-shared make -j4 - touch "$FFTWDIR/build-success" + touch "$FFTWDIR/build/build-success" fi @@ -146,9 +156,20 @@ fi OCTLIBDIR="$OCTAVEDIR"/lib/octave/"$OCTAVEVERSION" rm -f "$OCTLIBDIR"/liboctave.la "$OCTLIBDIR"/liboctinterp.la +# Get Julia +if [ ! -f julia/bin/julia.exe ]; then + rm -f -r julia + mkdir julia + cd julia + wget https://julialang-s3.julialang.org/bin/winnt/x$ARCH/1.3/julia-1.3.1-win$ARCH.exe + 7z x julia-*.exe + 7z x julia-installer.exe + rm julia-*.exe +fi + # Build NFFT READMECONTENT=" -$(sed '/Directory structure/Q' $NFFTDIR/README) +$(sed -e '/^\[!/d' -e '/Directory structure/Q' $NFFTDIR/README) " FFTWREADME=' FFTW @@ -156,11 +177,12 @@ FFTW The compiled NFFT files contain parts of the FFTW library (http://www.fftw.org) Copyright (c) 2003, 2007-14 Matteo Frigo Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology' + cd "$NFFTDIR" #./bootstrap.sh make distclean || true -for OMPYN in 0 1 +for OMPYN in $OMP_ONLY 1 do if [ $OMPYN = 1 ]; then FFTWBUILDDIR="$FFTWDIR/build-threads" @@ -184,7 +206,7 @@ cd "$NFFTBUILDDIR" # Compile with Octave -"$NFFTDIR/configure" --enable-all $OMPFLAG --with-fftw3-libdir="$FFTWBUILDDIR"/.libs --with-fftw3-includedir="$FFTWDIR"/api --with-octave="$OCTAVEDIR" --with-gcc-arch=$GCCARCH --disable-static --enable-shared --disable-applications --disable-examples --enable-julia +"$NFFTDIR/configure" --enable-all $OMPFLAG --with-fftw3-libdir="$FFTWBUILDDIR"/.libs --with-fftw3-includedir="$FFTWDIR"/api --with-octave="$OCTAVEDIR" --with-gcc-arch=$GCCARCH --disable-static --enable-shared --disable-examples --enable-exhaustive-unit-tests make make check @@ -192,7 +214,7 @@ make check NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) DLLDIR=nfft-"$NFFTVERSION"-dll$ARCH$OMPSUFFIX -gcc -shared -Wl,--whole-archive 3rdparty/.libs/lib3rdparty.a kernel/.libs/libkernel$THREADSSUFFIX.a -lfftw3 -lm -L"$FFTWBUILDDIR-static/.libs" -Wl,--no-whole-archive -O3 -malign-double -o .libs/libnfft3$THREADSSUFFIX-$SOVERSION.dll -Wl,-Bstatic -lwinpthread $OMPLIBS -Wl,--output-def,.libs/libnfft3$THREADSSUFFIX-$SOVERSION.def +gcc -shared -Wl,--whole-archive kernel/.libs/libkernel$THREADSSUFFIX.a -lfftw3 -lm -L"$FFTWBUILDDIR-static/.libs" -Wl,--no-whole-archive -O3 -malign-double -o .libs/libnfft3$THREADSSUFFIX-$SOVERSION.dll -Wl,-Bstatic -lwinpthread $OMPLIBS -Wl,--output-def,.libs/libnfft3$THREADSSUFFIX-$SOVERSION.def mkdir "$DLLDIR" cp ".libs/libnfft3$THREADSSUFFIX-$SOVERSION.dll" "$DLLDIR/libnfft3$THREADSSUFFIX-$SOVERSION.dll" @@ -203,7 +225,7 @@ cp "$FFTWDIR"/api/fftw3.h "$DLLDIR"/fftw3.h cp examples/nfft/simple_test.c "$DLLDIR"/simple_test.c echo 'This archive contains the NFFT' $NFFTVERSION 'library and the associated header files. The NFFT library was compiled with double precision support for' $ARCH'-bit Windows -using GCC' $GCCVERSION $ARCHNAME'-w64-mingw32 with march='$GCCARCH 'and FFTW' $FFTWVERSION'. +using GCC' $GCCVERSION $ARCHNAME'-w64-mingw32 with -march='$GCCARCH 'and FFTW' $FFTWVERSION'. In order to link the .dll file from Visual C++, you should run lib /def:libnfft3'$THREADSSUFFIX'-'$SOVERSION'.def @@ -211,7 +233,7 @@ In order to link the .dll file from Visual C++, you should run As a small example, you can compile the NFFT simple test with the following command gcc -O3 simple_test.c -o simple_test.exe -I. -L. libnfft3'$THREADSSUFFIX'-'$SOVERSION'.dll -' "$READMECONTENT" "$FFTWREADME" > "$DLLDIR"/readme-windows.txt +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$DLLDIR"/readme-windows.txt unix2dos "$DLLDIR"/readme-windows.txt cp "$NFFTDIR"/COPYING "$DLLDIR"/COPYING rm -f "$HOMEDIR/$DLLDIR".zip @@ -219,24 +241,29 @@ rm -f "$HOMEDIR/$DLLDIR".zip # Julia interface -for LIB in nfft nfct +cd julia +for LIB in nf*t fastsum do - cd julia/"$LIB" - gcc -shared .libs/lib"$LIB"julia.o -Wl,--whole-archive ../../.libs/libnfft3_julia.a -Wl,--no-whole-archive -L"$FFTWBUILDDIR-static/.libs" -o .libs/lib"$LIB"julia.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/lib"$LIB"julia.dll.a -static-libgcc -Wl,-Bstatic -lwinpthread -lfftw3 $OMPLIBS + cd "$LIB" + if [ "$LIB" = "fastsum" ]; then FASTSUM_LIBS="../../applications/fastsum/.libs/libfastsum$THREADSSUFFIX.a ../../applications/fastsum/.libs/libkernels.a"; else FASTSUM_LIBS=""; fi + gcc -shared .libs/lib"$LIB"julia.o -Wl,--whole-archive ../../.libs/libnfft3_julia.a $FASTSUM_LIBS -Wl,--no-whole-archive -L"$FFTWBUILDDIR-static/.libs" -O3 -malign-double -ffast-math -march=$GCCARCH -o .libs/lib"$LIB"julia.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/lib"$LIB"julia.dll.a -static-libgcc -Wl,-Bstatic -lwinpthread -lfftw3 $OMPLIBS cp .libs/lib"$LIB"julia.dll lib"$LIB"julia.dll - cd ../.. + cd .. done +cd "$NFFTBUILDDIR" JULIADIR=nfft-"$NFFTVERSION"-julia-w$ARCH$OMPSUFFIX mkdir "$JULIADIR" -rsync -a --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' --exclude='*.c' 'julia/' "$JULIADIR" -rsync -a --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' "$NFFTDIR/julia/" "$JULIADIR" +cp "$NFFTDIR"/COPYING "$JULIADIR"/COPYING +rsync -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' --exclude='*.h' "$NFFTDIR/julia/" "$JULIADIR" +rsync -rLt --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' --exclude='*.c' 'julia/' "$JULIADIR" +for DIR in $JULIADIR/nf*t $JULIADIR/fastsum; do cd $DIR; for NAME in simple_test*.jl; do PATH=/c/Windows/System32 $HOMEDIR/julia/bin/julia.exe "$NAME"; done; cd "$NFFTBUILDDIR"; done; echo 'This archive contains the NFFT' $NFFTVERSION 'Julia interface. The NFFT library was compiled with double precision support for' $ARCH'-bit Windows -using GCC' $GCCVERSION $ARCHNAME'-w64-mingw32 with march='$GCCARCH 'and FFTW' $FFTWVERSION'. -' "$READMECONTENT" "$FFTWREADME" > "$JULIADIR"/readme.txt -unix2dos "$JULIADIR"/readme.txt +using GCC' $GCCVERSION $ARCHNAME'-w64-mingw32 with -march='$GCCARCH 'and FFTW' $FFTWVERSION'. +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$JULIADIR"/readme-julia.txt +unix2dos "$JULIADIR"/readme-julia.txt rm -f "$HOMEDIR/$JULIADIR".zip 7z a -r "$HOMEDIR/$JULIADIR".zip "$JULIADIR" @@ -244,12 +271,11 @@ rm -f "$HOMEDIR/$JULIADIR".zip # Compile with Matlab if [ -n "$MATLABDIR" ]; then if [ "$MATLABVERSION" == "" ]; then - "$MATLABDIR"/bin/matlab -wait -nodesktop -nosplash -nodisplay -r "fid=fopen('matlab_version.txt','wt'); fprintf(fid,'MATLAB_VERSION=%s\n', version); exit;" - MATLABVERSION=" and Matlab `grep MATLAB_VERSION matlab_version.txt | sed 's/.*(//' | sed 's/)//'`" + "$MATLABDIR"/bin/matlab.exe -wait -nodesktop -nosplash -r "fid=fopen('matlab_version.txt','wt'); fprintf(fid,'MATLAB_VERSION=%s\n', version); exit;" + MATLABVERSION="`grep MATLAB_VERSION matlab_version.txt | sed 's/.*(//' | sed 's/)//'`" fi - MATLABSTRING=" and Matlab $MATLABVERSION" cd "$NFFTBUILDDIR" - "$NFFTDIR/configure" --enable-all $OMPFLAG --with-fftw3-libdir="$FFTWBUILDDIR"/.libs --with-fftw3-includedir="$FFTWDIR"/api --with-matlab="$MATLABDIR" "$MATLABARCHFLAG" --with-gcc-arch=$GCCARCH --disable-static --enable-shared --disable-applications --disable-examples + "$NFFTDIR/configure" --enable-all $OMPFLAG --with-fftw3-libdir="$FFTWBUILDDIR"/.libs --with-fftw3-includedir="$FFTWDIR"/api --with-matlab="$MATLABDIR" "$MATLABARCHFLAG" --with-gcc-arch=$GCCARCH --disable-static --enable-shared --disable-applications --disable-examples --enable-exhaustive-unit-tests make if [ -f "$MATLABDIR"/bin/matlab.exe ]; then make check @@ -266,20 +292,31 @@ fi # Create Matlab/Octave release MEXDIR=nfft-"$NFFTVERSION"-mexw$ARCH$OMPSUFFIX -for SUBDIR in nfft nfsft/@f_hat nfsft nfsoft nnfft fastsum nfct nfst infft1d fpt - do - mkdir -p "$MEXDIR"/$SUBDIR - cp -f -r matlab/$SUBDIR/*.mex* "$MEXDIR"/$SUBDIR/ || true - cp -f -r "$NFFTDIR"/matlab/$SUBDIR/README "$MEXDIR"/$SUBDIR/ || true - cp -f -r "$NFFTDIR"/matlab/$SUBDIR/*.m "$MEXDIR"/$SUBDIR/ - "$OCTAVEDIR"/bin/octave-cli --no-window-system --eval="cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end" +mkdir "$MEXDIR" +rsync -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' --exclude='*.h' "$NFFTDIR/matlab/" "$MEXDIR" +rsync -rLt --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' --exclude='*.c' "matlab/" "$MEXDIR" +for SUBDIR in nfft nfsft nfsoft nnfft fastsum nfct nfst infft1d fpt ; do + cd "$MEXDIR/$SUBDIR" + if [ -f simple_test.m ] ; then + for TESTFILE in *test*.m + do + if [ "$SUBDIR" != "infft1d" ] ; then + "$OCTAVEDIR"/bin/octave-cli.exe --no-window-system --eval="run('$TESTFILE')" + fi + if [ -f "$MATLABDIR"/bin/matlab.exe ] ; then + PATH=/c/Windows/System32 "$MATLABDIR"/bin/matlab.exe -wait -nodesktop -nosplash -r "run('$TESTFILE'); exit" + fi + done + fi + cd "$NFFTBUILDDIR" done cd "$NFFTBUILDDIR" cp "$NFFTDIR"/COPYING "$MEXDIR"/COPYING -echo 'This archive contains the Matlab and Octave interface of NFFT' $NFFTVERSION 'compiled for -'$ARCH'-bit Windows using GCC' $GCCVERSION $ARCHNAME'-w64-mingw32 with march='$GCCARCH', FFTW' $FFTWVERSION$MATLABSTRING' and Octave '$OCTAVEVERSION'. -' "$READMECONTENT" > "$MEXDIR"/readme-matlab.txt +echo 'This archive contains the Matlab and Octave interface of NFFT '$NFFTVERSION' +compiled for '$ARCH'-bit Windows using GCC' $GCCVERSION $ARCHNAME'-w64-mingw32 +with -march='$GCCARCH$' and Matlab '$MATLABVERSION' and Octave '$OCTAVEVERSION'. +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$MEXDIR"/readme-matlab.txt unix2dos "$MEXDIR"/readme-matlab.txt rm -f "$HOMEDIR/$MEXDIR".zip 7z a -r "$HOMEDIR/$MEXDIR".zip "$MEXDIR" @@ -287,18 +324,19 @@ rm -f "$HOMEDIR/$MEXDIR".zip # Build applications cd "$NFFTBUILDDIR" -CPPFLAGS="--static" LDFLAGS="--static" "$NFFTDIR/configure" --enable-all $OMPFLAG --with-fftw3-libdir="$FFTWBUILDDIR-static"/.libs --with-fftw3-includedir="$FFTWDIR"/api --with-gcc-arch=$GCCARCH --enable-static --disable-shared +CPPFLAGS="--static" LDFLAGS="--static" "$NFFTDIR/configure" --enable-all $OMPFLAG --with-fftw3-libdir="$FFTWBUILDDIR-static"/.libs --with-fftw3-includedir="$FFTWDIR"/api --with-gcc-arch=$GCCARCH --enable-static --disable-shared --enable-exhaustive-unit-tests make all check APPSDIR=nfft-"$NFFTVERSION"-applications-w$ARCH$OMPSUFFIX mkdir "$APPSDIR" -rsync -a --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' 'applications/' "$APPSDIR" -rsync -a --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' "$NFFTDIR/applications/" "$APPSDIR" +cp "$NFFTDIR"/COPYING "$APPSDIR"/COPYING +rsync -rLt --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' 'applications/' "$APPSDIR" +rsync -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' "$NFFTDIR/applications/" "$APPSDIR" echo 'This archive contains the NFFT' $NFFTVERSION 'applications. The NFFT library was compiled with double precision support for' $ARCH'-bit Windows using GCC' $GCCVERSION $ARCHNAME'-w64-mingw32 with march='$GCCARCH 'and FFTW' $FFTWVERSION'. -' "$READMECONTENT" "$FFTWREADME" > "$APPSDIR"/readme.txt +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$APPSDIR"/readme.txt unix2dos "$APPSDIR"/readme.txt rm -f "$HOMEDIR/$APPSDIR".zip 7z a -r "$HOMEDIR/$APPSDIR".zip "$APPSDIR"