int _int_quads_are_sorted(const int *a, const int *b, const int *c, const int *d, int nelt, int desc, int strict) { int a1, b1, c1, d1, a2, b2, c2, d2, i, ret; if (nelt == 0) return 1; a2 = a[0]; b2 = b[0]; c2 = c[0]; d2 = d[0]; for (i = 1; i < nelt; i++) { a1 = a2; b1 = b2; c1 = c2; d1 = d2; a2 = a[i]; b2 = b[i]; c2 = c[i]; d2 = d[i]; ret = compar_int_quads(a1, b1, c1, d1, a2, b2, c2, d2); if (ret == 0) { if (strict) return 0; continue; } if (desc != (ret > 0)) return 0; } return 1; }
void _get_matches_of_ordered_int_quads( const int *a1, const int *b1, const int *c1, const int *d1, const int *o1, int nelt1, const int *a2, const int *b2, const int *c2, const int *d2, const int *o2, int nelt2, int nomatch, int *out, int out_shift) { int i1, i2, ret; i2 = 0; ret = 0; for (i1 = 0; i1 < nelt1; i1++, o1++) { while (i2 < nelt2) { ret = compar_int_quads( a1[*o1], b1[*o1], c1[*o1], d1[*o1], a2[*o2], b2[*o2], c2[*o2], d2[*o2]); if (ret <= 0) break; i2++, o2++; } out[*o1] = ret == 0 ? *o2 + out_shift : nomatch; } return; }