#include "math.inc" #declare I0 = <0, 0, 0, 0, 0>; #declare I1 = <1, 1, 1, 1, 1>; #declare V5 = <1, 2, 3, 4, 5>; #declare Vn1 = <1, 0, 0, 0, 0>; #declare Vn2 = <2, 0, 0, 0, 0>; //#declare Vn2 = <2, 2, 2, 2, 2>; #declare vn = function (ns) {select (ns, 1, 0, 1)} #declare V41 = <0, 0, 0, 1>; #macro Vector_Size (TestVal) #local vZ2D = <0, 0>; #local vZ3D = <0, 0, 0>; #local vZ4D = <0, 0, 0, 0>; #local vZ5D = <0, 0, 0, 0, 0>; #local v1 = TestVal + 1; #local v2 = TestVal + 2; #local vexp = TestVal + I0; #local vexpx = vexp.x; #if (vexp.x < 1) #local v1a = -TestVal + 2; #else #local v1a = TestVal + 2; #end #local v4 = v1a + I0; #local v4a = v2 - Vn2; #local v5 = v4 - Vn2; #local Vdiscrim = v1a - V41 + I0; #local v4ae = ((v4.x = v4.y) & (v4.x = v4.z) & (v4.x = v4.filter) & (v4.x = v4.transmit) ); #local v5x = v5.x; #local v5y = v5.y; #local v5z = v5.z; #local v5f = v5.filter; #local v5t = v5.transmit; #local ComponentSum = vn(v5x) + vn(v5y) + vn(v5z) + vn(v5f) + vn(v5t); #local v5n = ; #local v6 = - I1; //#debug concat ( "v4a = ", vstr(5, v4a, ", ", 0, 3), " \n") //#debug concat ( "v6 = ", vstr(5, v6, ", ", 0, 3), " \n") #local nComponentSum = v5n.x + v5n.y + v5n.z + v5n.filter + v5n.transmit; //#debug concat ( " CS = ", str (ComponentSum, 0, 0), "\n") //#debug concat ( " nCS = ", str (nComponentSum, 0, 0), "\n") #local v6ComponentSum = v6.x + v6.y + v6.z + v6.filter + v6.transmit; #local v4aComponentSum = v4a.x + v4a.y + v4a.z + v4a.filter + v4a.transmit; //#debug concat ( " v6CS = ", str (v6ComponentSum, 0, 0), "\n") //#debug concat ( " v4ae = ", str (v4ae, 0, 0), "\n") //#debug concat ( " v4aCS = ", str (v4aComponentSum, 0, 0), "\n") //#debug concat ( "Vdiscrim = ", vstr(5, Vdiscrim, ", ", 0, 3), " \n") #local D1 = ((v6ComponentSum < 1) & (v4ae = 1) & (Vdiscrim.x != Vdiscrim.transmit)); #local D2 = ((vZ3D + v1).z = (vZ3D + v2).z); #local D3 = ((vZ4D + v1).t = (vZ4D + v2).t); #local D4 = ((vZ5D + v1).transmit = (vZ5D + v2).transmit); #if (D1) #local S = 1; #debug "SCALAR \n" #else #if (D2) #local S = 2; #else #if (D3) #local S = 3; #else #if (D4) #local S = 4; #else #local S = 5; #end // if #end // if #end // if #end S #end // end macro Vector_Size /* #declare V1 = 0; #declare V2 = I0; #declare V1a = V1 + 2; #declare V2a = V2 + 2; #declare V1b = V1a - <0, 0, 0, 1>; #declare V2b = V2a - <0, 0, 0, 1>; #debug concat ( "V1b = ", vstr(5, V1b, ", ", 0, 3), " \n") #debug concat ( "V2b = ", vstr(5, V2b, ", ", 0, 3), " \n") #debug "\n\n\n" */ #declare TestValues = array mixed { -5, -1, 0, 1, 5, <0, 0>, <0, 1>, <0, 0, 0>, <1, 0, 0>, <0, 1, 0>, <0, 0, 1>, <0, 0, 0, 0>, <1, 0, 0, 0>, <0, 1, 0, 0>, <0, 0, 1, 0>, <0, 0, 0, 1>, <0, 0, 0, 0, 0>, <1, 0, 0, 0, 0>, <0, 1, 0, 0, 0>, <0, 0, 1, 0, 0>, <0, 0, 0, 1, 0>, <0, 0, 0, 0, 1> } #declare Tests = dimension_size (TestValues, 1)-1; #for (Val, 0, Tests) #local vector_size = Vector_Size (TestValues [Val]); #if (vector_size > 1) #debug concat ( str (vector_size, 0, 0), "D VECTOR = <", vstr(vector_size, TestValues [Val], ", ", 0, 3), "> \n") #else #debug concat ( "Value = ", str (TestValues [Val], 0, 3), "\n") // * #end #debug "----------------------------------------\n" #end #error "Done."