1cb93a386Sopenharmony_ciuniform half4 colorGreen, colorRed; 2cb93a386Sopenharmony_ci 3cb93a386Sopenharmony_cihalf4 main(float2 coords) { 4cb93a386Sopenharmony_ci float4 value = colorGreen.gggg * 6; 5cb93a386Sopenharmony_ci int4 exp; 6cb93a386Sopenharmony_ci float4 result; 7cb93a386Sopenharmony_ci bool4 ok; 8cb93a386Sopenharmony_ci 9cb93a386Sopenharmony_ci // 6 equals 0.75 * 2^3. 10cb93a386Sopenharmony_ci result.x = frexp(value.x, exp.x); 11cb93a386Sopenharmony_ci ok.x = (result.x == 0.75 && exp.x == 3); 12cb93a386Sopenharmony_ci result.xy = frexp(value.xy, exp.xy); 13cb93a386Sopenharmony_ci ok.y = (result.y == 0.75 && exp.y == 3); 14cb93a386Sopenharmony_ci result.xyz = frexp(value.xyz, exp.xyz); 15cb93a386Sopenharmony_ci ok.z = (result.z == 0.75 && exp.z == 3); 16cb93a386Sopenharmony_ci result.xyzw = frexp(value.xyzw, exp.xyzw); 17cb93a386Sopenharmony_ci ok.w = (result.w == 0.75 && exp.w == 3); 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ci return all(ok) ? colorGreen : colorRed; 20cb93a386Sopenharmony_ci} 21