UNPKG

lakutata

Version:

An IoC-based universal application framework.

1,142 lines (1,002 loc) 22.9 kB
/* Build Date: Mon Jan 05 2026 23:52:23 GMT+0800 (China Standard Time) */ "use strict"; function r(r) { var t; var e; var n = r.length; if (n === 1) { t = 0; e = r[0][1]; } else { var a = 0; var o = 0; var i = 0; var u = 0; var s; var h; var f; for (var l = 0; l < n; l++) { s = r[l]; h = s[0]; f = s[1]; a += h; o += f; i += h * h; u += h * f; } t = (n * u - a * o) / (n * i - a * a); e = o / n - t * a / n; } return { m: t, b: e }; } function t(r) { return function(t) { return r.b + r.m * t; }; } function e(r) { if (r.length === 0) { return 0; } var t = r[0]; var e = 0; var n; if (typeof t !== "number") { return Number.NaN; } for (var a = 1; a < r.length; a++) { if (typeof r[a] !== "number") { return Number.NaN; } n = t + r[a]; if (Math.abs(t) >= Math.abs(r[a])) { e += t - n + r[a]; } else { e += r[a] - n + t; } t = n; } return t + e; } function n(r) { if (r.length === 0) { throw new Error("mean requires at least one data point"); } return e(r) / r.length; } function a(r, t) { var e = n(r); var a = 0; var o; var i; if (t === 2) { for (i = 0; i < r.length; i++) { o = r[i] - e; a += o * o; } } else { for (i = 0; i < r.length; i++) { a += Math.pow(r[i] - e, t); } } return a; } function o(r) { if (r.length === 0) { throw new Error("variance requires at least one data point"); } return a(r, 2) / r.length; } function i(r) { if (r.length === 1) { return 0; } var t = o(r); return Math.sqrt(t); } function u(r, t) { if (r.length < 2) { return 1; } var e = 0; for (var n = 0; n < r.length; n++) { e += r[n][1]; } var a = e / r.length; var o = 0; for (var i = 0; i < r.length; i++) { o += Math.pow(a - r[i][1], 2); } var u = 0; for (var s = 0; s < r.length; s++) { u += Math.pow(r[s][1] - t(r[s][0]), 2); } return 1 - u / o; } function s(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 e = Number.NaN; var n = 0; var a = 1; for (var o = 1; o < r.length + 1; o++) { if (r[o] !== t) { if (a > n) { n = a; e = t; } a = 1; t = r[o]; } else { a++; } } return e; } function h(r) { return r.slice().sort(function(r, t) { return r - t; }); } function f(r) { return s(h(r)); } function l(r) { if (r.length === 0) { throw new Error("min requires at least one data point"); } var t = r[0]; for (var e = 1; e < r.length; e++) { if (r[e] < t) { t = r[e]; } } return t; } function v(r) { if (r.length === 0) { throw new Error("max requires at least one data point"); } var t = r[0]; for (var e = 1; e < r.length; e++) { if (r[e] > t) { t = r[e]; } } return t; } function p(r) { if (r.length === 0) { throw new Error("extent requires at least one data point"); } var t = r[0]; var e = r[0]; for (var n = 1; n < r.length; n++) { if (r[n] > e) { e = r[n]; } if (r[n] < t) { t = r[n]; } } return [ t, e ]; } function c(r) { var t = 1; for (var e = 0; e < r.length; e++) { t *= r[e]; } return t; } function g(r, t) { var e = 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 (e % 1 !== 0) { return r[Math.ceil(e) - 1]; } else if (r.length % 2 === 0) { return (r[e - 1] + r[e]) / 2; } else { return r[e]; } } function w(r, t, e, n) { e = e || 0; n = n || r.length - 1; while (n > e) { if (n - e > 600) { var a = n - e + 1; var o = t - e + 1; var i = Math.log(a); var u = .5 * Math.exp(2 * i / 3); var s = .5 * Math.sqrt(i * u * (a - u) / a); if (o - a / 2 < 0) { s *= -1; } var h = Math.max(e, Math.floor(t - o * u / a + s)); var f = Math.min(n, Math.floor(t + (a - o) * u / a + s)); w(r, t, h, f); } var l = r[t]; var v = e; var p = n; M(r, e, t); if (r[n] > l) { M(r, e, n); } while (v < p) { M(r, v, p); v++; p--; while (r[v] < l) { v++; } while (r[p] > l) { p--; } } if (r[e] === l) { M(r, e, p); } else { p++; M(r, p, n); } if (p <= t) { e = p + 1; } if (t <= p) { n = p - 1; } } } function M(r, t, e) { var n = r[t]; r[t] = r[e]; r[e] = n; } function m(r, t) { var e = r.slice(); if (Array.isArray(t)) { b(e, t); var n = []; for (var a = 0; a < t.length; a++) { n[a] = g(e, t[a]); } return n; } else { var o = q(e.length, t); x(e, o, 0, e.length - 1); return g(e, t); } } function x(r, t, e, n) { if (t % 1 === 0) { w(r, t, e, n); } else { t = Math.floor(t); w(r, t, e, n); w(r, t + 1, t + 1, n); } } function b(r, t) { var e = [ 0 ]; for (var n = 0; n < t.length; n++) { e.push(q(r.length, t[n])); } e.push(r.length - 1); e.sort(d); var a = [ 0, e.length - 1 ]; while (a.length) { var o = Math.ceil(a.pop()); var i = Math.floor(a.pop()); if (o - i <= 1) { continue; } var u = Math.floor((i + o) / 2); x(r, e[u], Math.floor(e[i]), Math.ceil(e[o])); a.push(i, u, u, o); } } function d(r, t) { return r - t; } function q(r, t) { var e = r * t; if (t === 1) { return r - 1; } else if (t === 0) { return 0; } else if (e % 1 !== 0) { return Math.ceil(e) - 1; } else if (r % 2 === 0) { return e - .5; } else { return e; } } function E(r, t) { if (t < r[0]) { return 0; } if (t > r[r.length - 1]) { return 1; } var e = y(r, t); if (r[e] !== t) { return e / r.length; } e++; var n = I(r, t); if (n === e) { return e / r.length; } var a = n - e + 1; var o = a * (n + e) / 2; var i = o / a; return i / r.length; } function y(r, t) { var e = 0; var n = 0; var a = r.length; while (n < a) { e = n + a >>> 1; if (t <= r[e]) { a = e; } else { n = -~e; } } return n; } function I(r, t) { var e = 0; var n = 0; var a = r.length; while (n < a) { e = n + a >>> 1; if (t >= r[e]) { n = -~e; } else { a = e; } } return n; } function N(r, t) { var e = h(r); return E(e, t); } function P(r) { var t = m(r, .75); var e = m(r, .25); if (typeof t === "number" && typeof e === "number") { return t - e; } } function S(r) { return +m(r, .5); } function C(r) { var t = S(r); var e = []; for (var n = 0; n < r.length; n++) { e.push(Math.abs(r[n] - t)); } return S(e); } function T(r, t) { var e = []; 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 n = 0; n < r.length; n += t) { e.push(r.slice(n, n + t)); } return e; } function k(r, t, e) { if (r.length === 0) { return []; } e = e || Math.random; var n = r.length; var a = []; for (var o = 0; o < t; o++) { var i = Math.floor(e() * n); a.push(r[i]); } return a; } function D(r, t) { t = t || Math.random; var e = r.length; var n; var a; while (e > 0) { a = Math.floor(t() * e--); n = r[e]; r[e] = r[a]; r[a] = n; } return r; } function A(r, t) { var e = r.slice(); return D(e, t); } function R(r, t, e) { var n = A(r, e); return n.slice(0, t); } function V(r, t, e) { var n = r.length; var a = []; var o = e; a[e] = r[r.length - 1]; while (o > 0) { a[o - 1] = r[t[n][o] - 1]; n = t[n][o] - 1; o--; } return a; } function z(r, t) { var e = []; var n = []; var a; var o; var i = 0; for (a = 0; a < r.length + 1; a++) { var u = []; var s = []; for (o = 0; o < t + 1; o++) { u.push(0); s.push(0); } e.push(u); n.push(s); } for (a = 1; a < t + 1; a++) { e[1][a] = 1; n[1][a] = 0; for (o = 2; o < r.length + 1; o++) { n[o][a] = Number.POSITIVE_INFINITY; } } for (var h = 2; h < r.length + 1; h++) { var f = 0; var l = 0; var v = 0; var p = 0; for (var c = 1; c < h + 1; c++) { var g = h - c + 1; var w = r[g - 1]; v++; f += w; l += w * w; i = l - f * f / v; p = g - 1; if (p !== 0) { for (o = 2; o < t + 1; o++) { if (n[h][o] >= i + n[p][o - 1]) { e[h][o] = g; n[h][o] = i + n[p][o - 1]; } } } } e[h][1] = 1; n[h][1] = i; } return { lowerClassLimits: e, varianceCombinations: n }; } function L(r, t) { if (t > r.length) { return null; } r = r.slice().sort(function(r, t) { return r - t; }); var e = z(r, t); var n = e.lowerClassLimits; return V(r, n, t); } function _(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 e = n(r); var a = n(t); var o = 0; for (var i = 0; i < r.length; i++) { o += (r[i] - e) * (t[i] - a); } var u = r.length - 1; return o / u; } function F(r) { if (r.length < 2) { throw new Error("sampleVariance requires at least two data points"); } var t = a(r, 2); var e = r.length - 1; return t / e; } function O(r) { var t = F(r); return Math.sqrt(t); } function Y(r, t) { var e = _(r, t); var n = O(r); var a = O(t); return e / n / a; } function j(r) { if (r.length < 3) { throw new Error("sampleSkewness requires at least three data points"); } var t = n(r); var e; var a = 0; var o = 0; for (var i = 0; i < r.length; i++) { e = r[i] - t; a += e * e; o += e * e * e; } var u = r.length - 1; var s = Math.sqrt(a / u); var h = r.length; var f = Math.pow(s, 3); return h * o / ((h - 1) * (h - 2) * f); } function W(r, t) { var e; var n; var a = []; var o; var i; for (e = 0; e < r.length; e++) { if (t === 1) { a.push([ r[e] ]); } else { o = W(r.slice(e + 1, r.length), t - 1); for (n = 0; n < o.length; n++) { i = o[n]; i.unshift(r[e]); a.push(i); } } } return a; } function B(r, t) { var e = []; for (var n = 0; n < r.length; n++) { if (t === 1) { e.push([ r[n] ]); } else { var a = B(r.slice(n, r.length), t - 1); for (var o = 0; o < a.length; o++) { e.push([ r[n] ].concat(a[o])); } } } return e; } function G(r, t, e) { return r + (e - r) / (t + 1); } function H(r, t, e, n) { return (r * t + e * n) / (t + n); } function J(r, t, e, n, a, o) { var i = H(t, e, a, o); return (e * (r + Math.pow(t - i, 2)) + o * (n + Math.pow(a - i, 2))) / (e + o); } function K(r) { if (r.length === 0) { throw new Error("geometricMean requires at least one data point"); } var t = 1; for (var e = 0; e < r.length; e++) { if (r[e] < 0) { throw new Error("geometricMean requires only non-negative numbers as input"); } t *= r[e]; } return Math.pow(t, 1 / r.length); } function Q(r) { if (r.length === 0) { throw new Error("logAverage requires at least one data point"); } var t = 0; for (var e = 0; e < r.length; e++) { if (r[e] < 0) { throw new Error("logAverage requires only non-negative numbers as input"); } t += Math.log(r[e]); } return Math.exp(t / r.length); } function U(r) { if (r.length === 0) { throw new Error("harmonicMean requires at least one data point"); } var t = 0; for (var e = 0; e < r.length; e++) { if (r[e] <= 0) { throw new Error("harmonicMean requires only positive numbers as input"); } t += 1 / r[e]; } return r.length / t; } function X(r, t, e) { return (r * t - e) / (t - 1); } function Z(r) { if (r.length === 0) { throw new Error("rootMeanSquare requires at least one data point"); } var t = 0; for (var e = 0; e < r.length; e++) { t += Math.pow(r[e], 2); } return Math.sqrt(t / r.length); } function $(r) { return O(r) / n(r); } function rr(r, t) { var e = n(r); var a = i(r); var o = Math.sqrt(r.length); return (e - t) / (a / o); } function tr(r, t, e) { var a = r.length; var o = t.length; if (!a || !o) { return null; } if (!e) { e = 0; } var i = n(r); var u = n(t); var s = F(r); var h = F(t); if (typeof i === "number" && typeof u === "number" && typeof s === "number" && typeof h === "number") { var f = ((a - 1) * s + (o - 1) * h) / (a + o - 2); return (i - u - e) / Math.sqrt(f * (1 / a + 1 / o)); } } var er = function r() { this.totalCount = 0; this.data = {}; }; er.prototype.train = function r(t, e) { if (!this.data[e]) { this.data[e] = {}; } for (var n in t) { var a = t[n]; if (this.data[e][n] === undefined) { this.data[e][n] = {}; } if (this.data[e][n][a] === undefined) { this.data[e][n][a] = 0; } this.data[e][n][a]++; } this.totalCount++; }; er.prototype.score = function r(t) { var e = {}; var n; for (var a in t) { var o = t[a]; for (n in this.data) { e[n] = {}; if (this.data[n][a]) { e[n][a + "_" + o] = (this.data[n][a][o] || 0) / this.totalCount; } else { e[n][a + "_" + o] = 0; } } } var i = {}; for (n in e) { i[n] = 0; for (var u in e[n]) { i[n] += e[n][u]; } } return i; }; var nr = function r() { this.weights = []; this.bias = 0; }; nr.prototype.predict = function r(t) { if (t.length !== this.weights.length) { return null; } var e = 0; for (var n = 0; n < this.weights.length; n++) { e += this.weights[n] * t[n]; } e += this.bias; if (e > 0) { return 1; } else { return 0; } }; nr.prototype.train = function r(t, e) { if (e !== 0 && e !== 1) { return null; } if (t.length !== this.weights.length) { this.weights = t; this.bias = 1; } var n = this.predict(t); if (typeof n === "number" && n !== e) { var a = e - n; for (var o = 0; o < this.weights.length; o++) { this.weights[o] += a * t[o]; } this.bias += a; } return this; }; exports.epsilon = 1e-4; function ar(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 e = 2; e <= r; e++) { t *= e; } return t; } function or(r) { if (Number.isInteger(r)) { if (r <= 0) { return Number.NaN; } else { return ar(r - 1); } } r--; if (r < 0) { return Math.PI / (Math.sin(Math.PI * -r) * or(-r)); } else { var t = Math.pow(r / Math.E, r) * Math.sqrt(2 * Math.PI * (r + 1 / 6)); var e = r + 1 / 4; var n = 1 + 1 / 144 / Math.pow(e, 2) - 1 / 12960 / Math.pow(e, 3) - 257 / 207360 / Math.pow(e, 4) - 52 / 2612736 / Math.pow(e, 5) + 5741173 / 9405849600 / Math.pow(e, 6) + 37529 / 18811699200 / Math.pow(e, 7); return t * n; } } 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 ur = 607 / 128; var sr = Math.log(Math.sqrt(2 * Math.PI)); function hr(r) { if (r <= 0) { return Number.POSITIVE_INFINITY; } r--; var t = ir[0]; for (var e = 1; e < 15; e++) { t += ir[e] / (r + e); } var n = ur + .5 + r; return sr + Math.log(t) - n + (r + .5) * Math.log(n); } function fr(r) { if (r < 0 || r > 1) { throw new Error("bernoulliDistribution requires probability to be between 0 and 1 inclusive"); } return [ 1 - r, r ]; } function lr(r, t) { if (t < 0 || t > 1 || r <= 0 || r % 1 !== 0) { return undefined; } var e = 0; var n = 0; var a = []; var o = 1; do { a[e] = o * Math.pow(t, e) * Math.pow(1 - t, r - e); n += a[e]; e++; o = o * (r - e + 1) / e; } while (n < 1 - exports.epsilon); return a; } function vr(r) { if (r <= 0) { return undefined; } var t = 0; var e = 0; var n = []; var a = 1; do { n[t] = Math.exp(-r) * Math.pow(r, t) / a; e += n[t]; t++; a *= t; } while (e < 1 - exports.epsilon); return n; } function pr(r, t, e) { return (r - t) / e; } var cr = Math.sqrt(2 * Math.PI); function gr(r) { var t = r; var e = r; for (var n = 1; n < 15; n++) { e *= r * r / (2 * n + 1); t += e; } return Math.round((.5 + t / cr * Math.exp(-r * r / 2)) * 1e4) / 1e4; } var wr = []; for (var Mr = 0; Mr <= 3.09; Mr += .01) { wr.push(gr(Mr)); } function mr(r) { return 1 / (Math.exp(-r) + 1); } function xr(r) { var t = 8 * (Math.PI - 3) / (3 * Math.PI * (4 - Math.PI)); var e = 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 e; } else { return -e; } } function br(r) { if (r === 0) { r = exports.epsilon; } else if (r >= 1) { r = 1 - exports.epsilon; } return Math.sqrt(2) * xr(2 * r - 1); } function dr(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) { 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 Er(r, t, e, n, a) { if (typeof r !== "function") { throw new TypeError("func must be a function"); } for (var o = 0; o < n; o++) { var i = (t + e) / 2; if (r(i) === 0 || Math.abs((e - t) / 2) < a) { return i; } if (qr(r(i)) === qr(r(t))) { t = i; } else { e = i; } } throw new Error("maximum number of iterations exceeded"); } function yr(r, t) { if (r === 0 && t === 0) { return 0; } return Math.abs((r - t) / t); } function Ir(r, t, e) { if (e === void 0) e = exports.epsilon; return yr(r, t) <= e; } exports.addToMean = G; exports.approxEqual = Ir; exports.bernoulliDistribution = fr; exports.binomialDistribution = lr; exports.bisect = Er; exports.chunk = T; exports.coefficientOfVariation = $; exports.combinations = W; exports.combinationsReplacement = B; exports.combineMeans = H; exports.combineVariances = J; exports.cumulativeStdLogisticProbability = mr; exports.extent = p; exports.factorial = ar; exports.gamma = or; exports.gammaln = hr; exports.geometricMean = K; exports.harmonicMean = U; exports.interquartileRange = P; exports.jenks = L; exports.linearRegression = r; exports.linearRegressionLine = t; exports.logAverage = Q; exports.logit = dr; exports.max = v; exports.mean = n; exports.median = S; exports.medianAbsoluteDeviation = C; exports.min = l; exports.mode = f; exports.poissonDistribution = vr; exports.probit = br; exports.product = c; exports.quantile = m; exports.quantileRank = N; exports.quickselect = w; exports.rSquared = u; exports.rootMeanSquare = Z; exports.sample = R; exports.sampleCorrelation = Y; exports.sampleCovariance = _; exports.sampleSkewness = j; exports.sampleStandardDeviation = O; exports.sampleVariance = F; exports.sampleWithReplacement = k; exports.shuffle = A; exports.standardDeviation = i; exports.subtractFromMean = X; exports.sum = e; exports.sumNthPowerDeviations = a; exports.tTest = rr; exports.tTestTwoSample = tr; exports.variance = o; exports.zScore = pr;