UNPKG

@tempots/std

Version:

Std library for TypeScript. Natural complement to the Tempo libraries.

56 lines (55 loc) 1.7 kB
import { ArgumentError as t } from "./error.js"; const c = (n, e) => (e < 0n && (n = -n, e = -e), n <= 0n ? n / e : (n - 1n) / e + 1n), f = (n, e) => (e < 0n && (n = -n, e = -e), n >= 0n ? n / e : (n + 1n) / e - 1n), u = (n, e) => n < e ? -1 : n > e ? 1 : 0, r = (n) => n < 0n ? -n : n, l = (n, e) => n < e ? n : e, m = (n, e) => n > e ? n : e, w = (n, e) => { if (e < 0n) throw new t("negative exponent for parameter y of biPow"); let i = 1n; for (; e > 0n; ) (e & 1n) !== 0n && (i *= n), e >>= 1n, n *= n; return i; }, s = (n, e) => { for (n = r(n), e = r(e); e > 0n; ) { const i = e; e = n % e, n = i; } return n; }, a = (n, e) => r(n * e) / s(n, e), o = (n) => { if (n < 2n) return !1; if (n === 2n || n === 3n) return !0; if (n % 2n === 0n || n % 3n === 0n) return !1; let e = 5n; for (; e * e <= n; ) { if (n % e === 0n || n % (e + 2n) === 0n) return !1; e += 6n; } return !0; }, v = (n) => { if (n < 2n) return 2n; if (n === 2n) return 3n; for (n % 2n === 0n ? n++ : n += 2n; !o(n); ) n += 2n; return n; }, P = (n) => { if (n <= 2n) throw new t(`no previous prime ${n} for biPrevPrime`); if (n === 3n) return 2n; for (n % 2n === 0n ? n-- : n -= 2n; !o(n); ) n -= 2n; return n; }, h = (n) => n % 2n === 0n, p = (n) => n % 2n !== 0n, I = (n) => n === 0n, d = (n) => n === 1n, g = (n) => n < 0n, A = (n) => n > 0n; export { r as biAbs, c as biCeilDiv, u as biCompare, f as biFloorDiv, s as biGcd, h as biIsEven, g as biIsNegative, p as biIsOdd, d as biIsOne, A as biIsPositive, o as biIsPrime, I as biIsZero, a as biLcm, m as biMax, l as biMin, v as biNextPrime, w as biPow, P as biPrevPrime };