vesper-memory 0.3.0

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 (206) hide show
  1. package/.env.example +28 -0
  2. package/CHANGELOG.md +137 -0
  3. package/LICENSE +21 -0
  4. package/README.md +665 -0
  5. package/config/sqlite-schema.sql +413 -0
  6. package/dist/benchmark/index.d.ts +18 -0
  7. package/dist/benchmark/index.d.ts.map +1 -0
  8. package/dist/benchmark/index.js +19 -0
  9. package/dist/benchmark/index.js.map +1 -0
  10. package/dist/benchmark/metrics-collector.d.ts +90 -0
  11. package/dist/benchmark/metrics-collector.d.ts.map +1 -0
  12. package/dist/benchmark/metrics-collector.js +196 -0
  13. package/dist/benchmark/metrics-collector.js.map +1 -0
  14. package/dist/benchmark/report-generator.d.ts +35 -0
  15. package/dist/benchmark/report-generator.d.ts.map +1 -0
  16. package/dist/benchmark/report-generator.js +221 -0
  17. package/dist/benchmark/report-generator.js.map +1 -0
  18. package/dist/benchmark/runner.d.ts +30 -0
  19. package/dist/benchmark/runner.d.ts.map +1 -0
  20. package/dist/benchmark/runner.js +308 -0
  21. package/dist/benchmark/runner.js.map +1 -0
  22. package/dist/benchmark/scenarios/context-recall.d.ts +65 -0
  23. package/dist/benchmark/scenarios/context-recall.d.ts.map +1 -0
  24. package/dist/benchmark/scenarios/context-recall.js +180 -0
  25. package/dist/benchmark/scenarios/context-recall.js.map +1 -0
  26. package/dist/benchmark/scenarios/index.d.ts +34 -0
  27. package/dist/benchmark/scenarios/index.d.ts.map +1 -0
  28. package/dist/benchmark/scenarios/index.js +230 -0
  29. package/dist/benchmark/scenarios/index.js.map +1 -0
  30. package/dist/benchmark/statistics.d.ts +125 -0
  31. package/dist/benchmark/statistics.d.ts.map +1 -0
  32. package/dist/benchmark/statistics.js +520 -0
  33. package/dist/benchmark/statistics.js.map +1 -0
  34. package/dist/benchmark/types.d.ts +458 -0
  35. package/dist/benchmark/types.d.ts.map +1 -0
  36. package/dist/benchmark/types.js +297 -0
  37. package/dist/benchmark/types.js.map +1 -0
  38. package/dist/cli 2.js +583 -0
  39. package/dist/cli.d 2.ts +8 -0
  40. package/dist/cli.d.ts +8 -0
  41. package/dist/cli.d.ts 2.map +1 -0
  42. package/dist/cli.d.ts.map +1 -0
  43. package/dist/cli.js +583 -0
  44. package/dist/cli.js 2.map +1 -0
  45. package/dist/cli.js.map +1 -0
  46. package/dist/config/rate-limits.d.ts +76 -0
  47. package/dist/config/rate-limits.d.ts.map +1 -0
  48. package/dist/config/rate-limits.js +161 -0
  49. package/dist/config/rate-limits.js.map +1 -0
  50. package/dist/config 2/rate-limits.d.ts +76 -0
  51. package/dist/config 2/rate-limits.d.ts.map +1 -0
  52. package/dist/config 2/rate-limits.js +161 -0
  53. package/dist/config 2/rate-limits.js.map +1 -0
  54. package/dist/consolidation/pipeline.d.ts +52 -0
  55. package/dist/consolidation/pipeline.d.ts.map +1 -0
  56. package/dist/consolidation/pipeline.js +193 -0
  57. package/dist/consolidation/pipeline.js.map +1 -0
  58. package/dist/consolidation 2/pipeline.d.ts +52 -0
  59. package/dist/consolidation 2/pipeline.d.ts.map +1 -0
  60. package/dist/consolidation 2/pipeline.js +193 -0
  61. package/dist/consolidation 2/pipeline.js.map +1 -0
  62. package/dist/embeddings/client.d.ts +95 -0
  63. package/dist/embeddings/client.d.ts.map +1 -0
  64. package/dist/embeddings/client.js +162 -0
  65. package/dist/embeddings/client.js.map +1 -0
  66. package/dist/embeddings 2/client.d.ts +94 -0
  67. package/dist/embeddings 2/client.d.ts.map +1 -0
  68. package/dist/embeddings 2/client.js +144 -0
  69. package/dist/embeddings 2/client.js.map +1 -0
  70. package/dist/memory-layers/semantic-memory.d.ts +76 -0
  71. package/dist/memory-layers/semantic-memory.d.ts.map +1 -0
  72. package/dist/memory-layers/semantic-memory.js +231 -0
  73. package/dist/memory-layers/semantic-memory.js.map +1 -0
  74. package/dist/memory-layers/skill-library.d.ts +25 -0
  75. package/dist/memory-layers/skill-library.d.ts.map +1 -0
  76. package/dist/memory-layers/skill-library.js +54 -0
  77. package/dist/memory-layers/skill-library.js.map +1 -0
  78. package/dist/memory-layers/working-memory.d.ts +57 -0
  79. package/dist/memory-layers/working-memory.d.ts.map +1 -0
  80. package/dist/memory-layers/working-memory.js +153 -0
  81. package/dist/memory-layers/working-memory.js.map +1 -0
  82. package/dist/memory-layers 2/semantic-memory.d.ts +33 -0
  83. package/dist/memory-layers 2/semantic-memory.d.ts.map +1 -0
  84. package/dist/memory-layers 2/semantic-memory.js +114 -0
  85. package/dist/memory-layers 2/semantic-memory.js.map +1 -0
  86. package/dist/memory-layers 2/skill-library.d.ts +25 -0
  87. package/dist/memory-layers 2/skill-library.d.ts.map +1 -0
  88. package/dist/memory-layers 2/skill-library.js +54 -0
  89. package/dist/memory-layers 2/skill-library.js.map +1 -0
  90. package/dist/memory-layers 2/working-memory.d.ts +57 -0
  91. package/dist/memory-layers 2/working-memory.d.ts.map +1 -0
  92. package/dist/memory-layers 2/working-memory.js +153 -0
  93. package/dist/memory-layers 2/working-memory.js.map +1 -0
  94. package/dist/middleware/auth.d.ts +287 -0
  95. package/dist/middleware/auth.d.ts.map +1 -0
  96. package/dist/middleware/auth.js +610 -0
  97. package/dist/middleware/auth.js.map +1 -0
  98. package/dist/middleware 2/auth.d.ts +287 -0
  99. package/dist/middleware 2/auth.d.ts.map +1 -0
  100. package/dist/middleware 2/auth.js +610 -0
  101. package/dist/middleware 2/auth.js.map +1 -0
  102. package/dist/monitoring/health.d.ts +241 -0
  103. package/dist/monitoring/health.d.ts.map +1 -0
  104. package/dist/monitoring/health.js +649 -0
  105. package/dist/monitoring/health.js.map +1 -0
  106. package/dist/monitoring/metrics.d.ts +153 -0
  107. package/dist/monitoring/metrics.d.ts.map +1 -0
  108. package/dist/monitoring/metrics.js +349 -0
  109. package/dist/monitoring/metrics.js.map +1 -0
  110. package/dist/monitoring 2/health.d.ts +241 -0
  111. package/dist/monitoring 2/health.d.ts.map +1 -0
  112. package/dist/monitoring 2/health.js +649 -0
  113. package/dist/monitoring 2/health.js.map +1 -0
  114. package/dist/monitoring 2/metrics.d.ts +153 -0
  115. package/dist/monitoring 2/metrics.d.ts.map +1 -0
  116. package/dist/monitoring 2/metrics.js +349 -0
  117. package/dist/monitoring 2/metrics.js.map +1 -0
  118. package/dist/retrieval/hybrid-search.d.ts +186 -0
  119. package/dist/retrieval/hybrid-search.d.ts.map +1 -0
  120. package/dist/retrieval/hybrid-search.js +330 -0
  121. package/dist/retrieval/hybrid-search.js.map +1 -0
  122. package/dist/retrieval 2/hybrid-search.d.ts +186 -0
  123. package/dist/retrieval 2/hybrid-search.d.ts.map +1 -0
  124. package/dist/retrieval 2/hybrid-search.js +327 -0
  125. package/dist/retrieval 2/hybrid-search.js.map +1 -0
  126. package/dist/router/smart-router.d.ts +157 -0
  127. package/dist/router/smart-router.d.ts.map +1 -0
  128. package/dist/router/smart-router.js +524 -0
  129. package/dist/router/smart-router.js.map +1 -0
  130. package/dist/router 2/smart-router.d.ts +111 -0
  131. package/dist/router 2/smart-router.d.ts.map +1 -0
  132. package/dist/router 2/smart-router.js +383 -0
  133. package/dist/router 2/smart-router.js.map +1 -0
  134. package/dist/security/rate-limit-middleware.d.ts +119 -0
  135. package/dist/security/rate-limit-middleware.d.ts.map +1 -0
  136. package/dist/security/rate-limit-middleware.js +193 -0
  137. package/dist/security/rate-limit-middleware.js.map +1 -0
  138. package/dist/security 2/rate-limit-middleware.d.ts +119 -0
  139. package/dist/security 2/rate-limit-middleware.d.ts.map +1 -0
  140. package/dist/security 2/rate-limit-middleware.js +193 -0
  141. package/dist/security 2/rate-limit-middleware.js.map +1 -0
  142. package/dist/server 2.js +861 -0
  143. package/dist/server-wrapper 2.js +170 -0
  144. package/dist/server-wrapper.d 2.ts +12 -0
  145. package/dist/server-wrapper.d.ts +12 -0
  146. package/dist/server-wrapper.d.ts 2.map +1 -0
  147. package/dist/server-wrapper.d.ts.map +1 -0
  148. package/dist/server-wrapper.js +170 -0
  149. package/dist/server-wrapper.js 2.map +1 -0
  150. package/dist/server-wrapper.js.map +1 -0
  151. package/dist/server.d 2.ts +14 -0
  152. package/dist/server.d.ts +14 -0
  153. package/dist/server.d.ts 2.map +1 -0
  154. package/dist/server.d.ts.map +1 -0
  155. package/dist/server.js +656 -0
  156. package/dist/server.js 2.map +1 -0
  157. package/dist/server.js.map +1 -0
  158. package/dist/synthesis/conflict-detector.d.ts +43 -0
  159. package/dist/synthesis/conflict-detector.d.ts.map +1 -0
  160. package/dist/synthesis/conflict-detector.js +125 -0
  161. package/dist/synthesis/conflict-detector.js.map +1 -0
  162. package/dist/synthesis 2/conflict-detector.d.ts +43 -0
  163. package/dist/synthesis 2/conflict-detector.d.ts.map +1 -0
  164. package/dist/synthesis 2/conflict-detector.js +125 -0
  165. package/dist/synthesis 2/conflict-detector.js.map +1 -0
  166. package/dist/utils/monitoring.d.ts +25 -0
  167. package/dist/utils/monitoring.d.ts.map +1 -0
  168. package/dist/utils/monitoring.js +41 -0
  169. package/dist/utils/monitoring.js.map +1 -0
  170. package/dist/utils/rate-limiter.d.ts +97 -0
  171. package/dist/utils/rate-limiter.d.ts.map +1 -0
  172. package/dist/utils/rate-limiter.js +166 -0
  173. package/dist/utils/rate-limiter.js.map +1 -0
  174. package/dist/utils/validation.d.ts +139 -0
  175. package/dist/utils/validation.d.ts.map +1 -0
  176. package/dist/utils/validation.js +195 -0
  177. package/dist/utils/validation.js.map +1 -0
  178. package/dist/utils 2/monitoring.d.ts +25 -0
  179. package/dist/utils 2/monitoring.d.ts.map +1 -0
  180. package/dist/utils 2/monitoring.js +41 -0
  181. package/dist/utils 2/monitoring.js.map +1 -0
  182. package/dist/utils 2/rate-limiter.d.ts +97 -0
  183. package/dist/utils 2/rate-limiter.d.ts.map +1 -0
  184. package/dist/utils 2/rate-limiter.js +166 -0
  185. package/dist/utils 2/rate-limiter.js.map +1 -0
  186. package/dist/utils 2/validation.d.ts +139 -0
  187. package/dist/utils 2/validation.d.ts.map +1 -0
  188. package/dist/utils 2/validation.js +195 -0
  189. package/dist/utils 2/validation.js.map +1 -0
  190. package/docker-compose.yml +65 -0
  191. package/embedding-service/Dockerfile +29 -0
  192. package/embedding-service/README.md +68 -0
  193. package/embedding-service/requirements.txt +6 -0
  194. package/embedding-service/server.py +110 -0
  195. package/package.json +92 -0
  196. package/scripts/FRESH_INSTALL.md +280 -0
  197. package/scripts/README.md +101 -0
  198. package/scripts/ensure-infrastructure.sh +38 -0
  199. package/scripts/fresh-install-auto.sh +96 -0
  200. package/scripts/fresh-install.sh +167 -0
  201. package/scripts/health-check.sh +72 -0
  202. package/scripts/init-qdrant.ts +201 -0
  203. package/scripts/postinstall.js +94 -0
  204. package/scripts/run-accuracy-benchmark.ts +1237 -0
  205. package/scripts/run-real-benchmark.ts +581 -0
  206. package/scripts/test-mcp-server.sh +38 -0
