@bilig/formula 0.1.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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +16 -0
  3. package/dist/addressing.d.ts +66 -0
  4. package/dist/addressing.js +179 -0
  5. package/dist/addressing.js.map +1 -0
  6. package/dist/ast.d.ts +74 -0
  7. package/dist/ast.js +2 -0
  8. package/dist/ast.js.map +1 -0
  9. package/dist/binder.d.ts +13 -0
  10. package/dist/binder.js +1700 -0
  11. package/dist/binder.js.map +1 -0
  12. package/dist/builtin-capabilities.d.ts +19 -0
  13. package/dist/builtin-capabilities.js +861 -0
  14. package/dist/builtin-capabilities.js.map +1 -0
  15. package/dist/builtins/complex.d.ts +10 -0
  16. package/dist/builtins/complex.js +407 -0
  17. package/dist/builtins/complex.js.map +1 -0
  18. package/dist/builtins/convert.d.ts +3 -0
  19. package/dist/builtins/convert.js +362 -0
  20. package/dist/builtins/convert.js.map +1 -0
  21. package/dist/builtins/datetime.d.ts +23 -0
  22. package/dist/builtins/datetime.js +1096 -0
  23. package/dist/builtins/datetime.js.map +1 -0
  24. package/dist/builtins/distribution-builtins.d.ts +16 -0
  25. package/dist/builtins/distribution-builtins.js +517 -0
  26. package/dist/builtins/distribution-builtins.js.map +1 -0
  27. package/dist/builtins/distributions.d.ts +34 -0
  28. package/dist/builtins/distributions.js +722 -0
  29. package/dist/builtins/distributions.js.map +1 -0
  30. package/dist/builtins/financial-builtins.d.ts +16 -0
  31. package/dist/builtins/financial-builtins.js +324 -0
  32. package/dist/builtins/financial-builtins.js.map +1 -0
  33. package/dist/builtins/financial.d.ts +11 -0
  34. package/dist/builtins/financial.js +241 -0
  35. package/dist/builtins/financial.js.map +1 -0
  36. package/dist/builtins/fixed-income-builtins.d.ts +14 -0
  37. package/dist/builtins/fixed-income-builtins.js +598 -0
  38. package/dist/builtins/fixed-income-builtins.js.map +1 -0
  39. package/dist/builtins/fixed-income.d.ts +42 -0
  40. package/dist/builtins/fixed-income.js +668 -0
  41. package/dist/builtins/fixed-income.js.map +1 -0
  42. package/dist/builtins/formatting.d.ts +8 -0
  43. package/dist/builtins/formatting.js +53 -0
  44. package/dist/builtins/formatting.js.map +1 -0
  45. package/dist/builtins/logical.d.ts +4 -0
  46. package/dist/builtins/logical.js +258 -0
  47. package/dist/builtins/logical.js.map +1 -0
  48. package/dist/builtins/lookup-array-shape-builtins.d.ts +21 -0
  49. package/dist/builtins/lookup-array-shape-builtins.js +517 -0
  50. package/dist/builtins/lookup-array-shape-builtins.js.map +1 -0
  51. package/dist/builtins/lookup-criteria-builtins.d.ts +16 -0
  52. package/dist/builtins/lookup-criteria-builtins.js +216 -0
  53. package/dist/builtins/lookup-criteria-builtins.js.map +1 -0
  54. package/dist/builtins/lookup-database-builtins.d.ts +17 -0
  55. package/dist/builtins/lookup-database-builtins.js +294 -0
  56. package/dist/builtins/lookup-database-builtins.js.map +1 -0
  57. package/dist/builtins/lookup-financial-builtins.d.ts +11 -0
  58. package/dist/builtins/lookup-financial-builtins.js +291 -0
  59. package/dist/builtins/lookup-financial-builtins.js.map +1 -0
  60. package/dist/builtins/lookup-hypothesis-builtins.d.ts +11 -0
  61. package/dist/builtins/lookup-hypothesis-builtins.js +57 -0
  62. package/dist/builtins/lookup-hypothesis-builtins.js.map +1 -0
  63. package/dist/builtins/lookup-matrix-builtins.d.ts +17 -0
  64. package/dist/builtins/lookup-matrix-builtins.js +218 -0
  65. package/dist/builtins/lookup-matrix-builtins.js.map +1 -0
  66. package/dist/builtins/lookup-order-statistics-builtins.d.ts +18 -0
  67. package/dist/builtins/lookup-order-statistics-builtins.js +575 -0
  68. package/dist/builtins/lookup-order-statistics-builtins.js.map +1 -0
  69. package/dist/builtins/lookup-reference-builtins.d.ts +18 -0
  70. package/dist/builtins/lookup-reference-builtins.js +300 -0
  71. package/dist/builtins/lookup-reference-builtins.js.map +1 -0
  72. package/dist/builtins/lookup-regression-builtins.d.ts +12 -0
  73. package/dist/builtins/lookup-regression-builtins.js +511 -0
  74. package/dist/builtins/lookup-regression-builtins.js.map +1 -0
  75. package/dist/builtins/lookup-sort-filter-builtins.d.ts +20 -0
  76. package/dist/builtins/lookup-sort-filter-builtins.js +382 -0
  77. package/dist/builtins/lookup-sort-filter-builtins.js.map +1 -0
  78. package/dist/builtins/lookup.d.ts +13 -0
  79. package/dist/builtins/lookup.js +867 -0
  80. package/dist/builtins/lookup.js.map +1 -0
  81. package/dist/builtins/math-builtins.d.ts +31 -0
  82. package/dist/builtins/math-builtins.js +420 -0
  83. package/dist/builtins/math-builtins.js.map +1 -0
  84. package/dist/builtins/numeric.d.ts +30 -0
  85. package/dist/builtins/numeric.js +150 -0
  86. package/dist/builtins/numeric.js.map +1 -0
  87. package/dist/builtins/placeholder.d.ts +9 -0
  88. package/dist/builtins/placeholder.js +540 -0
  89. package/dist/builtins/placeholder.js.map +1 -0
  90. package/dist/builtins/radix.d.ts +12 -0
  91. package/dist/builtins/radix.js +220 -0
  92. package/dist/builtins/radix.js.map +1 -0
  93. package/dist/builtins/statistical-builtins.d.ts +13 -0
  94. package/dist/builtins/statistical-builtins.js +240 -0
  95. package/dist/builtins/statistical-builtins.js.map +1 -0
  96. package/dist/builtins/statistics.d.ts +8 -0
  97. package/dist/builtins/statistics.js +74 -0
  98. package/dist/builtins/statistics.js.map +1 -0
  99. package/dist/builtins/text.d.ts +5 -0
  100. package/dist/builtins/text.js +1879 -0
  101. package/dist/builtins/text.js.map +1 -0
  102. package/dist/builtins.d.ts +8 -0
  103. package/dist/builtins.js +695 -0
  104. package/dist/builtins.js.map +1 -0
  105. package/dist/compatibility.d.ts +25 -0
  106. package/dist/compatibility.js +498 -0
  107. package/dist/compatibility.js.map +1 -0
  108. package/dist/compiler.d.ts +29 -0
  109. package/dist/compiler.js +474 -0
  110. package/dist/compiler.js.map +1 -0
  111. package/dist/external-function-adapter.d.ts +32 -0
  112. package/dist/external-function-adapter.js +42 -0
  113. package/dist/external-function-adapter.js.map +1 -0
  114. package/dist/generated/formula-inventory.d.ts +6839 -0
  115. package/dist/generated/formula-inventory.js +7368 -0
  116. package/dist/generated/formula-inventory.js.map +1 -0
  117. package/dist/group-pivot-evaluator.d.ts +28 -0
  118. package/dist/group-pivot-evaluator.js +435 -0
  119. package/dist/group-pivot-evaluator.js.map +1 -0
  120. package/dist/index.d.ts +16 -0
  121. package/dist/index.js +17 -0
  122. package/dist/index.js.map +1 -0
  123. package/dist/js-evaluator.d.ts +107 -0
  124. package/dist/js-evaluator.js +1651 -0
  125. package/dist/js-evaluator.js.map +1 -0
  126. package/dist/lexer.d.ts +6 -0
  127. package/dist/lexer.js +115 -0
  128. package/dist/lexer.js.map +1 -0
  129. package/dist/optimizer.d.ts +2 -0
  130. package/dist/optimizer.js +353 -0
  131. package/dist/optimizer.js.map +1 -0
  132. package/dist/parser.d.ts +2 -0
  133. package/dist/parser.js +352 -0
  134. package/dist/parser.js.map +1 -0
  135. package/dist/program-arena.d.ts +22 -0
  136. package/dist/program-arena.js +67 -0
  137. package/dist/program-arena.js.map +1 -0
  138. package/dist/runtime-values.d.ts +17 -0
  139. package/dist/runtime-values.js +11 -0
  140. package/dist/runtime-values.js.map +1 -0
  141. package/dist/special-call-rewrites.d.ts +2 -0
  142. package/dist/special-call-rewrites.js +74 -0
  143. package/dist/special-call-rewrites.js.map +1 -0
  144. package/dist/translation.d.ts +28 -0
  145. package/dist/translation.js +569 -0
  146. package/dist/translation.js.map +1 -0
  147. package/package.json +53 -0
