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(otherNumber: ExponentNumber): ExponentNumber;
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, Math.log10(this.value));
108
- result.plus(new ExponentNumber(otherNumber.exponentFactor, Math.log10(otherNumber.value)));
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, Math.log10(this.value));
119
- result.minus(new ExponentNumber(otherNumber.exponentFactor, Math.log10(otherNumber.value)));
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(otherNumber) {
126
- const result = new ExponentNumber(this.exponentFactor, Math.log10(this.value));
127
- result.multiply(otherNumber);
128
- this.exponentFactor = result.exponentFactor + 1;
129
- this.value = result.value;
130
- this.normalize();
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, Math.log10(this.value));
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, Math.log10(this.value));
152
- result.divide(new ExponentNumber(base.exponentFactor, Math.log10(base.value)));
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
@@ -1,4 +1,4 @@
1
1
  export declare const VALUE_EXPONENT_LIMIT = 100;
2
- export declare const VALUE_EXPONENT_DIFFERENCE_LIMIT = 12;
2
+ export declare const VALUE_EXPONENT_DIFFERENCE_LIMIT = 9;
3
3
  export declare const DECIMAL_DIGITS = 5;
4
4
  export declare const EXPONENT_COUNT_LIMIT = 5;
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 = 12;
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.4",
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",