/** * graphene_vec2_equal: * @v1: a #graphene_vec2_t * @v2: a #graphene_vec2_t * * Checks whether the two given #graphene_vec2_t are equal. * * Returns: `true` if the two vectors are equal, and false otherwise * * Since: 1.2 */ bool graphene_vec2_equal (const graphene_vec2_t *v1, const graphene_vec2_t *v2) { if (v1 == v2) return true; if (v1 == NULL || v2 == NULL) return false; if (graphene_simd4f_cmp_eq (v1->value, v2->value)) return true; return graphene_vec2_near (v1, v2, GRAPHENE_FLOAT_EPSILON); }
/** * graphene_quaternion_equal: * @a: a #graphene_quaternion_t * @b: a #graphene_quaternion_t * * Checks whether the given quaternions are equal. * * Returns: `true` if the quaternions are equal * * Since: 1.0 */ bool graphene_quaternion_equal (const graphene_quaternion_t *a, const graphene_quaternion_t *b) { graphene_simd4f_t v_a, v_b; if (a == b) return true; if (a == NULL || b == NULL) return false; v_a = graphene_simd4f_init (a->x, a->y, a->z, a->w); v_b = graphene_simd4f_init (b->x, b->y, b->z, b->w); return graphene_simd4f_cmp_eq (v_a, v_b); }
/** * graphene_simd4f_cmp_eq: * @a: a #graphene_simd4f_t * @b: a #graphene_simd4f_t * * Checks if the two given #graphene_simd4f_t are equal. * * Returns: `true` if the values of the vectors are equal * * Since: 1.0 */ bool (graphene_simd4f_cmp_eq) (const graphene_simd4f_t a, const graphene_simd4f_t b) { return graphene_simd4f_cmp_eq (a, b); }