| Server IP : 146.190.157.162 / Your IP : 216.73.217.6 Web Server : Apache System : Linux ubuntu-s-2vcpu-4gb-amd-sfo3-01-KIT-DIGITAL 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024 x86_64 User : businessweek ( 639) PHP Version : 8.2.10-2ubuntu2.2 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_signal,pcntl_signal_dispatch,pcntl_getpriority,pcntl_setpriority,dl,putenv,parse_ini_file,show_source MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/share/nodejs/es-abstract/2022/ |
Upload File : |
'use strict';
var GetIntrinsic = require('get-intrinsic');
var $TypeError = GetIntrinsic('%TypeError%');
// var $BigInt = GetIntrinsic('%BigInt%', true);
// var $pow = GetIntrinsic('%Math.pow%');
// var BinaryAnd = require('./BinaryAnd');
// var BinaryOr = require('./BinaryOr');
// var BinaryXor = require('./BinaryXor');
var Type = require('./Type');
// var modulo = require('./modulo');
// var zero = $BigInt && $BigInt(0);
// var negOne = $BigInt && $BigInt(-1);
// var two = $BigInt && $BigInt(2);
// https://262.ecma-international.org/11.0/#sec-bigintbitwiseop
module.exports = function BigIntBitwiseOp(op, x, y) {
if (op !== '&' && op !== '|' && op !== '^') {
throw new $TypeError('Assertion failed: `op` must be `&`, `|`, or `^`');
}
if (Type(x) !== 'BigInt' || Type(y) !== 'BigInt') {
throw new $TypeError('`x` and `y` must be BigInts');
}
if (op === '&') {
return x & y;
}
if (op === '|') {
return x | y;
}
return x ^ y;
/*
var result = zero;
var shift = 0;
while (x !== zero && x !== negOne && y !== zero && y !== negOne) {
var xDigit = modulo(x, two);
var yDigit = modulo(y, two);
if (op === '&') {
result += $pow(2, shift) * BinaryAnd(xDigit, yDigit);
} else if (op === '|') {
result += $pow(2, shift) * BinaryOr(xDigit, yDigit);
} else if (op === '^') {
result += $pow(2, shift) * BinaryXor(xDigit, yDigit);
}
shift += 1;
x = (x - xDigit) / two;
y = (y - yDigit) / two;
}
var tmp;
if (op === '&') {
tmp = BinaryAnd(modulo(x, two), modulo(y, two));
} else if (op === '|') {
tmp = BinaryAnd(modulo(x, two), modulo(y, two));
} else {
tmp = BinaryXor(modulo(x, two), modulo(y, two));
}
if (tmp !== 0) {
result -= $pow(2, shift);
}
return result;
*/
};