Source code

Revision control

Copy as Markdown

Other Tools

load(libdir + 'array-compare.js');
function compareIAndSet(v) {
var res = 0;
var c;
var i = 0;
c = (v > 1);
res |= (c << i);
i++;
c = (v >= 2);
res |= (c << i);
i++;
c = (v < 3);
res |= (c << i);
i++;
c = (v <= 4);
res |= (c << i);
i++;
c = (v == 5);
res |= (c << i);
i++;
c = (v != 6);
res |= (c << i);
i++;
c = (v === 7);
res |= (c << i);
i++;
c = (v !== 8);
res |= (c << i);
i++;
return res;
}
function compareIAndBranch(v) {
var res = 0;
var c = 1;
var i = 0;
if (v > 1)
res |= (c << i);
i++;
if (v >= 2)
res |= (c << i);
i++;
if (v < 3)
res |= (c << i);
i++;
if (v <= 4)
res |= (c << i);
i++;
if (v == 5)
res |= (c << i);
i++;
if (v != 6)
res |= (c << i);
i++;
if (v === 7)
res |= (c << i);
i++;
if (v !== 8)
res |= (c << i);
i++;
if (v)
res |= (c << i);
i++;
return res;
}
function compareDAndSet(v) {
var res = 0;
var c;
var i = 0;
c = (v > 1.5);
res |= (c << i);
i++;
c = (v >= 2.5);
res |= (c << i);
i++;
c = (v < 3.5);
res |= (c << i);
i++;
c = (v <= 4.5);
res |= (c << i);
i++;
c = (v == 5.5);
res |= (c << i);
i++;
c = (v != 6.5);
res |= (c << i);
i++;
c = (v === 7.5);
res |= (c << i);
i++;
c = (v !== 8.5);
res |= (c << i);
i++;
c = (v !== 0.0);
res |= (c << i);
i++;
return res;
}
function compareDAndBranch(v) {
var res = 0;
var c = 1;
var i = 0;
if (v > 1.5)
res |= (c << i);
i++;
if (v >= 2.5)
res |= (c << i);
i++;
if (v < 3.5)
res |= (c << i);
i++;
if (v <= 4.5)
res |= (c << i);
i++;
if (v == 5.5)
res |= (c << i);
i++;
if (v != 6.5)
res |= (c << i);
i++;
if (v === 7.5)
res |= (c << i);
i++;
if (v !== 8.5)
res |= (c << i);
i++;
if (v)
res |= (c << i);
i++;
return res;
}
function compareSAndSet(v) {
var res = 0;
var c;
var i = 0;
c = (v > "a");
res |= (c << i);
i++;
c = (v >= "b");
res |= (c << i);
i++;
c = (v < "c");
res |= (c << i);
i++;
c = (v <= "d");
res |= (c << i);
i++;
c = (v == "e");
res |= (c << i);
i++;
c = (v != "f");
res |= (c << i);
i++;
c = (v === "g");
res |= (c << i);
i++;
c = (v !== "h");
res |= (c << i);
i++;
return res;
}
function compareSAndBranch(v) {
var res = 0;
var c = 1;
var i = 0;
if (v > "a")
res |= (c << i);
i++;
if (v >= "b")
res |= (c << i);
i++;
if (v < "c")
res |= (c << i);
i++;
if (v <= "d")
res |= (c << i);
i++;
if (v == "e")
res |= (c << i);
i++;
if (v != "f")
res |= (c << i);
i++;
if (v === "g")
res |= (c << i);
i++;
if (v !== "h")
res |= (c << i);
i++;
if (v)
res |= (c << i);
i++;
return res;
}
var expected = [
// compareIAndSet
172, 175, 171, 171, 179, 131, 227, 35,
// compareIAndBranch
428, 431, 427, 427, 435, 387, 483, 291,
// compareDAndSet
428, 428, 431, 427, 427, 435, 387, 483, 291, 416,
// compareDAndBranch
428, 428, 431, 427, 427, 435, 387, 483, 291, 160, 172,
// compareSAndSet
172, 175, 171, 171, 179, 131, 227, 35, 172,
// compareSAndBranch
428, 431, 427, 427, 435, 387, 483, 291, 172
];
var result = [
compareIAndSet(1),
compareIAndSet(2),
compareIAndSet(3),
compareIAndSet(4),
compareIAndSet(5),
compareIAndSet(6),
compareIAndSet(7),
compareIAndSet(8),
compareIAndBranch(1),
compareIAndBranch(2),
compareIAndBranch(3),
compareIAndBranch(4),
compareIAndBranch(5),
compareIAndBranch(6),
compareIAndBranch(7),
compareIAndBranch(8),
compareDAndSet(0.5),
compareDAndSet(1.5),
compareDAndSet(2.5),
compareDAndSet(3.5),
compareDAndSet(4.5),
compareDAndSet(5.5),
compareDAndSet(6.5),
compareDAndSet(7.5),
compareDAndSet(8.5),
compareDAndSet(NaN),
compareDAndBranch(0.5),
compareDAndBranch(1.5),
compareDAndBranch(2.5),
compareDAndBranch(3.5),
compareDAndBranch(4.5),
compareDAndBranch(5.5),
compareDAndBranch(6.5),
compareDAndBranch(7.5),
compareDAndBranch(8.5),
compareDAndBranch(NaN),
compareDAndBranch(0.0),
compareSAndSet("a"),
compareSAndSet("b"),
compareSAndSet("c"),
compareSAndSet("d"),
compareSAndSet("e"),
compareSAndSet("f"),
compareSAndSet("g"),
compareSAndSet("h"),
compareSAndSet(""),
compareSAndBranch("a"),
compareSAndBranch("b"),
compareSAndBranch("c"),
compareSAndBranch("d"),
compareSAndBranch("e"),
compareSAndBranch("f"),
compareSAndBranch("g"),
compareSAndBranch("h"),
compareSAndBranch("")
];
assertEq(arraysEqual(result, expected), true);