@@ -0,0 +1,520 @@
1
+ /**
2
+ * Statistical Functions for Scientific Benchmarks
3
+ *
4
+ * Pure functions for calculating:
5
+ * - Descriptive statistics (mean, median, percentile)
6
+ * - Dispersion measures (variance, standard deviation)
7
+ * - Confidence intervals
8
+ * - Hypothesis testing (Welch's t-test)
9
+ * - Effect size (Cohen's d)
10
+ *
11
+ * All functions are designed to be accurate, efficient, and safe.
12
+ */
13
+ /**
14
+ * Custom error class for statistics-related errors
15
+ */
16
+ export class StatisticsError extends Error {
17
+ constructor(message) {
18
+ super(message);
19
+ this.name = "StatisticsError";
20
+ }
21
+ }
22
+ /**
23
+ * Validate that array contains only finite numbers
24
+ */
25
+ function validateArray(arr, name) {
26
+ if (!Array.isArray(arr)) {
27
+ throw new StatisticsError(`${name} must be an array`);
28
+ }
29
+ for (let i = 0; i < arr.length; i++) {
30
+ if (!Number.isFinite(arr[i])) {
31
+ throw new StatisticsError(`${name} contains non-finite value at index ${i}: ${arr[i]}`);
32
+ }
33
+ }
34
+ }
35
+ /**
36
+ * Calculate arithmetic mean of an array
37
+ *
38
+ * @param values - Array of numbers
39
+ * @returns The arithmetic mean
40
+ * @throws StatisticsError if array is empty or contains non-finite values
41
+ */
42
+ export function mean(values) {
43
+ validateArray(values, "Values array");
44
+ if (values.length === 0) {
45
+ throw new StatisticsError("Cannot calculate mean of empty array");
46
+ }
47
+ // Use Kahan summation for better numerical precision
48
+ let sum = 0;
49
+ let compensation = 0;
50
+ for (const value of values) {
51
+ const y = value - compensation;
52
+ const t = sum + y;
53
+ compensation = t - sum - y;
54
+ sum = t;
55
+ }
56
+ return sum / values.length;
57
+ }
58
+ /**
59
+ * Calculate median of an array
60
+ *
61
+ * @param values - Array of numbers
62
+ * @returns The median value
63
+ * @throws StatisticsError if array is empty
64
+ */
65
+ export function median(values) {
66
+ validateArray(values, "Values array");
67
+ if (values.length === 0) {
68
+ throw new StatisticsError("Cannot calculate median of empty array");
69
+ }
70
+ // Sort a copy to avoid mutating original
71
+ const sorted = [...values].sort((a, b) => a - b);
72
+ const mid = Math.floor(sorted.length / 2);
73
+ if (sorted.length % 2 === 0) {
74
+ return (sorted[mid - 1] + sorted[mid]) / 2;
75
+ }
76
+ return sorted[mid];
77
+ }
78
+ /**
79
+ * Calculate percentile using linear interpolation
80
+ *
81
+ * @param values - Array of numbers
82
+ * @param p - Percentile to calculate (0-100)
83
+ * @returns The percentile value
84
+ * @throws StatisticsError if array is empty or percentile is out of range
85
+ */
86
+ export function percentile(values, p) {
87
+ validateArray(values, "Values array");
88
+ if (values.length === 0) {
89
+ throw new StatisticsError("Cannot calculate percentile of empty array");
90
+ }
91
+ if (p < 0 || p > 100) {
92
+ throw new StatisticsError("Percentile must be between 0 and 100");
93
+ }
94
+ // Sort a copy to avoid mutating original
95
+ const sorted = [...values].sort((a, b) => a - b);
96
+ if (p === 0) {
97
+ return sorted[0];
98
+ }
99
+ if (p === 100) {
100
+ return sorted[sorted.length - 1];
101
+ }
102
+ // Linear interpolation
103
+ const index = (p / 100) * (sorted.length - 1);
104
+ const lower = Math.floor(index);
105
+ const upper = Math.ceil(index);
106
+ const fraction = index - lower;
107
+ if (lower === upper) {
108
+ return sorted[lower];
109
+ }
110
+ return sorted[lower] * (1 - fraction) + sorted[upper] * fraction;
111
+ }
112
+ /**
113
+ * Calculate variance of an array
114
+ *
115
+ * @param values - Array of numbers
116
+ * @param sample - If true, calculate sample variance (n-1 denominator); default is population variance
117
+ * @returns The variance
118
+ * @throws StatisticsError if array is empty or too small for sample variance
119
+ */
120
+ export function variance(values, sample = false) {
121
+ validateArray(values, "Values array");
122
+ if (values.length === 0) {
123
+ throw new StatisticsError("Cannot calculate variance of empty array");
124
+ }
125
+ if (sample && values.length < 2) {
126
+ throw new StatisticsError("Sample variance requires at least 2 elements");
127
+ }
128
+ const avg = mean(values);
129
+ let sumSquaredDiff = 0;
130
+ for (const value of values) {
131
+ sumSquaredDiff += (value - avg) ** 2;
132
+ }
133
+ const denominator = sample ? values.length - 1 : values.length;
134
+ return sumSquaredDiff / denominator;
135
+ }
136
+ /**
137
+ * Calculate standard deviation of an array
138
+ *
139
+ * @param values - Array of numbers
140
+ * @param sample - If true, calculate sample standard deviation
141
+ * @returns The standard deviation
142
+ * @throws StatisticsError if array is empty or too small for sample SD
143
+ */
144
+ export function standardDeviation(values, sample = false) {
145
+ return Math.sqrt(variance(values, sample));
146
+ }
147
+ /**
148
+ * Calculate confidence interval using t-distribution
149
+ *
150
+ * @param values - Array of sample values
151
+ * @param confidenceLevel - Confidence level (0 < level < 1), e.g., 0.95 for 95% CI
152
+ * @returns ConfidenceIntervalResult with mean, lower, upper bounds
153
+ * @throws StatisticsError if array has less than 2 elements or invalid confidence level
154
+ */
155
+ export function confidenceInterval(values, confidenceLevel) {
156
+ validateArray(values, "Values array");
157
+ if (values.length < 2) {
158
+ throw new StatisticsError("Confidence interval requires at least 2 elements");
159
+ }
160
+ if (confidenceLevel <= 0 || confidenceLevel >= 1) {
161
+ throw new StatisticsError("Confidence level must be between 0 and 1 (exclusive)");
162
+ }
163
+ const n = values.length;
164
+ const avg = mean(values);
165
+ const sd = standardDeviation(values, true); // Sample SD
166
+ const standardError = sd / Math.sqrt(n);
167
+ // Get t-critical value for given confidence level and degrees of freedom
168
+ const alpha = 1 - confidenceLevel;
169
+ const df = n - 1;
170
+ const tCritical = tDistributionInverse(1 - alpha / 2, df);
171
+ const marginOfError = tCritical * standardError;
172
+ return {
173
+ mean: avg,
174
+ lower: avg - marginOfError,
175
+ upper: avg + marginOfError,
176
+ confidenceLevel,
177
+ marginOfError,
178
+ standardError,
179
+ };
180
+ }
181
+ /**
182
+ * Perform Welch's t-test for two independent samples
183
+ *
184
+ * Welch's t-test is more robust than Student's t-test when
185
+ * variances are unequal between groups.
186
+ *
187
+ * @param groupA - First sample
188
+ * @param groupB - Second sample
189
+ * @param alpha - Significance level (default 0.05)
190
+ * @returns WelchTTestResult with test statistics and significance
191
+ * @throws StatisticsError if either group has less than 2 elements
192
+ */
193
+ export function welchTTest(groupA, groupB, alpha = 0.05) {
194
+ validateArray(groupA, "Group A");
195
+ validateArray(groupB, "Group B");
196
+ if (groupA.length < 2) {
197
+ throw new StatisticsError("Group A must have at least 2 elements");
198
+ }
199
+ if (groupB.length < 2) {
200
+ throw new StatisticsError("Group B must have at least 2 elements");
201
+ }
202
+ const n1 = groupA.length;
203
+ const n2 = groupB.length;
204
+ const mean1 = mean(groupA);
205
+ const mean2 = mean(groupB);
206
+ const var1 = variance(groupA, true);
207
+ const var2 = variance(groupB, true);
208
+ // Handle identical groups (zero variance)
209
+ if (var1 === 0 && var2 === 0) {
210
+ return {
211
+ tStatistic: mean1 === mean2 ? 0 : mean1 < mean2 ? -Infinity : Infinity,
212
+ pValue: mean1 === mean2 ? 1 : 0,
213
+ degreesOfFreedom: n1 + n2 - 2,
214
+ significant: mean1 !== mean2,
215
+ alpha,
216
+ meanDifference: mean1 - mean2,
217
+ };
218
+ }
219
+ // Calculate t-statistic
220
+ const se1 = var1 / n1;
221
+ const se2 = var2 / n2;
222
+ const tStatistic = (mean1 - mean2) / Math.sqrt(se1 + se2);
223
+ // Welch-Satterthwaite degrees of freedom
224
+ const df = (se1 + se2) ** 2 / (se1 ** 2 / (n1 - 1) + se2 ** 2 / (n2 - 1));
225
+ // Calculate p-value (two-tailed)
226
+ const pValue = 2 * (1 - tDistributionCDF(Math.abs(tStatistic), df));
227
+ return {
228
+ tStatistic,
229
+ pValue,
230
+ degreesOfFreedom: df,
231
+ significant: pValue < alpha,
232
+ alpha,
233
+ meanDifference: mean1 - mean2,
234
+ };
235
+ }
236
+ /**
237
+ * Calculate Cohen's d effect size
238
+ *
239
+ * Cohen's d measures the standardized difference between two means.
240
+ * Guidelines: |d| < 0.2 negligible, 0.2-0.5 small, 0.5-0.8 medium, > 0.8 large
241
+ *
242
+ * @param groupA - First sample
243
+ * @param groupB - Second sample
244
+ * @returns Cohen's d (positive if A > B, negative if A < B)
245
+ * @throws StatisticsError if either group has less than 2 elements
246
+ */
247
+ export function cohensD(groupA, groupB) {
248
+ validateArray(groupA, "Group A");
249
+ validateArray(groupB, "Group B");
250
+ if (groupA.length < 2) {
251
+ throw new StatisticsError("Group A must have at least 2 elements");
252
+ }
253
+ if (groupB.length < 2) {
254
+ throw new StatisticsError("Group B must have at least 2 elements");
255
+ }
256
+ const mean1 = mean(groupA);
257
+ const mean2 = mean(groupB);
258
+ const n1 = groupA.length;
259
+ const n2 = groupB.length;
260
+ const var1 = variance(groupA, true);
261
+ const var2 = variance(groupB, true);
262
+ // Pooled standard deviation
263
+ const pooledVar = ((n1 - 1) * var1 + (n2 - 1) * var2) / (n1 + n2 - 2);
264
+ const pooledSD = Math.sqrt(pooledVar);
265
+ if (pooledSD === 0) {
266
+ return 0; // Identical groups
267
+ }
268
+ return (mean1 - mean2) / pooledSD;
269
+ }
270
+ /**
271
+ * Interpret Cohen's d effect size
272
+ *
273
+ * @param d - Cohen's d value
274
+ * @returns String interpretation
275
+ */
276
+ export function interpretEffectSize(d) {
277
+ const absD = Math.abs(d);
278
+ if (absD < 0.2) {
279
+ return "negligible";
280
+ }
281
+ else if (absD < 0.5) {
282
+ return "small";
283
+ }
284
+ else if (absD < 0.8) {
285
+ return "medium";
286
+ }
287
+ else {
288
+ return "large";
289
+ }
290
+ }
291
+ // =============================================================================
292
+ // Internal helper functions for t-distribution
293
+ // =============================================================================
294
+ /**
295
+ * Approximate the inverse of the t-distribution CDF
296
+ * Used for calculating t-critical values for confidence intervals
297
+ *
298
+ * Uses the approximation from Abramowitz and Stegun (1964)
299
+ */
300
+ function tDistributionInverse(p, df) {
301
+ // For large df, use normal approximation
302
+ if (df > 100) {
303
+ return normalInverse(p);
304
+ }
305
+ // Use iterative refinement
306
+ let x = normalInverse(p);
307
+ for (let i = 0; i < 10; i++) {
308
+ const cdf = tDistributionCDF(x, df);
309
+ const pdf = tDistributionPDF(x, df);
310
+ x = x - (cdf - p) / pdf;
311
+ }
312
+ return x;
313
+ }
314
+ /**
315
+ * Approximate the CDF of the t-distribution
316
+ * Used for calculating p-values
317
+ */
318
+ function tDistributionCDF(t, df) {
319
+ // For large df, use normal approximation
320
+ if (df > 100) {
321
+ return normalCDF(t);
322
+ }
323
+ // Use the regularized incomplete beta function
324
+ const x = df / (df + t * t);
325
+ const a = df / 2;
326
+ const b = 0.5;
327
+ if (t >= 0) {
328
+ return 1 - 0.5 * incompleteBeta(x, a, b);
329
+ }
330
+ else {
331
+ return 0.5 * incompleteBeta(x, a, b);
332
+ }
333
+ }
334
+ /**
335
+ * PDF of the t-distribution
336
+ */
337
+ function tDistributionPDF(t, df) {
338
+ const numerator = gamma((df + 1) / 2);
339
+ const denominator = Math.sqrt(df * Math.PI) * gamma(df / 2);
340
+ const base = 1 + (t * t) / df;
341
+ return (numerator / denominator) * Math.pow(base, -(df + 1) / 2);
342
+ }
343
+ /**
344
+ * Approximate the inverse of the standard normal CDF
345
+ * Uses the Abramowitz and Stegun approximation
346
+ */
347
+ function normalInverse(p) {
348
+ if (p <= 0)
349
+ return -Infinity;
350
+ if (p >= 1)
351
+ return Infinity;
352
+ if (p === 0.5)
353
+ return 0;
354
+ const a = [
355
+ -3.969683028665376e1,
356
+ 2.209460984245205e2,
357
+ -2.759285104469687e2,
358
+ 1.383577518672690e2,
359
+ -3.066479806614716e1,
360
+ 2.506628277459239e0,
361
+ ];
362
+ const b = [
363
+ -5.447609879822406e1,
364
+ 1.615858368580409e2,
365
+ -1.556989798598866e2,
366
+ 6.680131188771972e1,
367
+ -1.328068155288572e1,
368
+ ];
369
+ const c = [
370
+ -7.784894002430293e-3,
371
+ -3.223964580411365e-1,
372
+ -2.400758277161838e0,
373
+ -2.549732539343734e0,
374
+ 4.374664141464968e0,
375
+ 2.938163982698783e0,
376
+ ];
377
+ const d = [
378
+ 7.784695709041462e-3,
379
+ 3.224671290700398e-1,
380
+ 2.445134137142996e0,
381
+ 3.754408661907416e0,
382
+ ];
383
+ const pLow = 0.02425;
384
+ const pHigh = 1 - pLow;
385
+ let q, r;
386
+ if (p < pLow) {
387
+ q = Math.sqrt(-2 * Math.log(p));
388
+ return ((((((c[0] * q + c[1]) * q + c[2]) * q + c[3]) * q + c[4]) * q + c[5]) /
389
+ ((((d[0] * q + d[1]) * q + d[2]) * q + d[3]) * q + 1));
390
+ }
391
+ else if (p <= pHigh) {
392
+ q = p - 0.5;
393
+ r = q * q;
394
+ return (((((((a[0] * r + a[1]) * r + a[2]) * r + a[3]) * r + a[4]) * r + a[5]) *
395
+ q) /
396
+ (((((b[0] * r + b[1]) * r + b[2]) * r + b[3]) * r + b[4]) * r + 1));
397
+ }
398
+ else {
399
+ q = Math.sqrt(-2 * Math.log(1 - p));
400
+ return (-((((((c[0] * q + c[1]) * q + c[2]) * q + c[3]) * q + c[4]) * q + c[5]) /
401
+ ((((d[0] * q + d[1]) * q + d[2]) * q + d[3]) * q + 1)));
402
+ }
403
+ }
404
+ /**
405
+ * Standard normal CDF approximation
406
+ */
407
+ function normalCDF(x) {
408
+ const a1 = 0.254829592;
409
+ const a2 = -0.284496736;
410
+ const a3 = 1.421413741;
411
+ const a4 = -1.453152027;
412
+ const a5 = 1.061405429;
413
+ const p = 0.3275911;
414
+ const sign = x < 0 ? -1 : 1;
415
+ x = Math.abs(x) / Math.sqrt(2);
416
+ const t = 1 / (1 + p * x);
417
+ const y = 1 - ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) * t * Math.exp(-x * x);
418
+ return 0.5 * (1 + sign * y);
419
+ }
420
+ /**
421
+ * Gamma function approximation using Stirling's formula with corrections
422
+ */
423
+ function gamma(z) {
424
+ if (z <= 0 && Number.isInteger(z)) {
425
+ return Infinity;
426
+ }
427
+ // Use reflection formula for z < 0.5
428
+ if (z < 0.5) {
429
+ return Math.PI / (Math.sin(Math.PI * z) * gamma(1 - z));
430
+ }
431
+ // Lanczos approximation
432
+ const g = 7;
433
+ const c = [
434
+ 0.99999999999980993,
435
+ 676.5203681218851,
436
+ -1259.1392167224028,
437
+ 771.32342877765313,
438
+ -176.61502916214059,
439
+ 12.507343278686905,
440
+ -0.13857109526572012,
441
+ 9.9843695780195716e-6,
442
+ 1.5056327351493116e-7,
443
+ ];
444
+ z -= 1;
445
+ let x = c[0];
446
+ for (let i = 1; i < g + 2; i++) {
447
+ x += c[i] / (z + i);
448
+ }
449
+ const t = z + g + 0.5;
450
+ return Math.sqrt(2 * Math.PI) * Math.pow(t, z + 0.5) * Math.exp(-t) * x;
451
+ }
452
+ /**
453
+ * Regularized incomplete beta function approximation
454
+ */
455
+ function incompleteBeta(x, a, b) {
456
+ if (x === 0)
457
+ return 0;
458
+ if (x === 1)
459
+ return 1;
460
+ // Use continued fraction expansion
461
+ const maxIterations = 200;
462
+ const epsilon = 1e-10;
463
+ const lnBeta = logGamma(a) + logGamma(b) - logGamma(a + b);
464
+ const front = Math.exp(Math.log(x) * a + Math.log(1 - x) * b - lnBeta) / a;
465
+ // Lentz's algorithm for continued fraction
466
+ let f = 1;
467
+ let c = 1;
468
+ let d = 0;
469
+ for (let i = 0; i <= maxIterations; i++) {
470
+ const m = Math.floor(i / 2);
471
+ let numerator;
472
+ if (i === 0) {
473
+ numerator = 1;
474
+ }
475
+ else if (i % 2 === 0) {
476
+ numerator = (m * (b - m) * x) / ((a + 2 * m - 1) * (a + 2 * m));
477
+ }
478
+ else {
479
+ numerator =
480
+ -((a + m) * (a + b + m) * x) / ((a + 2 * m) * (a + 2 * m + 1));
481
+ }
482
+ d = 1 + numerator * d;
483
+ if (Math.abs(d) < 1e-30)
484
+ d = 1e-30;
485
+ d = 1 / d;
486
+ c = 1 + numerator / c;
487
+ if (Math.abs(c) < 1e-30)
488
+ c = 1e-30;
489
+ const delta = c * d;
490
+ f *= delta;
491
+ if (Math.abs(delta - 1) < epsilon) {
492
+ return front * (f - 1);
493
+ }
494
+ }
495
+ return front * (f - 1);
496
+ }
497
+ /**
498
+ * Log gamma function
499
+ */
500
+ function logGamma(z) {
501
+ const c = [
502
+ 76.18009172947146,
503
+ -86.50532032941677,
504
+ 24.01409824083091,
505
+ -1.231739572450155,
506
+ 0.1208650973866179e-2,
507
+ -0.5395239384953e-5,
508
+ ];
509
+ let x = z;
510
+ let y = z;
511
+ let tmp = x + 5.5;
512
+ tmp -= (x + 0.5) * Math.log(tmp);
513
+ let ser = 1.000000000190015;
514
+ for (let j = 0; j < 6; j++) {
515
+ y += 1;
516
+ ser += c[j] / y;
517
+ }
518
+ return -tmp + Math.log((2.5066282746310005 * ser) / x);
519
+ }
520
+ //# sourceMappingURL=statistics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/benchmark/statistics.ts"],"names":[],"mappings":"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"}