Skip to content

Commit

Permalink
Merge pull request #382 from lu1and10/cmake-ci
Browse files Browse the repository at this point in the history
Cmake CI for 3 OSes (6 combos total).
  • Loading branch information
lu1and10 authored Dec 12, 2023
2 parents 081445f + c8a7b6a commit 969339b
Show file tree
Hide file tree
Showing 11 changed files with 218 additions and 68 deletions.
72 changes: 72 additions & 0 deletions .github/workflows/cmake_ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: cmake ci linux macos windows
on: [push]

jobs:
Test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- windows-2022
- ubuntu-22.04
- macos-12
compiler:
- llvm
- gcc
# you can specify the version after `-` like `llvm-13.0.0`.
generator:
- "Ninja"
build_type:
- Release
finufft_static_linking:
- ON
include:
- os: "windows-2022"
compiler: "msvc"
generator: "Ninja"
build_type: "Release"
finufft_static_linking: "OFF"
exclude:
- os: "windows-2022"
compiler: "gcc"
generator: "Ninja"
build_type: "Release"
steps:
- uses: actions/checkout@v3

- name: Setup Cpp
uses: aminya/setup-cpp@v1
with:
compiler: ${{ matrix.compiler }}
vcvarsall: ${{ contains(matrix.os, 'windows') }}
cmake: true
ninja: true
vcpkg: false
cppcheck: false
clangtidy: false

