MCPcopy Create free account
hub / github.com/csound/csound / trinkle

Function trinkle

Engine/sort.c:126–167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124}
125
126inline 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
169inline static void semitrinkle(SRTBLK *A[], int data[])
170{

Callers 2

semitrinkleFunction · 0.85
smoothsortFunction · 0.85

Calls 2

orderingFunction · 0.85
siftFunction · 0.85

Tested by

no test coverage detected