lakutata
Version:
An IoC-based universal application framework.
1,142 lines (1,002 loc) • 22.9 kB
JavaScript
/* 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;