- name: Install macOS dependencies
if: runner.os == 'macOS'
run: |
brew install fftw
- name: Configure Cmake
run: |
cmake -S . -B ./build -G "${{matrix.generator}}" -DCMAKE_BUILD_TYPE:STRING=${{matrix.build_type}} -DFINUFFT_BUILD_TESTS=ON -DFINUFFT_STATIC_LINKING=${{matrix.finufft_static_linking}}
- name: Build
run: |
cmake --build ./build --config ${{matrix.build_type}}
- name: Test
working-directory: ./build
run: |
ctest -C ${{matrix.build_type}}
# may change to cpack and action-gh-release later
- name: Upload static and shared lib
uses: actions/upload-artifact@v3
with:
name: ${{matrix.os}}-${{matrix.compiler}}-finufft-lib
path: ${{runner.workspace}}/finufft/build/*finufft*
42 changes: 40 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ option(FINUFFT_ENABLE_SANITIZERS "Whether to enable sanitizers, only effective f
option(FINUFFT_USE_OPENMP "Whether to use OpenMP for parallelization. If disabled, the finufft library will be single threaded. This does not affect the choice of FFTW library." ON)
option(FINUFFT_USE_CUDA "Whether to build CUDA accelerated FINUFFT library (libcufinufft). This is completely independent of the main FINUFFT library" OFF)
option(FINUFFT_USE_CPU "Whether to build the ordinary FINUFFT library (libfinufft)." ON)
option(FINUFFT_STATIC_LINKING "Whether to link the static FINUFFT library (libfinufft_static)." ON)
# sphinx tag (don't remove): @cmake_opts_end

if(FINUFFT_USE_CPU)
Expand Down Expand Up @@ -84,6 +85,25 @@ function(enable_asan target)
endif ()
endfunction()

# Utility function to link static/dynamic lib
function(finufft_link_test target)
if(FINUFFT_STATIC_LINKING)
target_link_libraries(${target} PRIVATE finufft_static)
if(FINUFFT_USE_OPENMP)
target_link_libraries(${target} PRIVATE OpenMP::OpenMP_CXX)
if(WIN32)
target_link_options(${target} PRIVATE ${OpenMP_CXX_FLAGS})
endif()
endif()
else()
target_link_libraries(${target} PRIVATE finufft)
if(WIN32)
target_compile_definitions(${target} PRIVATE FINUFFT_DLL)
endif()
endif()
enable_asan(${target})
endfunction()

# Utility function to set finufft compilation options.
function(set_finufft_options target)
set_property(TARGET ${target} PROPERTY POSITION_INDEPENDENT_CODE ON)
Expand Down Expand Up @@ -132,20 +152,38 @@ if(FINUFFT_USE_CPU)
target_link_libraries(finufft_f32 PUBLIC ${FINUFFT_FFTW_LIBRARIES})

add_library(finufft_f64 OBJECT ${FINUFFT_PRECISION_DEPENDENT_SOURCES})
target_compile_definitions(finufft_f64 PRIVATE)
set_finufft_options(finufft_f64)
target_link_libraries(finufft_f64 PUBLIC ${FINUFFT_FFTW_LIBRARIES})

if(WIN32)
add_library(finufft_f32_dll OBJECT ${FINUFFT_PRECISION_DEPENDENT_SOURCES})
target_compile_definitions(finufft_f32_dll PRIVATE SINGLE dll_EXPORTS FINUFFT_DLL)
set_finufft_options(finufft_f32_dll)
target_link_libraries(finufft_f32_dll PUBLIC ${FINUFFT_FFTW_LIBRARIES})

add_library(finufft_f64_dll OBJECT ${FINUFFT_PRECISION_DEPENDENT_SOURCES})
target_compile_definitions(finufft_f64_dll PRIVATE dll_EXPORTS FINUFFT_DLL)
set_finufft_options(finufft_f64_dll)
target_link_libraries(finufft_f64_dll PUBLIC ${FINUFFT_FFTW_LIBRARIES})
endif()

add_library(finufft SHARED src/utils_precindep.cpp contrib/legendre_rule_fast.cpp)
target_compile_definitions(finufft PRIVATE dll_EXPORTS FINUFFT_DLL)
set_finufft_options(finufft)
target_link_libraries(finufft PUBLIC finufft_f32 finufft_f64)
if(NOT WIN32)
target_link_libraries(finufft PUBLIC finufft_f32 finufft_f64)
else()
target_link_libraries(finufft PUBLIC finufft_f32_dll finufft_f64_dll)
endif()
# windows does not have a math library, so we need to exclude it
if(NOT WIN32)
target_link_libraries(finufft PUBLIC m)
endif()
target_include_directories(finufft PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")

add_library(finufft_static STATIC src/utils_precindep.cpp contrib/legendre_rule_fast.cpp)
set_finufft_options(finufft)
set_finufft_options(finufft_static)
target_link_libraries(finufft_static PUBLIC finufft_f32 finufft_f64)
# windows does not have a math library, so we need to exclude it
if(NOT WIN32)
Expand Down
3 changes: 3 additions & 0 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,20 @@ set(EXAMPLES_C guru1d1c simple1d1c simple1d1cf)
foreach(EXAMPLE ${EXAMPLES})
add_executable(${EXAMPLE} ${EXAMPLE}.cpp)
target_link_libraries(${EXAMPLE} PRIVATE finufft)
enable_asan(${EXAMPLE})
endforeach()

foreach(EXAMPLE ${EXAMPLES_C})
add_executable(${EXAMPLE} ${EXAMPLE}.c)
target_link_libraries(${EXAMPLE} PRIVATE finufft)
enable_asan(${EXAMPLE})
endforeach()

if(FINUFFT_USE_OPENMP)
foreach(EXAMPLE ${EXAMPLES_OPENMP})
add_executable(${EXAMPLE} ${EXAMPLE}.cpp)
target_link_libraries(${EXAMPLE} PRIVATE finufft)
enable_asan(${EXAMPLE})
endforeach()
endif()

Expand Down
18 changes: 9 additions & 9 deletions include/finufft/spreadinterp.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,26 @@ namespace finufft {
namespace spreadinterp {

// things external (spreadinterp) interface needs...
int spreadinterp(BIGINT N1, BIGINT N2, BIGINT N3, FLT *data_uniform,
FINUFFT_EXPORT int FINUFFT_CDECL spreadinterp(BIGINT N1, BIGINT N2, BIGINT N3, FLT *data_uniform,
BIGINT M, FLT *kx, FLT *ky, FLT *kz,
FLT *data_nonuniform, finufft_spread_opts opts);
int spreadcheck(BIGINT N1, BIGINT N2, BIGINT N3,
FINUFFT_EXPORT int FINUFFT_CDECL spreadcheck(BIGINT N1, BIGINT N2, BIGINT N3,
BIGINT M, FLT *kx, FLT *ky, FLT *kz, finufft_spread_opts opts);
int indexSort(BIGINT* sort_indices, BIGINT N1, BIGINT N2, BIGINT N3, BIGINT M,
FINUFFT_EXPORT int FINUFFT_CDECL indexSort(BIGINT* sort_indices, BIGINT N1, BIGINT N2, BIGINT N3, BIGINT M,
FLT *kx, FLT *ky, FLT *kz, finufft_spread_opts opts);
int interpSorted(BIGINT* sort_indices,BIGINT N1, BIGINT N2, BIGINT N3,
FINUFFT_EXPORT int FINUFFT_CDECL interpSorted(BIGINT* sort_indices,BIGINT N1, BIGINT N2, BIGINT N3,
FLT *data_uniform,BIGINT M, FLT *kx, FLT *ky, FLT *kz,
FLT *data_nonuniform, finufft_spread_opts opts, int did_sort);
int spreadSorted(BIGINT* sort_indices,BIGINT N1, BIGINT N2, BIGINT N3,
FINUFFT_EXPORT int FINUFFT_CDECL spreadSorted(BIGINT* sort_indices,BIGINT N1, BIGINT N2, BIGINT N3,
FLT *data_uniform,BIGINT M, FLT *kx, FLT *ky, FLT *kz,
FLT *data_nonuniform, finufft_spread_opts opts, int did_sort);
int spreadinterpSorted(BIGINT* sort_indices,BIGINT N1, BIGINT N2, BIGINT N3,
FINUFFT_EXPORT int FINUFFT_CDECL spreadinterpSorted(BIGINT* sort_indices,BIGINT N1, BIGINT N2, BIGINT N3,
FLT *data_uniform,BIGINT M, FLT *kx, FLT *ky, FLT *kz,
FLT *data_nonuniform, finufft_spread_opts opts,
int did_sort);
FLT evaluate_kernel(FLT x,const finufft_spread_opts &opts);
FLT evaluate_kernel_noexp(FLT x,const finufft_spread_opts &opts);
int setup_spreader(finufft_spread_opts &opts,FLT eps,double upsampfac,
FINUFFT_EXPORT FLT FINUFFT_CDECL evaluate_kernel(FLT x,const finufft_spread_opts &opts);
FINUFFT_EXPORT FLT FINUFFT_CDECL evaluate_kernel_noexp(FLT x,const finufft_spread_opts &opts);
FINUFFT_EXPORT int FINUFFT_CDECL setup_spreader(finufft_spread_opts &opts,FLT eps,double upsampfac,
int kerevalmeth, int debug, int showwarn, int dim);

} // namespace
Expand Down
14 changes: 7 additions & 7 deletions include/finufft/utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ namespace finufft {
namespace utils {

// ahb's low-level array helpers
FLT relerrtwonorm(BIGINT n, CPX* a, CPX* b);
FLT errtwonorm(BIGINT n, CPX* a, CPX* b);
FLT twonorm(BIGINT n, CPX* a);
FLT infnorm(BIGINT n, CPX* a);
void arrayrange(BIGINT n, FLT* a, FLT *lo, FLT *hi);
void indexedarrayrange(BIGINT n, BIGINT* i, FLT* a, FLT *lo, FLT *hi);
void arraywidcen(BIGINT n, FLT* a, FLT *w, FLT *c);
FINUFFT_EXPORT FLT FINUFFT_CDECL relerrtwonorm(BIGINT n, CPX* a, CPX* b);
FINUFFT_EXPORT FLT FINUFFT_CDECL errtwonorm(BIGINT n, CPX* a, CPX* b);
FINUFFT_EXPORT FLT FINUFFT_CDECL twonorm(BIGINT n, CPX* a);
FINUFFT_EXPORT FLT FINUFFT_CDECL infnorm(BIGINT n, CPX* a);
FINUFFT_EXPORT void FINUFFT_CDECL arrayrange(BIGINT n, FLT* a, FLT *lo, FLT *hi);
FINUFFT_EXPORT void FINUFFT_CDECL indexedarrayrange(BIGINT n, BIGINT* i, FLT* a, FLT *lo, FLT *hi);
FINUFFT_EXPORT void FINUFFT_CDECL arraywidcen(BIGINT n, FLT* a, FLT *w, FLT *c);

} // namespace
} // namespace
Expand Down
6 changes: 3 additions & 3 deletions include/finufft/utils_precindep.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
namespace finufft {
namespace utils {

BIGINT next235even(BIGINT n);
FINUFFT_EXPORT BIGINT FINUFFT_CDECL next235even(BIGINT n);

// jfm's timer class
class CNTime {
class FINUFFT_EXPORT CNTime {
public:
void start();
double restart();
Expand All @@ -35,7 +35,7 @@ namespace finufft {
#include <random>
namespace finufft {
namespace utils {
int rand_r(unsigned int *seedp);
FINUFFT_EXPORT int FINUFFT_CDECL rand_r(unsigned int *seedp);
} // namespace
} // namespace
#endif
Expand Down
78 changes: 55 additions & 23 deletions include/finufft_eitherprec.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,38 @@
// the plan object pointed to... (doesn't need to be even defined here)
#define FINUFFT_PLAN_S FINUFFTIFY(_plan_s)

/* IMPORTANT: for Windows compilers, you should add a line
#define FINUFFT_DLL
here if you are compiling/using FINUFFT as a DLL,
in order to do the proper importing/exporting, or
alternatively compile with -DFINUFFT_DLL or the equivalent
command-line flag. This is not necessary under MinGW/Cygwin, where
libtool does the imports/exports automatically.
Alternatively use include(GenerateExportHeader) and
generate_export_header(finufft) to auto generate an header containing
these defines.The main reason is that if msvc changes the way it deals
with it in the future we just need to update cmake for it to work
instead of having a check on the msvc version. */
#if defined(FINUFFT_DLL) && (defined(_WIN32) || defined(__WIN32__))
# if defined(dll_EXPORTS)
# define FINUFFT_EXPORT __declspec(dllexport)
# else
# define FINUFFT_EXPORT __declspec(dllimport)
# endif
#else
# define FINUFFT_EXPORT
#endif

