pareto-core 0.1.98 → 0.1.99
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.
|
@@ -2,17 +2,18 @@ import * as _pi from "../../../../interface";
|
|
|
2
2
|
export declare namespace from {
|
|
3
3
|
namespace number {
|
|
4
4
|
/**
|
|
5
|
-
* Performs integer division of two numbers
|
|
5
|
+
* Performs integer division of two numbers with configurable rounding behavior.
|
|
6
6
|
*
|
|
7
7
|
* dividend / divisor
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* Rounding modes:
|
|
10
|
+
* - 'towards negative infinity': floor (7.8 → 7, -7.8 → -8)
|
|
11
|
+
* - 'towards positive infinity': ceiling (7.2 → 8, -7.8 → -7)
|
|
12
|
+
* - 'towards zero': truncate (7.8 → 7, -7.8 → -7)
|
|
13
|
+
* - 'towards nearest': round to nearest integer (7.5 → 8, 7.4 → 7)
|
|
14
|
+
* - 'away from zero': round away from zero (7.2 → 8, -7.2 → -8)
|
|
14
15
|
*/
|
|
15
|
-
const divide: (
|
|
16
|
+
const divide: ($: number, divisor: number, round: ["towards negative infinity", null] | ["towards positive infinity", null] | ["towards nearest", null] | ["towards zero", null] | ["away from zero", null], abort: {
|
|
16
17
|
divided_by_zero: _pi.Abort<null>;
|
|
17
18
|
}) => number;
|
|
18
19
|
}
|
|
@@ -6,29 +6,46 @@ var from;
|
|
|
6
6
|
let number;
|
|
7
7
|
(function (number) {
|
|
8
8
|
/**
|
|
9
|
-
* Performs integer division of two numbers
|
|
9
|
+
* Performs integer division of two numbers with configurable rounding behavior.
|
|
10
10
|
*
|
|
11
11
|
* dividend / divisor
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
13
|
+
* Rounding modes:
|
|
14
|
+
* - 'towards negative infinity': floor (7.8 → 7, -7.8 → -8)
|
|
15
|
+
* - 'towards positive infinity': ceiling (7.2 → 8, -7.8 → -7)
|
|
16
|
+
* - 'towards zero': truncate (7.8 → 7, -7.8 → -7)
|
|
17
|
+
* - 'towards nearest': round to nearest integer (7.5 → 8, 7.4 → 7)
|
|
18
|
+
* - 'away from zero': round away from zero (7.2 → 8, -7.2 → -8)
|
|
18
19
|
*/
|
|
19
|
-
number.divide = (
|
|
20
|
+
number.divide = ($, divisor, round, abort) => {
|
|
20
21
|
if (divisor === 0) {
|
|
21
22
|
abort.divided_by_zero(null);
|
|
22
23
|
}
|
|
23
|
-
const quotient =
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
const quotient = $ / divisor;
|
|
25
|
+
switch (round[0]) {
|
|
26
|
+
case 'towards negative infinity':
|
|
27
|
+
// Always round down (floor)
|
|
28
|
+
return Math.floor(quotient);
|
|
29
|
+
case 'towards positive infinity':
|
|
30
|
+
// Always round up (ceiling)
|
|
31
|
+
return Math.ceil(quotient);
|
|
32
|
+
case 'towards zero':
|
|
33
|
+
// Truncate decimal part (round towards zero)
|
|
34
|
+
return Math.trunc(quotient);
|
|
35
|
+
case 'towards nearest':
|
|
36
|
+
// Round to nearest integer (0.5 rounds away from zero)
|
|
37
|
+
return Math.round(quotient);
|
|
38
|
+
case 'away from zero':
|
|
39
|
+
// Round away from zero
|
|
40
|
+
if (quotient >= 0) {
|
|
41
|
+
return Math.ceil(quotient);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return Math.floor(quotient);
|
|
45
|
+
}
|
|
46
|
+
default:
|
|
47
|
+
const _exhaustiveCheck = round;
|
|
48
|
+
throw new Error(`Unexpected rounding mode: ${round}`);
|
|
32
49
|
}
|
|
33
50
|
};
|
|
34
51
|
})(number = from.number || (from.number = {}));
|
|
@@ -68,4 +85,4 @@ var from;
|
|
|
68
85
|
};
|
|
69
86
|
};
|
|
70
87
|
})(from || (exports.from = from = {}));
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL19faW50ZXJuYWxzL3N5bmMvYXNzaWduL2NvbnN0cnVjdC9udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsSUFBaUIsSUFBSSxDQXFJcEI7QUFySUQsV0FBaUIsSUFBSTtJQUVqQixJQUFpQixNQUFNLENBZ0V0QjtJQWhFRCxXQUFpQixNQUFNO1FBRW5COzs7Ozs7Ozs7OztXQVdHO1FBQ1UsYUFBTSxHQUFHLENBQ2xCLENBQVMsRUFDVCxPQUFlLEVBQ2YsS0FLOEIsRUFDOUIsS0FFQyxFQUNLLEVBQUU7WUFDUixJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDaEIsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUMvQixDQUFDO1lBQ0QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQTtZQUU1QixRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNmLEtBQUssMkJBQTJCO29CQUM1Qiw0QkFBNEI7b0JBQzVCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFFL0IsS0FBSywyQkFBMkI7b0JBQzVCLDRCQUE0QjtvQkFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUU5QixLQUFLLGNBQWM7b0JBQ2YsNkNBQTZDO29CQUM3QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBRS9CLEtBQUssaUJBQWlCO29CQUNsQix1REFBdUQ7b0JBQ3ZELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFFL0IsS0FBSyxnQkFBZ0I7b0JBQ2pCLHVCQUF1QjtvQkFDdkIsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFDOUIsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFDL0IsQ0FBQztnQkFFTDtvQkFDSSxNQUFNLGdCQUFnQixHQUFVLEtBQUssQ0FBQTtvQkFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUMsQ0FBQTtZQUM3RCxDQUFDO1FBQ0wsQ0FBQyxDQUFBO0lBR0wsQ0FBQyxFQWhFZ0IsTUFBTSxHQUFOLFdBQU0sS0FBTixXQUFNLFFBZ0V0QjtJQUVZLFNBQUksR0FBRyxDQUNoQixJQUFpQixFQUNuQixFQUFFO1FBQ0EsT0FBTztZQUVILGVBQWUsRUFBRSxHQUNQLEVBQUU7Z0JBQ1IsT0FBTyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtZQUN2QyxDQUFDO1lBRUQsTUFBTSxFQUFFLENBQ0osYUFBcUIsRUFDckIsWUFHVyxFQUNMLEVBQUU7Z0JBQ1IsSUFBSSxhQUFhLEdBQUcsYUFBYSxDQUFBO2dCQUNqQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ2hDLGFBQWEsR0FBRyxZQUFZLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFBO2dCQUNsRCxDQUFDLENBQUMsQ0FBQTtnQkFDRixPQUFPLGFBQWEsQ0FBQTtZQUN4QixDQUFDO1lBRUQsR0FBRyxFQUFFLENBQ0QsWUFFVyxFQUNMLEVBQUU7Z0JBQ1IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFBO2dCQUNYLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDaEMsR0FBRyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDMUIsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsT0FBTyxHQUFHLENBQUE7WUFDZCxDQUFDO1NBRUosQ0FBQTtJQUNMLENBQUMsQ0FBQTtJQUVZLGVBQVUsR0FBRyxDQUN0QixVQUE2QixFQUMvQixFQUFFO1FBQ0EsT0FBTztZQUVILGlCQUFpQixFQUFFLEdBQ1QsRUFBRTtnQkFDUixPQUFPLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO1lBQy9DLENBQUM7WUFFRCxHQUFHLEVBQUUsQ0FDRCxZQUVXLEVBQ0wsRUFBRTtnQkFDUixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUE7Z0JBQ1gsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN0QyxHQUFHLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUM3QixDQUFDLENBQUMsQ0FBQTtnQkFDRixPQUFPLEdBQUcsQ0FBQTtZQUNkLENBQUM7U0FFSixDQUFBO0lBQ0wsQ0FBQyxDQUFBO0FBR0wsQ0FBQyxFQXJJZ0IsSUFBSSxvQkFBSixJQUFJLFFBcUlwQiJ9
|