exponential-number 1.3.4 → 1.3.6
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.
|
@@ -11,7 +11,7 @@ export declare class ExponentNumber {
|
|
|
11
11
|
minus(otherNumber: ExponentNumber): ExponentNumber;
|
|
12
12
|
multiply(otherNumber: ExponentNumber): ExponentNumber;
|
|
13
13
|
divide(otherNumber: ExponentNumber): ExponentNumber;
|
|
14
|
-
power(
|
|
14
|
+
power(power: ExponentNumber): ExponentNumber;
|
|
15
15
|
root(otherNumber: ExponentNumber): ExponentNumber;
|
|
16
16
|
sqrt(): ExponentNumber;
|
|
17
17
|
log(base: ExponentNumber): ExponentNumber;
|
|
@@ -104,8 +104,8 @@ class ExponentNumber {
|
|
|
104
104
|
return this;
|
|
105
105
|
}
|
|
106
106
|
multiply(otherNumber) {
|
|
107
|
-
const result = new ExponentNumber(this.exponentFactor,
|
|
108
|
-
result.plus(new ExponentNumber(otherNumber.exponentFactor,
|
|
107
|
+
const result = new ExponentNumber(this.exponentFactor, (0, util_math_utils_1.safeLog10)(this));
|
|
108
|
+
result.plus(new ExponentNumber(otherNumber.exponentFactor, (0, util_math_utils_1.safeLog10)(otherNumber)));
|
|
109
109
|
this.exponentFactor = result.exponentFactor + 1;
|
|
110
110
|
this.value = result.value;
|
|
111
111
|
this.normalize();
|
|
@@ -115,23 +115,33 @@ class ExponentNumber {
|
|
|
115
115
|
if (this.exponentFactor === 0 && this.value === 0) {
|
|
116
116
|
return this;
|
|
117
117
|
}
|
|
118
|
-
const result = new ExponentNumber(this.exponentFactor,
|
|
119
|
-
result.minus(new ExponentNumber(otherNumber.exponentFactor,
|
|
118
|
+
const result = new ExponentNumber(this.exponentFactor, (0, util_math_utils_1.safeLog10)(this));
|
|
119
|
+
result.minus(new ExponentNumber(otherNumber.exponentFactor, (0, util_math_utils_1.safeLog10)(otherNumber)));
|
|
120
120
|
this.exponentFactor = result.exponentFactor + 1;
|
|
121
121
|
this.value = result.value;
|
|
122
122
|
this.normalize();
|
|
123
123
|
return this;
|
|
124
124
|
}
|
|
125
|
-
power(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
125
|
+
power(power) {
|
|
126
|
+
if (this.exponentFactor === 0 && this.value < 1) {
|
|
127
|
+
if (power.exponentFactor > 0) {
|
|
128
|
+
this.value = 0;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
this.value = Math.pow(this.value, power.value);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const result = new ExponentNumber(this.exponentFactor, (0, util_math_utils_1.safeLog10)(this));
|
|
136
|
+
result.multiply(power);
|
|
137
|
+
this.exponentFactor = result.exponentFactor + 1;
|
|
138
|
+
this.value = result.value;
|
|
139
|
+
this.normalize();
|
|
140
|
+
}
|
|
131
141
|
return this;
|
|
132
142
|
}
|
|
133
143
|
root(otherNumber) {
|
|
134
|
-
const result = new ExponentNumber(this.exponentFactor,
|
|
144
|
+
const result = new ExponentNumber(this.exponentFactor, (0, util_math_utils_1.safeLog10)(this));
|
|
135
145
|
if (result.exponentFactor >= 1 &&
|
|
136
146
|
(otherNumber.exponentFactor > result.exponentFactor ||
|
|
137
147
|
(otherNumber.exponentFactor === result.exponentFactor && otherNumber.value > result.value))) {
|
|
@@ -148,8 +158,8 @@ class ExponentNumber {
|
|
|
148
158
|
return this.root(new ExponentNumber(0, 2));
|
|
149
159
|
}
|
|
150
160
|
log(base) {
|
|
151
|
-
const result = new ExponentNumber(this.exponentFactor,
|
|
152
|
-
result.divide(new ExponentNumber(base.exponentFactor,
|
|
161
|
+
const result = new ExponentNumber(this.exponentFactor, (0, util_math_utils_1.safeLog10)(this));
|
|
162
|
+
result.divide(new ExponentNumber(base.exponentFactor, (0, util_math_utils_1.safeLog10)(base)));
|
|
153
163
|
this.applyNewValues(result);
|
|
154
164
|
this.normalize();
|
|
155
165
|
return this;
|
package/dist/const.d.ts
CHANGED
package/dist/const.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EXPONENT_COUNT_LIMIT = exports.DECIMAL_DIGITS = exports.VALUE_EXPONENT_DIFFERENCE_LIMIT = exports.VALUE_EXPONENT_LIMIT = void 0;
|
|
4
4
|
exports.VALUE_EXPONENT_LIMIT = 100;
|
|
5
|
-
exports.VALUE_EXPONENT_DIFFERENCE_LIMIT =
|
|
5
|
+
exports.VALUE_EXPONENT_DIFFERENCE_LIMIT = 9;
|
|
6
6
|
exports.DECIMAL_DIGITS = 5;
|
|
7
7
|
exports.EXPONENT_COUNT_LIMIT = 5;
|
|
@@ -3,3 +3,4 @@ export declare function plusEqualExponentLevelNumber(first: ExponentNumber, seco
|
|
|
3
3
|
export declare function plusDifferentExponentLevelNumber(first: ExponentNumber, second: ExponentNumber): ExponentNumber;
|
|
4
4
|
export declare function minusEqualExponentLevelNumber(first: ExponentNumber, second: ExponentNumber): ExponentNumber;
|
|
5
5
|
export declare function minusDifferentExponentLevelNumber(first: ExponentNumber, second: ExponentNumber): ExponentNumber;
|
|
6
|
+
export declare function safeLog10(value: ExponentNumber): number;
|
|
@@ -4,6 +4,7 @@ exports.plusEqualExponentLevelNumber = plusEqualExponentLevelNumber;
|
|
|
4
4
|
exports.plusDifferentExponentLevelNumber = plusDifferentExponentLevelNumber;
|
|
5
5
|
exports.minusEqualExponentLevelNumber = minusEqualExponentLevelNumber;
|
|
6
6
|
exports.minusDifferentExponentLevelNumber = minusDifferentExponentLevelNumber;
|
|
7
|
+
exports.safeLog10 = safeLog10;
|
|
7
8
|
const exponent_number_class_1 = require("../class/exponent-number.class");
|
|
8
9
|
const const_1 = require("../const");
|
|
9
10
|
function plusEqualExponentLevelNumber(first, second) {
|
|
@@ -74,3 +75,6 @@ function minusDifferentExponentLevelNumber(first, second) {
|
|
|
74
75
|
}
|
|
75
76
|
return new exponent_number_class_1.ExponentNumber(1, first.value + Math.log10(1 - 1 / Math.pow(10, exponentDifference)));
|
|
76
77
|
}
|
|
78
|
+
function safeLog10(value) {
|
|
79
|
+
return Math.log10(value.value + (value.exponentFactor > 0 ? 0 : 1));
|
|
80
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "exponential-number",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.6",
|
|
4
4
|
"description": "Small package with class to work with big numbers. This class allows to work with 1e...(1.8e308)...e1e100",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"scripts": {
|
|
16
16
|
"build": "tsc",
|
|
17
17
|
"test": "jest --config=jest.config.js test.ts",
|
|
18
|
-
"update": "npm run build && npm publish"
|
|
18
|
+
"update": "npm login && npm run build && npm publish"
|
|
19
19
|
},
|
|
20
20
|
"keywords": [
|
|
21
21
|
"typescript",
|