quaeratin
Version:
An extended precision floating point library (as per Shewchuk) - precision only limited by overflow / underflow
1 lines • 10.5 kB
JavaScript
var t={d:(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n)},n={};function e(t){return t[t.length-1]}function r(t){const n=new ArrayBuffer(8);return new DataView(n).setFloat64(0,t,!1),Array.from(new Uint8Array(n))}function o(t){return r(t).map(s).join("")}function s(t){let n=t.toString(2);for(;n.length<8;n="0"+n);return n}function i(t){const n=r(t),e=n[0],o=n[1],s=e>>7,i=((127&e)<<4)+((240&o)>>4),u=0===i?0:16,c=0===i?i-1022:i-1023,l=n.slice(1);return l[0]=(15&o)+u,{sign:s,exponent:c,significand:l}}function u(t){const n=o(t),[,e,r,s]=n.match(/^(.)(.{11})(.{52})$/),i=0===parseInt(r,2)?"0":"1";return{full:e+r+i+s,sign:e,exponent:r,hidden:i,significand:s}}function c(t){return i(t).significand}function l(t){return Math.log2(t&-t)}function a(t){if(0===t||!Number.isFinite(t))return NaN;const n=c(t),e=n.length;for(let t=e-1;t>=0;t--){if(0===n[t])continue;const r=l(n[t]);if(Number.isFinite(r))return 8*(e-t-1)+r}return NaN}function f(t){return t>=128?7:t>=64?6:t>=32?5:t>=16?4:t>=8?3:t>=4?2:t>=2?1:t>=1?0:NaN}function h(t){if(0===t||!Number.isFinite(t))return NaN;const n=c(t),e=n.length;for(let t=0;t<e;t++){const r=f(n[t]);if(Number.isFinite(r))return 8*(e-t-1)+r}return NaN}function g(t){return i(t).exponent}function p(t){if(0===t||!Number.isFinite(t))return NaN;const n=g(t);return h(t)-52+n}function d(t){const n=t.slice(),e=n.length;if(1===e)return n;let r=n[e-1],o=e;for(let t=e-2;t>=0;--t){const e=r,s=n[t];r=e+s;const i=s-(r-e);i&&(n[--o]=r,r=i)}let s=0;for(let t=o;t<e;++t){const e=n[t],o=r;r=e+o;const i=o-(r-e);i&&(n[s++]=i)}return n[s++]=r,n.length=s,n}function b(t,n){const e=(2**(53-n)+1)*t;return e-(e-t)}t.d(n,{ZS:()=>I,pr:()=>o,xm:()=>r,uP:()=>ut,_L:()=>zt,lG:()=>Vt,$0:()=>Mt,AM:()=>st,Zx:()=>d,w1:()=>T,sZ:()=>X,lX:()=>ht,$A:()=>N,yl:()=>et,K9:()=>Ot,lb:()=>Zt,bN:()=>tt,xr:()=>$t,aB:()=>at,kS:()=>ft,fX:()=>qt,xS:()=>Gt,ab:()=>E,Fp:()=>Pt,bx:()=>ot,qv:()=>e,g_:()=>G,XB:()=>D,fN:()=>Lt,kq:()=>O,Q7:()=>y,ts:()=>g,xK:()=>w,Fz:()=>ct,vz:()=>lt,kx:()=>h,hK:()=>a,Yj:()=>Z,Ku:()=>Xt,m5:()=>mt,V1:()=>Ct,pt:()=>xt,Jw:()=>p,Gn:()=>Ht,IW:()=>kt,Ds:()=>i,JO:()=>u,S4:()=>b,Fs:()=>v,R9:()=>B,aK:()=>c,Vl:()=>gt,BH:()=>pt,Q6:()=>bt,d9:()=>z});const m=e,x=d;function D(t,n){if(t=x(t),0===m(t))return[0];const e=p(t[t.length-1]);let r=e,o=t.length-1;for(;o>0;){const s=p(t[o-1]);if(e-s>n)break;r=s,o--}const s=Math.min(n-(e-r),53);let i=t[o];i=b(i,s);const u=t.slice(o);return u[0]=i,u}function N(t){let n=t[0];for(let e=1;e<t.length;e++)n+=t[e];return n}function w(t,n){const e=t.length,r=n.length;let o=0,s=0;const i=[];for(;o<e&&s<r;)0!==t[o]?0!==n[s]?Math.abs(t[o])<=Math.abs(n[s])?(i.push(t[o]),o++):(i.push(n[s]),s++):s++:o++;for(;o<e;)i.push(t[o]),o++;for(;s<r;)i.push(n[s]),s++;if(0===i.length)return[0];const u=i.length;if(1===u)return i;const c=[],l=i[1],a=i[0];let f=l+a;const h=a-(f-l);0!==h&&c.push(h),s=0;for(let t=2;t<u;t++){const n=i[t],e=f+n,r=e-f,o=f-(e-r)+(n-r);0!==o&&c.push(o),f=e}return 0===f&&0!==c.length||c.push(f),c}const S=134217729;function v(t,n){const e=t.length;let r;const o=t[0];let s=o*n;const i=S*o,u=i-(i-o),c=o-u,l=S*n,a=l-(l-n),f=n-a,h=[],g=c*f-(s-u*a-c*a-u*f);0!==g&&h.push(g);for(let o=1;o<e;o++){const e=t[o],i=e*n,u=S*e,c=u-(u-e),l=e-c,a=S*n,f=a-(a-n),g=n-f,p=l*g-(i-c*f-l*f-c*g),d=s+p,b=d-s,m=s-(d-b)+(p-b);0!==m&&h.push(m),r=d;const x=i+r,D=r-(x-i);0!==D&&h.push(D),s=x}return 0===s&&0!==h.length||h.push(s),h}function B(t,n){const e=n.length;let r;const o=n[0];let s=o*t;const i=S*o,u=i-(i-o),c=o-u,l=S*t,a=l-(l-t),f=t-a,h=[],g=c*f-(s-u*a-c*a-u*f);0!==g&&h.push(g);for(let o=1;o<e;o++){const e=n[o],i=e*t,u=S*e,c=u-(u-e),l=e-c,a=S*t,f=a-(a-t),g=t-f,p=l*g-(i-c*f-l*f-c*g),d=s+p,b=d-s,m=s-(d-b)+(p-b);0!==m&&h.push(m),r=d;const x=i+r,D=r-(x-i);0!==D&&h.push(D),s=x}return 0===s&&0!==h.length||h.push(s),h}const M=v,A=w;function y(t,n){let e=[0];for(let r=0;r<t.length;r++)e=A(e,M(n,t[r]));return e}function E(t){const n=t.length,e=new Array(n);for(let r=0;r<n;r++)e[r]=-t[r];return e}const F=E,P=w;function T(t,n){const e=F(n);return P(t,e)}function I(t){return 0===t?0:h(t)-a(t)+1}function O(t){const n=d(t);if(0===e(n))return 0;const r=n[n.length-1],o=n[0];return g(r)-g(o)+(53-a(o))}const K=y,L=D,k=O,j=T,C=N;function X(t,n,e){let r=n,o=t,s=!1,i=0;e||(i=k(o)-k(r)+1,e=i/53+1,s=!0);let u=[1/C(r)],c=1;for(;;){if(o=K(o,u),c>e)return s?(o=L(o,i),o):o.slice(o.length-e,o.length);r=K(r,u),u=j([2],r),c*=2}}function Z(t,n){const e=t.length;let r=n;const o=[];for(let n=0;n<e;n++){const e=t[n],s=r+e,i=s-r,u=r-(s-i)+(e-i);0!==u&&o.push(u),r=s}return 0===r&&0!==o.length||o.push(r),o}function z(t,n){const e=t+n,r=e-t;return[t-(e-r)+(n-r),e]}const V=z,$=Z,q=w;function G(t){let n=[0];for(let e=0;e<t.length;e++){const r=t[e];n=1===r.length?1===n.length?V(n[0],r[0]):$(n,r[0]):1===n.length?$(r,n[0]):q(n,r)}return n}const H=E,J=w,Q=d,R=Z,_=G,W=v,Y=T,U=Math.sign;function tt(t,n){t=Q(t);const e=(n=Q(n))[n.length-1];if(1===n.length){if(0===e)throw new Error("division by zero");if(1===e)return{div:t,rem:[0]};if(-1===e)return{div:H(t),rem:[0]}}const r=U(t[t.length-1]);if(0===r)return{div:[0],rem:[0]};const o=U(e),s=[];let i=0;for(;;){const r=[];for(let o=t.length-1;o>=0;o--){const i=t[o],u=Math.round((i-i%e)/e);if(r.push(W(n,u)),0===u)break;s.push(u)}if(t=Q(Y(t,_(r))),i===s.length)break;i=s.length}let u=t,c=[0];for(let t=0;t<s.length;t++)c=R(c,s[t]);c=Q(c);const l=U(u[u.length-1]);return 0!==l&&l!==r&&(r>0?o>0?(c=R(c,-1),u=J(u,n)):(c=R(c,1),u=J(u,H(n))):r<0&&(o>0?(c=R(c,1),u=J(u,H(n))):(c=R(c,-1),u=J(u,n)))),{div:c,rem:u}}const nt=tt;function et(t,n){return nt(t,n).div}const rt=tt;function ot(t,n){return rt(t,n).rem}function st(t,n){return e(T(t,n))}const it=E;function ut(t){return t[t.length-1]<0?it(t):t}function ct(t,n){const e=t-n;return[t-e-n,e]}function lt(t,n){const e=t+n;return[n-(e-t),e]}function at(t){const n=[];for(let e=0;e<t.length;e++)n.push(2*t[e]);return n}function ft(t){const n=[];for(let e=0;e<t.length;e++)n.push(-2*t[e]);return n}function ht(t){const n=[];for(let e=0;e<t.length;e++)n.push(.5*t[e]);return n}function gt(t){const n=134217729*t,e=n-(n-t);return[e,t-e]}function pt(t,n){const e=t-n,r=t-e;return[t-(e+r)+(r-n),e]}const dt=134217729;function bt(t,n){const e=t*n,r=dt*t,o=r-(r-t),s=t-o,i=dt*n,u=i-(i-n),c=n-u;return[s*c-(e-o*u-s*u-o*c),e]}function mt(t,n,e){if(0===t)return!0;const r=g(t),o=h(t)-52+r;return a(t)-52+r>=e&&o<=n-1+e}function xt(t){if(0===t||!Number.isFinite(t))return NaN;const n=g(t);return a(t)-52+n}const Dt=y,Nt=bt,wt=v,St=z,vt=Z,Bt=w;function Mt(t){let n=[0];for(let e=0;e<t.length;e++){const r=t[e];let o=r[0];for(let t=1;t<r.length;t++){const n=r[t];o=1==n.length?1===o.length?Nt(o[0],n[0]):wt(o,n[0]):1===o.length?wt(n,o[0]):Dt(n,o)}n=1===o.length?1===n.length?St(n[0],o[0]):vt(n,o[0]):1===n.length?vt(o,n[0]):Bt(n,o)}return n}const At=y,yt=bt,Et=v,Ft=d;function Pt(t){let n=t[0];for(let e=1;e<t.length;e++){const r=t[e];n=1==r.length?1===n.length?yt(n[0],r[0]):Et(n,r[0]):1===n.length?Et(r,n[0]):At(r,n)}return Ft(n)}const Tt=y,It=Pt;function Ot(t,n){if(0===n)return[1];if(1===n)return t;if(2===n)return Tt(t,t);const e=[];for(let r=0;r<n;r++)e.push(t);return It(e)}const Kt=d;function Lt(t){const n=(t=Kt(t)).length;return 2===n?t:1===n?[0,t[0]]:[t[n-2],t[n-1]]}function kt(t,n,e){const r=(t[0]-e[0])*(n[1]-e[1]),o=(t[1]-e[1])*(n[0]-e[0]),s=r-o;let i;if(r>0){if(o<=0)return s;i=r+o}else{if(!(r<0))return s;if(o>=0)return s;i=-r-o}return Math.abs(s)>=3330669073875472e-31*i?s:function(t,n,e,r){const o=t[0]-e[0],s=n[0]-e[0],i=t[1]-e[1],u=n[1]-e[1],c=T(bt(o,u),bt(i,s));let l=N(c);if(Math.abs(l)>=2220446049250315e-31*r)return l;const a=pt(t[0],e[0])[0],f=pt(n[0],e[0])[0],h=pt(t[1],e[1])[0],g=pt(n[1],e[1])[0];if(0===a&&0===h&&0===f&&0===g)return l;const p=1109335647967049e-46*r+3330669073875471e-31*Math.abs(l);if(l+=o*g+u*a-(i*f+s*h),Math.abs(l)>=p)return l;const b=w(c,T(bt(a,u),bt(h,s))),m=w(b,T(bt(o,g),bt(i,f)));let x=w(m,T(bt(a,g),bt(h,f)));return x=d(x),x[x.length-1]}(t,n,e,i)}function jt(t,n){return!function(t,n){if(0===t||0===n)return!0;Math.abs(n)>Math.abs(t)&&([t,n]=[n,t]);const e=a(t),r=h(n);return e+(g(t)-g(n))>r}(t,n)}function Ct(t){for(let n=1;n<t.length;n++)if(jt(t[n-1],t[n]))return!1;return!0}function Xt(t,n){return jt(t,n)||jt(t,2*n)||jt(2*t,n)}function Zt(t){t=d(t);for(let n=0;n<t.length;n++)if(t[n]%1!=0)return!1;return!0}const zt=w,Vt=Z,$t=y,qt=v,Gt=B,Ht={fastTwoDiff:ct,fastTwoSum:lt,split:gt,twoDiff:pt,twoProduct:bt,twoSum:z,reduceSignificand:b,fastExpansionSum:w,eAdd:zt,growExpansion:Z,eAddDouble:Vt,expansionProduct:y,eMult:$t,scaleExpansion:v,eMultDouble1:qt,scaleExpansion2:B,eMultDouble2:Gt,eDiv:X,eLongDivide:tt,eIntDiv:et,eRem:ot,eCompress:d,eEstimate:N,eDiff:T,eNegativeOf:E,eMultBy2:at,eMultByNeg2:ft,eDivBy2:ht,eSign:e,eCompare:st,eAbs:ut,eToBitlength:D,eIntPow:Ot,eCalculate:Mt,eSum:G,eProduct:Pt,eToDd:Lt,parseDouble:i,parseDoubleDetailed:u,isBitAligned:mt,msbExponent:p,lsbExponent:xt,bitLength:I,expBitLength:O,doubleToBinaryString:o,doubleToOctets:r,getHighestSetBit:h,getLowestSetBit:a,exponent:g,significand:c,orient2d:kt,isAdjacent:Xt,isNonOverlappingAll:Ct,eIsInteger:Zt};var Jt=n.ZS,Qt=n.pr,Rt=n.xm,_t=n.uP,Wt=n._L,Yt=n.lG,Ut=n.$0,tn=n.AM,nn=n.Zx,en=n.w1,rn=n.sZ,on=n.lX,sn=n.$A,un=n.yl,cn=n.K9,ln=n.lb,an=n.bN,fn=n.xr,hn=n.aB,gn=n.kS,pn=n.fX,dn=n.xS,bn=n.ab,mn=n.Fp,xn=n.bx,Dn=n.qv,Nn=n.g_,wn=n.XB,Sn=n.fN,vn=n.kq,Bn=n.Q7,Mn=n.ts,An=n.xK,yn=n.Fz,En=n.vz,Fn=n.kx,Pn=n.hK,Tn=n.Yj,In=n.Ku,On=n.m5,Kn=n.V1,Ln=n.pt,kn=n.Jw,jn=n.Gn,Cn=n.IW,Xn=n.Ds,Zn=n.JO,zn=n.S4,Vn=n.Fs,$n=n.R9,qn=n.aK,Gn=n.Vl,Hn=n.BH,Jn=n.Q6,Qn=n.d9;export{Jt as bitLength,Qt as doubleToBinaryString,Rt as doubleToOctets,_t as eAbs,Wt as eAdd,Yt as eAddDouble,Ut as eCalculate,tn as eCompare,nn as eCompress,en as eDiff,rn as eDiv,on as eDivBy2,sn as eEstimate,un as eIntDiv,cn as eIntPow,ln as eIsInteger,an as eLongDivide,fn as eMult,hn as eMultBy2,gn as eMultByNeg2,pn as eMultDouble1,dn as eMultDouble2,bn as eNegativeOf,mn as eProduct,xn as eRem,Dn as eSign,Nn as eSum,wn as eToBitlength,Sn as eToDd,vn as expBitLength,Bn as expansionProduct,Mn as exponent,An as fastExpansionSum,yn as fastTwoDiff,En as fastTwoSum,Fn as getHighestSetBit,Pn as getLowestSetBit,Tn as growExpansion,In as isAdjacent,On as isBitAligned,Kn as isNonOverlappingAll,Ln as lsbExponent,kn as msbExponent,jn as operators,Cn as orient2d,Xn as parseDouble,Zn as parseDoubleDetailed,zn as reduceSignificand,Vn as scaleExpansion,$n as scaleExpansion2,qn as significand,Gn as split,Hn as twoDiff,Jn as twoProduct,Qn as twoSum};