mathjs 14.0.1 → 14.2.0
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.
- package/HISTORY.md +20 -0
- package/NOTICE +1 -1
- package/README.md +7 -7
- package/bin/cli.js +1 -1
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +5 -5
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/core/function/import.js +14 -4
- package/lib/cjs/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/{dependenciesApply.generated.js → dependenciesMapSlices.generated.js} +3 -3
- package/lib/cjs/entry/dependenciesAny/{dependenciesApplyTransform.generated.js → dependenciesMapSlicesTransform.generated.js} +3 -3
- package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesRandomInt.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesVariance.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesVarianceTransform.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny.generated.js +14 -14
- package/lib/cjs/entry/dependenciesNumber/{dependenciesApply.generated.js → dependenciesMapSlices.generated.js} +3 -3
- package/lib/cjs/entry/dependenciesNumber/{dependenciesApplyTransform.generated.js → dependenciesMapSlicesTransform.generated.js} +3 -3
- package/lib/cjs/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesRandomInt.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesVariance.generated.js +2 -2
- package/lib/cjs/entry/dependenciesNumber/dependenciesVarianceTransform.generated.js +2 -2
- package/lib/cjs/entry/dependenciesNumber.generated.js +14 -14
- package/lib/cjs/entry/impureFunctionsAny.generated.js +86 -85
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +14 -14
- package/lib/cjs/entry/pureFunctionsAny.generated.js +330 -325
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +18 -15
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -0
- package/lib/cjs/expression/embeddedDocs/function/arithmetic/sign.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/matrix/mapSlices.js +17 -0
- package/lib/cjs/expression/transform/index.transform.js +2 -2
- package/lib/cjs/expression/transform/{apply.transform.js → mapSlices.transform.js} +11 -10
- package/lib/cjs/expression/transform/quantileSeq.transform.js +5 -3
- package/lib/cjs/expression/transform/variance.transform.js +3 -3
- package/lib/cjs/factoriesAny.js +14 -14
- package/lib/cjs/factoriesNumber.js +16 -15
- package/lib/cjs/function/arithmetic/ceil.js +34 -26
- package/lib/cjs/function/arithmetic/fix.js +3 -0
- package/lib/cjs/function/arithmetic/floor.js +41 -26
- package/lib/cjs/function/arithmetic/log.js +12 -5
- package/lib/cjs/function/arithmetic/log10.js +15 -7
- package/lib/cjs/function/arithmetic/log2.js +9 -4
- package/lib/cjs/function/arithmetic/round.js +4 -0
- package/lib/cjs/function/matrix/ctranspose.js +1 -1
- package/lib/cjs/function/matrix/{apply.js → mapSlices.js} +19 -12
- package/lib/cjs/function/matrix/matrixFromFunction.js +36 -3
- package/lib/cjs/function/matrix/range.js +54 -5
- package/lib/cjs/function/probability/randomInt.js +26 -3
- package/lib/cjs/function/relational/larger.js +12 -4
- package/lib/cjs/function/relational/smaller.js +12 -4
- package/lib/cjs/function/statistics/max.js +1 -1
- package/lib/cjs/function/statistics/min.js +1 -1
- package/lib/cjs/function/statistics/quantileSeq.js +4 -9
- package/lib/cjs/function/statistics/variance.js +3 -3
- package/lib/cjs/function/string/hex.js +1 -1
- package/lib/cjs/function/string/print.js +2 -2
- package/lib/cjs/function/trigonometry/acoth.js +1 -1
- package/lib/cjs/function/trigonometry/acsc.js +1 -1
- package/lib/cjs/function/trigonometry/asin.js +1 -1
- package/lib/cjs/function/trigonometry/atan2.js +2 -1
- package/lib/cjs/function/trigonometry/cos.js +1 -1
- package/lib/cjs/function/trigonometry/sin.js +1 -1
- package/lib/cjs/function/utils/isInteger.js +1 -1
- package/lib/cjs/header.js +3 -3
- package/lib/cjs/type/matrix/MatrixIndex.js +6 -3
- package/lib/cjs/type/matrix/Range.js +15 -8
- package/lib/cjs/utils/bigint.js +33 -0
- package/lib/cjs/utils/factory.js +5 -2
- package/lib/cjs/utils/number.js +7 -19
- package/lib/cjs/utils/snapshot.js +8 -1
- package/lib/cjs/version.js +1 -1
- package/lib/esm/core/function/import.js +14 -4
- package/lib/esm/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
- package/lib/esm/entry/{dependenciesNumber/dependenciesApply.generated.js → dependenciesAny/dependenciesMapSlices.generated.js} +3 -3
- package/lib/esm/entry/{dependenciesNumber/dependenciesApplyTransform.generated.js → dependenciesAny/dependenciesMapSlicesTransform.generated.js} +3 -3
- package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesRandomInt.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesVariance.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesVarianceTransform.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny.generated.js +2 -2
- package/lib/esm/entry/{dependenciesAny/dependenciesApply.generated.js → dependenciesNumber/dependenciesMapSlices.generated.js} +3 -3
- package/lib/esm/entry/{dependenciesAny/dependenciesApplyTransform.generated.js → dependenciesNumber/dependenciesMapSlicesTransform.generated.js} +3 -3
- package/lib/esm/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesRandomInt.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesVariance.generated.js +2 -2
- package/lib/esm/entry/dependenciesNumber/dependenciesVarianceTransform.generated.js +2 -2
- package/lib/esm/entry/dependenciesNumber.generated.js +2 -2
- package/lib/esm/entry/impureFunctionsAny.generated.js +88 -87
- package/lib/esm/entry/impureFunctionsNumber.generated.js +16 -16
- package/lib/esm/entry/pureFunctionsAny.generated.js +328 -323
- package/lib/esm/entry/pureFunctionsNumber.generated.js +17 -14
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
- package/lib/esm/expression/embeddedDocs/function/arithmetic/sign.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/matrix/mapSlices.js +11 -0
- package/lib/esm/expression/transform/index.transform.js +3 -3
- package/lib/esm/expression/transform/mapSlices.transform.js +47 -0
- package/lib/esm/expression/transform/quantileSeq.transform.js +5 -3
- package/lib/esm/expression/transform/variance.transform.js +3 -3
- package/lib/esm/factoriesAny.js +2 -2
- package/lib/esm/factoriesNumber.js +2 -2
- package/lib/esm/function/arithmetic/ceil.js +35 -27
- package/lib/esm/function/arithmetic/fix.js +3 -0
- package/lib/esm/function/arithmetic/floor.js +42 -27
- package/lib/esm/function/arithmetic/log.js +12 -5
- package/lib/esm/function/arithmetic/log10.js +16 -8
- package/lib/esm/function/arithmetic/log2.js +9 -4
- package/lib/esm/function/arithmetic/round.js +4 -0
- package/lib/esm/function/matrix/ctranspose.js +1 -1
- package/lib/esm/function/matrix/{apply.js → mapSlices.js} +18 -11
- package/lib/esm/function/matrix/matrixFromFunction.js +36 -3
- package/lib/esm/function/matrix/range.js +54 -5
- package/lib/esm/function/probability/randomInt.js +26 -3
- package/lib/esm/function/relational/larger.js +12 -4
- package/lib/esm/function/relational/smaller.js +12 -4
- package/lib/esm/function/statistics/max.js +1 -1
- package/lib/esm/function/statistics/min.js +1 -1
- package/lib/esm/function/statistics/quantileSeq.js +4 -9
- package/lib/esm/function/statistics/variance.js +3 -3
- package/lib/esm/function/string/hex.js +1 -1
- package/lib/esm/function/string/print.js +2 -2
- package/lib/esm/function/trigonometry/acoth.js +1 -1
- package/lib/esm/function/trigonometry/acsc.js +1 -1
- package/lib/esm/function/trigonometry/asin.js +1 -1
- package/lib/esm/function/trigonometry/atan2.js +2 -1
- package/lib/esm/function/trigonometry/cos.js +1 -1
- package/lib/esm/function/trigonometry/sin.js +1 -1
- package/lib/esm/function/utils/isInteger.js +1 -1
- package/lib/esm/header.js +1 -1
- package/lib/esm/type/matrix/MatrixIndex.js +6 -3
- package/lib/esm/type/matrix/Range.js +16 -9
- package/lib/esm/utils/bigint.js +27 -0
- package/lib/esm/utils/factory.js +5 -2
- package/lib/esm/utils/number.js +6 -17
- package/lib/esm/utils/snapshot.js +8 -1
- package/lib/esm/version.js +1 -1
- package/package.json +13 -11
- package/types/index.d.ts +75 -12
- package/lib/esm/expression/transform/apply.transform.js +0 -44
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { config } from './configReadonly.js';
|
|
6
6
|
import { createE, createFalse, createIndex, createInfinity, createLN10, createLOG10E, createMatrix, createNaN, createNull, createPhi, createRangeClass, createReplacer, createResultSet, createSQRT1_2,
|
|
7
7
|
// eslint-disable-line camelcase
|
|
8
|
-
createSubset, createTau, createTyped, createUnaryPlus, createVersion, createXor, createAbs, createAcos, createAcot, createAcsc, createAdd, createAnd, createAsec, createAsin, createAtan, createAtanh, createBigint, createBitNot, createBitXor, createBoolean, createCbrt, createCombinations, createCompare, createCompareText, createCos, createCot, createCsc, createCube, createDivide, createEqualScalar, createErf, createExp, createFilter, createForEach, createFormat, createGamma, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLargerEq, createLeftShift, createLog, createLog1p, createMap, createMean, createMod, createMultiply, createNot, createNumber, createOr, createPi, createPow, createRandom, createRightLogShift, createSQRT2, createSech, createSin, createSize, createSmallerEq, createSquare, createString, createSubtract, createTanh, createTypeOf, createUnequal, createXgcd, createAcoth, createAddScalar, createAsech, createBitAnd, createCombinationsWithRep, createCosh, createCsch, createDivideScalar, createEqualText, createExpm1, createIsNumeric, createLN2, createLcm, createLog10, createMultiplyScalar, createNthRoot, createPickRandom,
|
|
8
|
+
createSubset, createTau, createTyped, createUnaryPlus, createVersion, createXor, createAbs, createAcos, createAcot, createAcsc, createAdd, createAnd, createAsec, createAsin, createAtan, createAtanh, createBigint, createBitNot, createBitXor, createBoolean, createCbrt, createCombinations, createCompare, createCompareText, createCos, createCot, createCsc, createCube, createDivide, createEqualScalar, createErf, createExp, createFilter, createForEach, createFormat, createGamma, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLargerEq, createLeftShift, createLog, createLog1p, createMap, createMean, createMod, createMultiply, createNot, createNumber, createOr, createPi, createPow, createRandom, createRightLogShift, createSQRT2, createSech, createSin, createSize, createSmallerEq, createSquare, createString, createSubtract, createTanh, createTypeOf, createUnequal, createXgcd, createAcoth, createAddScalar, createAsech, createBitAnd, createCombinationsWithRep, createCosh, createCsch, createDivideScalar, createEqualText, createExpm1, createIsNumeric, createLN2, createLcm, createLog10, createMapSlices, createMultiplyScalar, createNthRoot, createPickRandom, createRightArithShift, createSec, createSinh, createSqrt, createTan, createUnaryMinus, createAcosh, createAtan2, createBitOr, createClone, createCoth, createEqual, createFactorial, createHasNumericValue, createIsNaN, createLarger, createLog2, createMode, createNorm, createPartitionSelect, createPrint, createRandomInt, createRound, createSmaller, createSubtractScalar, createTrue, createVariance, createZeta, createAcsch, createCatalan, createCompareNatural, createComposition, createCumSum, createFloor, createHypot, createLgamma, createMedian, createMultinomial, createPermutations, createQuantileSeq, createSign, createStd, createStirlingS2, createAsinh, createCeil, createDeepEqual, createFix, createIsPrime, createNumeric, createProd, createBellNumbers, createGcd, createMad, createRange, createSum, createCorr, createMax, createMin } from '../factoriesNumber.js';
|
|
9
9
|
export var e = /* #__PURE__ */createE({
|
|
10
10
|
config
|
|
11
11
|
});
|
|
@@ -286,6 +286,11 @@ export var lcm = /* #__PURE__ */createLcm({
|
|
|
286
286
|
export var log10 = /* #__PURE__ */createLog10({
|
|
287
287
|
typed
|
|
288
288
|
});
|
|
289
|
+
export var mapSlices = /* #__PURE__ */createMapSlices({
|
|
290
|
+
isInteger,
|
|
291
|
+
typed
|
|
292
|
+
});
|
|
293
|
+
export var apply = mapSlices;
|
|
289
294
|
export var multiplyScalar = /* #__PURE__ */createMultiplyScalar({
|
|
290
295
|
typed
|
|
291
296
|
});
|
|
@@ -296,10 +301,6 @@ export var pickRandom = /* #__PURE__ */createPickRandom({
|
|
|
296
301
|
config,
|
|
297
302
|
typed
|
|
298
303
|
});
|
|
299
|
-
export var randomInt = /* #__PURE__ */createRandomInt({
|
|
300
|
-
config,
|
|
301
|
-
typed
|
|
302
|
-
});
|
|
303
304
|
export var rightArithShift = /* #__PURE__ */createRightArithShift({
|
|
304
305
|
typed
|
|
305
306
|
});
|
|
@@ -321,11 +322,7 @@ export var unaryMinus = /* #__PURE__ */createUnaryMinus({
|
|
|
321
322
|
export var acosh = /* #__PURE__ */createAcosh({
|
|
322
323
|
typed
|
|
323
324
|
});
|
|
324
|
-
export var
|
|
325
|
-
isInteger,
|
|
326
|
-
typed
|
|
327
|
-
});
|
|
328
|
-
export var asinh = /* #__PURE__ */createAsinh({
|
|
325
|
+
export var atan2 = /* #__PURE__ */createAtan2({
|
|
329
326
|
typed
|
|
330
327
|
});
|
|
331
328
|
export var bitOr = /* #__PURE__ */createBitOr({
|
|
@@ -376,6 +373,11 @@ export var partitionSelect = /* #__PURE__ */createPartitionSelect({
|
|
|
376
373
|
export var print = /* #__PURE__ */createPrint({
|
|
377
374
|
typed
|
|
378
375
|
});
|
|
376
|
+
export var randomInt = /* #__PURE__ */createRandomInt({
|
|
377
|
+
config,
|
|
378
|
+
log2,
|
|
379
|
+
typed
|
|
380
|
+
});
|
|
379
381
|
export var round = /* #__PURE__ */createRound({
|
|
380
382
|
typed
|
|
381
383
|
});
|
|
@@ -389,9 +391,9 @@ export var subtractScalar = /* #__PURE__ */createSubtractScalar({
|
|
|
389
391
|
export var _true = /* #__PURE__ */createTrue({});
|
|
390
392
|
export var variance = /* #__PURE__ */createVariance({
|
|
391
393
|
add,
|
|
392
|
-
apply,
|
|
393
394
|
divide,
|
|
394
395
|
isNaN,
|
|
396
|
+
mapSlices,
|
|
395
397
|
multiply,
|
|
396
398
|
subtract,
|
|
397
399
|
typed
|
|
@@ -415,9 +417,6 @@ export var zeta = /* #__PURE__ */createZeta({
|
|
|
415
417
|
export var acsch = /* #__PURE__ */createAcsch({
|
|
416
418
|
typed
|
|
417
419
|
});
|
|
418
|
-
export var atan2 = /* #__PURE__ */createAtan2({
|
|
419
|
-
typed
|
|
420
|
-
});
|
|
421
420
|
export var catalan = /* #__PURE__ */createCatalan({
|
|
422
421
|
addScalar,
|
|
423
422
|
combinations,
|
|
@@ -489,6 +488,7 @@ export var quantileSeq = /* #__PURE__ */createQuantileSeq({
|
|
|
489
488
|
divide,
|
|
490
489
|
isInteger,
|
|
491
490
|
larger,
|
|
491
|
+
mapSlices,
|
|
492
492
|
multiply,
|
|
493
493
|
partitionSelect,
|
|
494
494
|
smaller,
|
|
@@ -519,6 +519,9 @@ export var stirlingS2 = /* #__PURE__ */createStirlingS2({
|
|
|
519
519
|
subtractScalar,
|
|
520
520
|
typed
|
|
521
521
|
});
|
|
522
|
+
export var asinh = /* #__PURE__ */createAsinh({
|
|
523
|
+
typed
|
|
524
|
+
});
|
|
522
525
|
export var ceil = /* #__PURE__ */createCeil({
|
|
523
526
|
config,
|
|
524
527
|
round,
|
|
@@ -111,6 +111,7 @@ import { andDocs } from './function/logical/and.js';
|
|
|
111
111
|
import { notDocs } from './function/logical/not.js';
|
|
112
112
|
import { orDocs } from './function/logical/or.js';
|
|
113
113
|
import { xorDocs } from './function/logical/xor.js';
|
|
114
|
+
import { mapSlicesDocs } from './function/matrix/mapSlices.js';
|
|
114
115
|
import { columnDocs } from './function/matrix/column.js';
|
|
115
116
|
import { concatDocs } from './function/matrix/concat.js';
|
|
116
117
|
import { countDocs } from './function/matrix/count.js';
|
|
@@ -572,6 +573,7 @@ export var embeddedDocs = {
|
|
|
572
573
|
or: orDocs,
|
|
573
574
|
xor: xorDocs,
|
|
574
575
|
// functions - matrix
|
|
576
|
+
mapSlices: mapSlicesDocs,
|
|
575
577
|
concat: concatDocs,
|
|
576
578
|
count: countDocs,
|
|
577
579
|
cross: crossDocs,
|
|
@@ -2,7 +2,7 @@ export var signDocs = {
|
|
|
2
2
|
name: 'sign',
|
|
3
3
|
category: 'Arithmetic',
|
|
4
4
|
syntax: ['sign(x)'],
|
|
5
|
-
description: 'Compute the sign of a value. The sign of a value x is 1 when x>
|
|
5
|
+
description: 'Compute the sign of a value. The sign of a value x is 1 when x>0, -1 when x<0, and 0 when x=0.',
|
|
6
6
|
examples: ['sign(3.5)', 'sign(-4.2)', 'sign(0)'],
|
|
7
7
|
seealso: ['abs']
|
|
8
8
|
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export var mapSlicesDocs = {
|
|
2
|
+
name: 'mapSlices',
|
|
3
|
+
category: 'Matrix',
|
|
4
|
+
syntax: ['mapSlices(A, dim, callback)'],
|
|
5
|
+
description: 'Generate a matrix one dimension less than A by applying callback to ' + 'each slice of A along dimension dim.',
|
|
6
|
+
examples: ['A = [[1, 2], [3, 4]]', 'mapSlices(A, 1, sum)',
|
|
7
|
+
// returns [4, 6]
|
|
8
|
+
'mapSlices(A, 2, product)' // returns [2, 12]
|
|
9
|
+
],
|
|
10
|
+
seealso: ['map', 'forEach']
|
|
11
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isArray, isBigNumber, isMatrix, isNumber, isRange } from '../../utils/is.js';
|
|
1
|
+
import { isArray, isBigInt, isBigNumber, isMatrix, isNumber, isRange } from '../../utils/is.js';
|
|
2
2
|
import { factory } from '../../utils/factory.js';
|
|
3
3
|
var name = 'index';
|
|
4
4
|
var dependencies = ['Index', 'getMatrixDataType'];
|
|
@@ -32,14 +32,14 @@ export var createIndexTransform = /* #__PURE__ */factory(name, dependencies, _re
|
|
|
32
32
|
return v - 1;
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
} else if (isNumber(arg)) {
|
|
35
|
+
} else if (isNumber(arg) || isBigInt(arg)) {
|
|
36
36
|
arg--;
|
|
37
37
|
} else if (isBigNumber(arg)) {
|
|
38
38
|
arg = arg.toNumber() - 1;
|
|
39
39
|
} else if (typeof arg === 'string') {
|
|
40
40
|
// leave as is
|
|
41
41
|
} else {
|
|
42
|
-
throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');
|
|
42
|
+
throw new TypeError('Dimension must be an Array, Matrix, number, bigint, string, or Range');
|
|
43
43
|
}
|
|
44
44
|
args[i] = arg;
|
|
45
45
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
import { errorTransform } from './utils/errorTransform.js';
|
|
5
|
+
import { factory } from '../../utils/factory.js';
|
|
6
|
+
import { createMapSlices } from '../../function/matrix/mapSlices.js';
|
|
7
|
+
import { isBigNumber, isNumber } from '../../utils/is.js';
|
|
8
|
+
var name = 'mapSlices';
|
|
9
|
+
var dependencies = ['typed', 'isInteger'];
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Attach a transform function to math.mapSlices
|
|
13
|
+
* Adds a property transform containing the transform function.
|
|
14
|
+
*
|
|
15
|
+
* This transform changed the last `dim` parameter of function mapSlices
|
|
16
|
+
* from one-based to zero based
|
|
17
|
+
*/
|
|
18
|
+
export var createMapSlicesTransform = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
19
|
+
var {
|
|
20
|
+
typed,
|
|
21
|
+
isInteger
|
|
22
|
+
} = _ref;
|
|
23
|
+
var mapSlices = createMapSlices({
|
|
24
|
+
typed,
|
|
25
|
+
isInteger
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// @see: comment of concat itself
|
|
29
|
+
return typed('mapSlices', {
|
|
30
|
+
'...any': function any(args) {
|
|
31
|
+
// change dim from one-based to zero-based
|
|
32
|
+
var dim = args[1];
|
|
33
|
+
if (isNumber(dim)) {
|
|
34
|
+
args[1] = dim - 1;
|
|
35
|
+
} else if (isBigNumber(dim)) {
|
|
36
|
+
args[1] = dim.minus(1);
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
return mapSlices.apply(null, args);
|
|
40
|
+
} catch (err) {
|
|
41
|
+
throw errorTransform(err);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}, _objectSpread({
|
|
46
|
+
isTransformFunction: true
|
|
47
|
+
}, createMapSlices.meta));
|
|
@@ -2,7 +2,7 @@ import { factory } from '../../utils/factory.js';
|
|
|
2
2
|
import { createQuantileSeq } from '../../function/statistics/quantileSeq.js';
|
|
3
3
|
import { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';
|
|
4
4
|
var name = 'quantileSeq';
|
|
5
|
-
var dependencies = ['typed', 'bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger'];
|
|
5
|
+
var dependencies = ['typed', 'bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger', 'mapSlices'];
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Attach a transform function to math.quantileSeq
|
|
@@ -24,7 +24,8 @@ export var createQuantileSeqTransform = /* #__PURE__ */factory(name, dependencie
|
|
|
24
24
|
isInteger,
|
|
25
25
|
smaller,
|
|
26
26
|
smallerEq,
|
|
27
|
-
larger
|
|
27
|
+
larger,
|
|
28
|
+
mapSlices
|
|
28
29
|
} = _ref;
|
|
29
30
|
var quantileSeq = createQuantileSeq({
|
|
30
31
|
typed,
|
|
@@ -38,7 +39,8 @@ export var createQuantileSeqTransform = /* #__PURE__ */factory(name, dependencie
|
|
|
38
39
|
isInteger,
|
|
39
40
|
smaller,
|
|
40
41
|
smallerEq,
|
|
41
|
-
larger
|
|
42
|
+
larger,
|
|
43
|
+
mapSlices
|
|
42
44
|
});
|
|
43
45
|
return typed('quantileSeq', {
|
|
44
46
|
'Array | Matrix, number | BigNumber': quantileSeq,
|
|
@@ -3,7 +3,7 @@ import { errorTransform } from './utils/errorTransform.js';
|
|
|
3
3
|
import { createVariance } from '../../function/statistics/variance.js';
|
|
4
4
|
import { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';
|
|
5
5
|
var name = 'variance';
|
|
6
|
-
var dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', '
|
|
6
|
+
var dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'mapSlices', 'isNaN'];
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Attach a transform function to math.var
|
|
@@ -19,7 +19,7 @@ export var createVarianceTransform = /* #__PURE__ */factory(name, dependencies,
|
|
|
19
19
|
subtract,
|
|
20
20
|
multiply,
|
|
21
21
|
divide,
|
|
22
|
-
|
|
22
|
+
mapSlices,
|
|
23
23
|
isNaN
|
|
24
24
|
} = _ref;
|
|
25
25
|
var variance = createVariance({
|
|
@@ -28,7 +28,7 @@ export var createVarianceTransform = /* #__PURE__ */factory(name, dependencies,
|
|
|
28
28
|
subtract,
|
|
29
29
|
multiply,
|
|
30
30
|
divide,
|
|
31
|
-
|
|
31
|
+
mapSlices,
|
|
32
32
|
isNaN
|
|
33
33
|
});
|
|
34
34
|
return typed(name, {
|
package/lib/esm/factoriesAny.js
CHANGED
|
@@ -32,7 +32,7 @@ export { createSplitUnit } from './type/unit/function/splitUnit.js';
|
|
|
32
32
|
export { createUnaryMinus } from './function/arithmetic/unaryMinus.js';
|
|
33
33
|
export { createUnaryPlus } from './function/arithmetic/unaryPlus.js';
|
|
34
34
|
export { createAbs } from './function/arithmetic/abs.js';
|
|
35
|
-
export {
|
|
35
|
+
export { createMapSlices } from './function/matrix/mapSlices.js';
|
|
36
36
|
export { createAddScalar } from './function/arithmetic/addScalar.js';
|
|
37
37
|
export { createSubtractScalar } from './function/arithmetic/subtractScalar.js';
|
|
38
38
|
export { createCbrt } from './function/arithmetic/cbrt.js';
|
|
@@ -271,7 +271,7 @@ export { createE, createUppercaseE, createFalse, createI, createInfinity, create
|
|
|
271
271
|
// eslint-disable-line camelcase
|
|
272
272
|
createSQRT2, createTau, createTrue, createVersion } from './constants.js';
|
|
273
273
|
export { createAtomicMass, createAvogadro, createBohrMagneton, createBohrRadius, createBoltzmann, createClassicalElectronRadius, createConductanceQuantum, createCoulomb, createDeuteronMass, createEfimovFactor, createElectricConstant, createElectronMass, createElementaryCharge, createFaraday, createFermiCoupling, createFineStructure, createFirstRadiation, createGasConstant, createGravitationConstant, createGravity, createHartreeEnergy, createInverseConductanceQuantum, createKlitzing, createLoschmidt, createMagneticConstant, createMagneticFluxQuantum, createMolarMass, createMolarMassC12, createMolarPlanckConstant, createMolarVolume, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckConstant, createPlanckLength, createPlanckMass, createPlanckTemperature, createPlanckTime, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSackurTetrode, createSecondRadiation, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createVacuumImpedance, createWeakMixingAngle, createWienDisplacement } from './type/unit/physicalConstants.js';
|
|
274
|
-
export {
|
|
274
|
+
export { createMapSlicesTransform } from './expression/transform/mapSlices.transform.js';
|
|
275
275
|
export { createColumnTransform } from './expression/transform/column.transform.js';
|
|
276
276
|
export { createFilterTransform } from './expression/transform/filter.transform.js';
|
|
277
277
|
export { createForEachTransform } from './expression/transform/forEach.transform.js';
|
|
@@ -121,7 +121,7 @@ export var createOr = /* #__PURE__ */createNumberFactory('or', orNumber);
|
|
|
121
121
|
export var createXor = /* #__PURE__ */createNumberFactory('xor', xorNumber);
|
|
122
122
|
|
|
123
123
|
// matrix
|
|
124
|
-
export {
|
|
124
|
+
export { createMapSlices } from './function/matrix/mapSlices.js';
|
|
125
125
|
export { createFilter } from './function/matrix/filter.js';
|
|
126
126
|
export { createForEach } from './function/matrix/forEach.js';
|
|
127
127
|
export { createMap } from './function/matrix/map.js';
|
|
@@ -211,7 +211,7 @@ export var createTan = /* #__PURE__ */createNumberFactory('tan', tanNumber);
|
|
|
211
211
|
export var createTanh = /* #__PURE__ */createNumberFactory('tanh', tanhNumber);
|
|
212
212
|
|
|
213
213
|
// transforms
|
|
214
|
-
export {
|
|
214
|
+
export { createMapSlicesTransform } from './expression/transform/mapSlices.transform.js';
|
|
215
215
|
export { createFilterTransform } from './expression/transform/filter.transform.js';
|
|
216
216
|
export { createForEachTransform } from './expression/transform/forEach.transform.js';
|
|
217
217
|
export { createMapTransform } from './expression/transform/map.transform.js';
|
|
@@ -1,36 +1,41 @@
|
|
|
1
1
|
import Decimal from 'decimal.js';
|
|
2
2
|
import { factory } from '../../utils/factory.js';
|
|
3
3
|
import { deepMap } from '../../utils/collection.js';
|
|
4
|
-
import { nearlyEqual } from '../../utils/number.js';
|
|
4
|
+
import { isInteger, nearlyEqual } from '../../utils/number.js';
|
|
5
5
|
import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';
|
|
6
6
|
import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
|
|
7
7
|
import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
|
|
8
8
|
import { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';
|
|
9
9
|
var name = 'ceil';
|
|
10
10
|
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
|
|
11
|
+
var bigTen = new Decimal(10);
|
|
11
12
|
export var createCeilNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {
|
|
12
13
|
var {
|
|
13
14
|
typed,
|
|
14
15
|
config,
|
|
15
16
|
round
|
|
16
17
|
} = _ref;
|
|
18
|
+
function _ceilNumber(x) {
|
|
19
|
+
// See ./floor.js _floorNumber for rationale here
|
|
20
|
+
var c = Math.ceil(x);
|
|
21
|
+
var r = round(x);
|
|
22
|
+
if (c === r) return c;
|
|
23
|
+
if (nearlyEqual(x, r, config.relTol, config.absTol) && !nearlyEqual(x, c, config.relTol, config.absTol)) {
|
|
24
|
+
return r;
|
|
25
|
+
}
|
|
26
|
+
return c;
|
|
27
|
+
}
|
|
17
28
|
return typed(name, {
|
|
18
|
-
number:
|
|
19
|
-
if (nearlyEqual(x, round(x), config.relTol, config.absTol)) {
|
|
20
|
-
return round(x);
|
|
21
|
-
} else {
|
|
22
|
-
return Math.ceil(x);
|
|
23
|
-
}
|
|
24
|
-
},
|
|
29
|
+
number: _ceilNumber,
|
|
25
30
|
'number, number': function number_number(x, n) {
|
|
26
|
-
if (
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
[number, exponent] = "".concat(result, "e").split('e');
|
|
32
|
-
return Number("".concat(number, "e").concat(Number(exponent) - n));
|
|
31
|
+
if (!isInteger(n)) {
|
|
32
|
+
throw new RangeError('number of decimals in function ceil must be an integer');
|
|
33
|
+
}
|
|
34
|
+
if (n < 0 || n > 15) {
|
|
35
|
+
throw new RangeError('number of decimals in ceil number must be in range 0-15');
|
|
33
36
|
}
|
|
37
|
+
var shift = 10 ** n;
|
|
38
|
+
return _ceilNumber(x * shift) / shift;
|
|
34
39
|
}
|
|
35
40
|
});
|
|
36
41
|
});
|
|
@@ -60,6 +65,15 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
|
60
65
|
config,
|
|
61
66
|
round
|
|
62
67
|
});
|
|
68
|
+
function _bigCeil(x) {
|
|
69
|
+
// see ./floor.js _floorNumber for rationale
|
|
70
|
+
var bne = (a, b) => bigNearlyEqual(a, b, config.relTol, config.absTol);
|
|
71
|
+
var c = x.ceil();
|
|
72
|
+
var r = round(x);
|
|
73
|
+
if (c.eq(r)) return c;
|
|
74
|
+
if (bne(x, r) && !bne(x, c)) return r;
|
|
75
|
+
return c;
|
|
76
|
+
}
|
|
63
77
|
/**
|
|
64
78
|
* Round a value towards plus infinity
|
|
65
79
|
* If `x` is complex, both real and imaginary part are rounded towards plus infinity.
|
|
@@ -118,20 +132,14 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
|
118
132
|
'Complex, BigNumber': function Complex_BigNumber(x, n) {
|
|
119
133
|
return x.ceil(n.toNumber());
|
|
120
134
|
},
|
|
121
|
-
BigNumber:
|
|
122
|
-
if (bigNearlyEqual(x, round(x), config.relTol, config.absTol)) {
|
|
123
|
-
return round(x);
|
|
124
|
-
} else {
|
|
125
|
-
return x.ceil();
|
|
126
|
-
}
|
|
127
|
-
},
|
|
135
|
+
BigNumber: _bigCeil,
|
|
128
136
|
'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
} else {
|
|
132
|
-
return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_CEIL);
|
|
133
|
-
}
|
|
137
|
+
var shift = bigTen.pow(n);
|
|
138
|
+
return _bigCeil(x.mul(shift)).div(shift);
|
|
134
139
|
},
|
|
140
|
+
bigint: b => b,
|
|
141
|
+
'bigint, number': (b, _dummy) => b,
|
|
142
|
+
'bigint, BigNumber': (b, _dummy) => b,
|
|
135
143
|
Fraction: function Fraction(x) {
|
|
136
144
|
return x.ceil();
|
|
137
145
|
},
|
|
@@ -106,6 +106,9 @@ export var createFix = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
|
106
106
|
'BigNumber, number | BigNumber': function BigNumber_number__BigNumber(x, n) {
|
|
107
107
|
return x.isNegative() ? ceil(x, n) : floor(x, n);
|
|
108
108
|
},
|
|
109
|
+
bigint: b => b,
|
|
110
|
+
'bigint, number': (b, _dummy) => b,
|
|
111
|
+
'bigint, BigNumber': (b, _dummy) => b,
|
|
109
112
|
Fraction: function Fraction(x) {
|
|
110
113
|
return x.s < 0n ? x.ceil() : x.floor();
|
|
111
114
|
},
|
|
@@ -1,36 +1,48 @@
|
|
|
1
1
|
import Decimal from 'decimal.js';
|
|
2
2
|
import { factory } from '../../utils/factory.js';
|
|
3
3
|
import { deepMap } from '../../utils/collection.js';
|
|
4
|
-
import { nearlyEqual } from '../../utils/number.js';
|
|
4
|
+
import { isInteger, nearlyEqual } from '../../utils/number.js';
|
|
5
5
|
import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';
|
|
6
6
|
import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
|
|
7
7
|
import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
|
|
8
8
|
import { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';
|
|
9
9
|
var name = 'floor';
|
|
10
10
|
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
|
|
11
|
+
var bigTen = new Decimal(10);
|
|
11
12
|
export var createFloorNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {
|
|
12
13
|
var {
|
|
13
14
|
typed,
|
|
14
15
|
config,
|
|
15
16
|
round
|
|
16
17
|
} = _ref;
|
|
18
|
+
function _floorNumber(x) {
|
|
19
|
+
// First, if the floor and the round are identical we can be
|
|
20
|
+
// quite comfortable that is the best answer:
|
|
21
|
+
var f = Math.floor(x);
|
|
22
|
+
var r = round(x);
|
|
23
|
+
if (f === r) return f;
|
|
24
|
+
// OK, they are different. If x is truly distinct from f but
|
|
25
|
+
// appears indistinguishable from r, presume it really is just
|
|
26
|
+
// the integer r with rounding/computation error, and return that
|
|
27
|
+
if (nearlyEqual(x, r, config.relTol, config.absTol) && !nearlyEqual(x, f, config.relTol, config.absTol)) {
|
|
28
|
+
return r;
|
|
29
|
+
}
|
|
30
|
+
// Otherwise (x distinct from both r and f, or indistinguishable from
|
|
31
|
+
// both r and f) may as well just return f, as that's the best
|
|
32
|
+
// candidate we can discern:
|
|
33
|
+
return f;
|
|
34
|
+
}
|
|
17
35
|
return typed(name, {
|
|
18
|
-
number:
|
|
19
|
-
if (nearlyEqual(x, round(x), config.relTol, config.absTol)) {
|
|
20
|
-
return round(x);
|
|
21
|
-
} else {
|
|
22
|
-
return Math.floor(x);
|
|
23
|
-
}
|
|
24
|
-
},
|
|
36
|
+
number: _floorNumber,
|
|
25
37
|
'number, number': function number_number(x, n) {
|
|
26
|
-
if (
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
[number, exponent] = "".concat(result, "e").split('e');
|
|
32
|
-
return Number("".concat(number, "e").concat(Number(exponent) - n));
|
|
38
|
+
if (!isInteger(n)) {
|
|
39
|
+
throw new RangeError('number of decimals in function floor must be an integer');
|
|
40
|
+
}
|
|
41
|
+
if (n < 0 || n > 15) {
|
|
42
|
+
throw new RangeError('number of decimals in floor number must be in range 0 - 15');
|
|
33
43
|
}
|
|
44
|
+
var shift = 10 ** n;
|
|
45
|
+
return _floorNumber(x * shift) / shift;
|
|
34
46
|
}
|
|
35
47
|
});
|
|
36
48
|
});
|
|
@@ -60,6 +72,15 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
|
60
72
|
config,
|
|
61
73
|
round
|
|
62
74
|
});
|
|
75
|
+
function _bigFloor(x) {
|
|
76
|
+
// see _floorNumber above for rationale
|
|
77
|
+
var bne = (a, b) => bigNearlyEqual(a, b, config.relTol, config.absTol);
|
|
78
|
+
var f = x.floor();
|
|
79
|
+
var r = round(x);
|
|
80
|
+
if (f.eq(r)) return f;
|
|
81
|
+
if (bne(x, r) && !bne(x, f)) return r;
|
|
82
|
+
return f;
|
|
83
|
+
}
|
|
63
84
|
/**
|
|
64
85
|
* Round a value towards minus infinity.
|
|
65
86
|
* For matrices, the function is evaluated element wise.
|
|
@@ -121,20 +142,14 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {
|
|
|
121
142
|
'Complex, BigNumber': function Complex_BigNumber(x, n) {
|
|
122
143
|
return x.floor(n.toNumber());
|
|
123
144
|
},
|
|
124
|
-
BigNumber:
|
|
125
|
-
if (bigNearlyEqual(x, round(x), config.relTol, config.absTol)) {
|
|
126
|
-
return round(x);
|
|
127
|
-
} else {
|
|
128
|
-
return x.floor();
|
|
129
|
-
}
|
|
130
|
-
},
|
|
145
|
+
BigNumber: _bigFloor,
|
|
131
146
|
'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
} else {
|
|
135
|
-
return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_FLOOR);
|
|
136
|
-
}
|
|
147
|
+
var shift = bigTen.pow(n);
|
|
148
|
+
return _bigFloor(x.mul(shift)).div(shift);
|
|
137
149
|
},
|
|
150
|
+
bigint: b => b,
|
|
151
|
+
'bigint, number': (b, _dummy) => b,
|
|
152
|
+
'bigint, BigNumber': (b, _dummy) => b,
|
|
138
153
|
Fraction: function Fraction(x) {
|
|
139
154
|
return x.floor();
|
|
140
155
|
},
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { factory } from '../../utils/factory.js';
|
|
2
|
+
import { promoteLogarithm } from '../../utils/bigint.js';
|
|
2
3
|
import { logNumber } from '../../plain/number/index.js';
|
|
3
4
|
var name = 'log';
|
|
4
5
|
var dependencies = ['config', 'typed', 'typeOf', 'divideScalar', 'Complex'];
|
|
6
|
+
var nlg16 = Math.log(16);
|
|
5
7
|
export var createLog = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
6
8
|
var {
|
|
7
9
|
typed,
|
|
@@ -45,24 +47,29 @@ export var createLog = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
45
47
|
* @return {number | BigNumber | Fraction | Complex}
|
|
46
48
|
* Returns the logarithm of `x`
|
|
47
49
|
*/
|
|
50
|
+
function complexLog(c) {
|
|
51
|
+
return c.log();
|
|
52
|
+
}
|
|
53
|
+
function complexLogNumber(x) {
|
|
54
|
+
return complexLog(new Complex(x, 0));
|
|
55
|
+
}
|
|
48
56
|
return typed(name, {
|
|
49
57
|
number: function number(x) {
|
|
50
58
|
if (x >= 0 || config.predictable) {
|
|
51
59
|
return logNumber(x);
|
|
52
60
|
} else {
|
|
53
61
|
// negative value -> complex value computation
|
|
54
|
-
return
|
|
62
|
+
return complexLogNumber(x);
|
|
55
63
|
}
|
|
56
64
|
},
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
},
|
|
65
|
+
bigint: promoteLogarithm(nlg16, logNumber, config, complexLogNumber),
|
|
66
|
+
Complex: complexLog,
|
|
60
67
|
BigNumber: function BigNumber(x) {
|
|
61
68
|
if (!x.isNegative() || config.predictable) {
|
|
62
69
|
return x.ln();
|
|
63
70
|
} else {
|
|
64
71
|
// downgrade to number, return Complex valued result
|
|
65
|
-
return
|
|
72
|
+
return complexLogNumber(x.toNumber());
|
|
66
73
|
}
|
|
67
74
|
},
|
|
68
75
|
'any, any': typed.referToSelf(self => (x, base) => {
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { factory } from '../../utils/factory.js';
|
|
2
|
-
import { deepMap } from '../../utils/collection.js';
|
|
3
1
|
import { log10Number } from '../../plain/number/index.js';
|
|
2
|
+
import { promoteLogarithm } from '../../utils/bigint.js';
|
|
3
|
+
import { deepMap } from '../../utils/collection.js';
|
|
4
|
+
import { factory } from '../../utils/factory.js';
|
|
4
5
|
var name = 'log10';
|
|
5
6
|
var dependencies = ['typed', 'config', 'Complex'];
|
|
7
|
+
var log16 = log10Number(16);
|
|
6
8
|
export var createLog10 = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
7
9
|
var {
|
|
8
10
|
typed,
|
|
9
11
|
config,
|
|
10
|
-
Complex
|
|
12
|
+
Complex
|
|
11
13
|
} = _ref;
|
|
12
14
|
/**
|
|
13
15
|
* Calculate the 10-base logarithm of a value. This is the same as calculating `log(x, 10)`.
|
|
@@ -34,24 +36,30 @@ export var createLog10 = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
34
36
|
* @return {number | BigNumber | Complex | Array | Matrix}
|
|
35
37
|
* Returns the 10-base logarithm of `x`
|
|
36
38
|
*/
|
|
39
|
+
|
|
40
|
+
function complexLog(c) {
|
|
41
|
+
return c.log().div(Math.LN10);
|
|
42
|
+
}
|
|
43
|
+
function complexLogNumber(x) {
|
|
44
|
+
return complexLog(new Complex(x, 0));
|
|
45
|
+
}
|
|
37
46
|
return typed(name, {
|
|
38
47
|
number: function number(x) {
|
|
39
48
|
if (x >= 0 || config.predictable) {
|
|
40
49
|
return log10Number(x);
|
|
41
50
|
} else {
|
|
42
51
|
// negative value -> complex value computation
|
|
43
|
-
return
|
|
52
|
+
return complexLogNumber(x);
|
|
44
53
|
}
|
|
45
54
|
},
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
},
|
|
55
|
+
bigint: promoteLogarithm(log16, log10Number, config, complexLogNumber),
|
|
56
|
+
Complex: complexLog,
|
|
49
57
|
BigNumber: function BigNumber(x) {
|
|
50
58
|
if (!x.isNegative() || config.predictable) {
|
|
51
59
|
return x.log();
|
|
52
60
|
} else {
|
|
53
61
|
// downgrade to number, return Complex valued result
|
|
54
|
-
return
|
|
62
|
+
return complexLogNumber(x.toNumber());
|
|
55
63
|
}
|
|
56
64
|
},
|
|
57
65
|
'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
|