10 #ifndef __CU_MATH_BASE_H__
11 #define __CU_MATH_BASE_H__
12 #include <cugl/base/CUBase.h>
17 #if defined (__WINDOWS__)
18 #define M_PI_2 1.57079632679489661923f // pi/2
19 #define M_PI_4 0.785398163397448309616f // pi/4
20 #define __attribute__(x)
25 #define CU_MATH_DEG_TO_RAD(x) ((x) * 0.0174532925f)
27 #define CU_MATH_RAD_TO_DEG(x) ((x)* 57.29577951f)
29 #define CU_MATH_APPROX(x,y,t) ( -(t) < (x)-(y) && (x)-(y) < (t) )
32 #define CU_MATH_FLOAT_SMALL 1.0e-30f // Set by SSE
34 #define CU_MATH_EPSILON 5.0e-4f // Set by SSE
36 #if defined (__WINDOWS__)
40 #if defined (__ANDROID__)
41 #include <android/cpu-features.h>
46 #if defined (__arm64__)
47 #define CU_MATH_VECTOR_NEON64
51 #define CU_MATH_VECTOR_SSE
52 #include "immintrin.h"
53 #include "smmintrin.h"
54 #include "xmmintrin.h"
68 inline float clampf(
float value,
float min,
float max) {
69 return value < min ? min : value < max? value : max;
83 inline GLubyte clampb(GLuint value, GLubyte min, GLubyte max) {
84 return static_cast<GLubyte>(value < min ? min : value < max? value : max);