From f88170a515a386e8e84e0715790d4c50ae6b0fb8 Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Thu, 20 Jun 2019 12:14:40 +0200 Subject: [PATCH 001/167] create fastsum NFFT interface --- julia/fastsum/Makefile.am | 38 +++++ julia/fastsum/fastsum.jl | 257 ++++++++++++++++++++++++++++++++ julia/fastsum/libfastsumjulia.c | 112 ++++++++++++++ julia/fastsum/simple_test_2d.jl | 59 ++++++++ 4 files changed, 466 insertions(+) create mode 100644 julia/fastsum/Makefile.am create mode 100644 julia/fastsum/fastsum.jl create mode 100644 julia/fastsum/libfastsumjulia.c create mode 100644 julia/fastsum/simple_test_2d.jl diff --git a/julia/fastsum/Makefile.am b/julia/fastsum/Makefile.am new file mode 100644 index 00000000..f61a74f9 --- /dev/null +++ b/julia/fastsum/Makefile.am @@ -0,0 +1,38 @@ +.PHONY: libfastsumjulia-link clean-libfastsumjulia-link + +# compiler flags +AM_CPPFLAGS = -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@ +else + libadd_for_fftw_threads= +endif +# fastsum_test_LDADD = libfastsum.la libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@.la +libfastsumjulia_la_LIBADD = $(top_builddir)/applications/fastsum/libfastsum.la $(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 -module -shared -avoid-version @fftw3_LDFLAGS@ + +EXTRA_DIST = fastsum.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..5882e9fc --- /dev/null +++ b/julia/fastsum/fastsum.jl @@ -0,0 +1,257 @@ +module fastsum + +export fastsumplan, fastsum_plan + +ending = ".so" + +if Sys.iswindows() + ending = ".dll" +elseif Sys.isapple() + ending = ".dylib" +end + +const lib_path = string( @__DIR__, "/libfastsumjulia", ending ) + +#dummy-struct for C +mutable struct fastsum_plan + end + + +mutable struct fastsumplan{D} + N::Int32 # number of source nodes + M::Int32 # number of target nodes + n::Int32 # expansion degree + m::Int32 # cut-off parameter + p::Int32 # degree of smoothness + kernel::String # name of kernel + c::NTuple{D,Float64} # kernel parameters + eps_I::Float64 # inner boundary + eps_B::Float64 # outer boundary + init_done::Bool # bool for plan init + finalized::Bool # bool for finalizer + 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 fastsumplan{D}(N::Int32,M::Int32,n::Int32,m::Int32,p::Int32,kernel::String,c::NTuple{D,Float64},eps_I::Float64,eps_B::Float64) where {D} + # create plan object + new(N,M,n,m,p,kernel,c,eps_I,eps_B,false,false) + end + +end #struct fastsumplan + +function fastsumplan(N::Integer,M::Integer,n::Integer,m::Integer,p::Integer,kernel::String,c::NTuple{D,Float64},eps_I::Float64,eps_B::Float64) where{D} + + + 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 + + + fastsumplan{D}(Int32(N),Int32(M),Int32(n),Int32(m),Int32(p),kernel,c,Float64(eps_I),Float64(eps_B)) +end #constructor + + +function fastsum_init(fp::fastsumplan{D}) where {D} + + ptr = ccall(("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, ()) + + Core.setfield!(fp, :plan, ptr) + # c noch in pointer umwandeln + c = collect(fp.c) + ccall(("jfastsum_init",lib_path),Nothing,(Ref{fastsum_plan},Int32,Int32,Int32,Cstring,Ref{Float64},Int32,Int32,Int32,Float64,Float64),ptr,D,fp.N,fp.M,fp.kernel,c,fp.n,fp.m,fp.p,fp.eps_I,fp.eps_B) + + Core.setfield!(fp,:init_done, true) + finalizer(finalize_plan, fp) +end #fastsum_init + +function finalize_plan(fp::fastsumplan{D}) where{D} + if !fp.init_done + error("Plan not initialized.") + end + + if !fp.finalized + ccall(("jfastsum_finalize",lib_path),Nothing,(Ref{fastsum_plan},),fp.plan) + Core.setfield!(fp,:finalized,true) + end +end #finalize_plan + +function Base.setproperty!(fp::fastsumplan{D},v::Symbol,val) where {D} + if !fp.init_done + fastsum_init(fp) + end + + if fp.finalized + error("Plan already finalized") + end + + # edit source nodes + if v == :x + if D==1 + if typeof(val) != Vector{Float64} + error("x has to be a Float64 vector.") + end + if (size(val)[1]) != fp.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] != D || size(val)[2] != fp.N + 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}), fp.plan,val) + Core.setfield!(fp,v,ptr) + + # edit target nodes + elseif v == :y + if D==1 + if typeof(val) != Vector{Float64} + error("y has to be a Float64 vector.") + end + if (size(val)[1]) != fp.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] != D || size(val)[2] != fp.M + 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}), fp.plan, val) + Core.setfield!(fp,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]) != fp.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}), fp.plan, val) + Core.setfield!(fp,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!(fp,v,val) + end +end # Base.setproperty! + +# overwrite dot notation for plan struct in order to use C memory +function Base.getproperty(fp::fastsumplan{D},v::Symbol) where {D} + if v == :x + if !isdefined(fp,:x) + error("x is not set.") + end + ptr = Core.getfield(fp,:x) + if D==1 + return unsafe_wrap(Vector{Float64},ptr,fp.N) # get source nodes from C memory and convert to Julia type + else + return unsafe_wrap(Matrix{Float64},ptr,(D,Int64(fp.N))) # get source nodes from C memory and convert to Julia type + end + + elseif v == :y + if !isdefined(fp,:y) + error("y is not set.") + end + ptr = Core.getfield(fp,:y) + if D==1 + return unsafe_wrap(Vector{Float64},ptr,fp.M) # get target nodes from C memory and convert to Julia type + else + return unsafe_wrap(Matrix{Float64},ptr,(D,Int64(fp.M))) + end + + elseif v == :alpha + if !isdefined(fp,:alpha) + error("alpha is not set.") + end + ptr = Core.getfield(fp,:alpha) + return unsafe_wrap(Vector{ComplexF64},ptr,fp.N) # get coefficients from C memory and convert to Julia type + + elseif v == :f + if !isdefined(fp,:f) + error("f is not set.") + end + ptr = Core.getfield(fp,:f) + return unsafe_wrap(Vector{ComplexF64},ptr,fp.M) # get function values from C memory and convert to Julia type + elseif v == :c + if !isdefined(fp,:c) + error("c is not set.") + end + c_temp = Core.getfield(fp,:c) + return c_temp #unsafe_wrap(Vector{Float64},ptr,D) + else + return Core.getfield(fp,v) + end +end # Base.getproperty + +function trafo(fp::fastsumplan{D}) where {D} + if fp.finalized + error("Plan already finalized.") + end + if !isdefined(fp, :x) + error("x has not been set.") + end + if !isdefined(fp, :y) + error("y has not been set.") + end + if !isdefined(fp, :alpha) + error("alpha has not been set.") + end + ptr = ccall(("jfastsum_trafo", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},), fp.plan) + Core.setfield!(fp,:f,ptr) +end #trafo + +function trafo_exact(fp::fastsumplan{D}) where {D} + if fp.finalized + error("Plan already finalized.") + end + if !isdefined(fp, :x) + error("x has not been set.") + end + if !isdefined(fp, :y) + error("y has not been set.") + end + if !isdefined(fp, :alpha) + error("alpha has not been set.") + end + ptr = ccall(("jfastsum_exact", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},), fp.plan) + Core.setfield!(fp,:f,ptr) +end #trafo +end #module diff --git a/julia/fastsum/libfastsumjulia.c b/julia/fastsum/libfastsumjulia.c new file mode 100644 index 00000000..8cae9ee9 --- /dev/null +++ b/julia/fastsum/libfastsumjulia.c @@ -0,0 +1,112 @@ +#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 + +void jfastsum_init(fastsum_plan* fp,int D,int N,int M,char* s,R* c,int n,int m,int p,float eps_I,float eps_B ){ + 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 + { + s = "multiquadric"; + kernel = multiquadric; + } + + fastsum_init_guru(fp,D,N,M,kernel,c,0,n,m,p,eps_I,eps_B); +} + +double* jfastsum_set_x(fastsum_plan* fp, double* x){ + int N = fp -> N_total; + int d = fp->d; + int k,l; + for (k=0; k x[k*d+l] = x[k*d+l]; + return fp->x; +} + +double* jfastsum_set_y(fastsum_plan* fp, double* y){ + int M = fp -> M_total; + int d = fp -> d; + int k,l; + for (k=0; k y[k*d+l] = y[k*d+l]; + return fp->y; +} + +double _Complex* jfastsum_set_alpha(fastsum_plan* fp, double _Complex* alpha){ + int N = fp -> N_total; + int k; + for (k=0; k alpha[k] = alpha[k]; + return fp->alpha; +} + + +double _Complex* jfastsum_trafo(fastsum_plan* fp){ + fastsum_precompute(fp); + fastsum_trafo(fp); + return fp -> f; +} + +double _Complex* jfastsum_exact(fastsum_plan* fp){ + fastsum_exact(fp); + return fp ->f; +} + +void jfastsum_finalize(fastsum_plan* fp){ + fastsum_finalize(fp); + return; +} diff --git a/julia/fastsum/simple_test_2d.jl b/julia/fastsum/simple_test_2d.jl new file mode 100644 index 00000000..547add90 --- /dev/null +++ b/julia/fastsum/simple_test_2d.jl @@ -0,0 +1,59 @@ +push!(LOAD_PATH, pwd()) +using fastsum +using LinearAlgebra + +println("2d fastsum test") + +# set the parameters: +N = 100; +M = 100; +kernel = "multiquadric"; +c = (1/sqrt(N),3.5); +m = 4; +p = 7; +n = 100*128; +eps_I = p/n; +eps_B = 1/32; + +# create a Plan-Object in Julia +pt = fastsumplan(N,M,n,m,p,kernel,c,eps_I,eps_B); + +# 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; +xhat = zeros(2,N); +xhat[1,:]=r.*cos.(phi); +xhat[2,:]=r.*sin.(phi); +pt.x = xhat; + +# generate coefficients alpha_k +alpha_temp = [1/(1+k) for k in 0:N-1] +im*[1/(1+k^2) for k in 0:N-1]; + +pt.alpha = alpha_temp; + +# 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_temp=zeros(2,M); +y_temp[1,:] = r.*cos.(phi) +y_temp[2,:] = r.*sin.(phi); +pt.y = y_temp; +# Start the Transformation +fastsum.trafo(pt); + +f1 = pt.f; +f_alg = zeros(N)+im*zeros(N); +for i=1:M + f_alg[i] = f1[i]; +end + +fastsum.trafo_exact(pt); +f2 = pt.f_exact; +error_vector = f_alg-f2; + +E_2 = norm(error_vector)/norm(f1) +E_infty = norm(error_vector, Inf)/norm(pt.alpha,1) +println( "E_2 error:" ) +println( E_2 ) +println( "E_infty error:" ) +println( E_infty ); From 16a09523c643dbaf6de4b946c251fda06e45238e Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Wed, 3 Jul 2019 15:55:13 +0200 Subject: [PATCH 002/167] update configure, Makefile --- configure.ac | 1 + julia/Makefile.am | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 22086a54..73cea4ec 100644 --- a/configure.ac +++ b/configure.ac @@ -654,6 +654,7 @@ AC_CONFIG_FILES(Makefile \ matlab/tests/nfsftUnitTests.m \ julia/Makefile \ julia/nfft/Makefile \ + julia/fastsum/Makefile \ doxygen/Makefile \ support/Makefile) # temproarily removed: diff --git a/julia/Makefile.am b/julia/Makefile.am index b722e9e5..0cf74d67 100644 --- a/julia/Makefile.am +++ b/julia/Makefile.am @@ -1 +1 @@ -SUBDIRS = nfft +SUBDIRS = nfft fastsum From 9b0c2916ea0889a2cc2de1ccd62d39e189047c8b Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Tue, 16 Jul 2019 17:09:24 +0200 Subject: [PATCH 003/167] adds NFST Julia interface #86 --- configure.ac | 1 + julia/Makefile.am | 9 +- julia/nfst/Makefile.am | 33 ++++ julia/nfst/NFST.jl | 343 +++++++++++++++++++++++++++++++++++ julia/nfst/libnfstjulia.c | 82 +++++++++ julia/nfst/simple_test_1d.jl | 75 ++++++++ julia/nfst/simple_test_2d.jl | 86 +++++++++ 7 files changed, 628 insertions(+), 1 deletion(-) create mode 100644 julia/nfst/Makefile.am create mode 100644 julia/nfst/NFST.jl create mode 100644 julia/nfst/libnfstjulia.c create mode 100644 julia/nfst/simple_test_1d.jl create mode 100644 julia/nfst/simple_test_2d.jl diff --git a/configure.ac b/configure.ac index cdcaff82..cedead04 100644 --- a/configure.ac +++ b/configure.ac @@ -663,6 +663,7 @@ AC_CONFIG_FILES(Makefile \ julia/Makefile \ julia/nfft/Makefile \ julia/nfct/Makefile \ + julia/nfst/Makefile \ doxygen/Makefile \ support/Makefile) # temproarily removed: diff --git a/julia/Makefile.am b/julia/Makefile.am index 4b63265b..b4ea1c04 100644 --- a/julia/Makefile.am +++ b/julia/Makefile.am @@ -4,4 +4,11 @@ else DIR_NFCT= endif -SUBDIRS = nfft $(DIR_NFCT) +if HAVE_NFST + DIR_NFST=nfst +else + DIR_NFST= +endif + + +SUBDIRS = nfft $(DIR_NFCT) $(DIR_NFST) diff --git a/julia/nfst/Makefile.am b/julia/nfst/Makefile.am new file mode 100644 index 00000000..679e1100 --- /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 -module -shared -avoid-version @fftw3_LDFLAGS@ + +EXTRA_DIST = NFST.jl simple_test_1d.jl simple_test_2d.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..42930c57 --- /dev/null +++ b/julia/nfst/NFST.jl @@ -0,0 +1,343 @@ +module NFST + +export NFSTplan, nfst_plan + +ending = ".so" + +if Sys.iswindows() + ending = ".dll" +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} + @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." ) + 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 + + 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 Mxd + 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 Mxd.") + 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([j for j in 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." + 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([j for j in 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 + +# 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..adf28896 --- /dev/null +++ b/julia/nfst/simple_test_2d.jl @@ -0,0 +1,86 @@ +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([j for j in N].-1) ) + +#set Fourier coefficients +p.fhat = fhat + +#transform +println( "trafo time:" ) +@time NFST.trafo(p) + +#get function values +f2 = p.f + +#indices +I = Vector{Vector{Int64}}(undef,prod(N)) +freq = 1 + +for i = 1:N[1]-1 + for j = 1:N[2]-1 + I[freq] = [i,j] + global freq += 1 + end +end + +#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([k for k in 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 From ed2415150cef8911e05cf5a84a71ea1a658938ac Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Tue, 16 Jul 2019 17:11:48 +0200 Subject: [PATCH 004/167] fixes output in nfst simple test --- examples/nfst/simple_test.c.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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"); From 906b4bbe50061039abd9c75c7463ce3bf92d5050 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Tue, 16 Jul 2019 17:34:12 +0200 Subject: [PATCH 005/167] Update Travis and Windows script for Julia-NFCT --- .travis.yml | 2 +- windows-build-dll.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b2624617..91146c31 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,7 +63,7 @@ script: cat /proc/cpuinfo; ./bootstrap.sh && ./configure --with-window=$WINDOW $ $(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; + && 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 nf*t; do cd julia/$DIR; for NAME in simple_test*.jl; do ./../../julia-1.1.1/bin/julia "$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 diff --git a/windows-build-dll.sh b/windows-build-dll.sh index 2c3c693a..fe81e651 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -219,7 +219,7 @@ rm -f "$HOMEDIR/$DLLDIR".zip # Julia interface -for LIB in nfft nfct +for LIB in nf*t 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 From bd4332f9eb2c5356f85eea39528470cac4f440e1 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Tue, 16 Jul 2019 18:05:14 +0200 Subject: [PATCH 006/167] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 91146c31..e9e45c0a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,7 +63,7 @@ script: cat /proc/cpuinfo; ./bootstrap.sh && ./configure --with-window=$WINDOW $ $(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 nf*t; do cd julia/$DIR; for NAME in simple_test*.jl; do ./../../julia-1.1.1/bin/julia "$NAME"; done; cd ../..; done; fi; + && 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 julia/nf*t; do cd $DIR; for NAME in simple_test*.jl; do ./../../julia-1.1.1/bin/julia "$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 From bb3b8e80fd99d7a9107c521b9c70fbc71f121f99 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 17 Jul 2019 18:21:34 +0200 Subject: [PATCH 007/167] Fix documentation of NFSFT and Julia-Readme --- julia/Makefile.am | 2 ++ julia/nfft/Makefile.am | 2 +- support/nfsft.dox | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/julia/Makefile.am b/julia/Makefile.am index b4ea1c04..a735c6ac 100644 --- a/julia/Makefile.am +++ b/julia/Makefile.am @@ -12,3 +12,5 @@ endif SUBDIRS = nfft $(DIR_NFCT) $(DIR_NFST) + +EXTRA_DIST = README.md diff --git a/julia/nfft/Makefile.am b/julia/nfft/Makefile.am index 3be3a4eb..33b43253 100644 --- a/julia/nfft/Makefile.am +++ b/julia/nfft/Makefile.am @@ -17,7 +17,7 @@ libnfftjulia_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_julia.la @fftw3_L libnfftjulia_la_LDFLAGS = -no-undefined -module -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/support/nfsft.dox b/support/nfsft.dox index 435b6c7d..f8efc4e2 100644 --- a/support/nfsft.dox +++ b/support/nfsft.dox @@ -563,7 +563,7 @@ * \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] From 1b24c770d0d5adb9232b31ae2d618b8fe83c442e Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 17 Jul 2019 18:21:53 +0200 Subject: [PATCH 008/167] Update Changelog --- ChangeLog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ChangeLog b/ChangeLog index 512c2c2e..faf5e65e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,18 @@ This file contains the version history for NFFT 3.x.x. +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 + - #88 Inverse NFFT via frame approach. + - #87 FSFT: Spherical Fourier transform with equidistant nodes. + - #86 Add Julia Interface for NFCT, NFST. + Changes in version 3.5.0: Bugfixes From b347bb2b5e6ce59703e05d61d01e8ce19bb2b5bd Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 18 Jul 2019 09:53:07 +0200 Subject: [PATCH 009/167] SO-Version 4.1.0 because of new NFSFT_EQUISPACED --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index cedead04..d63ce6af 100644 --- a/configure.ac +++ b/configure.ac @@ -79,7 +79,7 @@ LT_INIT([win32-dll]) AC_SUBST([LIBTOOL_DEPS]) # version information for shared library -SHARED_VERSION_INFO="4:0:0" +SHARED_VERSION_INFO="4:1:0" # substitute SHARED_VERSION_INFO in generated Makefiles AC_SUBST(SHARED_VERSION_INFO) From b7956c5c88692e993efd596dc30b6922b8b098cd Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 18 Jul 2019 16:36:41 +0200 Subject: [PATCH 010/167] fix error in windows build script for julia --- windows-build-dll.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/windows-build-dll.sh b/windows-build-dll.sh index fe81e651..e62a9b17 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -219,13 +219,15 @@ rm -f "$HOMEDIR/$DLLDIR".zip # Julia interface +cd julia for LIB in nf*t do - cd julia/"$LIB" + cd "$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 cp .libs/lib"$LIB"julia.dll lib"$LIB"julia.dll - cd ../.. + cd .. done +cd "$NFFTBUILDDIR" JULIADIR=nfft-"$NFFTVERSION"-julia-w$ARCH$OMPSUFFIX mkdir "$JULIADIR" From c71e0b399e6559ce438387ee83137086445d91d4 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Thu, 18 Jul 2019 21:34:40 +0200 Subject: [PATCH 011/167] #101 linux build script: added Julia interface (with static FFTW3), removed [! lines from readme, removed owner/group information from tar; added fix to tests/Makefile.am to prevent error for make check if OpenMP is enabled and CUnit is not available --- linux-build-mex.sh | 80 +++++++++++++++++++++++++++++++++++++++++----- tests/Makefile.am | 4 +++ 2 files changed, 76 insertions(+), 8 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index eb7eba54..9cee496a 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -15,10 +15,23 @@ # Example call: # ./linux-build-mex.sh --matlab=/path/to/matlab # +# +# For compiling with recent Octave version, one can use flatpak package org.octave.Octave. +# Then, the following RSYNC variable should be used. +RSYNC="flatpak-spawn --host rsync" +# Otherwise, the RSYNC variable should be set to +#RSYNC=rsync +# +# Possible flatpak call: +# flatpak --command="bash" run org.octave.Octave +# bash linux-build-mex.sh -o /app # Any subsequent commands which fail will cause the shell script to exit immediately set -ex +FFTWVERSION=3.3.8 +GCCARCH=core2 + # default values (to be overwritten if respective parameters are set) OCTAVEDIR=/usr @@ -51,10 +64,34 @@ cd "$HOMEDIR" GCCVERSION=$(gcc -dumpversion) OCTAVEVERSION=`"$OCTAVEDIR"/bin/octave-cli --eval "fprintf('OCTAVE_VERSION=%s\n', version); exit;" | grep OCTAVE_VERSION | sed 's/OCTAVE_VERSION=//'` + +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 + ../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 + # 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 @@ -67,26 +104,53 @@ if [ $OMPYN = 1 ]; then OMPLIBS="-fopenmp -static-libgcc" THREADSSUFFIX="_threads" OMPSUFFIX="-openmp" + FFTWLIBSTATIC="$FFTWDIR/build/threads/.libs/libfftw3_threads.a $FFTWDIR/build/.libs/libfftw3.a" else NFFTBUILDDIR="$HOMEDIR/build" OMPFLAG="" OMPLIBS="" THREADSSUFFIX="" OMPSUFFIX="" + FFTWLIBSTATIC="$FFTWDIR/build/.libs/libfftw3.a" 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" +"$NFFTDIR/configure" --enable-all $OMPFLAG --with-octave="$OCTAVEDIR" --with-gcc-arch="$GCCARCH" --disable-static --enable-shared make -make check +#make check NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) -DIR=nfft-$NFFTVERSION-mexa64$OMPSUFFIX + +# Create archive for Julia interface +cd julia +for LIB in nf*t +do + cd "$LIB" + gcc -shared -fPIC -DPIC .libs/lib"$LIB"julia.o -Wl,--whole-archive ../../.libs/libnfft3_julia.a $FFTWLIBSTATIC -Wl,--no-whole-archive $OMPLIBS -lm -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='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' --exclude='*.c' 'julia/' "$JULIADIR" +$RSYNC -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' "$NFFTDIR/julia/" "$JULIADIR" +echo 'This archive contains the Julia interface of NFFT '$NFFTVERSION' +compiled for '$ARCH' Linux using GCC '$GCCVERSION' and FFTW '$FFTWVERSION'. +' "$READMECONTENT" "$FFTWREADME" > "$JULIADIR"/readme.txt +tar czf ../"$JULIADIR".tar.gz --owner=0 --group=0 "$JULIADIR" +# End of Julia interface + # Create Matlab/Octave release +DIR=nfft-$NFFTVERSION-mexa64$OMPSUFFIX + for SUBDIR in nfft nfsft nfsoft nnfft fastsum nfct nfst infft1d nfsft/@f_hat fpt do mkdir -p "$DIR"/$SUBDIR @@ -100,7 +164,7 @@ 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 + "$NFFTDIR/configure" --enable-all $OMPFLAG --with-matlab="$MATLABDIR" --with-gcc-arch="$GCCARCH" --disable-static --enable-shared make make check fi @@ -113,14 +177,14 @@ 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'. +echo 'This archive contains the Matlab and Octave interface of NFFT '$NFFTVERSION' +compiled for '$ARCH' Linux using GCC '$GCCVERSION' and Matlab '$MATLABVERSION' and Octave '$OCTAVEVERSION'. ' "$READMECONTENT" > "$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 fi -tar czf ../"$DIR".tar.gz "$DIR" +tar czf ../"$DIR".tar.gz --owner=0 --group=0 "$DIR" done 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 From 94e1d4b21b26e519e2003b6c20d479fc4311b780 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Fri, 19 Jul 2019 15:40:48 +0200 Subject: [PATCH 012/167] Windows build script: Check Matlab and Julia files --- windows-build-dll.sh | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/windows-build-dll.sh b/windows-build-dll.sh index e62a9b17..a208f036 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -8,7 +8,7 @@ # Example call: # ./nfft-build-dll.sh --fftw=3.3.8 --octave=5.1.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. @@ -146,9 +146,19 @@ 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/x64/1.1/julia-1.1.1-win64.exe + 7z x *.exe + 7z x julia-installer.exe +fi + # Build NFFT READMECONTENT=" -$(sed '/Directory structure/Q' $NFFTDIR/README) +$(sed -e '/^\[!/d' -e '/Directory structure/Q' $NFFTDIR/README) " FFTWREADME=' FFTW @@ -184,7 +194,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-applications --disable-examples make make check @@ -227,12 +237,14 @@ do cp .libs/lib"$LIB"julia.dll lib"$LIB"julia.dll cd .. done -cd "$NFFTBUILDDIR" +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='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' --exclude='*.c' 'julia/' "$JULIADIR" +rsync -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' "$NFFTDIR/julia/" "$JULIADIR" +for DIR in $JULIADIR/nf*t; do cd $DIR; for NAME in simple_test*.jl; do PATH=/c/Windows/System32 $HOMEDIR/julia/bin/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'-bit Windows @@ -246,7 +258,7 @@ 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;" + "$MATLABDIR"/bin/matlab -wait -nodesktop -nosplash -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/)//'`" fi MATLABSTRING=" and Matlab $MATLABVERSION" @@ -274,7 +286,10 @@ for SUBDIR in nfft nfsft/@f_hat nfsft nfsoft nnfft fastsum nfct nfst infft1d fpt 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" + "$OCTAVEDIR"/bin/octave-cli.exe --no-window-system --eval="cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end" + if [ -f "$MATLABDIR"/bin/matlab.exe ]; then + PATH=/c/Windows/System32 "$MATLABDIR"/bin/matlab.exe -wait -nodesktop -nosplash -r "cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end; exit" + fi done cd "$NFFTBUILDDIR" @@ -294,8 +309,9 @@ 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 From 99faff72ec27ec85f7d54d8f2db74edcfee6b6e6 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Fri, 19 Jul 2019 18:44:05 +0200 Subject: [PATCH 013/167] #101 build julia interface for macOS --- linux-build-mex.sh | 2 +- macos-build-mex.sh | 64 +++++++++++++++++++++++++++++++--------------- 2 files changed, 45 insertions(+), 21 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index 9cee496a..c53dae77 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -122,7 +122,7 @@ LDFLAGS="-L$FFTWDIR/build/threads/.libs -L$FFTWDIR/build/.libs" CPPFLAGS="-I$FFTWDIR/api" "$NFFTDIR/configure" --enable-all $OMPFLAG --with-octave="$OCTAVEDIR" --with-gcc-arch="$GCCARCH" --disable-static --enable-shared make -#make check +make check NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) diff --git a/macos-build-mex.sh b/macos-build-mex.sh index 20a0c378..76ec896a 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -1,10 +1,10 @@ #!/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 Mojave with MacPorts. # # At least the following packages are required: # getopt, gcc8, cunit, octave, gsed @@ -24,8 +24,9 @@ # Any subsequent commands which fail will cause the shell script to exit immediately set -ex +GCCARCH=core2 FFTWDIR=/opt/local -GCC=gcc-mp-8 +GCC=gcc-mp-9 # default values (to be overwritten if respective parameters are set) OCTAVEDIR=/opt/local @@ -67,8 +68,14 @@ 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' cd "$NFFTDIR" make distclean || true @@ -95,21 +102,44 @@ 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=core2 --disable-static --enable-shared --disable-examples --disable-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 -o .libs/lib"$LIB"julia.so -bundle .libs/lib"$LIB"julia.o -Wl,-force_load,../../.libs/libnfft3_julia.a $FFTW_LINK_COMMAND -lm -O3 -malign-double -march=core2 -mtune=$GCCARCH -arch x86_64 $OMPLIBS + cd .. +done +cd "$NFFTBUILDDIR" + +ARCH=$(uname -m) +JULIADIR=nfft-"$NFFTVERSION"-julia-macos_$ARCH$OMPSUFFIX +mkdir "$JULIADIR" +rsync -rLt --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' --exclude='*.c' 'julia/' "$JULIADIR" +rsync -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' "$NFFTDIR/julia/" "$JULIADIR" +echo 'This archive contains the Julia interface of NFFT '$NFFTVERSION' +compiled for '$ARCH' macOS using GCC '$GCCVERSION' and FFTW '$FFTWVERSION'. +' "$READMECONTENT" "$FFTWREADME" > "$JULIADIR"/readme.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=core2 -mtune=$GCCARCH -arch x86_64 $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 @@ -125,7 +155,7 @@ if [ -n "$MATLABDIR" ]; then fi 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=core2 --disable-static --enable-shared --disable-examples --disable-applications make make check for LIB in nfft nfsft nfsoft nnfft fastsum nfct nfst fpt @@ -144,22 +174,16 @@ 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' +echo 'This archive contains the Matlab and Octave interface of NFFT '$NFFTVERSION' +compiled for '$ARCH' macOS using GCC '$GCCVERSION' and Matlab '$MATLABVERSION' and Octave '$OCTAVEVERSION' and FFTW '$FFTWVERSION'. -' "$READMECONTENT" > "$DIR"/readme-matlab.txt +' "$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 +for '$ARCH' macOS using GCC '$GCCVERSION' and Octave '$OCTAVEVERSION' and FFTW '$FFTWVERSION'. +' "$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 From 2bcb97a21857163a5955011a95fd14ae772a5642 Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Mon, 22 Jul 2019 14:34:16 +0200 Subject: [PATCH 014/167] adds small changes to fastsum interface --- julia/fastsum/fastsum.jl | 57 ++++++++++++++++----------------- julia/fastsum/simple_test_2d.jl | 29 ++++++++--------- 2 files changed, 40 insertions(+), 46 deletions(-) diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl index 5882e9fc..707a02f1 100644 --- a/julia/fastsum/fastsum.jl +++ b/julia/fastsum/fastsum.jl @@ -6,25 +6,22 @@ ending = ".so" if Sys.iswindows() ending = ".dll" -elseif Sys.isapple() - ending = ".dylib" end const lib_path = string( @__DIR__, "/libfastsumjulia", ending ) -#dummy-struct for C mutable struct fastsum_plan - end - +end -mutable struct fastsumplan{D} +mutable struct fastsumplan + d::Int32 N::Int32 # number of source nodes M::Int32 # number of target nodes n::Int32 # expansion degree m::Int32 # cut-off parameter p::Int32 # degree of smoothness kernel::String # name of kernel - c::NTuple{D,Float64} # kernel parameters + c::Vector{Float64} # kernel parameters eps_I::Float64 # inner boundary eps_B::Float64 # outer boundary init_done::Bool # bool for plan init @@ -34,48 +31,48 @@ mutable struct fastsumplan{D} alpha::Ref{ComplexF64} # source coefficients f::Ref{ComplexF64} # target evaluations plan::Ref{fastsum_plan} # plan (C pointer) - function fastsumplan{D}(N::Int32,M::Int32,n::Int32,m::Int32,p::Int32,kernel::String,c::NTuple{D,Float64},eps_I::Float64,eps_B::Float64) where {D} - # create plan object - new(N,M,n,m,p,kernel,c,eps_I,eps_B,false,false) + function fastsumplan( d::Int32, N::Int32, M::Int32, n::Int32, m::Int32, p::Int32, kernel::String, c::Vector{Float64}, eps_I::Float64, eps_B::Float64 ) + new( d,N,M,n,m,p,kernel,c,eps_I,eps_B,false,false ) end - end #struct fastsumplan -function fastsumplan(N::Integer,M::Integer,n::Integer,m::Integer,p::Integer,kernel::String,c::NTuple{D,Float64},eps_I::Float64,eps_B::Float64) where{D} - +function fastsumplan( d::Integer, N::Integer, M::Integer, n::Integer, m::Integer, p::Integer, kernel::String, c::Float64, eps_I::Float64, eps_B::Float64 ) 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 = rand(1) + cv[1] = c - fastsumplan{D}(Int32(N),Int32(M),Int32(n),Int32(m),Int32(p),kernel,c,Float64(eps_I),Float64(eps_B)) + fastsumplan( Int32(d), Int32(N), Int32(M), Int32(n), Int32(m), Int32(p), kernel, cv, eps_I, eps_B ) end #constructor -function fastsum_init(fp::fastsumplan{D}) where {D} +function fastsum_init(fp::fastsumplan) ptr = ccall(("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, ()) - Core.setfield!(fp, :plan, ptr) - # c noch in pointer umwandeln - c = collect(fp.c) - ccall(("jfastsum_init",lib_path),Nothing,(Ref{fastsum_plan},Int32,Int32,Int32,Cstring,Ref{Float64},Int32,Int32,Int32,Float64,Float64),ptr,D,fp.N,fp.M,fp.kernel,c,fp.n,fp.m,fp.p,fp.eps_I,fp.eps_B) - Core.setfield!(fp,:init_done, true) - finalizer(finalize_plan, fp) + ccall( ("jfastsum_init",lib_path),Nothing,(Ref{fastsum_plan},Int32,Int32,Int32,Cstring,Ref{Float64},Int32,Int32,Int32,Float64,Float64),ptr,fp.d,fp.N,fp.M,fp.kernel,fp.c,fp.n,fp.m,fp.p,fp.eps_I,fp.eps_B) + + Core.setfield!( fp, :init_done, true ) + finalizer( finalize_plan, fp ) end #fastsum_init -function finalize_plan(fp::fastsumplan{D}) where{D} +function finalize_plan(fp::fastsumplan) if !fp.init_done error("Plan not initialized.") end @@ -86,7 +83,7 @@ function finalize_plan(fp::fastsumplan{D}) where{D} end end #finalize_plan -function Base.setproperty!(fp::fastsumplan{D},v::Symbol,val) where {D} +function Base.setproperty!(fp::fastsumplan,v::Symbol,val) if !fp.init_done fastsum_init(fp) end @@ -97,7 +94,7 @@ function Base.setproperty!(fp::fastsumplan{D},v::Symbol,val) where {D} # edit source nodes if v == :x - if D==1 + if fp.d==1 if typeof(val) != Vector{Float64} error("x has to be a Float64 vector.") end @@ -108,7 +105,7 @@ function Base.setproperty!(fp::fastsumplan{D},v::Symbol,val) where {D} if typeof(val) != Array{Float64, 2} error("x has to be a Float64 matrix.") end - if size(val)[1] != D || size(val)[2] != fp.N + if size(val)[1] != fp.d || size(val)[2] != fp.N error("x has to be a Float64 matrix of size N.") end end @@ -117,7 +114,7 @@ function Base.setproperty!(fp::fastsumplan{D},v::Symbol,val) where {D} # edit target nodes elseif v == :y - if D==1 + if fp.d==1 if typeof(val) != Vector{Float64} error("y has to be a Float64 vector.") end @@ -128,7 +125,7 @@ function Base.setproperty!(fp::fastsumplan{D},v::Symbol,val) where {D} if typeof(val) != Array{Float64, 2} error("y has to be a Float64 matrix.") end - if size(val)[1] != D || size(val)[2] != fp.M + if size(val)[1] != fp.d || size(val)[2] != fp.M error("y has to be a Float64 matrix of size M.") end end @@ -174,7 +171,7 @@ function Base.setproperty!(fp::fastsumplan{D},v::Symbol,val) where {D} end # Base.setproperty! # overwrite dot notation for plan struct in order to use C memory -function Base.getproperty(fp::fastsumplan{D},v::Symbol) where {D} +function Base.getproperty(fp::fastsumplan,v::Symbol) if v == :x if !isdefined(fp,:x) error("x is not set.") @@ -221,7 +218,7 @@ function Base.getproperty(fp::fastsumplan{D},v::Symbol) where {D} end end # Base.getproperty -function trafo(fp::fastsumplan{D}) where {D} +function trafo(fp::fastsumplan) if fp.finalized error("Plan already finalized.") end @@ -238,7 +235,7 @@ function trafo(fp::fastsumplan{D}) where {D} Core.setfield!(fp,:f,ptr) end #trafo -function trafo_exact(fp::fastsumplan{D}) where {D} +function trafo_exact(fp::fastsumplan) if fp.finalized error("Plan already finalized.") end diff --git a/julia/fastsum/simple_test_2d.jl b/julia/fastsum/simple_test_2d.jl index 547add90..0d2d35c5 100644 --- a/julia/fastsum/simple_test_2d.jl +++ b/julia/fastsum/simple_test_2d.jl @@ -5,26 +5,23 @@ using LinearAlgebra println("2d fastsum test") # set the parameters: -N = 100; -M = 100; +d = 2 +N = 20000; +M = 20000; kernel = "multiquadric"; -c = (1/sqrt(N),3.5); -m = 4; -p = 7; -n = 100*128; -eps_I = p/n; -eps_B = 1/32; +c = 1/sqrt(N); +p = 6; +m = p; +nn = 256; +eps_I = p/nn; +eps_B = max(1/16,p/nn); # create a Plan-Object in Julia -pt = fastsumplan(N,M,n,m,p,kernel,c,eps_I,eps_B); +pt = fastsumplan(d,N,M,nn,m,p,kernel,c,eps_I,eps_B); # 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; -xhat = zeros(2,N); -xhat[1,:]=r.*cos.(phi); -xhat[2,:]=r.*sin.(phi); -pt.x = xhat; +X = zeros(Float64, d, N) + # generate coefficients alpha_k alpha_temp = [1/(1+k) for k in 0:N-1] +im*[1/(1+k^2) for k in 0:N-1]; @@ -48,7 +45,7 @@ for i=1:M end fastsum.trafo_exact(pt); -f2 = pt.f_exact; +f2 = pt.f; error_vector = f_alg-f2; E_2 = norm(error_vector)/norm(f1) From 4e55ff305cd43fb18f60cbb51f3c89a1739c1bc9 Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Mon, 22 Jul 2019 14:49:56 +0200 Subject: [PATCH 015/167] adds 3d test, corrects index set generation in 2d test --- julia/nfct/Makefile.am | 2 +- julia/nfct/simple_test_2d.jl | 11 +---- julia/nfct/simple_test_3d.jl | 79 ++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 10 deletions(-) create mode 100644 julia/nfct/simple_test_3d.jl diff --git a/julia/nfct/Makefile.am b/julia/nfct/Makefile.am index 6e8e49be..19093d73 100644 --- a/julia/nfct/Makefile.am +++ b/julia/nfct/Makefile.am @@ -17,7 +17,7 @@ libnfctjulia_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_julia.la @fftw3_L libnfctjulia_la_LDFLAGS = -no-undefined -module -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/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 From 39ab0c80b5ce10634863cff63f7502c5f7dbab0d Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Mon, 22 Jul 2019 15:04:54 +0200 Subject: [PATCH 016/167] adds NFST 3d test, minor corrections --- julia/nfst/Makefile.am | 2 +- julia/nfst/NFST.jl | 4 +- julia/nfst/simple_test_2d.jl | 15 ++----- julia/nfst/simple_test_3d.jl | 79 ++++++++++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+), 14 deletions(-) create mode 100644 julia/nfst/simple_test_3d.jl diff --git a/julia/nfst/Makefile.am b/julia/nfst/Makefile.am index 679e1100..5cfc9efc 100644 --- a/julia/nfst/Makefile.am +++ b/julia/nfst/Makefile.am @@ -17,7 +17,7 @@ libnfstjulia_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_julia.la @fftw3_L libnfstjulia_la_LDFLAGS = -no-undefined -module -shared -avoid-version @fftw3_LDFLAGS@ -EXTRA_DIST = NFST.jl simple_test_1d.jl simple_test_2d.jl +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|"` ; \ diff --git a/julia/nfst/NFST.jl b/julia/nfst/NFST.jl index 42930c57..43aa4919 100644 --- a/julia/nfst/NFST.jl +++ b/julia/nfst/NFST.jl @@ -209,7 +209,7 @@ function Base.setproperty!(p::NFSTplan{D},v::Symbol,val) where {D} if typeof(val) != Array{Float64,1} error("fhat has to be a Float64 vector.") end - l = prod([j for j in p.N].-1) + 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 @@ -266,7 +266,7 @@ function Base.getproperty(p::NFSTplan{D},v::Symbol) where {D} error("fhat is not set.") end ptr = Core.getfield(p,:fhat) - return unsafe_wrap(Vector{Float64},ptr,prod([j for j in p.N].-1)) # get Fourier coefficients from C memory and convert to Julia type + 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 diff --git a/julia/nfst/simple_test_2d.jl b/julia/nfst/simple_test_2d.jl index adf28896..bd94e733 100644 --- a/julia/nfst/simple_test_2d.jl +++ b/julia/nfst/simple_test_2d.jl @@ -22,7 +22,7 @@ A = 0.5 .* rand( 2, M ) p.x = A #generate random Fourier coefficients -fhat = rand( prod([j for j in N].-1) ) +fhat = rand( prod(collect(N).-1) ) #set Fourier coefficients p.fhat = fhat @@ -35,18 +35,11 @@ println( "trafo time:" ) f2 = p.f #indices -I = Vector{Vector{Int64}}(undef,prod(N)) -freq = 1 - -for i = 1:N[1]-1 - for j = 1:N[2]-1 - I[freq] = [i,j] - global freq += 1 - end -end +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([k for k in N].-1) ] +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 diff --git a/julia/nfst/simple_test_3d.jl b/julia/nfst/simple_test_3d.jl new file mode 100644 index 00000000..e6fde604 --- /dev/null +++ b/julia/nfst/simple_test_3d.jl @@ -0,0 +1,79 @@ +push!(LOAD_PATH, pwd()) +using NFST +using LinearAlgebra + +println( "2d 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 From 4356b7de833fd384784b12022356f1e1fb00fbd0 Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Tue, 23 Jul 2019 16:41:23 +0200 Subject: [PATCH 017/167] adds changes to fastsum interface --- julia/fastsum/fastsum.jl | 215 ++++++++++++++++++-------------- julia/fastsum/simple_test.jl | 51 ++++++++ julia/fastsum/simple_test_2d.jl | 56 --------- 3 files changed, 171 insertions(+), 151 deletions(-) create mode 100644 julia/fastsum/simple_test.jl delete mode 100644 julia/fastsum/simple_test_2d.jl diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl index 707a02f1..b1c74449 100644 --- a/julia/fastsum/fastsum.jl +++ b/julia/fastsum/fastsum.jl @@ -1,7 +1,5 @@ module fastsum -export fastsumplan, fastsum_plan - ending = ".so" if Sys.iswindows() @@ -13,17 +11,17 @@ const lib_path = string( @__DIR__, "/libfastsumjulia", ending ) mutable struct fastsum_plan end -mutable struct fastsumplan - d::Int32 - N::Int32 # number of source nodes - M::Int32 # number of target nodes - n::Int32 # expansion degree - m::Int32 # cut-off parameter - p::Int32 # degree of smoothness +mutable struct Plan + d::Integer # dimension + N::Integer # number of source nodes + M::Integer # number of target nodes + n::Integer # expansion degree + m::Integer # cut-off parameter + p::Integer # degree of smoothness kernel::String # name of kernel - c::Vector{Float64} # kernel parameters - eps_I::Float64 # inner boundary - eps_B::Float64 # outer boundary + c::Vector{<:Real} # kernel parameters + eps_I::Real # inner boundary + eps_B::Real # outer boundary init_done::Bool # bool for plan init finalized::Bool # bool for finalizer x::Ref{Float64} # source nodes @@ -31,12 +29,12 @@ mutable struct fastsumplan alpha::Ref{ComplexF64} # source coefficients f::Ref{ComplexF64} # target evaluations plan::Ref{fastsum_plan} # plan (C pointer) - function fastsumplan( d::Int32, N::Int32, M::Int32, n::Int32, m::Int32, p::Int32, kernel::String, c::Vector{Float64}, eps_I::Float64, eps_B::Float64 ) - new( d,N,M,n,m,p,kernel,c,eps_I,eps_B,false,false ) + function Plan( d::Integer, N::Integer, M::Integer, n::Integer, m::Integer, p::Integer, kernel::String, c::Vector{<:Real}, eps_I::Real, eps_B::Real ) + new( d, N, M, n, m, p, kernel, c, eps_I, eps_B, false, false ) end end #struct fastsumplan -function fastsumplan( d::Integer, N::Integer, M::Integer, n::Integer, m::Integer, p::Integer, kernel::String, c::Float64, eps_I::Float64, eps_B::Float64 ) +function Plan( d::Integer, N::Integer, M::Integer, n::Integer, m::Integer, p::Integer, kernel::String, c::Real, eps_I::Real, eps_B::Real ) if N <= 0 error("N has to be a positive Integer.") @@ -57,92 +55,103 @@ function fastsumplan( d::Integer, N::Integer, M::Integer, n::Integer, m::Integer cv = rand(1) cv[1] = c - fastsumplan( Int32(d), Int32(N), Int32(M), Int32(n), Int32(m), Int32(p), kernel, cv, eps_I, eps_B ) + Plan( d, N, M, n, m, p, kernel, cv, eps_I, eps_B ) end #constructor -function fastsum_init(fp::fastsumplan) +function fastsum_init( p::Plan ) + + ptr = ccall( ("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, () ) + Core.setfield!( p, :plan, ptr ) + + c = Vector{Float64}(p.c) - ptr = ccall(("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, ()) - Core.setfield!(fp, :plan, ptr) + ccall( ("jfastsum_init",lib_path), Nothing, (Ref{fastsum_plan}, Int32, Int32, Int32, Cstring, Ref{Float64}, Int32, Int32, Int32, Float64, Float64), ptr, Int32(p.d), Int32(p.N), Int32(p.M), p.kernel, c, Int32(p.n), Int32(p.m), Int32(p.p), Float64(p.eps_I), Float64(p.eps_B) ) - ccall( ("jfastsum_init",lib_path),Nothing,(Ref{fastsum_plan},Int32,Int32,Int32,Cstring,Ref{Float64},Int32,Int32,Int32,Float64,Float64),ptr,fp.d,fp.N,fp.M,fp.kernel,fp.c,fp.n,fp.m,fp.p,fp.eps_I,fp.eps_B) + Core.setfield!( p, :init_done, true ) + finalizer( finalize_plan, p ) - Core.setfield!( fp, :init_done, true ) - finalizer( finalize_plan, fp ) end #fastsum_init -function finalize_plan(fp::fastsumplan) - if !fp.init_done +function finalize_plan( p::Plan ) + + if !p.init_done error("Plan not initialized.") end - if !fp.finalized - ccall(("jfastsum_finalize",lib_path),Nothing,(Ref{fastsum_plan},),fp.plan) - Core.setfield!(fp,:finalized,true) + 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!(fp::fastsumplan,v::Symbol,val) - if !fp.init_done - fastsum_init(fp) +function Base.setproperty!( p::Plan, v::Symbol, val ) + + if !p.init_done + fastsum_init( p ) end - if fp.finalized - error("Plan already finalized") + if p.finalized + error( "Plan already finalized" ) end # edit source nodes if v == :x - if fp.d==1 + + if p.d == 1 if typeof(val) != Vector{Float64} - error("x has to be a Float64 vector.") + error( "x has to be a Float64 vector." ) end - if (size(val)[1]) != fp.N - error("x has to be a Float64 vector of length N.") + 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.") + error( "x has to be a Float64 matrix." ) end - if size(val)[1] != fp.d || size(val)[2] != fp.N + if size(val)[1] != p.d || size(val)[2] != p.N 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}), fp.plan,val) - Core.setfield!(fp,v,ptr) + + 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 fp.d==1 + + if p.d == 1 if typeof(val) != Vector{Float64} error("y has to be a Float64 vector.") end - if (size(val)[1]) != fp.M + 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] != fp.d || size(val)[2] != fp.M + if size(val)[1] != p.d || size(val)[2] != p.M 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}), fp.plan, val) - Core.setfield!(fp,v,ptr) + 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]) != fp.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}), fp.plan, val) - Core.setfield!(fp,v,ptr) + + 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.") @@ -164,91 +173,107 @@ function Base.setproperty!(fp::fastsumplan,v::Symbol,val) @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!(fp,v,val) + Core.setfield!( p, v, val ) end end # Base.setproperty! # overwrite dot notation for plan struct in order to use C memory -function Base.getproperty(fp::fastsumplan,v::Symbol) +function Base.getproperty( p::Plan, v::Symbol ) if v == :x - if !isdefined(fp,:x) - error("x is not set.") + + if !isdefined( p, :x ) + error("x is not set.") end - ptr = Core.getfield(fp,:x) - if D==1 - return unsafe_wrap(Vector{Float64},ptr,fp.N) # get source nodes from C memory and convert to Julia type + + 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,(D,Int64(fp.N))) # get source nodes from C memory and convert to Julia type + 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(fp,:y) + + if !isdefined( p, :y ) error("y is not set.") end - ptr = Core.getfield(fp,:y) - if D==1 - return unsafe_wrap(Vector{Float64},ptr,fp.M) # get target nodes from C memory and convert to Julia type + + ptr = Core.getfield( p, :y ) + + if p.d == 1 + return unsafe_wrap( Vector{Float64}, ptr, p.M ) # get target nodes from C memory and convert to Julia type else - return unsafe_wrap(Matrix{Float64},ptr,(D,Int64(fp.M))) + return unsafe_wrap( Matrix{Float64}, ptr, (p.d, p.M) ) end elseif v == :alpha - if !isdefined(fp,:alpha) + + if !isdefined( p, :alpha ) error("alpha is not set.") end - ptr = Core.getfield(fp,:alpha) - return unsafe_wrap(Vector{ComplexF64},ptr,fp.N) # get coefficients from C memory and convert to Julia type + + 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(fp,:f) - error("f is not set.") - end - ptr = Core.getfield(fp,:f) - return unsafe_wrap(Vector{ComplexF64},ptr,fp.M) # get function values from C memory and convert to Julia type - elseif v == :c - if !isdefined(fp,:c) - error("c is not set.") + + if !isdefined( p, :f ) + error("f is not set.") end - c_temp = Core.getfield(fp,:c) - return c_temp #unsafe_wrap(Vector{Float64},ptr,D) + + 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(fp,v) + return Core.getfield( p, v ) end end # Base.getproperty -function trafo(fp::fastsumplan) - if fp.finalized +function trafo( p::Plan ) + + if p.finalized error("Plan already finalized.") end - if !isdefined(fp, :x) + + if !isdefined( p, :x ) error("x has not been set.") end - if !isdefined(fp, :y) + + if !isdefined( p, :y ) error("y has not been set.") end - if !isdefined(fp, :alpha) + + if !isdefined( p, :alpha ) error("alpha has not been set.") end - ptr = ccall(("jfastsum_trafo", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},), fp.plan) - Core.setfield!(fp,:f,ptr) + + ptr = ccall( ("jfastsum_trafo", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},), p.plan ) + Core.setfield!( p, :f, ptr ) + end #trafo -function trafo_exact(fp::fastsumplan) - if fp.finalized +function trafo_exact( p::Plan ) + + if p.finalized error("Plan already finalized.") end - if !isdefined(fp, :x) + + if !isdefined( p, :x ) error("x has not been set.") end - if !isdefined(fp, :y) + + if !isdefined( p, :y ) error("y has not been set.") end - if !isdefined(fp, :alpha) + + if !isdefined( p, :alpha ) error("alpha has not been set.") end - ptr = ccall(("jfastsum_exact", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},), fp.plan) - Core.setfield!(fp,:f,ptr) + + ptr = ccall( ("jfastsum_exact", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},), p.plan ) + Core.setfield!( p, :f, ptr ) + end #trafo end #module diff --git a/julia/fastsum/simple_test.jl b/julia/fastsum/simple_test.jl new file mode 100644 index 00000000..ee3a45a3 --- /dev/null +++ b/julia/fastsum/simple_test.jl @@ -0,0 +1,51 @@ +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 = 6 +m = p +nn = 256 +eps_I = p/nn +eps_B = max(1/16,p/nn) + +# create a Plan-Object in Julia +p = fastsum.Plan( d, N, M, nn, m, p, kernel, c, eps_I, eps_B ) + +# generate source nodes in circle of radius 0.25-eps_B/2 +r = sqrt.( rand(N) ).*(0.25-eps_B) +phi = rand(N).*(2*pi) +X = vcat( (r.*cos.(phi))', (r.*sin.(phi))' ) +p.x = X + +# generate coefficients alpha_k +alpha = rand(N)+im*rand(N) +p.alpha = alpha + +# generate target nodes in circle of radius 0.25-eps_B/2 +r = sqrt.( rand(M) ).*(0.25-eps_B) +phi = rand(M).*(2*pi) +Y = vcat( (r.*cos.(phi))', (r.*sin.(phi))' ) +p.y = Y + +# Start the Transformation +fastsum.trafo( p ) + +f1 = copy( p.f ) +fastsum.trafo_exact( p ) +f2 = copy( p.f ) +error_vector = f1 - f2 + +E_2 = norm(error_vector)/norm(f1) +E_infty = norm(error_vector, Inf)/norm(p.alpha,1) +println( "E_2 error:" ) +println( E_2 ) +println( "E_infty error:" ) +println( E_infty ); diff --git a/julia/fastsum/simple_test_2d.jl b/julia/fastsum/simple_test_2d.jl deleted file mode 100644 index 0d2d35c5..00000000 --- a/julia/fastsum/simple_test_2d.jl +++ /dev/null @@ -1,56 +0,0 @@ -push!(LOAD_PATH, pwd()) -using fastsum -using LinearAlgebra - -println("2d fastsum test") - -# set the parameters: -d = 2 -N = 20000; -M = 20000; -kernel = "multiquadric"; -c = 1/sqrt(N); -p = 6; -m = p; -nn = 256; -eps_I = p/nn; -eps_B = max(1/16,p/nn); - -# create a Plan-Object in Julia -pt = fastsumplan(d,N,M,nn,m,p,kernel,c,eps_I,eps_B); - -# generate source nodes in circle of radius 0.25-eps_B/2 -X = zeros(Float64, d, N) - - -# generate coefficients alpha_k -alpha_temp = [1/(1+k) for k in 0:N-1] +im*[1/(1+k^2) for k in 0:N-1]; - -pt.alpha = alpha_temp; - -# 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_temp=zeros(2,M); -y_temp[1,:] = r.*cos.(phi) -y_temp[2,:] = r.*sin.(phi); -pt.y = y_temp; -# Start the Transformation -fastsum.trafo(pt); - -f1 = pt.f; -f_alg = zeros(N)+im*zeros(N); -for i=1:M - f_alg[i] = f1[i]; -end - -fastsum.trafo_exact(pt); -f2 = pt.f; -error_vector = f_alg-f2; - -E_2 = norm(error_vector)/norm(f1) -E_infty = norm(error_vector, Inf)/norm(pt.alpha,1) -println( "E_2 error:" ) -println( E_2 ) -println( "E_infty error:" ) -println( E_infty ); From 0f0156c7ae8490b7db1bf1a813e58fea7a46f5c9 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Tue, 23 Jul 2019 17:48:27 +0200 Subject: [PATCH 018/167] Fastsum simple_test: rename nn -> n for consistency --- matlab/fastsum/simple_test.m | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/matlab/fastsum/simple_test.m b/matlab/fastsum/simple_test.m index f895960b..954bfa22 100644 --- a/matlab/fastsum/simple_test.m +++ b/matlab/fastsum/simple_test.m @@ -48,11 +48,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 +75,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 From 7129685aff2ef926d433f35a76990d3803164fe6 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 24 Jul 2019 13:35:41 +0200 Subject: [PATCH 019/167] build scripts: .dat files were missing in matlab interface --- ChangeLog | 4 ++-- linux-build-mex.sh | 13 ++++--------- macos-build-mex.sh | 13 ++++--------- windows-build-dll.sh | 36 ++++++++++++++++++++++++------------ 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/ChangeLog b/ChangeLog index faf5e65e..779955d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,9 +9,9 @@ Changes in version 3.5.1: - #96 Remove unnecessary dependence on ncurses library. Enhancements - - #88 Inverse NFFT via frame approach. - - #87 FSFT: Spherical Fourier transform with equidistant nodes. - #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: diff --git a/linux-build-mex.sh b/linux-build-mex.sh index c53dae77..dad1decc 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -139,8 +139,8 @@ 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' "$NFFTDIR/julia/" "$JULIADIR" $RSYNC -rLt --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude='*.la' --exclude='*.lo' --exclude='*.o' --exclude='*.c' 'julia/' "$JULIADIR" -$RSYNC -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' "$NFFTDIR/julia/" "$JULIADIR" echo 'This archive contains the Julia interface of NFFT '$NFFTVERSION' compiled for '$ARCH' Linux using GCC '$GCCVERSION' and FFTW '$FFTWVERSION'. ' "$READMECONTENT" "$FFTWREADME" > "$JULIADIR"/readme.txt @@ -150,14 +150,9 @@ tar czf ../"$JULIADIR".tar.gz --owner=0 --group=0 "$JULIADIR" # Create Matlab/Octave release DIR=nfft-$NFFTVERSION-mexa64$OMPSUFFIX - -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/ -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 diff --git a/macos-build-mex.sh b/macos-build-mex.sh index 76ec896a..6afed888 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -121,8 +121,8 @@ 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" -rsync -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' "$NFFTDIR/julia/" "$JULIADIR" echo 'This archive contains the Julia interface of NFFT '$NFFTVERSION' compiled for '$ARCH' macOS using GCC '$GCCVERSION' and FFTW '$FFTWVERSION'. ' "$READMECONTENT" "$FFTWREADME" > "$JULIADIR"/readme.txt @@ -139,14 +139,9 @@ do done DIR=nfft-$NFFTVERSION-mexmaci64$OMPSUFFIX - -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 diff --git a/windows-build-dll.sh b/windows-build-dll.sh index a208f036..509613cd 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -242,9 +242,9 @@ cd "$NFFTBUILDDIR" JULIADIR=nfft-"$NFFTVERSION"-julia-w$ARCH$OMPSUFFIX mkdir "$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" -rsync -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --exclude='*.c' "$NFFTDIR/julia/" "$JULIADIR" -for DIR in $JULIADIR/nf*t; do cd $DIR; for NAME in simple_test*.jl; do PATH=/c/Windows/System32 $HOMEDIR/julia/bin/julia "$NAME"; done; cd "$NFFTBUILDDIR"; done; +for DIR in $JULIADIR/nf*t; 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 @@ -258,7 +258,7 @@ rm -f "$HOMEDIR/$JULIADIR".zip # Compile with Matlab if [ -n "$MATLABDIR" ]; then if [ "$MATLABVERSION" == "" ]; then - "$MATLABDIR"/bin/matlab -wait -nodesktop -nosplash -r "fid=fopen('matlab_version.txt','wt'); fprintf(fid,'MATLAB_VERSION=%s\n', version); exit;" + "$MATLABDIR"/bin/matlab.exe -wait -nodesktop -nosplash -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/)//'`" fi MATLABSTRING=" and Matlab $MATLABVERSION" @@ -280,16 +280,28 @@ fi # Create Matlab/Octave release MEXDIR=nfft-"$NFFTVERSION"-mexw$ARCH$OMPSUFFIX +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 + # "$OCTAVEDIR"/bin/octave-cli.exe --no-window-system --eval="run('$TESTFILE')" + # 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 ../.. +# done 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.exe --no-window-system --eval="cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end" - if [ -f "$MATLABDIR"/bin/matlab.exe ]; then - PATH=/c/Windows/System32 "$MATLABDIR"/bin/matlab.exe -wait -nodesktop -nosplash -r "cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end; exit" - fi + do + "$OCTAVEDIR"/bin/octave-cli.exe --no-window-system --eval="cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end" + if [ -f "$MATLABDIR"/bin/matlab.exe ]; then + PATH=/c/Windows/System32 "$MATLABDIR"/bin/matlab.exe -wait -nodesktop -nosplash -r "cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end; exit" + fi done cd "$NFFTBUILDDIR" From 78a244064c32dcfb5a25b19b157d221578478be2 Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Wed, 24 Jul 2019 15:17:22 +0200 Subject: [PATCH 020/167] adds changes to fastsum interface --- julia/fastsum/fastsum.jl | 287 ++++++++++++++++---------------- julia/fastsum/libfastsumjulia.c | 170 ++++++++++--------- julia/fastsum/simple_test.jl | 10 +- 3 files changed, 249 insertions(+), 218 deletions(-) diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl index b1c74449..43a72fc7 100644 --- a/julia/fastsum/fastsum.jl +++ b/julia/fastsum/fastsum.jl @@ -2,7 +2,7 @@ module fastsum ending = ".so" -if Sys.iswindows() +if Sys.iswindows( ) ending = ".dll" end @@ -12,148 +12,154 @@ 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 - m::Integer # cut-off parameter - p::Integer # degree of smoothness - kernel::String # name of kernel - c::Vector{<:Real} # kernel parameters - eps_I::Real # inner boundary - eps_B::Real # outer boundary - init_done::Bool # bool for plan init - finalized::Bool # bool for finalizer - 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, m::Integer, p::Integer, kernel::String, c::Vector{<:Real}, eps_I::Real, eps_B::Real ) - new( d, N, M, n, m, p, kernel, c, eps_I, eps_B, false, false ) + 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{<:Real} # 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 + b::Ref{ComplexF64} # expansion 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 ) + new( d, N, M, n, p, kernel, c, eps_I, eps_B, nn_x, nn_y, m_x, m_y, false, false, 0 ) end end #struct fastsumplan -function Plan( d::Integer, N::Integer, M::Integer, n::Integer, m::Integer, p::Integer, kernel::String, c::Real, eps_I::Real, eps_B::Real ) +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 = rand(1) - cv[1] = c - - Plan( d, N, M, n, m, p, kernel, cv, eps_I, eps_B ) + 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 = rand(1) + cv[1] = c + + Plan( d, N, M, n, p, kernel, cv, eps_I, eps_B, nn, nn, m, m ) + end #constructor - function fastsum_init( p::Plan ) - ptr = ccall( ("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, () ) - Core.setfield!( p, :plan, ptr ) - - c = Vector{Float64}(p.c) - - ccall( ("jfastsum_init",lib_path), Nothing, (Ref{fastsum_plan}, Int32, Int32, Int32, Cstring, Ref{Float64}, Int32, Int32, Int32, Float64, Float64), ptr, Int32(p.d), Int32(p.N), Int32(p.M), p.kernel, c, Int32(p.n), Int32(p.m), Int32(p.p), Float64(p.eps_I), Float64(p.eps_B) ) - + ptr = ccall( ("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, () ) + Core.setfield!( p, :plan, ptr ) + + c = Vector{Float64}(p.c) + + ccall( ("jfastsum_init",lib_path), Nothing, (Ref{fastsum_plan}, Int32, Cstring, Ref{Float64}, UInt32, Int32, Int32, Float64, Float64), ptr, Int32(p.d), p.kernel, c, p.flags, Int32(p.n), Int32(p.p), Float64(p.eps_I), Float64(p.eps_B) ) + Core.setfield!( p, :init_done, true ) - finalizer( finalize_plan, p ) - + finalizer( finalize_plan, p ) + end #fastsum_init function finalize_plan( p::Plan ) - if !p.init_done - error("Plan not initialized.") - end + 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 + 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.init_done + fastsum_init( p ) + end - if p.finalized - error( "Plan already finalized" ) - end + if p.finalized + error( "Plan already finalized" ) + end - # edit source nodes - if v == :x + # 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 + 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.d || size(val)[2] != p.N - error("x has to be a Float64 matrix of size N.") - end + if typeof(val) != Array{Float64, 2} + error( "x has to be a Float64 matrix." ) + end + if size(val)[1] != p.d || size(val)[2] != p.N + 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 ) + ptr = ccall( ("jfastsum_set_x", lib_path), Ptr{Float64}, (Ref{fastsum_plan},Ref{Cdouble}, Int32, Int32, Int32), p.plan, val, Int32(p.N), Int32(p.nn_x), Int32(p.m_x) ) + 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.d || size(val)[2] != p.M - 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 ) + 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.d || size(val)[2] != p.M + 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}, Int32, Int32, Int32), p.plan, val, Int32(p.M), Int32(p.nn_y), Int32(p.m_y) ) + Core.setfield!( p, v, ptr ) # edit source coefficients - elseif v == :alpha + 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 + 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 ) + 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 + 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.") @@ -176,22 +182,24 @@ function Base.setproperty!( p::Plan, v::Symbol, val ) 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.") + 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 + 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 + 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 @@ -203,7 +211,7 @@ function Base.getproperty( p::Plan, v::Symbol ) ptr = Core.getfield( p, :y ) if p.d == 1 - return unsafe_wrap( Vector{Float64}, ptr, p.M ) # get target nodes from C memory and convert to Julia type + return unsafe_wrap( Vector{Float64}, ptr, p.M ) else return unsafe_wrap( Matrix{Float64}, ptr, (p.d, p.M) ) end @@ -215,7 +223,7 @@ function Base.getproperty( p::Plan, v::Symbol ) end ptr = Core.getfield( p, :alpha ) - return unsafe_wrap( Vector{ComplexF64}, ptr, p.N ) # get coefficients from C memory and convert to Julia type + return unsafe_wrap( Vector{ComplexF64}, ptr, p.N ) # get coefficients from C memory and convert to Julia type elseif v == :f @@ -224,7 +232,7 @@ function Base.getproperty( p::Plan, v::Symbol ) 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 + 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 ) @@ -233,47 +241,48 @@ end # Base.getproperty function trafo( p::Plan ) - if p.finalized - error("Plan already finalized.") - end + if p.finalized + error("Plan already finalized.") + end - if !isdefined( p, :x ) - error("x has not been set.") - 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, :y ) + error("y has not been set.") + end - if !isdefined( p, :alpha ) - error("alpha has not been set.") + 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 ) + Core.setfield!( p, :f, ptr ) end #trafo function trafo_exact( p::Plan ) - if p.finalized - error("Plan already finalized.") - end + if p.finalized + error("Plan already finalized.") + end - if !isdefined( p, :x ) - error("x has not been set.") - 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, :y ) + error("y has not been set.") + end - if !isdefined( p, :alpha ) - error("alpha has not been set.") + 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 ) + Core.setfield!( p, :f, ptr ) end #trafo + end #module diff --git a/julia/fastsum/libfastsumjulia.c b/julia/fastsum/libfastsumjulia.c index 8cae9ee9..2c44591b 100644 --- a/julia/fastsum/libfastsumjulia.c +++ b/julia/fastsum/libfastsumjulia.c @@ -16,97 +16,117 @@ #include "kernels.h" #include "infft.h" - - fastsum_plan* jfastsum_alloc(){ - fastsum_plan* p = nfft_malloc(sizeof(fastsum_plan)); - return p; + fastsum_plan* p = nfft_malloc(sizeof(fastsum_plan)); + return p; } // c wird von Julia als Float64-Pointer übergeben -void jfastsum_init(fastsum_plan* fp,int D,int N,int M,char* s,R* c,int n,int m,int p,float eps_I,float eps_B ){ +void jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, int n, int ps, float eps_I, float eps_B ){ 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 - { - s = "multiquadric"; - kernel = multiquadric; - } - - fastsum_init_guru(fp,D,N,M,kernel,c,0,n,m,p,eps_I,eps_B); + + 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 { + s = "multiquadric"; + kernel = multiquadric; + } + + fastsum_init_guru_kernel( p, d, kernel, c, f | STORE_PERMUTATION_X_ALPHA, n, ps, eps_I, eps_B); } -double* jfastsum_set_x(fastsum_plan* fp, double* x){ - int N = fp -> N_total; - int d = fp->d; - int k,l; - for (k=0; k x[k*d+l] = x[k*d+l]; - return fp->x; +double* jfastsum_set_x( fastsum_plan* p, double* x, int N, int nn, int m ){ + fastsum_init_guru_source_nodes( p, N, nn, m ); + + int d = p -> d; + + 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*d+t]; + + } 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]*d+t]; + + } + + fastsum_precompute_source_nodes( p ); + + return p -> x; } -double* jfastsum_set_y(fastsum_plan* fp, double* y){ - int M = fp -> M_total; - int d = fp -> d; - int k,l; - for (k=0; k y[k*d+l] = y[k*d+l]; - return fp->y; +double* jfastsum_set_y( fastsum_plan* p, double* y, int M, int nn, int m ){ + fastsum_init_guru_target_nodes( p, M, nn, m ); + + int d = p -> d; + + for ( int j = 0; j < M; j++ ) + for ( int t = 0; t < d; t++ ) + p -> y[j*d+t] = y[j*d+t]; + + fastsum_precompute_target_nodes( p ); + + return p -> y; } -double _Complex* jfastsum_set_alpha(fastsum_plan* fp, double _Complex* alpha){ - int N = fp -> N_total; - int k; - for (k=0; k alpha[k] = alpha[k]; - return fp->alpha; +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* fp){ - fastsum_precompute(fp); - fastsum_trafo(fp); - return fp -> f; +double _Complex* jfastsum_trafo( fastsum_plan* p ){ + fastsum_trafo( p ); + return p -> f; } -double _Complex* jfastsum_exact(fastsum_plan* fp){ - fastsum_exact(fp); - return fp ->f; +double _Complex* jfastsum_exact( fastsum_plan* p ){ + fastsum_exact( p ); + return p -> f; } -void jfastsum_finalize(fastsum_plan* fp){ - fastsum_finalize(fp); - return; +void jfastsum_finalize( fastsum_plan* p ){ + fastsum_finalize_source_nodes( p ); + fastsum_finalize_target_nodes( p ); + fastsum_finalize_kernel( p ); + return; } diff --git a/julia/fastsum/simple_test.jl b/julia/fastsum/simple_test.jl index ee3a45a3..0fbab512 100644 --- a/julia/fastsum/simple_test.jl +++ b/julia/fastsum/simple_test.jl @@ -11,13 +11,15 @@ M = 20000 kernel = "multiquadric" c = 1/sqrt(N) p = 6 +flags = 0 m = p -nn = 256 -eps_I = p/nn -eps_B = max(1/16,p/nn) +n = 256 +eps_I = p/n +eps_B = max( 1/16, p/n ) +nn = 2*n # create a Plan-Object in Julia -p = fastsum.Plan( d, N, M, nn, m, p, kernel, c, eps_I, eps_B ) +p = 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) From 058490cdaf52a902a3b0812263b99b2e15708d67 Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Wed, 24 Jul 2019 15:48:31 +0200 Subject: [PATCH 021/167] corrects simple test --- julia/fastsum/simple_test.jl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/julia/fastsum/simple_test.jl b/julia/fastsum/simple_test.jl index 0fbab512..5960a1fc 100644 --- a/julia/fastsum/simple_test.jl +++ b/julia/fastsum/simple_test.jl @@ -6,23 +6,23 @@ println("fastsum test") # set the parameters: d = 2 -N = 20000 -M = 20000 +N = 2000 +M = 2000 kernel = "multiquadric" c = 1/sqrt(N) -p = 6 +p = 3 flags = 0 m = p -n = 256 +n = 156 eps_I = p/n -eps_B = max( 1/16, p/n ) +eps_B = 1/16 nn = 2*n # create a Plan-Object in Julia p = 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) +r = sqrt.( rand(N) ).*(0.25-eps_B/2) phi = rand(N).*(2*pi) X = vcat( (r.*cos.(phi))', (r.*sin.(phi))' ) p.x = X @@ -32,7 +32,7 @@ alpha = rand(N)+im*rand(N) p.alpha = alpha # generate target nodes in circle of radius 0.25-eps_B/2 -r = sqrt.( rand(M) ).*(0.25-eps_B) +r = sqrt.( rand(M) ).*(0.25-eps_B/2) phi = rand(M).*(2*pi) Y = vcat( (r.*cos.(phi))', (r.*sin.(phi))' ) p.y = Y From 3410f686b127907da7bbed5b2f91e8430d5040e6 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Fri, 26 Jul 2019 11:02:25 +0200 Subject: [PATCH 022/167] fix for fastsum Jula interface: kernel parameter was not passed correctly (temporary pointer) --- julia/fastsum/fastsum.jl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl index 43a72fc7..4b13d1f6 100644 --- a/julia/fastsum/fastsum.jl +++ b/julia/fastsum/fastsum.jl @@ -18,7 +18,7 @@ mutable struct Plan n::Integer # expansion degree p::Integer # degree of smoothness kernel::String # name of kernel - c::Vector{<:Real} # kernel parameters + c::Vector{Float64} # kernel parameters eps_I::Real # inner boundary eps_B::Real # outer boundary nn_x::Integer # oversampled nn in x @@ -35,7 +35,7 @@ mutable struct Plan 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 ) + function Plan( d::Integer, N::Integer, M::Integer, n::Integer, p::Integer, kernel::String, c::Vector{Float64}, eps_I::Real, eps_B::Real, nn_x::Integer, nn_y::Integer, m_x::Integer, m_y::Integer ) new( d, N, M, n, p, kernel, c, eps_I, eps_B, nn_x, nn_y, m_x, m_y, false, false, 0 ) end end #struct fastsumplan @@ -70,10 +70,8 @@ function fastsum_init( p::Plan ) ptr = ccall( ("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, () ) Core.setfield!( p, :plan, ptr ) - c = Vector{Float64}(p.c) - - ccall( ("jfastsum_init",lib_path), Nothing, (Ref{fastsum_plan}, Int32, Cstring, Ref{Float64}, UInt32, Int32, Int32, Float64, Float64), ptr, Int32(p.d), p.kernel, c, p.flags, Int32(p.n), Int32(p.p), Float64(p.eps_I), Float64(p.eps_B) ) - + ccall( ("jfastsum_init",lib_path), Nothing, (Ref{fastsum_plan}, Int32, Cstring, Ref{Float64}, UInt32, Int32, Int32, Float64, Float64), ptr, Int32(p.d), p.kernel, p.c, p.flags, Int32(p.n), Int32(p.p), Float64(p.eps_I), Float64(p.eps_B) ) + Core.setfield!( p, :init_done, true ) finalizer( finalize_plan, p ) From f0ac38d98027b827d004874b601d5df0767219b9 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Fri, 26 Jul 2019 15:34:08 +0200 Subject: [PATCH 023/167] iNFFT does not work with Octave: Update readme and windows build script --- matlab/infft1d/README | 7 +++++++ windows-build-dll.sh | 40 +++++++++++++++++++++------------------- 2 files changed, 28 insertions(+), 19 deletions(-) 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/windows-build-dll.sh b/windows-build-dll.sh index 509613cd..9def2b4b 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -283,26 +283,28 @@ MEXDIR=nfft-"$NFFTVERSION"-mexw$ARCH$OMPSUFFIX 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 - # "$OCTAVEDIR"/bin/octave-cli.exe --no-window-system --eval="run('$TESTFILE')" - # 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 ../.. -# done -for SUBDIR in nfft nfsft/@f_hat nfsft nfsoft nnfft fastsum nfct nfst infft1d fpt - do - "$OCTAVEDIR"/bin/octave-cli.exe --no-window-system --eval="cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end" - if [ -f "$MATLABDIR"/bin/matlab.exe ]; then - PATH=/c/Windows/System32 "$MATLABDIR"/bin/matlab.exe -wait -nodesktop -nosplash -r "cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end; exit" - fi +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 +# for SUBDIR in nfft nfsft/@f_hat nfsft nfsoft nnfft fastsum nfct nfst infft1d fpt + # do + # "$OCTAVEDIR"/bin/octave-cli.exe --no-window-system --eval="cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end" + # if [ -f "$MATLABDIR"/bin/matlab.exe ]; then + # PATH=/c/Windows/System32 "$MATLABDIR"/bin/matlab.exe -wait -nodesktop -nosplash -r "cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end; exit" + # fi +# done cd "$NFFTBUILDDIR" cp "$NFFTDIR"/COPYING "$MEXDIR"/COPYING From 606e0fd57c7cf07cfd46089d729c738381ebc792 Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Mon, 29 Jul 2019 14:57:10 +0200 Subject: [PATCH 024/167] adds a working version of the fastsum interface ... --- julia/fastsum/fastsum.jl | 4 ++-- julia/fastsum/libfastsumjulia.c | 16 +++++++++++----- julia/fastsum/simple_test.jl | 14 +++++++------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl index 43a72fc7..eae285a3 100644 --- a/julia/fastsum/fastsum.jl +++ b/julia/fastsum/fastsum.jl @@ -116,7 +116,7 @@ function Base.setproperty!( p::Plan, v::Symbol, val ) if typeof(val) != Array{Float64, 2} error( "x has to be a Float64 matrix." ) end - if size(val)[1] != p.d || size(val)[2] != p.N + if size(val)[1] != p.N || size(val)[2] != p.d error("x has to be a Float64 matrix of size N.") end end @@ -138,7 +138,7 @@ function Base.setproperty!( p::Plan, v::Symbol, val ) if typeof(val) != Array{Float64, 2} error("y has to be a Float64 matrix.") end - if size(val)[1] != p.d || size(val)[2] != p.M + if size(val)[1] != p.M || size(val)[2] != p.d error("y has to be a Float64 matrix of size M.") end end diff --git a/julia/fastsum/libfastsumjulia.c b/julia/fastsum/libfastsumjulia.c index 2c44591b..ad8f9b7f 100644 --- a/julia/fastsum/libfastsumjulia.c +++ b/julia/fastsum/libfastsumjulia.c @@ -23,8 +23,11 @@ fastsum_plan* jfastsum_alloc(){ // c wird von Julia als Float64-Pointer übergeben void jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, int n, int ps, float eps_I, float eps_B ){ - C (*kernel)(R, int, const R *); + C (*kernel)(R, int, const R *); + double* param = nfft_malloc( sizeof(double) ); + param[0] = c[0]; + if ( strcmp(s, "gaussian") == 0 ) kernel = gaussian; else if ( strcmp(s, "multiquadric") == 0 ) @@ -60,7 +63,10 @@ void jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, kernel = multiquadric; } - fastsum_init_guru_kernel( p, d, kernel, c, f | STORE_PERMUTATION_X_ALPHA, n, ps, eps_I, eps_B); + fastsum_init_guru_kernel( p, d, kernel, param, f | STORE_PERMUTATION_X_ALPHA, n, ps, eps_I, eps_B); + p -> x = 0; + p -> y = 0; + } double* jfastsum_set_x( fastsum_plan* p, double* x, int N, int nn, int m ){ @@ -72,13 +78,13 @@ double* jfastsum_set_x( fastsum_plan* p, double* x, int N, int nn, int m ){ for ( int k = 0; k < N; k++ ) for ( int t = 0; t < d; t++) - p -> x[k*d+t] = x[k*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]*d+t]; + p -> x[k*d+t] = x[p->permutation_x_alpha[k]+t*N]; } @@ -94,7 +100,7 @@ double* jfastsum_set_y( fastsum_plan* p, double* y, int M, int nn, int m ){ for ( int j = 0; j < M; j++ ) for ( int t = 0; t < d; t++ ) - p -> y[j*d+t] = y[j*d+t]; + p -> y[j*d+t] = y[j+t*M]; fastsum_precompute_target_nodes( p ); diff --git a/julia/fastsum/simple_test.jl b/julia/fastsum/simple_test.jl index 5960a1fc..bfd657d2 100644 --- a/julia/fastsum/simple_test.jl +++ b/julia/fastsum/simple_test.jl @@ -6,16 +6,16 @@ println("fastsum test") # set the parameters: d = 2 -N = 2000 -M = 2000 +N = 20000 +M = 20000 kernel = "multiquadric" c = 1/sqrt(N) -p = 3 +p = 8 flags = 0 m = p -n = 156 +n = 256 eps_I = p/n -eps_B = 1/16 +eps_B = max( 1/16, p/n ) nn = 2*n # create a Plan-Object in Julia @@ -24,7 +24,7 @@ p = 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 = vcat( (r.*cos.(phi))', (r.*sin.(phi))' ) +X = [ (r.*cos.(phi)) (r.*sin.(phi)) ] p.x = X # generate coefficients alpha_k @@ -34,7 +34,7 @@ p.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 = vcat( (r.*cos.(phi))', (r.*sin.(phi))' ) +Y = [ (r.*cos.(phi)) (r.*sin.(phi)) ] p.y = Y # Start the Transformation From fe8db76d140d52d7f515efb111d476204b02f9b0 Mon Sep 17 00:00:00 2001 From: Michael Schmischke Date: Mon, 29 Jul 2019 15:00:46 +0200 Subject: [PATCH 025/167] reverses changes to parameter --- julia/fastsum/fastsum.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl index ceeadc10..3059dc68 100644 --- a/julia/fastsum/fastsum.jl +++ b/julia/fastsum/fastsum.jl @@ -18,7 +18,7 @@ mutable struct Plan n::Integer # expansion degree p::Integer # degree of smoothness kernel::String # name of kernel - c::Vector{Float64} # kernel parameters + c::Vector{<:Real} # kernel parameters eps_I::Real # inner boundary eps_B::Real # outer boundary nn_x::Integer # oversampled nn in x @@ -35,7 +35,7 @@ mutable struct Plan 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{Float64}, eps_I::Real, eps_B::Real, nn_x::Integer, nn_y::Integer, m_x::Integer, m_y::Integer ) + 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 ) new( d, N, M, n, p, kernel, c, eps_I, eps_B, nn_x, nn_y, m_x, m_y, false, false, 0 ) end end #struct fastsumplan @@ -70,7 +70,7 @@ function fastsum_init( p::Plan ) ptr = ccall( ("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, () ) Core.setfield!( p, :plan, ptr ) - ccall( ("jfastsum_init",lib_path), Nothing, (Ref{fastsum_plan}, Int32, Cstring, Ref{Float64}, UInt32, Int32, Int32, Float64, Float64), ptr, Int32(p.d), p.kernel, p.c, p.flags, Int32(p.n), Int32(p.p), Float64(p.eps_I), Float64(p.eps_B) ) + ccall( ("jfastsum_init",lib_path), Nothing, (Ref{fastsum_plan}, Int32, Cstring, Ref{Float64}, UInt32, Int32, Int32, Float64, Float64), ptr, Int32(p.d), p.kernel, Vector{Float64}(p.c), p.flags, Int32(p.n), Int32(p.p), Float64(p.eps_I), Float64(p.eps_B) ) Core.setfield!( p, :init_done, true ) finalizer( finalize_plan, p ) From aee40f16abf3ebc36f1a6029b8ab068d1ead7647 Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Mon, 29 Jul 2019 15:29:15 +0200 Subject: [PATCH 026/167] adds new version of fastsum interface --- julia/fastsum/fastsum.jl | 14 +++++++------- julia/fastsum/libfastsumjulia.c | 20 ++++++++++++++------ julia/fastsum/simple_test.jl | 6 ++++-- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl index 3059dc68..a9b8057a 100644 --- a/julia/fastsum/fastsum.jl +++ b/julia/fastsum/fastsum.jl @@ -18,7 +18,7 @@ mutable struct Plan n::Integer # expansion degree p::Integer # degree of smoothness kernel::String # name of kernel - c::Vector{<:Real} # kernel parameters + c::Vector{Float64} # kernel parameters eps_I::Real # inner boundary eps_B::Real # outer boundary nn_x::Integer # oversampled nn in x @@ -35,8 +35,8 @@ mutable struct Plan 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 ) - new( d, N, M, n, p, kernel, c, eps_I, eps_B, nn_x, nn_y, m_x, m_y, false, false, 0 ) + 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 @@ -58,10 +58,10 @@ function Plan( d::Integer, N::Integer, M::Integer, n::Integer, p::Integer, kerne error( "m has to be a positive Integer." ) end - cv = rand(1) - cv[1] = c + 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 ) + Plan( d, N, M, n, p, kernel, cv, eps_I, eps_B, nn, nn, m, m, UInt32(0) ) end #constructor @@ -70,7 +70,7 @@ function fastsum_init( p::Plan ) ptr = ccall( ("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, () ) Core.setfield!( p, :plan, ptr ) - ccall( ("jfastsum_init",lib_path), Nothing, (Ref{fastsum_plan}, Int32, Cstring, Ref{Float64}, UInt32, Int32, Int32, Float64, Float64), ptr, Int32(p.d), p.kernel, Vector{Float64}(p.c), p.flags, Int32(p.n), Int32(p.p), Float64(p.eps_I), Float64(p.eps_B) ) + ccall( ("jfastsum_init",lib_path), Nothing, (Ref{fastsum_plan}, Int32, Cstring, Ref{Float64}, UInt32, Int32, Int32, Float64, Float64), ptr, Int32(p.d), p.kernel, p.c, p.flags, Int32(p.n), Int32(p.p), Float64(p.eps_I), Float64(p.eps_B) ) Core.setfield!( p, :init_done, true ) finalizer( finalize_plan, p ) diff --git a/julia/fastsum/libfastsumjulia.c b/julia/fastsum/libfastsumjulia.c index ad8f9b7f..3877c42c 100644 --- a/julia/fastsum/libfastsumjulia.c +++ b/julia/fastsum/libfastsumjulia.c @@ -24,9 +24,6 @@ fastsum_plan* jfastsum_alloc(){ void jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, int n, int ps, float eps_I, float eps_B ){ C (*kernel)(R, int, const R *); - - double* param = nfft_malloc( sizeof(double) ); - param[0] = c[0]; if ( strcmp(s, "gaussian") == 0 ) kernel = gaussian; @@ -63,14 +60,20 @@ void jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, kernel = multiquadric; } - fastsum_init_guru_kernel( p, d, kernel, param, f | STORE_PERMUTATION_X_ALPHA, n, ps, eps_I, eps_B); + 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; } double* jfastsum_set_x( fastsum_plan* p, double* x, int N, int nn, int m ){ - fastsum_init_guru_source_nodes( p, N, nn, m ); + + if ( !(p->x) ) + fastsum_init_guru_source_nodes( p, N, nn, m ); + else { + fastsum_finalize_source_nodes( p ); + fastsum_init_guru_source_nodes( p, N, nn, m ); + } int d = p -> d; @@ -94,7 +97,12 @@ double* jfastsum_set_x( fastsum_plan* p, double* x, int N, int nn, int m ){ } double* jfastsum_set_y( fastsum_plan* p, double* y, int M, int nn, int m ){ - fastsum_init_guru_target_nodes( p, M, nn, m ); + if ( !(p->y) ) + fastsum_init_guru_target_nodes( p, M, nn, m ); + else { + fastsum_finalize_target_nodes( p ); + fastsum_init_guru_target_nodes( p, M, nn, m ); + } int d = p -> d; diff --git a/julia/fastsum/simple_test.jl b/julia/fastsum/simple_test.jl index bfd657d2..3f65c191 100644 --- a/julia/fastsum/simple_test.jl +++ b/julia/fastsum/simple_test.jl @@ -38,10 +38,12 @@ Y = [ (r.*cos.(phi)) (r.*sin.(phi)) ] p.y = Y # Start the Transformation -fastsum.trafo( p ) +println( "time:" ) +@time fastsum.trafo( p ) f1 = copy( p.f ) -fastsum.trafo_exact( p ) +println( "time direct:" ) +@time fastsum.trafo_exact( p ) f2 = copy( p.f ) error_vector = f1 - f2 From 43cd947e5e66cb7adf2d4e1c7537c138bdab12b4 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Tue, 30 Jul 2019 10:13:38 +0200 Subject: [PATCH 027/167] compile gcc and link libgomp statically for Julia binaries on linux --- linux-build-mex.sh | 65 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index dad1decc..88f87544 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -30,7 +30,10 @@ RSYNC="flatpak-spawn --host rsync" set -ex FFTWVERSION=3.3.8 +GCCVERSION=8.3.0 GCCARCH=core2 +MPFRVERSION=4.0.1 +MPCVERSION=1.1.0 # default values (to be overwritten if respective parameters are set) OCTAVEDIR=/usr @@ -61,10 +64,61 @@ NFFTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" HOMEDIR="$NFFTDIR"/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 "$MPFRBUILDDIR/build-success" ]; then + rm -rf "$MPFRBUILDDIR" + 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 "$MPFRBUILDDIR/build-success" + cd $HOMEDIR +fi + +MPCBUILDDIR=$HOMEDIR/mpc-$MPCVERSION +MPCINSTALLDIR=$HOMEDIR/mpc-$MPCVERSION-install +# Build MPC for GCC +if [ ! -f "$MPCBUILDDIR/build-success" ]; then + rm -rf "$MPCBUILDDIR" + 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 "$MPCBUILDDIR/build-success" + cd $HOMEDIR +fi + +export LD_LIBRARY_PATH="$MPCINSTALLDIR/lib:$MPFRINSTALLDIR/lib" + +GCCBUILDDIR="$HOMEDIR/gcc-$GCCVERSION" +GCCINSTALLDIR="$HOMEDIR/gcc-$GCCVERSION-install" +# Build GCC +if [ ! -f "$GCCBUILDDIR/build-success" ]; then + rm -rf "$GCCBUILDDIR" + 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 "$GCCBUILDDIR/build-success" + cd $HOMEDIR +fi + + FFTWDIR=$HOMEDIR/fftw-$FFTWVERSION # Build FFTW if [ ! -f "$FFTWDIR/build-success" ]; then @@ -76,12 +130,13 @@ if [ ! -f "$FFTWDIR/build-success" ]; then mkdir build cd build - ../configure --enable-static --enable-shared --enable-threads --with-pic --enable-sse2 --enable-avx --enable-avx2 --disable-fortran + 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 + # Build NFFT READMECONTENT=" $(sed -e '/^\[!/d' -e '/Directory structure/Q' $NFFTDIR/README) @@ -120,7 +175,7 @@ cd "$NFFTBUILDDIR" LDFLAGS="-L$FFTWDIR/build/threads/.libs -L$FFTWDIR/build/.libs" CPPFLAGS="-I$FFTWDIR/api" -"$NFFTDIR/configure" --enable-all $OMPFLAG --with-octave="$OCTAVEDIR" --with-gcc-arch="$GCCARCH" --disable-static --enable-shared +CC="$GCCINSTALLDIR/bin/gcc-$GCCVERSION" "$NFFTDIR/configure" --enable-all $OMPFLAG --with-octave="$OCTAVEDIR" --with-gcc-arch="$GCCARCH" --disable-static --enable-shared make make check @@ -131,7 +186,7 @@ cd julia for LIB in nf*t do cd "$LIB" - gcc -shared -fPIC -DPIC .libs/lib"$LIB"julia.o -Wl,--whole-archive ../../.libs/libnfft3_julia.a $FFTWLIBSTATIC -Wl,--no-whole-archive $OMPLIBS -lm -O3 -malign-double -march="$GCCARCH" -Wl,-soname -Wl,lib"$LIB"julia.so -o .libs/lib"$LIB"julia.so + "$GCCINSTALLDIR/bin/gcc-$GCCVERSION" -shared -fPIC -DPIC .libs/lib"$LIB"julia.o -Wl,--whole-archive ../../.libs/libnfft3_julia.a $FFTWLIBSTATIC $GCCINSTALLDIR/lib64/libgomp.a -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" @@ -159,7 +214,7 @@ 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="$GCCARCH" --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 make make check fi From 14a7bfe1186597ece377ecb476e72057d8897f10 Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Wed, 31 Jul 2019 09:31:02 +0200 Subject: [PATCH 028/167] adds changes requested by @michaelquellmalz --- julia/fastsum/fastsum.jl | 64 ++++++++++++++++----------------- julia/fastsum/libfastsumjulia.c | 26 +++++--------- 2 files changed, 40 insertions(+), 50 deletions(-) diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl index a9b8057a..9dc80871 100644 --- a/julia/fastsum/fastsum.jl +++ b/julia/fastsum/fastsum.jl @@ -12,24 +12,24 @@ 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 + 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 + 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 b::Ref{ComplexF64} # expansion coefficients f::Ref{ComplexF64} # target evaluations @@ -70,7 +70,7 @@ function fastsum_init( p::Plan ) ptr = ccall( ("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, () ) Core.setfield!( p, :plan, ptr ) - ccall( ("jfastsum_init",lib_path), Nothing, (Ref{fastsum_plan}, Int32, Cstring, Ref{Float64}, UInt32, Int32, Int32, Float64, Float64), ptr, Int32(p.d), p.kernel, p.c, p.flags, Int32(p.n), Int32(p.p), Float64(p.eps_I), Float64(p.eps_B) ) + ccall( ("jfastsum_init",lib_path), Nothing, (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) ) Core.setfield!( p, :init_done, true ) finalizer( finalize_plan, p ) @@ -115,11 +115,11 @@ function Base.setproperty!( p::Plan, v::Symbol, val ) 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.") + 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}, Int32, Int32, Int32), p.plan, val, Int32(p.N), Int32(p.nn_x), Int32(p.m_x) ) + 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 @@ -134,14 +134,14 @@ function Base.setproperty!( p::Plan, v::Symbol, val ) end else # => D > 1 if typeof(val) != Array{Float64, 2} - error("y has to be a Float64 matrix.") + 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.") + 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}, Int32, Int32, Int32), p.plan, val, Int32(p.M), Int32(p.nn_y), Int32(p.m_y) ) + 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 @@ -240,22 +240,22 @@ end # Base.getproperty function trafo( p::Plan ) if p.finalized - error("Plan already finalized.") + error( "Plan already finalized." ) end if !isdefined( p, :x ) - error("x has not been set.") + error( "x has not been set." ) end if !isdefined( p, :y ) - error("y has not been set.") + error( "y has not been set." ) end if !isdefined( p, :alpha ) - error("alpha has not been set.") + error( "alpha has not been set." ) end - ptr = ccall( ("jfastsum_trafo", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},), p.plan ) + ptr = ccall( ( "jfastsum_trafo", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},), p.plan ) Core.setfield!( p, :f, ptr ) end #trafo @@ -263,19 +263,19 @@ end #trafo function trafo_exact( p::Plan ) if p.finalized - error("Plan already finalized.") + error( "Plan already finalized." ) end if !isdefined( p, :x ) - error("x has not been set.") + error( "x has not been set." ) end if !isdefined( p, :y ) - error("y has not been set.") + error( "y has not been set." ) end if !isdefined( p, :alpha ) - error("alpha has not been set.") + error( "alpha has not been set." ) end ptr = ccall( ("jfastsum_exact", lib_path), Ptr{ComplexF64}, (Ref{fastsum_plan},), p.plan ) diff --git a/julia/fastsum/libfastsumjulia.c b/julia/fastsum/libfastsumjulia.c index 3877c42c..92613360 100644 --- a/julia/fastsum/libfastsumjulia.c +++ b/julia/fastsum/libfastsumjulia.c @@ -22,7 +22,7 @@ fastsum_plan* jfastsum_alloc(){ } // c wird von Julia als Float64-Pointer übergeben -void jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, int n, int ps, float eps_I, float eps_B ){ +void jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, int n, int ps, float eps_I, float 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 ) @@ -63,19 +63,14 @@ void jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, 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 ); } -double* jfastsum_set_x( fastsum_plan* p, double* x, int N, int nn, int m ){ - - if ( !(p->x) ) - fastsum_init_guru_source_nodes( p, N, nn, m ); - else { - fastsum_finalize_source_nodes( p ); - fastsum_init_guru_source_nodes( p, N, nn, m ); - } - +double* jfastsum_set_x( fastsum_plan* p, double* x ){ int d = p -> d; + int N = p -> N_total; if ( p -> permutation_x_alpha == NULL ) { @@ -96,15 +91,9 @@ double* jfastsum_set_x( fastsum_plan* p, double* x, int N, int nn, int m ){ return p -> x; } -double* jfastsum_set_y( fastsum_plan* p, double* y, int M, int nn, int m ){ - if ( !(p->y) ) - fastsum_init_guru_target_nodes( p, M, nn, m ); - else { - fastsum_finalize_target_nodes( p ); - fastsum_init_guru_target_nodes( p, M, nn, m ); - } - +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++ ) @@ -142,5 +131,6 @@ void jfastsum_finalize( fastsum_plan* p ){ fastsum_finalize_source_nodes( p ); fastsum_finalize_target_nodes( p ); fastsum_finalize_kernel( p ); + nfft_free( p ); return; } From 6ae6fe0fc9f37bba19089839cd6811f88068e51b Mon Sep 17 00:00:00 2001 From: mischmi96 Date: Mon, 5 Aug 2019 11:24:17 +0200 Subject: [PATCH 029/167] adds minor improvements, adds error message if unknown kernel --- julia/fastsum/fastsum.jl | 7 +++++-- julia/fastsum/libfastsumjulia.c | 7 ++++--- julia/fastsum/simple_test.jl | 18 +++++++++--------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl index 9dc80871..07b426e4 100644 --- a/julia/fastsum/fastsum.jl +++ b/julia/fastsum/fastsum.jl @@ -31,7 +31,6 @@ mutable struct Plan x::Ref{Float64} # source nodes y::Ref{Float64} # target nodes alpha::Ref{ComplexF64} # source coefficients - b::Ref{ComplexF64} # expansion coefficients f::Ref{ComplexF64} # target evaluations plan::Ref{fastsum_plan} # plan (C pointer) @@ -70,7 +69,11 @@ function fastsum_init( p::Plan ) ptr = ccall( ("jfastsum_alloc", lib_path), Ptr{fastsum_plan}, () ) Core.setfield!( p, :plan, ptr ) - ccall( ("jfastsum_init",lib_path), Nothing, (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) ) + 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 ) diff --git a/julia/fastsum/libfastsumjulia.c b/julia/fastsum/libfastsumjulia.c index 92613360..6050c66a 100644 --- a/julia/fastsum/libfastsumjulia.c +++ b/julia/fastsum/libfastsumjulia.c @@ -22,7 +22,7 @@ fastsum_plan* jfastsum_alloc(){ } // c wird von Julia als Float64-Pointer übergeben -void jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, int n, int ps, float eps_I, float eps_B, int N, int M, int nn_x, int nn_y, int m_x, int m_y ){ +int jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, int n, int ps, float eps_I, float 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 ) @@ -56,8 +56,7 @@ void jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, else if ( strcmp(s, "laplacian_rbf") == 0 ) kernel = laplacian_rbf; else { - s = "multiquadric"; - kernel = multiquadric; + return 1; } fastsum_init_guru_kernel( p, d, kernel, c, f | STORE_PERMUTATION_X_ALPHA, n, ps, eps_I, eps_B); @@ -66,6 +65,8 @@ void jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, 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 ){ diff --git a/julia/fastsum/simple_test.jl b/julia/fastsum/simple_test.jl index 3f65c191..03fdcde6 100644 --- a/julia/fastsum/simple_test.jl +++ b/julia/fastsum/simple_test.jl @@ -19,36 +19,36 @@ eps_B = max( 1/16, p/n ) nn = 2*n # create a Plan-Object in Julia -p = fastsum.Plan( d, N, M, n, p, kernel, c, eps_I, eps_B, nn, m ) +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)) ] -p.x = X +plan.x = X # generate coefficients alpha_k alpha = rand(N)+im*rand(N) -p.alpha = alpha +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)) ] -p.y = Y +plan.y = Y # Start the Transformation println( "time:" ) -@time fastsum.trafo( p ) +@time fastsum.trafo( plan ) -f1 = copy( p.f ) +f1 = copy( plan.f ) println( "time direct:" ) -@time fastsum.trafo_exact( p ) -f2 = copy( p.f ) +@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(p.alpha,1) +E_infty = norm(error_vector, Inf)/norm(plan.alpha,1) println( "E_2 error:" ) println( E_2 ) println( "E_infty error:" ) From d397c06ccb435e25c6b8b049b9aa6733e267b7de Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 5 Aug 2019 14:27:31 +0200 Subject: [PATCH 030/167] Add fastsum to travis and windows build script --- .travis.yml | 4 ++-- windows-build-dll.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index e9e45c0a..52a79a2c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ compiler: - gcc - clang os: linux -dist: xenial +dist: bionic sudo: false addons: apt: @@ -63,7 +63,7 @@ script: cat /proc/cpuinfo; ./bootstrap.sh && ./configure --with-window=$WINDOW $ $(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 julia/nf*t; do cd $DIR; for NAME in simple_test*.jl; do ./../../julia-1.1.1/bin/julia "$NAME"; done; cd ../..; done; fi; + && 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 julia/nf*t julia/fastsum; do cd $DIR; for NAME in simple_test*.jl; do ./../../julia-1.1.1/bin/julia "$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 diff --git a/windows-build-dll.sh b/windows-build-dll.sh index fe81e651..ce94a0d7 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -219,7 +219,7 @@ rm -f "$HOMEDIR/$DLLDIR".zip # Julia interface -for LIB in nf*t +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 From 182110fe41887e8c9bc4c9ff6d536d65b84c7ba1 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 5 Aug 2019 15:12:53 +0200 Subject: [PATCH 031/167] Travi CI: Try if build also fails in xenial --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 52a79a2c..8974aa96 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ compiler: - gcc - clang os: linux -dist: bionic +dist: xenial sudo: false addons: apt: From fe2bb5e81ad38884ce34835eb5f850d159651c3b Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Tue, 6 Aug 2019 15:03:55 +0200 Subject: [PATCH 032/167] update linux build script, include static libgomp in Octave and Matlab files --- linux-build-mex.sh | 50 +++++++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index 88f87544..a6730547 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -6,25 +6,23 @@ # # The script is known to work on Ubuntu 18.10. At least the following packages # are required: -# fftw3 libfftw3-dev libcunit1-dev make gcc octave liboctave-dev +# libcunit1-dev make gcc octave liboctave-dev # # For running ./bootstrap.sh, the following packages are required: # autoconf automake libtool # # +# For compiling with recent Octave version, one can use flatpak package org.octave.Octave. # Example call: -# ./linux-build-mex.sh --matlab=/path/to/matlab +# flatpak --command="bash" run org.octave.Octave +# bash linux-build-mex.sh -o /app --matlab=/path/to/matlab # # -# For compiling with recent Octave version, one can use flatpak package org.octave.Octave. -# Then, the following RSYNC variable should be used. +# When using flatpak, the following RSYNC variable should be used. RSYNC="flatpak-spawn --host rsync" # Otherwise, the RSYNC variable should be set to #RSYNC=rsync # -# Possible flatpak call: -# flatpak --command="bash" run org.octave.Octave -# bash linux-build-mex.sh -o /app # Any subsequent commands which fail will cause the shell script to exit immediately set -ex @@ -71,8 +69,9 @@ OCTAVEVERSION=`"$OCTAVEDIR"/bin/octave-cli --eval "fprintf('OCTAVE_VERSION=%s\n' MPFRBUILDDIR=$HOMEDIR/mpfr-$MPFRVERSION MPFRINSTALLDIR=$HOMEDIR/mpfr-$MPFRVERSION-install # Build MPFR for GCC -if [ ! -f "$MPFRBUILDDIR/build-success" ]; then +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" @@ -80,15 +79,16 @@ if [ ! -f "$MPFRBUILDDIR/build-success" ]; then ./configure --prefix="$MPFRINSTALLDIR" make -j4 make install - touch "$MPFRBUILDDIR/build-success" + touch "$MPFRINSTALLDIR/build-success" cd $HOMEDIR fi MPCBUILDDIR=$HOMEDIR/mpc-$MPCVERSION MPCINSTALLDIR=$HOMEDIR/mpc-$MPCVERSION-install # Build MPC for GCC -if [ ! -f "$MPCBUILDDIR/build-success" ]; then +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" @@ -96,7 +96,7 @@ if [ ! -f "$MPCBUILDDIR/build-success" ]; then ./configure --prefix="$MPCINSTALLDIR" --with-mpfr="$MPFRINSTALLDIR" make -j4 make install - touch "$MPCBUILDDIR/build-success" + touch "$MPCINSTALLDIR/build-success" cd $HOMEDIR fi @@ -105,8 +105,9 @@ export LD_LIBRARY_PATH="$MPCINSTALLDIR/lib:$MPFRINSTALLDIR/lib" GCCBUILDDIR="$HOMEDIR/gcc-$GCCVERSION" GCCINSTALLDIR="$HOMEDIR/gcc-$GCCVERSION-install" # Build GCC -if [ ! -f "$GCCBUILDDIR/build-success" ]; then +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" @@ -114,7 +115,7 @@ if [ ! -f "$GCCBUILDDIR/build-success" ]; then 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 "$GCCBUILDDIR/build-success" + touch "$GCCINSTALLDIR/build-success" cd $HOMEDIR fi @@ -177,6 +178,17 @@ 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 +if [ $OMPYN = 1 ]; then + OCTLIBDIR=`octave-config --print OCTLIBDIR` + 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 $GCCINSTALLDIR/lib64/libgomp.a -Wl,--no-whole-archive -L$OCTLIBDIR -L/$OCTAVEDIR/lib -lfftw3_threads -lfftw3 -lpthread -lm -loctinterp -loctave -Wl,-soname -Wl,lib"$SUBDIR".mex -o .libs/lib"$SUBDIR".mex + cd .. + done + cd "$NFFTBUILDDIR" +fi make check NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) @@ -216,11 +228,21 @@ if [ -n "$MATLABDIR" ]; then make clean CC="$GCCINSTALLDIR/bin/gcc-$GCCVERSION" "$NFFTDIR/configure" --enable-all $OMPFLAG --with-matlab="$MATLABDIR" --with-gcc-arch="$GCCARCH" --disable-static --enable-shared 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 $GCCINSTALLDIR/lib64/libgomp.a -Wl,--no-whole-archive -L$MATLABDIR/bin/glnxa64 -L$FFTWDIR/build/threads/.libs -L$FFTWDIR/build/.libs -l:libmwfftw3.so.3 -lm -lmx -lmex -lmat -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 From 3217b766391f4b407b70bd8a53407fce4efd6f6f Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Tue, 6 Aug 2019 17:32:26 +0200 Subject: [PATCH 033/167] Matlab: use only single quotes for compatibility with older versions --- matlab/nfft/test_nfft4d.m | 8 ++++---- matlab/nfft/test_nfft5d.m | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) 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))) From 3bbe17c33140f958af8980f8c917102f4810a403 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Tue, 6 Aug 2019 17:33:02 +0200 Subject: [PATCH 034/167] Windows build script: compile Julia with -O3 --- windows-build-dll.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows-build-dll.sh b/windows-build-dll.sh index 9def2b4b..2a776864 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -233,7 +233,7 @@ cd julia for LIB in nf*t do cd "$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 + gcc -shared .libs/lib"$LIB"julia.o -Wl,--whole-archive ../../.libs/libnfft3_julia.a -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 .. done From 6d63ea33403777be5206d9ad57840d661e720998 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Wed, 7 Aug 2019 09:37:34 +0200 Subject: [PATCH 035/167] fixed missing -O3 in linux build script which caused slow computations --- linux-build-mex.sh | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index a6730547..e3dc3337 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -178,17 +178,6 @@ 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 -if [ $OMPYN = 1 ]; then - OCTLIBDIR=`octave-config --print OCTLIBDIR` - 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 $GCCINSTALLDIR/lib64/libgomp.a -Wl,--no-whole-archive -L$OCTLIBDIR -L/$OCTAVEDIR/lib -lfftw3_threads -lfftw3 -lpthread -lm -loctinterp -loctave -Wl,-soname -Wl,lib"$SUBDIR".mex -o .libs/lib"$SUBDIR".mex - cd .. - done - cd "$NFFTBUILDDIR" -fi make check NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) @@ -233,7 +222,7 @@ if [ -n "$MATLABDIR" ]; then 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 $GCCINSTALLDIR/lib64/libgomp.a -Wl,--no-whole-archive -L$MATLABDIR/bin/glnxa64 -L$FFTWDIR/build/threads/.libs -L$FFTWDIR/build/.libs -l:libmwfftw3.so.3 -lm -lmx -lmex -lmat -Wl,-soname -Wl,lib$SUBDIR.mexa64 -o .libs/lib$SUBDIR.mexa64 + "$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 $GCCINSTALLDIR/lib64/libgomp.a -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" From 660405c65e8f95bb206a1ebe8254ffafcb4b35ea Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Sat, 10 Aug 2019 09:05:55 +0200 Subject: [PATCH 036/167] Build scripts: also build julia/fastsum --- linux-build-mex.sh | 2 +- macos-build-mex.sh | 2 +- windows-build-dll.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index e3dc3337..dc7ba345 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -184,7 +184,7 @@ NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) # Create archive for Julia interface cd julia -for LIB in nf*t +for LIB in nf*t fastsum do cd "$LIB" "$GCCINSTALLDIR/bin/gcc-$GCCVERSION" -shared -fPIC -DPIC .libs/lib"$LIB"julia.o -Wl,--whole-archive ../../.libs/libnfft3_julia.a $FFTWLIBSTATIC $GCCINSTALLDIR/lib64/libgomp.a -Wl,--no-whole-archive -O3 -malign-double -march="$GCCARCH" -Wl,-soname -Wl,lib"$LIB"julia.so -o .libs/lib"$LIB"julia.so diff --git a/macos-build-mex.sh b/macos-build-mex.sh index 6afed888..6cc0ccb8 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -110,7 +110,7 @@ NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) # Create archive for Julia interface cd julia -for LIB in nf*t +for LIB in nf*t fastsum do cd "$LIB" $GCC -o .libs/lib"$LIB"julia.so -bundle .libs/lib"$LIB"julia.o -Wl,-force_load,../../.libs/libnfft3_julia.a $FFTW_LINK_COMMAND -lm -O3 -malign-double -march=core2 -mtune=$GCCARCH -arch x86_64 $OMPLIBS diff --git a/windows-build-dll.sh b/windows-build-dll.sh index a778c476..5f89b2c2 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -244,7 +244,7 @@ mkdir "$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; do cd $DIR; for NAME in simple_test*.jl; do PATH=/c/Windows/System32 $HOMEDIR/julia/bin/julia.exe "$NAME"; done; cd "$NFFTBUILDDIR"; done; +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 From b02d5614d3463c3be4c301671bd00f2612b80024 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 29 Aug 2019 16:19:32 +0200 Subject: [PATCH 037/167] Set include directory for julia/fastsum. Previously, make distcheck failed --- julia/fastsum/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/julia/fastsum/Makefile.am b/julia/fastsum/Makefile.am index f61a74f9..9253fbc2 100644 --- a/julia/fastsum/Makefile.am +++ b/julia/fastsum/Makefile.am @@ -1,7 +1,7 @@ .PHONY: libfastsumjulia-link clean-libfastsumjulia-link # compiler flags -AM_CPPFLAGS = -I$(top_srcdir)/applications/fastsum +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/applications/fastsum # library lib_LTLIBRARIES = libfastsumjulia.la From b8b31a4d7c1893ab27499bb4d8c0cae7d5b15975 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 29 Aug 2019 16:43:08 +0200 Subject: [PATCH 038/167] Remove 3rdparty from dist since the cstripack was only used by iterS2 --- 3rdparty/README | 2 ++ Makefile.am | 17 +++++++++-------- configure.ac | 3 +-- kernel/util/Makefile.am | 5 +++-- 4 files changed, 15 insertions(+), 12 deletions(-) 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/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/configure.ac b/configure.ac index 2e2f8968..00c4ee23 100644 --- a/configure.ac +++ b/configure.ac @@ -591,8 +591,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 \ @@ -669,5 +667,6 @@ AC_CONFIG_FILES(Makefile \ support/Makefile) # temproarily removed: # applications/iterS2/Makefile \ +# 3rdparty/Makefile \ 3rdparty/cstripack/Makefile \ AC_OUTPUT 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) From 8401102303768d15f9e69dd1242fbbed6e88fc2b Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 29 Aug 2019 17:17:19 +0200 Subject: [PATCH 039/167] Travis: alsways make distcheck & update to bionic --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8974aa96..c62376d5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ compiler: - gcc - clang os: linux -dist: xenial +dist: bionic sudo: false addons: apt: @@ -38,10 +38,10 @@ matrix: env: WINDOW=kaiserbessel PRECISION= BUILD_JULIA=1 addons: { apt: { packages: ["libfftw3-dev", "libcunit1-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"] } } before_script: if [ "$BUILD_OCTAVE" = "1" ]; then @@ -79,6 +79,6 @@ deploy: file: ${NFFT_DISTRO} skip_cleanup: true on: - condition: $DIST = dist && $CC = clang + condition: $DIST = distcheck && $CC = clang tags: true repo: NFFT/nfft From a61771b77c5afc5f16e607c9252f7b768b43815d Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Fri, 13 Sep 2019 13:32:47 +0200 Subject: [PATCH 040/167] Prevent superfluous warning in infft --- matlab/infft1d/infft.m | 3 +++ 1 file changed, 3 insertions(+) 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; From e9956d9b9427614a4e8c4df8a413f09c1c139d80 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Tue, 17 Sep 2019 17:10:51 +0200 Subject: [PATCH 041/167] Update file list in readme --- README.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8881b512..4637e58b 100644 --- a/README.md +++ b/README.md @@ -142,34 +142,28 @@ Directory structure ------------------- File/Folder | Purpose -------------------:| ------------------------------------------------------ -3rdparty (dir) | Third-party source code +------------------:| ------------------------------------------------------ls +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.md | This file tests (dir) | CUnit tests -TODO | Work to be done From d0824eb7ba3a7e8fe3d16897ba7b3d7254a98655 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 11 Nov 2019 16:50:09 +0100 Subject: [PATCH 042/167] Add hint to spherical designs in NFSFT testfile --- matlab/nfsft/simple_test.m | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) 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 From 4cffcbe10757cd664a479dfcc5a944fc4e7b2468 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 14 Nov 2019 22:32:12 +0100 Subject: [PATCH 043/167] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4637e58b..ffd2ec7f 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ Directory structure ------------------- File/Folder | Purpose -------------------:| ------------------------------------------------------ls +------------------:| ------------------------------------------------------ 3rdparty (dir) | Third-party source code aclocal.m4 | Macros for configure script applications (dir) | Application programs (see 4) above) From 4248c3832f07af4bc0db3e672e09f1da4f60aa1c Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 19 Dec 2019 13:29:09 +0100 Subject: [PATCH 044/167] Bump version number to 3.5.2alpha --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 00c4ee23..77894b8a 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], [2]) 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])) From 9c24b83b8100858328aa7d7aaea2e823de6ffaea Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Fri, 20 Dec 2019 15:57:52 +0100 Subject: [PATCH 045/167] Test files to compare NFFT with Matlab 2020 nufft --- matlab/nfft/test_nfft1d_nufft.m | 96 +++++++++++++++++++++++++++++++++ matlab/nfft/test_nfft2d_nufft.m | 90 +++++++++++++++++++++++++++++++ 2 files changed, 186 insertions(+) create mode 100644 matlab/nfft/test_nfft1d_nufft.m create mode 100644 matlab/nfft/test_nfft2d_nufft.m diff --git a/matlab/nfft/test_nfft1d_nufft.m b/matlab/nfft/test_nfft1d_nufft.m new file mode 100644 index 00000000..6adcc2c6 --- /dev/null +++ b/matlab/nfft/test_nfft1d_nufft.m @@ -0,0 +1,96 @@ + +% 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; + +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..46cf28b5 --- /dev/null +++ b/matlab/nfft/test_nfft2d_nufft.m @@ -0,0 +1,90 @@ + +% 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; + +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))) From b48bf7a6c76f19e3ed07bed79c3cf8a6612c7345 Mon Sep 17 00:00:00 2001 From: felixbartel Date: Mon, 6 Jan 2020 16:03:32 +0100 Subject: [PATCH 046/167] fixed typo in error message --- julia/nfct/NFCT.jl | 4 ++-- julia/nfft/NFFT.jl | 4 ++-- julia/nfst/NFST.jl | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/julia/nfct/NFCT.jl b/julia/nfct/NFCT.jl index f83eb468..1b6fe16d 100644 --- a/julia/nfct/NFCT.jl +++ b/julia/nfct/NFCT.jl @@ -176,7 +176,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 +190,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) diff --git a/julia/nfft/NFFT.jl b/julia/nfft/NFFT.jl index e8bcd83f..b8595e5e 100644 --- a/julia/nfft/NFFT.jl +++ b/julia/nfft/NFFT.jl @@ -184,7 +184,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 +198,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) diff --git a/julia/nfst/NFST.jl b/julia/nfst/NFST.jl index 43aa4919..13d189a2 100644 --- a/julia/nfst/NFST.jl +++ b/julia/nfst/NFST.jl @@ -173,7 +173,7 @@ function Base.setproperty!(p::NFSTplan{D},v::Symbol,val) where {D} error("NFSTplan 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} @@ -187,7 +187,7 @@ function Base.setproperty!(p::NFSTplan{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(("jnfst_set_x",lib_path),Ptr{Float64},(Ref{nfst_plan},Ref{Cdouble}),p.plan,val) From 940f9ed97e29a91c62f60e28b4774e3bc4d12685 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 6 Jan 2020 17:47:12 +0100 Subject: [PATCH 047/167] Travis: Use standard installation of Octave --- .travis.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index c62376d5..72c53251 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,11 +26,11 @@ env: matrix: include: - compiler: gcc - sudo: required env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 + addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } - compiler: clang - sudo: required env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 + addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } - compiler: gcc env: WINDOW=kaiserbessel PRECISION= BUILD_JULIA=1 addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev"] } } @@ -44,11 +44,6 @@ matrix: env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } 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; 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//./ } ); From 0f8a17e55abb089453ac3c311e19e5c7d67a4b64 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 8 Jan 2020 10:51:07 +0100 Subject: [PATCH 048/167] Use gcc-9 to check if nfsoft-test still fails --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 72c53251..d3c33fc8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,8 +26,8 @@ env: matrix: include: - compiler: gcc - env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 - addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } + env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 CC=gcc-9 + addons: { apt: { sources: ["ubuntu-toolchain-r-test"] packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev", "gcc-9"]] } } - compiler: clang env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } From f79d18448857959c921f085c0800e7d2e6344934 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 8 Jan 2020 10:55:44 +0100 Subject: [PATCH 049/167] Correct travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d3c33fc8..725ab31d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,7 @@ matrix: include: - compiler: gcc env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 CC=gcc-9 - addons: { apt: { sources: ["ubuntu-toolchain-r-test"] packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev", "gcc-9"]] } } + addons: { apt: { sources: ["ubuntu-toolchain-r-test"] packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev", "gcc-9"] } } - compiler: clang env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } From 0a882ed274955d82904b4ad5be80f4d8b41a4886 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 8 Jan 2020 11:02:43 +0100 Subject: [PATCH 050/167] Update travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 725ab31d..244b340d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,7 @@ matrix: include: - compiler: gcc env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 CC=gcc-9 - addons: { apt: { sources: ["ubuntu-toolchain-r-test"] packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev", "gcc-9"] } } + addons: { apt: { sources: ["ubuntu-toolchain-r-test"] , packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev", "gcc-9"] } } - compiler: clang env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } From 75ac71cc76e9479a9a346e20a9c2a0c62707196c Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 8 Jan 2020 11:19:00 +0100 Subject: [PATCH 051/167] Install gcc-9 properly --- .travis.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 244b340d..f5adea22 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,8 +26,7 @@ env: matrix: include: - compiler: gcc - env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 CC=gcc-9 - addons: { apt: { sources: ["ubuntu-toolchain-r-test"] , packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev", "gcc-9"] } } + env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 - compiler: clang env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } @@ -44,6 +43,12 @@ matrix: env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } before_script: + if [ "$BUILD_OCTAVE" = "1" ]; then + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; + sudo apt-get update --option Acquire::Retries=10 --option Acquire::http::Timeout="30"; + sudo apt-get install -y libfftw3-dev libcunit1-dev liboctave-dev gcc-9; + export CC=gcc-9; + fi; 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//./ } ); From 3a24b6e885b7510c9a5d357c03636aa81d4587f9 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Tue, 4 Feb 2020 14:01:53 +0100 Subject: [PATCH 052/167] Fix #103: Link fftw_libs in fastsum --- applications/fastsum/Makefile.am | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 From b8c6d0ed3df9b01fba1be6fb41237e55d5b5002a Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Wed, 8 Apr 2020 13:26:01 +0200 Subject: [PATCH 053/167] #105 Remove error when N is odd in NFCT/NFST --- julia/nfct/NFCT.jl | 4 ---- julia/nfst/NFST.jl | 4 ---- kernel/nfct/nfct.c | 5 +---- kernel/nfst/nfst.c | 5 +---- matlab/nfct/nfct.m | 14 +++++++------- matlab/nfct/nfctmex.c | 18 +++++++++--------- matlab/nfct/test_nfct1d.m | 6 +++--- matlab/nfst/nfst.m | 14 +++++++------- matlab/nfst/nfstmex.c | 26 +++++++++++++------------- matlab/nfst/test_nfst1d.m | 6 +++--- 10 files changed, 44 insertions(+), 58 deletions(-) diff --git a/julia/nfct/NFCT.jl b/julia/nfct/NFCT.jl index 1b6fe16d..5b264732 100644 --- a/julia/nfct/NFCT.jl +++ b/julia/nfct/NFCT.jl @@ -72,10 +72,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 diff --git a/julia/nfst/NFST.jl b/julia/nfst/NFST.jl index 13d189a2..08666369 100644 --- a/julia/nfst/NFST.jl +++ b/julia/nfst/NFST.jl @@ -104,10 +104,6 @@ function NFSTplan(N::NTuple{D,Integer},M::Integer,n::NTuple{D,Integer},m::Intege 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 diff --git a/kernel/nfct/nfct.c b/kernel/nfct/nfct.c index 5c53a383..5b817354 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 @@ -1134,9 +1134,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/nfst/nfst.c b/kernel/nfst/nfst.c index 51af682c..9edeacf7 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 @@ -1133,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/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/nfctmex.c b/matlab/nfct/nfctmex.c index e0bd8b25..45ef90b8 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 @@ -41,8 +41,8 @@ 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.");) + DM(if (t < 0) + mexErrMsgTxt("nfct: Input argument N must be non-negative.");) *n = t; t = nfft_mex_get_int(prhs[2],"nfct: Input argument M must be a scalar."); DM(if (t < 1) @@ -71,18 +71,18 @@ static inline void get_n1n2m(const mxArray *prhs[], int *n1, int *n2, int *m) 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.");) + DM(if (t < 0) + mexErrMsgTxt("nfct: Input argument N1 must be non-negative.");) *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.");) + DM(if (t < 0) + mexErrMsgTxt("nfct: Input argument N2 must be non-negative.");) *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.");) + DM(if (t < 0) + mexErrMsgTxt("nfct: Input argument N3 must be non-negative.");) *n3 = t; t = nfft_mex_get_int(prhs[4],"nfct: Input argument M must be a scalar."); 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/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/nfstmex.c b/matlab/nfst/nfstmex.c index 00f1a740..872443a2 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 @@ -41,8 +41,8 @@ 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.");) + DM(if (t < 0) + mexPrintf("nfst: Input argument N must be non-negative.");) *n = t; t = nfft_mex_get_int(prhs[2],"nfst: Input argument M must be a scalar."); DM(if (t < 1) @@ -53,13 +53,13 @@ static inline void get_nm(const mxArray *prhs[], int *n, int *m) 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.");) + DM(if (t < 0) + mexPrintf("nfst: Input argument N1 must be non-negative.");) *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.");) + DM(if (t < 0) + mexPrintf("nfst: Input argument N2 must be non-negative.");) *n2 = t; t = nfft_mex_get_int(prhs[3],"nfst: Input argument M must be a scalar."); @@ -71,18 +71,18 @@ static inline void get_n1n2m(const mxArray *prhs[], int *n1, int *n2, int *m) 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.");) + DM(if (t < 0) + mexErrMsgTxt("nfst: Input argument N1 must be non-negative.");) *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.");) + DM(if (t < 0) + mexErrMsgTxt("nfst: Input argument N2 must be non-negative.");) *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.");) + DM(if (t < 0) + mexErrMsgTxt("nfst: Input argument N3 must be non-negative.");) *n3 = t; t = nfft_mex_get_int(prhs[4],"nfst: Input argument M must be a scalar."); 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 From 393b8614b1897732a502c40c9190101507ffdce2 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Wed, 8 Apr 2020 15:01:12 +0200 Subject: [PATCH 054/167] Update .travis.yml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index f5adea22..224e838f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,6 @@ compiler: - clang os: linux dist: bionic -sudo: false addons: apt: packages: @@ -63,7 +62,8 @@ script: cat /proc/cpuinfo; ./bootstrap.sh && ./configure --with-window=$WINDOW $ $(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 julia/nf*t julia/fastsum; do cd $DIR; for NAME in simple_test*.jl; do ./../../julia-1.1.1/bin/julia "$NAME"; done; cd ../..; done; fi; + && if test "$BUILD_JULIA" = "1"; then wget 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 && for DIR in julia/nf*t julia/fastsum; do cd $DIR; for NAME in simple_test*.jl; do ./../../julia-1.3.1/bin/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-cli --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 From f34ebbc233717953a4650674f4b6326b3813ff8d Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Tue, 14 Apr 2020 14:27:02 +0200 Subject: [PATCH 055/167] NFCT/NFST unit tests with odd N --- tests/check_nfct.m | 5 +- tests/check_nfct.nb | 116 +-- tests/check_nfst.m | 5 +- tests/check_nfst.nb | 112 ++- tests/data/Makefile.am | 129 ++- tests/data/nfct_1d_10_20.txt | 59 -- .../{nfst_1d_20_20.txt => nfct_1d_10_25.txt} | 63 +- tests/data/nfct_1d_1_20.txt | 50 -- tests/data/nfct_1d_1_25.txt | 60 ++ tests/data/nfct_1d_20_20.txt | 69 -- .../{nfst_1d_20_1.txt => nfct_1d_25_1.txt} | 10 +- .../{nfst_1d_20_10.txt => nfct_1d_25_10.txt} | 28 +- tests/data/nfct_1d_25_25.txt | 84 ++ .../{nfst_1d_20_50.txt => nfct_1d_25_50.txt} | 108 +-- tests/data/nfct_1d_2_20.txt | 51 -- tests/data/nfct_1d_2_25.txt | 61 ++ tests/data/nfct_1d_4_20.txt | 53 -- tests/data/nfct_1d_4_25.txt | 63 ++ .../{nfst_1d_50_20.txt => nfct_1d_50_25.txt} | 63 +- ...t_2d_10_10_20.txt => nfct_2d_10_10_25.txt} | 136 +-- tests/data/nfct_2d_10_25_25.txt | 335 ++++++++ ...t_2d_20_20_20.txt => nfct_2d_10_25_50.txt} | 285 +++---- tests/data/nfct_2d_25_10_25.txt | 335 ++++++++ ...t_2d_20_20_50.txt => nfct_2d_25_10_50.txt} | 215 ++--- ...t_2d_20_20_20.txt => nfct_2d_25_25_25.txt} | 346 ++++++-- tests/data/nfct_2d_25_25_50.txt | 785 ++++++++++++++++++ ...1d_20_20.txt => nfct_adjoint_1d_10_25.txt} | 54 +- tests/data/nfct_adjoint_1d_1_20.txt | 50 -- ...t_1d_4_20.txt => nfct_adjoint_1d_1_25.txt} | 28 +- ...t_1d_20_1.txt => nfct_adjoint_1d_25_1.txt} | 7 +- ...1d_20_10.txt => nfct_adjoint_1d_25_10.txt} | 7 +- tests/data/nfct_adjoint_1d_25_25.txt | 84 ++ ...1d_20_50.txt => nfct_adjoint_1d_25_50.txt} | 7 +- ...t_1d_2_20.txt => nfct_adjoint_1d_2_25.txt} | 26 +- ...t_1d_4_20.txt => nfct_adjoint_1d_4_25.txt} | 30 +- tests/data/nfct_adjoint_1d_50_20.txt | 99 --- tests/data/nfct_adjoint_1d_50_25.txt | 109 +++ tests/data/nfct_adjoint_2d_10_10_20.txt | 170 ---- tests/data/nfct_adjoint_2d_10_10_25.txt | 185 +++++ tests/data/nfct_adjoint_2d_10_20_20.txt | 270 ------ tests/data/nfct_adjoint_2d_10_25_25.txt | 335 ++++++++ ...20_50.txt => nfct_adjoint_2d_10_25_50.txt} | 52 +- tests/data/nfct_adjoint_2d_20_10_20.txt | 270 ------ tests/data/nfct_adjoint_2d_20_20_20.txt | 470 ----------- tests/data/nfct_adjoint_2d_25_10_25.txt | 335 ++++++++ ...10_50.txt => nfct_adjoint_2d_25_10_50.txt} | 52 +- tests/data/nfct_adjoint_2d_25_25_25.txt | 710 ++++++++++++++++ ...20_50.txt => nfct_adjoint_2d_25_25_50.txt} | 229 ++++- tests/data/nfst_1d_10_2.txt | 22 - tests/data/nfst_1d_10_20.txt | 58 -- tests/data/nfst_1d_10_25.txt | 68 ++ tests/data/nfst_1d_20_2.txt | 32 - .../{nfct_1d_20_1.txt => nfst_1d_25_1.txt} | 8 +- .../{nfct_1d_20_10.txt => nfst_1d_25_10.txt} | 26 +- tests/data/nfst_1d_25_25.txt | 83 ++ .../{nfct_1d_20_50.txt => nfst_1d_25_50.txt} | 106 +-- tests/data/nfst_1d_2_2.txt | 14 - tests/data/nfst_1d_2_20.txt | 50 -- tests/data/nfst_1d_2_25.txt | 60 ++ tests/data/nfst_1d_4_2.txt | 16 - tests/data/nfst_1d_4_20.txt | 52 -- tests/data/nfst_1d_4_25.txt | 62 ++ tests/data/nfst_1d_50_2.txt | 62 -- .../{nfct_1d_50_20.txt => nfst_1d_50_25.txt} | 61 +- ...t_2d_10_10_20.txt => nfst_2d_10_10_25.txt} | 116 ++- tests/data/nfst_2d_10_20_20.txt | 241 ------ tests/data/nfst_2d_10_20_50.txt | 331 -------- ...t_2d_20_10_20.txt => nfst_2d_10_25_25.txt} | 135 +-- ...t_2d_10_20_50.txt => nfst_2d_10_25_50.txt} | 118 +-- tests/data/nfst_2d_20_10_20.txt | 241 ------ tests/data/nfst_2d_20_10_50.txt | 331 -------- ...t_2d_10_20_20.txt => nfst_2d_25_10_25.txt} | 135 +-- ...t_2d_20_10_50.txt => nfst_2d_25_10_50.txt} | 118 +-- ...t_2d_20_20_50.txt => nfst_2d_25_25_25.txt} | 355 +++++--- tests/data/nfst_2d_25_25_50.txt | 736 ++++++++++++++++ ...1d_20_20.txt => nfst_adjoint_1d_10_25.txt} | 52 +- ...t_1d_20_1.txt => nfst_adjoint_1d_25_1.txt} | 7 +- ...1d_20_10.txt => nfst_adjoint_1d_25_10.txt} | 7 +- tests/data/nfst_adjoint_1d_25_25.txt | 83 ++ ...1d_20_50.txt => nfst_adjoint_1d_25_50.txt} | 7 +- tests/data/nfst_adjoint_1d_2_20.txt | 50 -- ..._1d_10_20.txt => nfst_adjoint_1d_2_25.txt} | 34 +- ..._1d_10_20.txt => nfst_adjoint_1d_4_25.txt} | 37 +- tests/data/nfst_adjoint_1d_50_20.txt | 98 --- tests/data/nfst_adjoint_1d_50_25.txt | 108 +++ tests/data/nfst_adjoint_2d_10_10_20.txt | 151 ---- tests/data/nfst_adjoint_2d_10_10_25.txt | 166 ++++ tests/data/nfst_adjoint_2d_10_20_20.txt | 241 ------ tests/data/nfst_adjoint_2d_10_25_25.txt | 301 +++++++ ...20_50.txt => nfst_adjoint_2d_10_25_50.txt} | 47 +- tests/data/nfst_adjoint_2d_20_10_20.txt | 241 ------ tests/data/nfst_adjoint_2d_20_20_20.txt | 431 ---------- tests/data/nfst_adjoint_2d_25_10_25.txt | 301 +++++++ ...10_50.txt => nfst_adjoint_2d_25_10_50.txt} | 47 +- tests/data/nfst_adjoint_2d_25_25_25.txt | 661 +++++++++++++++ ...20_50.txt => nfst_adjoint_2d_25_25_50.txt} | 219 ++++- tests/nfct.c | 128 +-- tests/nfst.c | 120 +-- 98 files changed, 8669 insertions(+), 5710 deletions(-) delete mode 100644 tests/data/nfct_1d_10_20.txt rename tests/data/{nfst_1d_20_20.txt => nfct_1d_10_25.txt} (50%) delete mode 100644 tests/data/nfct_1d_1_20.txt create mode 100644 tests/data/nfct_1d_1_25.txt delete mode 100644 tests/data/nfct_1d_20_20.txt rename tests/data/{nfst_1d_20_1.txt => nfct_1d_25_1.txt} (74%) rename tests/data/{nfst_1d_20_10.txt => nfct_1d_25_10.txt} (65%) create mode 100644 tests/data/nfct_1d_25_25.txt rename tests/data/{nfst_1d_20_50.txt => nfct_1d_25_50.txt} (56%) delete mode 100644 tests/data/nfct_1d_2_20.txt create mode 100644 tests/data/nfct_1d_2_25.txt delete mode 100644 tests/data/nfct_1d_4_20.txt create mode 100644 tests/data/nfct_1d_4_25.txt rename tests/data/{nfst_1d_50_20.txt => nfct_1d_50_25.txt} (64%) rename tests/data/{nfst_2d_10_10_20.txt => nfct_2d_10_10_25.txt} (63%) create mode 100644 tests/data/nfct_2d_10_25_25.txt rename tests/data/{nfst_2d_20_20_20.txt => nfct_2d_10_25_50.txt} (69%) create mode 100644 tests/data/nfct_2d_25_10_25.txt rename tests/data/{nfst_2d_20_20_50.txt => nfct_2d_25_10_50.txt} (68%) rename tests/data/{nfct_2d_20_20_20.txt => nfct_2d_25_25_25.txt} (61%) create mode 100644 tests/data/nfct_2d_25_25_50.txt rename tests/data/{nfct_adjoint_1d_20_20.txt => nfct_adjoint_1d_10_25.txt} (58%) delete mode 100644 tests/data/nfct_adjoint_1d_1_20.txt rename tests/data/{nfst_adjoint_1d_4_20.txt => nfct_adjoint_1d_1_25.txt} (68%) rename tests/data/{nfct_adjoint_1d_20_1.txt => nfct_adjoint_1d_25_1.txt} (81%) rename tests/data/{nfct_adjoint_1d_20_10.txt => nfct_adjoint_1d_25_10.txt} (89%) create mode 100644 tests/data/nfct_adjoint_1d_25_25.txt rename tests/data/{nfct_adjoint_1d_20_50.txt => nfct_adjoint_1d_25_50.txt} (96%) rename tests/data/{nfct_adjoint_1d_2_20.txt => nfct_adjoint_1d_2_25.txt} (67%) rename tests/data/{nfct_adjoint_1d_4_20.txt => nfct_adjoint_1d_4_25.txt} (65%) delete mode 100644 tests/data/nfct_adjoint_1d_50_20.txt create mode 100644 tests/data/nfct_adjoint_1d_50_25.txt delete mode 100644 tests/data/nfct_adjoint_2d_10_10_20.txt create mode 100644 tests/data/nfct_adjoint_2d_10_10_25.txt delete mode 100644 tests/data/nfct_adjoint_2d_10_20_20.txt create mode 100644 tests/data/nfct_adjoint_2d_10_25_25.txt rename tests/data/{nfct_adjoint_2d_10_20_50.txt => nfct_adjoint_2d_10_25_50.txt} (87%) delete mode 100644 tests/data/nfct_adjoint_2d_20_10_20.txt delete mode 100644 tests/data/nfct_adjoint_2d_20_20_20.txt create mode 100644 tests/data/nfct_adjoint_2d_25_10_25.txt rename tests/data/{nfct_adjoint_2d_20_10_50.txt => nfct_adjoint_2d_25_10_50.txt} (87%) create mode 100644 tests/data/nfct_adjoint_2d_25_25_25.txt rename tests/data/{nfct_adjoint_2d_20_20_50.txt => nfct_adjoint_2d_25_25_50.txt} (71%) delete mode 100644 tests/data/nfst_1d_10_2.txt delete mode 100644 tests/data/nfst_1d_10_20.txt create mode 100644 tests/data/nfst_1d_10_25.txt delete mode 100644 tests/data/nfst_1d_20_2.txt rename tests/data/{nfct_1d_20_1.txt => nfst_1d_25_1.txt} (80%) rename tests/data/{nfct_1d_20_10.txt => nfst_1d_25_10.txt} (69%) create mode 100644 tests/data/nfst_1d_25_25.txt rename tests/data/{nfct_1d_20_50.txt => nfst_1d_25_50.txt} (57%) delete mode 100644 tests/data/nfst_1d_2_2.txt delete mode 100644 tests/data/nfst_1d_2_20.txt create mode 100644 tests/data/nfst_1d_2_25.txt delete mode 100644 tests/data/nfst_1d_4_2.txt delete mode 100644 tests/data/nfst_1d_4_20.txt create mode 100644 tests/data/nfst_1d_4_25.txt delete mode 100644 tests/data/nfst_1d_50_2.txt rename tests/data/{nfct_1d_50_20.txt => nfst_1d_50_25.txt} (66%) rename tests/data/{nfct_2d_10_10_20.txt => nfst_2d_10_10_25.txt} (76%) delete mode 100644 tests/data/nfst_2d_10_20_20.txt delete mode 100644 tests/data/nfst_2d_10_20_50.txt rename tests/data/{nfct_2d_20_10_20.txt => nfst_2d_10_25_25.txt} (79%) rename tests/data/{nfct_2d_10_20_50.txt => nfst_2d_10_25_50.txt} (82%) delete mode 100644 tests/data/nfst_2d_20_10_20.txt delete mode 100644 tests/data/nfst_2d_20_10_50.txt rename tests/data/{nfct_2d_10_20_20.txt => nfst_2d_25_10_25.txt} (79%) rename tests/data/{nfct_2d_20_10_50.txt => nfst_2d_25_10_50.txt} (82%) rename tests/data/{nfct_2d_20_20_50.txt => nfst_2d_25_25_25.txt} (69%) create mode 100644 tests/data/nfst_2d_25_25_50.txt rename tests/data/{nfst_adjoint_1d_20_20.txt => nfst_adjoint_1d_10_25.txt} (59%) rename tests/data/{nfst_adjoint_1d_20_1.txt => nfst_adjoint_1d_25_1.txt} (80%) rename tests/data/{nfst_adjoint_1d_20_10.txt => nfst_adjoint_1d_25_10.txt} (88%) create mode 100644 tests/data/nfst_adjoint_1d_25_25.txt rename tests/data/{nfst_adjoint_1d_20_50.txt => nfst_adjoint_1d_25_50.txt} (96%) delete mode 100644 tests/data/nfst_adjoint_1d_2_20.txt rename tests/data/{nfst_adjoint_1d_10_20.txt => nfst_adjoint_1d_2_25.txt} (68%) rename tests/data/{nfct_adjoint_1d_10_20.txt => nfst_adjoint_1d_4_25.txt} (66%) delete mode 100644 tests/data/nfst_adjoint_1d_50_20.txt create mode 100644 tests/data/nfst_adjoint_1d_50_25.txt delete mode 100644 tests/data/nfst_adjoint_2d_10_10_20.txt create mode 100644 tests/data/nfst_adjoint_2d_10_10_25.txt delete mode 100644 tests/data/nfst_adjoint_2d_10_20_20.txt create mode 100644 tests/data/nfst_adjoint_2d_10_25_25.txt rename tests/data/{nfst_adjoint_2d_10_20_50.txt => nfst_adjoint_2d_10_25_50.txt} (87%) delete mode 100644 tests/data/nfst_adjoint_2d_20_10_20.txt delete mode 100644 tests/data/nfst_adjoint_2d_20_20_20.txt create mode 100644 tests/data/nfst_adjoint_2d_25_10_25.txt rename tests/data/{nfst_adjoint_2d_20_10_50.txt => nfst_adjoint_2d_25_10_50.txt} (87%) create mode 100644 tests/data/nfst_adjoint_2d_25_25_25.txt rename tests/data/{nfst_adjoint_2d_20_20_50.txt => nfst_adjoint_2d_25_25_50.txt} (70%) 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..28f866d2 100644 --- a/tests/nfct.c +++ b/tests/nfct.c @@ -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/nfst.c b/tests/nfst.c index 97f832fd..f1693b89 100644 --- a/tests/nfst.c +++ b/tests/nfst.c @@ -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}; From 83b8ed89936ada9742950e7d28d9f00103a63394 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Thu, 14 May 2020 18:30:19 +0200 Subject: [PATCH 056/167] #107 Compute NFFT_EPSILON at runtime. Prevents error during configure e.g. when cross-compiling. --- configure.ac | 9 ------- include/infft.h | 7 +++-- kernel/util/float.c | 11 ++++++-- kernel/util/sinc.c | 2 +- m4/ax_eps_def.m4 | 65 --------------------------------------------- tests/bessel.c | 7 ++--- tests/bspline.c | 7 ++--- tests/nfct.c | 4 +-- tests/nfft.c | 6 ++--- tests/nfst.c | 4 +-- 10 files changed, 30 insertions(+), 92 deletions(-) delete mode 100644 m4/ax_eps_def.m4 diff --git a/configure.ac b/configure.ac index 77894b8a..a45386bc 100644 --- a/configure.ac +++ b/configure.ac @@ -572,15 +572,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" ) diff --git a/include/infft.h b/include/infft.h index f751247a..059a45cd 100644 --- a/include/infft.h +++ b/include/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/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 -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; isigma[0]); i < p->d; i++) 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 f1693b89..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++) From 5a3e086c6c6ff080b4701d2ea734929948cd1c91 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Wed, 3 Jun 2020 14:14:52 +0200 Subject: [PATCH 057/167] bootstrap.sh: Remove ancient paranoia #109 This was done in FFTW3 as well fc852fcdfa80fab30eac2284249686853efa2e4b --- bootstrap.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 4241b314..50de2240 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -34,11 +34,8 @@ 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 From f1eceb8146f4dfdae7a43518aa7e9883c1828832 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 3 Jun 2020 16:29:45 +0200 Subject: [PATCH 058/167] Update AUTHORS --- AUTHORS | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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) + From ef7483351dea2cb544833aae07054ff6e169467f Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Sat, 6 Jun 2020 16:43:46 +0200 Subject: [PATCH 059/167] Check if fftw3 works without -lpthread and -lm This prevents warnings for not found -lpthread in Windows --- .gitignore | 1 + m4/ax_lib_fftw3.m4 | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 39d6a47f..e946c99d 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,7 @@ *.asv # Other +.autotools .cproject .project .settings diff --git a/m4/ax_lib_fftw3.m4 b/m4/ax_lib_fftw3.m4 index 5afb45bc..7a51d5e5 100644 --- a/m4/ax_lib_fftw3.m4 +++ b/m4/ax_lib_fftw3.m4 @@ -91,11 +91,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 From 032a6ed4b174bf738a321023876213fdfd02fb9e Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Mon, 15 Jun 2020 16:30:37 +0200 Subject: [PATCH 060/167] #110 Use in-place fftw by default in d>1 --- applications/fastsum/fastsum.c | 4 ++-- applications/fastsumS2/fastsumS2.c | 7 +++---- .../mri/mri2d/construct_data_inh_2d1d.c | 3 +-- applications/mri/mri2d/construct_data_inh_3d.c | 3 +-- applications/mri/mri2d/reconstruct_data_2d.c | 4 ++-- .../mri/mri2d/reconstruct_data_gridding.c | 3 +-- .../mri/mri2d/reconstruct_data_inh_2d1d.c | 2 +- .../mri/mri2d/reconstruct_data_inh_3d.c | 2 +- applications/mri/mri3d/construct_data_3d.c | 4 ++-- applications/mri/mri3d/reconstruct_data_2d1d.c | 4 ++-- applications/mri/mri3d/reconstruct_data_3d.c | 4 ++-- .../mri/mri3d/reconstruct_data_gridding.c | 4 ++-- applications/polarFFT/linogram_fft_test.c.in | 5 ++--- applications/polarFFT/mpolar_fft_test.c.in | 5 ++--- applications/polarFFT/polar_fft_test.c.in | 5 ++--- applications/quadratureS2/quadratureS2.c | 18 +++++++++--------- applications/radon/inverse_radon.c.in | 5 ++--- applications/radon/radon.c.in | 5 ++--- kernel/nfct/nfct.c | 5 ++--- kernel/nfft/nfft.c | 4 ++-- kernel/nfst/nfst.c | 5 ++--- kernel/nnfft/nnfft.c | 6 ++++-- 22 files changed, 49 insertions(+), 58 deletions(-) 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/fastsumS2/fastsumS2.c b/applications/fastsumS2/fastsumS2.c index 4ca4fa5f..fc9f7f58 100644 --- a/applications/fastsumS2/fastsumS2.c +++ b/applications/fastsumS2/fastsumS2.c @@ -1086,13 +1086,12 @@ int main (int argc, char **argv) nfsft_init_guru(&plan_adjoint, m[im],ld[ild][0], ((use_nfft!=0)?(0U):(NFSFT_USE_NDFT)) | ((use_fpt!=0)?(0U):(NFSFT_USE_DPT)), - PRE_PHI_HUT | PRE_PSI | FFTW_INIT | - FFT_OUT_OF_PLACE, cutoff); + PRE_PHI_HUT | PRE_PSI | FFTW_INIT, + cutoff); nfsft_init_guru(&plan,m[im],ld[ild][1], ((use_nfft!=0)?(0U):(NFSFT_USE_NDFT)) | ((use_fpt!=0)?(0U):(NFSFT_USE_DPT)), - PRE_PHI_HUT | PRE_PSI | FFTW_INIT | - FFT_OUT_OF_PLACE, + PRE_PHI_HUT | PRE_PSI | FFTW_INIT, cutoff); plan_adjoint.f_hat = f_hat; plan_adjoint.x = eta; diff --git a/applications/mri/mri2d/construct_data_inh_2d1d.c b/applications/mri/mri2d/construct_data_inh_2d1d.c index 6e837fcc..8d64ffec 100644 --- a/applications/mri/mri2d/construct_data_inh_2d1d.c +++ b/applications/mri/mri2d/construct_data_inh_2d1d.c @@ -49,8 +49,7 @@ static void construct(char * file, int N, int M) FILE *fp,*fout,*fi,*finh,*ftime; int my_N[3],my_n[3]; int flags = 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; double Ts; double W,T; diff --git a/applications/mri/mri2d/construct_data_inh_3d.c b/applications/mri/mri2d/construct_data_inh_3d.c index f4ecf513..d9bc903a 100644 --- a/applications/mri/mri2d/construct_data_inh_3d.c +++ b/applications/mri/mri2d/construct_data_inh_3d.c @@ -49,8 +49,7 @@ static void construct(char * file, int N, int M) FILE *fp,*fout,*fi,*finh,*ftime; int my_N[3],my_n[3]; int flags = 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; double Ts; double W; diff --git a/applications/mri/mri2d/reconstruct_data_2d.c b/applications/mri/mri2d/reconstruct_data_2d.c index ff7cbcb6..e7697427 100644 --- a/applications/mri/mri2d/reconstruct_data_2d.c +++ b/applications/mri/mri2d/reconstruct_data_2d.c @@ -51,8 +51,8 @@ static void reconstruct(char* filename,int N,int M,int iteration, int weight) my_N[1]=N; my_n[1]=ceil(N*alpha); nfft_init_guru(&my_plan, 2, my_N, M, my_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); + FFTW_INIT, + FFTW_MEASURE); /* precompute lin psi if set */ if(my_plan.flags & PRE_LIN_PSI) diff --git a/applications/mri/mri2d/reconstruct_data_gridding.c b/applications/mri/mri2d/reconstruct_data_gridding.c index 09456b40..9ff47b32 100644 --- a/applications/mri/mri2d/reconstruct_data_gridding.c +++ b/applications/mri/mri2d/reconstruct_data_gridding.c @@ -46,8 +46,7 @@ static void reconstruct(char* filename, int N, int M, int weight) FILE *fout_imag; /* output file */ int my_N[2],my_n[2]; int flags = 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; /* initialise nfft */ my_N[0]=N; my_n[0]=ceil(N*1.2); diff --git a/applications/mri/mri2d/reconstruct_data_inh_2d1d.c b/applications/mri/mri2d/reconstruct_data_inh_2d1d.c index 6b59033e..f3c2e8db 100644 --- a/applications/mri/mri2d/reconstruct_data_inh_2d1d.c +++ b/applications/mri/mri2d/reconstruct_data_inh_2d1d.c @@ -45,7 +45,7 @@ static void reconstruct(char* filename,int N,int M,int iteration , int weight) FILE* fp,*fw,*fout_real,*fout_imag,*finh,*ftime; int my_N[3],my_n[3]; int flags = PRE_PHI_HUT| PRE_PSI |MALLOC_X| MALLOC_F_HAT| - MALLOC_F| FFTW_INIT| FFT_OUT_OF_PLACE; + MALLOC_F| FFTW_INIT; unsigned infft_flags = CGNR | PRECOMPUTE_DAMP; double Ts; diff --git a/applications/mri/mri2d/reconstruct_data_inh_3d.c b/applications/mri/mri2d/reconstruct_data_inh_3d.c index 5b5fb3b0..36b7bb61 100644 --- a/applications/mri/mri2d/reconstruct_data_inh_3d.c +++ b/applications/mri/mri2d/reconstruct_data_inh_3d.c @@ -45,7 +45,7 @@ static void reconstruct(char* filename,int N,int M,int iteration , int weight) FILE* fp,*fw,*fout_real,*fout_imag,*finh,*ftime; int my_N[3],my_n[3]; int flags = PRE_PHI_HUT| PRE_PSI |MALLOC_X| MALLOC_F_HAT| - MALLOC_F| FFTW_INIT| FFT_OUT_OF_PLACE; + MALLOC_F| FFTW_INIT; unsigned infft_flags = CGNR | PRECOMPUTE_DAMP; double Ts; diff --git a/applications/mri/mri3d/construct_data_3d.c b/applications/mri/mri3d/construct_data_3d.c index 74db2dde..eed7d876 100644 --- a/applications/mri/mri3d/construct_data_3d.c +++ b/applications/mri/mri3d/construct_data_3d.c @@ -47,8 +47,8 @@ static void construct(char * file, int N, int M, int Z) 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); fp=fopen("knots.dat","r"); 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/kernel/nfct/nfct.c b/kernel/nfct/nfct.c index 5b817354..a1227dd8 100644 --- a/kernel/nfct/nfct.c +++ b/kernel/nfct/nfct.c @@ -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 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/nfst/nfst.c b/kernel/nfst/nfst.c index 9edeacf7..4ce331b9 100644 --- a/kernel/nfst/nfst.c +++ b/kernel/nfst/nfst.c @@ -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 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); From ea003f166078d80f6dc5edde040d4ac93450f446 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Sat, 6 Jun 2020 20:37:51 +0200 Subject: [PATCH 061/167] #109: removed fixed arch core2 for macos and special arch flag --- m4/ax_apple_gcc_archflag.m4 | 93 ------------------------------------- m4/ax_cc_maxopt.m4 | 5 +- macos-build-mex.sh | 36 +++++++------- 3 files changed, 18 insertions(+), 116 deletions(-) delete mode 100644 m4/ax_apple_gcc_archflag.m4 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..5694f82e 100644 --- a/m4/ax_cc_maxopt.m4 +++ b/m4/ax_cc_maxopt.m4 @@ -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/macos-build-mex.sh b/macos-build-mex.sh index 6cc0ccb8..a8424642 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -4,18 +4,11 @@ # 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 10.5 Catalina 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,12 @@ # Any subsequent commands which fail will cause the shell script to exit immediately set -ex -GCCARCH=core2 -FFTWDIR=/opt/local -GCC=gcc-mp-9 +GCCARCH=haswell +FFTWDIR=/usr/local +GCC="gcc-9 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" # default values (to be overwritten if respective parameters are set) -OCTAVEDIR=/opt/local +OCTAVEDIR=/usr/local # read the options TEMP=`getopt -o o:m:f:v: --long octave:,matlab:,matlab-version:,fftw: -n 'macos-build-mex.sh' -- "$@"` @@ -102,7 +95,7 @@ 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 --disable-examples --disable-applications +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 @@ -110,12 +103,17 @@ NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) # Create archive for Julia interface cd julia -for LIB in nf*t fastsum +for LIB in nf*t do cd "$LIB" - $GCC -o .libs/lib"$LIB"julia.so -bundle .libs/lib"$LIB"julia.o -Wl,-force_load,../../.libs/libnfft3_julia.a $FFTW_LINK_COMMAND -lm -O3 -malign-double -march=core2 -mtune=$GCCARCH -arch x86_64 $OMPLIBS + $GCC -o .libs/lib"$LIB"julia.so -bundle .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 -o .libs/libfastsumjulia.so -bundle .libs/libfastsumjulia.o -Wl,-force_load,../../.libs/libnfft3_julia.a $FFTW_LINK_COMMAND -Wl,-force_load,../../applications/fastsum/.libs/libfastsum.a -Wl,-force_load,../../applications/fastsum/.libs/libkernels.a -lm -O3 -malign-double -march=$GCCARCH $OMPLIBS +cd .. + cd "$NFFTBUILDDIR" ARCH=$(uname -m) @@ -134,7 +132,7 @@ zip -9 -r ../"$JULIADIR".zip "$JULIADIR" 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=$GCCARCH -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 @@ -150,13 +148,13 @@ if [ -n "$MATLABDIR" ]; then fi 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 --disable-examples --disable-applications + 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 From 795211b5392f834898519c638e5d8c5300b621c5 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 8 Jun 2020 19:44:48 +0200 Subject: [PATCH 062/167] Update Travis OSX --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index 224e838f..10eee3dd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,6 +24,10 @@ env: - WINDOW=sinc PRECISION=--enable-long-double matrix: include: + - os: osx + compiler: clang + env: WINDOW=kaiserbessel PRECISION= + addons: { homebrew: { packages: ["fftw", "cunit", "autoconf", "libtool", "make"] } } - compiler: gcc env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 - compiler: clang From 16edbdb94dee16d80d82b7aa56884815327cfef1 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 8 Jun 2020 21:44:52 +0200 Subject: [PATCH 063/167] Update .travis.yml --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 10eee3dd..34b534a1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,7 @@ matrix: - os: osx compiler: clang env: WINDOW=kaiserbessel PRECISION= - addons: { homebrew: { packages: ["fftw", "cunit", "autoconf", "libtool", "make"] } } + install: brew install fftw cunit - compiler: gcc env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 - compiler: clang @@ -46,6 +46,7 @@ matrix: env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } before_script: + cat /proc/cpuinfo; if [ "$BUILD_OCTAVE" = "1" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; sudo apt-get update --option Acquire::Retries=10 --option Acquire::http::Timeout="30"; @@ -60,7 +61,7 @@ before_script: mv configure.ac.modified configure.ac; fi; fi; -script: cat /proc/cpuinfo; ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable-all +script: ./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) From 8d4a15bb1d80c0145801e1bc8ddc5eb79d4f9ec4 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 8 Jun 2020 22:19:28 +0200 Subject: [PATCH 064/167] Travis osx with openmp Integrate Julia in existing unit tests --- .travis.yml | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 34b534a1..a6cc3348 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,7 @@ addons: - libfftw3-dev - libcunit1-dev env: -- WINDOW=kaiserbessel PRECISION= +- WINDOW=kaiserbessel PRECISION= BUILD_JULIA=1 - WINDOW=gaussian PRECISION= - WINDOW=bspline PRECISION= - WINDOW=sinc PRECISION= @@ -24,21 +24,19 @@ env: - WINDOW=sinc PRECISION=--enable-long-double matrix: include: - - os: osx - compiler: clang - env: WINDOW=kaiserbessel PRECISION= - install: brew install fftw cunit - compiler: gcc env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 - compiler: clang env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } - - compiler: gcc - env: WINDOW=kaiserbessel PRECISION= BUILD_JULIA=1 - addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev"] } } - - compiler: clang - env: WINDOW=kaiserbessel PRECISION= BUILD_JULIA=1 - addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev"] } } + - os: osx + compiler: gcc + env: WINDOW=kaiserbessel PRECISION= + install: brew install fftw cunit + - os: osx + compiler: clang + env: WINDOW=kaiserbessel PRECISION= + install: brew install fftw cunit - compiler: gcc env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } @@ -50,8 +48,8 @@ before_script: if [ "$BUILD_OCTAVE" = "1" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; sudo apt-get update --option Acquire::Retries=10 --option Acquire::http::Timeout="30"; - sudo apt-get install -y libfftw3-dev libcunit1-dev liboctave-dev gcc-9; - export CC=gcc-9; + sudo apt-get install -y libfftw3-dev libcunit1-dev liboctave-dev gcc-10; + export CC=gcc-10; fi; if [ "x$TRAVIS_TAG" != "x" ]; then NFFT_TRAVIS_TAG=$(sed -e 's/\([0-9]*\.[0-9]*\.[0-9]*\)\(.*\)/\1.\2/' <<< "$TRAVIS_TAG"); From 7c06face33ed588a64be784b645c5b5144988b1e Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 8 Jun 2020 23:02:08 +0200 Subject: [PATCH 065/167] Travis: enable openmp on clang --- .travis.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index a6cc3348..a6d4d1b3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,10 +29,6 @@ matrix: - compiler: clang env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } - - os: osx - compiler: gcc - env: WINDOW=kaiserbessel PRECISION= - install: brew install fftw cunit - os: osx compiler: clang env: WINDOW=kaiserbessel PRECISION= @@ -59,8 +55,7 @@ before_script: mv configure.ac.modified configure.ac; fi; fi; -script: ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable-all - $(if test "$CC" = "clang"; then echo ""; else echo "--enable-openmp"; fi) +script: ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable-all --enable-openmp" $(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 From 52e6f5ebff9d293713e24a5d63a82196d734d486 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 8 Jun 2020 23:06:04 +0200 Subject: [PATCH 066/167] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a6d4d1b3..e4399292 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,7 +55,7 @@ before_script: mv configure.ac.modified configure.ac; fi; fi; -script: ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable-all --enable-openmp" +script: ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable-all --enable-openmp $(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 From 16cb1896e8e29fe801bbfecb0125ad590e48e576 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 8 Jun 2020 23:26:00 +0200 Subject: [PATCH 067/167] Travis: Fix clang-openmp https://github.com/travis-ci/travis-ci/issues/8613 --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index e4399292..d4288ee6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,6 +41,7 @@ matrix: addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } before_script: cat /proc/cpuinfo; + if [[ $CC == "clang" ]]; then export LD_LIBRARY_PATH='/usr/local/clang/lib'; fi; if [ "$BUILD_OCTAVE" = "1" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; sudo apt-get update --option Acquire::Retries=10 --option Acquire::http::Timeout="30"; From 44a7481d31af8a7140c4e6ffe8a4977d33baf848 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 8 Jun 2020 23:44:27 +0200 Subject: [PATCH 068/167] Update .travis.yml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index d4288ee6..496f3339 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,7 +32,7 @@ matrix: - os: osx compiler: clang env: WINDOW=kaiserbessel PRECISION= - install: brew install fftw cunit + install: brew install fftw cunit libomp - compiler: gcc env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } @@ -61,7 +61,7 @@ script: ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable- $(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.3/julia-1.3.1-linux-x86_64.tar.gz && tar -xf julia-*-linux-x86_64.tar.gz && for DIR in julia/nf*t julia/fastsum; do cd $DIR; for NAME in simple_test*.jl; do ./../../julia-1.3.1/bin/julia "$NAME"; done; cd ../..; done; fi + && if test "$BUILD_JULIA" = "1"; 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 && for DIR in julia/nf*t julia/fastsum; do cd $DIR; for NAME in simple_test*.jl; do ./../../julia-1.3.1/bin/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-cli --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: From 1133a29fcb37692bba31bbbdb5edcb8ce74c5b68 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 8 Jun 2020 23:59:06 +0200 Subject: [PATCH 069/167] Update .travis.yml --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 496f3339..fba5b509 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,7 +41,8 @@ matrix: addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } before_script: cat /proc/cpuinfo; - if [[ $CC == "clang" ]]; then export LD_LIBRARY_PATH='/usr/local/clang/lib'; fi; + if [ $TRAVIS_OS_NAME == "linux" ] && [ $CC == "clang" ]; then export LD_LIBRARY_PATH='/usr/local/clang/lib'; fi; + if [ $TRAVIS_OS_NAME == "osx" ]; then export OPENMP_CFLAGS='-Xpreprocessor -fopenmp -lomp'; fi; if [ "$BUILD_OCTAVE" = "1" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; sudo apt-get update --option Acquire::Retries=10 --option Acquire::http::Timeout="30"; From 1268bdb56c714983f97633df49199bd00db8fc88 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 25 Jun 2020 10:42:59 +0200 Subject: [PATCH 070/167] Travis: No Openmp in osx The osx did apparently compile without openmp --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index fba5b509..421e3ea2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,8 +41,7 @@ matrix: addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } before_script: cat /proc/cpuinfo; - if [ $TRAVIS_OS_NAME == "linux" ] && [ $CC == "clang" ]; then export LD_LIBRARY_PATH='/usr/local/clang/lib'; fi; - if [ $TRAVIS_OS_NAME == "osx" ]; then export OPENMP_CFLAGS='-Xpreprocessor -fopenmp -lomp'; fi; + if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$CC" == "clang" ]; then export LD_LIBRARY_PATH='/usr/local/clang/lib'; fi; if [ "$BUILD_OCTAVE" = "1" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; sudo apt-get update --option Acquire::Retries=10 --option Acquire::http::Timeout="30"; @@ -57,7 +56,7 @@ before_script: mv configure.ac.modified configure.ac; fi; fi; -script: ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable-all --enable-openmp +script: ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable-all $(if test "$TRAVIS_OS_NAME" = "osx"; 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 From 38c15dbd3df104b40c06d1b21094c899ba6ebe29 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 25 Jun 2020 14:35:49 +0200 Subject: [PATCH 071/167] Update ChangeLog for 3.5.2 --- ChangeLog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ChangeLog b/ChangeLog index 779955d7..b45901ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,19 @@ This file contains the version history for NFFT 3.x.x. +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 OSX + Changes in version 3.5.1: Bugfixes From ce16d4c0f5b471c91174f2ceb03da563e4812924 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Thu, 25 Jun 2020 14:49:14 +0200 Subject: [PATCH 072/167] bump minor so version, fix julia fastsum Makefile, change default architecture to haswell in windows/linux binary build script --- configure.ac | 2 +- julia/fastsum/Makefile.am | 2 +- linux-build-mex.sh | 6 +++--- windows-build-dll.sh | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/configure.ac b/configure.ac index a45386bc..2f6183f8 100644 --- a/configure.ac +++ b/configure.ac @@ -79,7 +79,7 @@ LT_INIT([win32-dll]) AC_SUBST([LIBTOOL_DEPS]) # version information for shared library -SHARED_VERSION_INFO="4:1:0" +SHARED_VERSION_INFO="4:2:0" # substitute SHARED_VERSION_INFO in generated Makefiles AC_SUBST(SHARED_VERSION_INFO) diff --git a/julia/fastsum/Makefile.am b/julia/fastsum/Makefile.am index 9253fbc2..7dee084d 100644 --- a/julia/fastsum/Makefile.am +++ b/julia/fastsum/Makefile.am @@ -18,7 +18,7 @@ libfastsumjulia_la_LIBADD = $(top_builddir)/applications/fastsum/libfastsum.la $ libfastsumjulia_la_LDFLAGS = -no-undefined -module -shared -avoid-version @fftw3_LDFLAGS@ -EXTRA_DIST = fastsum.jl +EXTRA_DIST = fastsum.jl simple_test.jl libfastsumjulia-link: all-am soname=`$(EGREP) "^dlname=" libfastsumjulia.la | $(SED) -e "s|^dlname='\(.*\)'|\1|"` ; \ diff --git a/linux-build-mex.sh b/linux-build-mex.sh index dc7ba345..1a156f26 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -29,7 +29,7 @@ set -ex FFTWVERSION=3.3.8 GCCVERSION=8.3.0 -GCCARCH=core2 +GCCARCH=haswell MPFRVERSION=4.0.1 MPCVERSION=1.1.0 @@ -100,7 +100,7 @@ if [ ! -f "$MPCINSTALLDIR/build-success" ]; then cd $HOMEDIR fi -export LD_LIBRARY_PATH="$MPCINSTALLDIR/lib:$MPFRINSTALLDIR/lib" +export LD_LIBRARY_PATH="$MPCINSTALLDIR/lib:$MPFRINSTALLDIR/lib:$LD_LIBRARY_PATH" GCCBUILDDIR="$HOMEDIR/gcc-$GCCVERSION" GCCINSTALLDIR="$HOMEDIR/gcc-$GCCVERSION-install" @@ -195,7 +195,7 @@ 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' "$NFFTDIR/julia/" "$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" echo 'This archive contains the Julia interface of NFFT '$NFFTVERSION' compiled for '$ARCH' Linux using GCC '$GCCVERSION' and FFTW '$FFTWVERSION'. diff --git a/windows-build-dll.sh b/windows-build-dll.sh index 5f89b2c2..0870ddf7 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -6,7 +6,7 @@ # 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.8 --octave=5.2.0 --matlab=/c/path/to/matlab # # WARNING: This script downloads and compiles FFTW and downloads GCC, Julia and Octave (requires ~ 3GB). # @@ -24,7 +24,7 @@ set -ex # default values (to be overwritten if respective parameters are set) FFTWVERSION=3.3.8 -OCTAVEVERSION=5.1.0 +OCTAVEVERSION=5.2.0 MATLABVERSION="" ARCH=64 GCCARCH="" @@ -82,7 +82,7 @@ elif [ "$ARCH" == "64" ]; then ARCHNAME=x86_64 MATLABARCHFLAG="" if [ "$GCCARCH" == "" ]; then - GCCARCH=core2; + GCCARCH=haswell; fi else echo "Unknown architecture!" ; exit 1 ; From dc9b82a30883dc2df6d78b4cc536504eddc0ab3f Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Tue, 30 Jun 2020 13:46:53 +0200 Subject: [PATCH 073/167] Update windows-build-dll for 3.5.2 release. Build only with openmp by default. --- ChangeLog | 3 ++- windows-build-dll.sh | 40 ++++++++++++++++++++-------------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index b45901ef..1c3c1cbe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,7 +12,8 @@ Changes in version 3.5.2: - #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 OSX + - TravisCI tests on OSX. + - Enable AVX2 in precompiled binaries. Changes in version 3.5.1: diff --git a/windows-build-dll.sh b/windows-build-dll.sh index 0870ddf7..15458745 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -29,9 +29,10 @@ MATLABVERSION="" ARCH=64 GCCARCH="" 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. @@ -66,6 +67,8 @@ while true ; do case "$2" in "") shift 2 ;; *) MATLABVERSION="$2"; shift 2 ;; + -s|--without-threads) + OMP_ONLY=0; shift 1 ;; esac ;; --) shift ; break ;; *) echo "Internal error!" ; exit 1 ;; @@ -91,7 +94,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 +115,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 + touch "$FFTWDIR/build-success" +fi +if [ "$OMP_ONLY" = "0" ] && [ -f "$FFTWDIR/build/build-success" ]; then cd ../build - ../configure $FFTWFLAGS --with-windows-f77-mangling --enable-shared + "$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 @@ -151,9 +156,10 @@ if [ ! -f julia/bin/julia.exe ]; then rm -f -r julia mkdir julia cd julia - wget https://julialang-s3.julialang.org/bin/winnt/x64/1.1/julia-1.1.1-win64.exe - 7z x *.exe + 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 @@ -170,7 +176,7 @@ 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" @@ -194,7 +200,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 +"$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 make make check @@ -202,7 +208,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" @@ -233,7 +239,8 @@ cd julia for LIB in nf*t fastsum do cd "$LIB" - gcc -shared .libs/lib"$LIB"julia.o -Wl,--whole-archive ../../.libs/libnfft3_julia.a -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 + if [ "$LIB" = "fastsum" ]; then FASTSUM_LIBS="../../applications/fastsum/.libs/libfastsum.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 .. done @@ -298,18 +305,11 @@ for SUBDIR in nfft nfsft nfsoft nnfft fastsum nfct nfst infft1d fpt ; do fi cd "$NFFTBUILDDIR" done -# for SUBDIR in nfft nfsft/@f_hat nfsft nfsoft nnfft fastsum nfct nfst infft1d fpt - # do - # "$OCTAVEDIR"/bin/octave-cli.exe --no-window-system --eval="cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end" - # if [ -f "$MATLABDIR"/bin/matlab.exe ]; then - # PATH=/c/Windows/System32 "$MATLABDIR"/bin/matlab.exe -wait -nodesktop -nosplash -r "cd $MEXDIR/$SUBDIR; if exist('simple_test')==2; simple_test; end; if exist('test_$SUBDIR')==2; test_$SUBDIR; end; exit" - # fi -# 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'. +'$ARCH'-bit Windows using GCC' $GCCVERSION $ARCHNAME'-w64-mingw32 with march='$GCCARCH$MATLABSTRING' and Octave '$OCTAVEVERSION'. ' "$READMECONTENT" > "$MEXDIR"/readme-matlab.txt unix2dos "$MEXDIR"/readme-matlab.txt rm -f "$HOMEDIR/$MEXDIR".zip From 1025c489a819c1c351693b22675f562d32ccc995 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Tue, 30 Jun 2020 15:02:24 +0200 Subject: [PATCH 074/167] README.md: correct path to documentation --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ffd2ec7f..ba0bdb5b 100644 --- a/README.md +++ b/README.md @@ -25,10 +25,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,7 +37,7 @@ 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. ``` @@ -45,7 +46,7 @@ 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 `--enable-shared`. When working from a source repository, you need to run libtoolize and autoreconf first. A bash script to do this is provided. ``` From 1866e6e7df0a6d4dde868ffd5860875afdbc8812 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Thu, 2 Jul 2020 13:31:36 +0200 Subject: [PATCH 075/167] fixed linux build script: julia fastsum, julia/matlab tests before packaging as in windows build script --- linux-build-mex.sh | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index 1a156f26..459ca791 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -36,6 +36,10 @@ MPCVERSION=1.1.0 # default values (to be overwritten if respective parameters are set) OCTAVEDIR=/usr +JULIA_BIN=julia/julia-1.1.1/bin/julia +JULIA_ARCHIVE=julia-1.1.1-linux-x86_64.tar.gz +JULIA_URL=https://julialang-s3.julialang.org/bin/linux/x64/1.1/$JULIA_ARCHIVE + # read the options TEMP=`getopt -o o:m:f: --long octave:,matlab:,fftw: -n 'linux-build-mex.sh' -- "$@"` eval set -- "$TEMP" @@ -138,6 +142,16 @@ if [ ! -f "$FFTWDIR/build-success" ]; then 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 -e '/^\[!/d' -e '/Directory structure/Q' $NFFTDIR/README) @@ -184,12 +198,18 @@ NFFTVERSION=$( grep 'Version: ' nfft3.pc | cut -c10-) # Create archive for Julia interface cd julia -for LIB in nf*t fastsum +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 $GCCINSTALLDIR/lib64/libgomp.a -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.a ../../applications/fastsum/.libs/libkernels.a ../../.libs/libnfft3_julia.a $FFTWLIBSTATIC $GCCINSTALLDIR/lib64/libgomp.a -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) @@ -197,6 +217,8 @@ 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 Julia interface of NFFT '$NFFTVERSION' compiled for '$ARCH' Linux using GCC '$GCCVERSION' and FFTW '$FFTWVERSION'. ' "$READMECONTENT" "$FFTWREADME" > "$JULIADIR"/readme.txt @@ -235,6 +257,23 @@ 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 From 8b9679dbdb7296fa37a01ea00623b75cf6279b68 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Mon, 20 Jul 2020 14:36:30 +0200 Subject: [PATCH 076/167] Add Solver to Matlab NFFT interface --- m4/ax_prog_matlab.m4 | 14 +++---- matlab/malloc.c | 5 ++- matlab/nfft/Makefile.am | 2 +- matlab/nfft/nfft.m | 28 ++++++++++++++ matlab/nfft/nfftmex.c | 81 ++++++++++++++++++++++++++++------------- 5 files changed, 94 insertions(+), 36 deletions(-) diff --git a/m4/ax_prog_matlab.m4 b/m4/ax_prog_matlab.m4 index 092abd63..5727f3bc 100644 --- a/m4/ax_prog_matlab.m4 +++ b/m4/ax_prog_matlab.m4 @@ -248,19 +248,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 +268,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 +286,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 +294,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 +302,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 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/nfft/Makefile.am b/matlab/nfft/Makefile.am index d2213913..5998367b 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) diff --git a/matlab/nfft/nfft.m b/matlab/nfft/nfft.m index 7c638927..8c0ed9da 100644 --- a/matlab/nfft/nfft.m +++ b/matlab/nfft/nfft.m @@ -359,6 +359,34 @@ 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.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.'); + elseif(~h.fhat_is_set) + error('Before doing an inverse NFFT transform you have to set an initial guess fhat.'); + 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/nfftmex.c b/matlab/nfft/nfftmex.c index 80c92503..b760ad0e 100644 --- a/matlab/nfft/nfftmex.c +++ b/matlab/nfft/nfftmex.c @@ -34,7 +34,7 @@ #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]; @@ -144,17 +144,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 +168,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; } @@ -215,7 +215,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int N, M; 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; @@ -228,7 +228,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int N1, N2, M; 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; @@ -241,7 +241,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int N1, N2, N3, M; 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; @@ -273,7 +273,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); } } @@ -299,7 +299,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); @@ -313,7 +313,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -323,7 +323,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -333,7 +333,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -343,8 +343,8 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; @@ -355,7 +355,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -365,7 +365,36 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i = nfft_mex_get_int(prhs[1],"nfft: Input argument plan must be a scalar."); check_plan(i); - nfft_adjoint_direct(plans[i]); + X(adjoint_direct)(plans[i]); + } + return; + } + else if (strcmp(cmd,"solver") == 0) + { + 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); + 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; } @@ -403,8 +432,8 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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]); } } } @@ -424,8 +453,8 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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]); } } } @@ -469,7 +498,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int j; if (fi) for (j = 0; j < m; j++) - plans[i]->f[j] = fr[j] + _Complex_I*fi[j]; + plans[i]->f[j] = fr[j] + I*fi[j]; else for (j = 0; j < m; j++) plans[i]->f[j] = fr[j]; @@ -494,7 +523,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int k; if (f_hati) for (k = 0; k < n; k++) - plans[i]->f_hat[k] = f_hatr[k] + _Complex_I*f_hati[k]; + plans[i]->f_hat[k] = f_hatr[k] + I*f_hati[k]; else for (k = 0; k < n; k++) plans[i]->f_hat[k] = f_hatr[k]; From 2fe5902a7d62f839f242c1eeec3a1595b22d1c26 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Mon, 20 Jul 2020 18:01:05 +0200 Subject: [PATCH 077/167] Matlab nfft.m Set f_hat to zero in solver by default. Small speed improvements in set/get fhat --- matlab/nfft/nfft.m | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/matlab/nfft/nfft.m b/matlab/nfft/nfft.m index 8c0ed9da..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=[]; @@ -369,18 +369,20 @@ function nfft_solver(h,iterations,varargin) % h object of class type nfft % iterations number of iterations % flags solver flags - if ~isempty(varargin) + if ~isempty(varargin) flags = varargin{1}; - else + else flags = 0; - end % if + 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.'); - elseif(~h.fhat_is_set) - error('Before doing an inverse NFFT transform you have to set an initial guess fhat.'); else nfftmex('solver',h.plan,iterations,flags); h.fhat_is_set=true; @@ -390,4 +392,3 @@ function nfft_solver(h,iterations,varargin) end %methods end %classdef - From c45b1e1816126456a9e9c1696150b01d233bf1e5 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 22 Jul 2020 10:52:12 +0200 Subject: [PATCH 078/167] Fix #112 Link fastsum library with threads in Julia --- julia/fastsum/Makefile.am | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/julia/fastsum/Makefile.am b/julia/fastsum/Makefile.am index 7dee084d..178ab017 100644 --- a/julia/fastsum/Makefile.am +++ b/julia/fastsum/Makefile.am @@ -9,11 +9,13 @@ 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 = $(top_builddir)/applications/fastsum/libfastsum.la $(top_builddir)/applications/fastsum/libkernels.la $(top_builddir)/libnfft3@PREC_SUFFIX@_julia.la @fftw3_LDFLAGS@ $(libadd_for_fftw_threads) @fftw3_LIBS@ +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 -module -shared -avoid-version @fftw3_LDFLAGS@ From 17a7db433c9a77b5786ecd020423e66c18507f57 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 22 Jul 2020 10:55:02 +0200 Subject: [PATCH 079/167] Windows build script Fix build without threads, always perform exhaustive unit tests --- windows-build-dll.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/windows-build-dll.sh b/windows-build-dll.sh index 15458745..b45bd106 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -67,9 +67,9 @@ while true ; do case "$2" in "") shift 2 ;; *) MATLABVERSION="$2"; shift 2 ;; - -s|--without-threads) - OMP_ONLY=0; shift 1 ;; esac ;; + -s|--without-threads) + OMP_ONLY=0; shift 2 ;; --) shift ; break ;; *) echo "Internal error!" ; exit 1 ;; esac @@ -120,8 +120,8 @@ if [ ! -f "$FFTWDIR/build-success" ]; then make -j4 touch "$FFTWDIR/build-success" fi -if [ "$OMP_ONLY" = "0" ] && [ -f "$FFTWDIR/build/build-success" ]; then - cd ../build +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 @@ -200,7 +200,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-examples +"$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 @@ -270,7 +270,7 @@ if [ -n "$MATLABDIR" ]; then 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 @@ -318,7 +318,7 @@ 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 From 66636eab1d137064496f2b57782f70629c62e772 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 22 Jul 2020 11:51:33 +0200 Subject: [PATCH 080/167] #112 Link correct fastsum lib in build scripts and link libgomp only if openmp is activated --- linux-build-mex.sh | 8 +++++--- macos-build-mex.sh | 2 +- windows-build-dll.sh | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index 459ca791..3de46196 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -175,6 +175,7 @@ if [ $OMPYN = 1 ]; then THREADSSUFFIX="_threads" OMPSUFFIX="-openmp" FFTWLIBSTATIC="$FFTWDIR/build/threads/.libs/libfftw3_threads.a $FFTWDIR/build/.libs/libfftw3.a" + GOMPLIBSTATIC="$GCCINSTALLDIR/lib64/libgomp.a" else NFFTBUILDDIR="$HOMEDIR/build" OMPFLAG="" @@ -182,6 +183,7 @@ else THREADSSUFFIX="" OMPSUFFIX="" FFTWLIBSTATIC="$FFTWDIR/build/.libs/libfftw3.a" + GOMPLIBSTATIC="" fi rm -f -r "$NFFTBUILDDIR" @@ -201,13 +203,13 @@ 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 $GCCINSTALLDIR/lib64/libgomp.a -Wl,--no-whole-archive -O3 -malign-double -march="$GCCARCH" -Wl,-soname -Wl,lib"$LIB"julia.so -o .libs/lib"$LIB"julia.so + "$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.a ../../applications/fastsum/.libs/libkernels.a ../../.libs/libnfft3_julia.a $FFTWLIBSTATIC $GCCINSTALLDIR/lib64/libgomp.a -Wl,--no-whole-archive -O3 -malign-double -march="$GCCARCH" -Wl,-soname -Wl,lib"$LIB"julia.so -o .libs/lib"$LIB"julia.so + "$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 $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" @@ -244,7 +246,7 @@ if [ -n "$MATLABDIR" ]; then 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 $GCCINSTALLDIR/lib64/libgomp.a -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 + "$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" diff --git a/macos-build-mex.sh b/macos-build-mex.sh index a8424642..105710dd 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -111,7 +111,7 @@ do done cd fastsum -$GCC -o .libs/libfastsumjulia.so -bundle .libs/libfastsumjulia.o -Wl,-force_load,../../.libs/libnfft3_julia.a $FFTW_LINK_COMMAND -Wl,-force_load,../../applications/fastsum/.libs/libfastsum.a -Wl,-force_load,../../applications/fastsum/.libs/libkernels.a -lm -O3 -malign-double -march=$GCCARCH $OMPLIBS +$GCC -o .libs/libfastsumjulia.so -bundle .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" diff --git a/windows-build-dll.sh b/windows-build-dll.sh index b45bd106..d1a7fc72 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -239,7 +239,7 @@ cd julia for LIB in nf*t fastsum do cd "$LIB" - if [ "$LIB" = "fastsum" ]; then FASTSUM_LIBS="../../applications/fastsum/.libs/libfastsum.a ../../applications/fastsum/.libs/libkernels.a"; else FASTSUM_LIBS=""; fi + 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 .. From fb5c743374359f3ec8024bf994bba7e19de19c84 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Fri, 24 Jul 2020 16:00:06 +0200 Subject: [PATCH 081/167] Bugfixes in build scripts --- linux-build-mex.sh | 6 +++--- macos-build-mex.sh | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index 3de46196..dc0e0506 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -21,7 +21,7 @@ # When using flatpak, the following RSYNC variable should be used. RSYNC="flatpak-spawn --host rsync" # Otherwise, the RSYNC variable should be set to -#RSYNC=rsync +RSYNC=rsync # # Any subsequent commands which fail will cause the shell script to exit immediately @@ -209,7 +209,7 @@ 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 $GOMPLIBSTATIC -Wl,--no-whole-archive -O3 -malign-double -march="$GCCARCH" -Wl,-soname -Wl,lib"$LIB"julia.so -o .libs/lib"$LIB"julia.so + "$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" @@ -239,7 +239,7 @@ 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 - CC="$GCCINSTALLDIR/bin/gcc-$GCCVERSION" "$NFFTDIR/configure" --enable-all $OMPFLAG --with-matlab="$MATLABDIR" --with-gcc-arch="$GCCARCH" --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 diff --git a/macos-build-mex.sh b/macos-build-mex.sh index 105710dd..e1ccadaf 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -148,7 +148,7 @@ if [ -n "$MATLABDIR" ]; then fi 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=$GCCARCH --disable-static --enable-shared --disable-examples --disable-applications + 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 --enable-exhaustive-unit-tests make make check for LIB in nfft nfsft nfsoft nnfft fastsum nfct nfst fpt From 35fb844bbbae4f3b8675f8c2a8841fd65c456a1c Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 3 Aug 2020 15:40:01 +0200 Subject: [PATCH 082/167] Travis: Test Julia in osx --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 421e3ea2..5e95e830 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,7 +32,7 @@ matrix: - os: osx compiler: clang env: WINDOW=kaiserbessel PRECISION= - install: brew install fftw cunit libomp + install: brew install fftw cunit julia - compiler: gcc env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } @@ -61,7 +61,8 @@ script: ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable- $(if test "$BUILD_JULIA" = "1"; then echo "--enable-julia"; else echo ""; fi) && make && make check && make $DIST - && if test "$BUILD_JULIA" = "1"; 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 && for DIR in julia/nf*t julia/fastsum; do cd $DIR; for NAME in simple_test*.jl; do ./../../julia-1.3.1/bin/julia "$NAME"; done; cd ../..; done; fi + && if [ "$BUILD_JULIA" = "1" ] && [ "$TRAVIS_OS_NAME" == "linux" ]; 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 && for DIR in julia/nf*t julia/fastsum; do cd $DIR; for NAME in simple_test*.jl; do ./../../julia-1.3.1/bin/julia "$NAME"; done; cd ../..; done; fi + && if [ "$BUILD_JULIA" = "1" ] && [ "$TRAVIS_OS_NAME" == "osx" ]; 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-cli --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: From 16f0c969718b4886b77bb0c070d66cee0abb064a Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 3 Aug 2020 16:05:55 +0200 Subject: [PATCH 083/167] Update .travis.yml --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5e95e830..20afd53c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,9 +30,10 @@ matrix: env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } - os: osx + osx_image: xcode12u compiler: clang env: WINDOW=kaiserbessel PRECISION= - install: brew install fftw cunit julia + install: brew install fftw cunit; brew cask install julia - compiler: gcc env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } From 44769e8c8e9092fad1cc1e5b53325b3614ed6e33 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Mon, 3 Aug 2020 16:31:58 +0200 Subject: [PATCH 084/167] travis: gcc-9 on macos --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 20afd53c..83f387a6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,9 +31,8 @@ matrix: addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } - os: osx osx_image: xcode12u - compiler: clang - env: WINDOW=kaiserbessel PRECISION= - install: brew install fftw cunit; brew cask install julia + env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 CC=gcc-9 + install: brew install fftw cunit gcc@9 octave; brew cask install julia - compiler: gcc env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } From adda28e24d82c21e716499f772f9c31682cc6751 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Mon, 3 Aug 2020 17:34:56 +0200 Subject: [PATCH 085/167] macos: openmp, fftw dirs, gcc-9 --- .travis.yml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 83f387a6..4eb4cc94 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,8 +31,13 @@ matrix: addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } - os: osx osx_image: xcode12u - env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 CC=gcc-9 + env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 install: brew install fftw cunit gcc@9 octave; brew cask install julia + cache: + directories: + - $HOME/Library/Caches/Homebrew + before_cache: + - brew cleanup - compiler: gcc env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } @@ -42,12 +47,17 @@ matrix: before_script: cat /proc/cpuinfo; if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$CC" == "clang" ]; then export LD_LIBRARY_PATH='/usr/local/clang/lib'; fi; - if [ "$BUILD_OCTAVE" = "1" ]; then + if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_OCTAVE" = "1" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; sudo apt-get update --option Acquire::Retries=10 --option Acquire::http::Timeout="30"; sudo apt-get install -y libfftw3-dev libcunit1-dev liboctave-dev gcc-10; export CC=gcc-10; fi; + if [ "$TRAVIS_OS_NAME" == "osx" ]; then + export CC=gcc-9; + export CPPFLAGS=-I/usr/local/include + export LDFLAGS=-L/usr/local/lib + fi; 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//./ } ); @@ -56,8 +66,8 @@ before_script: mv configure.ac.modified configure.ac; fi; fi; -script: ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable-all $(if test "$TRAVIS_OS_NAME" = "osx"; then echo ""; else echo "--enable-openmp"; fi) - $(if test "$BUILD_OCTAVE" = "1"; then echo "--with-octave=/usr"; else echo ""; fi) +script: ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable-all --enable-openmp + $(if [ "$BUILD_OCTAVE" = "1" ] && [ "$TRAVIS_OS_NAME" == "linux" ]; then echo "--with-octave=/usr"; elif [ "$BUILD_OCTAVE" = "1" ] && [ "$TRAVIS_OS_NAME" == "osx" ]; then echo "--with-octave=/usr/local"; else echo ""; fi) $(if test "$BUILD_JULIA" = "1"; then echo "--enable-julia"; else echo ""; fi) && make && make check && make $DIST From bec12946fe6b1fda65a0f956ea5bd54a61404c8d Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Mon, 3 Aug 2020 17:53:37 +0200 Subject: [PATCH 086/167] macos: openmp, fftw dirs, gcc-9, cache yml --- .travis.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4eb4cc94..c7bc2b9b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,11 @@ language: c compiler: - gcc - clang +cache: + directories: + - $HOME/Library/Caches/Homebrew +before_cache: + - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew cleanup; fi os: linux dist: bionic addons: @@ -33,11 +38,6 @@ matrix: osx_image: xcode12u env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 install: brew install fftw cunit gcc@9 octave; brew cask install julia - cache: - directories: - - $HOME/Library/Caches/Homebrew - before_cache: - - brew cleanup - compiler: gcc env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } From 8c0ec8c552674062f64f99bc34f389c06d710b98 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Mon, 3 Aug 2020 18:09:33 +0200 Subject: [PATCH 087/167] macos: openmp, fftw dirs, gcc-9, cache yml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index c7bc2b9b..7be092e9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,8 +55,8 @@ before_script: fi; if [ "$TRAVIS_OS_NAME" == "osx" ]; then export CC=gcc-9; - export CPPFLAGS=-I/usr/local/include - export LDFLAGS=-L/usr/local/lib + export CPPFLAGS=-I/usr/local/include; + export LDFLAGS=-L/usr/local/lib; fi; if [ "x$TRAVIS_TAG" != "x" ]; then NFFT_TRAVIS_TAG=$(sed -e 's/\([0-9]*\.[0-9]*\.[0-9]*\)\(.*\)/\1.\2/' <<< "$TRAVIS_TAG"); From b3355a6ad9dfdbf960a340c613b757f54c9d0eed Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Mon, 3 Aug 2020 22:33:19 +0200 Subject: [PATCH 088/167] Julia interface: changed extension to dylib for macos --- .travis.yml | 2 +- julia/fastsum/Makefile.am | 2 +- julia/fastsum/fastsum.jl | 2 ++ julia/nfct/Makefile.am | 2 +- julia/nfct/NFCT.jl | 5 ++--- julia/nfft/Makefile.am | 2 +- julia/nfft/NFFT.jl | 5 ++--- julia/nfst/Makefile.am | 2 +- julia/nfst/NFST.jl | 2 ++ julia/nfst/simple_test_3d.jl | 2 +- macos-build-mex.sh | 4 ++-- 11 files changed, 16 insertions(+), 14 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7be092e9..1effc871 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,7 +37,7 @@ matrix: - os: osx osx_image: xcode12u env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 - install: brew install fftw cunit gcc@9 octave; brew cask install julia + addons: { homebrew: { packages: ["fftw", "cunit", "gcc@9", "octave"], casks: ["julia"] } } - compiler: gcc env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } diff --git a/julia/fastsum/Makefile.am b/julia/fastsum/Makefile.am index 178ab017..abb50959 100644 --- a/julia/fastsum/Makefile.am +++ b/julia/fastsum/Makefile.am @@ -18,7 +18,7 @@ endif 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 -module -shared -avoid-version @fftw3_LDFLAGS@ +libfastsumjulia_la_LDFLAGS = -no-undefined -shared -avoid-version @fftw3_LDFLAGS@ EXTRA_DIST = fastsum.jl simple_test.jl diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl index 07b426e4..48806005 100644 --- a/julia/fastsum/fastsum.jl +++ b/julia/fastsum/fastsum.jl @@ -4,6 +4,8 @@ ending = ".so" if Sys.iswindows( ) ending = ".dll" +elseif Sys.isapple() + ending = ".dylib" end const lib_path = string( @__DIR__, "/libfastsumjulia", ending ) diff --git a/julia/nfct/Makefile.am b/julia/nfct/Makefile.am index 19093d73..ef43ce6b 100644 --- a/julia/nfct/Makefile.am +++ b/julia/nfct/Makefile.am @@ -15,7 +15,7 @@ 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 simple_test_3d.jl diff --git a/julia/nfct/NFCT.jl b/julia/nfct/NFCT.jl index 5b264732..9f1af676 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 diff --git a/julia/nfft/Makefile.am b/julia/nfft/Makefile.am index 33b43253..c9880b99 100644 --- a/julia/nfft/Makefile.am +++ b/julia/nfft/Makefile.am @@ -15,7 +15,7 @@ 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 README.md diff --git a/julia/nfft/NFFT.jl b/julia/nfft/NFFT.jl index b8595e5e..69db6647 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 diff --git a/julia/nfst/Makefile.am b/julia/nfst/Makefile.am index 5cfc9efc..92a8dc62 100644 --- a/julia/nfst/Makefile.am +++ b/julia/nfst/Makefile.am @@ -15,7 +15,7 @@ endif libnfstjulia_la_LIBADD = $(top_builddir)/libnfft3@PREC_SUFFIX@_julia.la @fftw3_LDFLAGS@ $(libadd_for_fftw_threads) @fftw3_LIBS@ -libnfstjulia_la_LDFLAGS = -no-undefined -module -shared -avoid-version @fftw3_LDFLAGS@ +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 diff --git a/julia/nfst/NFST.jl b/julia/nfst/NFST.jl index 08666369..97a32a8a 100644 --- a/julia/nfst/NFST.jl +++ b/julia/nfst/NFST.jl @@ -6,6 +6,8 @@ ending = ".so" if Sys.iswindows() ending = ".dll" +elseif Sys.isapple() + ending = ".dylib" end # path to .so file diff --git a/julia/nfst/simple_test_3d.jl b/julia/nfst/simple_test_3d.jl index e6fde604..824f5522 100644 --- a/julia/nfst/simple_test_3d.jl +++ b/julia/nfst/simple_test_3d.jl @@ -2,7 +2,7 @@ push!(LOAD_PATH, pwd()) using NFST using LinearAlgebra -println( "2d NFST Test" ) +println( "3d NFST Test" ) #bandwidth N = ( 32, 16 , 8 ) diff --git a/macos-build-mex.sh b/macos-build-mex.sh index e1ccadaf..52cfabfe 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -106,12 +106,12 @@ cd julia for LIB in nf*t do cd "$LIB" - $GCC -o .libs/lib"$LIB"julia.so -bundle .libs/lib"$LIB"julia.o -Wl,-force_load,../../.libs/libnfft3_julia.a $FFTW_LINK_COMMAND -lm -O3 -malign-double -march=$GCCARCH $OMPLIBS + $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 -o .libs/libfastsumjulia.so -bundle .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 +$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" From 980da34462fe2070c9bf088f733125a571bb052b Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Thu, 6 Aug 2020 22:07:49 +0200 Subject: [PATCH 089/167] Travis: add Windows environment with Julia Octave is currently not working in Windows-Travis Test all precisions and window functions only with gcc --- .travis.yml | 117 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 88 insertions(+), 29 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1effc871..77e7d56c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,15 @@ language: c compiler: - gcc -- clang -cache: - directories: - - $HOME/Library/Caches/Homebrew before_cache: - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew cleanup; fi +- |- + case $TRAVIS_OS_NAME in + osx) + brew cleanup;; + windows) + # https://unix.stackexchange.com/a/137322/107554 + $msys2 pacman --sync --clean --noconfirm;; + esac os: linux dist: bionic addons: @@ -15,7 +18,7 @@ addons: - libfftw3-dev - libcunit1-dev env: -- WINDOW=kaiserbessel PRECISION= BUILD_JULIA=1 +- WINDOW=kaiserbessel PRECISION= - WINDOW=gaussian PRECISION= - WINDOW=bspline PRECISION= - WINDOW=sinc PRECISION= @@ -27,37 +30,92 @@ env: - WINDOW=gaussian PRECISION=--enable-long-double - WINDOW=bspline PRECISION=--enable-long-double - WINDOW=sinc PRECISION=--enable-long-double -matrix: +jobs: include: - - compiler: gcc - env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 - - compiler: clang - env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 - addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } - 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 + 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 + cache: { directories: ["$HOME/AppData/Local/Temp/chocolatey", "/C/tools/msys64"] } + git: { autocrlf: input, symlinks: true } + - compiler: gcc + env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 + - 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=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } - compiler: clang env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } +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-toolchain mingw-w64-x86_64-clang mingw-w64-x86_64-openmp mingw-w64-x86_64-fftw mingw-w64-x86_64-cunit autoconf perl libtool automake make + ## 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: cat /proc/cpuinfo; - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$CC" == "clang" ]; then export LD_LIBRARY_PATH='/usr/local/clang/lib'; fi; - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_OCTAVE" = "1" ]; then - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; - sudo apt-get update --option Acquire::Retries=10 --option Acquire::http::Timeout="30"; - sudo apt-get install -y libfftw3-dev libcunit1-dev liboctave-dev gcc-10; - export CC=gcc-10; - fi; - if [ "$TRAVIS_OS_NAME" == "osx" ]; then + case $TRAVIS_OS_NAME in + linux) + if [ "$CC" == "clang" ]; then export LD_LIBRARY_PATH='/usr/local/clang/lib'; fi; + if [ "$BUILD_OCTAVE" = "1" ]; then + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; + sudo apt-get update --option Acquire::Retries=10 --option Acquire::http::Timeout="30"; + sudo apt-get install -y libfftw3-dev libcunit1-dev liboctave-dev gcc-10; + export CC=gcc-10; + export OCTAVEDIR=/usr; + export OCTAVE=octave; + fi; + if [ "$BUILD_JULIA" = "1" ]; 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_JULIA" = "1" ]; then + export JULIA=julia; + 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; - fi; + export JULIA=julia; + 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//./ } ); @@ -66,14 +124,15 @@ before_script: mv configure.ac.modified configure.ac; fi; fi; -script: ./bootstrap.sh && ./configure --with-window=$WINDOW $PRECISION --enable-all --enable-openmp - $(if [ "$BUILD_OCTAVE" = "1" ] && [ "$TRAVIS_OS_NAME" == "linux" ]; then echo "--with-octave=/usr"; elif [ "$BUILD_OCTAVE" = "1" ] && [ "$TRAVIS_OS_NAME" == "osx" ]; then echo "--with-octave=/usr/local"; else echo ""; fi) - $(if test "$BUILD_JULIA" = "1"; then echo "--enable-julia"; else echo ""; fi) - && make - && make check && make $DIST - && if [ "$BUILD_JULIA" = "1" ] && [ "$TRAVIS_OS_NAME" == "linux" ]; 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 && for DIR in julia/nf*t julia/fastsum; do cd $DIR; for NAME in simple_test*.jl; do ./../../julia-1.3.1/bin/julia "$NAME"; done; cd ../..; done; fi - && if [ "$BUILD_JULIA" = "1" ] && [ "$TRAVIS_OS_NAME" == "osx" ]; 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-cli --eval="run('$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 From 12637f4a8ed785bf9368513ece3c266c8b74074a Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Fri, 7 Aug 2020 11:05:54 +0200 Subject: [PATCH 090/167] macos: slightly increase error bound by 1 percent for nfct tests, add julia/octave/matlab tests to release script --- macos-build-mex.sh | 21 ++++++++++++++++++++- tests/nfct.c | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/macos-build-mex.sh b/macos-build-mex.sh index 52cfabfe..8dae9cb1 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -121,6 +121,9 @@ 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 Julia interface of NFFT '$NFFTVERSION' compiled for '$ARCH' macOS using GCC '$GCCVERSION' and FFTW '$FFTWVERSION'. ' "$READMECONTENT" "$FFTWREADME" > "$JULIADIR"/readme.txt @@ -148,7 +151,7 @@ if [ -n "$MATLABDIR" ]; then fi 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=$GCCARCH --disable-static --enable-shared --disable-examples --disable-applications --enable-exhaustive-unit-tests + 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 @@ -164,6 +167,22 @@ 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 diff --git a/tests/nfct.c b/tests/nfct.c index a05ef105..1cf8c5f9 100644 --- a/tests/nfct.c +++ b/tests/nfct.c @@ -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 From dde8f2f5ac95f63a9af81ef6e022dff2feac7945 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Sun, 9 Aug 2020 21:03:02 +0200 Subject: [PATCH 091/167] modified binary readmes --- linux-build-mex.sh | 28 ++++++++++++++++++---------- macos-build-mex.sh | 28 ++++++++++++++++++---------- windows-build-dll.sh | 28 +++++++++++++++++----------- 3 files changed, 53 insertions(+), 31 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index dc0e0506..1ae2bfc0 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -21,7 +21,7 @@ # When using flatpak, the following RSYNC variable should be used. RSYNC="flatpak-spawn --host rsync" # Otherwise, the RSYNC variable should be set to -RSYNC=rsync +#RSYNC=rsync # # Any subsequent commands which fail will cause the shell script to exit immediately @@ -30,6 +30,11 @@ set -ex FFTWVERSION=3.3.8 GCCVERSION=8.3.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 @@ -166,7 +171,7 @@ 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" @@ -221,9 +226,10 @@ $RSYNC -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' --excl $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 Julia interface of NFFT '$NFFTVERSION' -compiled for '$ARCH' Linux using GCC '$GCCVERSION' and FFTW '$FFTWVERSION'. -' "$READMECONTENT" "$FFTWREADME" > "$JULIADIR"/readme.txt +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 @@ -280,12 +286,14 @@ 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 '$ARCH' Linux using GCC '$GCCVERSION' and Matlab '$MATLABVERSION' and Octave '$OCTAVEVERSION'. -' "$READMECONTENT" > "$DIR"/readme-matlab.txt +compiled for '$ARCH' Linux using GCC '$GCCVERSION' with -march='$GCCARCH' +and FFTW '$FFTWVERSION' 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 FFTW '$FFTWVERSION' and Octave '$OCTAVEVERSION'. +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$DIR"/readme-matlab.txt fi tar czf ../"$DIR".tar.gz --owner=0 --group=0 "$DIR" diff --git a/macos-build-mex.sh b/macos-build-mex.sh index 8dae9cb1..a84d490c 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -69,11 +69,16 @@ 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" @@ -124,9 +129,10 @@ rsync -rLt --exclude='Makefile*' --exclude='.deps' --exclude='.libs' --exclude=' 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 Julia interface of NFFT '$NFFTVERSION' -compiled for '$ARCH' macOS using GCC '$GCCVERSION' and FFTW '$FFTWVERSION'. -' "$READMECONTENT" "$FFTWREADME" > "$JULIADIR"/readme.txt +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 @@ -149,6 +155,7 @@ 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=$GCCARCH --disable-static --enable-shared --disable-examples --disable-applications @@ -187,13 +194,14 @@ 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 '$ARCH' macOS using GCC '$GCCVERSION' and Matlab '$MATLABVERSION' -and Octave '$OCTAVEVERSION' and FFTW '$FFTWVERSION'. -' "$READMECONTENT" "$FFTWREADME" > "$DIR"/readme-matlab.txt +compiled for '$ARCH' macOS using GCC '$GCCVERSION' with -march='$GCCARCH' +and FFTW '$FFTWVERSION$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 '$ARCH' macOS using GCC '$GCCVERSION' and Octave '$OCTAVEVERSION' and FFTW '$FFTWVERSION'. -' "$READMECONTENT" "$FFTWREADME" > "$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 FFTW '$FFTWVERSION' and Octave '$OCTAVEVERSION'. +'"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$DIR"/readme-matlab.txt fi zip -9 -r ../"$DIR".zip "$DIR" diff --git a/windows-build-dll.sh b/windows-build-dll.sh index d1a7fc72..321c0a9e 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -28,6 +28,11 @@ OCTAVEVERSION=5.2.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= @@ -172,6 +177,7 @@ 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 @@ -219,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 @@ -227,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 @@ -255,9 +261,9 @@ for DIR in $JULIADIR/nf*t $JULIADIR/fastsum; do cd $DIR; for NAME in simple_test 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" @@ -266,9 +272,8 @@ rm -f "$HOMEDIR/$JULIADIR".zip if [ -n "$MATLABDIR" ]; then if [ "$MATLABVERSION" == "" ]; then "$MATLABDIR"/bin/matlab.exe -wait -nodesktop -nosplash -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/)//'`" + 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 --enable-exhaustive-unit-tests make @@ -308,9 +313,10 @@ 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$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 FFTW '$FFTWVERSION' 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" @@ -330,7 +336,7 @@ rsync -rLt --exclude='Makefile*' --exclude='doxygen*' --exclude='*.c.in' "$NFFTD 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" From f0c511265b50c016e46629b42b28417ce4d00ab2 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Wed, 12 Aug 2020 11:53:29 +0200 Subject: [PATCH 092/167] Build scripts: fftw is included in Matlab so we do not need to state the version. Travis: remove log files to speed up caching --- .travis.yml | 4 +++- linux-build-mex.sh | 4 ++-- macos-build-mex.sh | 6 +++--- windows-build-dll.sh | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 77e7d56c..8501428a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,9 @@ before_cache: brew cleanup;; windows) # https://unix.stackexchange.com/a/137322/107554 - $msys2 pacman --sync --clean --noconfirm;; + $msys2 pacman --sync --clean --noconfirm; + rm -f C:\tools\msys64\update.log; + rm -rf C:\tools\msys64\var\log;; esac os: linux dist: bionic diff --git a/linux-build-mex.sh b/linux-build-mex.sh index 1ae2bfc0..27eb1d96 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -287,12 +287,12 @@ cp "$NFFTDIR"/COPYING "$DIR"/COPYING if [ -n "$MATLABDIR" ]; then echo 'This archive contains the Matlab and Octave interface of NFFT '$NFFTVERSION' compiled for '$ARCH' Linux using GCC '$GCCVERSION' with -march='$GCCARCH' -and FFTW '$FFTWVERSION' and Matlab '$MATLABVERSION' and Octave '$OCTAVEVERSION'. +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 '$ARCH' Linux using GCC '$GCCVERSION' with -march='$GCCARCH' -and FFTW '$FFTWVERSION' and Octave '$OCTAVEVERSION'. +and Octave '$OCTAVEVERSION'. '"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$DIR"/readme-matlab.txt fi tar czf ../"$DIR".tar.gz --owner=0 --group=0 "$DIR" diff --git a/macos-build-mex.sh b/macos-build-mex.sh index a84d490c..2660cd48 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -155,7 +155,7 @@ 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" + 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=$GCCARCH --disable-static --enable-shared --disable-examples --disable-applications @@ -195,12 +195,12 @@ cp "$NFFTDIR"/COPYING "$DIR"/COPYING if [ -n "$MATLABDIR" ]; then echo 'This archive contains the Matlab and Octave interface of NFFT '$NFFTVERSION' compiled for '$ARCH' macOS using GCC '$GCCVERSION' with -march='$GCCARCH' -and FFTW '$FFTWVERSION$MATLABSTRING' and Octave '$OCTAVEVERSION'. +'$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 '$ARCH' macOS using GCC '$GCCVERSION' with -march='$GCCARCH' -and FFTW '$FFTWVERSION' and Octave '$OCTAVEVERSION'. +and Octave '$OCTAVEVERSION'. '"$BINARIES_ARCH_README""$READMECONTENT""$FFTWREADME" > "$DIR"/readme-matlab.txt fi diff --git a/windows-build-dll.sh b/windows-build-dll.sh index 321c0a9e..5fd81d86 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -315,7 +315,7 @@ 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$' and FFTW '$FFTWVERSION' and Matlab '$MATLABVERSION' and Octave '$OCTAVEVERSION'. +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 From db91f7fd6007bf2f42476f95d4fe9ba654b230f0 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Sat, 15 Aug 2020 13:41:09 +0200 Subject: [PATCH 093/167] add flag -lm to Linux build file for Julia binary, otherwise errors on Arch Linux --- linux-build-mex.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index 27eb1d96..86dae693 100644 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -21,7 +21,7 @@ # When using flatpak, the following RSYNC variable should be used. RSYNC="flatpak-spawn --host rsync" # Otherwise, the RSYNC variable should be set to -#RSYNC=rsync +RSYNC=rsync # # Any subsequent commands which fail will cause the shell script to exit immediately @@ -179,7 +179,7 @@ if [ $OMPYN = 1 ]; then OMPLIBS="-fopenmp -static-libgcc" THREADSSUFFIX="_threads" OMPSUFFIX="-openmp" - FFTWLIBSTATIC="$FFTWDIR/build/threads/.libs/libfftw3_threads.a $FFTWDIR/build/.libs/libfftw3.a" + FFTWLIBSTATIC="$FFTWDIR/build/threads/.libs/libfftw3_threads.a -pthread $FFTWDIR/build/.libs/libfftw3.a -lm" GOMPLIBSTATIC="$GCCINSTALLDIR/lib64/libgomp.a" else NFFTBUILDDIR="$HOMEDIR/build" @@ -187,7 +187,7 @@ else OMPLIBS="" THREADSSUFFIX="" OMPSUFFIX="" - FFTWLIBSTATIC="$FFTWDIR/build/.libs/libfftw3.a" + FFTWLIBSTATIC="$FFTWDIR/build/.libs/libfftw3.a -lm" GOMPLIBSTATIC="" fi From 44b30dae787cc6adcc6a943ec5b8d40274177c90 Mon Sep 17 00:00:00 2001 From: Michael Schmischke Date: Tue, 25 Aug 2020 12:29:11 +0200 Subject: [PATCH 094/167] Update NFFT.jl remove annoying info macro --- julia/nfft/NFFT.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/julia/nfft/NFFT.jl b/julia/nfft/NFFT.jl index b8595e5e..94252ff0 100644 --- a/julia/nfft/NFFT.jl +++ b/julia/nfft/NFFT.jl @@ -108,7 +108,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) From 1e627e7c9115357e62155940fc41138483a46bf4 Mon Sep 17 00:00:00 2001 From: Michael Schmischke Date: Tue, 25 Aug 2020 12:30:15 +0200 Subject: [PATCH 095/167] Update NFCT.jl remove info macro --- julia/nfct/NFCT.jl | 2 -- 1 file changed, 2 deletions(-) diff --git a/julia/nfct/NFCT.jl b/julia/nfct/NFCT.jl index 5b264732..32bdaa61 100644 --- a/julia/nfct/NFCT.jl +++ b/julia/nfct/NFCT.jl @@ -96,8 +96,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." ) From 1a221cd121ad16abc62958f4b1291ef834bc7284 Mon Sep 17 00:00:00 2001 From: Michael Schmischke Date: Tue, 25 Aug 2020 12:30:49 +0200 Subject: [PATCH 096/167] Update NFST.jl remove info --- julia/nfst/NFST.jl | 2 -- 1 file changed, 2 deletions(-) diff --git a/julia/nfst/NFST.jl b/julia/nfst/NFST.jl index 08666369..c1433798 100644 --- a/julia/nfst/NFST.jl +++ b/julia/nfst/NFST.jl @@ -97,8 +97,6 @@ function NFSTplan(N::NTuple{D,Integer},M::Integer) where {D} 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} - @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." ) From 53078c9ad333a094fcf9455c433168e5be1ff029 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Tue, 25 Aug 2020 15:00:17 +0200 Subject: [PATCH 097/167] added remark on Windows tests to Changelog --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1c3c1cbe..109a8e42 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,7 +12,7 @@ Changes in version 3.5.2: - #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 OSX. + - TravisCI tests on Windows and OSX. - Enable AVX2 in precompiled binaries. Changes in version 3.5.1: From fea6e79b1ff59219886ebf173c62d833d8ffa5db Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Tue, 4 Aug 2020 12:35:35 +0200 Subject: [PATCH 098/167] added set_num_threads method to kernel/util and matlab interface, moved some matlab arg checks to args.c --- include/nfft3.h | 2 + kernel/util/thread.c | 18 ++++ matlab/args.c | 91 +++++++++++++++++ matlab/fastsum/Makefile.am | 2 +- matlab/fastsum/fastsum_set_num_threads.m | 23 +++++ matlab/fastsum/fastsummex.c | 52 +++++----- matlab/imex.h | 7 ++ matlab/nfct/Makefile.am | 2 +- matlab/nfct/nfct_set_num_threads.m | 23 +++++ matlab/nfct/nfctmex.c | 114 +++++++-------------- matlab/nfft/Makefile.am | 2 +- matlab/nfft/nfft_set_num_threads.m | 23 +++++ matlab/nfft/nfftmex.c | 121 +++++++---------------- matlab/nfsft/Makefile.am | 3 +- matlab/nfsft/nfsft_set_num_threads.m | 23 +++++ matlab/nfsft/nfsftmex.c | 79 +++++++-------- matlab/nfsoft/Makefile.am | 3 +- matlab/nfsoft/nfsoft_set_num_threads.m | 23 +++++ matlab/nfsoft/nfsoftmex.c | 46 +++++---- matlab/nfst/Makefile.am | 2 +- matlab/nfst/nfst_set_num_threads.m | 23 +++++ matlab/nfst/nfstmex.c | 114 +++++++-------------- matlab/nnfft/Makefile.am | 3 +- matlab/nnfft/nnfft_set_num_threads.m | 23 +++++ matlab/nnfft/nnfftmex.c | 55 ++++++----- 25 files changed, 510 insertions(+), 367 deletions(-) create mode 100644 matlab/fastsum/fastsum_set_num_threads.m create mode 100644 matlab/nfct/nfct_set_num_threads.m create mode 100644 matlab/nfft/nfft_set_num_threads.m create mode 100644 matlab/nfsft/nfsft_set_num_threads.m create mode 100644 matlab/nfsoft/nfsoft_set_num_threads.m create mode 100644 matlab/nfst/nfst_set_num_threads.m create mode 100644 matlab/nnfft/nnfft_set_num_threads.m 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/kernel/util/thread.c b/kernel/util/thread.c index f7bfa836..78b99ca8 100644 --- a/kernel/util/thread.c +++ b/kernel/util/thread.c @@ -39,3 +39,21 @@ INT Y(get_num_threads)(void) return 1; #endif } + +void Y(set_num_threads)(INT nthreads) +{ +#ifdef _OPENMP + /* Already created plans may still use old number of threads for FFT step! */ + omp_set_num_threads(nthreads); +#endif +} + +INT Y(has_threads_enabled)(void) +{ +#ifdef _OPENMP + return 1; +#else + return 0; +#endif +} + diff --git a/matlab/args.c b/matlab/args.c index d3b4050e..427aa046 100644 --- a/matlab/args.c +++ b/matlab/args.c @@ -17,6 +17,7 @@ */ #include "config.h" +#include "nfft3.h" #include "imex.h" int nfft_mex_get_int(const mxArray *p, const char *errmsg) @@ -32,3 +33,93 @@ 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_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_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_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 && !nfft_has_threads_enabled()) + mexErrMsgTxt("Threads are not enabled."); + + int nthreads_old = nfft_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) + mexWarnMsgTxt("At least one plan is allocated. New number of threads may not change for the FFT step of any allocated plans."); + } + + return nthreads_new; +} + diff --git a/matlab/fastsum/Makefile.am b/matlab/fastsum/Makefile.am index 7891c254..776115af 100644 --- a/matlab/fastsum/Makefile.am +++ b/matlab/fastsum/Makefile.am @@ -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..e3cc57df 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) @@ -209,16 +203,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 */ @@ -268,7 +272,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 +347,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 +384,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 +436,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 +446,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 +456,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,7 +473,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."); 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); @@ -485,7 +489,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."); 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 +512,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 +537,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 +556,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 +580,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 +591,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/imex.h b/matlab/imex.h index e502c3df..4c510acb 100644 --- a/matlab/imex.h +++ b/matlab/imex.h @@ -48,6 +48,13 @@ 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_n1n2m(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_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/nfct/Makefile.am b/matlab/nfct/Makefile.am index 1ab0d265..2a841ecd 100644 --- a/matlab/nfct/Makefile.am +++ b/matlab/nfct/Makefile.am @@ -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_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 45ef90b8..705b9ec7 100644 --- a/matlab/nfct/nfctmex.c +++ b/matlab/nfct/nfctmex.c @@ -38,59 +38,6 @@ 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) - mexErrMsgTxt("nfct: Input argument N must be non-negative.");) - *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) - mexErrMsgTxt("nfct: Input argument N1 must be non-negative.");) - *n1 = t; - - t = nfft_mex_get_int(prhs[2],"nfct: Input argument N2 must be a scalar."); - DM(if (t < 0) - mexErrMsgTxt("nfct: Input argument N2 must be non-negative.");) - *n2 = t; - - t = nfft_mex_get_int(prhs[3],"nfct: Input argument N3 must be a scalar."); - DM(if (t < 0) - mexErrMsgTxt("nfct: Input argument N3 must be non-negative.");) - *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) @@ -199,11 +140,11 @@ 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(prhs,&n,&m); i = mkplan(); nfct_init_1d(plans[i],n,m); plhs[0] = mxCreateDoubleScalar((double)i); @@ -212,11 +153,11 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } 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(prhs,&n1,&n2,&m); i = mkplan(); nfct_init_2d(plans[i],n1,n2,m); plhs[0] = mxCreateDoubleScalar((double)i); @@ -225,11 +166,11 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } 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(prhs,&n1,&n2,&n3,&m); i = mkplan(); nfct_init_3d(plans[i],n1,n2,n3,m); plhs[0] = mxCreateDoubleScalar((double)i); @@ -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,7 +213,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],"nfct: Input argument plan must be a scalar."); check_plan(i); @@ -282,7 +223,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],"nfct: Input argument plan must be a scalar."); check_plan(i); @@ -292,7 +233,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],"nfct: Input argument plan must be a scalar."); check_plan(i); @@ -304,7 +245,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],"nfct: Input argument plan must be a scalar."); check_plan(i); @@ -314,7 +255,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],"nfct: Input argument plan must be a scalar."); check_plan(i); @@ -324,7 +265,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],"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; @@ -412,7 +353,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],"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/nfft/Makefile.am b/matlab/nfft/Makefile.am index 5998367b..7aac7725 100644 --- a/matlab/nfft/Makefile.am +++ b/matlab/nfft/Makefile.am @@ -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_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 b760ad0e..ef24cb82 100644 --- a/matlab/nfft/nfftmex.c +++ b/matlab/nfft/nfftmex.c @@ -38,59 +38,6 @@ 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) @@ -209,11 +150,11 @@ 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(); X(init_1d)(plans[i],N,M); plhs[0] = mxCreateDoubleScalar((double)i); @@ -222,11 +163,11 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } 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(); X(init_2d)(plans[i],N1,N2,M); plhs[0] = mxCreateDoubleScalar((double)i); @@ -235,11 +176,11 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } 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(); X(init_3d)(plans[i],N1,N2,N3,M); plhs[0] = mxCreateDoubleScalar((double)i); @@ -248,7 +189,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } 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; @@ -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");) @@ -309,7 +250,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_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); @@ -319,7 +260,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],"nfft: Input argument plan must be a scalar."); check_plan(i); @@ -329,7 +270,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],"nfft: Input argument plan must be a scalar."); check_plan(i); @@ -339,7 +280,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],"nfft: Input argument plan must be a scalar."); check_plan(i); @@ -351,7 +292,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],"nfft: Input argument plan must be a scalar."); check_plan(i); @@ -361,7 +302,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],"nfft: Input argument plan must be a scalar."); check_plan(i); @@ -371,7 +312,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } else if (strcmp(cmd,"solver") == 0) { - check_nargs(nrhs,4,"Wrong number of arguments for solver."); + 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); @@ -400,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],"nfft: Input argument plan must be a scalar."); int m, d; @@ -420,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],"nfft: Input argument plan must be a scalar."); int m; @@ -441,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],"nfft: Input argument plan must be a scalar."); int n; @@ -462,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],"nfft: Input argument plan must be a scalar."); int m, d; @@ -485,7 +426,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],"nfft: Input argument plan must be a scalar."); int m; @@ -508,7 +449,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],"nfft: Input argument plan must be a scalar."); int n; @@ -533,7 +474,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],"nfft: Input argument plan must be a scalar."); mexPrintf("Plan %d\n",i); @@ -551,15 +492,27 @@ 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 if(strcmp(cmd,"get_default_window_cut_off_m") == 0) { plhs[0] = mxCreateDoubleScalar((double) WINDOW_HELP_ESTIMATE_m); + return; } else mexErrMsgTxt("nfft: Unknown command.\n"); 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_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..015ed1e7 100644 --- a/matlab/nfsft/nfsftmex.c +++ b/matlab/nfsft/nfsftmex.c @@ -43,24 +43,10 @@ static unsigned int nfsft_flags_global = 0U; static unsigned int fpt_flags_global = 0U; 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(prhs,n,m); *f = nfft_mex_get_int(prhs[3],"nfsft: Input argument flags must be a scalar."); } @@ -77,12 +63,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) @@ -180,11 +160,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(prhs,&n,&m); i = mkplan(); nfsft_init(plans[i],n,m); init_values_zero(plans[i]); @@ -194,7 +174,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 +190,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,7 +206,7 @@ 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."); @@ -249,7 +229,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 +237,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 +247,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 +257,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 +275,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 +285,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 +295,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 +317,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 +337,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 +358,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 +379,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 +405,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 +427,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 +456,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 +484,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 +502,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("nfsft: Unknown command.\n"); } 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..86ad138d 100644 --- a/matlab/nfst/Makefile.am +++ b/matlab/nfst/Makefile.am @@ -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_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 872443a2..04acd5cd 100644 --- a/matlab/nfst/nfstmex.c +++ b/matlab/nfst/nfstmex.c @@ -38,59 +38,6 @@ 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) - mexPrintf("nfst: Input argument N must be non-negative.");) - *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) - mexPrintf("nfst: Input argument N1 must be non-negative.");) - *n1 = t; - - t = nfft_mex_get_int(prhs[2],"nfst: Input argument N2 must be a scalar."); - DM(if (t < 0) - mexPrintf("nfst: Input argument N2 must be non-negative.");) - *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) - mexErrMsgTxt("nfst: Input argument N1 must be non-negative.");) - *n1 = t; - - t = nfft_mex_get_int(prhs[2],"nfst: Input argument N2 must be a scalar."); - DM(if (t < 0) - mexErrMsgTxt("nfst: Input argument N2 must be non-negative.");) - *n2 = t; - - t = nfft_mex_get_int(prhs[3],"nfst: Input argument N3 must be a scalar."); - DM(if (t < 0) - mexErrMsgTxt("nfst: Input argument N3 must be non-negative.");) - *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) @@ -199,11 +140,11 @@ 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(prhs,&n,&m); i = mkplan(); nfst_init_1d(plans[i],n,m); plhs[0] = mxCreateDoubleScalar((double)i); @@ -212,11 +153,11 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } 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(prhs,&n1,&n2,&m); i = mkplan(); nfst_init_2d(plans[i],n1,n2,m); plhs[0] = mxCreateDoubleScalar((double)i); @@ -225,11 +166,11 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) } 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(prhs,&n1,&n2,&n3,&m); i = mkplan(); nfst_init_3d(plans[i],n1,n2,n3,m); plhs[0] = mxCreateDoubleScalar((double)i); @@ -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,7 +213,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],"nfst: Input argument plan must be a scalar."); check_plan(i); @@ -282,7 +223,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],"nfst: Input argument plan must be a scalar."); check_plan(i); @@ -292,7 +233,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],"nfst: Input argument plan must be a scalar."); check_plan(i); @@ -304,7 +245,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],"nfst: Input argument plan must be a scalar."); check_plan(i); @@ -314,7 +255,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],"nfst: Input argument plan must be a scalar."); check_plan(i); @@ -324,7 +265,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],"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; @@ -412,7 +353,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],"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/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."); From 0cbd67996f58a346a9b9bda1c714135422f6d79d Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Tue, 4 Aug 2020 13:09:56 +0200 Subject: [PATCH 099/167] added set_num_threads(...) to Julia interfaces --- julia/fastsum/fastsum.jl | 8 ++++++++ julia/nfct/NFCT.jl | 10 +++++++++- julia/nfft/NFFT.jl | 10 +++++++++- julia/nfst/NFST.jl | 10 +++++++++- 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/julia/fastsum/fastsum.jl b/julia/fastsum/fastsum.jl index 48806005..0532a9ac 100644 --- a/julia/fastsum/fastsum.jl +++ b/julia/fastsum/fastsum.jl @@ -288,4 +288,12 @@ function trafo_exact( p::Plan ) 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/nfct/NFCT.jl b/julia/nfct/NFCT.jl index 6f11cd96..1e7daa80 100644 --- a/julia/nfct/NFCT.jl +++ b/julia/nfct/NFCT.jl @@ -216,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 @@ -335,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/nfft/NFFT.jl b/julia/nfft/NFFT.jl index 8725ba91..d8dd252d 100644 --- a/julia/nfft/NFFT.jl +++ b/julia/nfft/NFFT.jl @@ -226,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 @@ -345,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/nfst/NFST.jl b/julia/nfst/NFST.jl index a6c8ad76..c64ec2d6 100644 --- a/julia/nfst/NFST.jl +++ b/julia/nfst/NFST.jl @@ -216,7 +216,7 @@ function Base.setproperty!(p::NFSTplan{D},v::Symbol,val) where {D} 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." + @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 @@ -335,5 +335,13 @@ function adjoint(P::NFSTplan{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 From a31ccb3778c9efc9bed98f3bbbad9fd9db7f0f69 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 27 Aug 2020 17:22:04 +0200 Subject: [PATCH 100/167] Add Matlab test file for set_num_threads --- matlab/nfft/simple_test_threads.m | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 matlab/nfft/simple_test_threads.m 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 From ac2d28bbdd37853dea8f1c4cd005ea43df263b9e Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 27 Aug 2020 18:46:32 +0200 Subject: [PATCH 101/167] Travis: Uptade Linux Octave build to Ubuntu 20.04 * So we use gcc9 and julia out of the box * Install only necessary msys packages --- .travis.yml | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8501428a..2ad0eaaf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -49,11 +49,14 @@ jobs: env: WINDOW=kaiserbessel PRECISION= BUILD_JULIA=1 cache: { directories: ["$HOME/AppData/Local/Temp/chocolatey", "/C/tools/msys64"] } git: { autocrlf: input, symlinks: true } - - compiler: gcc + - dist: focal + compiler: gcc env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 - - compiler: clang + addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev", "julia"] } } + - dist: focal + compiler: clang env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 - addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } + addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev", "julia"] } } - compiler: gcc env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } @@ -72,7 +75,8 @@ before_install: 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-toolchain mingw-w64-x86_64-clang mingw-w64-x86_64-openmp mingw-w64-x86_64-fftw mingw-w64-x86_64-cunit autoconf perl libtool automake make + $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 @@ -88,22 +92,11 @@ before_script: linux) if [ "$CC" == "clang" ]; then export LD_LIBRARY_PATH='/usr/local/clang/lib'; fi; if [ "$BUILD_OCTAVE" = "1" ]; then - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; - sudo apt-get update --option Acquire::Retries=10 --option Acquire::http::Timeout="30"; - sudo apt-get install -y libfftw3-dev libcunit1-dev liboctave-dev gcc-10; - export CC=gcc-10; export OCTAVEDIR=/usr; export OCTAVE=octave; - fi; - if [ "$BUILD_JULIA" = "1" ]; 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_JULIA" = "1" ]; then - export JULIA=julia; - 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; @@ -114,7 +107,6 @@ before_script: export CC=gcc-9; export CPPFLAGS=-I/usr/local/include; export LDFLAGS=-L/usr/local/lib; - export JULIA=julia; export OCTAVEDIR=/usr/local; export OCTAVE=octave-cli;; esac; @@ -133,7 +125,7 @@ script: $mingw64 ./bootstrap.sh $(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_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: From 8c6bc63b04b5ccc4e73bc13c77aa6ea5a2a0befa Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Fri, 28 Aug 2020 11:06:38 +0200 Subject: [PATCH 102/167] Use bionic for compilation with clang There seems to be a dependency problem with clang7 and llvm10 in focal. This also moves tests with nonstandard window functions to the end --- .travis.yml | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2ad0eaaf..d0c2919d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,17 +21,8 @@ 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 jobs: include: - os: osx @@ -53,16 +44,25 @@ jobs: compiler: gcc env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev", "julia"] } } - - dist: focal + - dist: bionic compiler: clang env: WINDOW=kaiserbessel PRECISION= BUILD_OCTAVE=1 BUILD_JULIA=1 - addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev", "julia"] } } + addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "liboctave-dev"] } } - compiler: gcc env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } - compiler: clang env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } + - 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 + - env: WINDOW=gaussian PRECISION= + - env: WINDOW=bspline PRECISION= + - env: WINDOW=sinc PRECISION= before_install: - |- case $TRAVIS_OS_NAME in @@ -94,6 +94,10 @@ before_script: 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; From 8f0372d86d0381f623dd2c15f7fcc699df921a98 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Thu, 3 Sep 2020 14:51:35 +0200 Subject: [PATCH 103/167] Warn user in set_num_threads after nfsft_precompute Use precision independent nfft functions in fastsum --- matlab/args.c | 7 ++++--- matlab/fastsum/Makefile.am | 2 +- matlab/fastsum/fastsummex.c | 20 ++++++++++---------- matlab/nfsft/nfsftmex.c | 10 ++++++---- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/matlab/args.c b/matlab/args.c index 427aa046..6457eedd 100644 --- a/matlab/args.c +++ b/matlab/args.c @@ -18,6 +18,7 @@ #include "config.h" #include "nfft3.h" +#include "infft.h" #include "imex.h" int nfft_mex_get_int(const mxArray *p, const char *errmsg) @@ -102,10 +103,10 @@ int nfft_mex_set_num_threads_check(const int nrhs, const mxArray *prhs[], void * if (nthreads_new < 1) mexErrMsgTxt("Number of threads must be at least 1."); - if (nthreads_new > 1 && !nfft_has_threads_enabled()) + if (nthreads_new > 1 && !X(has_threads_enabled)()) mexErrMsgTxt("Threads are not enabled."); - int nthreads_old = nfft_get_num_threads(); + int nthreads_old = X(get_num_threads)(); if (nthreads_new != nthreads_old) { int i; @@ -117,7 +118,7 @@ int nfft_mex_set_num_threads_check(const int nrhs, const mxArray *prhs[], void * break; } if (is_plan_allocated) - mexWarnMsgTxt("At least one plan is allocated. New number of threads may not change for the FFT step of any allocated plans."); + mexWarnMsgTxt("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 776115af..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) diff --git a/matlab/fastsum/fastsummex.c b/matlab/fastsum/fastsummex.c index e3cc57df..84ace628 100644 --- a/matlab/fastsum/fastsummex.c +++ b/matlab/fastsum/fastsummex.c @@ -85,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; } @@ -156,19 +156,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; } @@ -230,10 +230,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 */ + R *param; /**< parameter for kernel */ double eps_I; /**< inner boundary */ double eps_B; /**< outer boundary */ - param = nfft_malloc(sizeof(double)); + 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) @@ -476,13 +476,13 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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; } diff --git a/matlab/nfsft/nfsftmex.c b/matlab/nfsft/nfsftmex.c index 015ed1e7..862e891e 100644 --- a/matlab/nfsft/nfsftmex.c +++ b/matlab/nfsft/nfsftmex.c @@ -41,6 +41,7 @@ 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_nmf(const mxArray *prhs[], int *n, int *m, @@ -139,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; @@ -212,7 +211,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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(); @@ -509,7 +508,10 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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)) + mexWarnMsgTxt("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; } From b79479cdc71ccdb2096016a338e0a448a3be969b Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Tue, 8 Sep 2020 14:20:29 +0200 Subject: [PATCH 104/167] Bump version number 3.5.3 and test clang with different precisions --- .gitignore | 4 ++++ .travis.yml | 10 +++++++--- configure.ac | 7 +++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index e946c99d..7c1ec32c 100644 --- a/.gitignore +++ b/.gitignore @@ -91,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 @@ -99,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 diff --git a/.travis.yml b/.travis.yml index d0c2919d..95c0dffa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,15 +54,19 @@ jobs: - compiler: clang env: WINDOW=kaiserbessel PRECISION= DIST=distcheck addons: { apt: { packages: ["libfftw3-dev", "libcunit1-dev", "doxygen", "doxygen-latex", "graphviz"] } } + - compiler: clang + env: WINDOW=kaiserbessel PRECISION=--enable-long-double + - compiler: clang + env: WINDOW=kaiserbessel PRECISION=--enable-float + - 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 - - env: WINDOW=gaussian PRECISION= - - env: WINDOW=bspline PRECISION= - - env: WINDOW=sinc PRECISION= before_install: - |- case $TRAVIS_OS_NAME in diff --git a/configure.ac b/configure.ac index 2f6183f8..a8878d50 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], [2]) +m4_define([nfft_version_patch], [3]) 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:2: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) From 0cc8f4736ff3ce108a0e2cb24787f990ec83c711 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 10 Sep 2020 12:51:26 +0200 Subject: [PATCH 105/167] Enable single precision for Matlab Remove 5d Matlab NFFT tests for single precision (some do not work) Always use default m for Matlab NFFT tests --- .travis.yml | 9 ++- configure.ac | 2 +- matlab/nfct/Makefile.am | 2 +- matlab/nfct/nfctmex.c | 38 +++++----- matlab/nfft/nfftmex.c | 8 +++ matlab/nfst/Makefile.am | 2 +- matlab/nfst/nfstmex.c | 38 +++++----- matlab/tests/nfftTestcaseInitDelegate.m | 6 +- matlab/tests/nfftTestcaseTrafoDelegate.m | 5 +- matlab/tests/nfftUnitTests.m.in | 92 ++++++++++++------------ matlab/tests/nfftUnitTestsRunAndExit.m | 9 ++- 11 files changed, 116 insertions(+), 95 deletions(-) diff --git a/.travis.yml b/.travis.yml index 95c0dffa..24569e76 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,10 +54,15 @@ jobs: - compiler: clang 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-long-double + 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 + env: WINDOW=kaiserbessel PRECISION=--enable-long-double - env: WINDOW=gaussian PRECISION= - env: WINDOW=bspline PRECISION= - env: WINDOW=sinc PRECISION= diff --git a/configure.ac b/configure.ac index a8878d50..d2f73cb6 100644 --- a/configure.ac +++ b/configure.ac @@ -351,7 +351,7 @@ 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 diff --git a/matlab/nfct/Makefile.am b/matlab/nfct/Makefile.am index 2a841ecd..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) diff --git a/matlab/nfct/nfctmex.c b/matlab/nfct/nfctmex.c index 705b9ec7..96815e71 100644 --- a/matlab/nfct/nfctmex.c +++ b/matlab/nfct/nfctmex.c @@ -34,7 +34,7 @@ #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]; @@ -75,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; } @@ -99,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; } @@ -146,7 +146,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int n, m; nfft_mex_get_nm(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; @@ -159,7 +159,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int n1, n2, m; nfft_mex_get_n1n2m(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; @@ -172,7 +172,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int n1, n2, n3, m; nfft_mex_get_n1n2n3m(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; @@ -191,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); @@ -217,7 +217,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -227,7 +227,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -237,8 +237,8 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; @@ -249,7 +249,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -259,7 +259,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -347,7 +347,7 @@ 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; } diff --git a/matlab/nfft/nfftmex.c b/matlab/nfft/nfftmex.c index ef24cb82..d8aae53f 100644 --- a/matlab/nfft/nfftmex.c +++ b/matlab/nfft/nfftmex.c @@ -483,10 +483,13 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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("fft_flags: %d\n",plans[i]->fftw_flags); } return; } @@ -514,6 +517,11 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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/nfst/Makefile.am b/matlab/nfst/Makefile.am index 86ad138d..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) diff --git a/matlab/nfst/nfstmex.c b/matlab/nfst/nfstmex.c index 04acd5cd..72ef1f04 100644 --- a/matlab/nfst/nfstmex.c +++ b/matlab/nfst/nfstmex.c @@ -34,7 +34,7 @@ #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]; @@ -75,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; } @@ -99,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; } @@ -146,7 +146,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int n, m; nfft_mex_get_nm(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; @@ -159,7 +159,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int n1, n2, m; nfft_mex_get_n1n2m(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; @@ -172,7 +172,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) int n1, n2, n3, m; nfft_mex_get_n1n2n3m(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; @@ -191,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); @@ -217,7 +217,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -227,7 +227,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -237,8 +237,8 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; @@ -249,7 +249,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -259,7 +259,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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; } @@ -347,7 +347,7 @@ 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; } 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 From 663489209916935bf9fdcbcc5c7292b5d18e2f51 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Thu, 10 Sep 2020 12:51:53 +0200 Subject: [PATCH 106/167] Do not ignore errors! --- bootstrap.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 50de2240..e3a80eb2 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -32,8 +32,6 @@ alias libtoolize=$(type -p glibtoolize libtoolize | head -1) touch ChangeLog -echo "PLEASE IGNORE WARNINGS AND ERRORS" - rm -rf autom4te.cache libtoolize autoreconf --verbose --install --force From 9b023d57c900d0280e3397520f40b2bcaa7e2bbf Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 14 Sep 2020 12:38:16 +0200 Subject: [PATCH 107/167] Matlab NFFT: Accept both single and double input Return single if NFFT is build with single precision --- matlab/nfft/nfftmex.c | 115 ++++++++++++++++++++++++++++++------------ 1 file changed, 82 insertions(+), 33 deletions(-) diff --git a/matlab/nfft/nfftmex.c b/matlab/nfft/nfftmex.c index d8aae53f..b6d14d15 100644 --- a/matlab/nfft/nfftmex.c +++ b/matlab/nfft/nfftmex.c @@ -348,13 +348,19 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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; @@ -367,9 +373,15 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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++) { @@ -388,9 +400,15 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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++) { @@ -410,17 +428,26 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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; } @@ -434,16 +461,28 @@ 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++) + 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 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 (int j = 0; j < m; j++) + plans[i]->f[j] = fr[j]; + } + else + DM(mexErrMsgTxt("Input argument f must be a double array");) } return; } @@ -455,20 +494,30 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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++) + 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; } @@ -479,17 +528,17 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 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(" 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("fft_flags: %d\n",plans[i]->fftw_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; } From 152e00137ce6d36ae47d3f2f7f4d7ddea200b35d Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Tue, 6 Oct 2020 17:06:06 +0200 Subject: [PATCH 108/167] Add Matlab warning IDs for set_num_threads Then these warnings can be suppressed if necessary --- matlab/args.c | 2 +- matlab/nfsft/nfsftmex.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/matlab/args.c b/matlab/args.c index 6457eedd..a3c68c46 100644 --- a/matlab/args.c +++ b/matlab/args.c @@ -118,7 +118,7 @@ int nfft_mex_set_num_threads_check(const int nrhs, const mxArray *prhs[], void * break; } if (is_plan_allocated) - mexWarnMsgTxt("At least one plan is allocated. New number of threads may not affect the FFT step of any allocated plans."); + 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/nfsft/nfsftmex.c b/matlab/nfsft/nfsftmex.c index 862e891e..04e7ef01 100644 --- a/matlab/nfsft/nfsftmex.c +++ b/matlab/nfsft/nfsftmex.c @@ -509,7 +509,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { 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)) - mexWarnMsgTxt("New number of threads may not affect the FPT step unless you re-run nfsft_precompute.");) + 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; From ae3fe9138e88c4d72c941a556a7793f53c8f1d1d Mon Sep 17 00:00:00 2001 From: Michael Schmischke Date: Wed, 21 Oct 2020 12:15:13 +0200 Subject: [PATCH 109/167] Update README.md --- julia/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 +``` From c927aa13d8e3d92bfb188770ca24b7b90c92bcc1 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Fri, 27 Nov 2020 19:24:15 +0100 Subject: [PATCH 110/167] Fastsum: Correct value of sinc kernel at x=0 > Thanks to @melaniekircheis > Replace DBL_EPSILON by EPSILON for multi-precision --- applications/fastsum/kernels.c | 20 ++++++++++---------- matlab/fastsum/fastsummex.c | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/applications/fastsum/kernels.c b/applications/fastsum/kernels.c index b12f731d..5687a364 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) Date: Wed, 20 Jan 2021 13:22:43 +0100 Subject: [PATCH 111/167] Fix #116 Segfault in Matlab --- matlab/fastsum/fastsummex.c | 1 + 1 file changed, 1 insertion(+) diff --git a/matlab/fastsum/fastsummex.c b/matlab/fastsum/fastsummex.c index 6e788027..c5ccd1a0 100644 --- a/matlab/fastsum/fastsummex.c +++ b/matlab/fastsum/fastsummex.c @@ -143,6 +143,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; } From 90014c3fabdccb0a63335592ab392ff01121d0dd Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Mon, 12 Apr 2021 16:53:42 +0200 Subject: [PATCH 112/167] Speed improvement of construct_phantom in mri --- applications/mri/mri3d/README | 5 +-- applications/mri/mri3d/construct_phantom.m | 44 +++++++++------------- 2 files changed, 19 insertions(+), 30 deletions(-) diff --git a/applications/mri/mri3d/README b/applications/mri/mri3d/README index 87523da5..227182af 100644 --- a/applications/mri/mri3d/README +++ b/applications/mri/mri3d/README @@ -7,12 +7,9 @@ Available from: http://www.tu-chemnitz.de/~potts see also: -http://www.tu-chemnitz.de/~potts/projecte/projekt_mri.php -http://www.tu-chemnitz.de/~potts/projecte/ijbi +https://www.tu-chemnitz.de/~potts/nfft/mri.php -------------------------------------------------------------------- Open MATLAB and run the script file mri.m. mri.m is an example for the usage of the programs. - -For questions mail us: tobias.knopp@informatik.uni-luebeck.de diff --git a/applications/mri/mri3d/construct_phantom.m b/applications/mri/mri3d/construct_phantom.m index 703679a5..e00b78af 100644 --- a/applications/mri/mri3d/construct_phantom.m +++ b/applications/mri/mri3d/construct_phantom.m @@ -35,32 +35,24 @@ % compute the phantom B = zeros(N_,N_,Z); -for l=1:10, - for z=1:Z, - for y=1:N_, - for x=1:N_, - x_= x /(N_/2)-1; - y_= y /(N_/2)-1; - r = sqrt(x_^2+y_^2); - if x_==0 & y_==0, - phi=0; - elseif 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 From 097cae71157ef0da0bf407b4cd23f925c8c765b4 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Fri, 2 Jul 2021 16:08:29 +0200 Subject: [PATCH 113/167] Delete unnecessary file test_nnfft2d_N215.m executing this file causes out of memory errors on most computers --- matlab/nnfft/test_nnfft2d_N215.m | 86 -------------------------------- 1 file changed, 86 deletions(-) delete mode 100644 matlab/nnfft/test_nnfft2d_N215.m 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)) From 5e1ecc5e3ff9805c63bbdb50fe930ddc9517a679 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Fri, 9 Jul 2021 11:40:58 +0200 Subject: [PATCH 114/167] NFSFT_EQUISPACED: Add one more node (South Pole) in order to apply good quadrature formulas --- kernel/nfsft/nfsft.c | 12 ++++++------ matlab/nfsft/nfsft.m | 2 +- matlab/nfsft/test_nfsft_equispaced.m | 4 ++-- matlab/tests/nfsftTestcaseDelegateOnline.m | 2 +- support/nfsft.dox | 6 +++--- 5 files changed, 13 insertions(+), 13 deletions(-) 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/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/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/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/support/nfsft.dox b/support/nfsft.dox index f8efc4e2..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: @@ -567,7 +567,7 @@ * 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 */ From 2bfb86d9d7672515d8e6e4a52b996a2f630fad11 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Thu, 15 Jul 2021 21:11:12 +0200 Subject: [PATCH 115/167] update obsolete autoconf macros changed with autoconf 2.70 --- configure.ac | 46 +++++++++++++++++-------------------------- m4/ax_cc_maxopt.m4 | 2 +- m4/ax_gcc_archflag.m4 | 2 +- m4/ax_lib_fftw3.m4 | 6 +++--- m4/ax_nfft_module.m4 | 2 +- m4/ax_prog_matlab.m4 | 16 +++++++-------- 6 files changed, 32 insertions(+), 42 deletions(-) diff --git a/configure.ac b/configure.ac index d2f73cb6..7af5ce6d 100644 --- a/configure.ac +++ b/configure.ac @@ -156,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 @@ -179,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 @@ -208,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, @@ -244,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") @@ -286,7 +278,7 @@ AC_LANG(C) AX_COMPILER_VENDOR # check for C99 compliant mode (possibly with GNU extensions) -AC_PROG_CC_C99 +AC_PROG_CC # per-target flags AM_PROG_CC_C_O @@ -356,7 +348,7 @@ if test "x$ax_prog_matlab" = "xyes" -a "x$PRECISION" != "xd" -a "x$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 @@ -443,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] @@ -498,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 @@ -518,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 @@ -540,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 "***************************************************************" diff --git a/m4/ax_cc_maxopt.m4 b/m4/ax_cc_maxopt.m4 index 5694f82e..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 diff --git a/m4/ax_gcc_archflag.m4 b/m4/ax_gcc_archflag.m4 index 813f0a20..4d6551c8 100644 --- a/m4/ax_gcc_archflag.m4 +++ b/m4/ax_gcc_archflag.m4 @@ -34,7 +34,7 @@ AC_DEFUN([AX_GCC_ARCHFLAG], [AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) -AC_ARG_WITH(gcc-arch, [AC_HELP_STRING([--with-gcc-arch=], [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 7a51d5e5..5751b4a7 100644 --- a/m4/ax_lib_fftw3.m4 +++ b/m4/ax_lib_fftw3.m4 @@ -27,14 +27,14 @@ 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") 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 5727f3bc..25ff7f3a 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"]) @@ -378,11 +378,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") From 4f13c98b84f15a09aeac877af79e7b7687a66ea2 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Mon, 19 Jul 2021 21:07:54 +0200 Subject: [PATCH 116/167] Re-enable odd degrees for NFCT/NFST in Matlab --- matlab/args.c | 53 +++++++++++++++++++++++++++++++++++++++++++ matlab/nfct/nfctmex.c | 6 ++--- matlab/nfst/nfstmex.c | 6 ++--- 3 files changed, 59 insertions(+), 6 deletions(-) diff --git a/matlab/args.c b/matlab/args.c index a3c68c46..0faef421 100644 --- a/matlab/args.c +++ b/matlab/args.c @@ -47,6 +47,18 @@ void nfft_mex_get_nm(const mxArray *prhs[], int *n, int *m) *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."); @@ -65,6 +77,24 @@ void nfft_mex_get_n1n2m(const mxArray *prhs[], int *n1, int *n2, int *m) *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."); @@ -88,6 +118,29 @@ void nfft_mex_get_n1n2n3m(const mxArray *prhs[], int *n1, int *n2, int *n3, int *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) diff --git a/matlab/nfct/nfctmex.c b/matlab/nfct/nfctmex.c index 96815e71..9099a904 100644 --- a/matlab/nfct/nfctmex.c +++ b/matlab/nfct/nfctmex.c @@ -144,7 +144,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i; int n, m; - nfft_mex_get_nm(prhs,&n,&m); + nfft_mex_get_nm_odd(prhs,&n,&m); i = mkplan(); NFCT(init_1d)(plans[i],n,m); plhs[0] = mxCreateDoubleScalar((double)i); @@ -157,7 +157,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i; int n1, n2, m; - nfft_mex_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); plhs[0] = mxCreateDoubleScalar((double)i); @@ -170,7 +170,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i; int n1, n2, n3, m; - nfft_mex_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); plhs[0] = mxCreateDoubleScalar((double)i); diff --git a/matlab/nfst/nfstmex.c b/matlab/nfst/nfstmex.c index 72ef1f04..74e34100 100644 --- a/matlab/nfst/nfstmex.c +++ b/matlab/nfst/nfstmex.c @@ -144,7 +144,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i; int n, m; - nfft_mex_get_nm(prhs,&n,&m); + nfft_mex_get_nm_odd(prhs,&n,&m); i = mkplan(); NFST(init_1d)(plans[i],n,m); plhs[0] = mxCreateDoubleScalar((double)i); @@ -157,7 +157,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i; int n1, n2, m; - nfft_mex_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); plhs[0] = mxCreateDoubleScalar((double)i); @@ -170,7 +170,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i; int n1, n2, n3, m; - nfft_mex_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); plhs[0] = mxCreateDoubleScalar((double)i); From c30a5d7cb51c6a08935b48dcf338498721f7a67a Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 21 Jul 2021 20:07:35 +0200 Subject: [PATCH 117/167] Create Github action workflow --- .github/workflows/c-cpp.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/c-cpp.yml diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml new file mode 100644 index 00000000..3b5a6f41 --- /dev/null +++ b/.github/workflows/c-cpp.yml @@ -0,0 +1,27 @@ +name: C/C++ CI + +on: + push: + branches: [ develop ] + pull_request: + branches: [ develop ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Install jq tool + run: | + sudo apt-get update + sudo apt-get install libfftw3-dev libcunit1-dev liboctave-dev + - 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 From a0b44be65329dd70dc85c92c012288f0dbc829fe Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Wed, 21 Jul 2021 20:18:37 +0200 Subject: [PATCH 118/167] remove obsolete macro --- include/cycle.h | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) 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) \ { \ From c548c912a53e9f4054f2174761c4b34de7cb19a2 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Thu, 22 Jul 2021 20:58:41 +0200 Subject: [PATCH 119/167] Improve recognition of fftw subdirectories Move some unit tests to exhaustive --- m4/ax_lib_fftw3.m4 | 16 ++++++++++++++-- matlab/tests/nfsftUnitTests.m.in | 4 ++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/m4/ax_lib_fftw3.m4 b/m4/ax_lib_fftw3.m4 index 5751b4a7..9d252cf2 100644 --- a/m4/ax_lib_fftw3.m4 +++ b/m4/ax_lib_fftw3.m4 @@ -40,10 +40,22 @@ AC_DEFUN([AX_LIB_FFTW3], 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 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') ... From 61de19ea35b0d15c9fa61f610f3cfc6ce1639a27 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Thu, 19 Aug 2021 17:58:51 +0200 Subject: [PATCH 120/167] add test file for inversion of NFSFT (not for release) --- matlab/nfsft/test_inversion.m | 187 ++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 matlab/nfsft/test_inversion.m 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 From b043630c4e72a8018d2c889a73f6585001c35642 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Fri, 20 Aug 2021 15:22:25 +0200 Subject: [PATCH 121/167] Run Octave and Julia testfiles --- .github/workflows/c-cpp.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 3b5a6f41..b61a1582 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -13,10 +13,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Install jq tool + - name: Install libraries run: | sudo apt-get update - sudo apt-get install libfftw3-dev libcunit1-dev liboctave-dev + sudo apt-get install libfftw3-dev libcunit1-dev liboctave-dev julia - name: bootstrap run: ./bootstrap.sh - name: configure @@ -25,3 +25,9 @@ jobs: 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 From e15a9131be9d0e4527b2e524770e8c3cebb439f2 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Fri, 20 Aug 2021 15:34:13 +0200 Subject: [PATCH 122/167] Update c-cpp.yml --- .github/workflows/c-cpp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index b61a1582..c70a889e 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -26,7 +26,7 @@ jobs: - 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 + 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 From ea3a0fdd178b55e8b0cd7b96f4eeadb0e9c64bb4 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 29 Sep 2021 18:14:26 +0200 Subject: [PATCH 123/167] Update ChangeLog for 3.5.3 --- ChangeLog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ChangeLog b/ChangeLog index 109a8e42..0ab46abe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 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 From 8d814c852447cdc413fd6bd52e1e0065350af856 Mon Sep 17 00:00:00 2001 From: michaelquellmalz Date: Thu, 14 Oct 2021 23:24:46 +0200 Subject: [PATCH 124/167] Update linux build script with new versions Avoid errors when running the nufft testfiles in an old Matlab/Octave which does not support the nufft function --- linux-build-mex.sh | 16 ++++++++++------ matlab/nfft/test_nfft1d_nufft.m | 8 ++++++++ matlab/nfft/test_nfft2d_nufft.m | 8 ++++++++ 3 files changed, 26 insertions(+), 6 deletions(-) mode change 100644 => 100755 linux-build-mex.sh diff --git a/linux-build-mex.sh b/linux-build-mex.sh old mode 100644 new mode 100755 index 86dae693..332687fd --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -27,8 +27,12 @@ RSYNC=rsync # Any subsequent commands which fail will cause the shell script to exit immediately set -ex -FFTWVERSION=3.3.8 -GCCVERSION=8.3.0 +# Write log file +exec > >(tee linux-build-mex.log) +exec 2>&1 + +FFTWVERSION=3.3.9 +GCCVERSION=8.5.0 GCCARCH=haswell BINARIES_ARCH_README=' Please note that since the binaries were compiled with gcc flag -march=haswell, @@ -41,9 +45,9 @@ MPCVERSION=1.1.0 # default values (to be overwritten if respective parameters are set) OCTAVEDIR=/usr -JULIA_BIN=julia/julia-1.1.1/bin/julia -JULIA_ARCHIVE=julia-1.1.1-linux-x86_64.tar.gz -JULIA_URL=https://julialang-s3.julialang.org/bin/linux/x64/1.1/$JULIA_ARCHIVE +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' -- "$@"` @@ -68,7 +72,7 @@ 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 -dumpfullversion) diff --git a/matlab/nfft/test_nfft1d_nufft.m b/matlab/nfft/test_nfft1d_nufft.m index 6adcc2c6..6dd31e98 100644 --- a/matlab/nfft/test_nfft1d_nufft.m +++ b/matlab/nfft/test_nfft1d_nufft.m @@ -19,6 +19,14 @@ % 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 diff --git a/matlab/nfft/test_nfft2d_nufft.m b/matlab/nfft/test_nfft2d_nufft.m index 46cf28b5..e3293af1 100644 --- a/matlab/nfft/test_nfft2d_nufft.m +++ b/matlab/nfft/test_nfft2d_nufft.m @@ -19,6 +19,14 @@ % 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 From 5ee56b88521d237ea7c4e5f29892be0682e8ed1b Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Fri, 15 Oct 2021 12:59:08 +0200 Subject: [PATCH 125/167] Github workflow also in release branch --- .github/workflows/c-cpp.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index c70a889e..f0363c4e 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -2,9 +2,9 @@ name: C/C++ CI on: push: - branches: [ develop ] + branches: [ develop, master, 'release/**', 'feature/**', 'bugfix/**' ] pull_request: - branches: [ develop ] + branches: [ develop, master ] jobs: build: @@ -29,5 +29,5 @@ jobs: 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 + - name: make distcheck + run: make distcheck From ba4d5d7f6add1621f1d84192c1a98346c260d402 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Fri, 15 Oct 2021 13:31:28 +0200 Subject: [PATCH 126/167] Do not make distcheck in github workflow distcheck did not succeed in github workflow, seemingly because we cannot use chmod there --- .github/workflows/c-cpp.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index f0363c4e..3851bb41 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -29,5 +29,5 @@ jobs: 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 distcheck - run: make distcheck + - name: make dist + run: make dist From 9bf13fb870267ddc1f3be1ad999f296cc3a18755 Mon Sep 17 00:00:00 2001 From: Kevin Matthes <92332892+kevinmatthes@users.noreply.github.com> Date: Tue, 19 Oct 2021 10:46:27 +0200 Subject: [PATCH 127/167] Fix wrong file name in documentation comment --- include/infft.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/infft.h b/include/infft.h index 059a45cd..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__ From cca56a034357b39b9bc1cc0f88369215bd2c833e Mon Sep 17 00:00:00 2001 From: Kevin Matthes <92332892+kevinmatthes@users.noreply.github.com> Date: Tue, 19 Oct 2021 10:48:27 +0200 Subject: [PATCH 128/167] Remove obsolete linebreak --- include/solver_adjoint.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/solver_adjoint.h b/include/solver_adjoint.h index e5c13845..18642baa 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 */ \ From 7659c0f6e20ddabe377b740e3d1c407af0e9c5cd Mon Sep 17 00:00:00 2001 From: Kevin Matthes <92332892+kevinmatthes@users.noreply.github.com> Date: Tue, 19 Oct 2021 13:34:08 +0200 Subject: [PATCH 129/167] Fix maximum line length --- include/solver_adjoint.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/solver_adjoint.h b/include/solver_adjoint.h index 18642baa..95f1233d 100644 --- a/include/solver_adjoint.h +++ b/include/solver_adjoint.h @@ -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) From eea4bd54bb70e5ad5e31c10622c357903dc10c4c Mon Sep 17 00:00:00 2001 From: Kevin Matthes <92332892+kevinmatthes@users.noreply.github.com> Date: Tue, 19 Oct 2021 18:26:43 +0200 Subject: [PATCH 130/167] Adjust conventions --- CONVENTIONS | 25 ------------------------- CONVENTIONS.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 25 deletions(-) delete mode 100644 CONVENTIONS create mode 100644 CONVENTIONS.md 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..ecb9736f --- /dev/null +++ b/CONVENTIONS.md @@ -0,0 +1,43 @@ +# 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. + +## 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; +``` + From c82f051c4d40beddca1ba74f4c76a910962267d2 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Wed, 27 Oct 2021 19:27:22 +0200 Subject: [PATCH 131/167] Update Readme --- README.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ba0bdb5b..906ee997 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 ========================= @@ -46,7 +44,7 @@ make doc Building -------- -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 `--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`. When working from a source repository, you need to run libtoolize and autoreconf first. A bash script to do this is provided. ``` @@ -67,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 a path of Matlab, 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. @@ -76,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 ``` @@ -165,6 +163,6 @@ 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 NEWS | New and noteworthy -README | This file. +README | This file README.md | This file tests (dir) | CUnit tests From c04e49cb177e9d8dba2c62ab71a802b2102071a9 Mon Sep 17 00:00:00 2001 From: Kevin Matthes Date: Thu, 28 Oct 2021 17:17:23 +0200 Subject: [PATCH 132/167] Add convention --- CONVENTIONS.md | 101 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 80 insertions(+), 21 deletions(-) diff --git a/CONVENTIONS.md b/CONVENTIONS.md index ecb9736f..f9ecafe4 100644 --- a/CONVENTIONS.md +++ b/CONVENTIONS.md @@ -1,43 +1,102 @@ -# Code conventions used internally by NFFT3 (not in API) +# 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 -## 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. +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. +`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. +`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. +`FFTW(foo)` expands to `fftw_foo`. Names that 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: +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 the styles above, the change should follow the convention of the +already existing lines. From 16b3a38742678b472ba994b894f928b070e1e7c3 Mon Sep 17 00:00:00 2001 From: Kevin Matthes Date: Thu, 28 Oct 2021 17:19:58 +0200 Subject: [PATCH 133/167] Bugfix --- CONVENTIONS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONVENTIONS.md b/CONVENTIONS.md index f9ecafe4..eae7b54a 100644 --- a/CONVENTIONS.md +++ b/CONVENTIONS.md @@ -28,7 +28,7 @@ always be `nfft_foo`. `FFTW(foo)` expands to `fftw_foo`. -Names that are not exported do not need to be mangled. +Names which are not exported do not need to be mangled. @@ -98,5 +98,5 @@ 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 the styles above, the change should follow the convention of the +apply one of the styles above, the change should follow the convention of the already existing lines. From 33c2e7a9f9765e25cdc885fb11810bf89d754b9b Mon Sep 17 00:00:00 2001 From: Kevin Matthes Date: Sat, 30 Oct 2021 19:01:40 +0200 Subject: [PATCH 134/167] Adjust bootstrap shebang --- bootstrap.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index e3a80eb2..642873db 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,8 +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 +# 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. # # This file is based on the bootstrap.sh script from FFTW 3.1.2 by From ba3df91eb61c94512a3fb71a26f31fec06ea0547 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Sun, 31 Oct 2021 19:52:05 +0100 Subject: [PATCH 135/167] Reference Readme instead of Tutorial --- bootstrap.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 642873db..06029f1a 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -20,8 +20,7 @@ # ################################################################################ # 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. +# 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 From de41ee7e94a9410ba9f8b8bcb57cafd5719e12cc Mon Sep 17 00:00:00 2001 From: Ghislain Antony Vaillant Date: Sat, 30 Oct 2021 22:06:24 +0200 Subject: [PATCH 136/167] No HTML timestamp in docs Use of HTML timestamps in the documentation hurts packaging reproducibility testing in downstream Linux distributions such as Debian. Please consider accepting this patch to remove them from the generated pages unless there is a good reason for it. --- doxygen/doxygen.Doxyfile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From d92cdaca5bda868ba10747c6265bd1a369f2a23b Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Mon, 31 Jan 2022 13:01:49 +0100 Subject: [PATCH 137/167] Re-enable odd degrees for NFSFT in Matlab #113 --- matlab/nfsft/nfsftmex.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/matlab/nfsft/nfsftmex.c b/matlab/nfsft/nfsftmex.c index 04e7ef01..3057c2f4 100644 --- a/matlab/nfsft/nfsftmex.c +++ b/matlab/nfsft/nfsftmex.c @@ -47,7 +47,7 @@ static char cmd[CMD_LEN_MAX]; static inline void get_nmf(const mxArray *prhs[], int *n, int *m, unsigned int *f) { - nfft_mex_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."); } @@ -163,7 +163,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i; int n, m; - nfft_mex_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]); From 65ce5a2a8727fc32c4ad53451902df3247867802 Mon Sep 17 00:00:00 2001 From: tvolkmer Date: Fri, 4 Feb 2022 21:16:18 +0100 Subject: [PATCH 138/167] binary build files of 3.5.3-rc1 --- linux-build-mex.sh | 4 ++-- macos-build-mex.sh | 4 ++-- windows-build-dll.sh | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index 332687fd..3d684ea1 100755 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -31,8 +31,8 @@ set -ex exec > >(tee linux-build-mex.log) exec 2>&1 -FFTWVERSION=3.3.9 -GCCVERSION=8.5.0 +FFTWVERSION=3.3.8 +GCCVERSION=11.2.0 GCCARCH=haswell BINARIES_ARCH_README=' Please note that since the binaries were compiled with gcc flag -march=haswell, diff --git a/macos-build-mex.sh b/macos-build-mex.sh index 2660cd48..5ec545ea 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -19,11 +19,11 @@ set -ex GCCARCH=haswell FFTWDIR=/usr/local -GCC="gcc-9 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" +GCC="gcc-11" # default values (to be overwritten if respective parameters are set) 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" diff --git a/windows-build-dll.sh b/windows-build-dll.sh index 5fd81d86..3922356d 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -24,7 +24,7 @@ set -ex # default values (to be overwritten if respective parameters are set) FFTWVERSION=3.3.8 -OCTAVEVERSION=5.2.0 +OCTAVEVERSION=6.4.0 MATLABVERSION="" ARCH=64 GCCARCH="" From c3de47561669d1b859c9a92bfea1d5983430b5dc Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Sat, 5 Feb 2022 14:32:10 +0100 Subject: [PATCH 139/167] Add missing function declarations in imex.h for odd degree N --- matlab/imex.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/matlab/imex.h b/matlab/imex.h index 4c510acb..0ea985e6 100644 --- a/matlab/imex.h +++ b/matlab/imex.h @@ -49,8 +49,11 @@ 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); From 3a71648c72e7c9533746cc88f19d51aef9673ef8 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Sat, 5 Feb 2022 23:09:11 +0100 Subject: [PATCH 140/167] revert macro to AC_PROG_CC_C99 due to issue with autoconf-2.69 (gcc-arch flag and -ffast-math do not work) --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 7af5ce6d..61da48a6 100644 --- a/configure.ac +++ b/configure.ac @@ -278,7 +278,7 @@ AC_LANG(C) AX_COMPILER_VENDOR # check for C99 compliant mode (possibly with GNU extensions) -AC_PROG_CC +AC_PROG_CC_C99 # per-target flags AM_PROG_CC_C_O From 85d7c17e53f66cf2a9571cb0baec4eab8716bd94 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Sat, 5 Feb 2022 23:44:38 +0100 Subject: [PATCH 141/167] updated binary build scripts --- linux-build-mex.sh | 2 +- macos-build-mex.sh | 2 +- windows-build-dll.sh | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/linux-build-mex.sh b/linux-build-mex.sh index 3d684ea1..d98a937e 100755 --- a/linux-build-mex.sh +++ b/linux-build-mex.sh @@ -31,7 +31,7 @@ set -ex exec > >(tee linux-build-mex.log) exec 2>&1 -FFTWVERSION=3.3.8 +FFTWVERSION=3.3.10 GCCVERSION=11.2.0 GCCARCH=haswell BINARIES_ARCH_README=' diff --git a/macos-build-mex.sh b/macos-build-mex.sh index 5ec545ea..14fd4e66 100755 --- a/macos-build-mex.sh +++ b/macos-build-mex.sh @@ -4,7 +4,7 @@ # 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 10.5 Catalina with Homebrew. +# The script is known to work on macOS 11 Big Sur with Homebrew. # # At least the following packages are required: # octave gnu-sed cunit diff --git a/windows-build-dll.sh b/windows-build-dll.sh index 3922356d..1476b093 100644 --- a/windows-build-dll.sh +++ b/windows-build-dll.sh @@ -6,7 +6,7 @@ # The Matlab path should not contain spaces! # # Example call: -# ./nfft-build-dll.sh --fftw=3.3.8 --octave=5.2.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, Julia and Octave (requires ~ 3GB). # @@ -23,7 +23,7 @@ set -ex # default values (to be overwritten if respective parameters are set) -FFTWVERSION=3.3.8 +FFTWVERSION=3.3.10 OCTAVEVERSION=6.4.0 MATLABVERSION="" ARCH=64 From b83662eba9771e652af57c0ae357f7f9f1fd0e81 Mon Sep 17 00:00:00 2001 From: Franziska Nestler Date: Mon, 5 Sep 2022 10:06:18 +0200 Subject: [PATCH 142/167] added kernel xx_gaussian to fastsum --- applications/fastsum/fastsum.m | 3 ++- applications/fastsum/fastsum_matlab.c | 2 ++ applications/fastsum/fastsum_test.c | 2 ++ applications/fastsum/kernels.c | 26 ++++++++++++++++++++++++++ applications/fastsum/kernels.h | 1 + matlab/fastsum/fastsummex.c | 2 ++ matlab/fastsum/simple_test.m | 3 ++- matlab/fastsum/test_fastsum.m | 3 ++- 8 files changed, 39 insertions(+), 3 deletions(-) diff --git a/applications/fastsum/fastsum.m b/applications/fastsum/fastsum.m index c15da033..40a0204e 100644 --- a/applications/fastsum/fastsum.m +++ b/applications/fastsum/fastsum.m @@ -47,7 +47,8 @@ % '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) +% 'xx_gaussian' K(x) = x^2 EXP(-x^2/c^2) % % Markus Fenn, 2006. diff --git a/applications/fastsum/fastsum_matlab.c b/applications/fastsum/fastsum_matlab.c index ebf3ff7b..522ef6d5 100644 --- a/applications/fastsum/fastsum_matlab.c +++ b/applications/fastsum/fastsum_matlab.c @@ -122,6 +122,8 @@ int main(int argc, char **argv) kernel = log_sin; else if (strcmp(s, "laplacian_rbf") == 0) kernel = laplacian_rbf; + else if (strcmp(s, "xx_gaussian") == 0) + kernel = xx_gaussian; else { printf("Unrecognized kernel function!\n"); diff --git a/applications/fastsum/fastsum_test.c b/applications/fastsum/fastsum_test.c index 7bcc49ab..467202e1 100644 --- a/applications/fastsum/fastsum_test.c +++ b/applications/fastsum/fastsum_test.c @@ -124,6 +124,8 @@ int main(int argc, char **argv) kernel = log_sin; else if (strcmp(s, "laplacian_rbf") == 0) kernel = laplacian_rbf; + else if (strcmp(s, "xx_gaussian") == 0) + kernel = xx_gaussian; else { s = "multiquadric"; diff --git a/applications/fastsum/kernels.c b/applications/fastsum/kernels.c index 5687a364..8728270f 100644 --- a/applications/fastsum/kernels.c +++ b/applications/fastsum/kernels.c @@ -431,6 +431,32 @@ C laplacian_rbf(R x, int der, const R *param) /* K(x)=EXP(-|x|/c) */ return value; } +C xx_gaussian(R x, int der, const R *param) /* K(x)=x^2 EXP(-x^2/c^2) */ +{ + R c = param[0]; + R value = K(0.0); + + switch (der) + { + case 0 : value = x*x*EXP(-x*x/(c*c)); break; + case 1 : value = K(2.0)*x*EXP(-x*x/(c*c))-K(2.0)*x*x*x*EXP(-x*x/(c*c))/(c*c); break; + case 2 : value = K(4.0)*x*x*x*x*EXP(-x*x/(c*c))/(c*c*c*c)-K(10.0)*x*x*EXP(-x*x/(c*c))/(c*c)+K(2.0)*EXP(-x*x/(c*c)); break; + case 3 : value = -K(8.0)*x*x*x*x*x*EXP(-x*x/(c*c))/(c*c*c*c*c*c)+K(36.0)*x*x*x*EXP(-x*x/(c*c))/(c*c*c*c)-K(24.0)*x*EXP(-x*x/(c*c))/(c*c); break; + case 4 : value = K(16.0)*x*x*x*x*x*x*EXP(-x*x/(c*c))/(c*c*c*c*c*c*c*c)-K(112.0)*x*x*x*x*EXP(-x*x/(c*c))/(c*c*c*c*c*c)+K(156.0)*x*x*EXP(-x*x/(c*c))/(c*c*c*c)-K(24.0)*EXP(-x*x/(c*c))/(c*c); break; + case 5 : value = -K(32.0)*x*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(10.0))+K(320.0)*x*x*x*x*x*EXP(-x*x/(c*c))/(c*c*c*c*c*c*c*c)-K(760.0)*x*x*x*EXP(-x*x/(c*c))/(c*c*c*c*c*c)+K(360.0)*x*EXP(-x*x/(c*c))/(c*c*c*c); break; + case 6 : value = K(64.0)*x*x*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(12.0))-K(864.0)*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(10.0))+K(3120.0)*x*x*x*x*EXP(-x*x/(c*c))/(c*c*c*c*c*c*c*c)-K(3000.0)*x*x*EXP(-x*x/(c*c))/(c*c*c*c*c*c)+K(360.0)*EXP(-x*x/(c*c))/(c*c*c*c); break; + case 7 : value = -K(128.0)*x*x*x*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(14.0))+K(2240.0)*x*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(12.0))-K(11424.0)*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(10.0))+K(18480.0)*x*x*x*EXP(-x*x/(c*c))/(c*c*c*c*c*c*c*c)-K(6720.0)*x*EXP(-x*x/(c*c))/(c*c*c*c*c*c); break; + case 8 : value = K(256.0)*POW(x,K(10.0))*EXP(-x*x/(c*c))/POW(c,K(16.0))-K(5632.0)*x*x*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(14.0))+K(38528.0)*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(12.0))-K(94080.0)*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(10.0))+K(68880.0)*x*x*EXP(-x*x/(c*c))/(c*c*c*c*c*c*c*c)-K(6720.0)*EXP(-x*x/(c*c))/(c*c*c*c*c*c); break; + case 9 : value = -K(512.0)*POW(x,K(11.0))*EXP(-x*x/(c*c))/POW(c,K(18.0))+K(13824.0)*x*x*x*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(16.0))-K(122112.0)*x*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(14.0))+K(419328.0)*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(12.0))-K(514080.0)*x*x*x*EXP(-x*x/(c*c))/POW(c,K(10.0))+K(151200.0)*x*EXP(-x*x/(c*c))/(c*c*c*c*c*c*c*c); break; + case 10 : value = K(1024.0)*POW(x,K(12.0))*EXP(-x*x/(c*c))/POW(c,K(20.0))-K(33280.0)*POW(x,K(10.0))*EXP(-x*x/(c*c))/POW(c,K(18.0))+K(368640.0)*x*x*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(16.0))-K(1693440.0)*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(14.0))+K(3124800.0)*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(12.0))-K(1844640.0)*x*x*EXP(-x*x/(c*c))/POW(c,K(10.0))+K(151200.0)*EXP(-x*x/(c*c))/(c*c*c*c*c*c*c*c); break; + case 11 : value = -K(2048.0)*POW(x,K(13.0))*EXP(-x*x/(c*c))/POW(c,K(22.0))+K(78848.0)*POW(x,K(11.0))*EXP(-x*x/(c*c))/POW(c,K(20.0))-K(1070080.0)*x*x*x*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(18.0))+K(6336000.0)*x*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(16.0))-K(16410240.0)*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(14.0))+K(16188480.0)*x*x*x*EXP(-x*x/(c*c))/POW(c,K(12.0))-K(3991680.0)*x*EXP(-x*x/(c*c))/POW(c,K(10.0)); break; + case 12 : value = K(4096.0)*POW(x,K(14.0))*EXP(-x*x/(c*c))/POW(c,K(24.0))-K(184320.0)*POW(x,K(12.0))*EXP(-x*x/(c*c))/POW(c,K(22.0))+K(3007488.0)*POW(x,K(10.0))*EXP(-x*x/(c*c))/POW(c,K(20.0))-K(22302720.0)*x*x*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(18.0))+K(77172480.0)*x*x*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(16.0))-K(114428160.0)*x*x*x*x*EXP(-x*x/(c*c))/POW(c,K(14.0))+K(56548800.0)*x*x*EXP(-x*x/(c*c))/POW(c,K(12.0))-K(3991680.0)*EXP(-x*x/(c*c))/POW(c,K(10.0)); break; + default : value = K(0.0); + } + + return value; +} + /* \} */ /* kernels.c */ diff --git a/applications/fastsum/kernels.h b/applications/fastsum/kernels.h index 6644e2ba..b66bf4d4 100644 --- a/applications/fastsum/kernels.h +++ b/applications/fastsum/kernels.h @@ -56,6 +56,7 @@ C kcot(R x, int der, const R *param); /**< K(x) = cot(cx) */ C one_over_cube(R x, int der, const R *param); /**< K(x) = 1/x^3 */ C log_sin(R x, int der, const R *param); /**< K(x) = log(|sin(cx)|) */ C laplacian_rbf(R x, int der, const R *param); /**< K(x) = exp(-|x|/c) */ +C xx_gaussian(R x, int der, const R *param); /**< K(x) = x^2 exp(-x^2/c^2) */ /* \} */ #ifdef __cplusplus diff --git a/matlab/fastsum/fastsummex.c b/matlab/fastsum/fastsummex.c index c5ccd1a0..e0e725f7 100644 --- a/matlab/fastsum/fastsummex.c +++ b/matlab/fastsum/fastsummex.c @@ -134,6 +134,8 @@ static kernel get_kernel(const mxArray *p) ker = log_sin; else if (strcmp(s, "laplacian_rbf") == 0) ker = laplacian_rbf; + else if (strcmp(s, "xx_gaussian") == 0) + ker = xx_gaussian; else mexErrMsgTxt("fastsum: Unknown kernel function."); return ker; diff --git a/matlab/fastsum/simple_test.m b/matlab/fastsum/simple_test.m index 954bfa22..db181d67 100644 --- a/matlab/fastsum/simple_test.m +++ b/matlab/fastsum/simple_test.m @@ -38,7 +38,8 @@ % '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) +% 'xx_gaussian' K(x) = x^2 EXP(-x^2/c^2) %% Initialize parameters d = 2; % number of dimensions diff --git a/matlab/fastsum/test_fastsum.m b/matlab/fastsum/test_fastsum.m index 72558c9f..8b830d56 100644 --- a/matlab/fastsum/test_fastsum.m +++ b/matlab/fastsum/test_fastsum.m @@ -38,7 +38,8 @@ % '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) +% 'xx_gaussian' K(x) = x^2 EXP(-x^2/c^2) %% Initialize parameters d = 2; % number of dimensions From bc456ef712c69eb5f6278949105727b9488951d3 Mon Sep 17 00:00:00 2001 From: Franziska Nestler Date: Mon, 12 Sep 2022 09:54:00 +0200 Subject: [PATCH 143/167] changed kernel xx_gaussian from x^2*EXP(...) to x^2/c^2*EXP(...) in fastsum --- applications/fastsum/fastsum.m | 2 +- applications/fastsum/kernels.c | 4 ++-- applications/fastsum/kernels.h | 2 +- matlab/fastsum/simple_test.m | 2 +- matlab/fastsum/test_fastsum.m | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/applications/fastsum/fastsum.m b/applications/fastsum/fastsum.m index 40a0204e..56c534ce 100644 --- a/applications/fastsum/fastsum.m +++ b/applications/fastsum/fastsum.m @@ -48,7 +48,7 @@ % 'cot' K(x) = cot(cx) % 'one_over_cube' K(x) = 1/x^3 % 'laplacian_rbf' K(x) = EXP(-|x|/c) -% 'xx_gaussian' K(x) = x^2 EXP(-x^2/c^2) +% 'xx_gaussian' K(x) = x^2/c^2 EXP(-x^2/c^2) % % Markus Fenn, 2006. diff --git a/applications/fastsum/kernels.c b/applications/fastsum/kernels.c index 8728270f..34b3ca90 100644 --- a/applications/fastsum/kernels.c +++ b/applications/fastsum/kernels.c @@ -431,7 +431,7 @@ C laplacian_rbf(R x, int der, const R *param) /* K(x)=EXP(-|x|/c) */ return value; } -C xx_gaussian(R x, int der, const R *param) /* K(x)=x^2 EXP(-x^2/c^2) */ +C xx_gaussian(R x, int der, const R *param) /* K(x)=x^2/c^2 EXP(-x^2/c^2) */ { R c = param[0]; R value = K(0.0); @@ -454,7 +454,7 @@ C xx_gaussian(R x, int der, const R *param) /* K(x)=x^2 EXP(-x^2/c^2) */ default : value = K(0.0); } - return value; + return value / (c*c); } /* \} */ diff --git a/applications/fastsum/kernels.h b/applications/fastsum/kernels.h index b66bf4d4..006a376e 100644 --- a/applications/fastsum/kernels.h +++ b/applications/fastsum/kernels.h @@ -56,7 +56,7 @@ C kcot(R x, int der, const R *param); /**< K(x) = cot(cx) */ C one_over_cube(R x, int der, const R *param); /**< K(x) = 1/x^3 */ C log_sin(R x, int der, const R *param); /**< K(x) = log(|sin(cx)|) */ C laplacian_rbf(R x, int der, const R *param); /**< K(x) = exp(-|x|/c) */ -C xx_gaussian(R x, int der, const R *param); /**< K(x) = x^2 exp(-x^2/c^2) */ +C xx_gaussian(R x, int der, const R *param); /**< K(x) = x^2/c^2 exp(-x^2/c^2) */ /* \} */ #ifdef __cplusplus diff --git a/matlab/fastsum/simple_test.m b/matlab/fastsum/simple_test.m index db181d67..14052637 100644 --- a/matlab/fastsum/simple_test.m +++ b/matlab/fastsum/simple_test.m @@ -39,7 +39,7 @@ % 'one_over_cube' K(x) = 1/x^3 % 'log_sin' K(x) = LOG(|SIN(cx)|) % 'laplacian_rbf' K(x) = EXP(-|x|/c) -% 'xx_gaussian' K(x) = x^2 EXP(-x^2/c^2) +% 'xx_gaussian' K(x) = x^2/c^2 EXP(-x^2/c^2) %% Initialize parameters d = 2; % number of dimensions diff --git a/matlab/fastsum/test_fastsum.m b/matlab/fastsum/test_fastsum.m index 8b830d56..7e2dc015 100644 --- a/matlab/fastsum/test_fastsum.m +++ b/matlab/fastsum/test_fastsum.m @@ -39,7 +39,7 @@ % 'one_over_cube' K(x) = 1/x^3 % 'log_sin' K(x) = LOG(|SIN(cx)|) % 'laplacian_rbf' K(x) = EXP(-|x|/c) -% 'xx_gaussian' K(x) = x^2 EXP(-x^2/c^2) +% 'xx_gaussian' K(x) = x^2/c^2 EXP(-x^2/c^2) %% Initialize parameters d = 2; % number of dimensions From b5cc6dcf4bd7e5b28a21c0b357845142f0135b69 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Tue, 4 Oct 2022 12:24:01 +0200 Subject: [PATCH 144/167] Add missing get functions for odd n to imex.h --- matlab/imex.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/matlab/imex.h b/matlab/imex.h index 4c510acb..0ea985e6 100644 --- a/matlab/imex.h +++ b/matlab/imex.h @@ -49,8 +49,11 @@ 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); From 9f1c39343148e2da39bbd1dfc8d0cb7fd9ad976f Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Sun, 11 Dec 2022 12:57:31 +0100 Subject: [PATCH 145/167] Add Bibtex entry in Readme --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 906ee997..de7424b7 100644 --- a/README.md +++ b/README.md @@ -86,9 +86,19 @@ 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 -------- From f43fd65965127887cb7e3c10341ce04f518e61c9 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Sun, 11 Dec 2022 13:09:42 +0100 Subject: [PATCH 146/167] github-actions: julia is not included in ubuntu --- .github/workflows/c-cpp.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 3851bb41..170e28c4 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -16,7 +16,12 @@ jobs: - name: Install libraries run: | sudo apt-get update - sudo apt-get install libfftw3-dev libcunit1-dev liboctave-dev julia + sudo apt-get install libfftw3-dev libcunit1-dev liboctave-dev + - name: Download julia + run: | + wget https://julialang-s3.julialang.org/bin/linux/x64/1.8/julia-1.8.3-linux-x86_64.tar.gz + tar zxvf julia-1.8.3-linux-x86_64.tar.gz + JULIA="$(pwd)/julia-1.8.3/bin/julia" - name: bootstrap run: ./bootstrap.sh - name: configure @@ -28,6 +33,6 @@ jobs: - 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 + 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 From 40450fbc48b078807f7f01bcdfc0f2a3b69a997a Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Sun, 11 Dec 2022 13:27:39 +0100 Subject: [PATCH 147/167] github-workflow: julia path --- .github/workflows/c-cpp.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 170e28c4..02ce3bb2 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -19,9 +19,11 @@ jobs: sudo apt-get install libfftw3-dev libcunit1-dev liboctave-dev - name: Download julia run: | - wget https://julialang-s3.julialang.org/bin/linux/x64/1.8/julia-1.8.3-linux-x86_64.tar.gz - tar zxvf julia-1.8.3-linux-x86_64.tar.gz + wget -q https://julialang-s3.julialang.org/bin/linux/x64/1.8/julia-1.8.3-linux-x86_64.tar.gz + tar zxf julia-1.8.3-linux-x86_64.tar.gz JULIA="$(pwd)/julia-1.8.3/bin/julia" + echo $JULIA + ls - name: bootstrap run: ./bootstrap.sh - name: configure From caa1746e8df7b536691b694bf0b8fef14ad9f6ef Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Sun, 11 Dec 2022 13:43:21 +0100 Subject: [PATCH 148/167] github-workflow: try to get right julia path --- .github/workflows/c-cpp.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 02ce3bb2..cb74ce3b 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -22,8 +22,8 @@ jobs: wget -q https://julialang-s3.julialang.org/bin/linux/x64/1.8/julia-1.8.3-linux-x86_64.tar.gz tar zxf julia-1.8.3-linux-x86_64.tar.gz JULIA="$(pwd)/julia-1.8.3/bin/julia" - echo $JULIA ls + ls julia-1.8.3 - name: bootstrap run: ./bootstrap.sh - name: configure @@ -35,6 +35,6 @@ jobs: - 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 + run: for DIR in julia/nf*t julia/fastsum; do cd $DIR; for NAME in simple_test*.jl; do ../../julia-1.8.3/bin/julia "$NAME"; done; cd ../..; done - name: make dist run: make dist From c9b2399c434a35ab8c305d3531c700a44f2c82ba Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Sun, 11 Dec 2022 14:23:45 +0100 Subject: [PATCH 149/167] github-workflow: julia should be installed already --- .github/workflows/c-cpp.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index cb74ce3b..7f317d72 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -17,13 +17,6 @@ jobs: run: | sudo apt-get update sudo apt-get install libfftw3-dev libcunit1-dev liboctave-dev - - name: Download julia - run: | - wget -q https://julialang-s3.julialang.org/bin/linux/x64/1.8/julia-1.8.3-linux-x86_64.tar.gz - tar zxf julia-1.8.3-linux-x86_64.tar.gz - JULIA="$(pwd)/julia-1.8.3/bin/julia" - ls - ls julia-1.8.3 - name: bootstrap run: ./bootstrap.sh - name: configure @@ -35,6 +28,6 @@ jobs: - 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-1.8.3/bin/julia "$NAME"; done; cd ../..; done + 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 From 97be77019c1065ffdeaa2e0fbd70a33c51766b3a Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Sun, 11 Dec 2022 17:08:18 +0100 Subject: [PATCH 150/167] Add required software in Readme #127 --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index de7424b7..00bacf23 100644 --- a/README.md +++ b/README.md @@ -37,16 +37,16 @@ Some examples for application of these transforms are provided: Detailed API documentation in HTML format can be found in `doc/html/index.html`, if you are working from a release tarball. When working from a source repository, the documentation can be -generated with Doxygen. +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, Homebrew on macOS and MSYS2 on Windows. If you compile the FFTW yourself, it should be configured with the flag `--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 ``` @@ -65,7 +65,7 @@ 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-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`. @@ -104,7 +104,7 @@ 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 From 307593de5f0e14047c0d9cf152674fd427db6721 Mon Sep 17 00:00:00 2001 From: Michael Quellmalz Date: Sun, 11 Dec 2022 17:14:18 +0100 Subject: [PATCH 151/167] github-workflow: install doxygen --- .github/workflows/c-cpp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 7f317d72..86c6f784 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -16,7 +16,7 @@ jobs: - name: Install libraries run: | sudo apt-get update - sudo apt-get install libfftw3-dev libcunit1-dev liboctave-dev + sudo apt-get install libfftw3-dev libcunit1-dev liboctave-dev doxygen-latex graphviz - name: bootstrap run: ./bootstrap.sh - name: configure From 281f59e930d61039411efad37e3da5f0c2ca6970 Mon Sep 17 00:00:00 2001 From: Franziska Nestler Date: Tue, 14 Feb 2023 10:31:38 +0100 Subject: [PATCH 152/167] added kernel absx --- applications/fastsum/fastsum.m | 1 + applications/fastsum/fastsum_matlab.c | 2 ++ applications/fastsum/fastsum_test.c | 2 ++ applications/fastsum/kernels.c | 16 ++++++++++++++++ applications/fastsum/kernels.h | 1 + julia/fastsum/libfastsumjulia.c | 4 ++++ matlab/fastsum/fastsummex.c | 2 ++ matlab/fastsum/simple_test.m | 1 + matlab/fastsum/test_fastsum.m | 13 +++++++------ 9 files changed, 36 insertions(+), 6 deletions(-) diff --git a/applications/fastsum/fastsum.m b/applications/fastsum/fastsum.m index 56c534ce..2358b985 100644 --- a/applications/fastsum/fastsum.m +++ b/applications/fastsum/fastsum.m @@ -49,6 +49,7 @@ % 'one_over_cube' K(x) = 1/x^3 % 'laplacian_rbf' K(x) = 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 522ef6d5..365eab23 100644 --- a/applications/fastsum/fastsum_matlab.c +++ b/applications/fastsum/fastsum_matlab.c @@ -124,6 +124,8 @@ int main(int argc, char **argv) kernel = 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 467202e1..016e6eb4 100644 --- a/applications/fastsum/fastsum_test.c +++ b/applications/fastsum/fastsum_test.c @@ -126,6 +126,8 @@ int main(int argc, char **argv) kernel = 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 34b3ca90..f17f66b3 100644 --- a/applications/fastsum/kernels.c +++ b/applications/fastsum/kernels.c @@ -457,6 +457,22 @@ C xx_gaussian(R x, int der, const R *param) /* K(x)=x^2/c^2 EXP(-x^2/c^2) */ return value / (c*c); } +C absx(R x, int der, const R *param) /* K(x)=|x| */ +{ + R value=K(0.0); + + (void)param; + + if (der == 0) value=FABS(x); + else if (der == 1){ + if (x<0) value=K(-1.0); + else value=K(1.0); + } + else value=K(0.0); + + return value; +} + /* \} */ /* kernels.c */ diff --git a/applications/fastsum/kernels.h b/applications/fastsum/kernels.h index 006a376e..f5766ff7 100644 --- a/applications/fastsum/kernels.h +++ b/applications/fastsum/kernels.h @@ -57,6 +57,7 @@ C one_over_cube(R x, int der, const R *param); /**< K(x) = 1/x^3 */ C log_sin(R x, int der, const R *param); /**< K(x) = log(|sin(cx)|) */ C laplacian_rbf(R x, int der, const R *param); /**< K(x) = exp(-|x|/c) */ C xx_gaussian(R x, int der, const R *param); /**< K(x) = x^2/c^2 exp(-x^2/c^2) */ +C absx(R x, int der, const R *param); /**< K(x) = |x| */ /* \} */ #ifdef __cplusplus diff --git a/julia/fastsum/libfastsumjulia.c b/julia/fastsum/libfastsumjulia.c index 6050c66a..8b42fd75 100644 --- a/julia/fastsum/libfastsumjulia.c +++ b/julia/fastsum/libfastsumjulia.c @@ -55,6 +55,10 @@ int jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, i kernel = log_sin; else if ( strcmp(s, "laplacian_rbf") == 0 ) kernel = laplacian_rbf; + else if ( strcmp(s, "xx_gaussian") == 0 ) + kernel = xx_gaussian; + else if ( strcmp(s, "absx") == 0 ) + kernel = absx; else { return 1; } diff --git a/matlab/fastsum/fastsummex.c b/matlab/fastsum/fastsummex.c index e0e725f7..47fece56 100644 --- a/matlab/fastsum/fastsummex.c +++ b/matlab/fastsum/fastsummex.c @@ -136,6 +136,8 @@ static kernel get_kernel(const mxArray *p) ker = 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; diff --git a/matlab/fastsum/simple_test.m b/matlab/fastsum/simple_test.m index 14052637..d5534f26 100644 --- a/matlab/fastsum/simple_test.m +++ b/matlab/fastsum/simple_test.m @@ -40,6 +40,7 @@ % 'log_sin' K(x) = LOG(|SIN(cx)|) % 'laplacian_rbf' K(x) = 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/fastsum/test_fastsum.m b/matlab/fastsum/test_fastsum.m index 7e2dc015..dad54956 100644 --- a/matlab/fastsum/test_fastsum.m +++ b/matlab/fastsum/test_fastsum.m @@ -40,18 +40,19 @@ % 'log_sin' K(x) = LOG(|SIN(cx)|) % 'laplacian_rbf' K(x) = 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 N = 2000; % number of source knots M = 2000; % number of target knots -kernel = 'multiquadric'; -c = 1/sqrt(N); % kernel parameter +kernel = 'xx_gaussian'; +c = 100; % kernel parameter p = 3; % degree of smoothness of regularization flags = 0; % flags (could be EXACT_NEARFIELD or NEARFIELD_BOXES) -n = 156; % expansion degree -eps_I = p/n; % inner boundary -eps_B = 1/16; % outer boundary +n = 32; % expansion degree +eps_I = 0.0;%p/n; % inner boundary +eps_B = 0.0;%1/16; % outer boundary m = p; % cut-off parameter for NFFT nn_oversampled=2*n; % oversampling factor for NFFT @@ -60,7 +61,7 @@ phi = rand(N,1)*2*pi; x = [r.*cos(phi) r.*sin(phi)]; % random coefficients -alpha = rand(N,1) + 1i*rand(N,1); +alpha = ones(N,1);%rand(N,1) + 1i*rand(N,1); % random target nodes in circle of radius 0.25-eps_B/2 r = sqrt(rand(M,1))*(0.25-eps_B/2); phi = rand(M,1)*2*pi; From 66d7cc71d807c84c41a2c9b36831d2fd86bdb4bc Mon Sep 17 00:00:00 2001 From: Franziska Nestler Date: Tue, 14 Feb 2023 10:47:52 +0100 Subject: [PATCH 153/167] repaired original setup in test_fastsum.m --- matlab/fastsum/test_fastsum.m | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/matlab/fastsum/test_fastsum.m b/matlab/fastsum/test_fastsum.m index dad54956..d316a0c2 100644 --- a/matlab/fastsum/test_fastsum.m +++ b/matlab/fastsum/test_fastsum.m @@ -46,13 +46,13 @@ d = 2; % number of dimensions N = 2000; % number of source knots M = 2000; % number of target knots -kernel = 'xx_gaussian'; -c = 100; % kernel parameter +kernel = 'multiquadric'; +c = 1/sqrt(N); % kernel parameter p = 3; % degree of smoothness of regularization flags = 0; % flags (could be EXACT_NEARFIELD or NEARFIELD_BOXES) -n = 32; % expansion degree -eps_I = 0.0;%p/n; % inner boundary -eps_B = 0.0;%1/16; % outer boundary +n = 156; % expansion degree +eps_I = p/n; % inner boundary +eps_B = 1/16; % outer boundary m = p; % cut-off parameter for NFFT nn_oversampled=2*n; % oversampling factor for NFFT @@ -61,7 +61,7 @@ phi = rand(N,1)*2*pi; x = [r.*cos(phi) r.*sin(phi)]; % random coefficients -alpha = ones(N,1);%rand(N,1) + 1i*rand(N,1); +alpha = rand(N,1) + 1i*rand(N,1); % random target nodes in circle of radius 0.25-eps_B/2 r = sqrt(rand(M,1))*(0.25-eps_B/2); phi = rand(M,1)*2*pi; From d1238a7a4d30c8710b9dba3570bd597144b88ac8 Mon Sep 17 00:00:00 2001 From: Toni Volkmer Date: Thu, 23 Feb 2023 23:27:14 +0100 Subject: [PATCH 154/167] increased version number to 3.5.4 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 61da48a6..fe302ac2 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], [3]) +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])) From e202f0cba948321acd7fef8554e3751511e37370 Mon Sep 17 00:00:00 2001 From: theresa Date: Wed, 10 Apr 2024 15:34:56 +0200 Subject: [PATCH 155/167] added kernel der_laplacian_rbf --- applications/fastsum/fastsum.m | 1 + applications/fastsum/fastsum_matlab.c | 2 ++ applications/fastsum/fastsum_test.c | 2 ++ applications/fastsum/kernels.c | 17 +++++++++++++++++ applications/fastsum/kernels.h | 1 + 5 files changed, 23 insertions(+) diff --git a/applications/fastsum/fastsum.m b/applications/fastsum/fastsum.m index 2358b985..3aefc435 100644 --- a/applications/fastsum/fastsum.m +++ b/applications/fastsum/fastsum.m @@ -48,6 +48,7 @@ % 'cot' K(x) = cot(cx) % 'one_over_cube' K(x) = 1/x^3 % '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| % diff --git a/applications/fastsum/fastsum_matlab.c b/applications/fastsum/fastsum_matlab.c index 365eab23..952cb91f 100644 --- a/applications/fastsum/fastsum_matlab.c +++ b/applications/fastsum/fastsum_matlab.c @@ -122,6 +122,8 @@ 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) diff --git a/applications/fastsum/fastsum_test.c b/applications/fastsum/fastsum_test.c index 016e6eb4..a9a0ea99 100644 --- a/applications/fastsum/fastsum_test.c +++ b/applications/fastsum/fastsum_test.c @@ -124,6 +124,8 @@ 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) diff --git a/applications/fastsum/kernels.c b/applications/fastsum/kernels.c index f17f66b3..4b79f864 100644 --- a/applications/fastsum/kernels.c +++ b/applications/fastsum/kernels.c @@ -431,6 +431,23 @@ C laplacian_rbf(R x, int der, const R *param) /* K(x)=EXP(-|x|/c) */ return value; } +C der_laplacian_rbf(R x, int der, const R *param) /* K(x)=|x|/c EXP(-|x|/c) */ +{ + R c = param[0]; + R value = K(0.0); + + switch (der) + { + case 0 : value = (FABS(x)/c)*EXP(-FABS(x)/c); break; + default: + value = (POW(K(-1.0),(R)der))*((FABS(x)-(R)der*c)/POW(c,(R)der+1))*EXP(-FABS(x)/c); + if (x < K(0.0)) + value *= POW(K(-1.0),(R)der); + } + + return value; +} + C xx_gaussian(R x, int der, const R *param) /* K(x)=x^2/c^2 EXP(-x^2/c^2) */ { R c = param[0]; diff --git a/applications/fastsum/kernels.h b/applications/fastsum/kernels.h index f5766ff7..0742c1b8 100644 --- a/applications/fastsum/kernels.h +++ b/applications/fastsum/kernels.h @@ -56,6 +56,7 @@ C kcot(R x, int der, const R *param); /**< K(x) = cot(cx) */ C one_over_cube(R x, int der, const R *param); /**< K(x) = 1/x^3 */ C log_sin(R x, int der, const R *param); /**< K(x) = log(|sin(cx)|) */ C laplacian_rbf(R x, int der, const R *param); /**< K(x) = exp(-|x|/c) */ +C der_laplacian_rbf(R x, int der, const R *param); /**< K(x) = |x|/c exp(-|x|/c) */ C xx_gaussian(R x, int der, const R *param); /**< K(x) = x^2/c^2 exp(-x^2/c^2) */ C absx(R x, int der, const R *param); /**< K(x) = |x| */ /* \} */ From 583def2e4d10cfc27238c7d4a472c51f3dda2f25 Mon Sep 17 00:00:00 2001 From: theresa Date: Wed, 10 Apr 2024 15:54:43 +0200 Subject: [PATCH 156/167] adapted julia and matlab files for der_laplacian_kernel --- julia/fastsum/libfastsumjulia.c | 2 ++ matlab/fastsum/fastsummex.c | 2 ++ matlab/fastsum/simple_test.m | 1 + matlab/fastsum/test_fastsum.m | 1 + 4 files changed, 6 insertions(+) diff --git a/julia/fastsum/libfastsumjulia.c b/julia/fastsum/libfastsumjulia.c index 8b42fd75..c74021b2 100644 --- a/julia/fastsum/libfastsumjulia.c +++ b/julia/fastsum/libfastsumjulia.c @@ -55,6 +55,8 @@ int jfastsum_init( fastsum_plan* p, int d, char* s, double* c, unsigned int f, i 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 ) diff --git a/matlab/fastsum/fastsummex.c b/matlab/fastsum/fastsummex.c index 47fece56..ea50560a 100644 --- a/matlab/fastsum/fastsummex.c +++ b/matlab/fastsum/fastsummex.c @@ -134,6 +134,8 @@ 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) diff --git a/matlab/fastsum/simple_test.m b/matlab/fastsum/simple_test.m index d5534f26..6ed15571 100644 --- a/matlab/fastsum/simple_test.m +++ b/matlab/fastsum/simple_test.m @@ -39,6 +39,7 @@ % 'one_over_cube' K(x) = 1/x^3 % 'log_sin' K(x) = LOG(|SIN(cx)|) % '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| diff --git a/matlab/fastsum/test_fastsum.m b/matlab/fastsum/test_fastsum.m index d316a0c2..ab1aff68 100644 --- a/matlab/fastsum/test_fastsum.m +++ b/matlab/fastsum/test_fastsum.m @@ -39,6 +39,7 @@ % 'one_over_cube' K(x) = 1/x^3 % 'log_sin' K(x) = LOG(|SIN(cx)|) % '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| From e1ef14cccd39ef916eec88526c0c6d8b5a6a956b Mon Sep 17 00:00:00 2001 From: theresa Date: Tue, 16 Apr 2024 13:15:00 +0200 Subject: [PATCH 157/167] increased efficiency of computations --- applications/fastsum/kernels.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/applications/fastsum/kernels.c b/applications/fastsum/kernels.c index 4b79f864..ee9d0575 100644 --- a/applications/fastsum/kernels.c +++ b/applications/fastsum/kernels.c @@ -441,8 +441,7 @@ C der_laplacian_rbf(R x, int der, const R *param) /* K(x)=|x|/c EXP(-|x|/c) * case 0 : value = (FABS(x)/c)*EXP(-FABS(x)/c); break; default: value = (POW(K(-1.0),(R)der))*((FABS(x)-(R)der*c)/POW(c,(R)der+1))*EXP(-FABS(x)/c); - if (x < K(0.0)) - value *= POW(K(-1.0),(R)der); + value *= 1 - 2 * ((x < K(0.0)) && (der % 2.0)); } return value; From 5098ca9593f4440b7c06708e6f3283e65363fe09 Mon Sep 17 00:00:00 2001 From: theresa Date: Tue, 16 Apr 2024 13:35:12 +0200 Subject: [PATCH 158/167] fixed bug --- applications/fastsum/kernels.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/fastsum/kernels.c b/applications/fastsum/kernels.c index ee9d0575..de27b90a 100644 --- a/applications/fastsum/kernels.c +++ b/applications/fastsum/kernels.c @@ -441,7 +441,7 @@ C der_laplacian_rbf(R x, int der, const R *param) /* K(x)=|x|/c EXP(-|x|/c) * case 0 : value = (FABS(x)/c)*EXP(-FABS(x)/c); break; default: value = (POW(K(-1.0),(R)der))*((FABS(x)-(R)der*c)/POW(c,(R)der+1))*EXP(-FABS(x)/c); - value *= 1 - 2 * ((x < K(0.0)) && (der % 2.0)); + value *= 1 - 2 * ((x < K(0.0)) && (der % 2)); } return value; From e9a1352be9aaf1ad94aae30934fb30002c5b9f8d Mon Sep 17 00:00:00 2001 From: Ralf Hielscher Date: Wed, 24 Apr 2024 12:46:41 +0200 Subject: [PATCH 159/167] allow configure to run on ARM Mac --- m4/ax_prog_matlab.m4 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/m4/ax_prog_matlab.m4 b/m4/ax_prog_matlab.m4 index 25ff7f3a..2f6a131c 100644 --- a/m4/ax_prog_matlab.m4 +++ b/m4/ax_prog_matlab.m4 @@ -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 From de2674afedb0c4ee684eefb23bc7243b0817007e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pascal=20Schr=C3=B6ter?= Date: Fri, 19 Jul 2024 17:39:17 +0200 Subject: [PATCH 160/167] fixed datatype --- julia/fastsum/libfastsumjulia.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/julia/fastsum/libfastsumjulia.c b/julia/fastsum/libfastsumjulia.c index 6050c66a..dff69909 100644 --- a/julia/fastsum/libfastsumjulia.c +++ b/julia/fastsum/libfastsumjulia.c @@ -22,7 +22,7 @@ fastsum_plan* jfastsum_alloc(){ } // 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, float eps_I, float eps_B, int N, int M, int nn_x, int nn_y, int m_x, int m_y ){ +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 ) From 0ff44fc275cd015035fae51a13ee8b0a7c6f316c Mon Sep 17 00:00:00 2001 From: Michael Nolander <113628428+mnolander@users.noreply.github.com> Date: Thu, 15 Aug 2024 15:59:26 +0200 Subject: [PATCH 161/167] Initial commit, added NFSFT interface for pyNFFT3 --- .vscode/settings.json | 7 ++++ configure.ac | 67 ++++++++++++++++++++------------- julia/Makefile.am | 9 ++++- julia/nfsft/Makefile.am | 33 +++++++++++++++++ julia/nfsft/NFSFT.jl | 4 ++ julia/nfsft/libnfsftjulia.c | 74 +++++++++++++++++++++++++++++++++++++ 6 files changed, 167 insertions(+), 27 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 julia/nfsft/Makefile.am create mode 100644 julia/nfsft/NFSFT.jl create mode 100644 julia/nfsft/libnfsftjulia.c diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..b4a6244c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "workbench.colorCustomizations": { + "activityBar.background": "#452238", + "titleBar.activeBackground": "#612F4F", + "titleBar.activeForeground": "#FCF9FB" + } +} \ No newline at end of file diff --git a/configure.ac b/configure.ac index fe302ac2..cbd1f744 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], [4]) +m4_define([nfft_version_patch], [1]) 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,10 +79,7 @@ LT_INIT([win32-dll]) AC_SUBST([LIBTOOL_DEPS]) # version information for shared library -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 +SHARED_VERSION_INFO="4:0:0" # substitute SHARED_VERSION_INFO in generated Makefiles AC_SUBST(SHARED_VERSION_INFO) @@ -156,18 +153,20 @@ 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, [AS_HELP_STRING([--enable-all],[build all modules])], +AC_ARG_ENABLE(all, [AC_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, [AS_HELP_STRING([--enable-examples],[enable example programs])], enable_examples=$enableval, enable_examples=$nfft_examples_default) +AC_ARG_ENABLE(examples, [AC_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, [AS_HELP_STRING([--enable-applications],[enable application programs])], enable_applications=$enableval, enable_applications=$nfft_applications_default) +AC_ARG_ENABLE(applications, [AC_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 @@ -177,7 +176,8 @@ if test "x$PRECISION" = "xd" -a "x$enable_shared" = "xyes"; then else nfft_julia_default="no" fi -AC_ARG_ENABLE(julia, [AS_HELP_STRING([--enable-julia],[enable julia interface])], enable_julia=$enableval, enable_julia=$nfft_julia_default) +AC_ARG_ENABLE(julia, [AC_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,30 +205,35 @@ 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, [AS_HELP_STRING([--enable-openmp], [enable OpenMP multithreaded code])], enable_threads=$enableval, enable_threads=no) +AC_ARG_ENABLE(openmp, [AC_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, [AS_HELP_STRING([--enable-debug], [compile with extra runtime checks for debugging])], enable_debug=$enableval, +AC_ARG_ENABLE(debug, [AC_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, [AS_HELP_STRING([--enable-measure-time],[measure time during execution])], ok=$enableval, ok=no) +AC_ARG_ENABLE(measure-time, [AC_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, [AS_HELP_STRING([--enable-measure-time-fftw],[measure time of FFTW transforms during execution])], ok=$enableval, ok=no) +AC_ARG_ENABLE(measure-time-fftw, [AC_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, [AS_HELP_STRING([--enable-mips-zbus-timer],[use MIPS ZBus cycle-counter])], have_mips_zbus_timer=$enableval, +AC_ARG_ENABLE(mips_zbus_timer, [AC_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, @@ -236,7 +241,7 @@ if test "$have_mips_zbus_timer" = "yes"; then fi # select window function -AC_ARG_WITH(window, [AS_HELP_STRING([--with-window=ARG],[choose window function +AC_ARG_WITH(window, [AC_HELP_STRING([--with-window=ARG],[choose window function (ARG can be one of: kaiserbessel (default), gaussian, bspline, sinc, dirac)])], window=$withval, window="kaiserbessel") @@ -343,12 +348,12 @@ fi # Check for MATLAB. AX_PROG_MATLAB -if test "x$ax_prog_matlab" = "xyes" -a "x$PRECISION" != "xd" -a "x$PRECISION" != "xs"; then +if test "x$ax_prog_matlab" = "xyes" -a "x$PRECISION" != "xd"; 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 @@ -435,6 +440,8 @@ 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] @@ -488,18 +495,18 @@ AC_CHECK_DECLS([srand48],[],[],[#include ]) # Cray UNICOS _rtc() (real-time clock) intrinsic AC_MSG_CHECKING([for _rtc intrinsic]) rtc_ok=yes -AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifdef HAVE_INTRINSICS_H +AC_TRY_LINK([#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_PREPROC_IFELSE([AC_LANG_SOURCE([[#include "cycle.h" +AC_TRY_CPP([#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 @@ -508,7 +515,7 @@ if test $ok = no; then echo " show incorrect results. " echo "***************************************************************" else - AC_RUN_IFELSE([AC_LANG_SOURCE([[#include "cycle.h" + AC_TRY_RUN([#include "cycle.h" #include #if defined(HAVE_NANOSLEEP) #include @@ -530,7 +537,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 "***************************************************************" @@ -565,6 +572,15 @@ 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" ) @@ -575,6 +591,8 @@ 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 \ @@ -644,13 +662,12 @@ AC_CONFIG_FILES(Makefile \ matlab/tests/nfsftUnitTests.m \ julia/Makefile \ julia/nfft/Makefile \ - julia/fastsum/Makefile \ julia/nfct/Makefile \ julia/nfst/Makefile \ + julia/nfsft/Makefile \ doxygen/Makefile \ support/Makefile) # temproarily removed: # applications/iterS2/Makefile \ -# 3rdparty/Makefile \ 3rdparty/cstripack/Makefile \ AC_OUTPUT diff --git a/julia/Makefile.am b/julia/Makefile.am index e5dc0817..79244167 100644 --- a/julia/Makefile.am +++ b/julia/Makefile.am @@ -10,13 +10,18 @@ else DIR_NFST= endif +if HAVE_NFSFT + DIR_NFSFT=nfsft +else + DIR_NFSFT=nfsft +endif + if HAVE_APPLICATIONS DIR_FASTSUM=fastsum else DIR_FASTSUM= endif - -SUBDIRS = nfft $(DIR_NFCT) $(DIR_NFST) $(DIR_FASTSUM) +SUBDIRS = nfft $(DIR_NFCT) $(DIR_NFST) $(DIR_NFSFT) $(DIR_FASTSUM) EXTRA_DIST = README.md 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..f0f17a3a --- /dev/null +++ b/julia/nfsft/NFSFT.jl @@ -0,0 +1,4 @@ +module NFSFT + +# module end +end diff --git a/julia/nfsft/libnfsftjulia.c b/julia/nfsft/libnfsftjulia.c new file mode 100644 index 00000000..00851485 --- /dev/null +++ b/julia/nfsft/libnfsftjulia.c @@ -0,0 +1,74 @@ +#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,c; + 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 From 01355a4e494c84f683da9a27b636bcce6c7f253d Mon Sep 17 00:00:00 2001 From: Michael Nolander <113628428+mnolander@users.noreply.github.com> Date: Thu, 15 Aug 2024 16:06:35 +0200 Subject: [PATCH 162/167] Updated configure.ac with changes in develop --- .gitignore | 1 + .vscode/settings.json | 7 ----- configure.ac | 65 ++++++++++++++++--------------------------- 3 files changed, 25 insertions(+), 48 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore index 7c1ec32c..4a0d53c5 100644 --- a/.gitignore +++ b/.gitignore @@ -158,3 +158,4 @@ matlab/tests/check_*_matlab.output windows-build-dll*/* linux-build-mex/* nfft-3.*.tar.gz +.vscode/* diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index b4a6244c..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "workbench.colorCustomizations": { - "activityBar.background": "#452238", - "titleBar.activeBackground": "#612F4F", - "titleBar.activeForeground": "#FCF9FB" - } -} \ No newline at end of file diff --git a/configure.ac b/configure.ac index cbd1f744..1537f486 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" ) @@ -663,11 +647,10 @@ AC_CONFIG_FILES(Makefile \ julia/Makefile \ julia/nfft/Makefile \ julia/nfct/Makefile \ - julia/nfst/Makefile \ julia/nfsft/Makefile \ doxygen/Makefile \ support/Makefile) # temproarily removed: # applications/iterS2/Makefile \ -AC_OUTPUT +AC_OUTPUT \ No newline at end of file From 5a2160db1c28df7f8b8830c565fa42629424c355 Mon Sep 17 00:00:00 2001 From: Michael Nolander <113628428+mnolander@users.noreply.github.com> Date: Thu, 15 Aug 2024 16:09:43 +0200 Subject: [PATCH 163/167] Fixed todo comment --- julia/nfsft/libnfsftjulia.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/julia/nfsft/libnfsftjulia.c b/julia/nfsft/libnfsftjulia.c index 00851485..69076502 100644 --- a/julia/nfsft/libnfsftjulia.c +++ b/julia/nfsft/libnfsftjulia.c @@ -15,7 +15,7 @@ nfsft_plan* jnfsft_alloc(void) { } 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_precompute(N,1000.0,0U,0U); // \todo: Make these variable for user nfsft_init_guru(p, N, M, flags, nfft_flags, nfft_cutoff); } From 05afe973bcb0d872bbfb717e5e7c65b01457bc97 Mon Sep 17 00:00:00 2001 From: Michael Nolander <113628428+mnolander@users.noreply.github.com> Date: Fri, 16 Aug 2024 14:38:17 +0200 Subject: [PATCH 164/167] Fixed configure and julia makefile --- configure.ac | 7 ++++--- julia/Makefile.am | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 1537f486..33a8ab53 100644 --- a/configure.ac +++ b/configure.ac @@ -575,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 \ @@ -646,11 +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 \ No newline at end of file +AC_OUTPUT diff --git a/julia/Makefile.am b/julia/Makefile.am index 79244167..694bac75 100644 --- a/julia/Makefile.am +++ b/julia/Makefile.am @@ -13,7 +13,7 @@ endif if HAVE_NFSFT DIR_NFSFT=nfsft else - DIR_NFSFT=nfsft + DIR_NFSFT= endif if HAVE_APPLICATIONS @@ -22,6 +22,7 @@ else DIR_FASTSUM= endif + SUBDIRS = nfft $(DIR_NFCT) $(DIR_NFST) $(DIR_NFSFT) $(DIR_FASTSUM) EXTRA_DIST = README.md From 845e528e31b90fad4e3e6444dfe6fe9f2183f4e4 Mon Sep 17 00:00:00 2001 From: Michael Nolander <113628428+mnolander@users.noreply.github.com> Date: Mon, 19 Aug 2024 13:13:52 +0200 Subject: [PATCH 165/167] Readded x setter --- julia/nfsft/libnfsftjulia.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/julia/nfsft/libnfsftjulia.c b/julia/nfsft/libnfsftjulia.c index 69076502..6b24a3fa 100644 --- a/julia/nfsft/libnfsftjulia.c +++ b/julia/nfsft/libnfsftjulia.c @@ -22,6 +22,10 @@ void jnfsft_init(nfsft_plan* p, int N, int M, unsigned int flags, unsigned int n double* jnfsft_set_x(nfsft_plan* p, double* X){ int M = p->M_total; int j,c; + 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; } From 892be7ee7e49fbeb8550c598db68a05c49a43d23 Mon Sep 17 00:00:00 2001 From: Michael Nolander <113628428+mnolander@users.noreply.github.com> Date: Tue, 20 Aug 2024 14:54:37 +0200 Subject: [PATCH 166/167] Added NFSFT Julia file and test script --- julia/nfsft/NFSFT.jl | 290 +++++++++++++++++++++++++++++++++++++ julia/nfsft/simple_test.jl | 66 +++++++++ 2 files changed, 356 insertions(+) create mode 100644 julia/nfsft/simple_test.jl diff --git a/julia/nfsft/NFSFT.jl b/julia/nfsft/NFSFT.jl index f0f17a3a..a768d4b5 100644 --- a/julia/nfsft/NFSFT.jl +++ b/julia/nfsft/NFSFT.jl @@ -1,4 +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/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 From 1986022e0fd82d811e3c64368a8c7898c2908ce2 Mon Sep 17 00:00:00 2001 From: Michael Nolander <113628428+mnolander@users.noreply.github.com> Date: Wed, 21 Aug 2024 12:56:59 +0200 Subject: [PATCH 167/167] Removed unused variable from x setter --- julia/nfsft/libnfsftjulia.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/julia/nfsft/libnfsftjulia.c b/julia/nfsft/libnfsftjulia.c index 6b24a3fa..2908f84d 100644 --- a/julia/nfsft/libnfsftjulia.c +++ b/julia/nfsft/libnfsftjulia.c @@ -21,7 +21,7 @@ void jnfsft_init(nfsft_plan* p, int N, int M, unsigned int flags, unsigned int n double* jnfsft_set_x(nfsft_plan* p, double* X){ int M = p->M_total; - int j,c; + 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;