@syncfusion/ej2-calculate 35.1.37

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 (173) hide show
  1. package/.eslintrc.json +263 -0
  2. package/README.md +132 -0
  3. package/base.d.ts +4 -0
  4. package/base.js +4 -0
  5. package/common.d.ts +4 -0
  6. package/common.js +4 -0
  7. package/dist/ej2-calculate.umd.min.js +11 -0
  8. package/dist/ej2-calculate.umd.min.js.map +1 -0
  9. package/dist/es6/ej2-calculate.es2015.js +24801 -0
  10. package/dist/es6/ej2-calculate.es2015.js.map +1 -0
  11. package/dist/es6/ej2-calculate.es5.js +27229 -0
  12. package/dist/es6/ej2-calculate.es5.js.map +1 -0
  13. package/dist/global/ej2-calculate.min.js +11 -0
  14. package/dist/global/ej2-calculate.min.js.map +1 -0
  15. package/dist/global/index.d.ts +14 -0
  16. package/formulas.d.ts +4 -0
  17. package/formulas.js +4 -0
  18. package/index.d.ts +4 -0
  19. package/index.js +4 -0
  20. package/license +10 -0
  21. package/package.json +30 -0
  22. package/src/base/calculate-model.d.ts +4 -0
  23. package/src/base/calculate-model.js +0 -0
  24. package/src/base/calculate.d.ts +1105 -0
  25. package/src/base/calculate.js +4720 -0
  26. package/src/base/index.d.ts +8 -0
  27. package/src/base/index.js +7 -0
  28. package/src/base/parser.d.ts +208 -0
  29. package/src/base/parser.js +1512 -0
  30. package/src/common/address.d.ts +59 -0
  31. package/src/common/address.js +96 -0
  32. package/src/common/cell-ref.d.ts +32 -0
  33. package/src/common/cell-ref.js +112 -0
  34. package/src/common/common.d.ts +44 -0
  35. package/src/common/common.js +134 -0
  36. package/src/common/enum.d.ts +94 -0
  37. package/src/common/enum.js +97 -0
  38. package/src/common/index.d.ts +9 -0
  39. package/src/common/index.js +8 -0
  40. package/src/common/interface.d.ts +122 -0
  41. package/src/common/interface.js +0 -0
  42. package/src/common/l10n.d.ts +24 -0
  43. package/src/common/l10n.js +54 -0
  44. package/src/common/number-date.d.ts +26 -0
  45. package/src/common/number-date.js +38 -0
  46. package/src/common/sheet-info.d.ts +10 -0
  47. package/src/common/sheet-info.js +17 -0
  48. package/src/common/sort.d.ts +17 -0
  49. package/src/common/sort.js +44 -0
  50. package/src/formulas/array.d.ts +47 -0
  51. package/src/formulas/array.js +718 -0
  52. package/src/formulas/basic.d.ts +47 -0
  53. package/src/formulas/basic.js +181 -0
  54. package/src/formulas/complex-numbers.d.ts +207 -0
  55. package/src/formulas/complex-numbers.js +549 -0
  56. package/src/formulas/database.d.ts +152 -0
  57. package/src/formulas/database.js +579 -0
  58. package/src/formulas/date-time-extra.d.ts +97 -0
  59. package/src/formulas/date-time-extra.js +415 -0
  60. package/src/formulas/date-time-intl.d.ts +57 -0
  61. package/src/formulas/date-time-intl.js +309 -0
  62. package/src/formulas/date-time.d.ts +164 -0
  63. package/src/formulas/date-time.js +1021 -0
  64. package/src/formulas/engineering-base.d.ts +150 -0
  65. package/src/formulas/engineering-base.js +404 -0
  66. package/src/formulas/engineering-bessel.d.ts +65 -0
  67. package/src/formulas/engineering-bessel.js +167 -0
  68. package/src/formulas/engineering-convert.d.ts +35 -0
  69. package/src/formulas/engineering-convert.js +120 -0
  70. package/src/formulas/engineering-misc.d.ts +64 -0
  71. package/src/formulas/engineering-misc.js +168 -0
  72. package/src/formulas/financial-amortization-ecma.d.ts +87 -0
  73. package/src/formulas/financial-amortization-ecma.js +288 -0
  74. package/src/formulas/financial-annuity.d.ts +104 -0
  75. package/src/formulas/financial-annuity.js +419 -0
  76. package/src/formulas/financial-bond-helpers.d.ts +106 -0
  77. package/src/formulas/financial-bond-helpers.js +190 -0
  78. package/src/formulas/financial-cashflow.d.ts +47 -0
  79. package/src/formulas/financial-cashflow.js +203 -0
  80. package/src/formulas/financial-coupons.d.ts +227 -0
  81. package/src/formulas/financial-coupons.js +810 -0
  82. package/src/formulas/financial-depreciation.d.ts +64 -0
  83. package/src/formulas/financial-depreciation.js +247 -0
  84. package/src/formulas/financial-rates.d.ts +54 -0
  85. package/src/formulas/financial-rates.js +140 -0
  86. package/src/formulas/financial-securities.d.ts +126 -0
  87. package/src/formulas/financial-securities.js +488 -0
  88. package/src/formulas/formula-math-helpers.d.ts +212 -0
  89. package/src/formulas/formula-math-helpers.js +599 -0
  90. package/src/formulas/formula-module-base.d.ts +54 -0
  91. package/src/formulas/formula-module-base.js +125 -0
  92. package/src/formulas/formula-owner.d.ts +17 -0
  93. package/src/formulas/formula-owner.js +0 -0
  94. package/src/formulas/index.d.ts +68 -0
  95. package/src/formulas/index.js +67 -0
  96. package/src/formulas/information-advanced.d.ts +44 -0
  97. package/src/formulas/information-advanced.js +157 -0
  98. package/src/formulas/information-ecma.d.ts +33 -0
  99. package/src/formulas/information-ecma.js +88 -0
  100. package/src/formulas/information-extra.d.ts +146 -0
  101. package/src/formulas/information-extra.js +351 -0
  102. package/src/formulas/information.d.ts +34 -0
  103. package/src/formulas/information.js +78 -0
  104. package/src/formulas/logical-extra.d.ts +75 -0
  105. package/src/formulas/logical-extra.js +217 -0
  106. package/src/formulas/logical.d.ts +83 -0
  107. package/src/formulas/logical.js +296 -0
  108. package/src/formulas/lookup-array.d.ts +98 -0
  109. package/src/formulas/lookup-array.js +364 -0
  110. package/src/formulas/lookup-ref-extra.d.ts +64 -0
  111. package/src/formulas/lookup-ref-extra.js +180 -0
  112. package/src/formulas/lookup-ref.d.ts +84 -0
  113. package/src/formulas/lookup-ref.js +263 -0
  114. package/src/formulas/lookup.d.ts +114 -0
  115. package/src/formulas/lookup.js +881 -0
  116. package/src/formulas/math-aggregate.d.ts +74 -0
  117. package/src/formulas/math-aggregate.js +376 -0
  118. package/src/formulas/math-ceiling-ecma.d.ts +42 -0
  119. package/src/formulas/math-ceiling-ecma.js +123 -0
  120. package/src/formulas/math-combinatorics.d.ts +75 -0
  121. package/src/formulas/math-combinatorics.js +290 -0
  122. package/src/formulas/math-misc.d.ts +164 -0
  123. package/src/formulas/math-misc.js +889 -0
  124. package/src/formulas/math-number.d.ts +76 -0
  125. package/src/formulas/math-number.js +261 -0
  126. package/src/formulas/math-rounding.d.ts +115 -0
  127. package/src/formulas/math-rounding.js +728 -0
  128. package/src/formulas/math-trig-hyperbolic.d.ts +55 -0
  129. package/src/formulas/math-trig-hyperbolic.js +113 -0
  130. package/src/formulas/math-trig.d.ts +165 -0
  131. package/src/formulas/math-trig.js +334 -0
  132. package/src/formulas/matrix-base.d.ts +13 -0
  133. package/src/formulas/matrix-base.js +169 -0
  134. package/src/formulas/matrix.d.ts +64 -0
  135. package/src/formulas/matrix.js +161 -0
  136. package/src/formulas/regression-ecma.d.ts +66 -0
  137. package/src/formulas/regression-ecma.js +234 -0
  138. package/src/formulas/statistical-advanced.d.ts +125 -0
  139. package/src/formulas/statistical-advanced.js +756 -0
  140. package/src/formulas/statistical-correlation.d.ts +75 -0
  141. package/src/formulas/statistical-correlation.js +198 -0
  142. package/src/formulas/statistical-dispersion.d.ts +108 -0
  143. package/src/formulas/statistical-dispersion.js +337 -0
  144. package/src/formulas/statistical-distribution-extended.d.ts +176 -0
  145. package/src/formulas/statistical-distribution-extended.js +668 -0
  146. package/src/formulas/statistical-distribution.d.ts +104 -0
  147. package/src/formulas/statistical-distribution.js +368 -0
  148. package/src/formulas/statistical-ecma.d.ts +95 -0
  149. package/src/formulas/statistical-ecma.js +392 -0
  150. package/src/formulas/statistical-extended.d.ts +136 -0
  151. package/src/formulas/statistical-extended.js +340 -0
  152. package/src/formulas/statistical-ifs.d.ts +46 -0
  153. package/src/formulas/statistical-ifs.js +180 -0
  154. package/src/formulas/statistical-moments.d.ts +84 -0
  155. package/src/formulas/statistical-moments.js +269 -0
  156. package/src/formulas/statistical-percentile.d.ts +56 -0
  157. package/src/formulas/statistical-percentile.js +195 -0
  158. package/src/formulas/statistical-sample-base.d.ts +14 -0
  159. package/src/formulas/statistical-sample-base.js +124 -0
  160. package/src/formulas/statistical.d.ts +135 -0
  161. package/src/formulas/statistical.js +542 -0
  162. package/src/formulas/text-advanced.d.ts +64 -0
  163. package/src/formulas/text-advanced.js +222 -0
  164. package/src/formulas/text-ecma.d.ts +54 -0
  165. package/src/formulas/text-ecma.js +106 -0
  166. package/src/formulas/text-extra.d.ts +216 -0
  167. package/src/formulas/text-extra.js +657 -0
  168. package/src/formulas/text.d.ts +125 -0
  169. package/src/formulas/text.js +628 -0
  170. package/src/global.js +1 -0
  171. package/src/index.d.ts +14 -0
  172. package/src/index.js +14 -0
  173. package/tslint.json +111 -0
