UNPKG

@alcorexchange/alcor-swap-sdk

Version:

## Installation ​​ **npm** ``` npm i @alcorexchange/alcor-swap-sdk ``` **yarn** ``` yarn add @alcorexchange/alcor-swap-sdk ``` ## Usage ### Import:

32 lines (26 loc) 818 B
import JSBI from "jsbi"; import invariant from "tiny-invariant"; export const MAX_SAFE_INTEGER = JSBI.BigInt(Number.MAX_SAFE_INTEGER); const ZERO = JSBI.BigInt(0); const ONE = JSBI.BigInt(1); const TWO = JSBI.BigInt(2); /** * Computes floor(sqrt(value)) * @param value the value for which to compute the square root, rounded down */ export function sqrt(value: JSBI): JSBI { invariant(JSBI.greaterThanOrEqual(value, ZERO), "NEGATIVE"); // rely on built in sqrt if possible if (JSBI.lessThan(value, MAX_SAFE_INTEGER)) { return JSBI.BigInt(Math.floor(Math.sqrt(JSBI.toNumber(value)))); } let z: JSBI; let x: JSBI; z = value; x = JSBI.add(JSBI.divide(value, TWO), ONE); while (JSBI.lessThan(x, z)) { z = x; x = JSBI.divide(JSBI.add(JSBI.divide(value, x), x), TWO); } return z; }