| 124 | } |
| 125 | |
| 126 | inline static void trinkle(SRTBLK *A[], int data[]) |
| 127 | { |
| 128 | int p1,r2,r3, r0, temp; |
| 129 | SRTBLK * T; |
| 130 | p1 = p; b1 = b; c1 = c; |
| 131 | r0 = r1; T = A[r0]; |
| 132 | while (p1 > 0) { |
| 133 | while ((p1 & 1)==0) { |
| 134 | p1 >>= 1; |
| 135 | UP(b1,c1) |
| 136 | } |
| 137 | r3 = r1-b1; |
| 138 | if ((p1==1) || ordering(A[r3], T)) p1 = 0; |
| 139 | else { |
| 140 | p1--; |
| 141 | if (b1==1) { |
| 142 | A[r1] = A[r3]; |
| 143 | r1 = r3; |
| 144 | } |
| 145 | else |
| 146 | if (b1 >= 3) { |
| 147 | r2 = r1-b1+c1; |
| 148 | if (! ordering(A[r1-1],A[r2])) { |
| 149 | r2 = r1-1; |
| 150 | DOWN(b1,c1) |
| 151 | p1 <<= 1; |
| 152 | } |
| 153 | if (ordering(A[r2],A[r3])) { |
| 154 | A[r1] = A[r3]; r1 = r3; |
| 155 | } |
| 156 | else { |
| 157 | A[r1] = A[r2]; |
| 158 | r1 = r2; |
| 159 | DOWN(b1,c1) |
| 160 | p1 = 0; |
| 161 | } |
| 162 | } |
| 163 | } |
| 164 | } |
| 165 | if (r0-r1) A[r1] = T; |
| 166 | sift(A, data); |
| 167 | } |
| 168 | |
| 169 | inline static void semitrinkle(SRTBLK *A[], int data[]) |
| 170 | { |
no test coverage detected