UNPKG

@tempots/std

Version:

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

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