diff --git a/include/cglm/affine.h b/include/cglm/affine.h index 0c7121889..deacade97 100644 --- a/include/cglm/affine.h +++ b/include/cglm/affine.h @@ -425,7 +425,7 @@ bool glm_uniscaled(mat4 m) { CGLM_ALIGN(8) vec3 s; glm_decompose_scalev(m, s); - return glm_vec3_eq_all(s); + return glm_vec3_eq_eps(s, s[0]); } /*! diff --git a/include/cglm/common.h b/include/cglm/common.h index 810d7ef0f..786457904 100644 --- a/include/cglm/common.h +++ b/include/cglm/common.h @@ -42,12 +42,18 @@ #include "types.h" #include "simd/intrin.h" -#ifndef CGLM_USE_DEFAULT_EPSILON -# ifndef GLM_FLT_EPSILON -# define GLM_FLT_EPSILON 1e-6 +/** CGLM_USE_DEFAULT_EPSILON is removed, to override float epsilon, + * just define GLM_FLT_EPSILON with epsilon value like below + * + * #define GLM_FLT_EPSILON 1e-6f + */ + +#ifndef GLM_FLT_EPSILON +# ifndef FLT_EPSILON +# define GLM_FLT_EPSILON 1e-6f +# else +# define GLM_FLT_EPSILON FLT_EPSILON # endif -#else -# define GLM_FLT_EPSILON FLT_EPSILON #endif #endif /* cglm_common_h */ diff --git a/test/src/test_cam.c b/test/src/test_cam.c index ce890841b..3fc3e1b8f 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)) < 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) + ASSERT(fabsf(aspect - glm_persp_aspect(proj)) < 1e-5f) + ASSERT(fabsf(fovy - glm_persp_fovy(proj)) < 1e-5f) + ASSERT(fabsf(49.984f - glm_deg(glm_persp_fovy(proj))) < 1e-5f) glm_persp_sizes(proj, fovy, sizes); diff --git a/test/src/test_common.h b/test/src/test_common.h index 9162a8dfd..08400923f 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) <= GLM_FLT_EPSILON * 10; + return fabsf(a - b) <= 1e-5f; } CGLM_INLINE