diff --git a/include/cglm/common.h b/include/cglm/common.h index 0fc35ed..749fb5d 100644 --- a/include/cglm/common.h +++ b/include/cglm/common.h @@ -40,4 +40,12 @@ #include "types.h" #include "simd/intrin.h" +#ifndef CGLM_USE_DEFAULT_EPSILON +# ifndef GLM_FLT_EPSILON +# define GLM_FLT_EPSILON 1e-6 +# endif +#else +# define GLM_FLT_EPSILON FLT_EPSILON +#endif + #endif /* cglm_common_h */ diff --git a/include/cglm/util.h b/include/cglm/util.h index a121a5c..53b1ed5 100644 --- a/include/cglm/util.h +++ b/include/cglm/util.h @@ -289,7 +289,7 @@ glm_smoothinterpc(float from, float to, float t) { CGLM_INLINE bool glm_eq(float a, float b) { - return fabsf(a - b) <= FLT_EPSILON; + return fabsf(a - b) <= GLM_FLT_EPSILON; } /*! diff --git a/include/cglm/vec2-ext.h b/include/cglm/vec2-ext.h index da5ba65..438e227 100644 --- a/include/cglm/vec2-ext.h +++ b/include/cglm/vec2-ext.h @@ -61,8 +61,8 @@ glm_vec2_eq(vec2 v, float val) { CGLM_INLINE bool glm_vec2_eq_eps(vec2 v, float val) { - return fabsf(v[0] - val) <= FLT_EPSILON - && fabsf(v[1] - val) <= FLT_EPSILON; + return fabsf(v[0] - val) <= GLM_FLT_EPSILON + && fabsf(v[1] - val) <= GLM_FLT_EPSILON; } /*! @@ -97,8 +97,8 @@ glm_vec2_eqv(vec2 a, vec2 b) { CGLM_INLINE bool glm_vec2_eqv_eps(vec2 a, vec2 b) { - return fabsf(a[0] - b[0]) <= FLT_EPSILON - && fabsf(a[1] - b[1]) <= FLT_EPSILON; + return fabsf(a[0] - b[0]) <= GLM_FLT_EPSILON + && fabsf(a[1] - b[1]) <= GLM_FLT_EPSILON; } /*! diff --git a/include/cglm/vec3-ext.h b/include/cglm/vec3-ext.h index 240c33d..adf555c 100644 --- a/include/cglm/vec3-ext.h +++ b/include/cglm/vec3-ext.h @@ -81,9 +81,9 @@ glm_vec3_eq(vec3 v, float val) { CGLM_INLINE bool glm_vec3_eq_eps(vec3 v, float val) { - return fabsf(v[0] - val) <= FLT_EPSILON - && fabsf(v[1] - val) <= FLT_EPSILON - && fabsf(v[2] - val) <= FLT_EPSILON; + return fabsf(v[0] - val) <= GLM_FLT_EPSILON + && fabsf(v[1] - val) <= GLM_FLT_EPSILON + && fabsf(v[2] - val) <= GLM_FLT_EPSILON; } /*! @@ -120,9 +120,9 @@ glm_vec3_eqv(vec3 a, vec3 b) { CGLM_INLINE bool glm_vec3_eqv_eps(vec3 a, vec3 b) { - return fabsf(a[0] - b[0]) <= FLT_EPSILON - && fabsf(a[1] - b[1]) <= FLT_EPSILON - && fabsf(a[2] - b[2]) <= FLT_EPSILON; + return fabsf(a[0] - b[0]) <= GLM_FLT_EPSILON + && fabsf(a[1] - b[1]) <= GLM_FLT_EPSILON + && fabsf(a[2] - b[2]) <= GLM_FLT_EPSILON; } /*! diff --git a/include/cglm/vec4-ext.h b/include/cglm/vec4-ext.h index 6baa70f..c3a72ae 100644 --- a/include/cglm/vec4-ext.h +++ b/include/cglm/vec4-ext.h @@ -92,10 +92,10 @@ glm_vec4_eq(vec4 v, float val) { CGLM_INLINE bool glm_vec4_eq_eps(vec4 v, float val) { - return fabsf(v[0] - val) <= FLT_EPSILON - && fabsf(v[1] - val) <= FLT_EPSILON - && fabsf(v[2] - val) <= FLT_EPSILON - && fabsf(v[3] - val) <= FLT_EPSILON; + return fabsf(v[0] - val) <= GLM_FLT_EPSILON + && fabsf(v[1] - val) <= GLM_FLT_EPSILON + && fabsf(v[2] - val) <= GLM_FLT_EPSILON + && fabsf(v[3] - val) <= GLM_FLT_EPSILON; } /*! @@ -135,10 +135,10 @@ glm_vec4_eqv(vec4 a, vec4 b) { CGLM_INLINE bool glm_vec4_eqv_eps(vec4 a, vec4 b) { - return fabsf(a[0] - b[0]) <= FLT_EPSILON - && fabsf(a[1] - b[1]) <= FLT_EPSILON - && fabsf(a[2] - b[2]) <= FLT_EPSILON - && fabsf(a[3] - b[3]) <= FLT_EPSILON; + return fabsf(a[0] - b[0]) <= GLM_FLT_EPSILON + && fabsf(a[1] - b[1]) <= GLM_FLT_EPSILON + && fabsf(a[2] - b[2]) <= GLM_FLT_EPSILON + && fabsf(a[3] - b[3]) <= GLM_FLT_EPSILON; } /*! diff --git a/test/src/test_cam.c b/test/src/test_cam.c index f444bdd..ce89084 100644 --- a/test/src/test_cam.c +++ b/test/src/test_cam.c @@ -35,9 +35,9 @@ TEST_IMPL(camera_decomp) { farVal = 100.0f; glm_perspective(fovy, aspect, nearVal, farVal, proj); - ASSERT(fabsf(aspect - glm_persp_aspect(proj)) < FLT_EPSILON) - ASSERT(fabsf(fovy - glm_persp_fovy(proj)) < FLT_EPSILON) - ASSERT(fabsf(49.984f - glm_deg(glm_persp_fovy(proj))) < FLT_EPSILON) + ASSERT(fabsf(aspect - glm_persp_aspect(proj)) < GLM_FLT_EPSILON) + ASSERT(fabsf(fovy - glm_persp_fovy(proj)) < GLM_FLT_EPSILON) + ASSERT(fabsf(49.984f - glm_deg(glm_persp_fovy(proj))) < GLM_FLT_EPSILON) glm_persp_sizes(proj, fovy, sizes); diff --git a/test/src/test_common.h b/test/src/test_common.h index 86801b6..9162a8d 100644 --- a/test/src/test_common.h +++ b/test/src/test_common.h @@ -106,7 +106,7 @@ test_rand_quat(versor q); CGLM_INLINE bool test_eq(float a, float b) { - return fabsf(a - b) <= 1e-6; + return fabsf(a - b) <= GLM_FLT_EPSILON * 10; } CGLM_INLINE