/* More constant expression tests */
proc main()
{
"Long & (1): ", 1L & 3L, "\n";
"Long | (3): ", 1L | 2L, "\n";
"Long ^ (6): ", 3L ^ 5L, "\n";
"Long << (2): ", 1L << 1L, "\n";
"Long >> (1): ", 2L >> 1L, "\n";
"\n";
"Int & (1): ", 1 & 3, "\n";
"Int | (3): ", 1 | 2, "\n";
"Int ^ (6): ", 3 ^ 5, "\n";
"Int << (2): ", 1 << 1, "\n";
"Int >> (1): ", 2 >> 1, "\n";
"\n";
"Bool & (true): ", true & true, "\n";
"Bool | (true): ", true | false, "\n";
"Bool ^ (true): ", false ^ true, "\n";
"\n";
"Str == (true): ", "true" == "true", "\n";
"Arr == (true): ", {1} == {1}, "\n";
"Flt == (true): ", 1.0 == 1.0, "\n";
"MixF == (true): ", 1.0 == 1, "\n";
"MixL == (true): ", 1.0 == 1L, "\n";
"Str != (true): ", "false" != "true", "\n";
"\n";
"Int <= (true): ", 1 <= 2, "\n";
"Int >= (false): ", 1 >= 2, "\n";
"Int < (true): ", 1 < 2, "\n";
"Int > (false): ", 1 > 2, "\n";
"\n";
"Long <= (true): ", 1L <= 2L, "\n";
"Long >= (false): ", 1L >= 2L, "\n";
"Long < (true): ", 1L < 2L, "\n";
"Long > (false): ", 1L > 2L, "\n";
"\n";
"Str <= (true): ", "1L" <= "2L", "\n";
"Str >= (false): ", "1L" >= "2L", "\n";
"Str < (true): ", "1L" < "2L", "\n";
"Str < (false): ", "1L" > "2L", "\n";
"\n";
"Bool ~ (true): ", ~false, "\n";
"Int ~ (-1): ", ~0, "\n";
"Long ~ (-1): ", ~0L, "\n";
"\n";
"Bool ! (true): ", !false, "\n";
"Int ! (true): ", !0, "\n";
"Flt ! (true): ", !0.0, "\n";
"Flt ! (true): ", ! -0.0, "\n";
"Long ! (true): ", !0L, "\n";
"Doub ! (true): ", !0.0D, "\n";
"Doub ! (true): ", ! -0.0D, "\n";
"Null ! (true): ", !nil, "\n";
"\n";
"Int - (-1): ", -(1), "\n";
"Flt - (-1): ", -(1.0), "\n";
"Long - (-1): ", -(1L), "\n";
"Doub - (-1): ", -(1.0D), "\n";
}