@numero-uno-jpn/rstats 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/README.ja.md +36 -20
  3. package/README.md +34 -18
  4. package/THIRD_PARTY_NOTICES.md +25 -5
  5. package/dist/chunks/chunk-2JCIB5H2.js +2 -0
  6. package/dist/chunks/chunk-7JVSDGQQ.js +2 -0
  7. package/dist/chunks/chunk-7NK4SA6B.js +2 -0
  8. package/dist/chunks/chunk-AJYQNFXK.js +2 -0
  9. package/dist/chunks/chunk-DRNMIEYH.js +2 -0
  10. package/dist/chunks/chunk-NAYDS7CL.js +2 -0
  11. package/dist/chunks/chunk-NOCEAM44.js +2 -0
  12. package/dist/chunks/chunk-QNAIK4PY.js +2 -0
  13. package/dist/chunks/chunk-TPC6MTYC.js +2 -0
  14. package/dist/chunks/chunk-UGUQYWRQ.js +2 -0
  15. package/dist/chunks/chunk-XM2TVD63.js +2 -0
  16. package/dist/chunks/chunk-Y4IZV7XK.js +2 -0
  17. package/dist/chunks/chunk-ZWJ42QN6.js +2 -0
  18. package/dist/descriptive/basic.d.ts +73 -0
  19. package/dist/descriptive/basic.js +256 -0
  20. package/dist/descriptive/cov.d.ts +39 -0
  21. package/dist/descriptive/cov.js +105 -0
  22. package/dist/descriptive/hist.d.ts +64 -0
  23. package/dist/descriptive/hist.js +304 -0
  24. package/dist/descriptive/moments.d.ts +63 -0
  25. package/dist/descriptive/moments.js +158 -0
  26. package/dist/descriptive/quantile.d.ts +50 -0
  27. package/dist/descriptive/quantile.js +131 -0
  28. package/dist/descriptive/rank.d.ts +23 -0
  29. package/dist/descriptive/rank.js +72 -0
  30. package/dist/descriptive/table.d.ts +54 -0
  31. package/dist/descriptive/table.js +160 -0
  32. package/dist/descriptive.js +2 -0
  33. package/dist/distributions/arcsine.d.ts +24 -0
  34. package/dist/distributions/arcsine.js +73 -0
  35. package/dist/distributions/invgamma.d.ts +29 -0
  36. package/dist/distributions/invgamma.js +85 -0
  37. package/dist/distributions/kumaraswamy.d.ts +17 -0
  38. package/dist/distributions/kumaraswamy.js +96 -0
  39. package/dist/distributions/laplace.d.ts +23 -0
  40. package/dist/distributions/laplace.js +69 -0
  41. package/dist/distributions/multinomial.d.ts +24 -0
  42. package/dist/distributions/multinomial.js +70 -0
  43. package/dist/distributions/nbeta.js +28 -10
  44. package/dist/distributions/nchisq.js +20 -3
  45. package/dist/distributions/pareto.d.ts +23 -0
  46. package/dist/distributions/pareto.js +76 -0
  47. package/dist/distributions/summary.d.ts +25 -0
  48. package/dist/distributions/summary.js +289 -0
  49. package/dist/distributions/triangular.d.ts +25 -0
  50. package/dist/distributions/triangular.js +87 -0
  51. package/dist/distributions.js +2 -0
  52. package/dist/entries/descriptive.d.ts +7 -0
  53. package/dist/entries/descriptive.js +8 -0
  54. package/dist/entries/distributions.d.ts +41 -0
  55. package/dist/entries/distributions.js +41 -0
  56. package/dist/entries/linalg.d.ts +11 -0
  57. package/dist/entries/linalg.js +11 -0
  58. package/dist/entries/numerics.d.ts +8 -0
  59. package/dist/entries/numerics.js +6 -0
  60. package/dist/entries/special.d.ts +9 -0
  61. package/dist/entries/special.js +9 -0
  62. package/dist/entries/tests.d.ts +21 -0
  63. package/dist/entries/tests.js +20 -0
  64. package/dist/htest/ansariTest.d.ts +13 -0
  65. package/dist/htest/ansariTest.js +80 -0
  66. package/dist/htest/aov.d.ts +85 -0
  67. package/dist/htest/aov.js +178 -0
  68. package/dist/htest/binomTest.d.ts +36 -0
  69. package/dist/htest/binomTest.js +121 -0
  70. package/dist/htest/cor.d.ts +14 -0
  71. package/dist/htest/cor.js +4 -3
  72. package/dist/htest/core/ansari.d.ts +18 -0
  73. package/dist/htest/core/ansari.js +121 -0
  74. package/dist/htest/core/kolmogorov.d.ts +26 -0
  75. package/dist/htest/core/kolmogorov.js +221 -0
  76. package/dist/htest/core/mantelhaen.d.ts +26 -0
  77. package/dist/htest/core/mantelhaen.js +145 -0
  78. package/dist/htest/core/shapiro.d.ts +24 -0
  79. package/dist/htest/core/shapiro.js +142 -0
  80. package/dist/htest/core/smirnov.d.ts +20 -0
  81. package/dist/htest/core/smirnov.js +75 -0
  82. package/dist/htest/fisherTest.js +134 -120
  83. package/dist/htest/groups.d.ts +20 -0
  84. package/dist/htest/groups.js +62 -0
  85. package/dist/htest/ksTest.d.ts +31 -0
  86. package/dist/htest/ksTest.js +106 -0
  87. package/dist/htest/mantelhaenTest.d.ts +26 -0
  88. package/dist/htest/mantelhaenTest.js +196 -0
  89. package/dist/htest/mcnemarTest.d.ts +26 -0
  90. package/dist/htest/mcnemarTest.js +99 -0
  91. package/dist/htest/onewayTest.d.ts +26 -0
  92. package/dist/htest/onewayTest.js +97 -0
  93. package/dist/htest/pairwise.d.ts +64 -0
  94. package/dist/htest/pairwise.js +152 -0
  95. package/dist/htest/poissonTest.d.ts +35 -0
  96. package/dist/htest/poissonTest.js +170 -0
  97. package/dist/htest/propTest.d.ts +37 -0
  98. package/dist/htest/propTest.js +164 -0
  99. package/dist/htest/rankTests.d.ts +52 -0
  100. package/dist/htest/rankTests.js +234 -0
  101. package/dist/htest/types.d.ts +2 -0
  102. package/dist/htest/types.js +6 -0
  103. package/dist/htest/varTest.d.ts +48 -0
  104. package/dist/htest/varTest.js +118 -0
  105. package/dist/htest/wilcoxTest.js +136 -174
  106. package/dist/index.d.ts +6 -50
  107. package/dist/index.js +8 -50
  108. package/dist/integrate/quadpack.d.ts +29 -0
  109. package/dist/integrate/quadpack.js +525 -0
  110. package/dist/internal/seq.d.ts +5 -0
  111. package/dist/internal/seq.js +14 -0
  112. package/dist/internal/uniroot.js +10 -71
  113. package/dist/linalg/lu.d.ts +45 -0
  114. package/dist/linalg/lu.js +88 -0
  115. package/dist/linalg/ops.d.ts +90 -0
  116. package/dist/linalg/ops.js +320 -0
  117. package/dist/linalg.js +2 -0
  118. package/dist/models/lm.d.ts +98 -0
  119. package/dist/models/lm.js +187 -0
  120. package/dist/numerics/deriv.d.ts +37 -0
  121. package/dist/numerics/deriv.js +150 -0
  122. package/dist/numerics/integrate.d.ts +91 -0
  123. package/dist/numerics/integrate.js +264 -0
  124. package/dist/numerics/interp.d.ts +103 -0
  125. package/dist/numerics/interp.js +581 -0
  126. package/dist/numerics/ode.d.ts +23 -0
  127. package/dist/numerics/ode.js +59 -0
  128. package/dist/numerics.js +2 -0
  129. package/dist/optim/localmin.d.ts +16 -0
  130. package/dist/optim/localmin.js +97 -0
  131. package/dist/random/beta.js +1 -1
  132. package/dist/random/binomial.js +1 -1
  133. package/dist/random/continuous.js +1 -1
  134. package/dist/random/extra.d.ts +33 -0
  135. package/dist/random/extra.js +62 -0
  136. package/dist/random/gamma.js +1 -1
  137. package/dist/random/hyper.js +1 -1
  138. package/dist/random/mt.js +0 -1
  139. package/dist/random/poisson.js +0 -1
  140. package/dist/random/rank.js +1 -1
  141. package/dist/random/rng.js +1 -1
  142. package/dist/random/sample.js +1 -1
  143. package/dist/rstats.js +2 -2
  144. package/dist/special/besselIK.d.ts +38 -0
  145. package/dist/special/besselIK.js +315 -0
  146. package/dist/special/besselJY.d.ts +32 -0
  147. package/dist/special/besselJY.js +508 -0
  148. package/dist/special/besselSeries.d.ts +8 -0
  149. package/dist/special/besselSeries.js +24 -0
  150. package/dist/special/beta.js +22 -5
  151. package/dist/special/choose.d.ts +75 -0
  152. package/dist/special/choose.js +233 -0
  153. package/dist/special/erf.d.ts +28 -2
  154. package/dist/special/erf.js +37 -10
  155. package/dist/special/extra.d.ts +47 -0
  156. package/dist/special/extra.js +220 -0
  157. package/dist/special/igam.d.ts +4 -0
  158. package/dist/special/igam.js +57 -2
  159. package/dist/special/incbet.js +77 -22
  160. package/dist/special/lgammaDiff.d.ts +7 -0
  161. package/dist/special/lgammaDiff.js +16 -3
  162. package/dist/special/psigamma.d.ts +48 -0
  163. package/dist/special/psigamma.js +318 -0
  164. package/dist/special/rCompatible.d.ts +8 -0
  165. package/dist/special/rCompatible.js +1 -0
  166. package/dist/special.js +2 -0
  167. package/dist/tests.js +2 -0
  168. package/package.json +26 -1
