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())