mathjs 10.2.0 → 10.3.0
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +12 -0
- package/docs/expressions/syntax.md +31 -2
- package/docs/reference/functions/map.md +22 -5
- package/docs/reference/functions/subset.md +10 -2
- package/docs/reference/functions/symbolicEqual.md +62 -0
- package/docs/reference/functions.md +2 -1
- package/lib/browser/math.js +5 -5
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesSymbolicEqual.generated.js +29 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +8 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +16 -8
- package/lib/cjs/entry/pureFunctionsAny.generated.js +9 -9
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +237 -234
- package/lib/cjs/expression/embeddedDocs/function/algebra/symbolicEqual.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/matrix/subset.js +2 -2
- package/lib/cjs/expression/node/FunctionNode.js +74 -55
- package/lib/cjs/factoriesAny.js +8 -0
- package/lib/cjs/function/algebra/simplify.js +8 -0
- package/lib/cjs/function/algebra/symbolicEqual.js +88 -0
- package/lib/cjs/function/matrix/eigs/complexEigs.js +8 -6
- package/lib/cjs/function/matrix/map.js +53 -15
- package/lib/cjs/function/matrix/subset.js +15 -5
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesSymbolicEqual.generated.js +16 -0
- package/lib/esm/entry/dependenciesAny.generated.js +1 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +16 -9
- package/lib/esm/entry/pureFunctionsAny.generated.js +8 -8
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +218 -216
- package/lib/esm/expression/embeddedDocs/function/algebra/symbolicEqual.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/matrix/subset.js +2 -2
- package/lib/esm/expression/node/FunctionNode.js +70 -53
- package/lib/esm/factoriesAny.js +1 -0
- package/lib/esm/function/algebra/simplify.js +8 -0
- package/lib/esm/function/algebra/symbolicEqual.js +80 -0
- package/lib/esm/function/matrix/eigs/complexEigs.js +8 -6
- package/lib/esm/function/matrix/map.js +53 -15
- package/lib/esm/function/matrix/subset.js +15 -5
- package/lib/esm/version.js +1 -1
- package/package.json +1 -1
- package/types/index.d.ts +4 -4
@@ -77,76 +77,93 @@ export var createFunctionNode = /* #__PURE__ */factory(name, dependencies, _ref
|
|
77
77
|
var evalArgs = this.args.map(arg => arg._compile(math, argNames));
|
78
78
|
|
79
79
|
if (isSymbolNode(this.fn)) {
|
80
|
-
// we can statically determine whether the function has an rawArgs property
|
81
80
|
var _name = this.fn.name;
|
82
|
-
var fn = _name in math ? getSafeProperty(math, _name) : undefined;
|
83
|
-
var isRaw = typeof fn === 'function' && fn.rawArgs === true;
|
84
81
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
82
|
+
if (!argNames[_name]) {
|
83
|
+
// we can statically determine whether the function has an rawArgs property
|
84
|
+
var fn = _name in math ? getSafeProperty(math, _name) : undefined;
|
85
|
+
var isRaw = typeof fn === 'function' && fn.rawArgs === true;
|
89
86
|
|
90
|
-
|
91
|
-
|
92
|
-
|
87
|
+
var resolveFn = scope => {
|
88
|
+
if (scope.has(_name)) {
|
89
|
+
return scope.get(_name);
|
90
|
+
}
|
93
91
|
|
94
|
-
|
95
|
-
|
92
|
+
if (_name in math) {
|
93
|
+
return getSafeProperty(math, _name);
|
94
|
+
}
|
96
95
|
|
97
|
-
|
98
|
-
// pass unevaluated parameters (nodes) to the function
|
99
|
-
// "raw" evaluation
|
100
|
-
var rawArgs = this.args;
|
101
|
-
return function evalFunctionNode(scope, args, context) {
|
102
|
-
var fn = resolveFn(scope);
|
103
|
-
return fn(rawArgs, math, createSubScope(scope, args), scope);
|
96
|
+
return FunctionNode.onUndefinedFunction(_name);
|
104
97
|
};
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
return
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
98
|
+
|
99
|
+
if (isRaw) {
|
100
|
+
// pass unevaluated parameters (nodes) to the function
|
101
|
+
// "raw" evaluation
|
102
|
+
var rawArgs = this.args;
|
103
|
+
return function evalFunctionNode(scope, args, context) {
|
104
|
+
var fn = resolveFn(scope);
|
105
|
+
return fn(rawArgs, math, createSubScope(scope, args), scope);
|
106
|
+
};
|
107
|
+
} else {
|
108
|
+
// "regular" evaluation
|
109
|
+
switch (evalArgs.length) {
|
110
|
+
case 0:
|
111
|
+
return function evalFunctionNode(scope, args, context) {
|
112
|
+
var fn = resolveFn(scope);
|
113
|
+
return fn();
|
114
|
+
};
|
115
|
+
|
116
|
+
case 1:
|
117
|
+
return function evalFunctionNode(scope, args, context) {
|
118
|
+
var fn = resolveFn(scope);
|
119
|
+
var evalArg0 = evalArgs[0];
|
120
|
+
return fn(evalArg0(scope, args, context));
|
121
|
+
};
|
122
|
+
|
123
|
+
case 2:
|
124
|
+
return function evalFunctionNode(scope, args, context) {
|
125
|
+
var fn = resolveFn(scope);
|
126
|
+
var evalArg0 = evalArgs[0];
|
127
|
+
var evalArg1 = evalArgs[1];
|
128
|
+
return fn(evalArg0(scope, args, context), evalArg1(scope, args, context));
|
129
|
+
};
|
130
|
+
|
131
|
+
default:
|
132
|
+
return function evalFunctionNode(scope, args, context) {
|
133
|
+
var fn = resolveFn(scope);
|
134
|
+
var values = evalArgs.map(evalArg => evalArg(scope, args, context));
|
135
|
+
return fn(...values);
|
136
|
+
};
|
137
|
+
}
|
135
138
|
}
|
139
|
+
} else {
|
140
|
+
// the function symbol is an argName
|
141
|
+
var _rawArgs = this.args;
|
142
|
+
return function evalFunctionNode(scope, args, context) {
|
143
|
+
var fn = args[_name];
|
144
|
+
var isRaw = fn && fn.rawArgs;
|
145
|
+
|
146
|
+
if (isRaw) {
|
147
|
+
return fn(_rawArgs, math, createSubScope(scope, args), scope); // "raw" evaluation
|
148
|
+
} else {
|
149
|
+
var values = evalArgs.map(evalArg => evalArg(scope, args, context));
|
150
|
+
return fn.apply(fn, values);
|
151
|
+
}
|
152
|
+
};
|
136
153
|
}
|
137
154
|
} else if (isAccessorNode(this.fn) && isIndexNode(this.fn.index) && this.fn.index.isObjectProperty()) {
|
138
155
|
// execute the function with the right context: the object of the AccessorNode
|
139
156
|
var evalObject = this.fn.object._compile(math, argNames);
|
140
157
|
|
141
158
|
var prop = this.fn.index.getObjectProperty();
|
142
|
-
var
|
159
|
+
var _rawArgs2 = this.args;
|
143
160
|
return function evalFunctionNode(scope, args, context) {
|
144
161
|
var object = evalObject(scope, args, context);
|
145
162
|
validateSafeMethod(object, prop);
|
146
163
|
var isRaw = object[prop] && object[prop].rawArgs;
|
147
164
|
|
148
165
|
if (isRaw) {
|
149
|
-
return object[prop](
|
166
|
+
return object[prop](_rawArgs2, math, createSubScope(scope, args), scope); // "raw" evaluation
|
150
167
|
} else {
|
151
168
|
// "regular" evaluation
|
152
169
|
var values = evalArgs.map(evalArg => evalArg(scope, args, context));
|
@@ -158,13 +175,13 @@ export var createFunctionNode = /* #__PURE__ */factory(name, dependencies, _ref
|
|
158
175
|
// we have to dynamically determine whether the function has a rawArgs property
|
159
176
|
var evalFn = this.fn._compile(math, argNames);
|
160
177
|
|
161
|
-
var
|
178
|
+
var _rawArgs3 = this.args;
|
162
179
|
return function evalFunctionNode(scope, args, context) {
|
163
180
|
var fn = evalFn(scope, args, context);
|
164
181
|
var isRaw = fn && fn.rawArgs;
|
165
182
|
|
166
183
|
if (isRaw) {
|
167
|
-
return fn(
|
184
|
+
return fn(_rawArgs3, math, createSubScope(scope, args), scope); // "raw" evaluation
|
168
185
|
} else {
|
169
186
|
// "regular" evaluation
|
170
187
|
var values = evalArgs.map(evalArg => evalArg(scope, args, context));
|
package/lib/esm/factoriesAny.js
CHANGED
@@ -245,6 +245,7 @@ export { createLeafCount } from './function/algebra/leafCount.js';
|
|
245
245
|
export { createSimplify } from './function/algebra/simplify.js';
|
246
246
|
export { createSimplifyCore } from './function/algebra/simplifyCore.js';
|
247
247
|
export { createResolve } from './function/algebra/resolve.js';
|
248
|
+
export { createSymbolicEqual } from './function/algebra/symbolicEqual.js';
|
248
249
|
export { createDerivative } from './function/algebra/derivative.js';
|
249
250
|
export { createRationalize } from './function/algebra/rationalize.js';
|
250
251
|
export { createReviver } from './json/reviver.js';
|
@@ -327,6 +327,14 @@ export var createSimplify = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
327
327
|
total: true
|
328
328
|
}
|
329
329
|
}
|
330
|
+
}, {
|
331
|
+
s: 'n-n -> 0',
|
332
|
+
// partial alternative when we can't always subtract
|
333
|
+
assuming: {
|
334
|
+
subtract: {
|
335
|
+
total: false
|
336
|
+
}
|
337
|
+
}
|
330
338
|
}, {
|
331
339
|
s: '-(c*v) -> v * (-c)',
|
332
340
|
// make non-constant terms positive
|
@@ -0,0 +1,80 @@
|
|
1
|
+
import { isConstantNode } from '../../utils/is.js';
|
2
|
+
import { factory } from '../../utils/factory.js';
|
3
|
+
var name = 'symbolicEqual';
|
4
|
+
var dependencies = ['parse', 'simplify', 'typed', 'OperatorNode'];
|
5
|
+
export var createSymbolicEqual = /* #__PURE__ */factory(name, dependencies, _ref => {
|
6
|
+
var {
|
7
|
+
parse,
|
8
|
+
simplify,
|
9
|
+
typed,
|
10
|
+
OperatorNode
|
11
|
+
} = _ref;
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Attempts to determine if two expressions are symbolically equal, i.e.
|
15
|
+
* one is the result of valid algebraic manipulations on the other.
|
16
|
+
* Currently, this simply checks if the difference of the two expressions
|
17
|
+
* simplifies down to 0. So there are two important caveats:
|
18
|
+
* 1. whether two expressions are symbolically equal depends on the
|
19
|
+
* manipulations allowed. Therefore, this function takes an optional
|
20
|
+
* third argument, which are the options that control the behavior
|
21
|
+
* as documented for the `simplify()` function.
|
22
|
+
* 2. it is in general intractable to find the minimal simplification of
|
23
|
+
* an arbitrarily complicated expression. So while a `true` value
|
24
|
+
* of `symbolicEqual` ensures that the two expressions can be manipulated
|
25
|
+
* to match each other, a `false` value does not absolutely rule this out.
|
26
|
+
*
|
27
|
+
* Syntax:
|
28
|
+
*
|
29
|
+
* symbolicEqual(expr1, expr2)
|
30
|
+
* symbolicEqual(expr1, expr2, options)
|
31
|
+
*
|
32
|
+
* Examples:
|
33
|
+
*
|
34
|
+
* symbolicEqual('x*y', 'y*x') // true
|
35
|
+
* symbolicEqual('x*y', 'y*x', {context: {multiply: {commutative: false}}})
|
36
|
+
* //false
|
37
|
+
* symbolicEqual('x/y', '(y*x^(-1))^(-1)') // true
|
38
|
+
* symbolicEqual('abs(x)','x') // false
|
39
|
+
* symbolicEqual('abs(x)','x', simplify.positiveContext) // true
|
40
|
+
*
|
41
|
+
* See also:
|
42
|
+
*
|
43
|
+
* simplify, evaluate
|
44
|
+
*
|
45
|
+
* @param {Node|string} expr1 The first expression to compare
|
46
|
+
* @param {Node|string} expr2 The second expression to compare
|
47
|
+
* @param {Object} [options] Optional option object, passed to simplify
|
48
|
+
* @returns {boolean}
|
49
|
+
* Returns true if a valid manipulation making the expressions equal
|
50
|
+
* is found.
|
51
|
+
*/
|
52
|
+
return typed(name, {
|
53
|
+
'string, string': function stringString(s1, s2) {
|
54
|
+
return this(parse(s1), parse(s2), {});
|
55
|
+
},
|
56
|
+
'string, string, Object': function stringStringObject(s1, s2, options) {
|
57
|
+
return this(parse(s1), parse(s2), options);
|
58
|
+
},
|
59
|
+
'Node, string': function NodeString(e1, s2) {
|
60
|
+
return this(e1, parse(s2), {});
|
61
|
+
},
|
62
|
+
'Node, string, Object': function NodeStringObject(e1, s2, options) {
|
63
|
+
return this(e1, parse(s2), options);
|
64
|
+
},
|
65
|
+
'string, Node': function stringNode(s1, e2) {
|
66
|
+
return this(parse(s1), e2, {});
|
67
|
+
},
|
68
|
+
'string, Node, Object': function stringNodeObject(s1, e2, options) {
|
69
|
+
return this(parse(s1), e2, options);
|
70
|
+
},
|
71
|
+
'Node, Node': function NodeNode(e1, e2) {
|
72
|
+
return this(e1, e2, {});
|
73
|
+
},
|
74
|
+
'Node, Node, Object': function NodeNodeObject(e1, e2, options) {
|
75
|
+
var diff = new OperatorNode('-', 'subtract', [e1, e2]);
|
76
|
+
var simplified = simplify(diff, {}, options);
|
77
|
+
return isConstantNode(simplified) && !simplified.value;
|
78
|
+
}
|
79
|
+
});
|
80
|
+
});
|
@@ -84,8 +84,9 @@ export function createComplexEigs(_ref) {
|
|
84
84
|
function balance(arr, N, prec, type, findVectors) {
|
85
85
|
var big = type === 'BigNumber';
|
86
86
|
var cplx = type === 'Complex';
|
87
|
-
var
|
88
|
-
var one = big ? bignumber(1) : cplx ? complex(1) : 1;
|
87
|
+
var realzero = big ? bignumber(0) : 0;
|
88
|
+
var one = big ? bignumber(1) : cplx ? complex(1) : 1;
|
89
|
+
var realone = big ? bignumber(1) : 1; // base of the floating-point arithmetic
|
89
90
|
|
90
91
|
var radix = big ? bignumber(10) : 2;
|
91
92
|
var radixSq = multiplyScalar(radix, radix); // the diagonal transformation matrix R
|
@@ -106,12 +107,13 @@ export function createComplexEigs(_ref) {
|
|
106
107
|
for (var i = 0; i < N; i++) {
|
107
108
|
// compute the taxicab norm of i-th column and row
|
108
109
|
// TODO optimize for complex numbers
|
109
|
-
var colNorm =
|
110
|
-
var rowNorm =
|
110
|
+
var colNorm = realzero;
|
111
|
+
var rowNorm = realzero;
|
111
112
|
|
112
113
|
for (var j = 0; j < N; j++) {
|
113
114
|
if (i === j) continue;
|
114
|
-
var c = abs(arr[i][j]);
|
115
|
+
var c = abs(arr[i][j]); // should be real
|
116
|
+
|
115
117
|
colNorm = addScalar(colNorm, c);
|
116
118
|
rowNorm = addScalar(rowNorm, c);
|
117
119
|
}
|
@@ -120,7 +122,7 @@ export function createComplexEigs(_ref) {
|
|
120
122
|
// find integer power closest to balancing the matrix
|
121
123
|
// (we want to scale only by integer powers of radix,
|
122
124
|
// so that we don't lose any precision due to round-off)
|
123
|
-
var f =
|
125
|
+
var f = realone;
|
124
126
|
var _c = colNorm;
|
125
127
|
var rowDivRadix = divideScalar(rowNorm, radix);
|
126
128
|
var rowMulRadix = multiplyScalar(rowNorm, radix);
|
@@ -8,8 +8,15 @@ export var createMap = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
8
8
|
} = _ref;
|
9
9
|
|
10
10
|
/**
|
11
|
-
* Create a new matrix or array with the results of
|
12
|
-
* each entry of
|
11
|
+
* Create a new matrix or array with the results of a callback function executed on
|
12
|
+
* each entry of a given matrix/array.
|
13
|
+
*
|
14
|
+
* For each entry of the input, the callback is invoked with three arguments:
|
15
|
+
* the value of the entry, the index at which that entry occurs, and the full
|
16
|
+
* matrix/array being traversed. Note that because the matrix/array might be
|
17
|
+
* multidimensional, the "index" argument is always an array of numbers giving
|
18
|
+
* the index in each dimension. This is true even for vectors: the "index"
|
19
|
+
* argument is an array of length 1, rather than simply a number.
|
13
20
|
*
|
14
21
|
* Syntax:
|
15
22
|
*
|
@@ -21,15 +28,25 @@ export var createMap = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
21
28
|
* return value * value
|
22
29
|
* }) // returns [1, 4, 9]
|
23
30
|
*
|
31
|
+
* // The calling convention for the callback can cause subtleties:
|
32
|
+
* math.map([1, 2, 3], math.format)
|
33
|
+
* // throws TypeError: map attempted to call 'format(1,[0])' but argument 2 of type Array does not match expected type number or function or Object or string or boolean
|
34
|
+
* // [This happens because `format` _can_ take a second argument,
|
35
|
+
* // but its semantics don't match that of the 2nd argument `map` provides]
|
36
|
+
*
|
37
|
+
* // To avoid this error, use a function that takes exactly the
|
38
|
+
* // desired arguments:
|
39
|
+
* math.map([1, 2, 3], x => math.format(x)) // returns ['1', '2', '3']
|
40
|
+
*
|
24
41
|
* See also:
|
25
42
|
*
|
26
43
|
* filter, forEach, sort
|
27
44
|
*
|
28
|
-
* @param {Matrix | Array} x The
|
29
|
-
* @param {Function} callback
|
30
|
-
*
|
31
|
-
*
|
32
|
-
*
|
45
|
+
* @param {Matrix | Array} x The input to iterate on.
|
46
|
+
* @param {Function} callback
|
47
|
+
* The function to call (as described above) on each entry of the input
|
48
|
+
* @return {Matrix | array}
|
49
|
+
* Transformed map of x; always has the same type and shape as x
|
33
50
|
*/
|
34
51
|
return typed(name, {
|
35
52
|
'Array, function': _map,
|
@@ -57,14 +74,35 @@ function _map(array, callback) {
|
|
57
74
|
return recurse(child, index.concat(i));
|
58
75
|
});
|
59
76
|
} else {
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
77
|
+
try {
|
78
|
+
// invoke the callback function with the right number of arguments
|
79
|
+
if (args === 1) {
|
80
|
+
return callback(value);
|
81
|
+
} else if (args === 2) {
|
82
|
+
return callback(value, index);
|
83
|
+
} else {
|
84
|
+
// 3 or -1
|
85
|
+
return callback(value, index, array);
|
86
|
+
}
|
87
|
+
} catch (err) {
|
88
|
+
// But maybe the arguments still weren't right
|
89
|
+
if (err instanceof TypeError && 'data' in err && err.data.category === 'wrongType') {
|
90
|
+
var newmsg = "map attempted to call '".concat(err.data.fn, "(").concat(value);
|
91
|
+
var indexString = JSON.stringify(index);
|
92
|
+
|
93
|
+
if (args === 2) {
|
94
|
+
newmsg += ',' + indexString;
|
95
|
+
} else if (args !== 1) {
|
96
|
+
newmsg += ",".concat(indexString, ",").concat(array);
|
97
|
+
}
|
98
|
+
|
99
|
+
newmsg += ")' but argument ".concat(err.data.index + 1, " of type ");
|
100
|
+
newmsg += "".concat(err.data.actual, " does not match expected type ");
|
101
|
+
newmsg += err.data.expected.join(' or ');
|
102
|
+
throw new TypeError(newmsg);
|
103
|
+
}
|
104
|
+
|
105
|
+
throw err;
|
68
106
|
}
|
69
107
|
}
|
70
108
|
};
|
@@ -28,16 +28,26 @@ export var createSubset = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
28
28
|
*
|
29
29
|
* // replace a subset
|
30
30
|
* const e = []
|
31
|
-
* const f = math.subset(e, math.index(0, [0, 2]), [5, 6]) // f = [[5, 6]]
|
31
|
+
* const f = math.subset(e, math.index(0, [0, 2]), [5, 6]) // f = [[5, 6]] and e = [[5, 0, 6]]
|
32
32
|
* const g = math.subset(f, math.index(1, 1), 7, 0) // g = [[5, 6], [0, 7]]
|
33
33
|
*
|
34
|
+
* // get submatrix using ranges
|
35
|
+
* const M = [
|
36
|
+
* [1,2,3],
|
37
|
+
* [4,5,6],
|
38
|
+
* [7,8,9]
|
39
|
+
* ]
|
40
|
+
* math.subset(M, math.index(math.range(0,2), math.range(0,3))) // [[1,2,3],[4,5,6]]
|
41
|
+
*
|
34
42
|
* See also:
|
35
43
|
*
|
36
44
|
* size, resize, squeeze, index
|
37
45
|
*
|
38
46
|
* @param {Array | Matrix | string} matrix An array, matrix, or string
|
39
|
-
* @param {Index} index
|
40
|
-
*
|
47
|
+
* @param {Index} index
|
48
|
+
* For each dimension of the target, specifies an index or a list of
|
49
|
+
* indices to fetch or set. `subset` uses the cartesian product of
|
50
|
+
* the indices specified in each dimension.
|
41
51
|
* @param {*} [replacement] An array, matrix, or scalar.
|
42
52
|
* If provided, the subset is replaced with replacement.
|
43
53
|
* If not provided, the subset is returned
|
@@ -80,7 +90,7 @@ export var createSubset = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
80
90
|
/**
|
81
91
|
* Retrieve a subset of a string
|
82
92
|
* @param {string} str string from which to get a substring
|
83
|
-
* @param {Index} index An index
|
93
|
+
* @param {Index} index An index or list of indices (character positions)
|
84
94
|
* @returns {string} substring
|
85
95
|
* @private
|
86
96
|
*/
|
@@ -109,7 +119,7 @@ function _getSubstring(str, index) {
|
|
109
119
|
/**
|
110
120
|
* Replace a substring in a string
|
111
121
|
* @param {string} str string to be replaced
|
112
|
-
* @param {Index} index An index
|
122
|
+
* @param {Index} index An index or list of indices (character positions)
|
113
123
|
* @param {string} replacement Replacement string
|
114
124
|
* @param {string} [defaultValue] Default value to be uses when resizing
|
115
125
|
* the string. is ' ' by default
|
package/lib/esm/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export var version = '10.
|
1
|
+
export var version = '10.3.0'; // Note: This file is automatically generated when building math.js.
|
2
2
|
// Changes made in this file will be overwritten.
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "mathjs",
|
3
|
-
"version": "10.
|
3
|
+
"version": "10.3.0",
|
4
4
|
"description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.",
|
5
5
|
"author": "Jos de Jong <wjosdejong@gmail.com> (https://github.com/josdejong)",
|
6
6
|
"homepage": "https://mathjs.org",
|
package/types/index.d.ts
CHANGED
@@ -1723,7 +1723,7 @@ declare namespace math {
|
|
1723
1723
|
/**
|
1724
1724
|
* Get or set a subset of a matrix or string.
|
1725
1725
|
* @param value An array, matrix, or string
|
1726
|
-
* @param index
|
1726
|
+
* @param index For each dimension, an index or list of indices to get or set.
|
1727
1727
|
* @param replacement An array, matrix, or scalar. If provided, the
|
1728
1728
|
* subset is replaced with replacement. If not provided, the subset is
|
1729
1729
|
* returned
|
@@ -3218,8 +3218,6 @@ declare namespace math {
|
|
3218
3218
|
): MathNode;
|
3219
3219
|
|
3220
3220
|
rules: SimplifyRule[];
|
3221
|
-
|
3222
|
-
simplifyCore(expr: MathNode): MathNode;
|
3223
3221
|
}
|
3224
3222
|
|
3225
3223
|
interface UnitDefinition {
|
@@ -3682,6 +3680,8 @@ declare namespace math {
|
|
3682
3680
|
*/
|
3683
3681
|
simplify(rules?: SimplifyRule[], scope?: object): MathJsChain;
|
3684
3682
|
|
3683
|
+
simplifyCore(expr: MathNode): MathNode;
|
3684
|
+
|
3685
3685
|
/**
|
3686
3686
|
* Calculate the Sparse Matrix LU decomposition with full pivoting.
|
3687
3687
|
* Sparse Matrix A is decomposed in two matrices (L, U) and two
|
@@ -4319,7 +4319,7 @@ declare namespace math {
|
|
4319
4319
|
|
4320
4320
|
/**
|
4321
4321
|
* Get or set a subset of a matrix or string.
|
4322
|
-
* @param index
|
4322
|
+
* @param index For each dimension, an index or list of indices to get or set
|
4323
4323
|
* @param replacement An array, matrix, or scalar. If provided, the
|
4324
4324
|
* subset is replaced with replacement. If not provided, the subset is
|
4325
4325
|
* returned
|