@@ -0,0 +1,289 @@
1
+ // Summaries of a distribution: mean, variance, standard deviation, median, mode, skewness and excess kurtosis.
2
+ //
3
+ // Written for rStats.js from the textbook closed forms (no ported code). Conventions: a moment that does not exist
4
+ // is NaN (the Cauchy mean; the variance when the mean is infinite), an infinite one is Infinity (the variance of t
5
+ // with 1 < df <= 2, the mean of a Pareto with a <= 1); the skewness and kurtosis of the heavy-tailed invgamma,
6
+ // pareto and F distributions are NaN where they are undefined. The median is q(0.5) (for a discrete distribution
7
+ // the smallest x with F(x) >= 1/2). The mode is the maximum of the density: NaN when it is not unique (uniform,
8
+ // beta(1, 1), beta with both shapes below 1, arcsine), the larger of two adjacent maxima of a discrete
9
+ // distribution, and the end point where the density diverges (gamma with shape < 1).
10
+ import { dqagie, dqagse } from "../integrate/quadpack.js";
11
+ import { ddAdd, ddMul, ddSub } from "../special/dd.js";
12
+ import { gamma as gammaFn } from "../special/gamma.js";
13
+ import { lbeta } from "../special/beta.js";
14
+ import { qgamma } from "./gamma.js";
15
+ import { qchisq } from "./chisq.js";
16
+ import { qbeta } from "./beta.js";
17
+ import { qf } from "./f.js";
18
+ import { dweibull1, qweibull } from "./weibull.js";
19
+ import { qbinom } from "./binomial.js";
20
+ import { qpois } from "./poisson.js";
21
+ import { qgeom } from "./geometric.js";
22
+ import { qnbinom } from "./negbinomial.js";
23
+ import { qhyper } from "./hypergeometric.js";
24
+ import { qinvgamma } from "./invgamma.js";
25
+ import { dkumar1, pkumar1, qkumar, qkumar1 } from "./kumaraswamy.js";
26
+ import { qtriang } from "./triangular.js";
27
+ import { qarcsine } from "./arcsine.js";
28
+ const NAN = { mean: NaN, variance: NaN, sd: NaN, median: NaN, mode: NaN, skewness: NaN, kurtosis: NaN };
29
+ function make(mean, variance, median, mode, skewness, kurtosis) {
30
+ return { mean, variance, sd: Math.sqrt(variance), median, mode, skewness, kurtosis };
31
+ }
32
+ /**
33
+ * Variance, skewness and excess kurtosis from the central moments E[(X - mean)^n], integrated numerically from the
34
+ * density on each side of the mean (no cancellation inside either part): the textbook route through the raw moments
35
+ * cancels badly when the spread is small against the mean (Weibull with a large shape loses 9 digits of the kurtosis
36
+ * that way)
37
+ */
38
+ function shape(f, mean, lower, upper) {
39
+ return central((t) => t, f, mean, mean, lower, upper);
40
+ }
41
+ /** shape() over t: x(t) with weight w(t), the integral split at t = split where x = mean */
42
+ function central(x, w, mean, split, lower, upper) {
43
+ const tol = 50 * Number.EPSILON;
44
+ const c = [2, 3, 4].map((n) => {
45
+ const g = (t) => (x(t) - mean) ** n * w(t);
46
+ const left = dqagse(g, lower, split, 0, tol, 200).result;
47
+ const right = upper === Infinity ? dqagie(g, split, 1, 0, tol, 200).result : dqagse(g, split, upper, 0, tol, 200).result;
48
+ return left + right;
49
+ });
50
+ const v = c[0];
51
+ return { variance: v, skewness: c[1] / v ** 1.5, kurtosis: c[2] / (v * v) - 3 };
52
+ }
53
+ /** floor(a b) of the exact product (a b rounded to double may cross an integer) */
54
+ function floorProduct(a, b) {
55
+ const [h, l] = ddMul([a, 0], [b, 0]);
56
+ const f = Math.floor(h);
57
+ return h === f && l < 0 ? f - 1 : f;
58
+ }
59
+ /** Whether a b <= c exactly (a, b, c doubles) */
60
+ function productAtMost(a, b, c) {
61
+ const d = ddSub(ddMul(a, [b, 0]), [c, 0]);
62
+ return d[0] + d[1] <= 0;
63
+ }
64
+ const has = (o, k) => o[k] !== undefined;
65
+ /**
66
+ * Mean, variance, standard deviation, median, mode, skewness and excess kurtosis of a distribution, given by the
67
+ * name of its d/p/q/r functions and their parameters (with the same names and defaults; `gamma` takes `rate` or
68
+ * `scale`, `nbinom` takes `prob` or `mu`). Invalid parameters give NaN throughout.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * distSummary("gamma", { shape: 2.5, rate: 2 }); // { mean: 1.25, variance: 0.625, ..., mode: 0.75, kurtosis: 2.4 }
73
+ * distSummary("binom", { size: 9, prob: 0.5 }).mode; // 5 (4 and 5 are equally likely: the larger)
74
+ * ```
75
+ */
76
+ export function distSummary(distribution, params = {}) {
77
+ const P = params;
78
+ switch (distribution) {
79
+ case "norm": {
80
+ const { mean = 0, sd = 1 } = P;
81
+ if (!(Number.isFinite(mean) && sd > 0 && Number.isFinite(sd)))
82
+ return NAN;
83
+ return make(mean, sd * sd, mean, mean, 0, 0);
84
+ }
85
+ case "lnorm": {
86
+ const { meanlog = 0, sdlog = 1 } = P;
87
+ if (!(Number.isFinite(meanlog) && sdlog > 0 && Number.isFinite(sdlog)))
88
+ return NAN;
89
+ const s2 = sdlog * sdlog;
90
+ const em1 = Math.expm1(s2);
91
+ const w = Math.exp(s2);
92
+ return make(Math.exp(meanlog + s2 / 2), em1 * Math.exp(2 * meanlog + s2), Math.exp(meanlog), Math.exp(meanlog - s2), (w + 2) * Math.sqrt(em1),
93
+ // w^4 + 2 w^3 + 3 w^2 - 6 with w = 1 + em1, expanded in em1 (the w form cancels for small sdlog)
94
+ em1 * (16 + em1 * (15 + em1 * (6 + em1))));
95
+ }
96
+ case "unif": {
97
+ const { min = 0, max = 1 } = P;
98
+ if (!(Number.isFinite(min) && Number.isFinite(max) && min < max))
99
+ return NAN;
100
+ const m = min + (max - min) / 2;
101
+ return make(m, (max - min) ** 2 / 12, m, NaN, 0, -1.2);
102
+ }
103
+ case "exp": {
104
+ const { rate = 1 } = P;
105
+ if (!(rate > 0 && Number.isFinite(rate)))
106
+ return NAN;
107
+ return make(1 / rate, 1 / (rate * rate), Math.LN2 / rate, 0, 2, 6);
108
+ }
109
+ case "gamma": {
110
+ const k = P.shape ?? NaN;
111
+ const scale = has(P, "scale") ? P.scale : 1 / (P.rate ?? 1);
112
+ if (!(k > 0 && Number.isFinite(k) && scale > 0 && Number.isFinite(scale)))
113
+ return NAN;
114
+ return make(k * scale, k * scale * scale, qgamma(0.5, k, { scale }), k >= 1 ? (k - 1) * scale : 0, 2 / Math.sqrt(k), 6 / k);
115
+ }
116
+ case "chisq": {
117
+ const df = P.df ?? NaN;
118
+ if (!(df > 0 && Number.isFinite(df)))
119
+ return NAN;
120
+ return make(df, 2 * df, qchisq(0.5, df), Math.max(df - 2, 0), Math.sqrt(8 / df), 12 / df);
121
+ }
122
+ case "beta": {
123
+ const a = P.shape1 ?? NaN;
124
+ const b = P.shape2 ?? NaN;
125
+ if (!(a > 0 && b > 0 && Number.isFinite(a) && Number.isFinite(b)))
126
+ return NAN;
127
+ const s = a + b;
128
+ let mode;
129
+ if (a > 1 && b > 1)
130
+ mode = (a - 1) / (s - 2);
131
+ else if ((a === 1 && b === 1) || (a < 1 && b < 1))
132
+ mode = NaN;
133
+ else
134
+ mode = a <= 1 && b >= 1 ? 0 : 1;
135
+ return make(a / s, (a * b) / (s * s * (s + 1)), qbeta(0.5, a, b), mode, (2 * (b - a) * Math.sqrt(s + 1)) / ((s + 2) * Math.sqrt(a * b)), (6 * ((a - b) ** 2 * (s + 1) - a * b * (s + 2))) / (a * b * (s + 2) * (s + 3)));
136
+ }
137
+ case "t": {
138
+ const df = P.df ?? NaN;
139
+ if (!(df > 0))
140
+ return NAN;
141
+ const variance = df > 2 ? (df === Infinity ? 1 : df / (df - 2)) : df > 1 ? Infinity : NaN;
142
+ const kurtosis = df > 4 ? (df === Infinity ? 0 : 6 / (df - 4)) : df > 2 ? Infinity : NaN;
143
+ return make(df > 1 ? 0 : NaN, variance, 0, 0, df > 3 ? 0 : NaN, kurtosis);
144
+ }
145
+ case "f": {
146
+ const d1 = P.df1 ?? NaN;
147
+ const d2 = P.df2 ?? NaN;
148
+ if (!(d1 > 0 && d2 > 0 && Number.isFinite(d1) && Number.isFinite(d2)))
149
+ return NAN;
150
+ const mean = d2 > 2 ? d2 / (d2 - 2) : NaN;
151
+ const variance = d2 > 4 ? (2 * d2 * d2 * (d1 + d2 - 2)) / (d1 * (d2 - 2) ** 2 * (d2 - 4)) : d2 > 2 ? Infinity : NaN;
152
+ const skewness = d2 > 6 ? ((2 * d1 + d2 - 2) * Math.sqrt(8 * (d2 - 4))) / ((d2 - 6) * Math.sqrt(d1 * (d1 + d2 - 2))) : NaN;
153
+ const kurtosis = d2 > 8
154
+ ? (12 * (d1 * (5 * d2 - 22) * (d1 + d2 - 2) + (d2 - 4) * (d2 - 2) ** 2)) / (d1 * (d2 - 6) * (d2 - 8) * (d1 + d2 - 2))
155
+ : NaN;
156
+ return make(mean, variance, qf(0.5, d1, d2), d1 > 2 ? ((d1 - 2) / d1) * (d2 / (d2 + 2)) : 0, skewness, kurtosis);
157
+ }
158
+ case "cauchy": {
159
+ const { location = 0, scale = 1 } = P;
160
+ if (!(Number.isFinite(location) && scale > 0 && Number.isFinite(scale)))
161
+ return NAN;
162
+ return make(NaN, NaN, location, location, NaN, NaN);
163
+ }
164
+ case "weibull": {
165
+ const k = P.shape ?? NaN;
166
+ const lam = P.scale ?? 1;
167
+ if (!(k > 0 && Number.isFinite(k) && lam > 0 && Number.isFinite(lam)))
168
+ return NAN;
169
+ const mean = gammaFn(1 + 1 / k);
170
+ const s = shape((x) => dweibull1(x, k, 1, false), mean, 0, Infinity);
171
+ return make(lam * mean, lam * lam * s.variance, qweibull(0.5, k, { scale: lam }), k > 1 ? lam * Math.pow((k - 1) / k, 1 / k) : 0, s.skewness, s.kurtosis);
172
+ }
173
+ case "logis": {
174
+ const { location = 0, scale = 1 } = P;
175
+ if (!(Number.isFinite(location) && scale > 0 && Number.isFinite(scale)))
176
+ return NAN;
177
+ return make(location, (scale * scale * Math.PI * Math.PI) / 3, location, location, 0, 1.2);
178
+ }
179
+ case "binom": {
180
+ const n = P.size ?? NaN;
181
+ const p = P.prob ?? NaN;
182
+ if (!(Number.isInteger(n) && n >= 0 && p >= 0 && p <= 1))
183
+ return NAN;
184
+ const q = 1 - p;
185
+ // P(x) >= P(x - 1) exactly when x <= (n + 1) p
186
+ return make(n * p, n * p * q, qbinom(0.5, n, p), Math.min(n, floorProduct(n + 1, p)), (q - p) / Math.sqrt(n * p * q), (1 - 6 * p * q) / (n * p * q));
187
+ }
188
+ case "pois": {
189
+ const lambda = P.lambda ?? NaN;
190
+ if (!(lambda > 0 && Number.isFinite(lambda)))
191
+ return NAN;
192
+ return make(lambda, lambda, qpois(0.5, lambda), Math.floor(lambda), 1 / Math.sqrt(lambda), 1 / lambda);
193
+ }
194
+ case "geom": {
195
+ const p = P.prob ?? NaN;
196
+ if (!(p > 0 && p <= 1))
197
+ return NAN;
198
+ const q = 1 - p;
199
+ return make(q / p, q / (p * p), qgeom(0.5, p), 0, (2 - p) / Math.sqrt(q), 6 + (p * p) / q);
200
+ }
201
+ case "nbinom": {
202
+ const r = P.size ?? NaN;
203
+ if (!(r > 0 && Number.isFinite(r)))
204
+ return NAN;
205
+ const p = has(P, "mu") ? r / (r + P.mu) : (P.prob ?? NaN);
206
+ if (!(p > 0 && p <= 1))
207
+ return NAN;
208
+ const q = 1 - p;
209
+ const opts = has(P, "mu") ? { mu: P.mu } : { prob: p };
210
+ // P(x) >= P(x - 1) exactly when x p <= (r - 1)(1 - p), i.e. (x + r - 1) p <= r - 1 (with mu: x r <= (r - 1) mu)
211
+ const ok = (x) => has(P, "mu") ? productAtMost([x, 0], r, (r - 1) * P.mu) : productAtMost(ddAdd([r - 1, 0], [x, 0]), p, r - 1);
212
+ let mode = 0;
213
+ if (r > 1) {
214
+ mode = Math.max(0, Math.floor(((r - 1) * q) / p) - 1);
215
+ while (ok(mode + 1))
216
+ mode++;
217
+ while (mode > 0 && !ok(mode))
218
+ mode--;
219
+ }
220
+ return make((r * q) / p, (r * q) / (p * p), qnbinom(0.5, r, opts), mode, (2 - p) / Math.sqrt(r * q), 6 / r + (p * p) / (r * q));
221
+ }
222
+ case "hyper": {
223
+ const m = P.m ?? NaN;
224
+ const n = P.n ?? NaN;
225
+ const k = P.k ?? NaN;
226
+ if (!([m, n, k].every((v) => Number.isInteger(v) && v >= 0) && k <= m + n))
227
+ return NAN;
228
+ const N = m + n;
229
+ const mo = Math.floor(((k + 1) * (m + 1)) / (N + 2));
230
+ const kurt = ((N - 1) * N * N * (N * (N + 1) - 6 * m * n - 6 * k * (N - k)) + 6 * k * m * n * (N - k) * (5 * N - 6)) /
231
+ (k * m * n * (N - k) * (N - 2) * (N - 3));
232
+ return make((k * m) / N, (((k * m) / N) * (n / N) * (N - k)) / (N - 1), qhyper(0.5, m, n, k), mo, ((N - 2 * m) * Math.sqrt(N - 1) * (N - 2 * k)) / (Math.sqrt(k * m * n * (N - k)) * (N - 2)), kurt);
233
+ }
234
+ case "invgamma": {
235
+ const a = P.alpha ?? NaN;
236
+ const b = P.beta ?? 1;
237
+ if (!(a > 0 && Number.isFinite(a) && b > 0 && Number.isFinite(b)))
238
+ return NAN;
239
+ return make(a > 1 ? b / (a - 1) : Infinity, a > 2 ? (b * b) / ((a - 1) ** 2 * (a - 2)) : a > 1 ? Infinity : NaN, qinvgamma(0.5, a, { beta: b }), b / (a + 1), a > 3 ? (4 * Math.sqrt(a - 2)) / (a - 3) : NaN, a > 4 ? (30 * a - 66) / ((a - 3) * (a - 4)) : NaN);
240
+ }
241
+ case "kumar": {
242
+ const a = P.a ?? NaN;
243
+ const b = P.b ?? NaN;
244
+ if (!(a > 0 && b > 0 && Number.isFinite(a) && Number.isFinite(b)))
245
+ return NAN;
246
+ // mean b B(1 + 1/a, b)
247
+ const mean = b * Math.exp(lbeta(1 + 1 / a, b));
248
+ // over the density, or over u = F(x) when the density diverges at 1 (b < 1: there the quantile is smooth)
249
+ const s = b < 1
250
+ ? central((u) => qkumar1(u, a, b, true, false), () => 1, mean, pkumar1(mean, a, b, true, false), 0, 1)
251
+ : shape((x) => dkumar1(x, a, b, false), mean, 0, 1);
252
+ let mode;
253
+ if (a >= 1 && b >= 1)
254
+ mode = a === 1 && b === 1 ? NaN : Math.pow((a - 1) / (a * b - 1), 1 / a);
255
+ else if (a < 1 && b < 1)
256
+ mode = NaN;
257
+ else
258
+ mode = a < 1 ? 0 : 1;
259
+ return make(mean, s.variance, qkumar(0.5, a, b), mode, s.skewness, s.kurtosis);
260
+ }
261
+ case "pareto": {
262
+ const { a = 1, b = 1 } = P;
263
+ if (!(a > 0 && Number.isFinite(a) && b > 0 && Number.isFinite(b)))
264
+ return NAN;
265
+ return make(a > 1 ? (a * b) / (a - 1) : Infinity, a > 2 ? (b * b * a) / ((a - 1) ** 2 * (a - 2)) : a > 1 ? Infinity : NaN, b * Math.pow(2, 1 / a), b, a > 3 ? ((2 * (1 + a)) / (a - 3)) * Math.sqrt((a - 2) / a) : NaN, a > 4 ? (6 * (a ** 3 + a * a - 6 * a - 2)) / (a * (a - 3) * (a - 4)) : NaN);
266
+ }
267
+ case "triang": {
268
+ const { a = -1, b = 1 } = P;
269
+ const c = P.c ?? (a + b) / 2;
270
+ if (!(Number.isFinite(a) && Number.isFinite(b) && a < b && a <= c && c <= b))
271
+ return NAN;
272
+ const q = a * a + b * b + c * c - a * b - a * c - b * c;
273
+ return make((a + b + c) / 3, q / 18, qtriang(0.5, { a, b, c }), c, (Math.SQRT2 * (a + b - 2 * c) * (2 * a - b - c) * (a - 2 * b + c)) / (5 * q ** 1.5), -0.6);
274
+ }
275
+ case "laplace": {
276
+ const { mu = 0, sigma = 1 } = P;
277
+ if (!(Number.isFinite(mu) && sigma > 0 && Number.isFinite(sigma)))
278
+ return NAN;
279
+ return make(mu, 2 * sigma * sigma, mu, mu, 0, 3);
280
+ }
281
+ case "arcsine": {
282
+ const { a = 0, b = 1 } = P;
283
+ if (!(Number.isFinite(a) && Number.isFinite(b) && a < b))
284
+ return NAN;
285
+ return make(a + (b - a) / 2, (b - a) ** 2 / 8, qarcsine(0.5, { a, b }), NaN, 0, -1.5);
286
+ }
287
+ }
288
+ throw new RangeError(`unknown distribution '${String(distribution)}'`);
289
+ }
@@ -0,0 +1,25 @@
1
+ import { type Vectorizable, type VectorResult } from "../internal/vectorize.js";
2
+ import { type DensityOptions, type TailOptions } from "../internal/dpq.js";
3
+ /** Limits and mode of the triangular distribution. */
4
+ export interface TriangParams {
5
+ /** Minimum. Default `-1`. */
6
+ a?: number;
7
+ /** Maximum. Default `1`. */
8
+ b?: number;
9
+ /** Mode. Default `(a + b) / 2`. */
10
+ c?: number;
11
+ }
12
+ export declare function dtriang1(x: number, a: number, b: number, c: number, log: boolean): number;
13
+ export declare function ptriang1(q: number, a: number, b: number, c: number, lowerTail: boolean, logP: boolean): number;
14
+ export declare function qtriang1(p: number, a: number, b: number, c: number, lowerTail: boolean, logP: boolean): number;
15
+ /**
16
+ * Density of the triangular distribution. Equivalent to `extraDistr::dtriang(x, a = -1, b = 1, c = (a + b)/2, log = FALSE)`.
17
+ *
18
+ * @param x - Value(s) at which to evaluate: a number, `number[]` or `Float64Array`. The result has the same shape.
19
+ * @param options - `a`, `b` and `c` (see {@link TriangParams}) and `log` (see {@link DensityOptions}).
20
+ */
21
+ export declare function dtriang<T extends Vectorizable>(x: T, options?: TriangParams & DensityOptions): VectorResult<T>;
22
+ /** Distribution function of the triangular distribution. Equivalent to `extraDistr::ptriang(q, a, b, c, lower.tail, log.p)`. */
23
+ export declare function ptriang<T extends Vectorizable>(q: T, options?: TriangParams & TailOptions): VectorResult<T>;
24
+ /** Quantile function of the triangular distribution. Equivalent to `extraDistr::qtriang(p, a, b, c, lower.tail, log.p)`. */
25
+ export declare function qtriang<T extends Vectorizable>(p: T, options?: TriangParams & TailOptions): VectorResult<T>;
@@ -0,0 +1,87 @@
1
+ // Triangular distribution dtriang / ptriang / qtriang (extraDistr's names: minimum a, maximum b, mode c).
2
+ //
3
+ // Written for rStats.js (no ported code). With w = b - a:
4
+ // f(x) = 2 (x - a) / (w (c - a)) left of c, 2 (b - x) / (w (b - c)) right of it;
5
+ // P[X <= x] = (x - a)^2 / (w (c - a)) left of c, P[X > x] = (b - x)^2 / (w (b - c)) right of it.
6
+ // Each tail is computed from its own end, and the quantile from the tail it falls in.
7
+ import { vectorize } from "../internal/vectorize.js";
8
+ import { d0, dt0, dt1, quantileBoundaries } from "../internal/dpq.js";
9
+ const valid = (a, b, c) => Number.isFinite(a) && Number.isFinite(b) && a < b && a <= c && c <= b;
10
+ export function dtriang1(x, a, b, c, log) {
11
+ if (Number.isNaN(x) || !valid(a, b, c))
12
+ return NaN;
13
+ if (x < a || x > b)
14
+ return d0(log);
15
+ const w = b - a;
16
+ if (x === c)
17
+ return log ? Math.log(2 / w) : 2 / w;
18
+ // the density is (2 / w) (1 - r), r the fraction of the way from the mode to the end on x's side; near the mode
19
+ // 1 - r from r (x - c is exact there), elsewhere from the distance to the end
20
+ const r = x < c ? (c - x) / (c - a) : (x - c) / (b - c);
21
+ if (r < 0.5)
22
+ return log ? Math.log(2 / w) + Math.log1p(-r) : (2 / w) * (1 - r);
23
+ const d = x < c ? (2 * (x - a)) / (w * (c - a)) : (2 * (b - x)) / (w * (b - c));
24
+ return log ? Math.log(d) : d;
25
+ }
26
+ export function ptriang1(q, a, b, c, lowerTail, logP) {
27
+ if (Number.isNaN(q) || !valid(a, b, c))
28
+ return NaN;
29
+ if (q <= a)
30
+ return dt0(lowerTail, logP);
31
+ if (q >= b)
32
+ return dt1(lowerTail, logP);
33
+ const w = b - a;
34
+ // the far tail as a sum of positive terms: 1 - (q - a)^2 / (w (c - a)) = (b - c) / w + (c - q)(q + c - 2a) / (w (c - a))
35
+ let lower;
36
+ let upper;
37
+ if (q <= c) {
38
+ lower = ((q - a) * (q - a)) / (w * (c - a));
39
+ upper = (b - c) / w + ((c - q) * (q - a + (c - a))) / (w * (c - a));
40
+ }
41
+ else {
42
+ upper = ((b - q) * (b - q)) / (w * (b - c));
43
+ lower = (c - a) / w + ((q - c) * (b - q + (b - c))) / (w * (b - c));
44
+ }
45
+ const v = lowerTail ? lower : upper;
46
+ if (!logP)
47
+ return v;
48
+ // the log of a probability above 1/2 from the other tail
49
+ return v > 0.5 ? Math.log1p(-(lowerTail ? upper : lower)) : Math.log(v);
50
+ }
51
+ export function qtriang1(p, a, b, c, lowerTail, logP) {
52
+ if (Number.isNaN(p) || !valid(a, b, c))
53
+ return NaN;
54
+ const bd = quantileBoundaries(p, a, b, lowerTail, logP);
55
+ if (bd !== undefined)
56
+ return bd;
57
+ const w = b - a;
58
+ const pv = logP ? Math.exp(p) : p;
59
+ const lower = lowerTail ? pv : logP ? -Math.expm1(p) : 1 - p;
60
+ const upper = lowerTail ? (logP ? -Math.expm1(p) : 1 - p) : pv;
61
+ if (lower <= (c - a) / w)
62
+ return a + Math.sqrt(lower * w * (c - a));
63
+ return b - Math.sqrt(upper * w * (b - c));
64
+ }
65
+ /**
66
+ * Density of the triangular distribution. Equivalent to `extraDistr::dtriang(x, a = -1, b = 1, c = (a + b)/2, log = FALSE)`.
67
+ *
68
+ * @param x - Value(s) at which to evaluate: a number, `number[]` or `Float64Array`. The result has the same shape.
69
+ * @param options - `a`, `b` and `c` (see {@link TriangParams}) and `log` (see {@link DensityOptions}).
70
+ */
71
+ export function dtriang(x, options = {}) {
72
+ const { a = -1, b = 1, log = false } = options;
73
+ const c = options.c ?? (a + b) / 2;
74
+ return vectorize(x, (v) => dtriang1(v, a, b, c, log));
75
+ }
76
+ /** Distribution function of the triangular distribution. Equivalent to `extraDistr::ptriang(q, a, b, c, lower.tail, log.p)`. */
77
+ export function ptriang(q, options = {}) {
78
+ const { a = -1, b = 1, lowerTail = true, logP = false } = options;
79
+ const c = options.c ?? (a + b) / 2;
80
+ return vectorize(q, (v) => ptriang1(v, a, b, c, lowerTail, logP));
81
+ }
82
+ /** Quantile function of the triangular distribution. Equivalent to `extraDistr::qtriang(p, a, b, c, lower.tail, log.p)`. */
83
+ export function qtriang(p, options = {}) {
84
+ const { a = -1, b = 1, lowerTail = true, logP = false } = options;
85
+ const c = options.c ?? (a + b) / 2;
86
+ return vectorize(p, (v) => qtriang1(v, a, b, c, lowerTail, logP));
87
+ }
@@ -0,0 +1,2 @@
1
+ /*! rStats.js 0.6.1 | MIT License | includes code ported from SciPy, Boost.Math, statsmodels, LAPACK and others: see THIRD_PARTY_NOTICES.md at https://github.com/numero-uno-jpn/rStats.js */
2
+ import{A as ar,D as xe,E as ye,F as gt,I as mn,J as Ie,K as ve,L as Nr,O as ke,P as Ae,Q as Re,T as Ee,U as Se,V as Le,W as De,X as _e,a as nn,b as P,c as Ot,d as ft,e as me,f as le,g as ir,h as en,i as on,j as un,k as fn,m as sn,n as an,o as pe,p as he,q as or,t as de,u as Me,v as ur,w as fr,x as sr,y as be,z as ge}from"./chunks/chunk-7JVSDGQQ.js";import{a as Qe,b as Oe,c as Be,d as M,e as tt,f as st,g as H,h as x,i as pn,j as je,k as hn,l as ze,m as Xe,n as Ge,o as Ue,p as Ce,q as Te}from"./chunks/chunk-NAYDS7CL.js";import{a as F,b as E,c as b,d as y,e as Pr,h as cn,m as Fe,n as qe,o as we}from"./chunks/chunk-XM2TVD63.js";import{a as cr,b as ln}from"./chunks/chunk-DRNMIEYH.js";import{a as bt}from"./chunks/chunk-2JCIB5H2.js";import{B as Nn,d as Qt,e as l,f as ce,g as Mt,h as ut,l as tn,s as K,u as rn}from"./chunks/chunk-QNAIK4PY.js";import{a as Jr,b as _,c as Zr,d as L,f as C,g as X,h as ot,i as T,k as V}from"./chunks/chunk-UGUQYWRQ.js";function Ve(r,n,e={}){let{log:t=!1,ncp:i}=e;return i!==void 0?l(r,o=>en(o,n,i,t)):l(r,o=>P(o,n/2,2,t))}function Ke(r,n,e={}){let{lowerTail:t=!0,logP:i=!1,ncp:o}=e;return o!==void 0?l(r,u=>on(u,n,o,t,i)):l(r,u=>Ot(u,n/2,2,t,i))}function mr(r,n,e={}){let{lowerTail:t=!0,logP:i=!1,ncp:o}=e;return o!==void 0?l(r,u=>un(u,n,o,t,i)):l(r,u=>ft(u,n/2,2,t,i))}function He(r,n,e={}){let t=e.log??!1,i=n.length;if(r.length!==i)throw new RangeError("x and prob must have the same length");if(n.some(a=>!Number.isFinite(a)||a<0))throw new RangeError("probabilities must be finite and non-negative");if(!n.some(a=>a>0))throw new RangeError("probabilities must not all be 0");if(r.some(a=>!(a>=0)||!Number.isFinite(a)||a!==Math.round(a)))throw new RangeError("x must be non-negative integers");let o=r.reduce((a,c)=>a+c,0);if(e.size!==void 0&&e.size!==o)throw new RangeError("size must equal the sum of x");for(let a=0;a<i;a++)if(n[a]===0&&r[a]>0)return t?-1/0:0;let u=new Array(i+1).fill([0,0]),f=new Array(i+1).fill(0);for(let a=i-1;a>=0;a--)u[a]=L(u[a+1],[n[a],0]),f[a]=f[a+1]+r[a];let s=0,N=1;for(let a=0;a<i;a++){if(n[a]===0)continue;let c=u[a+1];if(c[0]===0)break;let m=T([n[a],0],u[a]),p=T(c,u[a]),h=r[a],d=f[a+1];t?s+=K(h,d,m,p,!0):N*=K(h,d,m,p,!1)}return t?s:N}function lr(r,n){return Number.isFinite(n-r)?1:.5}function Ye(r,n,e,t){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(!(e>n))return NaN;if(r<n||r>e)return b(t);let i=lr(n,e),o=e*i-n*i;return t?-Math.log(o)+Math.log(i):i/o}function We(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(e<n||!Number.isFinite(n)||!Number.isFinite(e))return NaN;if(r>=e)return E(t,i);if(r<=n)return F(t,i);let o=lr(n,e),u=e*o-n*o,f=t?(r*o-n*o)/u:(e*o-r*o)/u;return i?Math.log(f):f}function $e(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(e<n||!Number.isFinite(n)||!Number.isFinite(e))return NaN;let o=y(r,n,e,t,i);if(Number.isNaN(o))return NaN;if(e===n)return n;if(o!==void 0)return o;let u;return i?u=t?Math.exp(r):-Math.expm1(r):u=t?r:.5-r+.5,lr(n,e)!==1?(1-u)*n+u*e:n+u*(e-n)}function Je(r,n={}){let{min:e=0,max:t=1,log:i=!1}=n;return l(r,o=>Ye(o,e,t,i))}function Ze(r,n={}){let{min:e=0,max:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>We(u,e,t,i,o))}function Pe(r,n={}){let{min:e=0,max:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>$e(u,e,t,i,o))}var dn=[.6931471805599453,23190468138462996e-33];function pr(r){let n=r[0];if(!Jr())return[Math.exp(n),0];if(Number.isNaN(n))return[NaN,0];if(n>709.8)return[1/0,0];if(n<-708)return[Math.exp(n)*(1+r[1]),0];let e=Math.round(n/dn[0]),t=C(r,ot(dn,e)),i=1024;t=[t[0]/i,t[1]/i];let o=t,u=t;for(let c=2;c<20&&(o=X(o,t),o=[o[0]/c,o[1]/c],u=L(u,o),!(Math.abs(o[0])<1e-36));c++);for(let c=0;c<10;c++)u=X(u,L(u,[2,0]));let f=L(u,[1,0]),s=Math.trunc(e/2),N=2**s,a=2**(e-s);return[f[0]*N*a,f[1]*N*a]}function Q(r,n,e){let t=r-n;if(!Number.isFinite(t))return[t/e,0];let i=n===0?[r,0]:_(r,-n);if(e===1)return i;let o=i[0]/e;if(!Number.isFinite(o)||o===0)return[o,0];let u=C(i,rt(e,o)),f=(u[0]+u[1])/e;return _(o,f)}function rt(r,n){let e=r*n;return!Number.isFinite(e)||Math.abs(r)>1e300||Math.abs(n)>1e300?[e,0]:Zr(r,n)}function D(r){return r[0]>708?Math.exp(700-r[0])*(1-r[1])*Math.exp(-700):Math.exp(-r[0])*(1-r[1])}function O(r){return r>-Math.LN2?Math.log(-Math.expm1(r)):Math.log1p(-Math.exp(r))}function Bt(r){return r[0]>Math.LN2?Math.log1p(-D(r)):Math.log(-Math.expm1(-(r[0]+r[1])))}function at(r,n,e){let t=rt(n,e);if(!Number.isFinite(t[0])||!Number.isFinite(r))return r+t[0];let i=L(t,[r,0]);return i[0]+i[1]}function ti(r,n,e){if(Number.isNaN(r)||Number.isNaN(n))return NaN;if(n<0||n===1/0)return NaN;if(r<0)return b(e);let t=rt(n,r);return Number.isNaN(t[0])?NaN:e?Math.log(n)-t[0]-t[1]:n*D(t)}function ri(r,n,e){if(!n)return e?-r[0]-r[1]:D(r);let t=r[0]+r[1];return e?Bt(r):-Math.expm1(-t)}function ni(r,n,e,t){if(Number.isNaN(r)||Number.isNaN(n))return NaN;if(n<0)return NaN;if(r<=0)return F(e,t);let i=rt(n,r);return Number.isNaN(i[0])?NaN:i[0]===1/0?E(e,t):ri(i,e,t)}function ei(r,n,e,t){if(Number.isNaN(r)||Number.isNaN(n))return NaN;if(n<0)return NaN;let i=y(r,0,1/0,e,t);if(Number.isNaN(i)||i===0)return i;let o;return t?o=e?O(r):r:o=e?Math.log1p(-r):Math.log(r),-o/n}function ii(r,n={}){let{rate:e=1,log:t=!1}=n;return l(r,i=>ti(i,e,t))}function oi(r,n={}){let{rate:e=1,lowerTail:t=!0,logP:i=!1}=n;return l(r,o=>ni(o,e,t,i))}function ui(r,n={}){let{rate:e=1,lowerTail:t=!0,logP:i=!1}=n;return l(r,o=>ei(o,e,t,i))}var fi=.9189385332046728,si=.3989422804014327;function bn(r,n,e){let t=C(V([r,0]),[n,0]);if(e===1)return t;let i=t[0]/e;return Number.isFinite(i)&&Math.abs(i)<1e300?T(t,[e,0]):[i,0]}function jt(r){if(Math.abs(r[0])>1e150)return[r[0]*r[0]/2,0];let n=X(r,r);return[n[0]/2,n[1]/2]}function ai(r,n){if(r[0]>-Math.SQRT2){if(r[0]<Math.SQRT2)return Mt(r[0]+r[1],{logP:n});let e=Mn(r[0],[r[0],r[1]],!1);return n?Math.log1p(-e):1-e}return Mn(-r[0],[-r[0],-r[1]],n)}function Mn(r,n,e){let t=.5*Qt(r*Math.SQRT1_2),i=jt(n);return e?Math.log(t)-i[0]-i[1]:t*D(i)}var hr=2.5066282746310007;function Ni(r,n,e,t){let i=e?r:-r,o,u=(f,s,N)=>-s[0]-N[0]+(-s[1]-N[1])+Math.log(f);if(i<=-Math.SQRT2){let f=.5*Qt(-i*Math.SQRT1_2),s=t?[n,0]:V([n,0]);o=-u(f,jt([-i,0]),s)*hr*f}else if(i>=Math.SQRT2){let f=.5*Qt(i*Math.SQRT1_2),s=t?-Math.expm1(n):1-n;o=u(f,jt([i,0]),V([s,0]))*hr*f}else{let f=Mt(i),s=Math.exp(-i*i/2)/hr;o=((t?Math.exp(n):n)-f)/s}return Number.isFinite(o)?_(r,e?o:-o):[r,0]}function ci(r,n,e,t){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(e<0)return NaN;if(r<=0)return b(t);if(e===0)return Math.log(r)===n?1/0:b(t);if(!Number.isFinite(r)||!Number.isFinite(n)||!Number.isFinite(e)){let u=(Math.log(r)-n)/e;return Number.isNaN(u)?NaN:b(t)}let i=bn(r,n,e),o=jt(i);return t?-(fi+o[0]+o[1]+Math.log(e)+Math.log(r)):si*D(o)/e/r}function mi(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(e<0)return NaN;if(r<=0)return F(t,i);if(e===0||!Number.isFinite(r)||!Number.isFinite(n)||!Number.isFinite(e))return Mt(Math.log(r),{mean:n,sd:e,lowerTail:t,logP:i});let o=bn(r,n,e);return ai(t?o:[-o[0],-o[1]],i)}function li(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;let o=ut(r,{lowerTail:t,logP:i});if(!Number.isFinite(o)||!(e>0)||!Number.isFinite(e)||!Number.isFinite(n))return Math.exp(ut(r,{mean:n,sd:e,lowerTail:t,logP:i}));let u=Ni(o,r,t,i),f=L(L(rt(e,u[0]),[e*u[1],0]),[n,0]);return Math.exp(f[0])*(1+f[1])}function pi(r,n={}){let{meanlog:e=0,sdlog:t=1,log:i=!1}=n;return l(r,o=>ci(o,e,t,i))}function hi(r,n={}){let{meanlog:e=0,sdlog:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>mi(u,e,t,i,o))}function di(r,n={}){let{meanlog:e=0,sdlog:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>li(u,e,t,i,o))}function Mi(r,n,e,t){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(!(e>0))return NaN;let i=Q(r,n,e);if(Number.isNaN(i[0]))return NaN;let o=i[0]<0?[-i[0],-i[1]]:[i[0],i[1]],u=D(o);return t?-o[0]-o[1]-Math.log(e)-2*Math.log1p(u):u/(e*(1+u)*(1+u))}function bi(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(!(e>0))return NaN;let o=Q(r,n,e);if(Number.isNaN(o[0]))return NaN;let u=o[0]<0?[-o[0],-o[1]]:[o[0],o[1]],f=D(u);return t===o[0]>=0?i?-Math.log1p(f):1/(1+f):i?-u[0]-u[1]-Math.log1p(f):f/(1+f)}function gi(r,n){return n?r-O(r):r<.25?Math.log(r/(1-r)):Math.log1p((2*r-1)/(1-r))}function xi(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;let o=y(r,-1/0,1/0,t,i);if(o!==void 0)return o;if(e<0)return NaN;if(e===0)return n;let u=gi(r,i);return at(n,e,t?u:-u)}function yi(r,n={}){let{location:e=0,scale:t=1,log:i=!1}=n;return l(r,o=>Mi(o,e,t,i))}function Fi(r,n={}){let{location:e=0,scale:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>bi(u,e,t,i,o))}function qi(r,n={}){let{location:e=0,scale:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>xi(u,e,t,i,o))}var dr=1.1447298858494002;function wi(r,n,e,t){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(!(e>0))return NaN;let i=(r-n)/e;if(Number.isNaN(i))return NaN;let o=Math.abs(i);if(o<=1)return t?-(dr+Math.log(e))-Math.log1p(i*i):1/(Math.PI*e*(1+i*i));let u=1/o;return t?-(dr+Math.log(e))-2*Math.log(o)-Math.log1p(u*u):u/(Math.PI*e)*(u/(1+u*u))}function Ii(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(!(e>0))return NaN;let o=r-n;if(Number.isNaN(o))return NaN;if(!(Math.abs(o)>e)){let N=o/e,a=.5+Math.atan(t?N:-N)/Math.PI;return i?Math.log(a):a}let u=e/Math.abs(o),f=Math.atan(u)/Math.PI;return t===o<0?i?u<1e-150?Math.log(e)-Math.log(Math.abs(o))-dr:Math.log(f):f:i?Math.log1p(-f):1-f}var vi=1e-200,ki=-460;function gn(r,n,e){if(!e)return r/n/Math.PI;let t=Math.exp(-n/2);return t*(r/Math.PI)*t}function zt(r){return r<=.25?-1/Math.tan(Math.PI*r):-Math.tan(Math.PI*(.5-r))}function Ai(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(i?r>0:r<0||r>1)return NaN;if(!(e>0)||!Number.isFinite(e))return e===0?n:NaN;let o;if(i)if(r===0)o=1/0;else if(r===-1/0)o=-1/0;else{if(r<ki)return n+(t?-1:1)*gn(e,r,!0);o=r<-Math.LN2?zt(Math.exp(r)):-zt(-Math.expm1(r))}else if(r===0)o=-1/0;else if(r===1)o=1/0;else{if(r<vi)return n+(t?-1:1)*gn(e,r,!1);o=r<=.5?zt(r):-zt(1-r)}return at(n,e,t?o:-o)}function Ri(r,n={}){let{location:e=0,scale:t=1,log:i=!1}=n;return l(r,o=>wi(o,e,t,i))}function Ei(r,n={}){let{location:e=0,scale:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>Ii(u,e,t,i,o))}function Si(r,n={}){let{location:e=0,scale:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>Ai(u,e,t,i,o))}function Mr(r,n){return r===1?1:Math.pow(r,n)}function xn(r,n){return V(n===1?[r,0]:Q(r,0,n))}function yn(...r){return r.every(Number.isFinite)}function br(r,n,e,t){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(!(n>0)||!(e>0))return NaN;if(r<0||r===1/0)return b(t);if(r===0&&n<1)return 1/0;if(!yn(n,e)){let f=Mr(r/e,n-1),s=f*(r/e);return t?-s+Math.log(n*f/e):n*f*Math.exp(-s)/e}if(r===0)return n>1?b(t):t?-Math.log(e):1/e;let i=xn(r,e),o=pr(ot(i,n));if(o[0]===1/0)return b(t);let u=C(n===1?[0,0]:ot(i,n-1),o);return t?Math.log(n/e)+u[0]+u[1]:n/e*Math.exp(u[0])*(1+u[1])}function Li(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(!(n>0)||!(e>0))return NaN;if(r<=0)return F(t,i);let o;if(yn(r,n,e))o=pr(ot(xn(r,e),n));else if(o=[Mr(r/e,n),0],Number.isNaN(o[0]))return NaN;if(!t)return i?-o[0]-o[1]:D(o);let u=o[0]+o[1];return i?Bt(o):-Math.expm1(-u)}function Di(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(!(n>0)||!(e>0))return NaN;let o=y(r,0,1/0,t,i);if(o!==void 0)return o;let u;return i?u=t?O(r):r:u=t?Math.log1p(-r):Math.log(r),e*Mr(-u,1/n)}function _i(r,n,e={}){let{scale:t=1,log:i=!1}=e;return l(r,o=>br(o,n,t,i))}function Qi(r,n,e={}){let{scale:t=1,lowerTail:i=!0,logP:o=!1}=e;return l(r,u=>Li(u,n,t,i,o))}function gr(r,n,e={}){let{scale:t=1,lowerTail:i=!0,logP:o=!1}=e;return l(r,u=>Di(u,n,t,i,o))}function Xt(r){return r<=.5?{pd:[r,0],qd:_(1,-r)}:{pd:_(1,-(1-r)),qd:[1-r,0]}}function yr(r){return!(r>0)||r>1}function Oi(r,n,e){if(Number.isNaN(r)||Number.isNaN(n))return NaN;if(yr(n))return NaN;if(bt(r)||r<0||!Number.isFinite(r))return b(e);let t=Math.round(r),{pd:i,qd:o}=Xt(n),u=K(0,t,i,o,e);return e?Math.log(n)+u:n*u}function xr(r,n,e){let{pd:t,qd:i}=Xt(n);return K(0,r+1,t,i,e)}function Bi(r,n,e,t){if(!e)return xr(r,n,t);let i=xr(r,n,!0);return t?i<-Math.LN2?Math.log1p(-xr(r,n,!1)):Math.log(-Math.expm1(i)):-Math.expm1(i)}function ji(r,n,e,t){return Number.isNaN(r)||Number.isNaN(n)?NaN:yr(n)?NaN:r<0?F(e,t):!Number.isFinite(r)||n===1?E(e,t):Bi(Math.floor(r+1e-7),n,e,t)}function zi(r,n,e,t){if(Number.isNaN(r)||Number.isNaN(n))return NaN;if(yr(n))return NaN;let i=y(r,0,1/0,e,t);if(Number.isNaN(i))return NaN;if(n===1)return 0;if(i!==void 0)return i;let o;return t?o=e?O(r):r:o=e?Math.log1p(-r):Math.log(r),Math.max(0,Math.ceil(o/Math.log1p(-n)-1-1e-12))}function Xi(r,n,e={}){let t=e.log??!1;return l(r,i=>Oi(i,n,t))}function Gi(r,n,e={}){let{lowerTail:t=!0,logP:i=!1}=e;return l(r,o=>ji(o,n,t,i))}function Fr(r,n,e={}){let{lowerTail:t=!0,logP:i=!1}=e;return l(r,o=>zi(o,n,t,i))}function qr(r,n){let e=_(r,n);return{size:r,pd:T([r,0],e),qd:T([n,0],e)}}function wr(r,n){return{size:r,...Xt(n)}}function Ir(r,n,e){let{size:t,pd:i,qd:o}=n,u=K(t,r,i,o,e);if(r===0)return u;let f=t/(t+r);return e?u+Math.log(f):u*f}function xt(r,n,e,t){let i=Ui(r,n);return i!==void 0?e?t?Math.log1p(-i):1-i:t?Math.log(i):i:cn(n.size,r+1,n.pd,n.qd,e,t)}function Ui(r,n){let{size:e,pd:t,qd:i}=n,o=i[0]+i[1],u=t[0]+t[1];if(!(e<=1)||!(o>=.95)||u<1e-4)return;let f=r+1,s=e,N=K(f,s,i,t,!1)*s/(f+s);if(!(N>1e-290))return;let a=_(f,s),c=[1,0],m=[1,0];for(let p=0;p<1e6;p++){let h=T(L(a,[p,0]),[f+1+p,0]);if(c=X(X(c,h),i),m=L(m,c),c[0]<1e-18*m[0]){let d=N*(m[0]+m[1]);return d<=.5?d:void 0}}}function Fn(r,n,e,t){let i=n.pd[0]+n.pd[1],o=1/i,u=(n.qd[0]+n.qd[1])*o,f=n.size*u,s=Math.sqrt(n.size*u*o),N=(o+u)/s,a;if(i<.05)a=ft(r,n.size,1,e,t)/Math.log1p(i/(n.qd[0]+n.qd[1]));else{let m=ut(r,{lowerTail:e,logP:t});a=f+s*(m+N*(m*m-1)/6)}let c=Number.isFinite(a)?Math.max(a,0):Number.isFinite(f)?f:0;return c>1e4&&(c=Ci(c,r,n,e,t)),fn({p:r,lowerTail:e,logP:t,cdf:(m,p,h)=>xt(m,n,p,h),y0:c,lo:0,hi:1/0})}function Ci(r,n,e,t,i){let o=Number.EPSILON,u=n;i?u=t?n*(1+2*o):n*(1-2*o):t?u=n*(1-8*o):1-n>32*o&&(u=n*(1+8*o));let f=i?u:Math.log(u),s=f<=-Math.LN2?t:!t,N=f<=-Math.LN2?f:i?Math.log(-Math.expm1(u)):Math.log1p(-u),a=r,c=xt(a,e,s,!0)-N,m=NaN,p=NaN;for(let h=0;h<8&&c!==0;h++){let d;if(Number.isNaN(m)||c===p){let k=(s?1:-1)*Math.exp(Ir(a,e,!0)-(c+N));d=a-c/k}else d=a-c*(a-m)/(c-p);if(!Number.isFinite(d)||d<=0)break;if(Math.abs(d-a)<.5)return d;m=a,p=c,a=d,c=xt(a,e,s,!0)-N}return a}function Ti(r,n,e,t){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(n<0||!(e>0)||e>1)return NaN;if(bt(r)||r<0||!Number.isFinite(r))return b(t);let i=Math.round(r);return n===0||e===1?i===0?t?0:1:b(t):n===1/0?b(t):Ir(i,wr(n,e),t)}function Vi(r,n,e,t,i){return Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e)?NaN:n<0||!(e>0)||e>1||n===1/0?NaN:r<0?F(t,i):n===0||e===1||!Number.isFinite(r)?E(t,i):xt(Math.floor(r+1e-7),wr(n,e),t,i)}function Ki(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(n<0||e<0||e>1)return NaN;if(e===1||n===0)return 0;if(e===0)return NaN;let o=y(r,0,1/0,t,i);return o!==void 0?o:n===1/0?1/0:Fn(r,wr(n,e),t,i)}function Hi(r,n,e,t){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(n<0||e<0)return NaN;if(bt(r)||r<0||!Number.isFinite(r))return b(t);let i=Math.round(r);return n===0?i===0?t?0:1:e===0?NaN:b(t):e===1/0?b(t):n===1/0?rn(i,e,t):e===0?i===0?t?0:1:b(t):Ir(i,qr(n,e),t)}function Yi(r,n,e,t,i){return Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e)?NaN:n<0||e<0||e===1/0?NaN:r<0?F(t,i):n===0||e===0||!Number.isFinite(r)?E(t,i):n===1/0?sn(r,e,t,i):xt(Math.floor(r+1e-7),qr(n,e),t,i)}function Wi(r,n,e,t,i){if(Number.isNaN(r)||Number.isNaN(n)||Number.isNaN(e))return NaN;if(n===1/0)return an(r,e,t,i);if(n===0||e===0)return 0;if(n<0||e<0)return NaN;if(e===1/0)return y(r,0,1/0,t,i)??NaN;let o=y(r,0,1/0,t,i);return o!==void 0?o:Fn(r,qr(n,e),t,i)}function vr(r){let{prob:n,mu:e}=r;if(n!==void 0&&e!==void 0)throw new TypeError("specify exactly one of prob and mu");if(n!==void 0)return{kind:"prob",v:n};if(e!==void 0)return{kind:"mu",v:e};throw new TypeError("specify exactly one of prob and mu")}function $i(r,n,e){let t=e.log??!1,i=vr(e);return i.kind==="prob"?l(r,o=>Ti(o,n,i.v,t)):l(r,o=>Hi(o,n,i.v,t))}function Ji(r,n,e){let{lowerTail:t=!0,logP:i=!1}=e,o=vr(e);return o.kind==="prob"?l(r,u=>Vi(u,n,o.v,t,i)):l(r,u=>Yi(u,n,o.v,t,i))}function kr(r,n,e){let{lowerTail:t=!0,logP:i=!1}=e,o=vr(e);return o.kind==="prob"?l(r,u=>Ki(u,n,o.v,t,i)):l(r,u=>Wi(u,n,o.v,t,i))}var Ar=(r,n)=>r>0&&n>0&&Number.isFinite(n);function Zi(r,n,e,t){if(Number.isNaN(r)||!Ar(n,e))return NaN;if(r<=0||r===1/0)return b(t);if(n===1/0)return NaN;let[i,o]=Q(e,0,r);if(i===1/0)return b(t);let u=Number.isFinite(o)?(n/i-1)*o:0;return t?P(i,n,1,!0)+Math.log(i)-Math.log(r)+u:P(i,n,1,!1)*i/r*(1+u)}function Pi(r,n,e,t,i){if(Number.isNaN(r)||!Ar(n,e))return NaN;if(r<=0)return F(t,i);if(r===1/0||n===1/0)return E(t,i);let[o,u]=Q(e,0,r),f=Ot(o,n,1,!t,i);if(!(u!==0&&Number.isFinite(u)&&Number.isFinite(o)))return f;let s=t?-1:1;if(!i)return f+s*P(o,n,1,!1)*u;let N=s*Math.exp(P(o,n,1,!0)-f)*u;return Number.isFinite(N)?f+N:f}function to(r,n,e,t,i){if(Number.isNaN(r)||!Ar(n,e))return NaN;let o=y(r,0,1/0,t,i);return o!==void 0?o:n===1/0?0:e/ft(r,n,1,!t,i)}function ro(r,n,e={}){let{beta:t=1,log:i=!1}=e;return l(r,o=>Zi(o,n,t,i))}function no(r,n,e={}){let{beta:t=1,lowerTail:i=!0,logP:o=!1}=e;return l(r,u=>Pi(u,n,t,i,o))}function Rr(r,n,e={}){let{beta:t=1,lowerTail:i=!0,logP:o=!1}=e;return l(r,u=>to(u,n,t,i,o))}var Sr=(r,n)=>r>0&&n>0&&Number.isFinite(n);function qn(r,n){let e=Math.pow(r,n);return e<.5?Math.log1p(-e):Math.log(-Math.expm1(n*Math.log(r)))}function Er(r,n,e){let t=Math.pow(r,n);if(t>=.5)return Math.pow(-Math.expm1(n*Math.log(r)),e);let i=1-t,o=1-i-t;return Math.pow(i,e)*(1+e*o/i)}var eo=(r,n)=>r===0?0:r*Math.log(n);function Lr(r,n,e,t){if(Number.isNaN(r)||!Sr(n,e))return NaN;if(r<0||r>1)return b(t);if(n===1/0)return r===1?1/0:b(t);let i=r===1?-1/0:qn(r,n),o=Math.log(n)+Math.log(e)+eo(n-1,r)+(e===1?0:(e-1)*i);if(t)return o;let u=Math.pow(r,n),f=n*e*(n===1?1:u>1e-290?u/r:Math.pow(r,n-1))*(e===1||r===0?1:Er(r,n,e-1));return f>22250738585072014e-324&&f<1/0?f:Math.exp(o)}function Dr(r,n,e,t,i){if(Number.isNaN(r)||!Sr(n,e))return NaN;if(r<=0)return F(t,i);if(r>=1)return E(t,i);if(n===1/0)return F(t,i);let o=e*qn(r,n);if(!t)return i?o:Er(r,n,e);if(!i)return-Math.expm1(o);let u=Math.pow(r,n);return u<1e-20?Math.log(e)+n*Math.log(r)+Math.log1p(-(e-1)*u/2):o<-Math.LN2?Math.log1p(-Er(r,n,e)):O(o)}function yt(r,n,e,t,i){if(Number.isNaN(r)||!Sr(n,e))return NaN;let o=y(r,0,1,t,i);if(o!==void 0)return o;if(n===1/0)return 1;let u=t?i?O(r):Math.log1p(-r):i?r:Math.log(r);return Math.pow(-Math.expm1(u/e),1/n)}function io(r,n,e,t={}){let{log:i=!1}=t;return l(r,o=>Lr(o,n,e,i))}function oo(r,n,e,t={}){let{lowerTail:i=!0,logP:o=!1}=t;return l(r,u=>Dr(u,n,e,i,o))}function _r(r,n,e,t={}){let{lowerTail:i=!0,logP:o=!1}=t;return l(r,u=>yt(u,n,e,i,o))}var Qr=(r,n)=>r>0&&n>0&&Number.isFinite(n);function uo(r,n,e,t){if(Number.isNaN(r)||!Qr(n,e))return NaN;if(r<e||r===1/0)return b(t);if(n===1/0)return r===e?1/0:b(t);let[i,o]=Q(r,0,e),u=Number.isFinite(o)?o/i:0;if(t)return Math.log(n/e)-(n+1)*(Math.log(i)+u);let f=n/e*Math.pow(i,-n)/i;return f>0&&f<1/0?f*(1-(n+1)*u):Math.exp(Math.log(n/e)-(n+1)*(Math.log(i)+u))}function fo(r,n,e,t,i){if(Number.isNaN(r)||!Qr(n,e))return NaN;if(r<=e)return F(t,i);if(r===1/0||n===1/0)return E(t,i);let[o,u]=Q(r,0,e),f=Number.isFinite(u)?u/o:0,s=-n*(Math.log(o)+f);if(!t){if(i)return s;let N=Math.pow(o,-n);return N>0?N*(1-n*f):Math.exp(s)}return i?s<-Math.LN2?Math.log1p(-Math.pow(o,-n)*(1-n*f)):O(s):-Math.expm1(s)}function Or(r,n,e,t,i){if(Number.isNaN(r)||!Qr(n,e))return NaN;let o=y(r,e,1/0,t,i);if(o!==void 0)return o;if(n===1/0)return e;let u=t?i?O(r):Math.log1p(-r):i?r:Math.log(r);return e*Math.exp(-u/n)}function so(r,n={}){let{a:e=1,b:t=1,log:i=!1}=n;return l(r,o=>uo(o,e,t,i))}function ao(r,n={}){let{a:e=1,b:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>fo(u,e,t,i,o))}function No(r,n={}){let{a:e=1,b:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>Or(u,e,t,i,o))}var Br=(r,n,e)=>Number.isFinite(r)&&Number.isFinite(n)&&r<n&&r<=e&&e<=n;function co(r,n,e,t,i){if(Number.isNaN(r)||!Br(n,e,t))return NaN;if(r<n||r>e)return b(i);let o=e-n;if(r===t)return i?Math.log(2/o):2/o;let u=r<t?(t-r)/(t-n):(r-t)/(e-t);if(u<.5)return i?Math.log(2/o)+Math.log1p(-u):2/o*(1-u);let f=r<t?2*(r-n)/(o*(t-n)):2*(e-r)/(o*(e-t));return i?Math.log(f):f}function mo(r,n,e,t,i,o){if(Number.isNaN(r)||!Br(n,e,t))return NaN;if(r<=n)return F(i,o);if(r>=e)return E(i,o);let u=e-n,f,s;r<=t?(f=(r-n)*(r-n)/(u*(t-n)),s=(e-t)/u+(t-r)*(r-n+(t-n))/(u*(t-n))):(s=(e-r)*(e-r)/(u*(e-t)),f=(t-n)/u+(r-t)*(e-r+(e-t))/(u*(e-t)));let N=i?f:s;return o?N>.5?Math.log1p(-(i?s:f)):Math.log(N):N}function lo(r,n,e,t,i,o){if(Number.isNaN(r)||!Br(n,e,t))return NaN;let u=y(r,n,e,i,o);if(u!==void 0)return u;let f=e-n,s=o?Math.exp(r):r,N=i?s:o?-Math.expm1(r):1-r,a=i?o?-Math.expm1(r):1-r:s;return N<=(t-n)/f?n+Math.sqrt(N*f*(t-n)):e-Math.sqrt(a*f*(e-t))}function po(r,n={}){let{a:e=-1,b:t=1,log:i=!1}=n,o=n.c??(e+t)/2;return l(r,u=>co(u,e,t,o,i))}function ho(r,n={}){let{a:e=-1,b:t=1,lowerTail:i=!0,logP:o=!1}=n,u=n.c??(e+t)/2;return l(r,f=>mo(f,e,t,u,i,o))}function jr(r,n={}){let{a:e=-1,b:t=1,lowerTail:i=!0,logP:o=!1}=n,u=n.c??(e+t)/2;return l(r,f=>lo(f,e,t,u,i,o))}var zr=(r,n)=>!Number.isNaN(r)&&n>0&&Number.isFinite(n);function Mo(r,n,e,t){if(Number.isNaN(r)||!zr(n,e))return NaN;if(!Number.isFinite(n))return t?-1/0:0;let i=Q(r,n,e),o=i[0]<0?[-i[0],-i[1]]:[i[0],i[1]];return t?-o[0]-o[1]-Math.log(2*e):D(o)/(2*e)}function bo(r,n,e,t,i){if(Number.isNaN(r)||!zr(n,e))return NaN;if(!Number.isFinite(n)){let s=n===1/0?0:1,N=t?s:1-s;return i?Math.log(N):N}let o=Q(r,n,e),u=o[0]<0?[-o[0],-o[1]]:[o[0],o[1]],f=D(u)/2;return t===o[0]<0?i?-u[0]-u[1]-Math.LN2:f:i?Math.log1p(-f):1-f}function go(r,n,e,t,i){if(Number.isNaN(r)||!zr(n,e))return NaN;let o=y(r,-1/0,1/0,t,i);if(o!==void 0)return o;if(!Number.isFinite(n))return n;let{lower:u,logTarget:f,linearTarget:s}=Pr(r,t,i),N=s!==void 0?Math.log(2*s):Math.LN2+f;return at(n,e,u?N:-N)}function xo(r,n={}){let{mu:e=0,sigma:t=1,log:i=!1}=n;return l(r,o=>Mo(o,e,t,i))}function yo(r,n={}){let{mu:e=0,sigma:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>bo(u,e,t,i,o))}function Fo(r,n={}){let{mu:e=0,sigma:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>go(u,e,t,i,o))}var Xr=(r,n)=>Number.isFinite(r)&&Number.isFinite(n)&&r<n;function qo(r,n,e,t){if(Number.isNaN(r)||!Xr(n,e))return NaN;if(r<n||r>e)return b(t);if(r===n||r===e)return 1/0;if(!t)return 1/(Math.PI*Math.sqrt(r-n)*Math.sqrt(e-r));let i=L(V(_(r,-n)),V(_(e,-r)));return-wn[0]-.5*i[0]-(wn[1]+.5*i[1])}var wn=[1.1447298858494002,10265951162707826e-33];function wo(r,n,e,t,i){if(Number.isNaN(r)||!Xr(n,e))return NaN;if(r<=n)return F(t,i);if(r>=e)return E(t,i);let o=e-n;return r-n<=e-r?fr((r-n)/o,.5,.5,t,i):fr((e-r)/o,.5,.5,!t,i)}function Gr(r,n,e,t,i){if(Number.isNaN(r)||!Xr(n,e))return NaN;let o=y(r,n,e,t,i);if(o!==void 0)return o;let u=sr(r,.5,.5,t,i);return u<=.5?n+(e-n)*u:e-(e-n)*sr(r,.5,.5,!t,i)}function Io(r,n={}){let{a:e=0,b:t=1,log:i=!1}=n;return l(r,o=>qo(o,e,t,i))}function vo(r,n={}){let{a:e=0,b:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>wo(u,e,t,i,o))}function Ur(r,n={}){let{a:e=0,b:t=1,lowerTail:i=!0,logP:o=!1}=n;return l(r,u=>Gr(u,e,t,i,o))}var q={mean:NaN,variance:NaN,sd:NaN,median:NaN,mode:NaN,skewness:NaN,kurtosis:NaN};function I(r,n,e,t,i,o){return{mean:r,variance:n,sd:Math.sqrt(n),median:e,mode:t,skewness:i,kurtosis:o}}function In(r,n,e,t){return kn(i=>i,r,n,n,e,t)}function kn(r,n,e,t,i,o){let u=50*Number.EPSILON,f=[2,3,4].map(N=>{let a=p=>(r(p)-e)**N*n(p),c=cr(a,i,t,0,u,200).result,m=o===1/0?ln(a,t,1,0,u,200).result:cr(a,t,o,0,u,200).result;return c+m}),s=f[0];return{variance:s,skewness:f[1]/s**1.5,kurtosis:f[2]/(s*s)-3}}function ko(r,n){let[e,t]=X([r,0],[n,0]),i=Math.floor(e);return e===i&&t<0?i-1:i}function vn(r,n,e){let t=C(X(r,[n,0]),[e,0]);return t[0]+t[1]<=0}var Gt=(r,n)=>r[n]!==void 0;function Ao(r,n={}){let e=n;switch(r){case"norm":{let{mean:t=0,sd:i=1}=e;return Number.isFinite(t)&&i>0&&Number.isFinite(i)?I(t,i*i,t,t,0,0):q}case"lnorm":{let{meanlog:t=0,sdlog:i=1}=e;if(!(Number.isFinite(t)&&i>0&&Number.isFinite(i)))return q;let o=i*i,u=Math.expm1(o),f=Math.exp(o);return I(Math.exp(t+o/2),u*Math.exp(2*t+o),Math.exp(t),Math.exp(t-o),(f+2)*Math.sqrt(u),u*(16+u*(15+u*(6+u))))}case"unif":{let{min:t=0,max:i=1}=e;if(!(Number.isFinite(t)&&Number.isFinite(i)&&t<i))return q;let o=t+(i-t)/2;return I(o,(i-t)**2/12,o,NaN,0,-1.2)}case"exp":{let{rate:t=1}=e;return t>0&&Number.isFinite(t)?I(1/t,1/(t*t),Math.LN2/t,0,2,6):q}case"gamma":{let t=e.shape??NaN,i=Gt(e,"scale")?e.scale:1/(e.rate??1);return t>0&&Number.isFinite(t)&&i>0&&Number.isFinite(i)?I(t*i,t*i*i,ir(.5,t,{scale:i}),t>=1?(t-1)*i:0,2/Math.sqrt(t),6/t):q}case"chisq":{let t=e.df??NaN;return t>0&&Number.isFinite(t)?I(t,2*t,mr(.5,t),Math.max(t-2,0),Math.sqrt(8/t),12/t):q}case"beta":{let t=e.shape1??NaN,i=e.shape2??NaN;if(!(t>0&&i>0&&Number.isFinite(t)&&Number.isFinite(i)))return q;let o=t+i,u;return t>1&&i>1?u=(t-1)/(o-2):t===1&&i===1||t<1&&i<1?u=NaN:u=t<=1&&i>=1?0:1,I(t/o,t*i/(o*o*(o+1)),ar(.5,t,i),u,2*(i-t)*Math.sqrt(o+1)/((o+2)*Math.sqrt(t*i)),6*((t-i)**2*(o+1)-t*i*(o+2))/(t*i*(o+2)*(o+3)))}case"t":{let t=e.df??NaN;if(!(t>0))return q;let i=t>2?t===1/0?1:t/(t-2):t>1?1/0:NaN,o=t>4?t===1/0?0:6/(t-4):t>2?1/0:NaN;return I(t>1?0:NaN,i,0,0,t>3?0:NaN,o)}case"f":{let t=e.df1??NaN,i=e.df2??NaN;if(!(t>0&&i>0&&Number.isFinite(t)&&Number.isFinite(i)))return q;let o=i>2?i/(i-2):NaN,u=i>4?2*i*i*(t+i-2)/(t*(i-2)**2*(i-4)):i>2?1/0:NaN,f=i>6?(2*t+i-2)*Math.sqrt(8*(i-4))/((i-6)*Math.sqrt(t*(t+i-2))):NaN,s=i>8?12*(t*(5*i-22)*(t+i-2)+(i-4)*(i-2)**2)/(t*(i-6)*(i-8)*(t+i-2)):NaN;return I(o,u,ur(.5,t,i),t>2?(t-2)/t*(i/(i+2)):0,f,s)}case"cauchy":{let{location:t=0,scale:i=1}=e;return Number.isFinite(t)&&i>0&&Number.isFinite(i)?I(NaN,NaN,t,t,NaN,NaN):q}case"weibull":{let t=e.shape??NaN,i=e.scale??1;if(!(t>0&&Number.isFinite(t)&&i>0&&Number.isFinite(i)))return q;let o=tn(1+1/t),u=In(f=>br(f,t,1,!1),o,0,1/0);return I(i*o,i*i*u.variance,gr(.5,t,{scale:i}),t>1?i*Math.pow((t-1)/t,1/t):0,u.skewness,u.kurtosis)}case"logis":{let{location:t=0,scale:i=1}=e;return Number.isFinite(t)&&i>0&&Number.isFinite(i)?I(t,i*i*Math.PI*Math.PI/3,t,t,0,1.2):q}case"binom":{let t=e.size??NaN,i=e.prob??NaN;if(!(Number.isInteger(t)&&t>=0&&i>=0&&i<=1))return q;let o=1-i;return I(t*i,t*i*o,gt(.5,t,i),Math.min(t,ko(t+1,i)),(o-i)/Math.sqrt(t*i*o),(1-6*i*o)/(t*i*o))}case"pois":{let t=e.lambda??NaN;return t>0&&Number.isFinite(t)?I(t,t,or(.5,t),Math.floor(t),1/Math.sqrt(t),1/t):q}case"geom":{let t=e.prob??NaN;if(!(t>0&&t<=1))return q;let i=1-t;return I(i/t,i/(t*t),Fr(.5,t),0,(2-t)/Math.sqrt(i),6+t*t/i)}case"nbinom":{let t=e.size??NaN;if(!(t>0&&Number.isFinite(t)))return q;let i=Gt(e,"mu")?t/(t+e.mu):e.prob??NaN;if(!(i>0&&i<=1))return q;let o=1-i,u=Gt(e,"mu")?{mu:e.mu}:{prob:i},f=N=>Gt(e,"mu")?vn([N,0],t,(t-1)*e.mu):vn(L([t-1,0],[N,0]),i,t-1),s=0;if(t>1){for(s=Math.max(0,Math.floor((t-1)*o/i)-1);f(s+1);)s++;for(;s>0&&!f(s);)s--}return I(t*o/i,t*o/(i*i),kr(.5,t,u),s,(2-i)/Math.sqrt(t*o),6/t+i*i/(t*o))}case"hyper":{let t=e.m??NaN,i=e.n??NaN,o=e.k??NaN;if(!([t,i,o].every(N=>Number.isInteger(N)&&N>=0)&&o<=t+i))return q;let u=t+i,f=Math.floor((o+1)*(t+1)/(u+2)),s=((u-1)*u*u*(u*(u+1)-6*t*i-6*o*(u-o))+6*o*t*i*(u-o)*(5*u-6))/(o*t*i*(u-o)*(u-2)*(u-3));return I(o*t/u,o*t/u*(i/u)*(u-o)/(u-1),Nr(.5,t,i,o),f,(u-2*t)*Math.sqrt(u-1)*(u-2*o)/(Math.sqrt(o*t*i*(u-o))*(u-2)),s)}case"invgamma":{let t=e.alpha??NaN,i=e.beta??1;return t>0&&Number.isFinite(t)&&i>0&&Number.isFinite(i)?I(t>1?i/(t-1):1/0,t>2?i*i/((t-1)**2*(t-2)):t>1?1/0:NaN,Rr(.5,t,{beta:i}),i/(t+1),t>3?4*Math.sqrt(t-2)/(t-3):NaN,t>4?(30*t-66)/((t-3)*(t-4)):NaN):q}case"kumar":{let t=e.a??NaN,i=e.b??NaN;if(!(t>0&&i>0&&Number.isFinite(t)&&Number.isFinite(i)))return q;let o=i*Math.exp(Nn(1+1/t,i)),u=i<1?kn(s=>yt(s,t,i,!0,!1),()=>1,o,Dr(o,t,i,!0,!1),0,1):In(s=>Lr(s,t,i,!1),o,0,1),f;return t>=1&&i>=1?f=t===1&&i===1?NaN:Math.pow((t-1)/(t*i-1),1/t):t<1&&i<1?f=NaN:f=t<1?0:1,I(o,u.variance,_r(.5,t,i),f,u.skewness,u.kurtosis)}case"pareto":{let{a:t=1,b:i=1}=e;return t>0&&Number.isFinite(t)&&i>0&&Number.isFinite(i)?I(t>1?t*i/(t-1):1/0,t>2?i*i*t/((t-1)**2*(t-2)):t>1?1/0:NaN,i*Math.pow(2,1/t),i,t>3?2*(1+t)/(t-3)*Math.sqrt((t-2)/t):NaN,t>4?6*(t**3+t*t-6*t-2)/(t*(t-3)*(t-4)):NaN):q}case"triang":{let{a:t=-1,b:i=1}=e,o=e.c??(t+i)/2;if(!(Number.isFinite(t)&&Number.isFinite(i)&&t<i&&t<=o&&o<=i))return q;let u=t*t+i*i+o*o-t*i-t*o-i*o;return I((t+i+o)/3,u/18,jr(.5,{a:t,b:i,c:o}),o,Math.SQRT2*(t+i-2*o)*(2*t-i-o)*(t-2*i+o)/(5*u**1.5),-.6)}case"laplace":{let{mu:t=0,sigma:i=1}=e;return Number.isFinite(t)&&i>0&&Number.isFinite(i)?I(t,2*i*i,t,t,0,3):q}case"arcsine":{let{a:t=0,b:i=1}=e;return Number.isFinite(t)&&Number.isFinite(i)&&t<i?I(t+(i-t)/2,(i-t)**2/8,Ur(.5,{a:t,b:i}),NaN,0,-1.5):q}}throw new RangeError(`unknown distribution '${String(r)}'`)}var Ro=-.5,Eo=.3333333,So=-.2500068,Lo=.2000118,Do=-.1661269,_o=.1421878,Qo=-.1384794,Oo=.125006,Bo=1/7,jo=1/12,zo=1/24,An=.3989422804014327,Xo=[1,1,2,6,24,120,720,5040,40320,362880],Y=0,Rn=0,En=new Float64Array(36),Ut=0,Sn=0,Cr=0,Ct=0,Ln=0,Ft=0,Dn=0,_n=0,Qn=0,Nt=0,qt=0,On=0,Bn=0,jn=0,zn=0,wt=0;function ct(r){if(!Number.isFinite(r)||r<0)return NaN;if(r<=0)return 0;let n=r>=10,e=!1;if(!(n&&r===Ut))if(n)e=!0,Ut=r,Ft=Math.sqrt(r),Dn=6*r*r,Qn=Math.floor(r-1.1484);else for(r!==Ut&&(Ut=r,Rn=Math.max(1,Math.trunc(r)),Y=0,Ct=Ln=Cr=Math.exp(-r));;){let p=M();if(p<=Ln)return 0;if(Y>0){let h=p>.458?Math.min(Y,Rn):1;for(let d=h;d<=Y;d++)if(p<=En[d])return d;if(Y===35)continue}Y++;for(let h=Y;h<=35;h++)if(Cr*=r/h,Ct+=Cr,En[h]=Ct,p<=Ct)return Y=h,h;Y=35}let t=-1,i=0,o=0,u=0,f=r+Ft*st();if(f>=0&&(t=Math.floor(f),t>=Qn||(i=t,o=r-i,u=M(),Dn*u>=o*o*o)))return t;(e||r!==Sn)&&(Sn=r,_n=An/Ft,Nt=zo/r,qt=.3*Nt*Nt,wt=Bo*Nt*qt,zn=qt-15*wt,jn=Nt-6*qt+45*wt,Bn=1-Nt+3*qt-15*wt,On=.1069/r);let s=0,N=0,a=0,c=0,m=()=>{if(t<10)s=-r,N=Math.pow(r,t)/Xo[t];else{let d=jo/i;d=d*(1-4.8*d*d);let k=o/i;Math.abs(k)<=.25?s=i*k*k*(((((((Oo*k+Qo)*k+_o)*k+Do)*k+Lo)*k+So)*k+Eo)*k+Ro)-d:s=i*Math.log(1+k)-o-d,N=An/Math.sqrt(i)}let p=(.5-o)/Ft,h=p*p;a=-.5*h,c=_n*(((wt*h+zn)*h+jn)*h+Bn)};if(f>=0&&(m(),c-u*c<=N*Math.exp(s-a)))return t;for(;;){let p=H();u=2*M()-1;let h=1.8+(u>=0?p:-p);if(h>-.6744&&(t=Math.floor(r+Ft*h),i=t,o=r-i,m(),On*Math.abs(u)<=N*Math.exp(s+p)-c*Math.exp(a+p)))break}return t}function Go(r,n){return x(r,()=>ct(n))}function Uo(r,n){return x(r,()=>!Number.isFinite(n)||n<=0||n>1?NaN:ct(H()*((1-n)/n)))}function Co(r,n,e){let{prob:t,mu:i}=e;if(t===void 0==(i===void 0))throw new TypeError("specify exactly one of prob and mu");let o=Number.isFinite(n)?n:Number.MAX_VALUE/2;if(i!==void 0)return x(r,()=>!Number.isFinite(i)||Number.isNaN(n)||n<=0||i<0?NaN:i===0?0:ct(W(o,i/o)));let u=t;return x(r,()=>!Number.isFinite(u)||Number.isNaN(n)||n<=0||u<=0||u>1?NaN:u===1?0:ct(W(o,(1-u)/u)))}var To=5.656854,Vo=.36787944117144233,Ko=.04166669,Ho=.02083148,Yo=.00801191,Wo=.00144121,$o=-7388e-8,Jo=24511e-8,Zo=2424e-7,Po=.3333333,tu=-.250003,ru=.2000062,nu=-.1662921,eu=.1423657,iu=-.1367177,ou=.1233795,Xn=0,Gn=0,B=0,mt=0,Un=0,Tr=0,It=0,vt=0,Tt=0;function Cn(r){let n=r/(B+B);return Math.abs(n)<=.25?Tr+.5*r*r*((((((ou*n+iu)*n+eu)*n+nu)*n+ru)*n+tu)*n+Po)*n:Tr-B*r+.25*r*r+(mt+mt)*Math.log(1+n)}function W(r,n){if(Number.isNaN(r)||Number.isNaN(n))return NaN;if(r<=0||n<=0)return n===0||r===0?0:NaN;if(!Number.isFinite(r)||!Number.isFinite(n))return 1/0;if(r<1){let u=1+Vo*r,f;for(;;){let s=u*M();if(s>=1){if(f=-Math.log((u-s)/r),H()>=(1-r)*Math.log(f))break}else if(f=Math.exp(Math.log(s)/r),H()>=f)break}return n*f}r!==Xn&&(Xn=r,mt=r-.5,B=Math.sqrt(mt),Un=To-B*12);let e=st(),t=B+.5*e,i=t*t;if(e>=0)return n*i;let o=M();if(Un*o<=e*e*e)return n*i;if(r!==Gn){Gn=r;let u=1/r;Tr=((((((Zo*u+Jo)*u+$o)*u+Wo)*u+Yo)*u+Ho)*u+Ko)*u,r<=3.686?(It=.463+B+.178*mt,vt=1.235,Tt=.195/B-.079+.16*B):r<=13.022?(It=1.654+.0076*mt,vt=1.68/B+.275,Tt=.062/B+.024):(It=1.77,vt=.75,Tt=.1515/B)}if(t>0){let u=Cn(e);if(Math.log(1-o)<=u)return n*i}for(;;){let u=H();if(o=M(),o=o+o-1,e=o<0?It-vt*u:It+vt*u,e>=-.71874483771719){let f=Cn(e);if(f>0){let s=Math.expm1(f);if(Tt*Math.abs(o)<=s*Math.exp(u-.5*e*e))break}}}return t=B+.5*e,n*t*t}function uu(r,n,e={}){let t=nn(e);return x(r,()=>W(n,t))}function kt(r){return!Number.isFinite(r)||r<0?NaN:W(r/2,2)}function fu(r,n){if(!Number.isFinite(r)||!Number.isFinite(n)||r<0||n<0)return NaN;if(n===0)return r===0?0:W(r/2,2);let e=ct(n/2);return e>0&&(e=kt(2*e)),r>0&&(e+=W(r/2,2)),e}function nt(r,n,e={}){let{ncp:t}=e;return t===void 0?x(r,()=>kt(n)):x(r,()=>fu(n,t))}function su(r,n,e={}){let{ncp:t}=e;if(t===void 0)return x(r,()=>Number.isNaN(n)||n<=0?NaN:Number.isFinite(n)?st()/Math.sqrt(kt(n)/n):st());if(Number.isNaN(t))return x(r,()=>NaN);let i=x(r,()=>hn(t,1)),o=nt(r,n);return i.map((u,f)=>u/Math.sqrt(o[f]/n))}function au(r,n,e,t={}){let{ncp:i}=t;if(i===void 0)return x(r,()=>{if(Number.isNaN(n)||Number.isNaN(e)||n<=0||e<=0)return NaN;let f=Number.isFinite(n)?kt(n)/n:1,s=Number.isFinite(e)?kt(e)/e:1;return f/s});let o=nt(r,n,{ncp:i}),u=nt(r,e);return o.map((f,s)=>f/n/(u[s]/e))}var Nu=1024*Math.LN2,At=0,Tn=0,Vr=0,Vn=0,Kn=0,Hn=-1,Yn=-1;function Kr(r,n){let e=At*Math.log(r/(1-r));if(e<=Nu){let t=n*Math.exp(e);return Number.isFinite(t)||(t=Number.MAX_VALUE),[e,t]}return[e,Number.MAX_VALUE]}function cu(r,n){if(Number.isNaN(r)||Number.isNaN(n)||r<0||n<0)return NaN;if(!Number.isFinite(r)&&!Number.isFinite(n))return .5;if(r===0&&n===0)return M()<.5?0:1;if(!Number.isFinite(r)||n===0)return 1;if(!Number.isFinite(n)||r===0)return 0;let e=Hn===r&&Yn===n;e||(Hn=r,Yn=n);let t=Math.min(r,n),i=Math.max(r,n),o=t+i,u,f;if(t<=1){for(e||(At=1/t,Vr=1+i-t,Vn=Vr*(.0138889+.0416667*t)/(i*At-.777778),Kn=.25+(.5+.25/Vr)*t);;){let a=M(),c=M(),m;if(a<.5){let p=a*c;if(m=a*p,.25*c+m-p>=Vn)continue}else{if(m=a*a*c,m<=.25){[u,f]=Kr(a,i);break}if(m>=Kn)continue}if([u,f]=Kr(a,i),o*(Math.log(o/(t+f))+u)-1.3862944>=Math.log(m))break}return r===t?t/(t+f):f/(t+f)}e||(At=Math.sqrt((o-2)/(2*t*i-o)),Tn=t+1/At);let s,N;do{let a=M(),c=M();[u,f]=Kr(a,t);let m=a*a*c;s=Tn*u-1.3862944;let p=t+s-f;if(p+2.609438>=5*m||(N=Math.log(m),p>N))break}while(s+o*Math.log(o/(i+f))<N);return r!==t?i/(i+f):f/(i+f)}function mu(r,n,e,t={}){let{ncp:i}=t;if(i===void 0)return x(r,()=>cu(n,e));let o=nt(r,2*n,{ncp:i}),u=nt(r,2*e);return o.map((f,s)=>f/(f+u[s]))}var lu=2147483647,et=0,Rt=0,lt=0,Z=0,Vt=0,Kt=0,Wn=0,$n=0,Et=0,Ht=0,Yt=0,pt=0,Wt=0,Hr=-1,Jn=-1,j=0;function $t(r){let n=r*r;return(13860-(462-(132-(99-140/n)/n)/n)/n)/r/166320}function Jt(r,n){if(!Number.isFinite(r))return NaN;let e=Math.round(r);if(e!==r)return NaN;if(!Number.isFinite(n)||e<0||n<0||n>1)return NaN;if(e===0||n===0)return 0;if(n===1)return e;if(e>=lu)return gt(M(),e,n,{lowerTail:!1});let t=e,i=Math.min(n,1-n),o=1-i,u=t*i,f=i/o,s=f*(t+1),N;if(n!==Hr||t!==Jn)if(Hr=n,Jn=t,u<30)$n=pn(o,t),N=!0;else{N=!1,Rt=u+i,j=Math.trunc(Rt),lt=u*o,Z=Math.trunc(2.195*Math.sqrt(lt)-4.6*o)+.5,pt=j+.5,Et=pt-Z,Wt=pt+Z,et=.134+20.5/(15.3+j);let c=(Rt-Et)/(Rt-Et*i);Ht=c*(1+.5*c),c=(Wt-Rt)/(Wt*o),Yt=c*(1+.5*c),Vt=Z*(1+et+et),Kt=Vt+et/Ht,Wn=Kt+et/Yt}else N=u<30;let a;if(N)t:for(;;){a=0;let c=$n,m=M();for(;;){if(m<c)break t;if(a>110)break;m-=c,a++,c*=s/a-f}}else for(;;){let c=M()*Wn,m=M();if(c<=Z){a=Math.trunc(pt-Z*m+c);break}if(c<=Vt){let h=Et+(c-Z)/et;if(m=m*et+1-Math.abs(pt-h)/Z,m>1||m<=0)continue;a=Math.trunc(h)}else if(c>Kt){if(a=Math.trunc(Wt-Math.log(m)/Yt),a>t)continue;m=m*(c-Kt)*Yt}else{if(a=Math.trunc(Et+Math.log(m)/Ht),a<0)continue;m=m*(c-Vt)*Ht}let p=Math.abs(a-j);if(p<=20||p>=lt/2-1){let h=1;if(j<a)for(let d=j+1;d<=a;d++)h*=s/d-f;else if(j>a)for(let d=a+1;d<=j;d++)h/=s/d-f;if(m<=h)break}else{let h=p/lt*((p*(p/3+.625)+.1666666666666)/lt+.5),d=-p*p/(2*lt),k=Math.log(m);if(k<d-h)break;if(k<=d+h){let it=a+1,ht=j+1,dt=t+1-j,J=t-a+1;if(k<=pt*Math.log(ht/it)+(t-j+.5)*Math.log(dt/J)+(a-j)*Math.log(J*i/(it*o))+$t(ht)+$t(dt)+$t(it)+$t(J))break}}}return Hr>.5&&(a=t-a),a}function pu(r,n,e){return x(r,()=>Jt(n,e))}function hu(r,n,e){if(!Number.isFinite(n)||n<0||Math.round(n)!==n)throw new RangeError("size must be a non-negative integer");let t=0;for(let f of e){if(!Number.isFinite(f)||f<0)throw new RangeError("prob must contain non-negative finite numbers");t+=f}if(t===0)throw new RangeError("prob must contain at least one positive value");let i=e.map(f=>f/t),o=i.length,u=()=>{let f=new Array(o).fill(0),s=n,N=1;for(let a=0;a<o-1;a++){if(i[a]){let c=i[a]/N;f[a]=c<1?Jt(s,c):s,s-=f[a]}if(s<=0)return f;N-=i[a]}return f[o-1]=s,f};if(!Number.isFinite(r)||r<0)throw new RangeError("n must be a non-negative finite number");return Array.from({length:Math.trunc(r)},u)}function du(r,n){return x(r,()=>{if(Number.isNaN(n))return NaN;let e=Math.round(n);if(e<0)return NaN;if(e===0)return 0;let t=0;for(let i=1;i<=e;i++)t+=i*Math.floor(M()+.5);return t})}function Mu(r,n,e){return x(r,()=>{if(Number.isNaN(n)||Number.isNaN(e))return NaN;let t=Math.round(n),i=Math.round(e);if(t<0||i<0)return NaN;if(t===0||i===0)return 0;let o=t+i,u=new Int32Array(o);for(let s=0;s<o;s++)u[s]=s;let f=0;for(let s=0;s<i;s++){let N=tt(o);f+=u[N],u[N]=u[--o]}return f-i*(i-1)/2})}function bu(r,n={}){return Zn(r,n).map(e=>e-1)}function Zn(r,n){if(!Number.isFinite(r)||r<0||r>=2**31)throw new RangeError("n must be a non-negative number less than 2^31");r=Math.trunc(r);let{replace:e=!1,prob:t}=n,i=n.size!==void 0,o=i?n.size:r;if(!Number.isFinite(o)||o<0)throw new RangeError("size must be a non-negative number");let u=Math.trunc(o);if(t!==void 0){if(t.length!==r)throw new TypeError("prob must have length n");let a=xu(t,u,e);if(e){let c=0;for(let m=0;m<r;m++)r*a[m]>.1&&c++;return c>200?wu(a,u):Fu(a,u)}if(u>r)throw new RangeError("cannot take a sample larger than the population when replace is false");return qu(a,u)}if(!e&&u>r)throw new RangeError("cannot take a sample larger than the population when replace is false");if(!e&&r>1e7&&i&&u<=r/2){let a=new Set,c=[];for(;c.length<u;){let m=tt(r);a.has(m)||(a.add(m),c.push(m+1))}return c}let f=new Array(u);if(e||u<2){for(let a=0;a<u;a++)f[a]=tt(r)+1;return f}let s=new Int32Array(r);for(let a=0;a<r;a++)s[a]=a;let N=r;for(let a=0;a<u;a++){let c=tt(N);f[a]=s[c]+1,s[c]=s[--N]}return f}function gu(r,n={}){return Zn(r.length,n).map(e=>r[e-1])}function xu(r,n,e){let t=0,i=0;for(let o of r){if(!Number.isFinite(o))throw new RangeError("prob contains NaN or infinite values");if(o<0)throw new RangeError("prob contains negative values");o>0&&(i++,t+=o)}if(i===0||!e&&n>i)throw new RangeError("too few positive probabilities");return Float64Array.from(r,o=>o/t)}function yu(r,n){let e=r.length;if(e<=1)return;let t=s=>r[s-1],i=(e>>1)+1,o=e,u,f;for(;;){if(i>1)i=i-1,u=t(i),f=n[i-1];else if(u=t(o),f=n[o-1],r[o-1]=t(1),n[o-1]=n[0],--o===1){r[0]=u,n[0]=f;return}let s=i,N=i<<1;for(;N<=o;)N<o&&t(N)>t(N+1)&&++N,u>t(N)?(r[s-1]=t(N),n[s-1]=n[N-1],s=N,N+=N):N=o+1;r[s-1]=u,n[s-1]=f}}function Pn(r){let n=new Int32Array(r.length);for(let e=0;e<r.length;e++)n[e]=e+1;return yu(r,n),n}function Fu(r,n){let e=Float64Array.from(r),t=e.length,i=Pn(e);for(let u=1;u<t;u++)e[u]+=e[u-1];let o=new Array(n);for(let u=0;u<n;u++){let f=M(),s=0;for(;s<t-1&&!(f<=e[s]);s++);o[u]=i[s]}return o}function qu(r,n){let e=Float64Array.from(r),t=e.length,i=Pn(e),o=new Array(n),u=1;for(let f=0,s=t-1;f<n;f++,s--){let N=u*M(),a=0,c=0;for(;c<s&&(a+=e[c],!(N<=a));c++);o[f]=i[c],u-=e[c];for(let m=c;m<s;m++)e[m]=e[m+1],i[m]=i[m+1]}return o}function wu(r,n){let e=r.length,t=new Float64Array(e),i=new Int32Array(e),o=new Int32Array(e),u=-1,f=e;for(let N=0;N<e;N++)t[N]=r[N]*e,t[N]<1?o[++u]=N:o[--f]=N;if(u>=0&&f<e)for(let N=0;N<e-1;N++){let a=o[N],c=o[f];if(i[a]=c,t[c]+=t[a]-1,t[c]<1&&f++,f>=e)break}let s=new Array(n);for(let N=0;N<n;N++){let a=tt(e);s[N]=M()<t[a]?a+1:i[a]+1}return s}var Yr=2147483647,Iu=.9189385332046728,vu=.0078,ku=.0034,Au=1e25,Ru=57.564627324851145,Eu=[0,0,.6931471805599453,1.791759469228055,3.1780538303479458,4.787491742782046,6.579251212010101,8.525161361065415];function w(r){if(r<0)return 0;if(r<=7)return Eu[r];let n=r,e=n*n;return(n+.5)*Math.log(n)-n+Iu+(.0833333333333333-.00277777777777778/e)/n}var te=-1,re=-1,ne=-1,S=0,St=0,Lt=0,g=0,R=0,v=0,$=0,ee=0,nr=0,Dt=0,G=0,U=0,ie=0,oe=0,Zt=0,Pt=0,tr=0,rr=0,ue=0;function Su(r,n,e){if(!Number.isFinite(r)||!Number.isFinite(n)||!Number.isFinite(e))return NaN;if(r=Math.round(r),n=Math.round(n),e=Math.round(e),r<0||n<0||e<0||e>r+n)return NaN;if(r>=Yr||n>=Yr||e>=Yr)return e===1?Jt(e,r/(r+n)):mn(M(),r,n,e,!1,!1);let t=r,i=n,o=e,u,f;t!==re||i!==ne?(u=!0,f=!0):o!==te?(u=!1,f=!0):(u=!1,f=!1),u&&(re=t,ne=i,$=t+i,t<=i?(R=t,v=i):(R=i,v=t)),f&&(te=o,g=o+o>=$?Math.trunc($-o):o),(u||f)&&(S=Math.trunc((g+1)*(R+1)/($+2)),St=Math.max(0,g-v),Lt=Math.min(R,g));let s;if(St===Lt)s=Lt;else if(S-St<10){if(u||f){let N;g<v?N=w(v)+w(R+v-g)-w(v-g)-w(R+v):N=w(R)+w(g)-w(g-v)-w(R+v),ee=Math.exp(N+Ru)}t:for(;;){s=St;let N=M()*Au,a=ee;for(;N>a;)if(N-=a,a*=(R-s)*(g-s),s++,a=a/s/(v-g+s),s>Lt)continue t;break}}else{if(u||f){let a=Math.sqrt(($-g)*g*R*v/($-1)/$/$);Dt=Math.trunc(1.5*a)+.5,G=S-Dt+.5,U=S+Dt+.5,nr=w(S)+w(R-S)+w(g-S)+w(v-g+S),ie=Math.exp(nr-w(Math.trunc(G))-w(Math.trunc(R-G))-w(Math.trunc(g-G))-w(Math.trunc(v-g+G))),oe=Math.exp(nr-w(Math.trunc(U-1))-w(Math.trunc(R-U+1))-w(Math.trunc(g-U+1))-w(Math.trunc(v-g+U-1))),Zt=-Math.log(G*(v-g+G)/(R-G+1)/(g-G+1)),Pt=-Math.log((R-U+1)*(g-U+1)/U/(v-g+U)),tr=Dt+Dt,rr=tr+ie/Zt,ue=rr+oe/Pt}let N=0;for(;;){let a=M()*ue,c=M();if(++N>=1e4)return NaN;if(a<tr)s=Math.trunc(G+a);else if(a<=rr){if(s=Math.trunc(G+Math.log(c)/Zt),s<St)continue;c=c*(a-tr)*Zt}else{if(s=Math.trunc(U-Math.log(c)/Pt),s>Lt)continue;c=c*(a-rr)*Pt}if(Lu(s,c))break}}return o+o>=$?s=t>i?o-i+s:t-s:t>i&&(s=o-s),s}function Lu(r,n){if(S<100||r<=50){let z=1;if(S<r)for(let A=S+1;A<=r;A++)z=z*(R-A+1)*(g-A+1)/(v-g+A)/A;else if(S>r)for(let A=r+1;A<=S;A++)z=z*A*(v-g+A)/(R-A+1)/(g-A+1);return n<=z}let e=r,t=e+1,i=e-S,o=R-e+1,u=g-e+1,f=v-g+t,s=-i/t,N=i/o,a=i/u,c=-i/f,m=o*u/(t*f)-1,p=m<0?1+m:1,h=m*(1+m*(-.5+m/3)),d=h-.25*(m*m*m*m)/p,k=S+.5,it=R-S+.5,ht=g-S+.5,dt=v-g+k,J=z=>z*(1+z*(-.5+z/3)),Wr=e*h-S*d+ku+k*J(s)+it*J(N)+ht*J(a)+dt*J(c),er=Math.log(n);if(er>Wr)return!1;let _t=(z,A)=>{let $r=z*(A*A*A*A);return A<0?$r/(1+A):$r},fe=_t(k,s),se=_t(it,N),ae=_t(ht,a),Ne=_t(dt,c);return er<Wr-.25*(fe+se+ae+Ne)+(e+S)*(d-h)-vu?!0:er<=nr-w(r)-w(R-r)-w(g-r)-w(v-g+r)}function Du(r,n,e,t){return x(r,()=>Su(n,e,t))}function _u(r,n,e={}){let{beta:t=1}=e;return x(r,()=>n>0&&t>0&&Number.isFinite(n)&&Number.isFinite(t)?1/W(n,1/t):NaN)}function Qu(r,n,e){return x(r,()=>n>0&&e>0&&Number.isFinite(n)&&Number.isFinite(e)?yt(1-M(),n,e,!0,!1):NaN)}function Ou(r,n={}){let{a:e=1,b:t=1}=n;return x(r,()=>e>0&&t>0&&Number.isFinite(e)&&Number.isFinite(t)?Or(1-M(),e,t,!0,!1):NaN)}function Bu(r,n={}){let{a:e=-1,b:t=1}=n,i=n.c??(e+t)/2;return x(r,()=>{if(!(Number.isFinite(e)&&Number.isFinite(t)&&e<t&&e<=i&&i<=t))return NaN;let o=M(),u=M(),f=(i-e)/(t-e);return e+(t-e)*((1-f)*Math.min(o,u)+f*Math.max(o,u))})}function ju(r,n={}){let{mu:e=0,sigma:t=1}=n;return x(r,()=>{if(!(Number.isFinite(e)&&t>0&&Number.isFinite(t)))return NaN;let i=H(),o=M()>.5?1:-1;return e+t*o*i})}function zu(r,n={}){let{a:e=0,b:t=1}=n;return x(r,()=>Number.isFinite(e)&&Number.isFinite(t)&&e<t?Gr(M(),e,t,!0,!1):NaN)}export{Io as darcsine,be as dbeta,xe as dbinom,Ri as dcauchy,Ve as dchisq,ii as dexp,de as df,me as dgamma,Xi as dgeom,Ie as dhyper,ro as dinvgamma,Ao as distSummary,io as dkumar,xo as dlaplace,pi as dlnorm,yi as dlogis,He as dmultinom,$i as dnbinom,ce as dnorm,so as dpareto,pe as dpois,ke as dsignrank,Fe as dt,po as dtriang,Je as dunif,_i as dweibull,Ee as dwilcox,Oe as getRandomSeed,vo as parcsine,ge as pbeta,ye as pbinom,Ei as pcauchy,Ke as pchisq,oi as pexp,Me as pf,le as pgamma,Gi as pgeom,ve as phyper,no as pinvgamma,oo as pkumar,yo as plaplace,hi as plnorm,Fi as plogis,Ji as pnbinom,Mt as pnorm,ao as ppareto,he as ppois,Ae as psignrank,qe as pt,ho as ptriang,De as ptukey,Ze as punif,Qi as pweibull,Se as pwilcox,Ur as qarcsine,ar as qbeta,gt as qbinom,Si as qcauchy,mr as qchisq,ui as qexp,ur as qf,ir as qgamma,Fr as qgeom,Nr as qhyper,Rr as qinvgamma,_r as qkumar,Fo as qlaplace,di as qlnorm,qi as qlogis,kr as qnbinom,ut as qnorm,No as qpareto,or as qpois,Re as qsignrank,we as qt,jr as qtriang,_e as qtukey,Pe as qunif,gr as qweibull,Le as qwilcox,zu as rarcsine,mu as rbeta,pu as rbinom,Ce as rcauchy,nt as rchisq,Xe as rexp,au as rf,uu as rgamma,Uo as rgeom,Du as rhyper,_u as rinvgamma,Qu as rkumar,ju as rlaplace,Ge as rlnorm,Ue as rlogis,hu as rmultinom,Co as rnbinom,ze as rnorm,Ou as rpareto,Go as rpois,du as rsignrank,su as rt,Bu as rtriang,je as runif,Te as rweibull,Mu as rwilcox,gu as sample,bu as sampleInt,Be as setRandomSeed,Qe as setSeed};
@@ -0,0 +1,7 @@
1
+ export { sum, prod, mean, weightedMean, variance, sd, median, range, cumsum, cumprod, cummax, cummin, diff, type NaRmOptions, type MeanOptions, type DiffOptions, } from "../descriptive/basic.js";
2
+ export { quantile, IQR, fivenum, mad, type QuantileOptions, type MadOptions } from "../descriptive/quantile.js";
3
+ export { rank, type RankOptions, type TiesMethod } from "../descriptive/rank.js";
4
+ export { cov, cor, type CovOptions, type CorUse } from "../descriptive/cov.js";
5
+ export { tabulate, table, unique, cut, findInterval, type TableOptions, type CutOptions, type FindIntervalOptions } from "../descriptive/table.js";
6
+ export { hist, pretty, ecdf, type HistOptions, type HistResult, type PrettyOptions } from "../descriptive/hist.js";
7
+ export { skewness, kurtosis, geometricMean, modes, meanAD, cv, scale, type MomentOptions, type MeanADOptions, type CvOptions, type ScaleOptions, } from "../descriptive/moments.js";
@@ -0,0 +1,8 @@
1
+ // Descriptive statistics (rStats.js/descriptive): R's summaries of vectors and matrices, with naRm for missing values
2
+ export { sum, prod, mean, weightedMean, variance, sd, median, range, cumsum, cumprod, cummax, cummin, diff, } from "../descriptive/basic.js";
3
+ export { quantile, IQR, fivenum, mad } from "../descriptive/quantile.js";
4
+ export { rank } from "../descriptive/rank.js";
5
+ export { cov, cor } from "../descriptive/cov.js";
6
+ export { tabulate, table, unique, cut, findInterval } from "../descriptive/table.js";
7
+ export { hist, pretty, ecdf } from "../descriptive/hist.js";
8
+ export { skewness, kurtosis, geometricMean, modes, meanAD, cv, scale, } from "../descriptive/moments.js";
@@ -0,0 +1,41 @@
1
+ export { dnorm, pnorm, qnorm, type NormalOptions } from "../distributions/normal.js";
2
+ export { dgamma, pgamma, qgamma, type GammaParams } from "../distributions/gamma.js";
3
+ export { dchisq, pchisq, qchisq } from "../distributions/chisq.js";
4
+ export { dpois, ppois, qpois } from "../distributions/poisson.js";
5
+ export { dbeta, pbeta, qbeta } from "../distributions/beta.js";
6
+ export { dbinom, pbinom, qbinom } from "../distributions/binomial.js";
7
+ export { dmultinom, type MultinomialOptions } from "../distributions/multinomial.js";
8
+ export { dt, pt, qt } from "../distributions/t.js";
9
+ export { df, pf, qf } from "../distributions/f.js";
10
+ export { dunif, punif, qunif, type UniformParams } from "../distributions/uniform.js";
11
+ export { dexp, pexp, qexp, type ExponentialParams } from "../distributions/exponential.js";
12
+ export { dlnorm, plnorm, qlnorm, type LognormalParams } from "../distributions/lognormal.js";
13
+ export { dlogis, plogis, qlogis, type LocationScaleParams } from "../distributions/logistic.js";
14
+ export { dcauchy, pcauchy, qcauchy } from "../distributions/cauchy.js";
15
+ export { dweibull, pweibull, qweibull, type WeibullParams } from "../distributions/weibull.js";
16
+ export { dgeom, pgeom, qgeom } from "../distributions/geometric.js";
17
+ export { dnbinom, pnbinom, qnbinom, type NegBinomialParams } from "../distributions/negbinomial.js";
18
+ export { dhyper, phyper, qhyper } from "../distributions/hypergeometric.js";
19
+ export { dsignrank, psignrank, qsignrank } from "../distributions/signrank.js";
20
+ export { dwilcox, pwilcox, qwilcox } from "../distributions/wilcox.js";
21
+ export { ptukey, qtukey, type TukeyOptions } from "../distributions/tukey.js";
22
+ export { dinvgamma, pinvgamma, qinvgamma, type InvgammaParams } from "../distributions/invgamma.js";
23
+ export { dkumar, pkumar, qkumar } from "../distributions/kumaraswamy.js";
24
+ export { dpareto, ppareto, qpareto, type ParetoParams } from "../distributions/pareto.js";
25
+ export { dtriang, ptriang, qtriang, type TriangParams } from "../distributions/triangular.js";
26
+ export { dlaplace, plaplace, qlaplace, type LaplaceParams } from "../distributions/laplace.js";
27
+ export { darcsine, parcsine, qarcsine, type ArcsineParams } from "../distributions/arcsine.js";
28
+ export { distSummary, type DistName, type DistSummary } from "../distributions/summary.js";
29
+ export type { DensityOptions, TailOptions } from "../internal/dpq.js";
30
+ export type { NoncentralOption } from "../internal/noncentral.js";
31
+ export type { Vectorizable, VectorResult } from "../internal/vectorize.js";
32
+ export { setSeed, getRandomSeed, setRandomSeed } from "../random/rng.js";
33
+ export { runif, rnorm, rexp, rlnorm, rlogis, rcauchy, rweibull } from "../random/continuous.js";
34
+ export { rgamma, rchisq, rt, rf } from "../random/gamma.js";
35
+ export { rbeta } from "../random/beta.js";
36
+ export { rpois, rgeom, rnbinom } from "../random/poisson.js";
37
+ export { rbinom, rmultinom } from "../random/binomial.js";
38
+ export { rsignrank, rwilcox } from "../random/rank.js";
39
+ export { sample, sampleInt, type SampleOptions } from "../random/sample.js";
40
+ export { rhyper } from "../random/hyper.js";
41
+ export { rinvgamma, rkumar, rpareto, rtriang, rlaplace, rarcsine } from "../random/extra.js";
@@ -0,0 +1,41 @@
1
+ // Probability distributions and random numbers (rStats.js/distributions): d/p/q/r functions with R's names
2
+ export { dnorm, pnorm, qnorm } from "../distributions/normal.js";
3
+ export { dgamma, pgamma, qgamma } from "../distributions/gamma.js";
4
+ export { dchisq, pchisq, qchisq } from "../distributions/chisq.js";
5
+ export { dpois, ppois, qpois } from "../distributions/poisson.js";
6
+ export { dbeta, pbeta, qbeta } from "../distributions/beta.js";
7
+ export { dbinom, pbinom, qbinom } from "../distributions/binomial.js";
8
+ export { dmultinom } from "../distributions/multinomial.js";
9
+ export { dt, pt, qt } from "../distributions/t.js";
10
+ export { df, pf, qf } from "../distributions/f.js";
11
+ export { dunif, punif, qunif } from "../distributions/uniform.js";
12
+ export { dexp, pexp, qexp } from "../distributions/exponential.js";
13
+ export { dlnorm, plnorm, qlnorm } from "../distributions/lognormal.js";
14
+ export { dlogis, plogis, qlogis } from "../distributions/logistic.js";
15
+ export { dcauchy, pcauchy, qcauchy } from "../distributions/cauchy.js";
16
+ export { dweibull, pweibull, qweibull } from "../distributions/weibull.js";
17
+ export { dgeom, pgeom, qgeom } from "../distributions/geometric.js";
18
+ export { dnbinom, pnbinom, qnbinom } from "../distributions/negbinomial.js";
19
+ export { dhyper, phyper, qhyper } from "../distributions/hypergeometric.js";
20
+ export { dsignrank, psignrank, qsignrank } from "../distributions/signrank.js";
21
+ export { dwilcox, pwilcox, qwilcox } from "../distributions/wilcox.js";
22
+ export { ptukey, qtukey } from "../distributions/tukey.js";
23
+ // Distributions outside base R (extraDistr's names and parameters; arcsine as beta(1/2, 1/2) on (a, b))
24
+ export { dinvgamma, pinvgamma, qinvgamma } from "../distributions/invgamma.js";
25
+ export { dkumar, pkumar, qkumar } from "../distributions/kumaraswamy.js";
26
+ export { dpareto, ppareto, qpareto } from "../distributions/pareto.js";
27
+ export { dtriang, ptriang, qtriang } from "../distributions/triangular.js";
28
+ export { dlaplace, plaplace, qlaplace } from "../distributions/laplace.js";
29
+ export { darcsine, parcsine, qarcsine } from "../distributions/arcsine.js";
30
+ export { distSummary } from "../distributions/summary.js";
31
+ // Random numbers (same streams as R's set.seed)
32
+ export { setSeed, getRandomSeed, setRandomSeed } from "../random/rng.js";
33
+ export { runif, rnorm, rexp, rlnorm, rlogis, rcauchy, rweibull } from "../random/continuous.js";
34
+ export { rgamma, rchisq, rt, rf } from "../random/gamma.js";
35
+ export { rbeta } from "../random/beta.js";
36
+ export { rpois, rgeom, rnbinom } from "../random/poisson.js";
37
+ export { rbinom, rmultinom } from "../random/binomial.js";
38
+ export { rsignrank, rwilcox } from "../random/rank.js";
39
+ export { sample, sampleInt } from "../random/sample.js";
40
+ export { rhyper } from "../random/hyper.js";
41
+ export { rinvgamma, rkumar, rpareto, rtriang, rlaplace, rarcsine } from "../random/extra.js";
@@ -0,0 +1,11 @@
1
+ export { crossprod, tcrossprod, backsolve, forwardsolve, type BacksolveOptions } from "../linalg/basic.js";
2
+ export { norm, type NormOptions, type NormType } from "../linalg/norm.js";
3
+ export { chol, chol2inv, type CholOptions, type CholPivotResult, type Chol2InvOptions } from "../linalg/chol.js";
4
+ export { qr, qrQ, qrR, qrX, qrCoef, qrQy, qrQty, qrResid, qrFitted, qrSolve, type QR, type QROptions, type QRQOptions } from "../linalg/qr.js";
5
+ export { solve, det, determinant, rcond, type SolveOptions, type Determinant, type RcondOptions } from "../linalg/solve.js";
6
+ export { svd, type SvdOptions, type SvdResult } from "../linalg/svd.js";
7
+ export { kappa, ginv, type KappaOptions } from "../linalg/kappa.js";
8
+ export { eigen, type EigenOptions, type EigenResult } from "../linalg/eigen.js";
9
+ export type { MatrixInput, VectorOrMatrix } from "../linalg/matrix.js";
10
+ export { matMul, add, subtract, multiply, divide, outer, t, diag, cbind, rbind, matrix, kronecker, seq, type Operand, type DiagOptions, type MatrixOptions, type SeqOptions, } from "../linalg/ops.js";
11
+ export { lu, prcomp, type LuResult, type PrcompOptions, type PrcompResult } from "../linalg/lu.js";