+vector swap(float x, float y) {
+ vector ret = '0 0 0';
+ // everyone knows this trick
+ ret.x = x;
+ ret.y = y;
+
+ ret.x = ret.x ^ ret.y;
+ ret.y = ret.y ^ ret.x;
+ ret.x = ret.x ^ ret.y;
+
+ return ret;
+}
+
void main() {
float x = 5;
float y = 3;
// elements are their own inverse?
if (x ^ 0 == x)
print("inverse\n");
+
+ // vector ^ vector
+ // vector ^ float
+ // are legal in constant expressions (currently)
+ const vector v3 = '5 2 5' ^ '3 10 3';
+ const vector v4 = '5 2 5' ^ 10;
+
+ print("vv: ", vtos(v3), "\n");
+ print("vf: ", vtos(v4), "\n");
+
+ // good olde xor swap test too
+ float swap_x = 100;
+ float swap_y = 200;
+ vector swaps = swap(swap_x, swap_y);
+ print("100:200 swapped is: ", ftos(swaps.x), ":", ftos(swaps.y), "\n");
}