/*#pragma settings SkVMDebugTrace*/

uniform float u1[4];
float index_by_literal() {
    return u1[0];
}

uniform float u2[4];
float index_by_loop() {
    float sum = 0;
    for (int i = 3; i >= 0; --i) {
        sum += u2[i];
    }
    return sum;
}

uniform float u3[4];
float index_by_complex_loop() {
    float prod = 1;
    for (int i = 0; i < 4; ++i) {
        prod *= u3[i < 2 ? 0 : i];
    }
    return prod;
}

uniform float u4[16];
float index_out_of_bounds_checked() {
    float sum = 0;
    for (float f = -2.3; f < 17.0; f += 3.7) {
        if (f > 0 && f < 16) {
            sum -= u4[int(f)];
        }
    }
    return sum;
}

float4 main(float2 xy) {
    return float4(
        index_by_literal(),
        index_by_loop(),
        index_by_complex_loop(),
        index_out_of_bounds_checked());
}
