 	thrust::transform(beg, end, out, GtThan(min_neighb));
 	cudaSafeCall( cudaGetLastError() );
 	cudaSafeCall( cudaDeviceSynchronize() );	
-}+}

				float3 origin_normal = input_normals ? fetch(input_normals, index) : make_float3(0.f, 0.f, 0.f); 				
				origin_normal = normalized_safe(origin_normal); //normalize if non-zero

				float3 rotation_axis = getRotationAxes(index, origin_normal);
				rotation_axis = normalized_safe(rotation_axis); //normalize if non-zero

				const float eps = numeric_limits<float>::epsilon ();


		struct Div12eps
		{
            __device__ __forceinline__ float operator()(float v1, float v2) const { return (float)(v1 / ( v2 + numeric_limits<double>::epsilon() )); }
		};

		struct DivValIfNonZero
		{
			float val;
			__device__ __forceinline__ DivValIfNonZero(float value) : val(value) {}
            __device__ __forceinline__ float operator()(float v) const { return val == 0 ? v : v/val; }
		};

		template<bool radial, bool angular, typename AxesStrategy>
