#include <glib.h>
#include <graphene.h>
int main (int argc, char *argv[])
{
graphene_matrix_t m;
float f[] = { 0.5, 0, 0, 0, 0, 0.1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1 };
graphene_matrix_init_from_float (&m, f);
g_assert (!graphene_matrix_is_2d (&m));
return 0;
}
diff --git a/include/graphene-simd4x4f.h b/include/graphene-simd4x4f.h
index 69d4e8f..86602a5 100644
--- a/include/graphene-simd4x4f.h
+++ b/include/graphene-simd4x4f.h
@@ -1166,11 +1166,11 @@ graphene_simd4x4f_is_2d (const graphene_simd4x4f_t *m)
graphene_simd4f_dup_4f (m->z, f);
if (!(fabsf (f[0]) < FLT_EPSILON &&
fabsf (f[1]) < FLT_EPSILON &&
- 1.f - fabsf (f[2]) < FLT_EPSILON &&
+ fabsf (1.f - f[2]) < FLT_EPSILON &&
fabsf (f[3]) < FLT_EPSILON))
return false;
- if (!(fabsf (graphene_simd4f_get_z (m->w)) < FLT_EPSILON && 1.f - fabsf (graphene_simd4f_get_w (m->w)) < FLT_EPSILON))
+ if (!(fabsf (graphene_simd4f_get_z (m->w)) < FLT_EPSILON && fabsf (1.f - graphene_simd4f_get_w (m->w)) < FLT_EPSILON))
return false;
return true;
Here is a test that fails
From a quick look, this might fix it: