1 for (int c0 = 1; c0 <= floord(Ny, 2) + 2; c0 += 1) 2 for (int c1 = max(c0 - 1, c0 / 2 + 1); c1 <= min(c0, (Ny + 2 * c0) / 4); c1 += 1) { 3 if (Ny + 2 * c0 >= 4 * c1 + 1) { 4 for (int c2 = 1; c2 <= 2; c2 += 1) { 5 S1(c0 - c1, c1, 2 * c0 - 2 * c1, -2 * c0 + 4 * c1, c2); 6 S2(c0 - c1, c1, 2 * c0 - 2 * c1, -2 * c0 + 4 * c1 - 1, c2); 7 } 8 } else { 9 for (int c2 = 1; c2 <= 2; c2 += 1) 10 S2((-Ny + 2 * c0) / 4, (Ny + 2 * c0) / 4, (-Ny / 2) + c0, Ny - 1, c2); 11 } 12 } 13