25#ifndef DT_MATH_OPENMP_MATHS_H
26#define DT_MATH_OPENMP_MATHS_H
29#if defined(_OPENMP) && !defined(_WIN32) && !defined(__GNUC__)
31#pragma omp declare simd
32extern float fmaxf(
const float x,
const float y);
34#pragma omp declare simd
35extern float fminf(
const float x,
const float y);
37#pragma omp declare simd
38extern float fabsf(
const float x);
40#pragma omp declare simd
41extern float powf(
const float x,
const float y);
43#pragma omp declare simd
44extern float sqrtf(
const float x);
46#pragma omp declare simd
47extern float cbrtf(
const float x);
49#pragma omp declare simd
50extern float log2f(
const float x);
52#pragma omp declare simd
53extern float exp2f(
const float x);
55#pragma omp declare simd
56extern float log10f(
const float x);
58#pragma omp declare simd
59extern float expf(
const float x);
61#pragma omp declare simd
62extern float logf(
const float x);
74 return exp2f(3.3219280948873626f *
x);
83 return exp2f(1.4426950408889634f *
x);
88static inline float
v_maxf(const float vector[3])
91 return fmaxf(fmaxf(vector[0], vector[1]), vector[2]);
96static inline float
v_minf(const float vector[3])
99 return fminf(fminf(vector[0], vector[1]), vector[2]);
103static inline float
v_sumf(const float vector[3])
105 return vector[0] + vector[1] + vector[2];
110static inline
float fmaxabsf(const
float a, const
float b)
113 return (fabsf(a) > fabsf(b) && !isnan(a)) ? a :
114 (isnan(b)) ? 0.f : b;
119static inline
float fminabsf(const
float a, const
float b)
122 return (fabsf(a) < fabsf(b) && !isnan(a)) ? a :
123 (isnan(b)) ? 0.f : b;
130 return fminf(fmaxf(
x, 0.0f), 1.0f);
#define __OMP_DECLARE_SIMD__(...)
static float fminabsf(const float a, const float b)
static float fmaxabsf(const float a, const float b)
static float v_maxf(const float vector[3])
static float v_sumf(const float vector[3])
static float fast_exp10f(const float x)
static float clamp_simd(const float x)
static float fast_expf(const float x)
static float v_minf(const float vector[3])