46 lines
1.0 KiB
TypeScript
46 lines
1.0 KiB
TypeScript
// Copyright (C) 2016 Dmitry Chestnykh
|
|
// MIT License. See LICENSE file for details.
|
|
|
|
/**
|
|
* Package int provides helper functions for integerss.
|
|
*/
|
|
|
|
/** 32-bit integer multiplication. */
|
|
export const mul = Math.imul;
|
|
|
|
/** 32-bit integer addition. */
|
|
export function add(a: number, b: number): number {
|
|
return (a + b) | 0;
|
|
}
|
|
|
|
/** 32-bit integer subtraction. */
|
|
export function sub(a: number, b: number): number {
|
|
return (a - b) | 0;
|
|
}
|
|
|
|
/** 32-bit integer left rotation */
|
|
export function rotl(x: number, n: number): number {
|
|
return x << n | x >>> (32 - n);
|
|
}
|
|
|
|
/** 32-bit integer left rotation */
|
|
export function rotr(x: number, n: number): number {
|
|
return x << (32 - n) | x >>> n;
|
|
}
|
|
|
|
/**
|
|
* Returns true if the argument is an integer number.
|
|
*/
|
|
export const isInteger = Number.isInteger;
|
|
|
|
/**
|
|
* Math.pow(2, 53) - 1
|
|
*/
|
|
export const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;
|
|
|
|
/**
|
|
* Returns true if the argument is a safe integer number
|
|
* (-MIN_SAFE_INTEGER < number <= MAX_SAFE_INTEGER)
|
|
*/
|
|
export const isSafeInteger = Number.isSafeInteger;
|