1 // COMPILABLE_MATH_TEST
2 // https://issues.dlang.org/show_bug.cgi?id=15019
9 static fromHex(char[] s
)
18 struct Matrix(T
, int R
, int C
)
21 T
[C
] v
; // all elements
23 /// Covnerts to pretty string.
24 string
toString() const
27 return format("%s", v
);
29 assert(false); // should not happen since format is right
33 // GLSL is a big inspiration here
34 // we defines types with more or less the same names
35 template mat2x2(T
) { Matrix
!(T
, 2, 2) mat2x2
; }
36 template mat3x3(T
) { Matrix
!(T
, 3, 3) mat3x3
; }
37 template mat4x4(T
) { Matrix
!(T
, 4, 4) mat4x4
; }
40 alias mat3x3 mat3
; // shorter names for most common matrices
43 string
definePostfixAliases(string type
)
45 return "alias " ~ type
~ "!byte " ~ type
~ "b;\n"
46 ~ "alias " ~ type
~ "!ubyte " ~ type
~ "ub;\n"
47 ~ "alias " ~ type
~ "!short " ~ type
~ "s;\n"
48 ~ "alias " ~ type
~ "!ushort " ~ type
~ "us;\n"
49 ~ "alias " ~ type
~ "!int " ~ type
~ "i;\n"
50 ~ "alias " ~ type
~ "!uint " ~ type
~ "ui;\n"
51 ~ "alias " ~ type
~ "!long " ~ type
~ "l;\n"
52 ~ "alias " ~ type
~ "!ulong " ~ type
~ "ul;\n"
53 ~ "alias " ~ type
~ "!float " ~ type
~ "f;\n"
54 ~ "alias " ~ type
~ "!double " ~ type
~ "d;\n";
57 // define a lot of type names
58 mixin(definePostfixAliases("mat2"));
59 mixin(definePostfixAliases("mat3"));
60 mixin(definePostfixAliases("mat4"));
63 struct Vector(T
, int N
)
70 return format("%s", v
);