/* specify calling convention (Windows only)
The cdecl calling convention is actually not the default in all but a very
few C/C++ compilers.
If the user code changes the default compiler calling convention, may need
this when generating DLL. */
#if defined(_WIN32) || defined(__WIN32__)
# define FINUFFT_CDECL __cdecl
#else
# define FINUFFT_CDECL
#endif

////////////////////////////////////////////////////////////////////
// PUBLIC METHOD INTERFACES. All are C-style even when used from C++...
Expand All @@ -55,52 +87,52 @@ typedef struct FINUFFT_PLAN_S * FINUFFT_PLAN;
// ------------------ the guru interface ------------------------------------
// (sources in finufft.cpp)

void FINUFFTIFY(_default_opts)(finufft_opts *o);
int FINUFFTIFY(_makeplan)(int type, int dim, FINUFFT_BIGINT* n_modes, int iflag, int n_transf, FINUFFT_FLT tol, FINUFFT_PLAN* plan, finufft_opts* o);
int FINUFFTIFY(_setpts)(FINUFFT_PLAN plan , FINUFFT_BIGINT M, FINUFFT_FLT *xj, FINUFFT_FLT *yj, FINUFFT_FLT *zj, FINUFFT_BIGINT N, FINUFFT_FLT *s, FINUFFT_FLT *t, FINUFFT_FLT *u);
int FINUFFTIFY(_execute)(FINUFFT_PLAN plan, FINUFFT_CPX* weights, FINUFFT_CPX* result);
int FINUFFTIFY(_destroy)(FINUFFT_PLAN plan);
FINUFFT_EXPORT void FINUFFT_CDECL FINUFFTIFY(_default_opts)(finufft_opts *o);
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(_makeplan)(int type, int dim, FINUFFT_BIGINT* n_modes, int iflag, int n_transf, FINUFFT_FLT tol, FINUFFT_PLAN* plan, finufft_opts* o);
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(_setpts)(FINUFFT_PLAN plan , FINUFFT_BIGINT M, FINUFFT_FLT *xj, FINUFFT_FLT *yj, FINUFFT_FLT *zj, FINUFFT_BIGINT N, FINUFFT_FLT *s, FINUFFT_FLT *t, FINUFFT_FLT *u);
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(_execute)(FINUFFT_PLAN plan, FINUFFT_CPX* weights, FINUFFT_CPX* result);
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(_destroy)(FINUFFT_PLAN plan);


