JavaScript квадратный корень из большого (BigInt ) целого числа

Что можно использовать в JS для вычисления квадратного корня из целого числа типа BigInt? Обычный Math.sqrt() не работает с числами типа BigInt.


Ответы (1 шт):

Автор решения: AlexShag

Для полноты картины, пока ждал ответ наваял вот такое своё.

function BigSqrt(n){
  var n1,n2,nc,nkv;
  if (n < 0n) throw 'Square root of negative numbers is not supported';
  n1=0n;n2=n;
  while(n2*n2>n) n2=n2/1000n;
  n2=n2*1000n;
  nc=(n1+n2)/2n;
  while(true) {
     nkv=nc*nc;
     if(nkv == n) return nc;
     if(nkv>n) n2=nc; else n1=nc;  
     if((n2-n1) <= 1) break;
     nc=(n2+n1)/2n;
  }
  while(nc*nc < n) nc++;
  while(nc*nc > n) nc--;
  
  return nc;
}
→ Ссылка