@@ -108,7 +108,7 @@ static int setup_spreader_for_nufft(finufft_spread_opts &spopts, T eps,
108108 // this calls spreadinterp.cpp...
109109 int ier = setup_spreader (spopts, eps, opts.upsampfac , opts.spread_kerevalmeth ,
110110 opts.spread_debug , opts.showwarn , opts.spreadinterponly ,
111- dim);
111+ dim, opts. spread_kernel );
112112 // override various spread opts from their defaults...
113113 spopts.debug = opts.spread_debug ;
114114 spopts.sort = opts.spread_sort ; // could make dim or CPU choices here?
@@ -532,6 +532,7 @@ template<typename TF> void FINUFFT_PLAN_T<TF>::precompute_horner_coeffs() {
532532 // Precompute kernel parameters once
533533 const TF beta = TF (this ->spopts .ES_beta );
534534 const TF c_param = TF (this ->spopts .ES_c );
535+ const int kernel_type = this ->spopts .kernel_type ;
535536
536537 nc = MIN_NC;
537538
@@ -549,9 +550,9 @@ template<typename TF> void FINUFFT_PLAN_T<TF>::precompute_horner_coeffs() {
549550 // original: 0.5 * (x - nspread + 2*j + 1)
550551 const TF shift = TF (2 * j + 1 - nspread);
551552
552- const auto kernel = [shift, beta, c_param](TF x) -> TF {
553+ const auto kernel = [shift, beta, c_param, kernel_type ](TF x) -> TF {
553554 const TF t = TF (0.5 ) * (x + shift);
554- return evaluate_kernel (t, beta, c_param);
555+ return evaluate_kernel (t, beta, c_param, kernel_type );
555556 };
556557
557558 const auto coeffs = fit_monomials (kernel, static_cast <int >(max_degree), a, b);
@@ -715,6 +716,7 @@ void finufft_default_opts_t(finufft_opts *o)
715716 o->maxbatchsize = 0 ;
716717 o->spread_nthr_atomic = -1 ;
717718 o->spread_max_sp_size = 0 ;
719+ o->spread_kernel = 0 ;
718720 o->fftw_lock_fun = nullptr ;
719721 o->fftw_unlock_fun = nullptr ;
720722 o->fftw_lock_data = nullptr ;
0 commit comments