1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.absNumber = absNumber;
|
7 | exports.addNumber = addNumber;
|
8 | exports.subtractNumber = subtractNumber;
|
9 | exports.multiplyNumber = multiplyNumber;
|
10 | exports.divideNumber = divideNumber;
|
11 | exports.unaryMinusNumber = unaryMinusNumber;
|
12 | exports.unaryPlusNumber = unaryPlusNumber;
|
13 | exports.cbrtNumber = cbrtNumber;
|
14 | exports.ceilNumber = ceilNumber;
|
15 | exports.cubeNumber = cubeNumber;
|
16 | exports.expNumber = expNumber;
|
17 | exports.expm1Number = expm1Number;
|
18 | exports.fixNumber = fixNumber;
|
19 | exports.floorNumber = floorNumber;
|
20 | exports.gcdNumber = gcdNumber;
|
21 | exports.lcmNumber = lcmNumber;
|
22 | exports.logNumber = logNumber;
|
23 | exports.log10Number = log10Number;
|
24 | exports.log2Number = log2Number;
|
25 | exports.log1pNumber = log1pNumber;
|
26 | exports.modNumber = modNumber;
|
27 | exports.nthRootNumber = nthRootNumber;
|
28 | exports.signNumber = signNumber;
|
29 | exports.sqrtNumber = sqrtNumber;
|
30 | exports.squareNumber = squareNumber;
|
31 | exports.xgcdNumber = xgcdNumber;
|
32 | exports.powNumber = powNumber;
|
33 | exports.roundNumber = roundNumber;
|
34 | exports.normNumber = normNumber;
|
35 |
|
36 | var _number = require("../../utils/number.js");
|
37 |
|
38 | var n1 = 'number';
|
39 | var n2 = 'number, number';
|
40 |
|
41 | function absNumber(a) {
|
42 | return Math.abs(a);
|
43 | }
|
44 |
|
45 | absNumber.signature = n1;
|
46 |
|
47 | function addNumber(a, b) {
|
48 | return a + b;
|
49 | }
|
50 |
|
51 | addNumber.signature = n2;
|
52 |
|
53 | function subtractNumber(a, b) {
|
54 | return a - b;
|
55 | }
|
56 |
|
57 | subtractNumber.signature = n2;
|
58 |
|
59 | function multiplyNumber(a, b) {
|
60 | return a * b;
|
61 | }
|
62 |
|
63 | multiplyNumber.signature = n2;
|
64 |
|
65 | function divideNumber(a, b) {
|
66 | return a / b;
|
67 | }
|
68 |
|
69 | divideNumber.signature = n2;
|
70 |
|
71 | function unaryMinusNumber(x) {
|
72 | return -x;
|
73 | }
|
74 |
|
75 | unaryMinusNumber.signature = n1;
|
76 |
|
77 | function unaryPlusNumber(x) {
|
78 | return x;
|
79 | }
|
80 |
|
81 | unaryPlusNumber.signature = n1;
|
82 |
|
83 | function cbrtNumber(x) {
|
84 | return (0, _number.cbrt)(x);
|
85 | }
|
86 |
|
87 | cbrtNumber.signature = n1;
|
88 |
|
89 | function ceilNumber(x) {
|
90 | return Math.ceil(x);
|
91 | }
|
92 |
|
93 | ceilNumber.signature = n1;
|
94 |
|
95 | function cubeNumber(x) {
|
96 | return x * x * x;
|
97 | }
|
98 |
|
99 | cubeNumber.signature = n1;
|
100 |
|
101 | function expNumber(x) {
|
102 | return Math.exp(x);
|
103 | }
|
104 |
|
105 | expNumber.signature = n1;
|
106 |
|
107 | function expm1Number(x) {
|
108 | return (0, _number.expm1)(x);
|
109 | }
|
110 |
|
111 | expm1Number.signature = n1;
|
112 |
|
113 | function fixNumber(x) {
|
114 | return x > 0 ? Math.floor(x) : Math.ceil(x);
|
115 | }
|
116 |
|
117 | fixNumber.signature = n1;
|
118 |
|
119 | function floorNumber(x) {
|
120 | return Math.floor(x);
|
121 | }
|
122 |
|
123 | floorNumber.signature = n1;
|
124 |
|
125 |
|
126 |
|
127 |
|
128 |
|
129 |
|
130 |
|
131 | function gcdNumber(a, b) {
|
132 | if (!(0, _number.isInteger)(a) || !(0, _number.isInteger)(b)) {
|
133 | throw new Error('Parameters in function gcd must be integer numbers');
|
134 | }
|
135 |
|
136 |
|
137 | var r;
|
138 |
|
139 | while (b !== 0) {
|
140 | r = a % b;
|
141 | a = b;
|
142 | b = r;
|
143 | }
|
144 |
|
145 | return a < 0 ? -a : a;
|
146 | }
|
147 |
|
148 | gcdNumber.signature = n2;
|
149 |
|
150 |
|
151 |
|
152 |
|
153 |
|
154 |
|
155 |
|
156 | function lcmNumber(a, b) {
|
157 | if (!(0, _number.isInteger)(a) || !(0, _number.isInteger)(b)) {
|
158 | throw new Error('Parameters in function lcm must be integer numbers');
|
159 | }
|
160 |
|
161 | if (a === 0 || b === 0) {
|
162 | return 0;
|
163 | }
|
164 |
|
165 |
|
166 |
|
167 | var t;
|
168 | var prod = a * b;
|
169 |
|
170 | while (b !== 0) {
|
171 | t = b;
|
172 | b = a % t;
|
173 | a = t;
|
174 | }
|
175 |
|
176 | return Math.abs(prod / a);
|
177 | }
|
178 |
|
179 | lcmNumber.signature = n2;
|
180 |
|
181 |
|
182 |
|
183 |
|
184 |
|
185 |
|
186 | function logNumber(x) {
|
187 | return Math.log(x);
|
188 | }
|
189 |
|
190 | logNumber.signature = n1;
|
191 |
|
192 |
|
193 |
|
194 |
|
195 |
|
196 |
|
197 | function log10Number(x) {
|
198 | return (0, _number.log10)(x);
|
199 | }
|
200 |
|
201 | log10Number.signature = n1;
|
202 |
|
203 |
|
204 |
|
205 |
|
206 |
|
207 |
|
208 | function log2Number(x) {
|
209 | return (0, _number.log2)(x);
|
210 | }
|
211 |
|
212 | log2Number.signature = n1;
|
213 |
|
214 |
|
215 |
|
216 |
|
217 |
|
218 |
|
219 | function log1pNumber(x) {
|
220 | return (0, _number.log1p)(x);
|
221 | }
|
222 |
|
223 | log1pNumber.signature = n1;
|
224 |
|
225 |
|
226 |
|
227 |
|
228 |
|
229 |
|
230 |
|
231 |
|
232 | function modNumber(x, y) {
|
233 | if (y > 0) {
|
234 |
|
235 |
|
236 |
|
237 | return x - y * Math.floor(x / y);
|
238 | } else if (y === 0) {
|
239 | return x;
|
240 | } else {
|
241 |
|
242 |
|
243 | throw new Error('Cannot calculate mod for a negative divisor');
|
244 | }
|
245 | }
|
246 |
|
247 | modNumber.signature = n2;
|
248 |
|
249 |
|
250 |
|
251 |
|
252 |
|
253 |
|
254 |
|
255 |
|
256 | function nthRootNumber(a, root) {
|
257 | var inv = root < 0;
|
258 |
|
259 | if (inv) {
|
260 | root = -root;
|
261 | }
|
262 |
|
263 | if (root === 0) {
|
264 | throw new Error('Root must be non-zero');
|
265 | }
|
266 |
|
267 | if (a < 0 && Math.abs(root) % 2 !== 1) {
|
268 | throw new Error('Root must be odd when a is negative.');
|
269 | }
|
270 |
|
271 |
|
272 | if (a === 0) {
|
273 | return inv ? Infinity : 0;
|
274 | }
|
275 |
|
276 | if (!isFinite(a)) {
|
277 | return inv ? 0 : a;
|
278 | }
|
279 |
|
280 | var x = Math.pow(Math.abs(a), 1 / root);
|
281 |
|
282 |
|
283 | x = a < 0 ? -x : x;
|
284 | return inv ? 1 / x : x;
|
285 |
|
286 |
|
287 |
|
288 | |
289 |
|
290 |
|
291 |
|
292 |
|
293 |
|
294 |
|
295 |
|
296 |
|
297 |
|
298 |
|
299 |
|
300 |
|
301 |
|
302 |
|
303 |
|
304 |
|
305 | }
|
306 |
|
307 | nthRootNumber.signature = n2;
|
308 |
|
309 | function signNumber(x) {
|
310 | return (0, _number.sign)(x);
|
311 | }
|
312 |
|
313 | signNumber.signature = n1;
|
314 |
|
315 | function sqrtNumber(x) {
|
316 | return Math.sqrt(x);
|
317 | }
|
318 |
|
319 | sqrtNumber.signature = n1;
|
320 |
|
321 | function squareNumber(x) {
|
322 | return x * x;
|
323 | }
|
324 |
|
325 | squareNumber.signature = n1;
|
326 |
|
327 |
|
328 |
|
329 |
|
330 |
|
331 |
|
332 |
|
333 |
|
334 | function xgcdNumber(a, b) {
|
335 |
|
336 | var t;
|
337 |
|
338 | var q;
|
339 |
|
340 | var r;
|
341 |
|
342 | var x = 0;
|
343 | var lastx = 1;
|
344 | var y = 1;
|
345 | var lasty = 0;
|
346 |
|
347 | if (!(0, _number.isInteger)(a) || !(0, _number.isInteger)(b)) {
|
348 | throw new Error('Parameters in function xgcd must be integer numbers');
|
349 | }
|
350 |
|
351 | while (b) {
|
352 | q = Math.floor(a / b);
|
353 | r = a - q * b;
|
354 | t = x;
|
355 | x = lastx - q * x;
|
356 | lastx = t;
|
357 | t = y;
|
358 | y = lasty - q * y;
|
359 | lasty = t;
|
360 | a = b;
|
361 | b = r;
|
362 | }
|
363 |
|
364 | var res;
|
365 |
|
366 | if (a < 0) {
|
367 | res = [-a, -lastx, -lasty];
|
368 | } else {
|
369 | res = [a, a ? lastx : 0, lasty];
|
370 | }
|
371 |
|
372 | return res;
|
373 | }
|
374 |
|
375 | xgcdNumber.signature = n2;
|
376 |
|
377 |
|
378 |
|
379 |
|
380 |
|
381 |
|
382 |
|
383 | function powNumber(x, y) {
|
384 |
|
385 |
|
386 | if (x * x < 1 && y === Infinity || x * x > 1 && y === -Infinity) {
|
387 | return 0;
|
388 | }
|
389 |
|
390 | return Math.pow(x, y);
|
391 | }
|
392 |
|
393 | powNumber.signature = n2;
|
394 |
|
395 |
|
396 |
|
397 |
|
398 |
|
399 |
|
400 |
|
401 |
|
402 | function roundNumber(value) {
|
403 | var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
404 | return parseFloat((0, _number.toFixed)(value, decimals));
|
405 | }
|
406 |
|
407 | roundNumber.signature = n2;
|
408 |
|
409 |
|
410 |
|
411 |
|
412 |
|
413 |
|
414 | function normNumber(x) {
|
415 | return Math.abs(x);
|
416 | }
|
417 |
|
418 | normNumber.signature = n1; |
\ | No newline at end of file |