JSFiddle - React, Tailwind, and code Playground
by evgkch
JavaScript
const vi = v =>
{
let i = 0n;
let shift = 0n;
let [x, y] = v;
while ((x > 0n) | (y > 0n)) {
i = i ^ (((x & 1n) ^ ((y & 1n) << 1n)) << shift);
x = x >> 1n;
y = y >> 1n;
shift += 2n;
}
return i;
}
const vi2 = v =>
{
if (v[0] > 0n || v[1] > 0n)
{
const a = v[0] & 1n,
b = v[1] & 1n;
return a ^ (b << 1n) ^ (vi([v[0] >> 1n, v[1] >> 1n]) << 2n);
}
else
return 0n;
}
console.log(vi([123456789123124n,123456789123124n]).toString())
console.log(vi2([123456789123124n,123456789123124n]).toString())