1cb93a386Sopenharmony_ciuniform half4 colorGreen, colorRed; 2cb93a386Sopenharmony_ci 3cb93a386Sopenharmony_cihalf4 main(float2 coords) { 4cb93a386Sopenharmony_ci float4 value = float4(2.5, -2.5, 8, -0.125); 5cb93a386Sopenharmony_ci const float4 expectedWhole = float4(2, -2, 8, 0); 6cb93a386Sopenharmony_ci const float4 expectedFraction = float4(0.5, -0.5, 0, -0.125); 7cb93a386Sopenharmony_ci bool4 ok = bool4(false); 8cb93a386Sopenharmony_ci float4 whole, fraction; 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci fraction.x = modf(value.x, whole.x); 11cb93a386Sopenharmony_ci ok.x = whole.x == expectedWhole.x && fraction.x == expectedFraction.x; 12cb93a386Sopenharmony_ci fraction.xy = modf(value.xy, whole.xy); 13cb93a386Sopenharmony_ci ok.y = whole.xy == expectedWhole.xy && fraction.xy == expectedFraction.xy; 14cb93a386Sopenharmony_ci fraction.xyz = modf(value.xyz, whole.xyz); 15cb93a386Sopenharmony_ci ok.z = whole.xyz == expectedWhole.xyz && fraction.xyz == expectedFraction.xyz; 16cb93a386Sopenharmony_ci fraction.xyzw = modf(value.xyzw, whole.xyzw); 17cb93a386Sopenharmony_ci ok.w = whole.xyzw == expectedWhole.xyzw && fraction.xyzw == expectedFraction.xyzw; 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ci return all(ok) ? colorGreen : colorRed; 20cb93a386Sopenharmony_ci} 21