@@ -0,0 +1,75 @@
1
+ import { IBasicFormula } from '../common/index';
2
+ import { FormulaOwner } from './formula-owner';
3
+ import { FormulaModuleBase } from './formula-module-base';
4
+ /**
5
+ * Combinatorial functions for permutations, combinations, and greatest-common-divisor calculations.
6
+ *
7
+ * Registered functions: FACTDOUBLE, MULTINOMIAL, PERMUT, SERIESSUM, ROMAN.
8
+ *
9
+ * @hidden
10
+ */
11
+ export declare class MathCombinatoricsFormulas extends FormulaModuleBase {
12
+ /** Formula definitions registered with {@link BasicFormulas}. */
13
+ formulas: IBasicFormula[];
14
+ /**
15
+ * @hidden
16
+ * @param {FormulaOwner} owner - Formula registration owner ({@link BasicFormulas}).
17
+ */
18
+ constructor(owner: FormulaOwner);
19
+ /**
20
+ * Returns the double factorial of a number.
21
+ *
22
+ * Excel: `FACTDOUBLE(...)`.
23
+ *
24
+ * @hidden
25
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
26
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * engine.computeFormula('=FACTDOUBLE(1)');
31
+ * ```
32
+ */
33
+ ComputeFACTDOUBLE(...args: string[]): string | number;
34
+ /**
35
+ * Returns the multinomial of a set of numbers.
36
+ *
37
+ * Excel: `MULTINOMIAL(...)`.
38
+ *
39
+ * @hidden
40
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
41
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
42
+ */
43
+ ComputeMULTINOMIAL(...args: string[]): string | number;
44
+ /**
45
+ * Returns the number of permutations for a given number of objects.
46
+ *
47
+ * Excel: `PERMUT(...)`.
48
+ *
49
+ * @hidden
50
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
51
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
52
+ */
53
+ ComputePERMUT(...args: string[]): string | number;
54
+ /**
55
+ * Returns the sum of a power series.
56
+ *
57
+ * Excel: `SERIESSUM(...)`.
58
+ *
59
+ * @hidden
60
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
61
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
62
+ */
63
+ ComputeSERIESSUM(...args: string[]): string | number;
64
+ /**
65
+ * Converts an Arabic numeral to Roman, as text.
66
+ *
67
+ * Excel: `ROMAN(...)`.
68
+ *
69
+ * @hidden
70
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
71
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
72
+ */
73
+ ComputeROMAN(...args: string[]): string | number;
74
+ private toRoman;
75
+ }
@@ -0,0 +1,290 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ extendStatics(d, b);
10
+ function __() { this.constructor = d; }
11
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
+ };
13
+ })();
14
+ import { FormulasErrorsStrings, CommonErrors } from '../common/index';
15
+ import { isNullOrUndefined } from '@syncfusion/ej2-base';
16
+ import { FormulaModuleBase } from './formula-module-base';
17
+ import { factorial } from './formula-math-helpers';
18
+ /**
19
+ * Combinatorial functions for permutations, combinations, and greatest-common-divisor calculations.
20
+ *
21
+ * Registered functions: FACTDOUBLE, MULTINOMIAL, PERMUT, SERIESSUM, ROMAN.
22
+ *
23
+ * @hidden
24
+ */
25
+ var MathCombinatoricsFormulas = /** @class */ (function (_super) {
26
+ __extends(MathCombinatoricsFormulas, _super);
27
+ /**
28
+ * @hidden
29
+ * @param {FormulaOwner} owner - Formula registration owner ({@link BasicFormulas}).
30
+ */
31
+ function MathCombinatoricsFormulas(owner) {
32
+ var _this = _super.call(this, owner) || this;
33
+ /** Formula definitions registered with {@link BasicFormulas}. */
34
+ _this.formulas = [
35
+ { formulaName: 'FACTDOUBLE', category: 'Math & Trig', description: 'Returns the double factorial of a number.' },
36
+ { formulaName: 'MULTINOMIAL', category: 'Math & Trig', description: 'Returns the multinomial of a set of numbers.' },
37
+ { formulaName: 'PERMUT', category: 'Math & Trig', description: 'Returns the number of permutations for a given number of objects.' },
38
+ { formulaName: 'SERIESSUM', category: 'Math & Trig', description: 'Returns the sum of a power series.' },
39
+ { formulaName: 'ROMAN', category: 'Math & Trig', description: 'Converts an Arabic numeral to Roman, as text.' }
40
+ ];
41
+ return _this;
42
+ }
43
+ /**
44
+ * Returns the double factorial of a number.
45
+ *
46
+ * Excel: `FACTDOUBLE(...)`.
47
+ *
48
+ * @hidden
49
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
50
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * engine.computeFormula('=FACTDOUBLE(1)');
55
+ * ```
56
+ */
57
+ MathCombinatoricsFormulas.prototype.ComputeFACTDOUBLE = function () {
58
+ var args = [];
59
+ for (var _i = 0; _i < arguments.length; _i++) {
60
+ args[_i] = arguments[_i];
61
+ }
62
+ var errCollection = this.parent.getErrorStrings();
63
+ if (isNullOrUndefined(args) || args.length !== 1) {
64
+ return this.parent.formulaErrorStrings[FormulasErrorsStrings.WrongNumberArguments];
65
+ }
66
+ var num = this.resolveNumberArg(args[0]);
67
+ if (typeof num === 'string') {
68
+ return num;
69
+ }
70
+ var n = Math.floor(num);
71
+ if (n < 0 || n > 300) {
72
+ return errCollection[CommonErrors.Num];
73
+ }
74
+ var result = 1;
75
+ for (var i = n; i > 0; i -= 2) {
76
+ result *= i;
77
+ }
78
+ return result.toString();
79
+ };
80
+ /**
81
+ * Returns the multinomial of a set of numbers.
82
+ *
83
+ * Excel: `MULTINOMIAL(...)`.
84
+ *
85
+ * @hidden
86
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
87
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
88
+ */
89
+ MathCombinatoricsFormulas.prototype.ComputeMULTINOMIAL = function () {
90
+ var args = [];
91
+ for (var _i = 0; _i < arguments.length; _i++) {
92
+ args[_i] = arguments[_i];
93
+ }
94
+ var errCollection = this.parent.getErrorStrings();
95
+ if (isNullOrUndefined(args) || (args.length === 1 && args[0] === '')) {
96
+ return this.parent.formulaErrorStrings[FormulasErrorsStrings.InvalidArguments];
97
+ }
98
+ var values = [];
99
+ for (var i = 0; i < args.length; i++) {
100
+ var num = this.resolveNumberArg(args[i]);
101
+ if (typeof num === 'string') {
102
+ return num;
103
+ }
104
+ var n = Math.floor(num);
105
+ if (n < 0) {
106
+ return errCollection[CommonErrors.Num];
107
+ }
108
+ values.push(n);
109
+ }
110
+ var sum = values.reduce(function (a, b) { return a + b; }, 0);
111
+ var denom = 1;
112
+ for (var i = 0; i < values.length; i++) {
113
+ denom *= factorial(values[i]);
114
+ }
115
+ var result = factorial(sum) / denom;
116
+ return result.toString();
117
+ };
118
+ /**
119
+ * Returns the number of permutations for a given number of objects.
120
+ *
121
+ * Excel: `PERMUT(...)`.
122
+ *
123
+ * @hidden
124
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
125
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
126
+ */
127
+ MathCombinatoricsFormulas.prototype.ComputePERMUT = function () {
128
+ var args = [];
129
+ for (var _i = 0; _i < arguments.length; _i++) {
130
+ args[_i] = arguments[_i];
131
+ }
132
+ var errCollection = this.parent.getErrorStrings();
133
+ if (isNullOrUndefined(args) || args.length !== 2) {
134
+ return this.parent.formulaErrorStrings[FormulasErrorsStrings.WrongNumberArguments];
135
+ }
136
+ var nArg = this.resolveNumberArg(args[0]);
137
+ var kArg = this.resolveNumberArg(args[1]);
138
+ if (typeof nArg === 'string') {
139
+ return nArg;
140
+ }
141
+ if (typeof kArg === 'string') {
142
+ return kArg;
143
+ }
144
+ var n = Math.floor(nArg);
145
+ var k = Math.floor(kArg);
146
+ if (n < 0 || k < 0 || n < k) {
147
+ return errCollection[CommonErrors.Num];
148
+ }
149
+ var result = 1;
150
+ for (var i = 0; i < k; i++) {
151
+ result *= n - i;
152
+ }
153
+ return result.toString();
154
+ };
155
+ /**
156
+ * Returns the sum of a power series.
157
+ *
158
+ * Excel: `SERIESSUM(...)`.
159
+ *
160
+ * @hidden
161
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
162
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
163
+ */
164
+ MathCombinatoricsFormulas.prototype.ComputeSERIESSUM = function () {
165
+ var args = [];
166
+ for (var _i = 0; _i < arguments.length; _i++) {
167
+ args[_i] = arguments[_i];
168
+ }
169
+ if (isNullOrUndefined(args) || args.length < 4) {
170
+ return this.parent.formulaErrorStrings[FormulasErrorsStrings.WrongNumberArguments];
171
+ }
172
+ var x = this.resolveNumberArg(args[0]);
173
+ var n = this.resolveNumberArg(args[1]);
174
+ var m = this.resolveNumberArg(args[2]);
175
+ if (typeof x === 'string') {
176
+ return x;
177
+ }
178
+ if (typeof n === 'string') {
179
+ return n;
180
+ }
181
+ if (typeof m === 'string') {
182
+ return m;
183
+ }
184
+ var coeffs = [];
185
+ for (var i = 3; i < args.length; i++) {
186
+ var c = this.resolveNumberArg(args[i]);
187
+ if (typeof c === 'string') {
188
+ return c;
189
+ }
190
+ coeffs.push(c);
191
+ }
192
+ var sum = 0;
193
+ for (var i = 0; i < coeffs.length; i++) {
194
+ var power = n + i * m;
195
+ sum += coeffs[i] * Math.pow(x, power);
196
+ }
197
+ return sum.toString();
198
+ };
199
+ /**
200
+ * Converts an Arabic numeral to Roman, as text.
201
+ *
202
+ * Excel: `ROMAN(...)`.
203
+ *
204
+ * @hidden
205
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
206
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
207
+ */
208
+ MathCombinatoricsFormulas.prototype.ComputeROMAN = function () {
209
+ var args = [];
210
+ for (var _i = 0; _i < arguments.length; _i++) {
211
+ args[_i] = arguments[_i];
212
+ }
213
+ var errCollection = this.parent.getErrorStrings();
214
+ if (isNullOrUndefined(args) || args.length < 1 || args.length > 2) {
215
+ return this.parent.formulaErrorStrings[FormulasErrorsStrings.WrongNumberArguments];
216
+ }
217
+ var numArg = this.resolveNumberArg(args[0]);
218
+ if (typeof numArg === 'string') {
219
+ return numArg;
220
+ }
221
+ var form = 0;
222
+ if (args.length === 2) {
223
+ var formArg = this.resolveNumberArg(args[1]);
224
+ if (typeof formArg === 'string') {
225
+ return formArg;
226
+ }
227
+ form = Math.floor(formArg);
228
+ if (form < 0 || form > 4) {
229
+ return errCollection[CommonErrors.Value];
230
+ }
231
+ }
232
+ var n = Math.floor(numArg);
233
+ if (n < 0 || n > 3999) {
234
+ return errCollection[CommonErrors.Value];
235
+ }
236
+ if (n === 0) {
237
+ return '';
238
+ }
239
+ return this.toRoman(n, form);
240
+ };
241
+ MathCombinatoricsFormulas.prototype.toRoman = function (num, form) {
242
+ var thousands = ['', 'M', 'MM', 'MMM'];
243
+ var hundredsClassic = [
244
+ ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'],
245
+ ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'],
246
+ ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'],
247
+ ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'],
248
+ ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM']
249
+ ];
250
+ var tensClassic = [
251
+ ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
252
+ ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
253
+ ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
254
+ ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
255
+ ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC']
256
+ ];
257
+ var onesClassic = [
258
+ ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
259
+ ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
260
+ ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
261
+ ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
262
+ ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']
263
+ ];
264
+ var f = Math.min(form, 4);
265
+ var result = thousands[Math.floor(num / 1000)];
266
+ result += hundredsClassic[f][Math.floor((num % 1000) / 100)];
267
+ result += tensClassic[f][Math.floor((num % 100) / 10)];
268
+ result += onesClassic[f][num % 10];
269
+ if (form === 1) {
270
+ result = result.replace(/XLV/g, 'VL').replace(/XCV/g, 'VC').replace(/CDL/g, 'LD')
271
+ .replace(/CML/g, 'LM').replace(/CMVC/g, 'LMVL');
272
+ }
273
+ else if (form === 2) {
274
+ result = result.replace(/IV/g, 'IIII').replace(/IX/g, 'VIIII')
275
+ .replace(/XL/g, 'XXXX').replace(/XC/g, 'LXXXX')
276
+ .replace(/CD/g, 'CCCC').replace(/CM/g, 'DCCCC');
277
+ }
278
+ else if (form === 3) {
279
+ result = result.replace(/IV/g, 'IIII').replace(/IX/g, 'VIIII')
280
+ .replace(/XL/g, 'XXXX').replace(/XC/g, 'LXXXX')
281
+ .replace(/CD/g, 'CCCC').replace(/CM/g, 'DCCCC');
282
+ }
283
+ else if (form === 4) {
284
+ result = result.replace(/V/g, 'IV').replace(/L/g, 'XL').replace(/D/g, 'CD');
285
+ }
286
+ return result;
287
+ };
288
+ return MathCombinatoricsFormulas;
289
+ }(FormulaModuleBase));
290
+ export { MathCombinatoricsFormulas };
@@ -0,0 +1,164 @@
1
+ import { IBasicFormula } from '../common/index';
2
+ import { FormulaOwner } from './formula-owner';
3
+ import { FormulaModuleBase } from './formula-module-base';
4
+ /**
5
+ * Core numeric utilities: absolute value, random numbers, logarithms, powers, roots, factorials, and angle/unit conversions.
6
+ *
7
+ * Registers 14 functions including ABS, RAND, RANDBETWEEN, RADIANS, DEGREES, and others.
8
+ *
9
+ * @hidden
10
+ */
11
+ export declare class MathMiscFormulas extends FormulaModuleBase {
12
+ /** Formula definitions registered with {@link BasicFormulas}. */
13
+ formulas: IBasicFormula[];
14
+ /**
15
+ * @hidden
16
+ * @param {FormulaOwner} owner - Formula registration owner ({@link BasicFormulas}).
17
+ */
18
+ constructor(owner: FormulaOwner);
19
+ /**
20
+ * Returns the absolute value of a number.
21
+ *
22
+ * Excel: `ABS(...)`.
23
+ *
24
+ * @hidden
25
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
26
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * engine.computeFormula('=ABS(-5)');
31
+ * ```
32
+ */
33
+ ComputeABS(...args: string[]): string | number;
34
+ /**
35
+ * Return a random number between 0 and 1.
36
+ *
37
+ * Excel: `RAND(...)`.
38
+ *
39
+ * @hidden
40
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
41
+ * @returns {string | number} - Computed text result or an Excel error token such as `#VALUE!`.
42
+ */
43
+ ComputeRAND(...args: string[]): string;
44
+ /**
45
+ * Returns an integer random number in a specified range.
46
+ *
47
+ * Excel: `RANDBETWEEN(...)`.
48
+ *
49
+ * @hidden
50
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
51
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
52
+ */
53
+ ComputeRANDBETWEEN(...args: string[]): string | number;
54
+ /**
55
+ * Converts degrees to radians.
56
+ *
57
+ * Excel: `RADIANS(...)`.
58
+ *
59
+ * @hidden
60
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
61
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
62
+ */
63
+ ComputeRADIANS(...args: string[]): string | number;
64
+ /**
65
+ * Converts radians to degrees.
66
+ *
67
+ * Excel: `DEGREES(...)`.
68
+ *
69
+ * @hidden
70
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
71
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
72
+ */
73
+ ComputeDEGREES(...args: string[]): string | number;
74
+ /**
75
+ * Returns the value of pi.
76
+ *
77
+ * Excel: `PI(...)`.
78
+ *
79
+ * @hidden
80
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
81
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
82
+ */
83
+ ComputePI(...args: string[]): string | number;
84
+ /**
85
+ * Returns a remainder after a number is divided by divisor.
86
+ *
87
+ * Excel: `MOD(...)`.
88
+ *
89
+ * @hidden
90
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
91
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
92
+ */
93
+ ComputeMOD(...args: string[]): string | number;
94
+ /**
95
+ * Returns the factorial of a number.
96
+ *
97
+ * Excel: `FACT(...)`.
98
+ *
99
+ * @hidden
100
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
101
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
102
+ */
103
+ ComputeFACT(...args: string[]): string | number;
104
+ /**
105
+ * Converts a text representation of a number in a given base into a decimal number.
106
+ *
107
+ * Excel: `DECIMAL(...)`.
108
+ *
109
+ * @hidden
110
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
111
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
112
+ */
113
+ ComputeDECIMAL(...args: string[]): string | number;
114
+ /**
115
+ * Returns the natural logarithm of a number.
116
+ *
117
+ * Excel: `LN(...)`.
118
+ *
119
+ * @hidden
120
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
121
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
122
+ */
123
+ ComputeLN(...args: string[]): string | number;
124
+ /**
125
+ * Returns the logarithm of a number to the base that you specify.
126
+ *
127
+ * Excel: `LOG(...)`.
128
+ *
129
+ * @hidden
130
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
131
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
132
+ */
133
+ ComputeLOG(...args: string[]): number | string;
134
+ /**
135
+ * Returns the result of a number raised to power.
136
+ *
137
+ * Excel: `POWER(...)`.
138
+ *
139
+ * @hidden
140
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
141
+ * @returns {boolean} - Boolean result, nested-formula numeric string (`"0"`/`"1"`), or an Excel error token.
142
+ */
143
+ ComputePOWER(...args: string[]): boolean | string;
144
+ /**
145
+ * Returns the square root of a positive number.
146
+ *
147
+ * Excel: `SQRT(...)`.
148
+ *
149
+ * @hidden
150
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
151
+ * @returns {string | number} - Computed Excel-compatible numeric or text result, or an error token such as `#VALUE!`, `#NUM!`, `#N/A`.
152
+ */
153
+ ComputeSQRT(...args: string[]): number | string;
154
+ /**
155
+ * Returns e raised to the power of the given number.
156
+ *
157
+ * Excel: `EXP(...)`.
158
+ *
159
+ * @hidden
160
+ * @param {string[]} args - Formula argument tokens from the Calculate engine.
161
+ * @returns {boolean} - Boolean result, nested-formula numeric string (`"0"`/`"1"`), or an Excel error token.
162
+ */
163
+ ComputeEXP(...args: string[]): boolean | string;
164
+ }