UNPKG

@sgratzl/science

Version:

Scientific and statistical computing in JavaScript.

1 lines 17.2 kB
!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(r.science={})}("undefined"!=typeof self?self:this,function(r){"use strict";function t(r,t){return r-t}function n(r){return"function"==typeof r?r:function(){return r}}function a(r,t){var n,a;(r=Math.abs(r))>(t=Math.abs(t))?(n=r,a=t):(n=t,a=r);var e=a/n;return n*Math.sqrt(1+e*e)}function e(r,t,n,a){var e,f;return Math.abs(n)>Math.abs(a)?[(r+(e=a/n)*t)/(f=n+e*a),(t-e*r)/f]:[((e=n/a)*r+t)/(f=a+e*n),(e*t-r)/f]}function f(r,t){for(var n=0,a=-1,e=Math.min(r.length,t.length);++a<e;)n+=r[a]*t[a];return n}function o(r,t){t||(t=1e-10);for(var n,a,e=r.length,f=r[0].length,o=-1;++o<e;){var i=o;for(n=o;++n<e;)Math.abs(r[n][o])>Math.abs(r[i][o])&&(i=n);var u=r[o];if(r[o]=r[i],r[i]=u,Math.abs(r[o][o])<=t)return!1;for(n=o;++n<e;){var h=r[n][o]/r[o][o];for(a=o-1;++a<f;)r[n][a]-=r[o][a]*h}}for(o=e;--o>=0;){h=r[o][o];for(n=-1;++n<o;)for(a=f;--a>=o;)r[n][a]-=r[o][a]*r[n][o]/h;for(r[o][o]/=h,a=e-1;++a<f;)r[o][a]/=h}return!0}function i(r){return Math.sqrt(f(r,r))}var u=Object.freeze({cross:function(r,t){return[r[1]*t[2]-r[2]*t[1],r[2]*t[0]-r[0]*t[2],r[0]*t[1]-r[1]*t[0]]},decompose:function(){return function(r){for(var t=r.length,n=[],f=[],o=[],i=0;i<t;i++)n[i]=[],f[i]=[],o[i]=[];for(var u=!0,h=0;h<t;h++)for(i=0;i<t;i++)if(r[i][h]!==r[h][i]){u=!1;break}if(u){for(i=0;i<t;i++)n[i]=r[i].slice();!function(r,t,n){for(var a=n.length,e=0;e<a;e++)r[e]=n[a-1][e];for(var f=a-1;f>0;f--){for(var o=0,i=0,u=0;u<f;u++)o+=Math.abs(r[u]);if(0===o){t[f]=r[f-1];for(var e=0;e<f;e++)r[e]=n[f-1][e],n[f][e]=0,n[e][f]=0}else{for(var u=0;u<f;u++)r[u]/=o,i+=r[u]*r[u];var h=r[f-1],s=Math.sqrt(i);h>0&&(s=-s),t[f]=o*s,i-=h*s,r[f-1]=h-s;for(var e=0;e<f;e++)t[e]=0;for(var e=0;e<f;e++){h=r[e],n[e][f]=h,s=t[e]+n[e][e]*h;for(var u=e+1;u<=f-1;u++)s+=n[u][e]*r[u],t[u]+=n[u][e]*h;t[e]=s}h=0;for(var e=0;e<f;e++)t[e]/=i,h+=t[e]*r[e];for(var v=h/(i+i),e=0;e<f;e++)t[e]-=v*r[e];for(var e=0;e<f;e++){h=r[e],s=t[e];for(var u=e;u<=f-1;u++)n[u][e]-=h*t[u]+s*r[u];r[e]=n[f-1][e],n[f][e]=0}}r[f]=i}for(var f=0;f<a-1;f++){n[a-1][f]=n[f][f],n[f][f]=1;var i=r[f+1];if(0!=i){for(var u=0;u<=f;u++)r[u]=n[u][f+1]/i;for(var e=0;e<=f;e++){for(var s=0,u=0;u<=f;u++)s+=n[u][f+1]*n[u][e];for(var u=0;u<=f;u++)n[u][e]-=s*r[u]}}for(var u=0;u<=f;u++)n[u][f+1]=0}for(var e=0;e<a;e++)r[e]=n[a-1][e],n[a-1][e]=0;n[a-1][a-1]=1,t[0]=0}(f,o,n),function(r,t,n){for(var e=n.length,f=1;f<e;f++)t[f-1]=t[f];t[e-1]=0;for(var o=0,i=0,u=0;u<e;u++){i=Math.max(i,Math.abs(r[u])+Math.abs(t[u]));for(var h=u;h<e&&!(Math.abs(t[h])<=1e-12*i);)h++;if(h>u)do{var s=r[u],v=(r[u+1]-s)/(2*t[u]),c=a(v,1);v<0&&(c=-c),r[u]=t[u]/(v+c),r[u+1]=t[u]*(v+c);for(var l=r[u+1],M=s-r[u],f=u+2;f<e;f++)r[f]-=M;o+=M,v=r[h];for(var b=1,g=b,d=b,p=t[u+1],m=0,w=0,f=h-1;f>=u;f--){d=g,g=b,w=m,s=b*t[f],M=b*v,c=a(v,t[f]),t[f+1]=m*c,m=t[f]/c,v=(b=v/c)*r[f]-m*s,r[f+1]=M+m*(b*s+m*r[f]);for(var q=0;q<e;q++)M=n[q][f+1],n[q][f+1]=m*n[q][f]+b*M,n[q][f]=b*n[q][f]-m*M}v=-m*w*d*p*t[u]/l,t[u]=m*v,r[u]=b*v}while(Math.abs(t[u])>1e-12*i);r[u]=r[u]+o,t[u]=0}for(var f=0;f<e-1;f++){for(var q=f,v=r[f],y=f+1;y<e;y++)r[y]<v&&(q=y,v=r[y]);if(q!=f){r[q]=r[f],r[f]=v;for(var y=0;y<e;y++)v=n[y][f],n[y][f]=n[y][q],n[y][q]=v}}}(f,o,n)}else{var s=[];for(i=0;i<t;i++)s[i]=r[i].slice();!function(r,t){for(var n=r.length,a=[],e=n-1,f=1;f<e;f++){for(var o=0,i=f;i<=e;i++)o+=Math.abs(r[i][f-1]);if(0!==o){for(var u=0,i=e;i>=f;i--)a[i]=r[i][f-1]/o,u+=a[i]*a[i];var h=Math.sqrt(u);a[f]>0&&(h=-h),u-=a[f]*h,a[f]=a[f]-h;for(var s=f;s<n;s++){for(var v=0,i=e;i>=f;i--)v+=a[i]*r[i][s];v/=u;for(var i=f;i<=e;i++)r[i][s]-=v*a[i]}for(var i=0;i<=e;i++){for(var v=0,s=e;s>=f;s--)v+=a[s]*r[i][s];v/=u;for(var s=f;s<=e;s++)r[i][s]-=v*a[s]}a[f]=o*a[f],r[f][f-1]=o*h}}for(var i=0;i<n;i++)for(var s=0;s<n;s++)t[i][s]=i===s?1:0;for(var f=e-1;f>=1;f--)if(0!==r[f][f-1]){for(var i=f+1;i<=e;i++)a[i]=r[i][f-1];for(var s=f;s<=e;s++){for(var h=0,i=f;i<=e;i++)h+=a[i]*t[i][s];h=h/a[f]/r[f][f-1];for(var i=f;i<=e;i++)t[i][s]+=h*a[i]}}}(s,n),function(r,t,n,a){for(var f,o,i,u,h=n.length,s=h-1,v=h-1,c=1e-12,l=0,M=0,b=0,g=0,d=0,p=0,m=0,w=0;w<h;w++){(w<0||w>v)&&(r[w]=n[w][w],t[w]=0);for(var q=Math.max(w-1,0);q<h;q++)m+=Math.abs(n[w][q])}for(var y=0;s>=0;){for(var k=s;k>0&&(0===(d=Math.abs(n[k-1][k-1])+Math.abs(n[k][k]))&&(d=m),!(Math.abs(n[k][k-1])<c*d));)k--;if(k===s)n[s][s]=n[s][s]+l,r[s]=n[s][s],t[s]=0,s--,y=0;else if(k===s-1){if(o=n[s][s-1]*n[s-1][s],M=(n[s-1][s-1]-n[s][s])/2,b=M*M+o,p=Math.sqrt(Math.abs(b)),n[s][s]=n[s][s]+l,n[s-1][s-1]=n[s-1][s-1]+l,i=n[s][s],b>=0){p=M+(M>=0?p:-p),r[s-1]=i+p,r[s]=r[s-1],0!==p&&(r[s]=i-o/p),t[s-1]=0,t[s]=0,i=n[s][s-1],d=Math.abs(i)+Math.abs(p),M=i/d,b=p/d,g=Math.sqrt(M*M+b*b),M/=g,b/=g;for(var q=s-1;q<h;q++)p=n[s-1][q],n[s-1][q]=b*p+M*n[s][q],n[s][q]=b*n[s][q]-M*p;for(var w=0;w<=s;w++)p=n[w][s-1],n[w][s-1]=b*p+M*n[w][s],n[w][s]=b*n[w][s]-M*p;for(var w=0;w<=v;w++)p=a[w][s-1],a[w][s-1]=b*p+M*a[w][s],a[w][s]=b*a[w][s]-M*p}else r[s-1]=i+M,r[s]=i+M,t[s-1]=p,t[s]=-p;s-=2,y=0}else{if(i=n[s][s],u=0,o=0,k<s&&(u=n[s-1][s-1],o=n[s][s-1]*n[s-1][s]),10==y){l+=i;for(var w=0;w<=s;w++)n[w][w]-=i;d=Math.abs(n[s][s-1])+Math.abs(n[s-1][s-2]),i=u=.75*d,o=-.4375*d*d}if(30==y&&(d=(d=(u-i)/2)*d+o)>0){d=Math.sqrt(d),u<i&&(d=-d),d=i-o/((u-i)/2+d);for(var w=0;w<=s;w++)n[w][w]-=d;l+=d,i=u=o=.964}y++;for(var z=s-2;z>=k&&(p=n[z][z],M=((g=i-p)*(d=u-p)-o)/n[z+1][z]+n[z][z+1],b=n[z+1][z+1]-p-g-d,g=n[z+2][z+1],d=Math.abs(M)+Math.abs(b)+Math.abs(g),M/=d,b/=d,g/=d,z!=k)&&!(Math.abs(n[z][z-1])*(Math.abs(b)+Math.abs(g))<c*(Math.abs(M)*(Math.abs(n[z-1][z-1])+Math.abs(p)+Math.abs(n[z+1][z+1]))));)z--;for(var w=z+2;w<=s;w++)n[w][w-2]=0,w>z+2&&(n[w][w-3]=0);for(var x=z;x<=s-1;x++){var j=x!=s-1;if(x!=z&&(M=n[x][x-1],b=n[x+1][x-1],g=j?n[x+2][x-1]:0,0!=(i=Math.abs(M)+Math.abs(b)+Math.abs(g))&&(M/=i,b/=i,g/=i)),0==i)break;if(d=Math.sqrt(M*M+b*b+g*g),M<0&&(d=-d),0!=d){x!=z?n[x][x-1]=-d*i:k!=z&&(n[x][x-1]=-n[x][x-1]),i=(M+=d)/d,u=b/d,p=g/d,b/=M,g/=M;for(var q=x;q<h;q++)M=n[x][q]+b*n[x+1][q],j&&(M+=g*n[x+2][q],n[x+2][q]=n[x+2][q]-M*p),n[x][q]=n[x][q]-M*i,n[x+1][q]=n[x+1][q]-M*u;for(var w=0;w<=Math.min(s,x+3);w++)M=i*n[w][x]+u*n[w][x+1],j&&(M+=p*n[w][x+2],n[w][x+2]=n[w][x+2]-M*g),n[w][x]=n[w][x]-M,n[w][x+1]=n[w][x+1]-M*b;for(var w=0;w<=v;w++)M=i*a[w][x]+u*a[w][x+1],j&&(M+=p*a[w][x+2],a[w][x+2]=a[w][x+2]-M*g),a[w][x]=a[w][x]-M,a[w][x+1]=a[w][x+1]-M*b}}}}if(0!=m){for(s=h-1;s>=0;s--)if(M=r[s],0==(b=t[s])){var k=s;n[s][s]=1;for(var w=s-1;w>=0;w--){o=n[w][w]-M,g=0;for(var q=k;q<=s;q++)g+=n[w][q]*n[q][s];if(t[w]<0)p=o,d=g;else if(k=w,0===t[w]?n[w][s]=-g/(0!==o?o:c*m):(i=n[w][w+1],u=n[w+1][w],b=(r[w]-M)*(r[w]-M)+t[w]*t[w],f=(i*d-p*g)/b,n[w][s]=f,Math.abs(i)>Math.abs(p)?n[w+1][s]=(-g-o*f)/i:n[w+1][s]=(-d-u*f)/p),f=Math.abs(n[w][s]),c*f*f>1)for(var q=w;q<=s;q++)n[q][s]=n[q][s]/f}}else if(b<0){var k=s-1;if(Math.abs(n[s][s-1])>Math.abs(n[s-1][s]))n[s-1][s-1]=b/n[s][s-1],n[s-1][s]=-(n[s][s]-M)/n[s][s-1];else{var O=e(0,-n[s-1][s],n[s-1][s-1]-M,b);n[s-1][s-1]=O[0],n[s-1][s]=O[1]}n[s][s-1]=0,n[s][s]=1;for(var w=s-2;w>=0;w--){for(var A,P,I=0,N=0,q=k;q<=s;q++)I+=n[w][q]*n[q][s-1],N+=n[w][q]*n[q][s];if(o=n[w][w]-M,t[w]<0)p=o,g=I,d=N;else{if(k=w,0==t[w]){var O=e(-I,-N,o,b);n[w][s-1]=O[0],n[w][s]=O[1]}else{i=n[w][w+1],u=n[w+1][w],A=(r[w]-M)*(r[w]-M)+t[w]*t[w]-b*b,P=2*(r[w]-M)*b,0==A&0==P&&(A=c*m*(Math.abs(o)+Math.abs(b)+Math.abs(i)+Math.abs(u)+Math.abs(p)));var O=e(i*g-p*I+b*N,i*d-p*N-b*I,A,P);if(n[w][s-1]=O[0],n[w][s]=O[1],Math.abs(i)>Math.abs(p)+Math.abs(b))n[w+1][s-1]=(-I-o*n[w][s-1]+b*n[w][s])/i,n[w+1][s]=(-N-o*n[w][s]-b*n[w][s-1])/i;else{var O=e(-g-u*n[w][s-1],-d-u*n[w][s],p,b);n[w+1][s-1]=O[0],n[w+1][s]=O[1]}}if(f=Math.max(Math.abs(n[w][s-1]),Math.abs(n[w][s])),c*f*f>1)for(var q=w;q<=s;q++)n[q][s-1]=n[q][s-1]/f,n[q][s]=n[q][s]/f}}}for(var w=0;w<h;w++)if(w<0||w>v)for(var q=w;q<h;q++)a[w][q]=n[w][q];for(var q=h-1;q>=0;q--)for(var w=0;w<=v;w++){p=0;for(var x=0;x<=Math.min(q,v);x++)p+=a[w][x]*n[x][q];a[w][q]=p}}}(f,o,s,n)}var v=[];for(i=0;i<t;i++){var c=v[i]=[];for(h=0;h<t;h++)c[h]=i===h?f[i]:0;v[i][o[i]>0?i+1:i-1]=o[i]}return{D:v,V:n}}},determinant:function(r){var t=r[0].concat(r[1]).concat(r[2]).concat(r[3]);return t[12]*t[9]*t[6]*t[3]-t[8]*t[13]*t[6]*t[3]-t[12]*t[5]*t[10]*t[3]+t[4]*t[13]*t[10]*t[3]+t[8]*t[5]*t[14]*t[3]-t[4]*t[9]*t[14]*t[3]-t[12]*t[9]*t[2]*t[7]+t[8]*t[13]*t[2]*t[7]+t[12]*t[1]*t[10]*t[7]-t[0]*t[13]*t[10]*t[7]-t[8]*t[1]*t[14]*t[7]+t[0]*t[9]*t[14]*t[7]+t[12]*t[5]*t[2]*t[11]-t[4]*t[13]*t[2]*t[11]-t[12]*t[1]*t[6]*t[11]+t[0]*t[13]*t[6]*t[11]+t[4]*t[1]*t[14]*t[11]-t[0]*t[5]*t[14]*t[11]-t[8]*t[5]*t[2]*t[15]+t[4]*t[9]*t[2]*t[15]+t[8]*t[1]*t[6]*t[15]-t[0]*t[9]*t[6]*t[15]-t[4]*t[1]*t[10]*t[15]+t[0]*t[5]*t[10]*t[15]},dot:f,gaussjordan:o,inverse:function(r){var t=r.length,n=-1;if(t===r[0].length){for(o(r=r.map(function(r,n){for(var a=new Array(t),e=-1;++e<t;)a[e]=n===e?1:0;return r.concat(a)}));++n<t;)r[n]=r[n].slice(t);return r}},length:i,multiply:function(r,t){var n,a,e=r.length,f=t[0].length,o=t.length,i=-1;if(o!==r[0].length)throw{error:"columns(a) != rows(b); "+r[0].length+" != "+o};for(var u=new Array(e);++i<e;)for(u[i]=new Array(f),n=-1;++n<f;){var h=0;for(a=-1;++a<o;)h+=r[i][a]*t[a][n];u[i][n]=h}return u},normalize:function(r){var t=i(r);return r.map(function(r){return r/t})},transpose:function(r){for(var t,n=r.length,a=r[0].length,e=-1,f=new Array(a);++e<a;)for(f[e]=new Array(n),t=-1;++t<n;)f[e][t]=r[t][e];return f},tridag:function(r,t,n,a,e,f){var o,i;for(o=1;o<f;o++)i=r[o]/t[o-1],t[o]-=i*n[o-1],a[o]-=i*a[o-1];for(e[f-1]=a[f-1]/t[f-1],o=f-2;o>=0;o--)e[o]=(a[o]-n[o]*e[o+1])/t[o]}});function h(r){var t=r<0?-1:1;r<0&&(t=-1,r=-r);var n=1/(1+.3275911*r);return t*(1-((((1.061405429*n-1.453152027)*n+1.421413741)*n-.284496736)*n+.254829592)*n*Math.exp(-r*r))}var s=1/Math.sqrt(2*Math.PI),v=Object.freeze({gaussian:function(){var r=Math.random,t=0,n=1,a=1;function e(){var a,e,f;do{f=(a=2*r()-1)*a+(e=2*r()-1)*e}while(f>=1||0===f);return t+n*a*Math.sqrt(-2*Math.log(f)/f)}return e.pdf=function(r){return r=(r-t)/n,s*Math.exp(-.5*r*r)/n},e.cdf=function(r){return.5*(1+h((r=(r-t)/n)/Math.SQRT2))},e.mean=function(r){return arguments.length?(t=+r,e):t},e.variance=function(r){return arguments.length?(n=Math.sqrt(a=+r),e):a},e.random=function(t){return arguments.length?(r=t,e):r},e}});function c(r){var t=r.length;if(0===t)return NaN;for(var n=0,a=-1;++a<t;)n+=(r[a]-n)/(a+1);return n}function l(r){var t=r.length;if(t<1)return NaN;if(1===t)return 0;for(var n=c(r),a=-1,e=0;++a<t;){var f=r[a]-n;e+=f*f}return e/(t-1)}function M(r,n){var a=(r=r.slice().sort(t)).length-1;return n.map(function(t){if(0===t)return r[0];if(1===t)return r[a];var n=1+t*a,e=Math.floor(n),f=n-e,o=r[e-1];return 0===f?o:o+f*(r[e]-o)})}function b(r){var t=M(r,[.25,.75]);return t[1]-t[0]}function g(r){var t=b(r)/1.34;return 1.06*Math.min(Math.sqrt(l(r)),t)*Math.pow(r.length,-.2)}var d=Object.freeze({nrd0:function(r){var t,n=Math.sqrt(l(r));return(t=Math.min(n,b(r)/1.34))||(t=n)||(t=Math.abs(r[1]))||(t=1),.9*t*Math.pow(r.length,-.2)},nrd:g});function p(r,t){for(var n,a=r.length,e=-1,f=0;++e<a;)f+=(n=r[e]-t[e])*n;return Math.sqrt(f)}function m(r,t,n,a){for(var e=[],f=r+n,o=t.length,i=-1;++i<o;)e[i]=(r*t[i]+n*a[i])/f;return e}function w(r){return 1/Math.sqrt(2*Math.PI)*Math.exp(-.5*r*r)}function q(r,t){if(!r||!t||r.length!==t.length)return!1;for(var n=r.length,a=-1;++a<n;)if(r[a]!==t[a])return!1;return!0}function y(r){return M(r,[.5])[0]}function k(r){for(var t=r.length,n=-1;++n<t;)if(!isFinite(r[n]))return!1;return!0}function z(r){return(r=1-r*r*r)*r*r}function x(r,t,n,a){var e=a[0],f=j(t,a[1]);if(f<r.length&&r[f]-r[n]<r[n]-r[e]){var o=j(t,e);a[0]=o,a[1]=f}}function j(r,t){for(var n=t+1;n<r.length&&0===r[n];)n++;return n}var O=Object.freeze({euclidean:p,manhattan:function(r,t){for(var n=r.length,a=-1,e=0;++a<n;)e+=Math.abs(r[a]-t[a]);return e},minkowski:function(r){return function(t,n){for(var a=t.length,e=-1,f=0;++e<a;)f+=Math.pow(Math.abs(t[e]-n[e]),r);return Math.pow(f,1/r)}},chebyshev:function(r,t){for(var n,a=r.length,e=-1,f=0;++e<a;)(n=Math.abs(r[e]-t[e]))>f&&(f=n);return f},hamming:function(r,t){for(var n=r.length,a=-1,e=0;++a<n;)r[a]!==t[a]&&e++;return e},jaccard:function(r,t){for(var n=r.length,a=-1,e=0;++a<n;)r[a]===t[a]&&e++;return e/n},braycurtis:function(r,t){for(var n,a,e=r.length,f=-1,o=0,i=0;++f<e;)n=r[f],a=t[f],o+=Math.abs(n-a),i+=Math.abs(n+a);return o/i}}),A=Object.freeze({uniform:function(r){return r<=1&&r>=-1?.5:0},triangular:function(r){return r<=1&&r>=-1?1-Math.abs(r):0},epanechnikov:function(r){return r<=1&&r>=-1?.75*(1-r*r):0},quartic:function(r){if(r<=1&&r>=-1){var t=1-r*r;return.9375*t*t}return 0},triweight:function(r){if(r<=1&&r>=-1){var t=1-r*r;return 35/32*t*t*t}return 0},gaussian:w,cosine:function(r){return r<=1&&r>=-1?Math.PI/4*Math.cos(Math.PI/2*r):0}}),P=v,I=d,N=u,R=Object.freeze({distance:O,kernel:A,distribution:P,bandwidth:I,erf:h,hcluster:function(){var r=p,t="single";function n(n){var a,e,f,o,i,u,h,s,v=n.length,c=[],l=[],M=[],b=[];for(h=-1;++h<v;)for(c[h]=0,M[h]=[],s=-1;++s<v;)M[h][s]=h===s?1/0:r(n[h],n[s]),M[h][c[h]]>M[h][s]&&(c[h]=s);for(h=-1;++h<v;)b[h]=[],b[h][0]={left:null,right:null,dist:0,centroid:n[h],size:1,depth:0},l[h]=1;for(i=0;i<v-1;i++){for(a=0,h=0;h<v;h++)M[h][c[h]]<M[a][c[a]]&&(a=h);e=c[a];var g={left:f=b[a][0],right:o=b[e][0],dist:M[a][e],centroid:m(f.size,f.centroid,o.size,o.centroid),size:f.size+o.size,depth:1+Math.max(f.depth,o.depth)};for(b[a].splice(0,0,g),l[a]+=l[e],s=0;s<v;s++)switch(t){case"single":M[a][s]>M[e][s]&&(M[s][a]=M[a][s]=M[e][s]);break;case"complete":M[a][s]<M[e][s]&&(M[s][a]=M[a][s]=M[e][s]);break;case"average":M[s][a]=M[a][s]=(l[a]*M[a][s]+l[e]*M[e][s])/(l[a]+l[s])}for(M[a][a]=1/0,h=0;h<v;h++)M[h][e]=M[e][h]=1/0;for(s=0;s<v;s++)c[s]==e&&(c[s]=a),M[a][s]<M[a][c[a]]&&(c[a]=s);u=g}return u}return n.distance=function(t){return arguments.length?(r=t,n):r},n},iqr:b,kde:function(){var r=w,t=[],a=g;function e(n,e){var f=a.call(this,t);return n.map(function(n){for(var a=-1,e=0,o=t.length;++a<o;)e+=r((n-t[a])/f);return[n,e/f/o]})}return e.kernel=function(t){return arguments.length?(r=t,e):r},e.sample=function(r){return arguments.length?(t=r,e):t},e.bandwidth=function(r){return arguments.length?(a=n(r),e):a},e},kmeans:function(){var r=p,t=1e3,n=1;function a(a){for(var e,f,o,i,u,h,s,v=a.length,c=[],l=[],M=1,b=0,g=function(r,t){var n=t.length;if(r>n)return null;for(var a,e,f,o=[],i=[],u={},h=0,s=0;s<r;){if(h===n)return null;var v=Math.floor(Math.random()*n);if(!(v in u)){for(u[v]=1,h++,e=t[v],f=!0,a=0;a<s;a++)if(q(e,o[a])){f=!1;break}f&&(o[s]=e,i[s]=v,s++)}}return o}(n,a);M&&b<t;){for(o=-1;++o<n;)l[o]=0;for(f=-1;++f<v;){for(i=a[f],h=1/0,o=-1;++o<n;)(u=r.call(this,g[o],i))<h&&(h=u,s=o);l[c[f]=s]++}for(e=[],f=-1;++f<v;)if(null==(u=e[i=c[f]]))e[i]=a[f].slice();else for(o=-1;++o<u.length;)u[o]+=a[f][o];for(o=-1;++o<n;)for(i=e[o],u=1/l[o],f=-1;++f<i.length;)i[f]*=u;for(M=0,o=-1;++o<n;)if(!q(e[o],g[o])){M=1;break}g=e,b++}return{assignments:c,centroids:g}}return a.k=function(r){return arguments.length?(n=r,a):n},a.distance=function(t){return arguments.length?(r=t,a):r},a},loess:function(){var r=.3,t=2,n=1e-12;function a(a,e,f){var o,i=a.length;if(i!==e.length)throw{error:"Mismatched array lengths"};if(0==i)throw{error:"At least one point required."};if(arguments.length<3)for(f=[],o=-1;++o<i;)f[o]=1;if(k(a),k(e),k(f),function(r){for(var t=r.length,n=0;++n<t;)if(r[n-1]>=r[n])return!1}(a),1==i)return[e[0]];if(2==i)return[e[0],e[1]];var u=Math.floor(r*i);if(u<2)throw{error:"Bandwidth too small."};var h=[],s=[],v=[];for(o=-1;++o<i;)h[o]=0,s[o]=0,v[o]=1;for(var c=-1;++c<=t;){var l,M=[0,u-1];for(o=-1;++o<i;){l=a[o],o>0&&x(a,f,o,M);for(var b=M[0],g=M[1],d=a[o]-a[b]>a[g]-a[o]?b:g,p=0,m=0,w=0,q=0,j=0,O=Math.abs(1/(a[d]-l)),A=b;A<=g;++A){var P=a[A],I=e[A],N=P*(D=z((A<o?l-P:P-l)*O)*v[A]*f[A]);p+=D,m+=N,w+=P*N,q+=I*D,j+=I*N}var R=m/p,E=q/p,Q=j/p,S=w/p,T=Math.sqrt(Math.abs(S-R*R))<n?0:(Q-R*E)/(S-R*R),_=E-T*R;h[o]=T*l+_,s[o]=Math.abs(e[o]-h[o])}if(c===t)break;var B,D,F=y(s);if(Math.abs(F)<n)break;for(o=-1;++o<i;)B=s[o]/(6*F),v[o]=B>=1?0:(D=1-B*B)*D}return h}return a.bandwidth=function(t){return arguments.length?(r=t,a):t},a.robustnessIterations=function(r){return arguments.length?(t=r,a):r},a.accuracy=function(r){return arguments.length?(n=r,a):r},a},mean:c,median:y,mode:function(r){for(var t,n,a={},e=[],f=0,o=r.length,i=-1;++i<o;)(n=a.hasOwnProperty(t=r[i])?++a[t]:a[t]=1)===f?e.push(t):n>f&&(f=n,e=[t]);if(1===e.length)return e[0]},phi:function(r){return.5*(1+h(r/Math.SQRT2))},quantiles:M,variance:l});r.lin=N,r.stats=R,r.version="1.9.3",r.ascending=t,r.EULER=.5772156649015329,r.expm1=function(r){return r<1e-5&&r>-1e-5?r+.5*r*r:Math.exp(r)-1},r.functor=n,r.hypot=a,r.quadratic=function(){var r=!1;function t(t,n,a){var e=n*n-4*t*a;return e>0?(e=Math.sqrt(e)/(2*t),r?[{r:-n-e,i:0},{r:-n+e,i:0}]:[-n-e,-n+e]):0===e?(e=-n/(2*t),r?[{r:e,i:0}]:[e]):r?[{r:-n,i:-(e=Math.sqrt(-e)/(2*t))},{r:-n,i:e}]:[]}return t.complex=function(n){return arguments.length?(r=n,t):r},t},r.zeroes=function r(t){var n=-1,a=[];if(1===arguments.length)for(;++n<t;)a[n]=0;else for(;++n<t;)a[n]=r.apply(this,Array.prototype.slice.call(arguments,1));return a},Object.defineProperty(r,"__esModule",{value:!0})});