     cuDoubleComplex mesh[513][513]
   , double w
   );
+#endif
 
 
 template <int max_half_support>
-__device__
+__device__ __inline__
 void calc(
     cuDoubleComplex dst[max_half_support * 2 + 1][max_half_support * 2 + 1]
   , const cuDoubleComplex src[max_half_support * 2 + 1][max_half_support * 2 + 1]

  if (x < (max_half_support * 2 + 1) * (max_half_support * 2 + 1)) v[x] = cuMulComplexByDouble(v[x], norm);
}

// test instantiation
template __device__
void normalize<256>(
    double norm
  , cuDoubleComplex v[513*513]
  );


template <
    int max_half_support
  , int oversample
  >
__device__
void cut_out(
    int half_supp
  , cuDoubleComplex * dst



template <int max_half_support>
__device__ __inline__
void ucs_common(
    cuDoubleComplex mesh[max_half_support * 2 + 1][max_half_support * 2 + 1]
  , double t2
  ){
  __SET_MAP
  double
      t2_div_sc = t2 / double(max_half_support)
    , xs = double(x) * t2_div_sc
    , ys = double(y) * t2_div_sc
    ;
  cuDoubleComplex r2 = make_cuDoubleComplex(xs * xs + ys * ys, 0.0);

