@define fmt(v) { return sprintfa("%t %a", v, v); } @define lt(x, y) { @local z; z = x %d\n", fmt(x), fmt(y), z); } @define gt(x, y) { @local z; z = x>y; printf("%s > %s => %d\n", fmt(x), fmt(y), z); } @define eq(x, y) { @local z; z = x==y; printf("%s == %s => %d\n", fmt(x), fmt(y), z); } @define alu(op) { @local x, y; x = 1.5; y = 2.5; op(x, y); op(x, (int)y); op((int)x, y); op(x, (float)y); op((float)x, y); y = 1.5; op(x, y); op(x, (int)y); op((int)x, y); op(x, (float)y); op((float)x, y); } foreach(alu, [lt,gt,eq]);