uniform float2x2 testMatrix2x2;uniform float3x3 testMatrix3x3;uniform float4 testInputs;uniform half4 colorRed;uniform half4 colorGreen;uniform half unknownInput;bool a(){float2x2 b;float2x2 c;b=testMatrix2x2;b=testMatrix2x2;if(b!=testMatrix2x2)return false;if(b!=testMatrix2x2)return false;if(b!=testMatrix2x2)return false;b=-b;if(b!=-testMatrix2x2)return false;c=float2x2(0.);c=float2x2(0.);return c==float2x2(0.);}bool b(){float3x3 c;float3x3 d;c=testMatrix3x3;c=testMatrix3x3;if(c!=testMatrix3x3)return false;if(c!=testMatrix3x3)return false;if(c!=testMatrix3x3)return false;c=-c;if(c!=-testMatrix3x3)return false;d=float3x3(0.);d=float3x3(0.);return d==float3x3(0.);}bool c(){float4x4 d=float4x4(testInputs,testInputs,testInputs,testInputs);float4x4 e;float4x4 f;e=d;e=d;if(e!=d)return false;if(e!=d)return false;if(e!=d)return false;e=-e;if(e!=-d)return false;f=float4x4(0.);f=float4x4(0.);return f==float4x4(0.);}bool d(){float2x2 e;float2x2 f;const float2x2 h=float2x2(0.);float k=testInputs.x;e=float2x2(k);e=float2x2(k);if(e!=float2x2(k))return false;e=k/float2x2(1..xxxx);if(e!=float2x2(k,k,k,k))return false;e=k+h;e=h+k;if(e!=float2x2(k,k,k,k))return false;e=k-h;e=h-k;if(e!=-float2x2(k,k,k,k))return false;f=float2x2(0.);f=float2x2(0.);return f==h;}bool e(){float3x3 f;float3x3 g;const float3x3 j=float3x3(0.);float l=testInputs.x;float3 n=l.xxx;f=float3x3(l);f=float3x3(l);if(f!=float3x3(l))return false;f=l/float3x3(1..xxx,1..xxx,1..xxx);if(f!=float3x3(n,n,n))return false;f=l+j;f=j+l;if(f!=float3x3(n,n,n))return false;f=l-j;f=j-l;if(f!=-float3x3(n,n,n))return false;g=float3x3(0.);g=float3x3(0.);return g==j;}bool f(){float4x4 g;float4x4 h;const float4x4 k=float4x4(0.);float n=testInputs.x;float4 o=n.xxxx;g=float4x4(n);g=float4x4(n);if(g!=float4x4(n))return false;g=n/float4x4(1..xxxx,1..xxxx,1..xxxx,1..xxxx);if(g!=float4x4(o,o,o,o))return false;g=n+k;g=k+n;if(g!=float4x4(o,o,o,o))return false;g=n-k;g=k-n;if(g!=-float4x4(o,o,o,o))return false;h=float4x4(0.);h=float4x4(0.);return h==k;}half4 main(float2 g){return((((a()&&b())&&c())&&d())&&e())&&f()?colorGreen:colorRed;}
