-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathebisu.min.mjs
2 lines (2 loc) · 5.84 KB
/
ebisu.min.mjs
1
2
var O=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var W=O((Me,Q)=>{"use strict";var T=2/(1+Math.sqrt(5));Q.exports=re;function re(n,e,r,t,m,u){for(var a,l,o=0,i=r-T*(r-e),c=e+T*(r-e),h=n(i),s=n(c),f=n(e),x=n(r),b=e,N=r;++o<m&&Math.abs(r-e)>t;)s>h?(r=c,c=i,s=h,i=r-T*(r-e),h=n(i)):(e=i,i=c,h=s,c=e+T*(r-e),s=n(c));return a=.5*(r+e),l=.5*(h+s),u&&(u.iterations=o,u.argmin=a,u.minimum=l,u.converged=!0),isNaN(s)||isNaN(h)||o===m?(u&&(u.converged=!1),NaN):f<l?b:x<l?N:a}});var Y=O((ge,X)=>{"use strict";X.exports=te;function te(n,e,r,t,m,u,a){var l,o,i,c,h,s,f;for(c=1,h=r,s=r,i=o=l=e(r);!f&&isFinite(t)&&!isNaN(t);)if(++c,f=!0,o<=i&&(i=o,h=Math.max(m,h-t),o=e(h),f=!1),l<=i&&(i=l,s=Math.min(u,s+t),l=e(s),f=!1),i=Math.min(i,o,l),(o===i&&h===m||l===i&&s===u)&&(f=!0),t*=c<4?2:Math.exp(c*.5),!isFinite(t))return n[0]=-1/0,n[1]=1/0,n;return n[0]=h,n[1]=s,n}});var $=O((be,Z)=>{"use strict";var ie=W(),oe=Y(),P=[0,0];Z.exports=function(e,r,t){r=r||{};var m,u=r.tolerance===void 0?1e-8:r.tolerance,a=r.initialIncrement===void 0?1:r.initialIncrement,l=r.lowerBound===void 0?-1/0:r.lowerBound,o=r.upperBound===void 0?1/0:r.upperBound,i=r.maxIterations===void 0?100:r.maxIterations;if(t&&(t.iterations=0,t.argmin=NaN,t.minimum=1/0,t.converged=!1),isFinite(o)&&isFinite(l))P[0]=l,P[1]=o;else if(r.guess===void 0?l>-1/0?m=o<1/0?.5*(l+o):l:m=o<1/0?o:0:m=r.guess,oe(P,e,m,a,l,o,i),isNaN(P[0])||isNaN(P[1]))return NaN;return ie(e,P[0],P[1],u,i,t)}});var k=O((pe,J)=>{var z=7,U=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23],ae=607/128,q=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];function L(n){if(n<0)return Number("0/0");for(var e=q[0],r=q.length-1;r>0;--r)e+=q[r]/(n+r);var t=n+ae+.5;return .5*Math.log(2*Math.PI)+(n+.5)*Math.log(t)-t+Math.log(e)-Math.log(n)}J.exports=function n(e){if(e<.5)return Math.PI/(Math.sin(Math.PI*e)*n(1-e));if(e>100)return Math.exp(L(e));e-=1;for(var r=U[0],t=1;t<z+2;t++)r+=U[t]/(e+t);var m=e+z+.5;return Math.sqrt(2*Math.PI)*Math.pow(m,e+.5)*Math.exp(-m)*r};J.exports.log=L});var S=$();var H=k(),E=H.log;var ue=Math.exp,me=Math.log,le=Math.sign,fe=Math.max;function j(n,e){let r=fe(...n),t=0;for(let a=n.length-1;a>=0;a--)t+=e[a]*ue(n[a]-r);let m=le(t);return t*=m,[me(t)+r,m]}var ee=new Map;function D(n){let e=ee.get(n);return e!==void 0||(e=E(n),ee.set(n,e)),e}function ce(n,e,r){return E(n)-E(n+r)+D(e+r)-D(e)}var B=(n,e)=>D(n)+D(e)-D(n+e),C=(n,e)=>E(n)+E(e)-E(n+e),F=(n,e)=>H(n)*H(e)/H(n+e);function se(n,e){return-B(1+n-e,1+e)-Math.log(n+1)}function Pe(n){let e={betaln:B,betafn:F};return n.betaln&&(B=n.betaln),n.betafn&&(F=n.betafn),e}function ne(n,e){var r=n*(1-n)/e-1,t=n*r,m=(1-n)*r;return[t,m]}function Ee(n,e,r=!1){let[t,m,u]=n,a=e/u,l=ce(t+a,t,m);return r?Math.exp(l):l}function ye(n,e,r,t,m,u=!0,a,{useLog:l=!1,tolerance:o=1e-8}={}){if(0>e||e>r||r<1)throw new Error("0 <= successes and successes <= total and 1 <= total must be true");if(r===1)return K(n,e,t,m,u,a,{useLog:l,tolerance:o});if(!(e===Math.trunc(e)&&r===Math.trunc(r)))throw new Error("expecting integer successes and total");let[i,c,h]=n,s=t/h,f=r-e,x=[];for(let w=0;w<=f;w++)x.push(se(f,w));function b(w,M){let d=[];for(let g=0;g<=f;g++)d.push(x[g]+B(i+s*(e+g)+w*s*M,c));let v=[];for(let g=0;g<=f;g++)v.push(Math.pow(-1,g));return j(d,v)[0]}let N=b(0,0),I;if(u){let w=Math.log(.5),M=g=>b(1,g)-N-w,d={},v=S(g=>Math.abs(M(g)),{tolerance:o},d);if(!("converged"in d)||!d.converged)throw console.log(d),new Error("failed to converge: binomial");I=v,a=I*t}a||(a=h),I=a/t;let y=b(1,I)-N,A=Math.exp(y),p=Math.exp(b(2,I)-N);if(A<=0)throw new Error("negative mean encountered");if(p<=0)throw new Error("negative 2nd moment encountered");let _=Math.exp(2*y),G=p-_;if(G<=0)throw new Error("negative variance encountered");let[V,R]=ne(A,G);return[V,R,a]}function K(n,e,r,t,m=!0,u,{useLog:a=!1,tolerance:l=1e-8}={}){if(!(0<=e&&e<=1))throw new Error("expecting result between 0 and 1 inclusive");let[o,i,c]=n,h=e>.5,s=h?e:1-e;t===void 0&&(t=1-s);let f=r/c,[x,b]=h?[s-t,t]:[t-s,1-t],N=x*F(o+f,i)+b*(F(o,i)||0),I=a?j([C(o+f,i),C(o,i)||-1/0],[x,b])[0]:0;function y(M,d){let v=x*F(o+f+M*f*d,i);return b!==0&&(v+=b*F(o+M*f*d,i)),v/N}function A(M,d){return b!==0?j([C(o+f+M*f*d,i),C(o+M*f*d,i)],[x,b])[0]-I:Math.log(x)+C(o+f+M*f*d,i)-I}let p;if(m){let M={},d;if(a){let v=Math.log(.5);d=S(g=>Math.abs(A(1,g)-v),{lowerBound:0,tolerance:l},M)}else d=S(v=>Math.abs(y(1,v)-.5),{lowerBound:0},M);if(!("converged"in M)||!M.converged){if(!a)return K(n,e,r,t,m,u,{tolerance:l,useLog:!a});throw console.error(M,{prior:n,result:e,tnow:r,q0:t,rebalance:m,tback:u}),new Error("failed to converge")}p=d,u=p*r}else u||(u=c),p=u/r;let _=a?Math.exp(A(1,p)):y(1,p),V=(a?Math.exp(A(2,p)):y(2,p))-_*_,[R,w]=ne(_,V);if(!(R>0&&w>0&&isFinite(R)&&isFinite(w))){if(!a)return K(n,e,r,t,m,u,{tolerance:l,useLog:!a});throw new Error("newAlpha and newBeta must be finite and greater than zero")}return[R,w,u]}function Ae(n,e=4,r=e){return[e,r,n]}function he(n,e=.5,r=1e-4){if(e<0||e>1)throw new Error("percentiles must be between (0, 1) exclusive");let[t,m,u]=n,a=B(t,m),l=Math.log(e);function o(h){let s=B(t+h,m)-a;return Math.abs(s-l)}let i={},c=S(o,{lowerBound:0,tolerance:r},i);if(!("converged"in i)||!i.converged)throw new Error("failed to converge");return c*u}function Fe(n,e=1){let[r,t,m]=n,u=he(n),a=u/m,l=B(r,t),o=B(r+2*a,t)-l,c=1/(8*Math.exp(o)-2)-.5;if(c<=0)throw new Error("non-positive alpha, beta encountered");return[c,c,u*e]}export{Pe as customizeMath,Ae as defaultModel,he as modelToPercentileDecay,Ee as predictRecall,Fe as rescaleHalflife,ye as updateRecall};
//# sourceMappingURL=ebisu.min.mjs.map