reservoir-cholesky2.c
380 Bytes
for (int c0 = 2; c0 < 3 * M; c0 += 1) {
if ((c0 + 1) % 3 == 0)
S1((c0 + 1) / 3);
for (int c1 = (c0 + 1) / 3 + 1; c1 <= min(M, c0 - 2); c1 += 1)
for (int c2 = -c1 + (c0 + c1 + 1) / 2 + 1; c2 <= min(c1, c0 - c1); c2 += 1)
S3(c0 - c1 - c2 + 1, c1, c2);
for (int c1 = -c0 + 2 * ((2 * c0 + 1) / 3) + 2; c1 <= min(M, c0); c1 += 2)
S2(((c0 - c1) / 2) + 1, c1);
}