lakutata
Version:
An IoC-based universal application framework.
2,140 lines (2,016 loc) • 43.4 kB
JavaScript
function r(r) {
var t;
var n;
var e = r.length;
if (e === 1) {
t = 0;
n = r[0][1];
} else {
var a = 0;
var i = 0;
var o = 0;
var u = 0;
var f;
var h;
var v;
for (var l = 0; l < e; l++) {
f = r[l];
h = f[0];
v = f[1];
a += h;
i += v;
o += h * h;
u += h * v;
}
t = (e * u - a * i) / (e * o - a * a);
n = i / e - t * a / e;
}
return {
m: t,
b: n
};
}
function t(r) {
return function(t) {
return r.b + r.m * t;
};
}
function n(r) {
if (r.length === 0) {
return 0;
}
var t = r[0];
var n = 0;
var e;
if (typeof t !== "number") {
return Number.NaN;
}
for (var a = 1; a < r.length; a++) {
if (typeof r[a] !== "number") {
return Number.NaN;
}
e = t + r[a];
if (Math.abs(t) >= Math.abs(r[a])) {
n += t - e + r[a];
} else {
n += r[a] - e + t;
}
t = e;
}
return t + n;
}
function e(r) {
if (r.length === 0) {
throw new Error("mean requires at least one data point");
}
return n(r) / r.length;
}
function a(r, t) {
var n = e(r);
var a = 0;
var i;
var o;
if (t === 2) {
for (o = 0; o < r.length; o++) {
i = r[o] - n;
a += i * i;
}
} else {
for (o = 0; o < r.length; o++) {
a += Math.pow(r[o] - n, t);
}
}
return a;
}
function i(r) {
if (r.length === 0) {
throw new Error("variance requires at least one data point");
}
return a(r, 2) / r.length;
}
function o(r) {
if (r.length === 1) {
return 0;
}
var t = i(r);
return Math.sqrt(t);
}
function u(r, t) {
if (r.length < 2) {
return 1;
}
var n = 0;
for (var e = 0; e < r.length; e++) {
n += r[e][1];
}
var a = n / r.length;
var i = 0;
for (var o = 0; o < r.length; o++) {
i += Math.pow(a - r[o][1], 2);
}
var u = 0;
for (var f = 0; f < r.length; f++) {
u += Math.pow(r[f][1] - t(r[f][0]), 2);
}
return 1 - u / i;
}
function f(r) {
if (r.length === 0) {
throw new Error("mode requires at least one data point");
}
if (r.length === 1) {
return r[0];
}
var t = r[0];
var n = Number.NaN;
var e = 0;
var a = 1;
for (var i = 1; i < r.length + 1; i++) {
if (r[i] !== t) {
if (a > e) {
e = a;
n = t;
}
a = 1;
t = r[i];
} else {
a++;
}
}
return n;
}
function h(r) {
return r.slice().sort((function(r, t) {
return r - t;
}));
}
function v(r) {
return f(h(r));
}
function l(r) {
var t = new Map;
var n;
var e = 0;
for (var a = 0; a < r.length; a++) {
var i = t.get(r[a]);
if (i === undefined) {
i = 1;
} else {
i++;
}
if (i > e) {
n = r[a];
e = i;
}
t.set(r[a], i);
}
if (e === 0) {
throw new Error("mode requires at last one data point");
}
return n;
}
function s(r) {
if (r.length === 0) {
throw new Error("min requires at least one data point");
}
var t = r[0];
for (var n = 1; n < r.length; n++) {
if (r[n] < t) {
t = r[n];
}
}
return t;
}
function g(r) {
if (r.length === 0) {
throw new Error("max requires at least one data point");
}
var t = r[0];
for (var n = 1; n < r.length; n++) {
if (r[n] > t) {
t = r[n];
}
}
return t;
}
function c(r) {
if (r.length === 0) {
throw new Error("extent requires at least one data point");
}
var t = r[0];
var n = r[0];
for (var e = 1; e < r.length; e++) {
if (r[e] > n) {
n = r[e];
}
if (r[e] < t) {
t = r[e];
}
}
return [ t, n ];
}
function p(r) {
return r[0];
}
function w(r) {
return r[r.length - 1];
}
function M(r) {
return [ r[0], r[r.length - 1] ];
}
function d(r) {
var t = 0;
for (var n = 0; n < r.length; n++) {
if (typeof r[n] !== "number") {
return Number.NaN;
}
t += r[n];
}
return t;
}
function m(r) {
var t = 1;
for (var n = 0; n < r.length; n++) {
t *= r[n];
}
return t;
}
function b(r, t) {
var n = r.length * t;
if (r.length === 0) {
throw new Error("quantile requires at least one data point.");
} else if (t < 0 || t > 1) {
throw new Error("quantiles must be between 0 and 1");
} else if (t === 1) {
return r[r.length - 1];
} else if (t === 0) {
return r[0];
} else if (n % 1 !== 0) {
return r[Math.ceil(n) - 1];
} else if (r.length % 2 === 0) {
return (r[n - 1] + r[n]) / 2;
} else {
return r[n];
}
}
function E(r, t, n, e) {
n = n || 0;
e = e || r.length - 1;
while (e > n) {
if (e - n > 600) {
var a = e - n + 1;
var i = t - n + 1;
var o = Math.log(a);
var u = .5 * Math.exp(2 * o / 3);
var f = .5 * Math.sqrt(o * u * (a - u) / a);
if (i - a / 2 < 0) {
f *= -1;
}
var h = Math.max(n, Math.floor(t - i * u / a + f));
var v = Math.min(e, Math.floor(t + (a - i) * u / a + f));
E(r, t, h, v);
}
var l = r[t];
var s = n;
var g = e;
q(r, n, t);
if (r[e] > l) {
q(r, n, e);
}
while (s < g) {
q(r, s, g);
s++;
g--;
while (r[s] < l) {
s++;
}
while (r[g] > l) {
g--;
}
}
if (r[n] === l) {
q(r, n, g);
} else {
g++;
q(r, g, e);
}
if (g <= t) {
n = g + 1;
}
if (t <= g) {
e = g - 1;
}
}
}
function q(r, t, n) {
var e = r[t];
r[t] = r[n];
r[n] = e;
}
function y(r, t) {
var n = r.slice();
if (Array.isArray(t)) {
I(n, t);
var e = [];
for (var a = 0; a < t.length; a++) {
e[a] = b(n, t[a]);
}
return e;
} else {
var i = A(n.length, t);
N(n, i, 0, n.length - 1);
return b(n, t);
}
}
function N(r, t, n, e) {
if (t % 1 === 0) {
E(r, t, n, e);
} else {
t = Math.floor(t);
E(r, t, n, e);
E(r, t + 1, t + 1, e);
}
}
function I(r, t) {
var n = [ 0 ];
for (var e = 0; e < t.length; e++) {
n.push(A(r.length, t[e]));
}
n.push(r.length - 1);
n.sort(x);
var a = [ 0, n.length - 1 ];
while (a.length) {
var i = Math.ceil(a.pop());
var o = Math.floor(a.pop());
if (i - o <= 1) {
continue;
}
var u = Math.floor((o + i) / 2);
N(r, n[u], Math.floor(n[o]), Math.ceil(n[i]));
a.push(o, u, u, i);
}
}
function x(r, t) {
return r - t;
}
function A(r, t) {
var n = r * t;
if (t === 1) {
return r - 1;
} else if (t === 0) {
return 0;
} else if (n % 1 !== 0) {
return Math.ceil(n) - 1;
} else if (r % 2 === 0) {
return n - .5;
} else {
return n;
}
}
function k(r, t) {
if (t < r[0]) {
return 0;
}
if (t > r[r.length - 1]) {
return 1;
}
var n = P(r, t);
if (r[n] !== t) {
return n / r.length;
}
n++;
var e = _(r, t);
if (e === n) {
return n / r.length;
}
var a = e - n + 1;
var i = a * (e + n) / 2;
var o = i / a;
return o / r.length;
}
function P(r, t) {
var n = 0;
var e = 0;
var a = r.length;
while (e < a) {
n = e + a >>> 1;
if (t <= r[n]) {
a = n;
} else {
e = -~n;
}
}
return e;
}
function _(r, t) {
var n = 0;
var e = 0;
var a = r.length;
while (e < a) {
n = e + a >>> 1;
if (t >= r[n]) {
e = -~n;
} else {
a = n;
}
}
return e;
}
function C(r, t) {
var n = h(r);
return k(n, t);
}
function T(r) {
var t = y(r, .75);
var n = y(r, .25);
if (typeof t === "number" && typeof n === "number") {
return t - n;
}
}
function V(r) {
return +y(r, .5);
}
function L(r) {
var t = V(r);
var n = [];
for (var e = 0; e < r.length; e++) {
n.push(Math.abs(r[e] - t));
}
return V(n);
}
function S(r, t) {
var n = [];
if (t < 1) {
throw new Error("chunk size must be a positive number");
}
if (Math.floor(t) !== t) {
throw new Error("chunk size must be an integer");
}
for (var e = 0; e < r.length; e += t) {
n.push(r.slice(e, e + t));
}
return n;
}
function U(r, t, n) {
if (r.length === 0) {
return [];
}
n = n || Math.random;
var e = r.length;
var a = [];
for (var i = 0; i < t; i++) {
var o = Math.floor(n() * e);
a.push(r[o]);
}
return a;
}
function z(r, t) {
t = t || Math.random;
var n = r.length;
var e;
var a;
while (n > 0) {
a = Math.floor(t() * n--);
e = r[n];
r[n] = r[a];
r[a] = e;
}
return r;
}
function X(r, t) {
var n = r.slice();
return z(n, t);
}
function F(r, t, n) {
var e = X(r, n);
return e.slice(0, t);
}
function O(r, t) {
var n = [];
for (var e = 0; e < r; e++) {
var a = [];
for (var i = 0; i < t; i++) {
a.push(0);
}
n.push(a);
}
return n;
}
function Y(r) {
var t = 0;
var n;
for (var e = 0; e < r.length; e++) {
if (e === 0 || r[e] !== n) {
n = r[e];
t++;
}
}
return t;
}
function D(r, t, n, e) {
var a;
if (r > 0) {
var i = (n[t] - n[r - 1]) / (t - r + 1);
a = e[t] - e[r - 1] - (t - r + 1) * i * i;
} else {
a = e[t] - n[t] * n[t] / (t + 1);
}
if (a < 0) {
return 0;
}
return a;
}
function K(r, t, n, e, a, i, o) {
if (r > t) {
return;
}
var u = Math.floor((r + t) / 2);
e[n][u] = e[n - 1][u - 1];
a[n][u] = u;
var f = n;
if (r > n) {
f = Math.max(f, a[n][r - 1] || 0);
}
f = Math.max(f, a[n - 1][u] || 0);
var h = u - 1;
if (t < e[0].length - 1) {
h = Math.min(h, a[n][t + 1] || 0);
}
var v;
var l;
var s;
var g;
for (var c = h; c >= f; --c) {
v = D(c, u, i, o);
if (v + e[n - 1][f - 1] >= e[n][u]) {
break;
}
l = D(f, u, i, o);
s = l + e[n - 1][f - 1];
if (s < e[n][u]) {
e[n][u] = s;
a[n][u] = f;
}
f++;
g = v + e[n - 1][c - 1];
if (g < e[n][u]) {
e[n][u] = g;
a[n][u] = c;
}
}
K(r, u - 1, n, e, a, i, o);
K(u + 1, t, n, e, a, i, o);
}
function j(r, t, n) {
var e = t[0].length;
var a = r[Math.floor(e / 2)];
var i = [];
var o = [];
for (var u = 0, f = void 0; u < e; ++u) {
f = r[u] - a;
if (u === 0) {
i.push(f);
o.push(f * f);
} else {
i.push(i[u - 1] + f);
o.push(o[u - 1] + f * f);
}
t[0][u] = D(0, u, i, o);
n[0][u] = 0;
}
var h;
for (var v = 1; v < t.length; ++v) {
if (v < t.length - 1) {
h = v;
} else {
h = e - 1;
}
K(h, e - 1, v, t, n, i, o);
}
}
function B(r, t) {
if (t > r.length) {
throw new Error("cannot generate more classes than there are data values");
}
var n = h(r);
var e = Y(n);
if (e === 1) {
return [ n ];
}
var a = O(t, n.length);
var i = O(t, n.length);
j(n, a, i);
var o = [];
var u = i[0].length - 1;
for (var f = i.length - 1; f >= 0; f--) {
var v = i[f][u];
o[f] = n.slice(v, u + 1);
if (f > 0) {
u = v - 1;
}
}
return o;
}
function G(r, t, n) {
var e = r.length;
var a = [];
var i = n;
a[n] = r[r.length - 1];
while (i > 0) {
a[i - 1] = r[t[e][i] - 1];
e = t[e][i] - 1;
i--;
}
return a;
}
function H(r, t) {
var n = [];
var e = [];
var a;
var i;
var o = 0;
for (a = 0; a < r.length + 1; a++) {
var u = [];
var f = [];
for (i = 0; i < t + 1; i++) {
u.push(0);
f.push(0);
}
n.push(u);
e.push(f);
}
for (a = 1; a < t + 1; a++) {
n[1][a] = 1;
e[1][a] = 0;
for (i = 2; i < r.length + 1; i++) {
e[i][a] = Number.POSITIVE_INFINITY;
}
}
for (var h = 2; h < r.length + 1; h++) {
var v = 0;
var l = 0;
var s = 0;
var g = 0;
for (var c = 1; c < h + 1; c++) {
var p = h - c + 1;
var w = r[p - 1];
s++;
v += w;
l += w * w;
o = l - v * v / s;
g = p - 1;
if (g !== 0) {
for (i = 2; i < t + 1; i++) {
if (e[h][i] >= o + e[g][i - 1]) {
n[h][i] = p;
e[h][i] = o + e[g][i - 1];
}
}
}
}
n[h][1] = 1;
e[h][1] = o;
}
return {
lowerClassLimits: n,
varianceCombinations: e
};
}
function J(r, t) {
if (t > r.length) {
return null;
}
r = r.slice().sort((function(r, t) {
return r - t;
}));
var n = H(r, t);
var e = n.lowerClassLimits;
return G(r, e, t);
}
function Q(r, t) {
if (r.length < 2) {
return r;
}
var n = s(r);
var e = g(r);
var a = [ n ];
var i = (e - n) / t;
for (var o = 1; o < t; o++) {
a.push(a[0] + i * o);
}
a.push(e);
return a;
}
function R(r, t) {
if (r.length !== t.length) {
throw new Error("sampleCovariance requires samples with equal lengths");
}
if (r.length < 2) {
throw new Error("sampleCovariance requires at least two data points in each sample");
}
var n = e(r);
var a = e(t);
var i = 0;
for (var o = 0; o < r.length; o++) {
i += (r[o] - n) * (t[o] - a);
}
var u = r.length - 1;
return i / u;
}
function W(r) {
if (r.length < 2) {
throw new Error("sampleVariance requires at least two data points");
}
var t = a(r, 2);
var n = r.length - 1;
return t / n;
}
function Z(r) {
var t = W(r);
return Math.sqrt(t);
}
function $(r, t) {
var n = R(r, t);
var e = Z(r);
var a = Z(t);
return n / e / a;
}
function rr(r, t) {
var n = r.map((function(r, t) {
return [ r, t ];
})).sort((function(r, t) {
return r[0] - t[0];
})).map((function(r) {
return r[1];
}));
var e = t.map((function(r, t) {
return [ r, t ];
})).sort((function(r, t) {
return r[0] - t[0];
})).map((function(r) {
return r[1];
}));
var a = Array(n.length);
var i = Array(n.length);
for (var o = 0; o < n.length; o++) {
a[n[o]] = o;
i[e[o]] = o;
}
return $(a, i);
}
function tr(r) {
if (r.length < 3) {
throw new Error("sampleSkewness requires at least three data points");
}
var t = e(r);
var n;
var a = 0;
var i = 0;
for (var o = 0; o < r.length; o++) {
n = r[o] - t;
a += n * n;
i += n * n * n;
}
var u = r.length - 1;
var f = Math.sqrt(a / u);
var h = r.length;
var v = Math.pow(f, 3);
return h * i / ((h - 1) * (h - 2) * v);
}
function nr(r) {
var t = r.length;
if (t < 4) {
throw new Error("sampleKurtosis requires at least four data points");
}
var n = e(r);
var a;
var i = 0;
var o = 0;
for (var u = 0; u < t; u++) {
a = r[u] - n;
i += a * a;
o += a * a * a * a;
}
return (t - 1) / ((t - 2) * (t - 3)) * (t * (t + 1) * o / (i * i) - 3 * (t - 1));
}
function er(r) {
var t = new Array(r.length);
var n = [ r.slice() ];
for (var e = 0; e < r.length; e++) {
t[e] = 0;
}
for (var a = 0; a < r.length; ) {
if (t[a] < a) {
var i = 0;
if (a % 2 !== 0) {
i = t[a];
}
var o = r[i];
r[i] = r[a];
r[a] = o;
n.push(r.slice());
t[a]++;
a = 0;
} else {
t[a] = 0;
a++;
}
}
return n;
}
function ar(r, t) {
var n;
var e;
var a = [];
var i;
var o;
for (n = 0; n < r.length; n++) {
if (t === 1) {
a.push([ r[n] ]);
} else {
i = ar(r.slice(n + 1, r.length), t - 1);
for (e = 0; e < i.length; e++) {
o = i[e];
o.unshift(r[n]);
a.push(o);
}
}
}
return a;
}
function ir(r, t) {
var n = [];
for (var e = 0; e < r.length; e++) {
if (t === 1) {
n.push([ r[e] ]);
} else {
var a = ir(r.slice(e, r.length), t - 1);
for (var i = 0; i < a.length; i++) {
n.push([ r[e] ].concat(a[i]));
}
}
}
return n;
}
function or(r, t, n) {
return r + (n - r) / (t + 1);
}
function ur(r, t, n, e) {
return (r * t + n * e) / (t + e);
}
function fr(r, t, n, e, a, i) {
var o = ur(t, n, a, i);
return (n * (r + Math.pow(t - o, 2)) + i * (e + Math.pow(a - o, 2))) / (n + i);
}
function hr(r) {
if (r.length === 0) {
throw new Error("geometricMean requires at least one data point");
}
var t = 1;
for (var n = 0; n < r.length; n++) {
if (r[n] < 0) {
throw new Error("geometricMean requires only non-negative numbers as input");
}
t *= r[n];
}
return Math.pow(t, 1 / r.length);
}
function vr(r) {
if (r.length === 0) {
throw new Error("logAverage requires at least one data point");
}
var t = 0;
for (var n = 0; n < r.length; n++) {
if (r[n] < 0) {
throw new Error("logAverage requires only non-negative numbers as input");
}
t += Math.log(r[n]);
}
return Math.exp(t / r.length);
}
function lr(r) {
if (r.length === 0) {
throw new Error("harmonicMean requires at least one data point");
}
var t = 0;
for (var n = 0; n < r.length; n++) {
if (r[n] <= 0) {
throw new Error("harmonicMean requires only positive numbers as input");
}
t += 1 / r[n];
}
return r.length / t;
}
function sr(r) {
if (r.length === 0) {
throw new Error("meanSimple requires at least one data point");
}
return d(r) / r.length;
}
function gr(r) {
return b(r, .5);
}
function cr(r, t, n) {
return (r * t - n) / (t - 1);
}
function pr(r) {
if (r.length === 0) {
throw new Error("rootMeanSquare requires at least one data point");
}
var t = 0;
for (var n = 0; n < r.length; n++) {
t += Math.pow(r[n], 2);
}
return Math.sqrt(t / r.length);
}
function wr(r) {
return Z(r) / e(r);
}
function Mr(r, t) {
var n = e(r);
var a = o(r);
var i = Math.sqrt(r.length);
return (n - t) / (a / i);
}
function dr(r, t, n) {
var a = r.length;
var i = t.length;
if (!a || !i) {
return null;
}
if (!n) {
n = 0;
}
var o = e(r);
var u = e(t);
var f = W(r);
var h = W(t);
if (typeof o === "number" && typeof u === "number" && typeof f === "number" && typeof h === "number") {
var v = ((a - 1) * f + (i - 1) * h) / (a + i - 2);
return (o - u - n) / Math.sqrt(v * (1 / a + 1 / i));
}
}
function mr(r, t) {
if (!r.length || !t.length) {
throw new Error("Neither sample can be empty");
}
var n = r.map((function(r) {
return {
label: "x",
value: r
};
})).concat(t.map((function(r) {
return {
label: "y",
value: r
};
}))).sort((function(r, t) {
return r.value - t.value;
}));
for (var e = 0; e < n.length; e++) {
n[e].rank = e;
}
var a = [ n[0].rank ];
for (var i = 1; i < n.length; i++) {
if (n[i].value === n[i - 1].value) {
a.push(n[i].rank);
if (i === n.length - 1) {
o(n, a);
}
} else if (a.length > 1) {
o(n, a);
} else {
a = [ n[i].rank ];
}
}
function o(r, t) {
var n = (t[0] + t[t.length - 1]) / 2;
for (var e = 0; e < t.length; e++) {
r[t[e]].rank = n;
}
}
var u = 0;
for (var f = 0; f < n.length; f++) {
var h = n[f];
if (h.label === "x") {
u += h.rank + 1;
}
}
return u;
}
var br = function r() {
this.totalCount = 0;
this.data = {};
};
br.prototype.train = function r(t, n) {
if (!this.data[n]) {
this.data[n] = {};
}
for (var e in t) {
var a = t[e];
if (this.data[n][e] === undefined) {
this.data[n][e] = {};
}
if (this.data[n][e][a] === undefined) {
this.data[n][e][a] = 0;
}
this.data[n][e][a]++;
}
this.totalCount++;
};
br.prototype.score = function r(t) {
var n = {};
var e;
for (var a in t) {
var i = t[a];
for (e in this.data) {
n[e] = {};
if (this.data[e][a]) {
n[e][a + "_" + i] = (this.data[e][a][i] || 0) / this.totalCount;
} else {
n[e][a + "_" + i] = 0;
}
}
}
var o = {};
for (e in n) {
o[e] = 0;
for (var u in n[e]) {
o[e] += n[e][u];
}
}
return o;
};
var Er = function r() {
this.weights = [];
this.bias = 0;
};
Er.prototype.predict = function r(t) {
if (t.length !== this.weights.length) {
return null;
}
var n = 0;
for (var e = 0; e < this.weights.length; e++) {
n += this.weights[e] * t[e];
}
n += this.bias;
if (n > 0) {
return 1;
} else {
return 0;
}
};
Er.prototype.train = function r(t, n) {
if (n !== 0 && n !== 1) {
return null;
}
if (t.length !== this.weights.length) {
this.weights = t;
this.bias = 1;
}
var e = this.predict(t);
if (typeof e === "number" && e !== n) {
var a = n - e;
for (var i = 0; i < this.weights.length; i++) {
this.weights[i] += a * t[i];
}
this.bias += a;
}
return this;
};
var qr = 1e-4;
function yr(r) {
if (r < 0) {
throw new Error("factorial requires a non-negative value");
}
if (Math.floor(r) !== r) {
throw new Error("factorial requires an integer input");
}
var t = 1;
for (var n = 2; n <= r; n++) {
t *= n;
}
return t;
}
function Nr(r) {
if (Number.isInteger(r)) {
if (r <= 0) {
return Number.NaN;
} else {
return yr(r - 1);
}
}
r--;
if (r < 0) {
return Math.PI / (Math.sin(Math.PI * -r) * Nr(-r));
} else {
var t = Math.pow(r / Math.E, r) * Math.sqrt(2 * Math.PI * (r + 1 / 6));
var n = r + 1 / 4;
var e = 1 + 1 / 144 / Math.pow(n, 2) - 1 / 12960 / Math.pow(n, 3) - 257 / 207360 / Math.pow(n, 4) - 52 / 2612736 / Math.pow(n, 5) + 5741173 / 9405849600 / Math.pow(n, 6) + 37529 / 18811699200 / Math.pow(n, 7);
return t * e;
}
}
var Ir = [ .9999999999999971, 57.15623566586292, -59.59796035547549, 14.136097974741746, -.4919138160976202, 3399464998481189e-20, 4652362892704858e-20, -9837447530487956e-20, .0001580887032249125, -.00021026444172410488, .00021743961811521265, -.0001643181065367639, 8441822398385275e-20, -26190838401581408e-21, 36899182659531625e-22 ];
var xr = 607 / 128;
var Ar = Math.log(Math.sqrt(2 * Math.PI));
function kr(r) {
if (r <= 0) {
return Number.POSITIVE_INFINITY;
}
r--;
var t = Ir[0];
for (var n = 1; n < 15; n++) {
t += Ir[n] / (r + n);
}
var e = xr + .5 + r;
return Ar + Math.log(t) - e + (r + .5) * Math.log(e);
}
function Pr(r) {
if (r < 0 || r > 1) {
throw new Error("bernoulliDistribution requires probability to be between 0 and 1 inclusive");
}
return [ 1 - r, r ];
}
function _r(r, t) {
if (t < 0 || t > 1 || r <= 0 || r % 1 !== 0) {
return undefined;
}
var n = 0;
var e = 0;
var a = [];
var i = 1;
do {
a[n] = i * Math.pow(t, n) * Math.pow(1 - t, r - n);
e += a[n];
n++;
i = i * (r - n + 1) / n;
} while (e < 1 - qr);
return a;
}
function Cr(r) {
if (r <= 0) {
return undefined;
}
var t = 0;
var n = 0;
var e = [];
var a = 1;
do {
e[t] = Math.exp(-r) * Math.pow(r, t) / a;
n += e[t];
t++;
a *= t;
} while (n < 1 - qr);
return e;
}
var Tr = {
1: {
.995: 0,
.99: 0,
.975: 0,
.95: 0,
.9: .02,
.5: .45,
.1: 2.71,
.05: 3.84,
.025: 5.02,
.01: 6.63,
.005: 7.88
},
2: {
.995: .01,
.99: .02,
.975: .05,
.95: .1,
.9: .21,
.5: 1.39,
.1: 4.61,
.05: 5.99,
.025: 7.38,
.01: 9.21,
.005: 10.6
},
3: {
.995: .07,
.99: .11,
.975: .22,
.95: .35,
.9: .58,
.5: 2.37,
.1: 6.25,
.05: 7.81,
.025: 9.35,
.01: 11.34,
.005: 12.84
},
4: {
.995: .21,
.99: .3,
.975: .48,
.95: .71,
.9: 1.06,
.5: 3.36,
.1: 7.78,
.05: 9.49,
.025: 11.14,
.01: 13.28,
.005: 14.86
},
5: {
.995: .41,
.99: .55,
.975: .83,
.95: 1.15,
.9: 1.61,
.5: 4.35,
.1: 9.24,
.05: 11.07,
.025: 12.83,
.01: 15.09,
.005: 16.75
},
6: {
.995: .68,
.99: .87,
.975: 1.24,
.95: 1.64,
.9: 2.2,
.5: 5.35,
.1: 10.65,
.05: 12.59,
.025: 14.45,
.01: 16.81,
.005: 18.55
},
7: {
.995: .99,
.99: 1.25,
.975: 1.69,
.95: 2.17,
.9: 2.83,
.5: 6.35,
.1: 12.02,
.05: 14.07,
.025: 16.01,
.01: 18.48,
.005: 20.28
},
8: {
.995: 1.34,
.99: 1.65,
.975: 2.18,
.95: 2.73,
.9: 3.49,
.5: 7.34,
.1: 13.36,
.05: 15.51,
.025: 17.53,
.01: 20.09,
.005: 21.96
},
9: {
.995: 1.73,
.99: 2.09,
.975: 2.7,
.95: 3.33,
.9: 4.17,
.5: 8.34,
.1: 14.68,
.05: 16.92,
.025: 19.02,
.01: 21.67,
.005: 23.59
},
10: {
.995: 2.16,
.99: 2.56,
.975: 3.25,
.95: 3.94,
.9: 4.87,
.5: 9.34,
.1: 15.99,
.05: 18.31,
.025: 20.48,
.01: 23.21,
.005: 25.19
},
11: {
.995: 2.6,
.99: 3.05,
.975: 3.82,
.95: 4.57,
.9: 5.58,
.5: 10.34,
.1: 17.28,
.05: 19.68,
.025: 21.92,
.01: 24.72,
.005: 26.76
},
12: {
.995: 3.07,
.99: 3.57,
.975: 4.4,
.95: 5.23,
.9: 6.3,
.5: 11.34,
.1: 18.55,
.05: 21.03,
.025: 23.34,
.01: 26.22,
.005: 28.3
},
13: {
.995: 3.57,
.99: 4.11,
.975: 5.01,
.95: 5.89,
.9: 7.04,
.5: 12.34,
.1: 19.81,
.05: 22.36,
.025: 24.74,
.01: 27.69,
.005: 29.82
},
14: {
.995: 4.07,
.99: 4.66,
.975: 5.63,
.95: 6.57,
.9: 7.79,
.5: 13.34,
.1: 21.06,
.05: 23.68,
.025: 26.12,
.01: 29.14,
.005: 31.32
},
15: {
.995: 4.6,
.99: 5.23,
.975: 6.27,
.95: 7.26,
.9: 8.55,
.5: 14.34,
.1: 22.31,
.05: 25,
.025: 27.49,
.01: 30.58,
.005: 32.8
},
16: {
.995: 5.14,
.99: 5.81,
.975: 6.91,
.95: 7.96,
.9: 9.31,
.5: 15.34,
.1: 23.54,
.05: 26.3,
.025: 28.85,
.01: 32,
.005: 34.27
},
17: {
.995: 5.7,
.99: 6.41,
.975: 7.56,
.95: 8.67,
.9: 10.09,
.5: 16.34,
.1: 24.77,
.05: 27.59,
.025: 30.19,
.01: 33.41,
.005: 35.72
},
18: {
.995: 6.26,
.99: 7.01,
.975: 8.23,
.95: 9.39,
.9: 10.87,
.5: 17.34,
.1: 25.99,
.05: 28.87,
.025: 31.53,
.01: 34.81,
.005: 37.16
},
19: {
.995: 6.84,
.99: 7.63,
.975: 8.91,
.95: 10.12,
.9: 11.65,
.5: 18.34,
.1: 27.2,
.05: 30.14,
.025: 32.85,
.01: 36.19,
.005: 38.58
},
20: {
.995: 7.43,
.99: 8.26,
.975: 9.59,
.95: 10.85,
.9: 12.44,
.5: 19.34,
.1: 28.41,
.05: 31.41,
.025: 34.17,
.01: 37.57,
.005: 40
},
21: {
.995: 8.03,
.99: 8.9,
.975: 10.28,
.95: 11.59,
.9: 13.24,
.5: 20.34,
.1: 29.62,
.05: 32.67,
.025: 35.48,
.01: 38.93,
.005: 41.4
},
22: {
.995: 8.64,
.99: 9.54,
.975: 10.98,
.95: 12.34,
.9: 14.04,
.5: 21.34,
.1: 30.81,
.05: 33.92,
.025: 36.78,
.01: 40.29,
.005: 42.8
},
23: {
.995: 9.26,
.99: 10.2,
.975: 11.69,
.95: 13.09,
.9: 14.85,
.5: 22.34,
.1: 32.01,
.05: 35.17,
.025: 38.08,
.01: 41.64,
.005: 44.18
},
24: {
.995: 9.89,
.99: 10.86,
.975: 12.4,
.95: 13.85,
.9: 15.66,
.5: 23.34,
.1: 33.2,
.05: 36.42,
.025: 39.36,
.01: 42.98,
.005: 45.56
},
25: {
.995: 10.52,
.99: 11.52,
.975: 13.12,
.95: 14.61,
.9: 16.47,
.5: 24.34,
.1: 34.28,
.05: 37.65,
.025: 40.65,
.01: 44.31,
.005: 46.93
},
26: {
.995: 11.16,
.99: 12.2,
.975: 13.84,
.95: 15.38,
.9: 17.29,
.5: 25.34,
.1: 35.56,
.05: 38.89,
.025: 41.92,
.01: 45.64,
.005: 48.29
},
27: {
.995: 11.81,
.99: 12.88,
.975: 14.57,
.95: 16.15,
.9: 18.11,
.5: 26.34,
.1: 36.74,
.05: 40.11,
.025: 43.19,
.01: 46.96,
.005: 49.65
},
28: {
.995: 12.46,
.99: 13.57,
.975: 15.31,
.95: 16.93,
.9: 18.94,
.5: 27.34,
.1: 37.92,
.05: 41.34,
.025: 44.46,
.01: 48.28,
.005: 50.99
},
29: {
.995: 13.12,
.99: 14.26,
.975: 16.05,
.95: 17.71,
.9: 19.77,
.5: 28.34,
.1: 39.09,
.05: 42.56,
.025: 45.72,
.01: 49.59,
.005: 52.34
},
30: {
.995: 13.79,
.99: 14.95,
.975: 16.79,
.95: 18.49,
.9: 20.6,
.5: 29.34,
.1: 40.26,
.05: 43.77,
.025: 46.98,
.01: 50.89,
.005: 53.67
},
40: {
.995: 20.71,
.99: 22.16,
.975: 24.43,
.95: 26.51,
.9: 29.05,
.5: 39.34,
.1: 51.81,
.05: 55.76,
.025: 59.34,
.01: 63.69,
.005: 66.77
},
50: {
.995: 27.99,
.99: 29.71,
.975: 32.36,
.95: 34.76,
.9: 37.69,
.5: 49.33,
.1: 63.17,
.05: 67.5,
.025: 71.42,
.01: 76.15,
.005: 79.49
},
60: {
.995: 35.53,
.99: 37.48,
.975: 40.48,
.95: 43.19,
.9: 46.46,
.5: 59.33,
.1: 74.4,
.05: 79.08,
.025: 83.3,
.01: 88.38,
.005: 91.95
},
70: {
.995: 43.28,
.99: 45.44,
.975: 48.76,
.95: 51.74,
.9: 55.33,
.5: 69.33,
.1: 85.53,
.05: 90.53,
.025: 95.02,
.01: 100.42,
.005: 104.22
},
80: {
.995: 51.17,
.99: 53.54,
.975: 57.15,
.95: 60.39,
.9: 64.28,
.5: 79.33,
.1: 96.58,
.05: 101.88,
.025: 106.63,
.01: 112.33,
.005: 116.32
},
90: {
.995: 59.2,
.99: 61.75,
.975: 65.65,
.95: 69.13,
.9: 73.29,
.5: 89.33,
.1: 107.57,
.05: 113.14,
.025: 118.14,
.01: 124.12,
.005: 128.3
},
100: {
.995: 67.33,
.99: 70.06,
.975: 74.22,
.95: 77.93,
.9: 82.36,
.5: 99.33,
.1: 118.5,
.05: 124.34,
.025: 129.56,
.01: 135.81,
.005: 140.17
}
};
function Vr(r, t, n) {
var a = e(r);
var i = 0;
var o = 1;
var u = t(a);
var f = [];
var h = [];
for (var v = 0; v < r.length; v++) {
if (f[r[v]] === undefined) {
f[r[v]] = 0;
}
f[r[v]]++;
}
for (var l = 0; l < f.length; l++) {
if (f[l] === undefined) {
f[l] = 0;
}
}
for (var s in u) {
if (s in f) {
h[+s] = u[s] * r.length;
}
}
for (var g = h.length - 1; g >= 0; g--) {
if (h[g] < 3) {
h[g - 1] += h[g];
h.pop();
f[g - 1] += f[g];
f.pop();
}
}
for (var c = 0; c < f.length; c++) {
i += Math.pow(f[c] - h[c], 2) / h[c];
}
var p = f.length - o - 1;
return Tr[p][n] < i;
}
var Lr = Math.sqrt(2 * Math.PI);
var Sr = {
gaussian: function(r) {
return Math.exp(-.5 * r * r) / Lr;
}
};
var Ur = {
nrd: function(r) {
var t = Z(r);
var n = T(r);
if (typeof n === "number") {
t = Math.min(t, n / 1.34);
}
return 1.06 * t * Math.pow(r.length, -.2);
}
};
function zr(r, t, n) {
var e;
if (t === undefined) {
e = Sr.gaussian;
} else if (typeof t === "string") {
if (!Sr[t]) {
throw new Error('Unknown kernel "' + t + '"');
}
e = Sr[t];
} else {
e = t;
}
var a;
if (typeof n === "undefined") {
a = Ur.nrd(r);
} else if (typeof n === "string") {
if (!Ur[n]) {
throw new Error('Unknown bandwidth method "' + n + '"');
}
a = Ur[n](r);
} else {
a = n;
}
return function(t) {
var n = 0;
var i = 0;
for (n = 0; n < r.length; n++) {
i += e((t - r[n]) / a);
}
return i / a / r.length;
};
}
function Xr(r, t, n) {
return (r - t) / n;
}
var Fr = Math.sqrt(2 * Math.PI);
function Or(r) {
var t = r;
var n = r;
for (var e = 1; e < 15; e++) {
n *= r * r / (2 * e + 1);
t += n;
}
return Math.round((.5 + t / Fr * Math.exp(-r * r / 2)) * 1e4) / 1e4;
}
var Yr = [];
for (var Dr = 0; Dr <= 3.09; Dr += .01) {
Yr.push(Or(Dr));
}
function Kr(r) {
var t = Math.abs(r);
var n = Math.min(Math.round(t * 100), Yr.length - 1);
if (r >= 0) {
return Yr[n];
} else {
return Math.round((1 - Yr[n]) * 1e4) / 1e4;
}
}
function jr(r) {
return 1 / (Math.exp(-r) + 1);
}
function Br(r) {
var t = 1 / (1 + .5 * Math.abs(r));
var n = t * Math.exp(-r * r + ((((((((.17087277 * t - .82215223) * t + 1.48851587) * t - 1.13520398) * t + .27886807) * t - .18628806) * t + .09678418) * t + .37409196) * t + 1.00002368) * t - 1.26551223);
if (r >= 0) {
return 1 - n;
} else {
return n - 1;
}
}
function Gr(r) {
var t = 8 * (Math.PI - 3) / (3 * Math.PI * (4 - Math.PI));
var n = Math.sqrt(Math.sqrt(Math.pow(2 / (Math.PI * t) + Math.log(1 - r * r) / 2, 2) - Math.log(1 - r * r) / t) - (2 / (Math.PI * t) + Math.log(1 - r * r) / 2));
if (r >= 0) {
return n;
} else {
return -n;
}
}
function Hr(r) {
if (r === 0) {
r = qr;
} else if (r >= 1) {
r = 1 - qr;
}
return Math.sqrt(2) * Gr(2 * r - 1);
}
function Jr(r) {
if (r <= 0 || r >= 1) {
throw new Error("p must be strictly between zero and one");
}
return Math.log(r / (1 - r));
}
function Qr(r, t, n, a, i) {
if (a === undefined) {
a = 1e4;
}
if (n === undefined) {
n = "two_side";
}
if (n !== "two_side" && n !== "greater" && n !== "less") {
throw new Error("`alternative` must be either 'two_side', 'greater', or 'less'.");
}
var o = e(r);
var u = e(t);
var f = o - u;
var h = new Array(a);
var v = r.concat(t);
var l = Math.floor(v.length / 2);
for (var s = 0; s < a; s++) {
z(v, i);
var g = v.slice(0, l);
var c = v.slice(l, v.length);
var p = e(g) - e(c);
h[s] = p;
}
var w = 0;
if (n === "two_side") {
for (var M = 0; M <= a; M++) {
if (Math.abs(h[M]) >= Math.abs(f)) {
w += 1;
}
}
} else if (n === "greater") {
for (var d = 0; d <= a; d++) {
if (h[d] >= f) {
w += 1;
}
}
} else {
for (var m = 0; m <= a; m++) {
if (h[m] <= f) {
w += 1;
}
}
}
return w / a;
}
function Rr(r) {
if (typeof r === "number") {
if (r < 0) {
return -1;
} else if (r === 0) {
return 0;
} else {
return 1;
}
} else {
throw new TypeError("not a number");
}
}
function Wr(r, t, n, e, a) {
if (typeof r !== "function") {
throw new TypeError("func must be a function");
}
for (var i = 0; i < e; i++) {
var o = (t + n) / 2;
if (r(o) === 0 || Math.abs((n - t) / 2) < a) {
return o;
}
if (Rr(r(o)) === Rr(r(t))) {
t = o;
} else {
n = o;
}
}
throw new Error("maximum number of iterations exceeded");
}
function Zr(r, t) {
var n = 0;
for (var e = 0; e < r.length; e++) {
var a = r[e] - t[e];
n += a * a;
}
return Math.sqrt(n);
}
function $r(r, t, n) {
if (n === void 0) n = Math.random;
var e = null;
var a = F(r, t, n);
var i = null;
var o = Number.MAX_VALUE;
while (o !== 0) {
i = rt(r, a);
e = a;
a = tt(r, i, t);
o = nt(a, e);
}
return {
labels: i,
centroids: a
};
}
function rt(r, t) {
return r.map((function(r) {
var n = Number.MAX_VALUE;
var e = -1;
for (var a = 0; a < t.length; a++) {
var i = Zr(r, t[a]);
if (i < n) {
n = i;
e = a;
}
}
return e;
}));
}
function tt(r, t, n) {
var e = r[0].length;
var a = O(n, e);
var i = Array(n).fill(0);
var o = r.length;
for (var u = 0; u < o; u++) {
var f = r[u];
var h = t[u];
var v = a[h];
for (var l = 0; l < e; l++) {
v[l] += f[l];
}
i[h] += 1;
}
for (var s = 0; s < n; s++) {
if (i[s] === 0) {
throw new Error("Centroid " + s + " has no friends");
}
var g = a[s];
for (var c = 0; c < e; c++) {
g[c] /= i[s];
}
}
return a;
}
function nt(r, t) {
var n = 0;
for (var e = 0; e < r.length; e++) {
n += Zr(r[e], t[e]);
}
return n;
}
function et(r, t) {
if (r.length !== t.length) {
throw new Error("must have exactly as many labels as points");
}
var n = at(t);
var e = it(r);
var a = [];
for (var i = 0; i < r.length; i++) {
var o = 0;
if (n[t[i]].length > 1) {
var u = ut(i, n[t[i]], e);
var f = ot(i, t, n, e);
o = (f - u) / Math.max(u, f);
}
a.push(o);
}
return a;
}
function at(r) {
var t = 1 + g(r);
var n = Array(t);
for (var e = 0; e < r.length; e++) {
var a = r[e];
if (n[a] === undefined) {
n[a] = [];
}
n[a].push(e);
}
return n;
}
function it(r) {
var t = r.length;
var n = O(t, t);
for (var e = 0; e < t; e++) {
for (var a = 0; a < e; a++) {
n[e][a] = Zr(r[e], r[a]);
n[a][e] = n[e][a];
}
}
return n;
}
function ot(r, t, n, e) {
var a = t[r];
var i = Number.MAX_VALUE;
for (var o = 0; o < n.length; o++) {
if (o !== a) {
var u = ut(r, n[o], e);
if (u < i) {
i = u;
}
}
}
return i;
}
function ut(r, t, n) {
var e = 0;
for (var a = 0; a < t.length; a++) {
e += n[r][t[a]];
}
return e / t.length;
}
function ft(r, t) {
var n = et(r, t);
return g(n);
}
function ht(r, t) {
if (r === 0 && t === 0) {
return 0;
}
return Math.abs((r - t) / t);
}
function vt(r, t, n) {
if (n === void 0) n = qr;
return ht(r, t) <= n;
}
export { E as $, t as A, X as B, U as C, F as D, Pr as E, _r as F, Cr as G, Mr as H, dr as I, S as J, yr as K, Nr as L, vt as M, Wr as N, wr as O, ir as P, ar as Q, ur as R, fr as S, jr as T, c as U, kr as V, J as W, vr as X, Jr as Y, Hr as Z, C as _, g as a, cr as a0, e as b, or as c, v as d, qr as e, V as f, hr as g, lr as h, tr as i, W as j, o as k, Z as l, s as m, L as n, T as o, m as p, y as q, pr as r, n as s, a as t, $ as u, i as v, R as w, u as x, r as y, Xr as z };