@@ -0,0 +1,511 @@
1
+ import { ErrorCode, ValueTag } from "@bilig/protocol";
2
+ function flattenNumbersOrValueError(arg, { errorValue, flattenNumbers }) {
3
+ return arg === undefined ? errorValue(ErrorCode.Value) : flattenNumbers(arg);
4
+ }
5
+ function parseCorrelationOperands(firstArg, secondArg, deps) {
6
+ const first = flattenNumbersOrValueError(firstArg, deps);
7
+ if (!Array.isArray(first)) {
8
+ return first;
9
+ }
10
+ const second = flattenNumbersOrValueError(secondArg, deps);
11
+ if (!Array.isArray(second)) {
12
+ return second;
13
+ }
14
+ if (first.length === 0 || first.length !== second.length) {
15
+ return deps.errorValue(ErrorCode.Value);
16
+ }
17
+ return { first, second };
18
+ }
19
+ function covarianceFromPairs(first, second, useSample, { errorValue }) {
20
+ const count = first.length;
21
+ const firstMean = first.reduce((sum, value) => sum + value, 0) / count;
22
+ const secondMean = second.reduce((sum, value) => sum + value, 0) / count;
23
+ let covarianceSum = 0;
24
+ for (let index = 0; index < count; index += 1) {
25
+ covarianceSum += (first[index] - firstMean) * (second[index] - secondMean);
26
+ }
27
+ const denominator = useSample ? count - 1 : count;
28
+ if (denominator <= 0) {
29
+ return errorValue(ErrorCode.Div0);
30
+ }
31
+ return covarianceSum / denominator;
32
+ }
33
+ function correlationFromPairs(first, second, { errorValue }) {
34
+ if (first.length < 2) {
35
+ return errorValue(ErrorCode.Div0);
36
+ }
37
+ const count = first.length;
38
+ const firstMean = first.reduce((sum, value) => sum + value, 0) / count;
39
+ const secondMean = second.reduce((sum, value) => sum + value, 0) / count;
40
+ let crossProducts = 0;
41
+ let firstVariance = 0;
42
+ let secondVariance = 0;
43
+ for (let index = 0; index < count; index += 1) {
44
+ const firstDeviation = first[index] - firstMean;
45
+ const secondDeviation = second[index] - secondMean;
46
+ crossProducts += firstDeviation * secondDeviation;
47
+ firstVariance += firstDeviation ** 2;
48
+ secondVariance += secondDeviation ** 2;
49
+ }
50
+ const denominator = Math.sqrt(firstVariance * secondVariance);
51
+ if (denominator === 0) {
52
+ return errorValue(ErrorCode.Div0);
53
+ }
54
+ return crossProducts / denominator;
55
+ }
56
+ function linearRegressionFromPairs(knownY, knownX, deps, includeIntercept = true) {
57
+ if (knownY.length !== knownX.length || knownY.length === 0) {
58
+ return deps.errorValue(ErrorCode.Value);
59
+ }
60
+ const count = knownY.length;
61
+ const meanY = knownY.reduce((sum, value) => sum + value, 0) / count;
62
+ const meanX = knownX.reduce((sum, value) => sum + value, 0) / count;
63
+ let sumSquaresX = 0;
64
+ let sumSquaresY = 0;
65
+ let sumCrossProducts = 0;
66
+ let slope;
67
+ let intercept;
68
+ if (includeIntercept) {
69
+ for (let index = 0; index < count; index += 1) {
70
+ const xDeviation = knownX[index] - meanX;
71
+ const yDeviation = knownY[index] - meanY;
72
+ sumSquaresX += xDeviation ** 2;
73
+ sumSquaresY += yDeviation ** 2;
74
+ sumCrossProducts += xDeviation * yDeviation;
75
+ }
76
+ if (sumSquaresX === 0) {
77
+ return deps.errorValue(ErrorCode.Div0);
78
+ }
79
+ slope = sumCrossProducts / sumSquaresX;
80
+ intercept = meanY - slope * meanX;
81
+ }
82
+ else {
83
+ for (let index = 0; index < count; index += 1) {
84
+ const xValue = knownX[index];
85
+ const yValue = knownY[index];
86
+ sumSquaresX += xValue ** 2;
87
+ sumSquaresY += (yValue - meanY) ** 2;
88
+ sumCrossProducts += xValue * yValue;
89
+ }
90
+ if (sumSquaresX === 0) {
91
+ return deps.errorValue(ErrorCode.Div0);
92
+ }
93
+ slope = sumCrossProducts / sumSquaresX;
94
+ intercept = 0;
95
+ }
96
+ let residualSumSquares = 0;
97
+ for (let index = 0; index < count; index += 1) {
98
+ const residual = knownY[index] - (intercept + slope * knownX[index]);
99
+ residualSumSquares += residual ** 2;
100
+ }
101
+ return {
102
+ slope,
103
+ intercept,
104
+ sumSquaresX,
105
+ sumSquaresY,
106
+ sumCrossProducts,
107
+ residualSumSquares,
108
+ };
109
+ }
110
+ function regressionMatrixFromArg(arg, { errorValue, isRangeArg, toNumber }) {
111
+ if (arg === undefined) {
112
+ return errorValue(ErrorCode.Value);
113
+ }
114
+ if (!isRangeArg(arg)) {
115
+ if (arg.tag === ValueTag.Error) {
116
+ return arg;
117
+ }
118
+ const numeric = toNumber(arg);
119
+ return numeric === undefined
120
+ ? errorValue(ErrorCode.Value)
121
+ : { values: [numeric], rows: 1, cols: 1 };
122
+ }
123
+ if (arg.refKind !== "cells") {
124
+ return errorValue(ErrorCode.Value);
125
+ }
126
+ const values = [];
127
+ for (const value of arg.values) {
128
+ if (value.tag === ValueTag.Error) {
129
+ return value;
130
+ }
131
+ const numeric = toNumber(value);
132
+ if (numeric === undefined) {
133
+ return errorValue(ErrorCode.Value);
134
+ }
135
+ values.push(numeric);
136
+ }
137
+ return { values, rows: arg.rows, cols: arg.cols };
138
+ }
139
+ function defaultRegressionSequence(rows, cols) {
140
+ const values = [];
141
+ for (let index = 0; index < rows * cols; index += 1) {
142
+ values.push(index + 1);
143
+ }
144
+ return { values, rows, cols };
145
+ }
146
+ function coerceRegressionConstant(arg, { errorValue, isRangeArg, toBoolean }) {
147
+ if (arg === undefined) {
148
+ return true;
149
+ }
150
+ if (isRangeArg(arg)) {
151
+ return errorValue(ErrorCode.Value);
152
+ }
153
+ if (arg.tag === ValueTag.Error) {
154
+ return arg;
155
+ }
156
+ const value = toBoolean(arg);
157
+ return value === undefined ? errorValue(ErrorCode.Value) : value;
158
+ }
159
+ function coerceRegressionFlag(arg, defaultValue, { errorValue, isRangeArg, toBoolean }) {
160
+ if (arg === undefined) {
161
+ return defaultValue;
162
+ }
163
+ if (isRangeArg(arg)) {
164
+ return errorValue(ErrorCode.Value);
165
+ }
166
+ if (arg.tag === ValueTag.Error) {
167
+ return arg;
168
+ }
169
+ const value = toBoolean(arg);
170
+ return value === undefined ? errorValue(ErrorCode.Value) : value;
171
+ }
172
+ function predictionResultFromMatrix(values, rows, cols, { errorValue, numberResult }) {
173
+ if (values.some((value) => !Number.isFinite(value))) {
174
+ return errorValue(ErrorCode.Value);
175
+ }
176
+ const resultValues = values.map((value) => numberResult(value));
177
+ return rows === 1 && cols === 1
178
+ ? (resultValues[0] ?? errorValue(ErrorCode.Value))
179
+ : {
180
+ kind: "array",
181
+ rows,
182
+ cols,
183
+ values: resultValues,
184
+ };
185
+ }
186
+ function forecastResult(xArg, knownYArg, knownXArg, deps) {
187
+ if (xArg === undefined || deps.isRangeArg(xArg)) {
188
+ return deps.errorValue(ErrorCode.Value);
189
+ }
190
+ if (xArg.tag === ValueTag.Error) {
191
+ return xArg;
192
+ }
193
+ const x = deps.toNumber(xArg);
194
+ if (x === undefined) {
195
+ return deps.errorValue(ErrorCode.Value);
196
+ }
197
+ const values = parseCorrelationOperands(knownYArg, knownXArg, deps);
198
+ if (!("first" in values)) {
199
+ return values;
200
+ }
201
+ const regression = linearRegressionFromPairs(values.first, values.second, deps);
202
+ return "intercept" in regression
203
+ ? deps.numberResult(regression.intercept + regression.slope * x)
204
+ : regression;
205
+ }
206
+ function trendLikeResult(mode, knownYArg, knownXArg, newXArg, constArg, deps) {
207
+ const knownYMatrix = regressionMatrixFromArg(knownYArg, deps);
208
+ if (!("values" in knownYMatrix)) {
209
+ return knownYMatrix;
210
+ }
211
+ const knownXMatrix = knownXArg === undefined
212
+ ? defaultRegressionSequence(knownYMatrix.rows, knownYMatrix.cols)
213
+ : regressionMatrixFromArg(knownXArg, deps);
214
+ if (!("values" in knownXMatrix)) {
215
+ return knownXMatrix;
216
+ }
217
+ if (knownXMatrix.values.length !== knownYMatrix.values.length ||
218
+ knownXMatrix.values.length === 0) {
219
+ return deps.errorValue(ErrorCode.Value);
220
+ }
221
+ const includeIntercept = coerceRegressionConstant(constArg, deps);
222
+ if (typeof includeIntercept !== "boolean") {
223
+ return includeIntercept;
224
+ }
225
+ const regressionY = mode === "growth"
226
+ ? knownYMatrix.values.map((value) => {
227
+ return value > 0 ? Math.log(value) : Number.NaN;
228
+ })
229
+ : [...knownYMatrix.values];
230
+ if (regressionY.some((value) => !Number.isFinite(value))) {
231
+ return deps.errorValue(ErrorCode.Value);
232
+ }
233
+ const regression = linearRegressionFromPairs(regressionY, knownXMatrix.values, deps, includeIntercept);
234
+ if (!("slope" in regression)) {
235
+ return regression;
236
+ }
237
+ const newXMatrix = newXArg === undefined
238
+ ? knownXArg === undefined
239
+ ? defaultRegressionSequence(knownYMatrix.rows, knownYMatrix.cols)
240
+ : knownXMatrix
241
+ : regressionMatrixFromArg(newXArg, deps);
242
+ if (!("values" in newXMatrix)) {
243
+ return newXMatrix;
244
+ }
245
+ const predicted = newXMatrix.values.map((xValue) => {
246
+ const linear = regression.intercept + regression.slope * xValue;
247
+ return mode === "growth" ? Math.exp(linear) : linear;
248
+ });
249
+ return predictionResultFromMatrix(predicted, newXMatrix.rows, newXMatrix.cols, deps);
250
+ }
251
+ function parseUnivariateRegressionDataset(mode, knownYArg, knownXArg, deps) {
252
+ const knownYMatrix = regressionMatrixFromArg(knownYArg, deps);
253
+ if (!("values" in knownYMatrix)) {
254
+ return knownYMatrix;
255
+ }
256
+ if (knownYMatrix.values.length === 0) {
257
+ return deps.errorValue(ErrorCode.Value);
258
+ }
259
+ const knownY = mode === "logest"
260
+ ? knownYMatrix.values.map((value) => (value > 0 ? Math.log(value) : Number.NaN))
261
+ : [...knownYMatrix.values];
262
+ if (knownY.some((value) => !Number.isFinite(value))) {
263
+ return deps.errorValue(ErrorCode.Value);
264
+ }
265
+ if (knownXArg === undefined) {
266
+ return {
267
+ knownY,
268
+ knownX: knownY.map((_, index) => index + 1),
269
+ };
270
+ }
271
+ const knownXMatrix = regressionMatrixFromArg(knownXArg, deps);
272
+ if (!("values" in knownXMatrix)) {
273
+ return knownXMatrix;
274
+ }
275
+ if (knownXMatrix.values.length !== knownY.length || knownXMatrix.values.length === 0) {
276
+ return deps.errorValue(ErrorCode.Value);
277
+ }
278
+ if (knownXMatrix.values.some((value) => !Number.isFinite(value))) {
279
+ return deps.errorValue(ErrorCode.Value);
280
+ }
281
+ return {
282
+ knownY,
283
+ knownX: [...knownXMatrix.values],
284
+ };
285
+ }
286
+ function analyzeUnivariateRegression(knownY, knownX, includeIntercept, deps) {
287
+ const regression = linearRegressionFromPairs(knownY, knownX, deps, includeIntercept);
288
+ if (!("slope" in regression)) {
289
+ return regression;
290
+ }
291
+ const count = knownY.length;
292
+ const meanY = knownY.reduce((sum, value) => sum + value, 0) / count;
293
+ const totalSumSquares = includeIntercept
294
+ ? knownY.reduce((sum, value) => sum + (value - meanY) ** 2, 0)
295
+ : knownY.reduce((sum, value) => sum + value ** 2, 0);
296
+ const residualSumSquares = Math.max(0, regression.residualSumSquares);
297
+ const regressionSumSquares = Math.max(0, totalSumSquares - residualSumSquares);
298
+ const parameterCount = includeIntercept ? 2 : 1;
299
+ const degreesFreedom = count - parameterCount;
300
+ let slopeStandardError;
301
+ let interceptStandardError;
302
+ let standardErrorY;
303
+ let fStatistic;
304
+ if (degreesFreedom > 0) {
305
+ const meanSquaredError = residualSumSquares / degreesFreedom;
306
+ standardErrorY = Math.sqrt(meanSquaredError);
307
+ if (includeIntercept) {
308
+ const meanX = knownX.reduce((sum, value) => sum + value, 0) / count;
309
+ const sumSquaresX = knownX.reduce((sum, value) => {
310
+ const deviation = value - meanX;
311
+ return sum + deviation * deviation;
312
+ }, 0);
313
+ if (sumSquaresX > 0) {
314
+ slopeStandardError = Math.sqrt(meanSquaredError / sumSquaresX);
315
+ interceptStandardError = Math.sqrt(meanSquaredError * (1 / count + (meanX * meanX) / sumSquaresX));
316
+ }
317
+ }
318
+ else {
319
+ const sumSquaresX = knownX.reduce((sum, value) => sum + value * value, 0);
320
+ if (sumSquaresX > 0) {
321
+ slopeStandardError = Math.sqrt(meanSquaredError / sumSquaresX);
322
+ interceptStandardError = 0;
323
+ }
324
+ }
325
+ if (residualSumSquares === 0) {
326
+ fStatistic = Number.POSITIVE_INFINITY;
327
+ }
328
+ else {
329
+ fStatistic = regressionSumSquares / (residualSumSquares / degreesFreedom);
330
+ }
331
+ }
332
+ let rSquared;
333
+ if (totalSumSquares === 0) {
334
+ rSquared = residualSumSquares === 0 ? 1 : undefined;
335
+ }
336
+ else {
337
+ rSquared = 1 - residualSumSquares / totalSumSquares;
338
+ }
339
+ return {
340
+ slope: regression.slope,
341
+ intercept: regression.intercept,
342
+ slopeStandardError,
343
+ interceptStandardError,
344
+ rSquared,
345
+ standardErrorY,
346
+ fStatistic,
347
+ degreesFreedom: degreesFreedom > 0 ? degreesFreedom : undefined,
348
+ regressionSumSquares,
349
+ residualSumSquares,
350
+ };
351
+ }
352
+ function regressionStatCell(value, { errorValue, numberResult }) {
353
+ if (value === undefined || Number.isNaN(value)) {
354
+ return errorValue(ErrorCode.Div0);
355
+ }
356
+ return Number.isFinite(value) ? numberResult(value) : errorValue(ErrorCode.Div0);
357
+ }
358
+ function linearEstimationResult(mode, knownYArg, knownXArg, constArg, statsArg, deps) {
359
+ const dataset = parseUnivariateRegressionDataset(mode, knownYArg, knownXArg, deps);
360
+ if (!("knownY" in dataset)) {
361
+ return dataset;
362
+ }
363
+ const includeIntercept = coerceRegressionFlag(constArg, true, deps);
364
+ if (typeof includeIntercept !== "boolean") {
365
+ return includeIntercept;
366
+ }
367
+ const includeStats = coerceRegressionFlag(statsArg, false, deps);
368
+ if (typeof includeStats !== "boolean") {
369
+ return includeStats;
370
+ }
371
+ const regression = analyzeUnivariateRegression(dataset.knownY, dataset.knownX, includeIntercept, deps);
372
+ if (!("slope" in regression)) {
373
+ return regression;
374
+ }
375
+ const leading = mode === "logest" ? Math.exp(regression.slope) : regression.slope;
376
+ const trailing = mode === "logest"
377
+ ? includeIntercept
378
+ ? Math.exp(regression.intercept)
379
+ : 1
380
+ : includeIntercept
381
+ ? regression.intercept
382
+ : 0;
383
+ if (!includeStats) {
384
+ return {
385
+ kind: "array",
386
+ rows: 1,
387
+ cols: 2,
388
+ values: [deps.numberResult(leading), deps.numberResult(trailing)],
389
+ };
390
+ }
391
+ return {
392
+ kind: "array",
393
+ rows: 5,
394
+ cols: 2,
395
+ values: [
396
+ deps.numberResult(leading),
397
+ deps.numberResult(trailing),
398
+ regressionStatCell(regression.slopeStandardError, deps),
399
+ regressionStatCell(regression.interceptStandardError, deps),
400
+ regressionStatCell(regression.rSquared, deps),
401
+ regressionStatCell(regression.standardErrorY, deps),
402
+ regressionStatCell(regression.fStatistic, deps),
403
+ regressionStatCell(regression.degreesFreedom, deps),
404
+ deps.numberResult(regression.regressionSumSquares),
405
+ deps.numberResult(regression.residualSumSquares),
406
+ ],
407
+ };
408
+ }
409
+ export function createLookupRegressionBuiltins(deps) {
410
+ return {
411
+ CORREL: (firstArg, secondArg) => {
412
+ const values = parseCorrelationOperands(firstArg, secondArg, deps);
413
+ if (!("first" in values)) {
414
+ return values;
415
+ }
416
+ const correlation = correlationFromPairs(values.first, values.second, deps);
417
+ return typeof correlation === "number" ? deps.numberResult(correlation) : correlation;
418
+ },
419
+ COVAR: (firstArg, secondArg) => {
420
+ const values = parseCorrelationOperands(firstArg, secondArg, deps);
421
+ if (!("first" in values)) {
422
+ return values;
423
+ }
424
+ const covariance = covarianceFromPairs(values.first, values.second, false, deps);
425
+ return typeof covariance === "number" ? deps.numberResult(covariance) : covariance;
426
+ },
427
+ PEARSON: (firstArg, secondArg) => {
428
+ const values = parseCorrelationOperands(firstArg, secondArg, deps);
429
+ if (!("first" in values)) {
430
+ return values;
431
+ }
432
+ const correlation = correlationFromPairs(values.first, values.second, deps);
433
+ return typeof correlation === "number" ? deps.numberResult(correlation) : correlation;
434
+ },
435
+ "COVARIANCE.P": (firstArg, secondArg) => {
436
+ const values = parseCorrelationOperands(firstArg, secondArg, deps);
437
+ if (!("first" in values)) {
438
+ return values;
439
+ }
440
+ const covariance = covarianceFromPairs(values.first, values.second, false, deps);
441
+ return typeof covariance === "number" ? deps.numberResult(covariance) : covariance;
442
+ },
443
+ "COVARIANCE.S": (firstArg, secondArg) => {
444
+ const values = parseCorrelationOperands(firstArg, secondArg, deps);
445
+ if (!("first" in values)) {
446
+ return values;
447
+ }
448
+ const covariance = covarianceFromPairs(values.first, values.second, true, deps);
449
+ return typeof covariance === "number" ? deps.numberResult(covariance) : covariance;
450
+ },
451
+ INTERCEPT: (knownYArg, knownXArg) => {
452
+ const values = parseCorrelationOperands(knownYArg, knownXArg, deps);
453
+ if (!("first" in values)) {
454
+ return values;
455
+ }
456
+ const regression = linearRegressionFromPairs(values.first, values.second, deps);
457
+ return "intercept" in regression ? deps.numberResult(regression.intercept) : regression;
458
+ },
459
+ SLOPE: (knownYArg, knownXArg) => {
460
+ const values = parseCorrelationOperands(knownYArg, knownXArg, deps);
461
+ if (!("first" in values)) {
462
+ return values;
463
+ }
464
+ const regression = linearRegressionFromPairs(values.first, values.second, deps);
465
+ return "slope" in regression ? deps.numberResult(regression.slope) : regression;
466
+ },
467
+ RSQ: (knownYArg, knownXArg) => {
468
+ const values = parseCorrelationOperands(knownYArg, knownXArg, deps);
469
+ if (!("first" in values)) {
470
+ return values;
471
+ }
472
+ const correlation = correlationFromPairs(values.first, values.second, deps);
473
+ return typeof correlation === "number"
474
+ ? deps.numberResult(correlation * correlation)
475
+ : correlation;
476
+ },
477
+ STEYX: (knownYArg, knownXArg) => {
478
+ const values = parseCorrelationOperands(knownYArg, knownXArg, deps);
479
+ if (!("first" in values)) {
480
+ return values;
481
+ }
482
+ if (values.first.length <= 2) {
483
+ return deps.errorValue(ErrorCode.Div0);
484
+ }
485
+ const regression = linearRegressionFromPairs(values.first, values.second, deps);
486
+ if (!("residualSumSquares" in regression)) {
487
+ return regression;
488
+ }
489
+ return deps.numberResult(Math.sqrt(Math.max(0, regression.residualSumSquares) / (values.first.length - 2)));
490
+ },
491
+ FORECAST: (xArg, knownYArg, knownXArg) => {
492
+ return forecastResult(xArg, knownYArg, knownXArg, deps);
493
+ },
494
+ "FORECAST.LINEAR": (xArg, knownYArg, knownXArg) => {
495
+ return forecastResult(xArg, knownYArg, knownXArg, deps);
496
+ },
497
+ TREND: (knownYArg, knownXArg, newXArg, constArg) => {
498
+ return trendLikeResult("trend", knownYArg, knownXArg, newXArg, constArg, deps);
499
+ },
500
+ GROWTH: (knownYArg, knownXArg, newXArg, constArg) => {
501
+ return trendLikeResult("growth", knownYArg, knownXArg, newXArg, constArg, deps);
502
+ },
503
+ LINEST: (knownYArg, knownXArg, constArg, statsArg) => {
504
+ return linearEstimationResult("linest", knownYArg, knownXArg, constArg, statsArg, deps);
505
+ },
506
+ LOGEST: (knownYArg, knownXArg, constArg, statsArg) => {
507
+ return linearEstimationResult("logest", knownYArg, knownXArg, constArg, statsArg, deps);
508
+ },
509
+ };
510
+ }
511
+ //# sourceMappingURL=lookup-regression-builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup-regression-builtins.js","sourceRoot":"","sources":["../../src/builtins/lookup-regression-builtins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { ErrorCode, ValueTag, type CellValue } from "@bilig/protocol";
2
+ import type { ArrayValue } from "../runtime-values.js";
3
+ import type { LookupBuiltin, LookupBuiltinArgument, RangeBuiltinArgument } from "./lookup.js";
4
+ interface LookupSortFilterBuiltinDeps {
5
+ errorValue: (code: ErrorCode) => CellValue;
6
+ arrayResult: (values: CellValue[], rows: number, cols: number) => ArrayValue;
7
+ isError: (value: LookupBuiltinArgument | undefined) => value is Extract<CellValue, {
8
+ tag: ValueTag.Error;
9
+ }>;
10
+ isRangeArg: (value: LookupBuiltinArgument | undefined) => value is RangeBuiltinArgument;
11
+ toBoolean: (value: CellValue) => boolean | undefined;
12
+ toInteger: (value: CellValue) => number | undefined;
13
+ requireCellRange: (arg: LookupBuiltinArgument) => RangeBuiltinArgument | CellValue;
14
+ toCellRange: (arg: LookupBuiltinArgument) => RangeBuiltinArgument | CellValue;
15
+ compareScalars: (left: CellValue, right: CellValue) => number | undefined;
16
+ getRangeValue: (range: RangeBuiltinArgument, row: number, col: number) => CellValue;
17
+ pickRangeRow: (range: RangeBuiltinArgument, row: number) => CellValue[];
18
+ }
19
+ export declare function createLookupSortFilterBuiltins(deps: LookupSortFilterBuiltinDeps): Record<string, LookupBuiltin>;
20
+ export {};