// ----------------- the 18 simple interfaces -------------------------------
// (sources in simpleinterfaces.cpp)

int FINUFFTIFY(1d1)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT ms,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(1d1)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT ms,
FINUFFT_CPX* fk, finufft_opts *opts);
int FINUFFTIFY(1d1many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT ms,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(1d1many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT ms,
FINUFFT_CPX* fk, finufft_opts *opts);

int FINUFFTIFY(1d2)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT ms,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(1d2)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT ms,
FINUFFT_CPX* fk, finufft_opts *opts);
int FINUFFTIFY(1d2many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT ms,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(1d2many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT ms,
FINUFFT_CPX* fk, finufft_opts *opts);
int FINUFFTIFY(1d3)(FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_CPX* c,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT nk, FINUFFT_FLT* s, FINUFFT_CPX* f, finufft_opts *opts);
int FINUFFTIFY(1d3many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_CPX* c,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT nk, FINUFFT_FLT* s, FINUFFT_CPX* f, finufft_opts *opts);
int FINUFFTIFY(2d1)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(1d3)(FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_CPX* c,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT nk, FINUFFT_FLT* s, FINUFFT_CPX* f, finufft_opts *opts);
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(1d3many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_CPX* c,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT nk, FINUFFT_FLT* s, FINUFFT_CPX* f, finufft_opts *opts);
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(2d1)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_BIGINT ms, FINUFFT_BIGINT mt, FINUFFT_CPX* fk, finufft_opts *opts);
int FINUFFTIFY(2d1many)(int ndata, FINUFFT_BIGINT nj, FINUFFT_FLT* xj, FINUFFT_FLT *yj, FINUFFT_CPX* c, int iflag,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(2d1many)(int ndata, FINUFFT_BIGINT nj, FINUFFT_FLT* xj, FINUFFT_FLT *yj, FINUFFT_CPX* c, int iflag,
FINUFFT_FLT eps, FINUFFT_BIGINT ms, FINUFFT_BIGINT mt, FINUFFT_CPX* fk, finufft_opts *opts);
int FINUFFTIFY(2d2)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(2d2)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_BIGINT ms, FINUFFT_BIGINT mt, FINUFFT_CPX* fk, finufft_opts *opts);
int FINUFFTIFY(2d2many)(int ndata, FINUFFT_BIGINT nj, FINUFFT_FLT* xj, FINUFFT_FLT *yj, FINUFFT_CPX* c, int iflag,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(2d2many)(int ndata, FINUFFT_BIGINT nj, FINUFFT_FLT* xj, FINUFFT_FLT *yj, FINUFFT_CPX* c, int iflag,
FINUFFT_FLT eps, FINUFFT_BIGINT ms, FINUFFT_BIGINT mt, FINUFFT_CPX* fk, finufft_opts *opts);
int FINUFFTIFY(2d3)(FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_FLT *y,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT nk, FINUFFT_FLT* s, FINUFFT_FLT* t, FINUFFT_CPX* fk, finufft_opts *opts);
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(2d3)(FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_FLT *y,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT nk, FINUFFT_FLT* s, FINUFFT_FLT* t, FINUFFT_CPX* fk, finufft_opts *opts);

int FINUFFTIFY(2d3many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_FLT *y,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT nk, FINUFFT_FLT* s, FINUFFT_FLT* t, FINUFFT_CPX* fk, finufft_opts *opts);
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(2d3many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_FLT *y,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,FINUFFT_BIGINT nk, FINUFFT_FLT* s, FINUFFT_FLT* t, FINUFFT_CPX* fk, finufft_opts *opts);

int FINUFFTIFY(3d1)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_FLT *zj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(3d1)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_FLT *zj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_BIGINT ms, FINUFFT_BIGINT mt, FINUFFT_BIGINT mu, FINUFFT_CPX* fk, finufft_opts *opts);
int FINUFFTIFY(3d1many)(int ntransfs, FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_FLT *zj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(3d1many)(int ntransfs, FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_FLT *zj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_BIGINT ms, FINUFFT_BIGINT mt, FINUFFT_BIGINT mu, FINUFFT_CPX* fk, finufft_opts *opts);

int FINUFFTIFY(3d2)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_FLT *zj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(3d2)(FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_FLT *zj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_BIGINT ms, FINUFFT_BIGINT mt, FINUFFT_BIGINT mu, FINUFFT_CPX* fk, finufft_opts *opts);
int FINUFFTIFY(3d2many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_FLT *zj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(3d2many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* xj,FINUFFT_FLT *yj,FINUFFT_FLT *zj,FINUFFT_CPX* cj,int iflag,FINUFFT_FLT eps,
FINUFFT_BIGINT ms, FINUFFT_BIGINT mt, FINUFFT_BIGINT mu, FINUFFT_CPX* fk, finufft_opts *opts);
int FINUFFTIFY(3d3)(FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_FLT *y,FINUFFT_FLT *z, FINUFFT_CPX* cj,int iflag,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(3d3)(FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_FLT *y,FINUFFT_FLT *z, FINUFFT_CPX* cj,int iflag,
FINUFFT_FLT eps,FINUFFT_BIGINT nk,FINUFFT_FLT* s, FINUFFT_FLT* t, FINUFFT_FLT *u,
FINUFFT_CPX* fk, finufft_opts *opts);
int FINUFFTIFY(3d3many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_FLT *y,FINUFFT_FLT *z, FINUFFT_CPX* cj,int iflag,
FINUFFT_EXPORT int FINUFFT_CDECL FINUFFTIFY(3d3many)(int ntransf, FINUFFT_BIGINT nj,FINUFFT_FLT* x,FINUFFT_FLT *y,FINUFFT_FLT *z, FINUFFT_CPX* cj,int iflag,
FINUFFT_FLT eps,FINUFFT_BIGINT nk,FINUFFT_FLT* s, FINUFFT_FLT* t, FINUFFT_FLT *u,
FINUFFT_CPX* fk, finufft_opts *opts);

Expand Down
Loading

0 comments on commit 969339b

Please sign in to comment.