Lines Matching refs:SA
98 tr_fixdown(const saidx_t *ISAd, saidx_t *SA, saidx_t i, saidx_t size) { in tr_fixdown() argument
103 for(v = SA[i], c = ISAd[v]; (j = 2 * i + 1) < size; SA[i] = SA[k], i = k) { in tr_fixdown()
104 d = ISAd[SA[k = j++]]; in tr_fixdown()
105 if(d < (e = ISAd[SA[j]])) { k = j; d = e; } in tr_fixdown()
108 SA[i] = v; in tr_fixdown()
114 tr_heapsort(const saidx_t *ISAd, saidx_t *SA, saidx_t size) { in tr_heapsort() argument
121 if(ISAd[SA[m / 2]] < ISAd[SA[m]]) { SWAP(SA[m], SA[m / 2]); } in tr_heapsort()
124 for(i = m / 2 - 1; 0 <= i; --i) { tr_fixdown(ISAd, SA, i, m); } in tr_heapsort()
125 if((size % 2) == 0) { SWAP(SA[0], SA[m]); tr_fixdown(ISAd, SA, 0, m); } in tr_heapsort()
127 t = SA[0], SA[0] = SA[i]; in tr_heapsort()
128 tr_fixdown(ISAd, SA, 0, i); in tr_heapsort()
129 SA[i] = t; in tr_heapsort()
264 tr_copy(saidx_t *ISA, const saidx_t *SA, in tr_copy() argument
272 v = b - SA - 1; in tr_copy()
276 ISA[s] = d - SA; in tr_copy()
282 ISA[s] = d - SA; in tr_copy()
289 tr_partialcopy(saidx_t *ISA, const saidx_t *SA, in tr_partialcopy() argument
296 v = b - SA - 1; in tr_partialcopy()
302 if(lastrank != rank) { lastrank = rank; newrank = d - SA; } in tr_partialcopy()
310 if(lastrank != rank) { lastrank = rank; newrank = e - SA; } in tr_partialcopy()
319 if(lastrank != rank) { lastrank = rank; newrank = d - SA; } in tr_partialcopy()
328 saidx_t *SA, saidx_t *first, saidx_t *last, in tr_introsort() argument
344 tr_partition(ISAd - incr, first, first, last, &a, &b, last - SA - 1); in tr_introsort()
348 for(c = first, v = a - SA - 1; c < a; ++c) { ISA[*c] = v; } in tr_introsort()
351 for(c = a, v = b - SA - 1; c < b; ++c) { ISA[*c] = v; } in tr_introsort()
383 tr_copy(ISA, SA, first, a, b, last, ISAd - ISA); in tr_introsort()
386 tr_partialcopy(ISA, SA, first, a, b, last, ISAd - ISA); in tr_introsort()
393 do { ISA[*a] = a - SA; } while((++a < last) && (0 <= *a)); in tr_introsort()
399 if(++a < last) { for(b = first, v = a - SA - 1; b < a; ++b) { ISA[*b] = v; } } in tr_introsort()
455 for(c = first, v = a - SA - 1; c < a; ++c) { ISA[*c] = v; } in tr_introsort()
456 if(b < last) { for(c = a, v = b - SA - 1; c < b; ++c) { ISA[*c] = v; } } in tr_introsort()
555 trsort(saidx_t *ISA, saidx_t *SA, saidx_t n, saidx_t depth) { in trsort() argument
563 for(ISAd = ISA + depth; -n < *SA; ISAd += ISAd - ISA) { in trsort()
564 first = SA; in trsort()
571 last = SA + ISA[t] + 1; in trsort()
574 tr_introsort(ISA, ISAd, SA, first, last, &budget); in trsort()
582 } while(first < (SA + n)); in trsort()