mathjs 14.0.1 → 14.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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))
|