mathjs 14.1.0 → 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 +11 -0
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -2
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/core/function/import.js +14 -4
- 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/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/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 +13 -13
- package/lib/cjs/entry/pureFunctionsAny.generated.js +328 -326
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +13 -11
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -0
- 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/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/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/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/header.js +2 -2
- package/lib/cjs/type/matrix/MatrixIndex.js +6 -3
- package/lib/cjs/type/matrix/Range.js +15 -8
- package/lib/cjs/utils/factory.js +5 -2
- 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/{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/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/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 +15 -15
- package/lib/esm/entry/pureFunctionsAny.generated.js +326 -324
- package/lib/esm/entry/pureFunctionsNumber.generated.js +12 -10
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
- 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/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/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/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/type/matrix/MatrixIndex.js +6 -3
- package/lib/esm/type/matrix/Range.js +16 -9
- package/lib/esm/utils/factory.js +5 -2
- package/lib/esm/utils/snapshot.js +8 -1
- package/lib/esm/version.js +1 -1
- package/package.json +1 -1
- 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, createRightArithShift, createSec, createSinh, createSqrt, createTan, createUnaryMinus, createAcosh,
|
|
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
|
});
|
|
@@ -317,11 +322,7 @@ export var unaryMinus = /* #__PURE__ */createUnaryMinus({
|
|
|
317
322
|
export var acosh = /* #__PURE__ */createAcosh({
|
|
318
323
|
typed
|
|
319
324
|
});
|
|
320
|
-
export var
|
|
321
|
-
isInteger,
|
|
322
|
-
typed
|
|
323
|
-
});
|
|
324
|
-
export var asinh = /* #__PURE__ */createAsinh({
|
|
325
|
+
export var atan2 = /* #__PURE__ */createAtan2({
|
|
325
326
|
typed
|
|
326
327
|
});
|
|
327
328
|
export var bitOr = /* #__PURE__ */createBitOr({
|
|
@@ -390,9 +391,9 @@ export var subtractScalar = /* #__PURE__ */createSubtractScalar({
|
|
|
390
391
|
export var _true = /* #__PURE__ */createTrue({});
|
|
391
392
|
export var variance = /* #__PURE__ */createVariance({
|
|
392
393
|
add,
|
|
393
|
-
apply,
|
|
394
394
|
divide,
|
|
395
395
|
isNaN,
|
|
396
|
+
mapSlices,
|
|
396
397
|
multiply,
|
|
397
398
|
subtract,
|
|
398
399
|
typed
|
|
@@ -416,9 +417,6 @@ export var zeta = /* #__PURE__ */createZeta({
|
|
|
416
417
|
export var acsch = /* #__PURE__ */createAcsch({
|
|
417
418
|
typed
|
|
418
419
|
});
|
|
419
|
-
export var atan2 = /* #__PURE__ */createAtan2({
|
|
420
|
-
typed
|
|
421
|
-
});
|
|
422
420
|
export var catalan = /* #__PURE__ */createCatalan({
|
|
423
421
|
addScalar,
|
|
424
422
|
combinations,
|
|
@@ -490,6 +488,7 @@ export var quantileSeq = /* #__PURE__ */createQuantileSeq({
|
|
|
490
488
|
divide,
|
|
491
489
|
isInteger,
|
|
492
490
|
larger,
|
|
491
|
+
mapSlices,
|
|
493
492
|
multiply,
|
|
494
493
|
partitionSelect,
|
|
495
494
|
smaller,
|
|
@@ -520,6 +519,9 @@ export var stirlingS2 = /* #__PURE__ */createStirlingS2({
|
|
|
520
519
|
subtractScalar,
|
|
521
520
|
typed
|
|
522
521
|
});
|
|
522
|
+
export var asinh = /* #__PURE__ */createAsinh({
|
|
523
|
+
typed
|
|
524
|
+
});
|
|
523
525
|
export var ceil = /* #__PURE__ */createCeil({
|
|
524
526
|
config,
|
|
525
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,
|
|
@@ -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
|
},
|
|
@@ -137,6 +137,10 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
137
137
|
var xSelected = bigNearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;
|
|
138
138
|
return xSelected.toDecimalPlaces(n.toNumber());
|
|
139
139
|
},
|
|
140
|
+
// bigints can't be rounded
|
|
141
|
+
bigint: b => b,
|
|
142
|
+
'bigint, number': (b, _dummy) => b,
|
|
143
|
+
'bigint, BigNumber': (b, _dummy) => b,
|
|
140
144
|
Fraction: function Fraction(x) {
|
|
141
145
|
return x.round();
|
|
142
146
|
},
|
|
@@ -20,7 +20,7 @@ export var createCtranspose = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
|
20
20
|
* Examples:
|
|
21
21
|
*
|
|
22
22
|
* const A = [[1, 2, 3], [4, 5, math.complex(6,7)]]
|
|
23
|
-
* math.ctranspose(A)
|
|
23
|
+
* math.ctranspose(A) // returns [[1, 4], [2, 5], [3, {re:6,im:-7}]]
|
|
24
24
|
*
|
|
25
25
|
* See also:
|
|
26
26
|
*
|
|
@@ -2,9 +2,9 @@ import { factory } from '../../utils/factory.js';
|
|
|
2
2
|
import { arraySize } from '../../utils/array.js';
|
|
3
3
|
import { isMatrix } from '../../utils/is.js';
|
|
4
4
|
import { IndexError } from '../../error/IndexError.js';
|
|
5
|
-
var name = '
|
|
5
|
+
var name = 'mapSlices';
|
|
6
6
|
var dependencies = ['typed', 'isInteger'];
|
|
7
|
-
export var
|
|
7
|
+
export var createMapSlices = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
8
8
|
var {
|
|
9
9
|
typed,
|
|
10
10
|
isInteger
|
|
@@ -16,7 +16,7 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
16
16
|
*
|
|
17
17
|
* Syntax:
|
|
18
18
|
*
|
|
19
|
-
* math.
|
|
19
|
+
* math.mapSlices(A, dim, callback)
|
|
20
20
|
*
|
|
21
21
|
* Where:
|
|
22
22
|
*
|
|
@@ -27,19 +27,24 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
27
27
|
* const A = [[1, 2], [3, 4]]
|
|
28
28
|
* const sum = math.sum
|
|
29
29
|
*
|
|
30
|
-
* math.
|
|
31
|
-
* math.
|
|
30
|
+
* math.mapSlices(A, 0, sum) // returns [4, 6]
|
|
31
|
+
* math.mapSlices(A, 1, sum) // returns [3, 7]
|
|
32
32
|
*
|
|
33
33
|
* See also:
|
|
34
34
|
*
|
|
35
35
|
* map, filter, forEach
|
|
36
36
|
*
|
|
37
|
+
* Note:
|
|
38
|
+
*
|
|
39
|
+
* `mapSlices()` is also currently available via its deprecated
|
|
40
|
+
* synonym `apply()`.
|
|
41
|
+
*
|
|
37
42
|
* @param {Array | Matrix} array The input Matrix
|
|
38
43
|
* @param {number} dim The dimension along which the callback is applied
|
|
39
44
|
* @param {Function} callback The callback function that is applied. This Function
|
|
40
45
|
* should take an array or 1-d matrix as an input and
|
|
41
46
|
* return a number.
|
|
42
|
-
* @return {Array | Matrix} res The residual matrix with the function
|
|
47
|
+
* @return {Array | Matrix} res The residual matrix with the function mapped on the slices over some dimension.
|
|
43
48
|
*/
|
|
44
49
|
return typed(name, {
|
|
45
50
|
'Array | Matrix, number | BigNumber, function': function Array__Matrix_number__BigNumber_function(mat, dim, callback) {
|
|
@@ -51,12 +56,14 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
51
56
|
throw new IndexError(dim, size.length);
|
|
52
57
|
}
|
|
53
58
|
if (isMatrix(mat)) {
|
|
54
|
-
return mat.create(
|
|
59
|
+
return mat.create(_mapSlices(mat.valueOf(), dim, callback), mat.datatype());
|
|
55
60
|
} else {
|
|
56
|
-
return
|
|
61
|
+
return _mapSlices(mat, dim, callback);
|
|
57
62
|
}
|
|
58
63
|
}
|
|
59
64
|
});
|
|
65
|
+
}, {
|
|
66
|
+
formerly: 'apply'
|
|
60
67
|
});
|
|
61
68
|
|
|
62
69
|
/**
|
|
@@ -67,7 +74,7 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
67
74
|
* @returns {Array} ret
|
|
68
75
|
* @private
|
|
69
76
|
*/
|
|
70
|
-
function
|
|
77
|
+
function _mapSlices(mat, dim, callback) {
|
|
71
78
|
var i, ret, tran;
|
|
72
79
|
if (dim <= 0) {
|
|
73
80
|
if (!Array.isArray(mat[0])) {
|
|
@@ -76,14 +83,14 @@ function _apply(mat, dim, callback) {
|
|
|
76
83
|
tran = _switch(mat);
|
|
77
84
|
ret = [];
|
|
78
85
|
for (i = 0; i < tran.length; i++) {
|
|
79
|
-
ret[i] =
|
|
86
|
+
ret[i] = _mapSlices(tran[i], dim - 1, callback);
|
|
80
87
|
}
|
|
81
88
|
return ret;
|
|
82
89
|
}
|
|
83
90
|
} else {
|
|
84
91
|
ret = [];
|
|
85
92
|
for (i = 0; i < mat.length; i++) {
|
|
86
|
-
ret[i] =
|
|
93
|
+
ret[i] = _mapSlices(mat[i], dim - 1, callback);
|
|
87
94
|
}
|
|
88
95
|
return ret;
|
|
89
96
|
}
|