20#ifndef _MDCORE_SOURCE_TF_SMOOTHING_KERNEL_H_
21#define _MDCORE_SOURCE_TF_SMOOTHING_KERNEL_H_
23#include <mdcore_config.h>
32 #if defined(__x86_64__) || defined(_M_X64)
34 TF_ALWAYS_INLINE
float qsqrt(
const float f)
36 __m128 temp = _mm_set_ss(f);
37 temp = _mm_rsqrt_ss(temp);
38 return 1.0 / _mm_cvtss_f32(temp);
42 #if defined(__ARM_NEON)
43 TF_ALWAYS_INLINE
float qsqrt(
const float f)
45 return 1.0f/std::sqrt(f);
49 TF_ALWAYS_INLINE FPTYPE w_cubic_spline(FPTYPE r2, FPTYPE h) {
50 FPTYPE r = (FPTYPE)qsqrt(r2);
56 y = 1.f - (3.f / 2.f) * x2 + (3.f / 4.f) * x2 * x;
58 else if(x >= 1.f && x < 2.f) {
60 y = (1.f / 4.f) * arg * arg * arg;
66 return y / (M_PI * h * h * h);
69 TF_ALWAYS_INLINE FPTYPE grad_w_cubic_spline(FPTYPE r2, FPTYPE h) {
70 FPTYPE r = (FPTYPE)qsqrt(r2);
75 y = (9.f / 4.f) * x * x - (3.f) * x;
77 else if(x >= 1.f && x < 2.f) {
79 y = -(3.f / 4.f) * arg * arg;
85 return y / (M_PI * h * h * h * h);
88 TF_ALWAYS_INLINE FPTYPE W(FPTYPE r2, FPTYPE h) {
return w_cubic_spline(r2, h); };
90 TF_ALWAYS_INLINE FPTYPE grad_W(FPTYPE r2, FPTYPE h) {
return grad_w_cubic_spline(r2, h); };
Include Python header, disable linking to pythonX_d.lib on Windows in debug mode.
Definition tfAngleConfig.h:26