mathjs 9.4.0 → 9.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. package/HISTORY.md +39 -0
  2. package/README.md +1 -3
  3. package/docs/expressions/expression_trees.md +2 -1
  4. package/docs/expressions/parsing.md +1 -1
  5. package/docs/reference/functions/intersect.md +1 -1
  6. package/examples/advanced/custom_datatype.js +7 -4
  7. package/lib/browser/math.js +7 -7
  8. package/lib/browser/math.js.map +1 -1
  9. package/lib/cjs/entry/dependenciesAny/dependenciesEigs.generated.js +6 -9
  10. package/lib/cjs/entry/dependenciesAny/dependenciesIntersect.generated.js +3 -0
  11. package/lib/cjs/entry/impureFunctionsAny.generated.js +41 -41
  12. package/lib/cjs/entry/pureFunctionsAny.generated.js +128 -128
  13. package/lib/cjs/expression/node/ArrayNode.js +15 -15
  14. package/lib/cjs/expression/parse.js +1 -0
  15. package/lib/cjs/function/geometry/intersect.js +93 -58
  16. package/lib/cjs/function/matrix/eigs/complexEigs.js +168 -18
  17. package/lib/cjs/function/matrix/eigs.js +7 -9
  18. package/lib/cjs/header.js +2 -2
  19. package/lib/cjs/type/bignumber/BigNumber.js +3 -3
  20. package/lib/cjs/utils/is.js +13 -1
  21. package/lib/cjs/version.js +1 -1
  22. package/lib/esm/entry/dependenciesAny/dependenciesEigs.generated.js +4 -6
  23. package/lib/esm/entry/dependenciesAny/dependenciesIntersect.generated.js +2 -0
  24. package/lib/esm/entry/impureFunctionsAny.generated.js +38 -38
  25. package/lib/esm/entry/pureFunctionsAny.generated.js +107 -107
  26. package/lib/esm/expression/node/ArrayNode.js +16 -16
  27. package/lib/esm/expression/parse.js +1 -0
  28. package/lib/esm/function/geometry/intersect.js +91 -58
  29. package/lib/esm/function/matrix/eigs/complexEigs.js +152 -18
  30. package/lib/esm/function/matrix/eigs.js +7 -9
  31. package/lib/esm/type/bignumber/BigNumber.js +2 -3
  32. package/lib/esm/utils/is.js +13 -1
  33. package/lib/esm/version.js +1 -1
  34. package/package.json +22 -20
  35. package/types/index.d.ts +4772 -0
  36. package/types/index.ts +597 -0
  37. package/types/tsconfig.json +18 -0
  38. package/types/tslint.json +6 -0
@@ -0,0 +1,4772 @@
1
+ import { Decimal } from 'decimal.js';
2
+
3
+ declare const math: math.MathJsStatic;
4
+ export as namespace math;
5
+ export = math;
6
+
7
+ type NoLiteralType<T> =
8
+ T extends number ? number :
9
+ T extends string ? string :
10
+ T extends boolean ? boolean :
11
+ T;
12
+
13
+ declare namespace math {
14
+ type MathArray = number[] | number[][];
15
+ type MathType = number | BigNumber | Fraction | Complex | Unit | MathArray | Matrix;
16
+ type MathExpression = string | string[] | MathArray | Matrix;
17
+
18
+ type FactoryFunction<T> = (scope: any) => T;
19
+
20
+ // FactoryFunctionMap can be nested; all nested objects will be flattened
21
+ interface FactoryFunctionMap {
22
+ [key: string]: FactoryFunction<any> | FactoryFunctionMap;
23
+ }
24
+
25
+
26
+ /** Available options for parse */
27
+ interface ParseOptions {
28
+ /** a set of custom nodes */
29
+ nodes?: Record<string, MathNode>;
30
+ }
31
+ /**
32
+ * Parse an expression. Returns a node tree, which can be evaluated by
33
+ * invoking node.evaluate().
34
+ *
35
+ * Note the evaluating arbitrary expressions may involve security risks,
36
+ * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information.
37
+ *
38
+ * Syntax:
39
+ *
40
+ * math.parse(expr)
41
+ * math.parse(expr, options)
42
+ * math.parse([expr1, expr2, expr3, ...])
43
+ * math.parse([expr1, expr2, expr3, ...], options)
44
+ *
45
+ * Example:
46
+ *
47
+ * const node1 = math.parse('sqrt(3^2 + 4^2)')
48
+ * node1.compile().evaluate() // 5
49
+ *
50
+ * let scope = {a:3, b:4}
51
+ * const node2 = math.parse('a * b') // 12
52
+ * const code2 = node2.compile()
53
+ * code2.evaluate(scope) // 12
54
+ * scope.a = 5
55
+ * code2.evaluate(scope) // 20
56
+ *
57
+ * const nodes = math.parse(['a = 3', 'b = 4', 'a * b'])
58
+ * nodes[2].compile().evaluate() // 12
59
+ *
60
+ * See also:
61
+ *
62
+ * evaluate, compile
63
+ */
64
+ interface ParseFunction {
65
+ /**
66
+ * Parse an expression. Returns a node tree, which can be evaluated by
67
+ * invoking node.evaluate();
68
+ *
69
+ * @param expr Expression to be parsed
70
+ * @param options Available options
71
+ * @returns A node
72
+ */
73
+ (expr: MathExpression, options?: ParseOptions): MathNode;
74
+
75
+ /**
76
+ * Parse an expression. Returns a node tree, which can be evaluated by
77
+ * invoking node.evaluate();
78
+ *
79
+ * @param exprs Expressions to be parsed
80
+ * @param options Available options
81
+ * @returns An array of nodes
82
+ */
83
+ (exprs: MathExpression[], options?: ParseOptions): MathNode[];
84
+
85
+ /**
86
+ * Checks whether the current character `c` is a valid alpha character:
87
+ *
88
+ * - A latin letter (upper or lower case) Ascii: a-z, A-Z
89
+ * - An underscore Ascii: _
90
+ * - A dollar sign Ascii: $
91
+ * - A latin letter with accents Unicode: \u00C0 - \u02AF
92
+ * - A greek letter Unicode: \u0370 - \u03FF
93
+ * - A mathematical alphanumeric symbol Unicode: \u{1D400} - \u{1D7FF} excluding invalid code points
94
+ *
95
+ * The previous and next characters are needed to determine whether
96
+ * this character is part of a unicode surrogate pair.
97
+ *
98
+ * @param c Current character in the expression
99
+ * @param cPrev Previous character
100
+ * @param cNext Next character
101
+ */
102
+ isAlpha(c: string, cPrev: string, cNext: string): boolean;
103
+ /**
104
+ * Test whether a character is a valid latin, greek, or letter-like character
105
+ *
106
+ * @param c
107
+ */
108
+ isValidLatinOrGreek(c: string): boolean;
109
+ /**
110
+ * Test whether two given 16 bit characters form a surrogate pair of a
111
+ * unicode math symbol.
112
+ *
113
+ * https://unicode-table.com/en/
114
+ * https://www.wikiwand.com/en/Mathematical_operators_and_symbols_in_Unicode
115
+ *
116
+ * Note: In ES6 will be unicode aware:
117
+ * https://stackoverflow.com/questions/280712/javascript-unicode-regexes
118
+ * https://mathiasbynens.be/notes/es6-unicode-regex
119
+ *
120
+ * @param high
121
+ * @param low
122
+ */
123
+ isValidMathSymbol(high: string, low: string): boolean;
124
+ /**
125
+ * Check whether given character c is a white space character: space, tab, or enter
126
+ *
127
+ * @param c
128
+ * @param nestingLevel
129
+ */
130
+ isWhitespace(c: string, nestingLevel: number): boolean;
131
+ /**
132
+ * Test whether the character c is a decimal mark (dot).
133
+ * This is the case when it's not the start of a delimiter '.*', './', or '.^'
134
+ *
135
+ * @param c
136
+ * @param cNext
137
+ */
138
+ isDecimalMark(c: string, cNext: string): boolean;
139
+ /**
140
+ * checks if the given char c is a digit or dot
141
+ *
142
+ * @param c a string with one character
143
+ */
144
+ isDigitDot(c: string): boolean;
145
+ /**
146
+ * checks if the given char c is a digit
147
+ *
148
+ * @param c a string with one character
149
+ */
150
+ isDigit(c: string): boolean;
151
+ /**
152
+ * checks if the given char c is a hex digit
153
+ *
154
+ * @param c a string with one character
155
+ */
156
+ isHexDigit(c: string): boolean;
157
+ }
158
+
159
+ type MathJsFunctionName = keyof MathJsStatic;
160
+
161
+ interface MathJsStatic extends FactoryDependencies {
162
+ e: number;
163
+ pi: number;
164
+ i: number;
165
+ Infinity: number;
166
+ LN2: number;
167
+ LN10: number;
168
+ LOG2E: number;
169
+ LOG10E: number;
170
+ NaN: number;
171
+ phi: number;
172
+ SQRT1_2: number;
173
+ SQRT2: number;
174
+ tau: number;
175
+
176
+ /**
177
+ * If null were to be included in this interface, it would be
178
+ * auto-suggested as an import in VSCode. This causes issues because
179
+ * `null` is not a valid label.
180
+ *
181
+ * @see https://github.com/josdejong/mathjs/issues/2019
182
+ */
183
+ // null: number;
184
+
185
+ uninitialized: any;
186
+ version: string;
187
+
188
+ expression: MathNode;
189
+ json: MathJsJson;
190
+
191
+ /*************************************************************************
192
+ * Core functions
193
+ ************************************************************************/
194
+
195
+ /**
196
+ * Set configuration options for math.js, and get current options. Will
197
+ * emit a ‘config’ event, with arguments (curr, prev, changes).
198
+ * @param options Available options: {number} epsilon Minimum relative
199
+ * difference between two compared values, used by all comparison
200
+ * functions. {string} matrix A string ‘Matrix’ (default) or ‘Array’.
201
+ * {string} number A string ‘number’ (default), ‘BigNumber’, or
202
+ * ‘Fraction’ {number} precision The number of significant digits for
203
+ * BigNumbers. Not applicable for Numbers. {string} parenthesis How to
204
+ * display parentheses in LaTeX and string output. {string} randomSeed
205
+ * Random seed for seeded pseudo random number generator. Set to null to
206
+ * randomly seed.
207
+ * @returns Returns the current configuration
208
+ */
209
+ config: (options: ConfigOptions) => ConfigOptions;
210
+ /**
211
+ * Create a typed-function which checks the types of the arguments and
212
+ * can match them against multiple provided signatures. The
213
+ * typed-function automatically converts inputs in order to find a
214
+ * matching signature. Typed functions throw informative errors in case
215
+ * of wrong input arguments.
216
+ * @param name Optional name for the typed-function
217
+ * @param signatures Object with one or multiple function signatures
218
+ * @returns The created typed-function.
219
+ */
220
+ typed: (name: string, signatures: Record<string, (...args: any[]) => any>) => (...args: any[]) => any;
221
+
222
+ /*************************************************************************
223
+ * Construction functions
224
+ ************************************************************************/
225
+
226
+ /**
227
+ * Create a BigNumber, which can store numbers with arbitrary precision.
228
+ * When a matrix is provided, all elements will be converted to
229
+ * BigNumber.
230
+ * @param x Value for the big number, 0 by default.
231
+ * @returns The created bignumber
232
+ */
233
+ bignumber(x?: number | string | Fraction | BigNumber | MathArray | Matrix | boolean | Fraction | null): BigNumber;
234
+
235
+ /**
236
+ * Create a boolean or convert a string or number to a boolean. In case
237
+ * of a number, true is returned for non-zero numbers, and false in case
238
+ * of zero. Strings can be 'true' or 'false', or can contain a number.
239
+ * When value is a matrix, all elements will be converted to boolean.
240
+ * @param x A value of any type
241
+ * @returns The boolean value
242
+ */
243
+ boolean(x: string | number | boolean | MathArray | Matrix | null): boolean | MathArray | Matrix;
244
+
245
+ /**
246
+ * Wrap any value in a chain, allowing to perform chained operations on
247
+ * the value. All methods available in the math.js library can be called
248
+ * upon the chain, and then will be evaluated with the value itself as
249
+ * first argument. The chain can be closed by executing chain.done(),
250
+ * which returns the final value. The chain has a number of special
251
+ * functions: done() Finalize the chain and return the chain's value.
252
+ * valueOf() The same as done() toString() Executes math.format() onto
253
+ * the chain's value, returning a string representation of the value.
254
+ * @param value A value of any type on which to start a chained
255
+ * operation.
256
+ * @returns The created chain
257
+ */
258
+ chain(value?: any): MathJsChain;
259
+
260
+ /**
261
+ * Create a complex value or convert a value to a complex value.
262
+ * @param args Arguments specifying the real and imaginary part of the
263
+ * complex number
264
+ * @returns Returns a complex value
265
+ */
266
+ complex(arg?: Complex | string | PolarCoordinates): Complex;
267
+ complex(arg?: MathArray | Matrix): MathArray | Matrix;
268
+ /**
269
+ * @param re Argument specifying the real part of the complex number
270
+ * @param im Argument specifying the imaginary part of the complex
271
+ * number
272
+ * @returns Returns a complex value
273
+ */
274
+ complex(re: number, im: number): Complex;
275
+
276
+ /**
277
+ * Create a user-defined unit and register it with the Unit type.
278
+ * @param name The name of the new unit. Must be unique. Example: ‘knot’
279
+ * @param definition Definition of the unit in terms of existing units.
280
+ * For example, ‘0.514444444 m / s’.
281
+ * @param options (optional) An object containing any of the following
282
+ * properties:</br>- prefixes {string} “none”, “short”, “long”,
283
+ * “binary_short”, or “binary_long”. The default is “none”.</br>-
284
+ * aliases {Array} Array of strings. Example: [‘knots’, ‘kt’,
285
+ * ‘kts’]</br>- offset {Numeric} An offset to apply when converting from
286
+ * the unit. For example, the offset for celsius is 273.15. Default is
287
+ * 0.
288
+ * @returns The new unit
289
+ */
290
+ createUnit(name: string, definition?: string | UnitDefinition, options?: CreateUnitOptions): Unit;
291
+ /**
292
+ * Create a user-defined unit and register it with the Unit type.
293
+ * @param units Definition of the unit
294
+ * @param options
295
+ * @returns The new unit
296
+ */
297
+ createUnit(units: Record<string, string | UnitDefinition>, options?: CreateUnitOptions): Unit;
298
+
299
+ /**
300
+ * Create a fraction convert a value to a fraction.
301
+ * @param args Arguments specifying the numerator and denominator of the
302
+ * fraction
303
+ * @returns Returns a fraction
304
+ */
305
+ fraction(args: Fraction | MathArray | Matrix): Fraction | MathArray | Matrix;
306
+ /**
307
+ * @param numerator Argument specifying the numerator of the fraction
308
+ * @param denominator Argument specifying the denominator of the
309
+ * fraction
310
+ * @returns Returns a fraction
311
+ */
312
+ fraction(
313
+ numerator: number | string | MathArray | Matrix,
314
+ denominator?: number | string | MathArray | Matrix
315
+ ): Fraction | MathArray | Matrix;
316
+
317
+ /**
318
+ * Create an index. An Index can store ranges having start, step, and
319
+ * end for multiple dimensions. Matrix.get, Matrix.set, and math.subset
320
+ * accept an Index as input.
321
+ * @param ranges Zero or more ranges or numbers.
322
+ * @returns Returns the created index
323
+ */
324
+ index(...ranges: any[]): Index;
325
+
326
+ /**
327
+ * Create a Matrix. The function creates a new math.type.Matrix object
328
+ * from an Array. A Matrix has utility functions to manipulate the data
329
+ * in the matrix, like getting the size and getting or setting values in
330
+ * the matrix. Supported storage formats are 'dense' and 'sparse'.
331
+ * @param format The Matrix storage format
332
+ * @returns The created Matrix
333
+ */
334
+ matrix(format?: 'sparse' | 'dense'): Matrix;
335
+ /**
336
+ * @param data A multi dimensional array
337
+ * @param format The Matrix storage format
338
+ * @param dataType The Matrix data type
339
+ * @returns The created Matrix
340
+ */
341
+ matrix(data: MathArray | Matrix, format?: 'sparse' | 'dense', dataType?: string): Matrix;
342
+
343
+ /**
344
+ * Create a number or convert a string, boolean, or unit to a number.
345
+ * When value is a matrix, all elements will be converted to number.
346
+ * @param value Value to be converted
347
+ * @returns The created number
348
+ */
349
+ number(value?: string | number | BigNumber | Fraction | boolean | MathArray | Matrix | Unit | null): number | MathArray | Matrix;
350
+ /**
351
+ * @param value Value to be converted
352
+ * @param valuelessUnit A valueless unit, used to convert a unit to a
353
+ * number
354
+ * @returns The created number
355
+ */
356
+ number(unit: Unit, valuelessUnit: Unit | string): number;
357
+
358
+ /**
359
+ * Create a Sparse Matrix. The function creates a new math.type.Matrix
360
+ * object from an Array. A Matrix has utility functions to manipulate
361
+ * the data in the matrix, like getting the size and getting or setting
362
+ * values in the matrix.
363
+ * @param data A two dimensional array
364
+ * @param dataType Sparse Matrix data type
365
+ * @returns The created matrix
366
+ */
367
+ sparse(data?: MathArray | Matrix, dataType?: string): Matrix;
368
+
369
+ /**
370
+ * Split a unit in an array of units whose sum is equal to the original
371
+ * unit.
372
+ * @param unit A unit to be split
373
+ * @param parts An array of strings or valueless units
374
+ * @returns An array of units
375
+ */
376
+ splitUnit(unit: Unit, parts: Unit[]): Unit[];
377
+
378
+ /**
379
+ * Create a string or convert any object into a string. Elements of
380
+ * Arrays and Matrices are processed element wise.
381
+ * @param value A value to convert to a string
382
+ * @returns The created string
383
+ */
384
+ string(value: MathType | null): string | MathArray | Matrix;
385
+
386
+ /**
387
+ * Create a unit. Depending on the passed arguments, the function will
388
+ * create and return a new math.type.Unit object. When a matrix is
389
+ * provided, all elements will be converted to units.
390
+ * @param unit The unit to be created
391
+ * @returns The created unit
392
+ */
393
+ unit(unit: string): Unit;
394
+ /**
395
+ * @param value The value of the unit to be created
396
+ * @param unit The unit to be created
397
+ * @returns The created unit
398
+ */
399
+ unit(value: number | MathArray | Matrix, unit: string): Unit;
400
+
401
+ /*************************************************************************
402
+ * Expression functions
403
+ ************************************************************************/
404
+
405
+ /**
406
+ * Parse and compile an expression. Returns a an object with a function
407
+ * evaluate([scope]) to evaluate the compiled expression.
408
+ * @param expr The expression to be compiled
409
+ * @returns An object with the compiled expression
410
+ */
411
+ compile(expr: MathExpression): EvalFunction;
412
+ /**
413
+ * @param exprs The expressions to be compiled
414
+ * @returns An array of objects with the compiled expressions
415
+ */
416
+ compile(exprs: MathExpression[]): EvalFunction[];
417
+
418
+ /**
419
+ * Evaluate an expression.
420
+ * @param expr The expression to be evaluated
421
+ * @param scope Scope to read/write variables
422
+ * @returns The result of the expression
423
+ */
424
+ evaluate(expr: MathExpression | MathExpression[] | Matrix, scope?: object): any;
425
+
426
+ /**
427
+ * Retrieve help on a function or data type. Help files are retrieved
428
+ * from the documentation in math.expression.docs.
429
+ * @param search A function or function name for which to get help
430
+ * @returns A help object
431
+ */
432
+ help(search: () => any): Help;
433
+
434
+ /**
435
+ * Parse an expression. Returns a node tree, which can be evaluated by
436
+ * invoking node.evaluate();
437
+ */
438
+ parse: ParseFunction;
439
+
440
+ /**
441
+ * Create a parser. The function creates a new math.expression.Parser
442
+ * object.
443
+ * @returns A Parser object
444
+ */
445
+ parser(): Parser;
446
+
447
+ /*************************************************************************
448
+ * Algebra functions
449
+ ************************************************************************/
450
+ /**
451
+ * @param expr The expression to differentiate
452
+ * @param variable The variable over which to differentiate
453
+ * @param options There is one option available, simplify, which is true
454
+ * by default. When false, output will not be simplified.
455
+ * @returns The derivative of expr
456
+ */
457
+ derivative(expr: MathNode | string, variable: MathNode | string, options?: { simplify: boolean }): MathNode;
458
+
459
+ /**
460
+ * Solves the linear equation system by forwards substitution. Matrix
461
+ * must be a lower triangular matrix.
462
+ * @param L A N x N matrix or array (L)
463
+ * @param b A column vector with the b values
464
+ * @returns A column vector with the linear system solution (x)
465
+ */
466
+ lsolve(L: Matrix | MathArray, b: Matrix | MathArray): Matrix | MathArray;
467
+
468
+ /**
469
+ * Calculate the Matrix LU decomposition with partial pivoting. Matrix A
470
+ * is decomposed in two matrices (L, U) and a row permutation vector p
471
+ * where A[p,:] = L * U
472
+ * @param A A two dimensional matrix or array for which to get the LUP
473
+ * decomposition.
474
+ * @returns The lower triangular matrix, the upper triangular matrix and
475
+ * the permutation matrix.
476
+ */
477
+ lup(A?: Matrix | MathArray): { L: MathArray | Matrix; U: MathArray | Matrix; P: number[] };
478
+
479
+ /**
480
+ * Solves the linear system A * x = b where A is an [n x n] matrix and b
481
+ * is a [n] column vector.
482
+ * @param A Invertible Matrix or the Matrix LU decomposition
483
+ * @param b Column Vector
484
+ * @param order The Symbolic Ordering and Analysis order, see slu for
485
+ * details. Matrix must be a SparseMatrix
486
+ * @param threshold Partial pivoting threshold (1 for partial pivoting),
487
+ * see slu for details. Matrix must be a SparseMatrix.
488
+ * @returns Column vector with the solution to the linear system A * x =
489
+ * b
490
+ */
491
+ lusolve(A: Matrix | MathArray | number, b: Matrix | MathArray, order?: number, threshold?: number): Matrix | MathArray;
492
+
493
+ /**
494
+ * Calculate the Matrix QR decomposition. Matrix A is decomposed in two
495
+ * matrices (Q, R) where Q is an orthogonal matrix and R is an upper
496
+ * triangular matrix.
497
+ * @param A A two dimensional matrix or array for which to get the QR
498
+ * decomposition.
499
+ * @returns Q: the orthogonal matrix and R: the upper triangular matrix
500
+ */
501
+ qr(A: Matrix | MathArray): { Q: MathArray | Matrix; R: MathArray | Matrix };
502
+
503
+ /**
504
+ * Transform a rationalizable expression in a rational fraction. If
505
+ * rational fraction is one variable polynomial then converts the
506
+ * numerator and denominator in canonical form, with decreasing
507
+ * exponents, returning the coefficients of numerator.
508
+ * @param expr The expression to check if is a polynomial expression
509
+ * @param optional scope of expression or true for already evaluated
510
+ * rational expression at input
511
+ * @param detailed optional True if return an object, false if return
512
+ * expression node (default)
513
+ * @returns The rational polynomial of expr
514
+ */
515
+ rationalize(
516
+ expr: MathNode | string,
517
+ optional?: object | boolean,
518
+ detailed?: true
519
+ ): { expression: MathNode | string; variables: string[]; coefficients: MathType[] };
520
+ rationalize(expr: MathNode | string, optional?: object | boolean, detailed?: false): MathNode;
521
+
522
+ /**
523
+ * Simplify an expression tree.
524
+ * @param expr The expression to be simplified
525
+ * @param [rules] (optional) A list of rules are applied to an expression, repeating
526
+ * over the list until no further changes are made. It’s possible to
527
+ * pass a custom set of rules to the function as second argument. A rule
528
+ * can be specified as an object, string, or function.
529
+ * @param [scope] (optional) Scope to variables
530
+ * @param [options] (optional) An object with simplify options
531
+ * @returns Returns the simplified form of expr
532
+ */
533
+ simplify(
534
+ expr: MathNode | string,
535
+ rules?: Array<{ l: string; r: string } | string | ((node: MathNode) => MathNode)>,
536
+ scope?: object,
537
+ options?: SimplifyOptions,
538
+ ): MathNode;
539
+ simplify(expr: MathNode | string, scope?: object, options?: SimplifyOptions): MathNode;
540
+
541
+ /**
542
+ * Calculate the Sparse Matrix LU decomposition with full pivoting.
543
+ * Sparse Matrix A is decomposed in two matrices (L, U) and two
544
+ * permutation vectors (pinv, q) where P * A * Q = L * U
545
+ * @param A A two dimensional sparse matrix for which to get the LU
546
+ * decomposition.
547
+ * @param order The Symbolic Ordering and Analysis order: 0 - Natural
548
+ * ordering, no permutation vector q is returned 1 - Matrix must be
549
+ * square, symbolic ordering and analisis is performed on M = A + A' 2 -
550
+ * Symbolic ordering and analysis is performed on M = A' * A. Dense
551
+ * columns from A' are dropped, A recreated from A'. This is appropriate
552
+ * for LU factorization of non-symmetric matrices. 3 - Symbolic ordering
553
+ * and analysis is performed on M = A' * A. This is best used for LU
554
+ * factorization is matrix M has no dense rows. A dense row is a row
555
+ * with more than 10*sqr(columns) entries.
556
+ * @param threshold Partial pivoting threshold (1 for partial pivoting)
557
+ * @returns The lower triangular matrix, the upper triangular matrix and
558
+ * the permutation vectors.
559
+ */
560
+ slu(A: Matrix, order: number, threshold: number): object;
561
+
562
+ /**
563
+ * Solves the linear equation system by backward substitution. Matrix
564
+ * must be an upper triangular matrix. U * x = b
565
+ * @param U A N x N matrix or array (U)
566
+ * @param b A column vector with the b values
567
+ * @returns A column vector with the linear system solution (x)
568
+ */
569
+ usolve(U: Matrix | MathArray, b: Matrix | MathArray): Matrix | MathArray;
570
+
571
+ /*************************************************************************
572
+ * Arithmetic functions
573
+ ************************************************************************/
574
+
575
+ /**
576
+ * Calculate the absolute value of a number. For matrices, the function
577
+ * is evaluated element wise.
578
+ * @param x A number or matrix for which to get the absolute value
579
+ * @returns Absolute value of x
580
+ */
581
+ abs(x: number): number;
582
+ abs(x: BigNumber): BigNumber;
583
+ abs(x: Fraction): Fraction;
584
+ abs(x: Complex): Complex;
585
+ abs(x: MathArray): MathArray;
586
+ abs(x: Matrix): Matrix;
587
+ abs(x: Unit): Unit;
588
+
589
+ /**
590
+ * Add two values, x + y. For matrices, the function is evaluated
591
+ * element wise.
592
+ * @param x First value to add
593
+ * @param y Second value to add
594
+ * @returns Sum of x and y
595
+ */
596
+ add(x: MathType, y: MathType): MathType;
597
+
598
+ /**
599
+ * Calculate the cubic root of a value. For matrices, the function is
600
+ * evaluated element wise.
601
+ * @param x Value for which to calculate the cubic root.
602
+ * @param allRoots Optional, false by default. Only applicable when x is
603
+ * a number or complex number. If true, all complex roots are returned,
604
+ * if false (default) the principal root is returned.
605
+ * @returns Returns the cubic root of x
606
+ */
607
+ cbrt(x: number, allRoots?: boolean): number;
608
+ cbrt(x: BigNumber, allRoots?: boolean): BigNumber;
609
+ cbrt(x: Fraction, allRoots?: boolean): Fraction;
610
+ cbrt(x: Complex, allRoots?: boolean): Complex;
611
+ cbrt(x: MathArray, allRoots?: boolean): MathArray;
612
+ cbrt(x: Matrix, allRoots?: boolean): Matrix;
613
+ cbrt(x: Unit, allRoots?: boolean): Unit;
614
+
615
+ /**
616
+ * Round a value towards plus infinity If x is complex, both real and
617
+ * imaginary part are rounded towards plus infinity. For matrices, the
618
+ * function is evaluated element wise.
619
+ * @param x Number to be rounded
620
+ * @returns Rounded value
621
+ */
622
+ ceil(x: number): number;
623
+ ceil(x: BigNumber): BigNumber;
624
+ ceil(x: Fraction): Fraction;
625
+ ceil(x: Complex): Complex;
626
+ ceil(x: MathArray): MathArray;
627
+ ceil(x: Matrix): Matrix;
628
+ ceil(x: Unit): Unit;
629
+
630
+ /**
631
+ * Compute the cube of a value, x * x * x. For matrices, the function is
632
+ * evaluated element wise.
633
+ * @param x Number for which to calculate the cube
634
+ * @returns Cube of x
635
+ */
636
+ cube(x: number): number;
637
+ cube(x: BigNumber): BigNumber;
638
+ cube(x: Fraction): Fraction;
639
+ cube(x: Complex): Complex;
640
+ cube(x: MathArray): MathArray;
641
+ cube(x: Matrix): Matrix;
642
+ cube(x: Unit): Unit;
643
+
644
+ /**
645
+ * Divide two values, x / y. To divide matrices, x is multiplied with
646
+ * the inverse of y: x * inv(y).
647
+ * @param x Numerator
648
+ * @param y Denominator
649
+ * @returns Quotient, x / y
650
+ */
651
+ divide(x: Unit, y: Unit): Unit | number;
652
+ divide(x: number, y: number): number;
653
+ divide(x: MathType, y: MathType): MathType;
654
+
655
+ /**
656
+ * Divide two matrices element wise. The function accepts both matrices
657
+ * and scalar values.
658
+ * @param x Numerator
659
+ * @param y Denominator
660
+ * @returns Quotient, x ./ y
661
+ */
662
+ dotDivide(x: MathType, y: MathType): MathType;
663
+
664
+ /**
665
+ * Multiply two matrices element wise. The function accepts both
666
+ * matrices and scalar values.
667
+ * @param x Left hand value
668
+ * @param y Right hand value
669
+ * @returns Multiplication of x and y
670
+ */
671
+ dotMultiply(x: MathType, y: MathType): MathType;
672
+
673
+ /**
674
+ * Calculates the power of x to y element wise.
675
+ * @param x The base
676
+ * @param y The exponent
677
+ * @returns The value of x to the power y
678
+ */
679
+ dotPow(x: MathType, y: MathType): MathType;
680
+
681
+ /**
682
+ * Calculate the exponent of a value. For matrices, the function is
683
+ * evaluated element wise.
684
+ * @param x A number or matrix to exponentiate
685
+ * @returns Exponent of x
686
+ */
687
+ exp(x: number): number;
688
+ exp(x: BigNumber): BigNumber;
689
+ exp(x: Complex): Complex;
690
+ exp(x: MathArray): MathArray;
691
+ exp(x: Matrix): Matrix;
692
+
693
+ /**
694
+ * Calculate the value of subtracting 1 from the exponential value. For
695
+ * matrices, the function is evaluated element wise.
696
+ * @param x A number or matrix to apply expm1
697
+ * @returns Exponent of x
698
+ */
699
+ expm1(x: number): number;
700
+ expm1(x: BigNumber): BigNumber;
701
+ expm1(x: Complex): Complex;
702
+ expm1(x: MathArray): MathArray;
703
+ expm1(x: Matrix): Matrix;
704
+
705
+ /**
706
+ * Round a value towards zero. For matrices, the function is evaluated
707
+ * element wise.
708
+ * @param x Number to be rounded
709
+ * @returns Rounded value
710
+ */
711
+ fix(x: number): number;
712
+ fix(x: BigNumber): BigNumber;
713
+ fix(x: Fraction): Fraction;
714
+ fix(x: Complex): Complex;
715
+ fix(x: MathArray): MathArray;
716
+ fix(x: Matrix): Matrix;
717
+
718
+ /**
719
+ * Round a value towards minus infinity. For matrices, the function is
720
+ * evaluated element wise.
721
+ * @param Number to be rounded
722
+ * @returns Rounded value
723
+ */
724
+ floor(x: number): number;
725
+ floor(x: BigNumber): BigNumber;
726
+ floor(x: Fraction): Fraction;
727
+ floor(x: Complex): Complex;
728
+ floor(x: MathArray): MathArray;
729
+ floor(x: Matrix): Matrix;
730
+
731
+ /**
732
+ * Round a value towards minus infinity. For matrices, the function is
733
+ * evaluated element wise.
734
+ * @param x Number to be rounded
735
+ * @param n Number of decimals Default value: 0.
736
+ * @returns Rounded value
737
+ */
738
+ floor(
739
+ x: number | BigNumber | Fraction | Complex | MathArray | Matrix,
740
+ n: number | BigNumber | MathArray
741
+ ): number | BigNumber | Fraction | Complex | MathArray | Matrix;
742
+
743
+ /**
744
+ * Calculate the greatest common divisor for two or more values or
745
+ * arrays. For matrices, the function is evaluated element wise.
746
+ * @param args Two or more integer numbers
747
+ * @returns The greatest common divisor
748
+ */
749
+ gcd(...args: number[]): number;
750
+ gcd(...args: BigNumber[]): BigNumber;
751
+ gcd(...args: Fraction[]): Fraction;
752
+ gcd(...args: MathArray[]): MathArray;
753
+ gcd(...args: Matrix[]): Matrix;
754
+
755
+ /**
756
+ * Calculate the hypotenusa of a list with values. The hypotenusa is
757
+ * defined as: hypot(a, b, c, ...) = sqrt(a^2 + b^2 + c^2 + ...) For
758
+ * matrix input, the hypotenusa is calculated for all values in the
759
+ * matrix.
760
+ * @param args A list with numeric values or an Array or Matrix. Matrix
761
+ * and Array input is flattened and returns a single number for the
762
+ * whole matrix.
763
+ * @returns Returns the hypothenuse of the input values.
764
+ */
765
+ hypot(...args: number[]): number;
766
+ hypot(...args: BigNumber[]): BigNumber;
767
+
768
+ /**
769
+ * Calculate the least common multiple for two or more values or arrays.
770
+ * lcm is defined as: lcm(a, b) = abs(a * b) / gcd(a, b) For matrices,
771
+ * the function is evaluated element wise.
772
+ * @param a An integer number
773
+ * @param b An integer number
774
+ * @returns The least common multiple
775
+ */
776
+ lcm(a: number, b: number): number;
777
+ lcm(a: BigNumber, b: BigNumber): BigNumber;
778
+ lcm(a: MathArray, b: MathArray): MathArray;
779
+ lcm(a: Matrix, b: Matrix): Matrix;
780
+
781
+ /**
782
+ * Calculate the logarithm of a value. For matrices, the function is
783
+ * evaluated element wise.
784
+ * @param x Value for which to calculate the logarithm.
785
+ * @param base Optional base for the logarithm. If not provided, the
786
+ * natural logarithm of x is calculated. Default value: e.
787
+ * @returns Returns the logarithm of x
788
+ */
789
+ log<T extends number | BigNumber | Complex | MathArray | Matrix>(x: T, base?: number | BigNumber | Complex): NoLiteralType<T>;
790
+
791
+ /**
792
+ * Calculate the 10-base of a value. This is the same as calculating
793
+ * log(x, 10). For matrices, the function is evaluated element wise.
794
+ * @param x Value for which to calculate the logarithm.
795
+ * @returns Returns the 10-base logarithm of x
796
+ */
797
+ log10(x: number): number;
798
+ log10(x: BigNumber): BigNumber;
799
+ log10(x: Complex): Complex;
800
+ log10(x: MathArray): MathArray;
801
+ log10(x: Matrix): Matrix;
802
+
803
+ /**
804
+ * Calculate the logarithm of a value+1. For matrices, the function is
805
+ * evaluated element wise.
806
+ * @param x Value for which to calculate the logarithm.
807
+ * @returns Returns the logarithm of x+1
808
+ */
809
+ log1p(x: number, base?: number | BigNumber | Complex): number;
810
+ log1p(x: BigNumber, base?: number | BigNumber | Complex): BigNumber;
811
+ log1p(x: Complex, base?: number | BigNumber | Complex): Complex;
812
+ log1p(x: MathArray, base?: number | BigNumber | Complex): MathArray;
813
+ log1p(x: Matrix, base?: number | BigNumber | Complex): Matrix;
814
+
815
+ /**
816
+ * Calculate the 2-base of a value. This is the same as calculating
817
+ * log(x, 2). For matrices, the function is evaluated element wise.
818
+ * @param x Value for which to calculate the logarithm.
819
+ * @returns Returns the 2-base logarithm of x
820
+ */
821
+ log2(x: number): number;
822
+ log2(x: BigNumber): BigNumber;
823
+ log2(x: Complex): Complex;
824
+ log2(x: MathArray): MathArray;
825
+ log2(x: Matrix): Matrix;
826
+
827
+ /**
828
+ * Calculates the modulus, the remainder of an integer division. For
829
+ * matrices, the function is evaluated element wise. The modulus is
830
+ * defined as: x - y * floor(x / y)
831
+ * @see http://en.wikipedia.org/wiki/Modulo_operation.
832
+ * @param x Dividend
833
+ * @param y Divisor
834
+ * @returns Returns the remainder of x divided by y
835
+ */
836
+ mod<T extends number | BigNumber | Fraction | MathArray | Matrix>(
837
+ x: T,
838
+ y: number | BigNumber | Fraction | MathArray | Matrix
839
+ ): NoLiteralType<T>;
840
+
841
+ /**
842
+ * Multiply two values, x * y. The result is squeezed. For matrices, the
843
+ * matrix product is calculated.
844
+ * @param x The first value to multiply
845
+ * @param y The second value to multiply
846
+ * @returns Multiplication of x and y
847
+ */
848
+ multiply<T extends Matrix | MathArray>(x: T, y: MathType): T;
849
+ multiply(x: Unit, y: Unit): Unit;
850
+ multiply(x: number, y: number): number;
851
+ multiply(x: MathType, y: MathType): MathType;
852
+
853
+ /**
854
+ * Calculate the norm of a number, vector or matrix. The second
855
+ * parameter p is optional. If not provided, it defaults to 2.
856
+ * @param x Value for which to calculate the norm
857
+ * @param p Vector space. Supported numbers include Infinity and
858
+ * -Infinity. Supported strings are: 'inf', '-inf', and 'fro' (The
859
+ * Frobenius norm) Default value: 2.
860
+ * @returns the p-norm
861
+ */
862
+ norm(x: number | BigNumber | Complex | MathArray | Matrix, p?: number | BigNumber | string): number | BigNumber;
863
+
864
+ /**
865
+ * Calculate the nth root of a value. The principal nth root of a
866
+ * positive real number A, is the positive real solution of the equation
867
+ * x^root = A For matrices, the function is evaluated element wise.
868
+ * @param a Value for which to calculate the nth root
869
+ * @param root The root. Default value: 2.
870
+ * @return The nth root of a
871
+ */
872
+ nthRoot(a: number | BigNumber | MathArray | Matrix | Complex, root?: number | BigNumber): number | Complex | MathArray | Matrix;
873
+
874
+ /**
875
+ * Calculates the power of x to y, x ^ y. Matrix exponentiation is
876
+ * supported for square matrices x, and positive integer exponents y.
877
+ * @param x The base
878
+ * @param y The exponent
879
+ * @returns x to the power y
880
+ */
881
+ pow(x: MathType, y: number | BigNumber | Complex): MathType;
882
+
883
+ /**
884
+ * Round a value towards the nearest integer. For matrices, the function
885
+ * is evaluated element wise.
886
+ * @param x Number to be rounded
887
+ * @param n Number of decimals Default value: 0.
888
+ * @returns Rounded value of x
889
+ */
890
+ round<T extends number | BigNumber | Fraction | Complex | MathArray | Matrix>(
891
+ x: T,
892
+ n?: number | BigNumber | MathArray
893
+ ): NoLiteralType<T>;
894
+
895
+ /**
896
+ * Compute the sign of a value. The sign of a value x is: 1 when x > 1
897
+ * -1 when x < 0 0 when x == 0 For matrices, the function is evaluated
898
+ * element wise.
899
+ * @param x The number for which to determine the sign
900
+ * @returns The sign of x
901
+ */
902
+ sign(x: number): number;
903
+ sign(x: BigNumber): BigNumber;
904
+ sign(x: Fraction): Fraction;
905
+ sign(x: Complex): Complex;
906
+ sign(x: MathArray): MathArray;
907
+ sign(x: Matrix): Matrix;
908
+ sign(x: Unit): Unit;
909
+
910
+ /**
911
+ * Calculate the square root of a value. For matrices, the function is
912
+ * evaluated element wise.
913
+ * @param x Value for which to calculate the square root
914
+ * @returns Returns the square root of x
915
+ */
916
+ sqrt(x: number): number;
917
+ sqrt(x: BigNumber): BigNumber;
918
+ sqrt(x: Complex): Complex;
919
+ sqrt(x: MathArray): MathArray;
920
+ sqrt(x: Matrix): Matrix;
921
+ sqrt(x: Unit): Unit;
922
+
923
+ /**
924
+ * Compute the square of a value, x * x. For matrices, the function is
925
+ * evaluated element wise.
926
+ * @param x Number for which to calculate the square
927
+ * @returns Squared value
928
+ */
929
+ square(x: number): number;
930
+ square(x: BigNumber): BigNumber;
931
+ square(x: Fraction): Fraction;
932
+ square(x: Complex): Complex;
933
+ square(x: MathArray): MathArray;
934
+ square(x: Matrix): Matrix;
935
+ square(x: Unit): Unit;
936
+
937
+ /**
938
+ * Subtract two values, x - y. For matrices, the function is evaluated
939
+ * element wise.
940
+ * @param x Initial value
941
+ * @param y Value to subtract from x
942
+ * @returns Subtraction of x and y
943
+ */
944
+ subtract(x: MathType, y: MathType): MathType;
945
+
946
+ /**
947
+ * Inverse the sign of a value, apply a unary minus operation. For
948
+ * matrices, the function is evaluated element wise. Boolean values and
949
+ * strings will be converted to a number. For complex numbers, both real
950
+ * and complex value are inverted.
951
+ * @param x Number to be inverted
952
+ * @returns Retursn the value with inverted sign
953
+ */
954
+ unaryMinus(x: number): number;
955
+ unaryMinus(x: BigNumber): BigNumber;
956
+ unaryMinus(x: Fraction): Fraction;
957
+ unaryMinus(x: Complex): Complex;
958
+ unaryMinus(x: MathArray): MathArray;
959
+ unaryMinus(x: Matrix): Matrix;
960
+ unaryMinus(x: Unit): Unit;
961
+
962
+ /**
963
+ * Unary plus operation. Boolean values and strings will be converted to
964
+ * a number, numeric values will be returned as is. For matrices, the
965
+ * function is evaluated element wise.
966
+ * @param x Input value
967
+ * @returns Returns the input value when numeric, converts to a number
968
+ * when input is non-numeric.
969
+ */
970
+ unaryPlus(x: number): number;
971
+ unaryPlus(x: BigNumber): BigNumber;
972
+ unaryPlus(x: Fraction): Fraction;
973
+ unaryPlus(x: string): string;
974
+ unaryPlus(x: Complex): Complex;
975
+ unaryPlus(x: MathArray): MathArray;
976
+ unaryPlus(x: Matrix): Matrix;
977
+ unaryPlus(x: Unit): Unit;
978
+
979
+ /**
980
+ * Calculate the extended greatest common divisor for two values. See
981
+ * http://en.wikipedia.org/wiki/Extended_Euclidean_algorithm.
982
+ * @param a An integer number
983
+ * @param b An integer number
984
+ * @returns Returns an array containing 3 integers [div, m, n] where div
985
+ * = gcd(a, b) and a*m + b*n = div
986
+ */
987
+ xgcd(a: number | BigNumber, b: number | BigNumber): MathArray;
988
+
989
+ /*************************************************************************
990
+ * Bitwise functions
991
+ ************************************************************************/
992
+
993
+ /**
994
+ * Bitwise AND two values, x & y. For matrices, the function is
995
+ * evaluated element wise.
996
+ * @param x First value to and
997
+ * @param y Second value to and
998
+ * @returns AND of x and y
999
+ */
1000
+ bitAnd<T extends number | BigNumber | MathArray | Matrix>(x: T, y: number | BigNumber | MathArray | Matrix): NoLiteralType<T>;
1001
+
1002
+ /**
1003
+ * Bitwise NOT value, ~x. For matrices, the function is evaluated
1004
+ * element wise. For units, the function is evaluated on the best prefix
1005
+ * base.
1006
+ * @param x Value to not
1007
+ * @returns NOT of x
1008
+ */
1009
+ bitNot(x: number): number;
1010
+ bitNot(x: BigNumber): BigNumber;
1011
+ bitNot(x: MathArray): MathArray;
1012
+ bitNot(x: Matrix): Matrix;
1013
+
1014
+ /**
1015
+ * Bitwise OR two values, x | y. For matrices, the function is evaluated
1016
+ * element wise. For units, the function is evaluated on the lowest
1017
+ * print base.
1018
+ * @param x First value to or
1019
+ * @param y Second value to or
1020
+ * @returns OR of x and y
1021
+ */
1022
+ bitOr(x: number, y: number): number;
1023
+ bitOr(x: BigNumber, y: BigNumber): BigNumber;
1024
+ bitOr(x: MathArray, y: MathArray): MathArray;
1025
+ bitOr(x: Matrix, y: Matrix): Matrix;
1026
+
1027
+ /**
1028
+ * Bitwise XOR two values, x ^ y. For matrices, the function is
1029
+ * evaluated element wise.
1030
+ * @param x First value to xor
1031
+ * @param y Second value to xor
1032
+ * @returns XOR of x and y
1033
+ */
1034
+ bitXor<T extends number | BigNumber | MathArray | Matrix>(x: T, y: number | BigNumber | MathArray | Matrix): NoLiteralType<T>;
1035
+
1036
+ /**
1037
+ * Bitwise left logical shift of a value x by y number of bits, x << y.
1038
+ * For matrices, the function is evaluated element wise. For units, the
1039
+ * function is evaluated on the best prefix base.
1040
+ * @param x Value to be shifted
1041
+ * @param y Amount of shifts
1042
+ * @returns x shifted left y times
1043
+ */
1044
+ leftShift<T extends number | BigNumber | MathArray | Matrix>(x: T, y: number | BigNumber): NoLiteralType<T>;
1045
+
1046
+ /**
1047
+ * Bitwise right arithmetic shift of a value x by y number of bits, x >>
1048
+ * y. For matrices, the function is evaluated element wise. For units,
1049
+ * the function is evaluated on the best prefix base.
1050
+ * @param x Value to be shifted
1051
+ * @param y Amount of shifts
1052
+ * @returns x sign-filled shifted right y times
1053
+ */
1054
+ rightArithShift<T extends number | BigNumber | MathArray | Matrix>(x: T, y: number | BigNumber): NoLiteralType<T>;
1055
+
1056
+ /**
1057
+ * Bitwise right logical shift of value x by y number of bits, x >>> y.
1058
+ * For matrices, the function is evaluated element wise. For units, the
1059
+ * function is evaluated on the best prefix base.
1060
+ * @param x Value to be shifted
1061
+ * @param y Amount of shifts
1062
+ * @returns x zero-filled shifted right y times
1063
+ */
1064
+ rightLogShift<T extends number | MathArray | Matrix>(x: T, y: number): NoLiteralType<T>;
1065
+
1066
+ /*************************************************************************
1067
+ * Combinatorics functions
1068
+ ************************************************************************/
1069
+
1070
+ /**
1071
+ * The Bell Numbers count the number of partitions of a set. A partition
1072
+ * is a pairwise disjoint subset of S whose union is S. bellNumbers only
1073
+ * takes integer arguments. The following condition must be enforced: n
1074
+ * >= 0
1075
+ * @param n Total number of objects in the set
1076
+ * @returns B(n)
1077
+ */
1078
+ bellNumbers(n: number): number;
1079
+ bellNumbers(n: BigNumber): BigNumber;
1080
+
1081
+ /**
1082
+ * The Catalan Numbers enumerate combinatorial structures of many
1083
+ * different types. catalan only takes integer arguments. The following
1084
+ * condition must be enforced: n >= 0
1085
+ * @param n nth Catalan number
1086
+ * @returns Cn(n)
1087
+ */
1088
+ catalan(n: number): number;
1089
+ catalan(n: BigNumber): BigNumber;
1090
+
1091
+ /**
1092
+ * The composition counts of n into k parts. Composition only takes
1093
+ * integer arguments. The following condition must be enforced: k <= n.
1094
+ * @param n Total number of objects in the set
1095
+ * @param k Number of objects in the subset
1096
+ * @returns Returns the composition counts of n into k parts.
1097
+ */
1098
+ composition<T extends number | BigNumber>(n: T, k: number | BigNumber): NoLiteralType<T>;
1099
+
1100
+ /**
1101
+ * The Stirling numbers of the second kind, counts the number of ways to
1102
+ * partition a set of n labelled objects into k nonempty unlabelled
1103
+ * subsets. stirlingS2 only takes integer arguments. The following
1104
+ * condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) =
1105
+ * 1
1106
+ * @param n Total number of objects in the set
1107
+ * @param k Number of objects in the subset
1108
+ * @returns S(n,k)
1109
+ */
1110
+ stirlingS2<T extends number | BigNumber>(n: T, k: number | BigNumber): NoLiteralType<T>;
1111
+
1112
+ /*************************************************************************
1113
+ * Complex functions
1114
+ ************************************************************************/
1115
+
1116
+ /**
1117
+ * Compute the argument of a complex value. For a complex number a + bi,
1118
+ * the argument is computed as atan2(b, a). For matrices, the function
1119
+ * is evaluated element wise.
1120
+ * @param x A complex number or array with complex numbers
1121
+ * @returns The argument of x
1122
+ */
1123
+ arg(x: number | Complex): number;
1124
+ arg(x: BigNumber | Complex): BigNumber;
1125
+ arg(x: MathArray): MathArray;
1126
+ arg(x: Matrix): Matrix;
1127
+
1128
+ /**
1129
+ * Compute the complex conjugate of a complex value. If x = a+bi, the
1130
+ * complex conjugate of x is a - bi. For matrices, the function is
1131
+ * evaluated element wise.
1132
+ * @param x A complex number or array with complex numbers
1133
+ * @returns The complex conjugate of x
1134
+ */
1135
+ conj<T extends number | BigNumber | Complex | MathArray | Matrix>(x: T): NoLiteralType<T>;
1136
+
1137
+ /**
1138
+ * Get the imaginary part of a complex number. For a complex number a +
1139
+ * bi, the function returns b. For matrices, the function is evaluated
1140
+ * element wise.
1141
+ * @param x A complex number or array with complex numbers
1142
+ * @returns The imaginary part of x
1143
+ */
1144
+ im(x: number | BigNumber | Complex | MathArray | Matrix): number | BigNumber | MathArray | Matrix;
1145
+
1146
+ /**
1147
+ * Get the real part of a complex number. For a complex number a + bi,
1148
+ * the function returns a. For matrices, the function is evaluated
1149
+ * element wise.
1150
+ * @param x A complex number or array of complex numbers
1151
+ * @returns The real part of x
1152
+ */
1153
+ re(x: number | BigNumber | Complex | MathArray | Matrix): number | BigNumber | MathArray | Matrix;
1154
+
1155
+ /*************************************************************************
1156
+ * Geometry functions
1157
+ ************************************************************************/
1158
+
1159
+ /**
1160
+ * Calculates: The eucledian distance between two points in 2 and 3
1161
+ * dimensional spaces. Distance between point and a line in 2 and 3
1162
+ * dimensional spaces. Pairwise distance between a set of 2D or 3D
1163
+ * points NOTE: When substituting coefficients of a line(a, b and c),
1164
+ * use ax + by + c = 0 instead of ax + by = c For parametric equation of
1165
+ * a 3D line, x0, y0, z0, a, b, c are from: (x−x0, y−y0, z−z0) = t(a, b,
1166
+ * c)
1167
+ * @param x Coordinates of the first point
1168
+ * @param y Coordinates of the second point
1169
+ * @returns Returns the distance from two/three points
1170
+ */
1171
+ distance(x: MathArray | Matrix | object, y: MathArray | Matrix | object): number | BigNumber;
1172
+
1173
+ /**
1174
+ * Calculates the point of intersection of two lines in two or three
1175
+ * dimensions and of a line and a plane in three dimensions. The inputs
1176
+ * are in the form of arrays or 1 dimensional matrices. The line
1177
+ * intersection functions return null if the lines do not meet. Note:
1178
+ * Fill the plane coefficients as x + y + z = c and not as x + y + z + c
1179
+ * = 0.
1180
+ * @param w Co-ordinates of first end-point of first line
1181
+ * @param x Co-ordinates of second end-point of first line
1182
+ * @param y Co-ordinates of first end-point of second line OR
1183
+ * Coefficients of the plane's equation
1184
+ * @param z Co-ordinates of second end-point of second line OR null if
1185
+ * the calculation is for line and plane
1186
+ * @returns Returns the point of intersection of lines/lines-planes
1187
+ */
1188
+ intersect(w: MathArray | Matrix, x: MathArray | Matrix, y: MathArray | Matrix, z: MathArray | Matrix): MathArray;
1189
+
1190
+ /*************************************************************************
1191
+ * Logical functions
1192
+ ************************************************************************/
1193
+
1194
+ /**
1195
+ * Logical and. Test whether two values are both defined with a
1196
+ * nonzero/nonempty value. For matrices, the function is evaluated
1197
+ * element wise.
1198
+ * @param x First value to and
1199
+ * @param y Second value to and
1200
+ * @returns Returns true when both inputs are defined with a
1201
+ * nonzero/nonempty value.
1202
+ */
1203
+ and(
1204
+ x: number | BigNumber | Complex | Unit | MathArray | Matrix,
1205
+ y: number | BigNumber | Complex | Unit | MathArray | Matrix
1206
+ ): boolean | MathArray | Matrix;
1207
+
1208
+ /**
1209
+ * Logical not. Flips boolean value of a given parameter. For matrices,
1210
+ * the function is evaluated element wise.
1211
+ * @param x First value to not
1212
+ * @returns Returns true when input is a zero or empty value.
1213
+ */
1214
+ not(x: number | BigNumber | Complex | Unit | MathArray | Matrix): boolean | MathArray | Matrix;
1215
+
1216
+ /**
1217
+ * Logical or. Test if at least one value is defined with a
1218
+ * nonzero/nonempty value. For matrices, the function is evaluated
1219
+ * element wise.
1220
+ * @param x First value to or
1221
+ * @param y Second value to or
1222
+ * @returns Returns true when one of the inputs is defined with a
1223
+ * nonzero/nonempty value.
1224
+ */
1225
+ or(
1226
+ x: number | BigNumber | Complex | Unit | MathArray | Matrix,
1227
+ y: number | BigNumber | Complex | Unit | MathArray | Matrix
1228
+ ): boolean | MathArray | Matrix;
1229
+
1230
+ /**
1231
+ * Logical xor. Test whether one and only one value is defined with a
1232
+ * nonzero/nonempty value. For matrices, the function is evaluated
1233
+ * element wise.
1234
+ * @param x First value to xor
1235
+ * @param y Second value to xor
1236
+ * @returns Returns true when one and only one input is defined with a
1237
+ * nonzero/nonempty value.
1238
+ */
1239
+ xor(
1240
+ x: number | BigNumber | Complex | Unit | MathArray | Matrix,
1241
+ y: number | BigNumber | Complex | Unit | MathArray | Matrix
1242
+ ): boolean | MathArray | Matrix;
1243
+
1244
+ /*************************************************************************
1245
+ * Matrix functions
1246
+ ************************************************************************/
1247
+
1248
+ /**
1249
+ * Concatenate two or more matrices. dim: number is a zero-based
1250
+ * dimension over which to concatenate the matrices. By default the last
1251
+ * dimension of the matrices.
1252
+ * @param args Two or more matrices
1253
+ * @returns Concatenated matrix
1254
+ */
1255
+ concat(...args: Array<MathArray | Matrix | number | BigNumber>): MathArray | Matrix;
1256
+
1257
+ /**
1258
+ * Calculate the cross product for two vectors in three dimensional
1259
+ * space. The cross product of A = [a1, a2, a3] and B =[b1, b2, b3] is
1260
+ * defined as: cross(A, B) = [ a2 * b3 - a3 * b2, a3 * b1 - a1 * b3, a1
1261
+ * * b2 - a2 * b1 ]
1262
+ * @param x First vector
1263
+ * @param y Second vector
1264
+ * @returns Returns the cross product of x and y
1265
+ */
1266
+ cross(x: MathArray | Matrix, y: MathArray | Matrix): Matrix | MathArray;
1267
+
1268
+ /**
1269
+ * Calculate the determinant of a matrix.
1270
+ * @param x A Matrix
1271
+ * @returns the determinant of x
1272
+ */
1273
+ det(x: MathArray | Matrix): number;
1274
+
1275
+ /**
1276
+ * Create a diagonal matrix or retrieve the diagonal of a matrix. When x
1277
+ * is a vector, a matrix with vector x on the diagonal will be returned.
1278
+ * When x is a two dimensional matrix, the matrixes kth diagonal will be
1279
+ * returned as vector. When k is positive, the values are placed on the
1280
+ * super diagonal. When k is negative, the values are placed on the sub
1281
+ * diagonal.
1282
+ * @param X A two dimensional matrix or a vector
1283
+ * @param k The diagonal where the vector will be filled in or
1284
+ * retrieved. Default value: 0.
1285
+ * @param format The matrix storage format. Default value: 'dense'.
1286
+ * @returns Diagonal matrix from input vector, or diagonal from input
1287
+ * matrix
1288
+ */
1289
+ diag(X: MathArray | Matrix, format?: string): Matrix;
1290
+ diag(X: MathArray | Matrix, k: number | BigNumber, format?: string): Matrix | MathArray;
1291
+
1292
+ /**
1293
+ * Calculate the dot product of two vectors. The dot product of A = [a1,
1294
+ * a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as: dot(A,
1295
+ * B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn
1296
+ * @param x First vector
1297
+ * @param y Second vector
1298
+ * @returns Returns the dot product of x and y
1299
+ */
1300
+ dot(x: MathArray | Matrix, y: MathArray | Matrix): number;
1301
+
1302
+ /**
1303
+ * Compute eigenvalues and eigenvectors of a matrix.
1304
+ * The eigenvalues are sorted by their absolute value, ascending.
1305
+ * An eigenvalue with multiplicity k will be listed k times.
1306
+ * The eigenvectors are returned as columns of a matrix – the eigenvector
1307
+ * that belongs to the j-th eigenvalue in the list (eg. values[j]) is the
1308
+ * j-th column (eg. column(vectors, j)). If the algorithm fails to converge,
1309
+ * it will throw an error – in that case, however, you may still find useful
1310
+ * information in err.values and err.vectors
1311
+ * @param x Matrix to be diagonalized
1312
+ * @param prec Precision, default value: 1e-15
1313
+ * @returns Object containing an array of eigenvalues and a matrix with eigenvectors as columns.
1314
+ */
1315
+ eigs(x: MathArray | Matrix, prec?:number|BigNumber): {values: MathArray | Matrix, vectors: MathArray | Matrix}
1316
+
1317
+ /**
1318
+ * Compute the matrix exponential, expm(A) = e^A. The matrix must be
1319
+ * square. Not to be confused with exp(a), which performs element-wise
1320
+ * exponentiation. The exponential is calculated using the Padé
1321
+ * approximant with scaling and squaring; see “Nineteen Dubious Ways to
1322
+ * Compute the Exponential of a Matrix,” by Moler and Van Loan.
1323
+ * @param x A square matrix
1324
+ * @returns The exponential of x
1325
+ */
1326
+ expm(x: Matrix): Matrix;
1327
+
1328
+ /**
1329
+ * Create a 2-dimensional identity matrix with size m x n or n x n. The
1330
+ * matrix has ones on the diagonal and zeros elsewhere.
1331
+ * @param size The size for the matrix
1332
+ * @param format The Matrix storage format
1333
+ * @returns A matrix with ones on the diagonal
1334
+ */
1335
+ identity(size: number | number[] | Matrix | MathArray, format?: string): Matrix | MathArray | number;
1336
+ /**
1337
+ * @param m The x dimension for the matrix
1338
+ * @param n The y dimension for the matrix
1339
+ * @param format The Matrix storage format
1340
+ * @returns A matrix with ones on the diagonal
1341
+ */
1342
+ identity(m: number, n: number, format?: string): Matrix | MathArray | number;
1343
+
1344
+ /**
1345
+ * Filter the items in an array or one dimensional matrix.
1346
+ * @param x A one dimensional matrix or array to filter
1347
+ * @param test A function or regular expression to test items. All
1348
+ * entries for which test returns true are returned. When test is a
1349
+ * function, it is invoked with three parameters: the value of the
1350
+ * element, the index of the element, and the matrix/array being
1351
+ * traversed. The function must return a boolean.
1352
+ */
1353
+ filter(
1354
+ x: Matrix | MathArray | string[],
1355
+ test: ((value: any, index: any, matrix: Matrix | MathArray | string[]) => boolean) | RegExp
1356
+ ): Matrix | MathArray;
1357
+
1358
+ /**
1359
+ * Flatten a multi dimensional matrix into a single dimensional matrix.
1360
+ * @param x Matrix to be flattened
1361
+ * @returns Returns the flattened matrix
1362
+ */
1363
+ flatten<T extends MathArray | Matrix>(x: T): T;
1364
+
1365
+ /**
1366
+ * Iterate over all elements of a matrix/array, and executes the given
1367
+ * callback function.
1368
+ * @param x The matrix to iterate on.
1369
+ * @param callback The callback function is invoked with three
1370
+ * parameters: the value of the element, the index of the element, and
1371
+ * the Matrix/array being traversed.
1372
+ */
1373
+ forEach<T extends Matrix | MathArray>(x: T, callback: (value: any, index: any, matrix: T) => void): void;
1374
+
1375
+ /**
1376
+ * Calculate the inverse of a square matrix.
1377
+ * @param x Matrix to be inversed
1378
+ * @returns The inverse of x
1379
+ */
1380
+ inv<T extends number | Complex | MathArray | Matrix>(x: T): NoLiteralType<T>;
1381
+
1382
+ /**
1383
+ * Calculate the kronecker product of two matrices or vectors
1384
+ * @param x First vector
1385
+ * @param y Second vector
1386
+ * @returns Returns the kronecker product of x and y
1387
+ */
1388
+ kron(x: Matrix | MathArray, y: Matrix | MathArray): Matrix;
1389
+
1390
+ /**
1391
+ * Iterate over all elements of a matrix/array, and executes the given
1392
+ * callback function.
1393
+ * @param x The matrix to iterate on.
1394
+ * @param callback The callback function is invoked with three
1395
+ * parameters: the value of the element, the index of the element, and
1396
+ * the Matrix/array being traversed.
1397
+ * @returns Transformed map of x
1398
+ */
1399
+ map<T extends Matrix | MathArray>(x: T, callback: (value: any, index: any, matrix: T) => MathType | string): T;
1400
+
1401
+ /**
1402
+ * Create a matrix filled with ones. The created matrix can have one or
1403
+ * multiple dimensions.
1404
+ * @param size The size of each dimension of the matrix
1405
+ * @param format The matrix storage format
1406
+ * @returns A matrix filled with ones
1407
+ */
1408
+ ones(size: number | number[], format?: string): MathArray | Matrix;
1409
+ /**
1410
+ * @param m The x dimension of the matrix
1411
+ * @param n The y dimension of the amtrix
1412
+ * @param format The matrix storage format
1413
+ * @returns A matrix filled with ones
1414
+ */
1415
+ ones(m: number, n: number, format?: string): MathArray | Matrix;
1416
+
1417
+ /**
1418
+ * Partition-based selection of an array or 1D matrix. Will find the kth
1419
+ * smallest value, and mutates the input array. Uses Quickselect.
1420
+ * @param x A one dimensional matrix or array to sort
1421
+ * @param k The kth smallest value to be retrieved; zero-based index
1422
+ * @param compare An optional comparator function. The function is
1423
+ * called as compare(a, b), and must return 1 when a > b, -1 when a < b,
1424
+ * and 0 when a == b. Default value: 'asc'.
1425
+ * @returns Returns the kth lowest value.
1426
+ */
1427
+ partitionSelect(x: MathArray | Matrix, k: number, compare?: 'asc' | 'desc' | ((a: any, b: any) => number)): any;
1428
+
1429
+ /**
1430
+ * Create an array from a range. By default, the range end is excluded.
1431
+ * This can be customized by providing an extra parameter includeEnd.
1432
+ * @param str A string 'start:end' or 'start:step:end'
1433
+ * @param start Start of the range
1434
+ * @param end End of the range, excluded by default, included when
1435
+ * parameter includeEnd=true
1436
+ * @param step Step size. Default value is 1.
1437
+ * @param includeEnd: Option to specify whether to include the end or
1438
+ * not. False by default
1439
+ * @returns Parameters describing the ranges start, end, and optional
1440
+ * step.
1441
+ */
1442
+ range(str: string, includeEnd?: boolean): Matrix;
1443
+ range(start: number | BigNumber, end: number | BigNumber, includeEnd?: boolean): Matrix;
1444
+ range(start: number | BigNumber, end: number | BigNumber, step: number | BigNumber, includeEnd?: boolean): Matrix;
1445
+
1446
+ /**
1447
+ * Reshape a multi dimensional array to fit the specified dimensions
1448
+ * @param x Matrix to be reshaped
1449
+ * @param sizes One dimensional array with integral sizes for each
1450
+ * dimension
1451
+ * @returns A reshaped clone of matrix x
1452
+ */
1453
+ reshape<T extends MathArray | Matrix>(x: T, sizes: number[]): T;
1454
+
1455
+ /**
1456
+ * Resize a matrix
1457
+ * @param x Matrix to be resized
1458
+ * @param size One dimensional array with numbers
1459
+ * @param defaultValue Zero by default, except in case of a string, in
1460
+ * that case defaultValue = ' ' Default value: 0.
1461
+ * @returns A resized clone of matrix x
1462
+ */
1463
+ resize<T extends MathArray | Matrix>(x: T, size: MathArray | Matrix, defaultValue?: number | string): T;
1464
+
1465
+ /**
1466
+ * Return a row from a Matrix.
1467
+ * @param value An array or matrix
1468
+ * @param row The index of the row
1469
+ * @returns The retrieved row
1470
+ */
1471
+ row<T extends MathArray | Matrix>(
1472
+ value: T,
1473
+ row: number
1474
+ ): T;
1475
+
1476
+ /**
1477
+ * Return a column from a Matrix.
1478
+ * @param value An array or matrix
1479
+ * @param column The index of the column
1480
+ * @returns The retrieved column
1481
+ */
1482
+ column<T extends MathArray | Matrix>(
1483
+ value: T,
1484
+ column: number
1485
+ ): T;
1486
+
1487
+ /**
1488
+ * Calculate the size of a matrix or scalar.
1489
+ * @param A matrix
1490
+ * @returns A vector with the size of x
1491
+ */
1492
+ size(x: boolean | number | Complex | Unit | string | MathArray | Matrix): MathArray | Matrix;
1493
+
1494
+ /**
1495
+ * Sort the items in a matrix
1496
+ * @param x A one dimensional matrix or array to sort
1497
+ * @param compare An optional _comparator function or name. The function
1498
+ * is called as compare(a, b), and must return 1 when a > b, -1 when a <
1499
+ * b, and 0 when a == b. Default value: ‘asc’
1500
+ * @returns Returns the sorted matrix
1501
+ */
1502
+ sort<T extends Matrix | MathArray>(x: T, compare: ((a: any, b: any) => number) | 'asc' | 'desc' | 'natural'): T;
1503
+
1504
+ /**
1505
+ * Calculate the principal square root of a square matrix. The principal
1506
+ * square root matrix X of another matrix A is such that X * X = A.
1507
+ * @param A The square matrix A
1508
+ * @returns The principal square root of matrix A
1509
+ */
1510
+ sqrtm<T extends MathArray | Matrix>(A: T): T;
1511
+
1512
+ /**
1513
+ * Squeeze a matrix, remove inner and outer singleton dimensions from a
1514
+ * matrix.
1515
+ * @param x Matrix to be squeezed
1516
+ * @returns Squeezed matrix
1517
+ */
1518
+ squeeze<T extends MathArray | Matrix>(x: T): T;
1519
+
1520
+ /**
1521
+ * Get or set a subset of a matrix or string.
1522
+ * @param value An array, matrix, or string
1523
+ * @param index An index containing ranges for each dimension
1524
+ * @param replacement An array, matrix, or scalar. If provided, the
1525
+ * subset is replaced with replacement. If not provided, the subset is
1526
+ * returned
1527
+ * @param defaultValue Default value, filled in on new entries when the
1528
+ * matrix is resized. If not provided, math.matrix elements will be left
1529
+ * undefined. Default value: undefined.
1530
+ * @returns Either the retrieved subset or the updated matrix
1531
+ */
1532
+ subset<T extends MathArray | Matrix | string>(value: T, index: Index, replacement?: any, defaultValue?: any): T;
1533
+
1534
+ /**
1535
+ * Calculate the trace of a matrix: the sum of the elements on the main
1536
+ * diagonal of a square matrix.
1537
+ * @param x A matrix
1538
+ * @returns The trace of x
1539
+ */
1540
+ trace(x: MathArray | Matrix): number;
1541
+
1542
+ /**
1543
+ * Transpose a matrix. All values of the matrix are reflected over its
1544
+ * main diagonal. Only two dimensional matrices are supported.
1545
+ * @param x Matrix to be transposed
1546
+ * @returns The transposed matrix
1547
+ */
1548
+ transpose<T extends MathArray | Matrix>(x: T): T;
1549
+
1550
+ /**
1551
+ * Create a matrix filled with zeros. The created matrix can have one or
1552
+ * multiple dimensions.
1553
+ * @param size The size of each dimension of the matrix
1554
+ * @param format The matrix storage format
1555
+ * @returns A matrix filled with zeros
1556
+ */
1557
+ zeros(size: number | number[], format?: string): MathArray | Matrix;
1558
+ /**
1559
+ * @param m The x dimension of the matrix
1560
+ * @param n The y dimension of the matrix
1561
+ * @param format The matrix storage format
1562
+ * @returns A matrix filled with zeros
1563
+ */
1564
+ zeros(m: number, n: number, format?: string): MathArray | Matrix;
1565
+
1566
+ /*************************************************************************
1567
+ * Probability functions
1568
+ ************************************************************************/
1569
+
1570
+ /**
1571
+ * Compute the number of ways of picking k unordered outcomes from n
1572
+ * possibilities. Combinations only takes integer arguments. The
1573
+ * following condition must be enforced: k <= n.
1574
+ * @param n Total number of objects in the set
1575
+ * @param k Number of objects in the subset
1576
+ * @returns Number of possible combinations
1577
+ */
1578
+ combinations<T extends number | BigNumber>(n: T, k: number | BigNumber): NoLiteralType<T>;
1579
+
1580
+ /**
1581
+ * Compute the factorial of a value Factorial only supports an integer
1582
+ * value as argument. For matrices, the function is evaluated element
1583
+ * wise.
1584
+ * @param n An integer number
1585
+ * @returns The factorial of n
1586
+ */
1587
+ factorial<T extends number | BigNumber | MathArray | Matrix>(n: T): NoLiteralType<T>;
1588
+
1589
+ /**
1590
+ * Compute the gamma function of a value using Lanczos approximation for
1591
+ * small values, and an extended Stirling approximation for large
1592
+ * values. For matrices, the function is evaluated element wise.
1593
+ * @param n A real or complex number
1594
+ * @returns The gamma of n
1595
+ */
1596
+ gamma(n: number | MathArray | Matrix): number | MathArray | Matrix;
1597
+
1598
+ /**
1599
+ * Calculate the Kullback-Leibler (KL) divergence between two
1600
+ * distributions
1601
+ * @param q First vector
1602
+ * @param p Second vector
1603
+ * @returns Returns disance between q and p
1604
+ */
1605
+ kldivergence(q: MathArray | Matrix, p: MathArray | Matrix): number;
1606
+
1607
+ /**
1608
+ * Multinomial Coefficients compute the number of ways of picking a1,
1609
+ * a2, ..., ai unordered outcomes from n possibilities. multinomial
1610
+ * takes one array of integers as an argument. The following condition
1611
+ * must be enforced: every ai <= 0
1612
+ * @param a Integer number of objects in the subset
1613
+ * @returns multinomial coefficent
1614
+ */
1615
+ multinomial<T extends number | BigNumber>(a: T[]): NoLiteralType<T>;
1616
+
1617
+ /**
1618
+ * Compute the number of ways of obtaining an ordered subset of k
1619
+ * elements from a set of n elements. Permutations only takes integer
1620
+ * arguments. The following condition must be enforced: k <= n.
1621
+ * @param n The number of objects in total
1622
+ * @param k The number of objects in the subset
1623
+ * @returns The number of permutations
1624
+ */
1625
+ permutations<T extends number | BigNumber>(n: T, k?: number | BigNumber): NoLiteralType<T>;
1626
+
1627
+ /**
1628
+ * Random pick a value from a one dimensional array. Array element is
1629
+ * picked using a random function with uniform distribution.
1630
+ * @param array A one dimensional array
1631
+ * @param number An int or float
1632
+ * @param weights An array of ints or floats
1633
+ * @returns Returns a single random value from array when number is 1 or
1634
+ * undefined. Returns an array with the configured number of elements
1635
+ * when number is > 1.
1636
+ */
1637
+ pickRandom(array: number[], number?: number, weights?: number[]): number | number[];
1638
+
1639
+ /**
1640
+ * Return a random number larger or equal to min and smaller than max
1641
+ * using a uniform distribution.
1642
+ * @param size If provided, an array or matrix with given size and
1643
+ * filled with random values is returned
1644
+ * @param min Minimum boundary for the random value, included
1645
+ * @param max Maximum boundary for the random value, excluded
1646
+ * @returns A random number
1647
+ */
1648
+ random(min?: number, max?: number): number;
1649
+ random<T extends MathArray | Matrix>(size: T, min?: number, max?: number): T;
1650
+
1651
+ /**
1652
+ * Return a random integer number larger or equal to min and smaller
1653
+ * than max using a uniform distribution.
1654
+ * @param size If provided, an array or matrix with given size and
1655
+ * filled with random values is returned
1656
+ * @param min Minimum boundary for the random value, included
1657
+ * @param max Maximum boundary for the random value, excluded
1658
+ * @returns A random number
1659
+ */
1660
+ randomInt(min: number, max?: number): number;
1661
+ randomInt<T extends MathArray | Matrix>(size: T, min?: number, max?: number): T;
1662
+
1663
+ /*************************************************************************
1664
+ * Relational functions
1665
+ ************************************************************************/
1666
+
1667
+ /**
1668
+ * Compare two values. Returns 1 when x > y, -1 when x < y, and 0 when x
1669
+ * == y. x and y are considered equal when the relative difference
1670
+ * between x and y is smaller than the configured epsilon. The function
1671
+ * cannot be used to compare values smaller than approximately 2.22e-16.
1672
+ * For matrices, the function is evaluated element wise.
1673
+ * @param x First value to compare
1674
+ * @param y Second value to compare
1675
+ * @returns Returns the result of the comparison: 1 when x > y, -1 when
1676
+ * x < y, and 0 when x == y.
1677
+ */
1678
+ compare(x: MathType | string, y: MathType | string): number | BigNumber | Fraction | MathArray | Matrix;
1679
+
1680
+ /**
1681
+ * Compare two values of any type in a deterministic, natural way. For
1682
+ * numeric values, the function works the same as math.compare. For
1683
+ * types of values that can’t be compared mathematically, the function
1684
+ * compares in a natural way.
1685
+ * @param x First value to compare
1686
+ * @param y Second value to compare
1687
+ * @returns Returns the result of the comparison: 1 when x > y, -1 when
1688
+ * x < y, and 0 when x == y.
1689
+ */
1690
+ compareNatural(x: any, y: any): number;
1691
+
1692
+ /**
1693
+ * Compare two strings lexically. Comparison is case sensitive. Returns
1694
+ * 1 when x > y, -1 when x < y, and 0 when x == y. For matrices, the
1695
+ * function is evaluated element wise.
1696
+ * @param x First string to compare
1697
+ * @param y Second string to compare
1698
+ * @returns Returns the result of the comparison: 1 when x > y, -1 when
1699
+ * x < y, and 0 when x == y.
1700
+ */
1701
+ compareText(x: string | MathArray | Matrix, y: string | MathArray | Matrix): number | MathArray | Matrix;
1702
+
1703
+ /**
1704
+ * Test element wise whether two matrices are equal. The function
1705
+ * accepts both matrices and scalar values.
1706
+ * @param x First matrix to compare
1707
+ * @param y Second amtrix to compare
1708
+ * @returns Returns true when the input matrices have the same size and
1709
+ * each of their elements is equal.
1710
+ */
1711
+ deepEqual(x: MathType, y: MathType): number | BigNumber | Fraction | Complex | Unit | MathArray | Matrix;
1712
+
1713
+ /**
1714
+ * Test whether two values are equal.
1715
+ *
1716
+ * The function tests whether the relative difference between x and y is
1717
+ * smaller than the configured epsilon. The function cannot be used to
1718
+ * compare values smaller than approximately 2.22e-16. For matrices, the
1719
+ * function is evaluated element wise. In case of complex numbers, x.re
1720
+ * must equal y.re, and x.im must equal y.im. Values null and undefined
1721
+ * are compared strictly, thus null is only equal to null and nothing
1722
+ * else, and undefined is only equal to undefined and nothing else.
1723
+ * @param x First value to compare
1724
+ * @param y Second value to compare
1725
+ * @returns Returns true when the compared values are equal, else
1726
+ * returns false
1727
+ */
1728
+ equal(x: MathType | string, y: MathType | string): boolean | MathArray | Matrix;
1729
+
1730
+ /**
1731
+ * Check equality of two strings. Comparison is case sensitive. For
1732
+ * matrices, the function is evaluated element wise.
1733
+ * @param x First string to compare
1734
+ * @param y Second string to compare
1735
+ * @returns Returns true if the values are equal, and false if not.
1736
+ */
1737
+ equalText(x: string | MathArray | Matrix, y: string | MathArray | Matrix): number | MathArray | Matrix;
1738
+
1739
+ /**
1740
+ * Test whether value x is larger than y. The function returns true when
1741
+ * x is larger than y and the relative difference between x and y is
1742
+ * larger than the configured epsilon. The function cannot be used to
1743
+ * compare values smaller than approximately 2.22e-16. For matrices, the
1744
+ * function is evaluated element wise.
1745
+ * @param x First value to compare
1746
+ * @param y Second value to vcompare
1747
+ * @returns Returns true when x is larger than y, else returns false
1748
+ */
1749
+ larger(x: MathType | string, y: MathType | string): boolean | MathArray | Matrix;
1750
+
1751
+ /**
1752
+ * Test whether value x is larger or equal to y. The function returns
1753
+ * true when x is larger than y or the relative difference between x and
1754
+ * y is smaller than the configured epsilon. The function cannot be used
1755
+ * to compare values smaller than approximately 2.22e-16. For matrices,
1756
+ * the function is evaluated element wise.
1757
+ * @param x First value to compare
1758
+ * @param y Second value to vcompare
1759
+ * @returns Returns true when x is larger than or equal to y, else
1760
+ * returns false
1761
+ */
1762
+ largerEq(x: MathType | string, y: MathType | string): boolean | MathArray | Matrix;
1763
+
1764
+ /**
1765
+ * Test whether value x is smaller than y. The function returns true
1766
+ * when x is smaller than y and the relative difference between x and y
1767
+ * is smaller than the configured epsilon. The function cannot be used
1768
+ * to compare values smaller than approximately 2.22e-16. For matrices,
1769
+ * the function is evaluated element wise.
1770
+ * @param x First value to compare
1771
+ * @param y Second value to vcompare
1772
+ * @returns Returns true when x is smaller than y, else returns false
1773
+ */
1774
+ smaller(x: MathType | string, y: MathType | string): boolean | MathArray | Matrix;
1775
+
1776
+ /**
1777
+ * Test whether value x is smaller or equal to y. The function returns
1778
+ * true when x is smaller than y or the relative difference between x
1779
+ * and y is smaller than the configured epsilon. The function cannot be
1780
+ * used to compare values smaller than approximately 2.22e-16. For
1781
+ * matrices, the function is evaluated element wise.
1782
+ * @param x First value to compare
1783
+ * @param y Second value to vcompare
1784
+ * @returns Returns true when x is smaller than or equal to y, else
1785
+ * returns false
1786
+ */
1787
+ smallerEq(x: MathType | string, y: MathType | string): boolean | MathArray | Matrix;
1788
+
1789
+ /**
1790
+ * Test whether two values are unequal. The function tests whether the
1791
+ * relative difference between x and y is larger than the configured
1792
+ * epsilon. The function cannot be used to compare values smaller than
1793
+ * approximately 2.22e-16. For matrices, the function is evaluated
1794
+ * element wise. In case of complex numbers, x.re must unequal y.re, or
1795
+ * x.im must unequal y.im. Values null and undefined are compared
1796
+ * strictly, thus null is unequal with everything except null, and
1797
+ * undefined is unequal with everything except undefined.
1798
+ * @param x First value to compare
1799
+ * @param y Second value to vcompare
1800
+ * @returns Returns true when the compared values are unequal, else
1801
+ * returns false
1802
+ */
1803
+ unequal(x: MathType | string, y: MathType | string): boolean | MathArray | Matrix;
1804
+
1805
+ /*************************************************************************
1806
+ * Set functions
1807
+ ************************************************************************/
1808
+
1809
+ /**
1810
+ * Create the cartesian product of two (multi)sets. Multi-dimension
1811
+ * arrays will be converted to single-dimension arrays before the
1812
+ * operation.
1813
+ * @param a1 A (multi)set
1814
+ * @param a2 A (multi)set
1815
+ * @returns The cartesian product of two (multi)sets
1816
+ */
1817
+ setCartesian<T extends MathArray | Matrix>(a1: T, a2: MathArray | Matrix): T;
1818
+
1819
+ /**
1820
+ * Create the difference of two (multi)sets: every element of set1, that
1821
+ * is not the element of set2. Multi-dimension arrays will be converted
1822
+ * to single-dimension arrays before the operation
1823
+ * @param a1 A (multi)set
1824
+ * @param a2 A (multi)set
1825
+ * @returns The difference of two (multi)sets
1826
+ */
1827
+ setDifference<T extends MathArray | Matrix>(a1: T, a2: MathArray | Matrix): T;
1828
+
1829
+ /**
1830
+ * Collect the distinct elements of a multiset. A multi-dimension array
1831
+ * will be converted to a single-dimension array before the operation.
1832
+ * @param a A multiset
1833
+ * @returns A set containing the distinct elements of the multiset
1834
+ */
1835
+ setDistinct<T extends MathArray | Matrix>(a: T): T;
1836
+
1837
+ /**
1838
+ * Create the intersection of two (multi)sets. Multi-dimension arrays
1839
+ * will be converted to single-dimension arrays before the operation.
1840
+ * @param a1 A (multi)set
1841
+ * @param a2 A (multi)set
1842
+ * @returns The intersection of two (multi)sets
1843
+ */
1844
+ setIntersect<T extends MathArray | Matrix>(a1: T, a2: MathArray | Matrix): T;
1845
+
1846
+ /**
1847
+ * Check whether a (multi)set is a subset of another (multi)set. (Every
1848
+ * element of set1 is the element of set2.) Multi-dimension arrays will
1849
+ * be converted to single-dimension arrays before the operation.
1850
+ * @param a1 A (multi)set
1851
+ * @param a2 A (multi)set
1852
+ * @returns True if a1 is subset of a2, else false
1853
+ */
1854
+ setIsSubset(a1: MathArray | Matrix, a2: MathArray | Matrix): boolean;
1855
+
1856
+ /**
1857
+ * Count the multiplicity of an element in a multiset. A multi-dimension
1858
+ * array will be converted to a single-dimension array before the
1859
+ * operation.
1860
+ * @param e An element in the multiset
1861
+ * @param a A multiset
1862
+ * @returns The number of how many times the multiset contains the
1863
+ * element
1864
+ */
1865
+ setMultiplicity(e: number | BigNumber | Fraction | Complex, a: MathArray | Matrix): number;
1866
+
1867
+ /**
1868
+ * Create the powerset of a (multi)set. (The powerset contains very
1869
+ * possible subsets of a (multi)set.) A multi-dimension array will be
1870
+ * converted to a single-dimension array before the operation.
1871
+ * @param a A multiset
1872
+ * @returns The powerset of the (multi)set
1873
+ */
1874
+ setPowerset<T extends MathArray | Matrix>(a: T): T;
1875
+
1876
+ /**
1877
+ * Count the number of elements of a (multi)set. When a second parameter
1878
+ * is ‘true’, count only the unique values. A multi-dimension array will
1879
+ * be converted to a single-dimension array before the operation.
1880
+ * @param a A multiset
1881
+ * @returns The number of elements of the (multi)set
1882
+ */
1883
+ setSize(a: MathArray | Matrix): number;
1884
+
1885
+ /**
1886
+ * Create the symmetric difference of two (multi)sets. Multi-dimension
1887
+ * arrays will be converted to single-dimension arrays before the
1888
+ * operation.
1889
+ * @param a1 A (multi)set
1890
+ * @param a2 A (multi)set
1891
+ * @returns The symmetric difference of two (multi)sets
1892
+ */
1893
+ setSymDifference<T extends MathArray | Matrix>(a1: T, a2: MathArray | Matrix): T;
1894
+
1895
+ /**
1896
+ * Create the union of two (multi)sets. Multi-dimension arrays will be
1897
+ * converted to single-dimension arrays before the operation.
1898
+ * @param a1 A (multi)set
1899
+ * @param a2 A (multi)set
1900
+ * @returns The union of two (multi)sets
1901
+ */
1902
+ setUnion<T extends MathArray | Matrix>(a1: T, a2: MathArray | Matrix): T;
1903
+
1904
+ /*************************************************************************
1905
+ * Special functions
1906
+ ************************************************************************/
1907
+
1908
+ /**
1909
+ * Compute the erf function of a value using a rational Chebyshev
1910
+ * approximations for different intervals of x.
1911
+ * @param x A real number
1912
+ * @returns The erf of x
1913
+ */
1914
+ erf<T extends number | MathArray | Matrix>(x: T): NoLiteralType<T>;
1915
+
1916
+ /*************************************************************************
1917
+ * Statistics functions
1918
+ ************************************************************************/
1919
+
1920
+ /**
1921
+ * Compute the median absolute deviation of a matrix or a list with
1922
+ * values. The median absolute deviation is defined as the median of the
1923
+ * absolute deviations from the median.
1924
+ * @param array A single matrix or multiple scalar values.
1925
+ * @returns The median absolute deviation
1926
+ */
1927
+ mad(array: MathArray | Matrix): any;
1928
+
1929
+ /**
1930
+ * Compute the maximum value of a matrix or a list with values. In case
1931
+ * of a multi dimensional array, the maximum of the flattened array will
1932
+ * be calculated. When dim is provided, the maximum over the selected
1933
+ * dimension will be calculated. Parameter dim is zero-based.
1934
+ * @param args A single matrix or multiple scalar values
1935
+ * @returns The maximum value
1936
+ */
1937
+ max(...args: MathType[]): any;
1938
+ /**
1939
+ * @param A A single matrix
1940
+ * @param dim The maximum over the selected dimension
1941
+ * @returns The maximum value
1942
+ */
1943
+ max(A: MathArray | Matrix, dim?: number): any;
1944
+
1945
+ /**
1946
+ * Compute the mean value of matrix or a list with values. In case of a
1947
+ * multi dimensional array, the mean of the flattened array will be
1948
+ * calculated. When dim is provided, the maximum over the selected
1949
+ * dimension will be calculated. Parameter dim is zero-based.
1950
+ * @param args A single matrix or multiple scalar values
1951
+ * @returns The mean of all values
1952
+ */
1953
+ mean(...args: MathType[]): any;
1954
+ /**
1955
+ * @param A A single matrix
1956
+ * @param dim The mean over the selected dimension
1957
+ * @returns The mean of all values
1958
+ */
1959
+ mean(A: MathArray | Matrix, dim?: number): any;
1960
+
1961
+ /**
1962
+ * Compute the median of a matrix or a list with values. The values are
1963
+ * sorted and the middle value is returned. In case of an even number of
1964
+ * values, the average of the two middle values is returned. Supported
1965
+ * types of values are: Number, BigNumber, Unit In case of a (multi
1966
+ * dimensional) array or matrix, the median of all elements will be
1967
+ * calculated.
1968
+ * @param args A single matrix or or multiple scalar values
1969
+ * @returns The median
1970
+ */
1971
+ median(...args: MathType[]): any;
1972
+
1973
+ /**
1974
+ * Compute the maximum value of a matrix or a list of values. In case of
1975
+ * a multi dimensional array, the maximum of the flattened array will be
1976
+ * calculated. When dim is provided, the maximum over the selected
1977
+ * dimension will be calculated. Parameter dim is zero-based.
1978
+ * @param args A single matrix or or multiple scalar values
1979
+ * @returns The minimum value
1980
+ */
1981
+ min(...args: MathType[]): any;
1982
+ /**
1983
+ * @param A A single matrix
1984
+ * @param dim The minimum over the selected dimension
1985
+ * @returns The minimum value
1986
+ */
1987
+ min(A: MathArray | Matrix, dim?: number): any;
1988
+
1989
+ /**
1990
+ * Computes the mode of a set of numbers or a list with values(numbers
1991
+ * or characters). If there are more than one modes, it returns a list
1992
+ * of those values.
1993
+ * @param args A single matrix
1994
+ * @returns The mode of all values
1995
+ */
1996
+ mode(...args: MathType[]): any;
1997
+
1998
+ /**
1999
+ * Compute the product of a matrix or a list with values. In case of a
2000
+ * (multi dimensional) array or matrix, the sum of all elements will be
2001
+ * calculated.
2002
+ * @param args A single matrix or multiple scalar values
2003
+ * @returns The product of all values
2004
+ */
2005
+ prod(...args: MathType[]): any;
2006
+
2007
+ /**
2008
+ * Compute the prob order quantile of a matrix or a list with values.
2009
+ * The sequence is sorted and the middle value is returned. Supported
2010
+ * types of sequence values are: Number, BigNumber, Unit Supported types
2011
+ * of probability are: Number, BigNumber In case of a (multi
2012
+ * dimensional) array or matrix, the prob order quantile of all elements
2013
+ * will be calculated.
2014
+ * @param A A single matrix or array
2015
+ * @param probOrN prob is the order of the quantile, while N is the
2016
+ * amount of evenly distributed steps of probabilities; only one of
2017
+ * these options can be provided
2018
+ * @param sorted =false is data sorted in ascending order
2019
+ * @returns Quantile(s)
2020
+ */
2021
+ quantileSeq(A: MathArray | Matrix, prob: number | BigNumber | MathArray, sorted?: boolean): number | BigNumber | Unit | MathArray;
2022
+
2023
+ /**
2024
+ * Compute the standard deviation of a matrix or a list with values. The
2025
+ * standard deviations is defined as the square root of the variance:
2026
+ * std(A) = sqrt(variance(A)). In case of a (multi dimensional) array or
2027
+ * matrix, the standard deviation over all elements will be calculated.
2028
+ * Optionally, the type of normalization can be specified as second
2029
+ * parameter. The parameter normalization can be one of the following
2030
+ * values: 'unbiased' (default) The sum of squared errors is divided by
2031
+ * (n - 1) 'uncorrected' The sum of squared errors is divided by n
2032
+ * 'biased' The sum of squared errors is divided by (n + 1)
2033
+ * @param array A single matrix or multiple scalar values
2034
+ * @param normalization Determines how to normalize the variance. Choose
2035
+ * ‘unbiased’ (default), ‘uncorrected’, or ‘biased’. Default value:
2036
+ * ‘unbiased’.
2037
+ * @returns The standard deviation
2038
+ */
2039
+ std(array: MathArray | Matrix, normalization?: 'unbiased' | 'uncorrected' | 'biased' | 'unbiased'): number;
2040
+
2041
+ /**
2042
+ * Compute the sum of a matrix or a list with values. In case of a
2043
+ * (multi dimensional) array or matrix, the sum of all elements will be
2044
+ * calculated.
2045
+ * @param args A single matrix or multiple scalar values
2046
+ * @returns The sum of all values
2047
+ */
2048
+ sum(...args: Array<number | BigNumber | Fraction>): any;
2049
+ /**
2050
+ * @param array A single matrix
2051
+ * @returns The sum of all values
2052
+ */
2053
+ sum(array: MathArray | Matrix): any;
2054
+
2055
+ /**
2056
+ * Compute the variance of a matrix or a list with values. In case of a
2057
+ * (multi dimensional) array or matrix, the variance over all elements
2058
+ * will be calculated. Optionally, the type of normalization can be
2059
+ * specified as second parameter. The parameter normalization can be one
2060
+ * of the following values: 'unbiased' (default) The sum of squared
2061
+ * errors is divided by (n - 1) 'uncorrected' The sum of squared errors
2062
+ * is divided by n 'biased' The sum of squared errors is divided by (n +
2063
+ * 1) Note that older browser may not like the variable name var. In
2064
+ * that case, the function can be called as math['var'](...) instead of
2065
+ * math.variance(...).
2066
+ * @param args A single matrix or multiple scalar values
2067
+ * @returns The variance
2068
+ */
2069
+ variance(...args: Array<number | BigNumber | Fraction>): any;
2070
+ /**
2071
+ * @param array A single matrix
2072
+ * @param normalization normalization Determines how to normalize the
2073
+ * variance. Choose ‘unbiased’ (default), ‘uncorrected’, or ‘biased’.
2074
+ * Default value: ‘unbiased’.
2075
+ * @returns The variance
2076
+ */
2077
+ variance(array: MathArray | Matrix, normalization?: 'unbiased' | 'uncorrected' | 'biased' | 'unbiased'): any;
2078
+
2079
+ /*************************************************************************
2080
+ * String functions
2081
+ ************************************************************************/
2082
+
2083
+ /**
2084
+ * Format a value of any type into a string.
2085
+ * @param value The value to be formatted
2086
+ * @param options An object with formatting options.
2087
+ * @param callback A custom formatting function, invoked for all numeric
2088
+ * elements in value, for example all elements of a matrix, or the real
2089
+ * and imaginary parts of a complex number. This callback can be used to
2090
+ * override the built-in numeric notation with any type of formatting.
2091
+ * Function callback is called with value as parameter and must return a
2092
+ * string.
2093
+ * @see http://mathjs.org/docs/reference/functions/format.html
2094
+ * @returns The formatted value
2095
+ */
2096
+ format(value: any, options?: FormatOptions | number | ((item: any) => string), callback?: (value: any) => string): string;
2097
+
2098
+ /**
2099
+ * Interpolate values into a string template.
2100
+ * @param template A string containing variable placeholders.
2101
+ * @param values An object containing variables which will be filled in
2102
+ * in the template.
2103
+ * @param precision Number of digits to format numbers. If not provided,
2104
+ * the value will not be rounded.
2105
+ * @param options Formatting options, or the number of digits to format
2106
+ * numbers. See function math.format for a description of all options.
2107
+ * @returns Interpolated string
2108
+ */
2109
+ print(template: string, values: any, precision?: number, options?: number | object): void;
2110
+
2111
+ /*************************************************************************
2112
+ * Trigonometry functions
2113
+ ************************************************************************/
2114
+
2115
+ /**
2116
+ * Calculate the inverse cosine of a value. For matrices, the function
2117
+ * is evaluated element wise.
2118
+ * @param x Function input
2119
+ * @returns The arc cosine of x
2120
+ */
2121
+ acos(x: number): number;
2122
+ acos(x: BigNumber): BigNumber;
2123
+ acos(x: Complex): Complex;
2124
+ acos(x: MathArray): MathArray;
2125
+ acos(x: Matrix): Matrix;
2126
+
2127
+ /**
2128
+ * Calculate the hyperbolic arccos of a value, defined as acosh(x) =
2129
+ * ln(sqrt(x^2 - 1) + x). For matrices, the function is evaluated
2130
+ * element wise.
2131
+ * @param x Function input
2132
+ * @returns The hyperbolic arccosine of x
2133
+ */
2134
+ acosh(x: number): number;
2135
+ acosh(x: BigNumber): BigNumber;
2136
+ acosh(x: Complex): Complex;
2137
+ acosh(x: MathArray): MathArray;
2138
+ acosh(x: Matrix): Matrix;
2139
+
2140
+ /**
2141
+ * Calculate the inverse cotangent of a value. For matrices, the
2142
+ * function is evaluated element wise.
2143
+ * @param x Function input
2144
+ * @returns The arc cotangent of x
2145
+ */
2146
+ acot(x: number): number;
2147
+ acot(x: BigNumber): BigNumber;
2148
+ acot(x: MathArray): MathArray;
2149
+ acot(x: Matrix): Matrix;
2150
+
2151
+ /**
2152
+ * Calculate the hyperbolic arccotangent of a value, defined as acoth(x)
2153
+ * = (ln((x+1)/x) + ln(x/(x-1))) / 2. For matrices, the function is
2154
+ * evaluated element wise.
2155
+ * @param x Function input
2156
+ * @returns The hyperbolic arccotangent of x
2157
+ */
2158
+ acoth(x: number): number;
2159
+ acoth(x: BigNumber): BigNumber;
2160
+ acoth(x: MathArray): MathArray;
2161
+ acoth(x: Matrix): Matrix;
2162
+
2163
+ /**
2164
+ * Calculate the inverse cosecant of a value. For matrices, the function
2165
+ * is evaluated element wise.
2166
+ * @param x Function input
2167
+ * @returns The arc cosecant of x
2168
+ */
2169
+ acsc(x: number): number;
2170
+ acsc(x: BigNumber): BigNumber;
2171
+ acsc(x: MathArray): MathArray;
2172
+ acsc(x: Matrix): Matrix;
2173
+
2174
+ /**
2175
+ * Calculate the hyperbolic arccosecant of a value, defined as acsch(x)
2176
+ * = ln(1/x + sqrt(1/x^2 + 1)). For matrices, the function is evaluated
2177
+ * element wise.
2178
+ * @param x Function input
2179
+ * @returns The hyperbolic arccosecant of x
2180
+ */
2181
+ acsch(x: number): number;
2182
+ acsch(x: BigNumber): BigNumber;
2183
+ acsch(x: MathArray): MathArray;
2184
+ acsch(x: Matrix): Matrix;
2185
+
2186
+ /**
2187
+ * Calculate the inverse secant of a value. For matrices, the function
2188
+ * is evaluated element wise.
2189
+ * @param x Function input
2190
+ * @returns The arc secant of x
2191
+ */
2192
+ asec(x: number): number;
2193
+ asec(x: BigNumber): BigNumber;
2194
+ asec(x: MathArray): MathArray;
2195
+ asec(x: Matrix): Matrix;
2196
+
2197
+ /**
2198
+ * Calculate the hyperbolic arcsecant of a value, defined as asech(x) =
2199
+ * ln(sqrt(1/x^2 - 1) + 1/x). For matrices, the function is evaluated
2200
+ * element wise.
2201
+ * @param x Function input
2202
+ * @returns The hyperbolic arcsecant of x
2203
+ */
2204
+ asech(x: number): number;
2205
+ asech(x: BigNumber): BigNumber;
2206
+ asech(x: MathArray): MathArray;
2207
+ asech(x: Matrix): Matrix;
2208
+
2209
+ /**
2210
+ * Calculate the inverse sine of a value. For matrices, the function is
2211
+ * evaluated element wise.
2212
+ * @param x Function input
2213
+ * @returns The arc sine of x
2214
+ */
2215
+ asin(x: number): number;
2216
+ asin(x: BigNumber): BigNumber;
2217
+ asin(x: Complex): Complex;
2218
+ asin(x: MathArray): MathArray;
2219
+ asin(x: Matrix): Matrix;
2220
+
2221
+ /**
2222
+ * Calculate the hyperbolic arcsine of a value, defined as asinh(x) =
2223
+ * ln(x + sqrt(x^2 + 1)). For matrices, the function is evaluated
2224
+ * element wise.
2225
+ * @param x Function input
2226
+ * @returns The hyperbolic arcsine of x
2227
+ */
2228
+ asinh(x: number): number;
2229
+ asinh(x: BigNumber): BigNumber;
2230
+ asinh(x: MathArray): MathArray;
2231
+ asinh(x: Matrix): Matrix;
2232
+
2233
+ /**
2234
+ * Calculate the inverse tangent of a value. For matrices, the function
2235
+ * is evaluated element wise.
2236
+ * @param x Function input
2237
+ * @returns The arc tangent of x
2238
+ */
2239
+ atan(x: number): number;
2240
+ atan(x: BigNumber): BigNumber;
2241
+ atan(x: MathArray): MathArray;
2242
+ atan(x: Matrix): Matrix;
2243
+
2244
+ /**
2245
+ * Calculate the inverse tangent function with two arguments, y/x. By
2246
+ * providing two arguments, the right quadrant of the computed angle can
2247
+ * be determined. For matrices, the function is evaluated element wise.
2248
+ * @param x Function input
2249
+ * @returns Four quadrant inverse tangent
2250
+ */
2251
+ atan2(y: number, x: number): number;
2252
+ atan2(y: MathArray | Matrix, x: MathArray | Matrix): MathArray | Matrix;
2253
+
2254
+ /**
2255
+ * Calculate the hyperbolic arctangent of a value, defined as atanh(x) =
2256
+ * ln((1 + x)/(1 - x)) / 2. For matrices, the function is evaluated
2257
+ * element wise.
2258
+ * @param x Function input
2259
+ * @returns The hyperbolic arctangent of x
2260
+ */
2261
+ atanh(x: number): number;
2262
+ atanh(x: BigNumber): BigNumber;
2263
+ atanh(x: MathArray): MathArray;
2264
+ atanh(x: Matrix): Matrix;
2265
+
2266
+ /**
2267
+ * Calculate the cosine of a value. For matrices, the function is
2268
+ * evaluated element wise.
2269
+ * @param x Function input
2270
+ * @returns The cosine of x
2271
+ */
2272
+ cos(x: number | Unit): number;
2273
+ cos(x: BigNumber): BigNumber;
2274
+ cos(x: Complex): Complex;
2275
+ cos(x: MathArray): MathArray;
2276
+ cos(x: Matrix): Matrix;
2277
+
2278
+ /**
2279
+ * Calculate the hyperbolic cosine of a value, defined as cosh(x) = 1/2
2280
+ * * (exp(x) + exp(-x)). For matrices, the function is evaluated element
2281
+ * wise.
2282
+ * @param x Function input
2283
+ * @returns The hyperbolic cosine of x
2284
+ */
2285
+ cosh(x: number | Unit): number;
2286
+ cosh(x: BigNumber): BigNumber;
2287
+ cosh(x: Complex): Complex;
2288
+ cosh(x: MathArray): MathArray;
2289
+ cosh(x: Matrix): Matrix;
2290
+
2291
+ /**
2292
+ * Calculate the cotangent of a value. cot(x) is defined as 1 / tan(x).
2293
+ * For matrices, the function is evaluated element wise.
2294
+ * @param x Function input
2295
+ * @returns The cotangent of x
2296
+ */
2297
+ cot(x: number | Unit): number;
2298
+ cot(x: Complex): Complex;
2299
+ cot(x: MathArray): MathArray;
2300
+ cot(x: Matrix): Matrix;
2301
+
2302
+ /**
2303
+ * Calculate the hyperbolic cotangent of a value, defined as coth(x) = 1
2304
+ * / tanh(x). For matrices, the function is evaluated element wise.
2305
+ * @param x Function input
2306
+ * @returns The hyperbolic cotangent of x
2307
+ */
2308
+ coth(x: number | Unit): number;
2309
+ coth(x: Complex): Complex;
2310
+ coth(x: MathArray): MathArray;
2311
+ coth(x: Matrix): Matrix;
2312
+
2313
+ /**
2314
+ * Calculate the cosecant of a value, defined as csc(x) = 1/sin(x). For
2315
+ * matrices, the function is evaluated element wise.
2316
+ * @param x Function input
2317
+ * @returns The cosecant hof x
2318
+ */
2319
+ csc(x: number | Unit): number;
2320
+ csc(x: Complex): Complex;
2321
+ csc(x: MathArray): MathArray;
2322
+ csc(x: Matrix): Matrix;
2323
+
2324
+ /**
2325
+ * Calculate the hyperbolic cosecant of a value, defined as csch(x) = 1
2326
+ * / sinh(x). For matrices, the function is evaluated element wise.
2327
+ * @param x Function input
2328
+ * @returns The hyperbolic cosecant of x
2329
+ */
2330
+ csch(x: number | Unit): number;
2331
+ csch(x: Complex): Complex;
2332
+ csch(x: MathArray): MathArray;
2333
+ csch(x: Matrix): Matrix;
2334
+
2335
+ /**
2336
+ * Calculate the secant of a value, defined as sec(x) = 1/cos(x). For
2337
+ * matrices, the function is evaluated element wise.
2338
+ * @param x Function input
2339
+ * @returns The secant of x
2340
+ */
2341
+ sec(x: number | Unit): number;
2342
+ sec(x: Complex): Complex;
2343
+ sec(x: MathArray): MathArray;
2344
+ sec(x: Matrix): Matrix;
2345
+
2346
+ /**
2347
+ * Calculate the hyperbolic secant of a value, defined as sech(x) = 1 /
2348
+ * cosh(x). For matrices, the function is evaluated element wise.
2349
+ * @param x Function input
2350
+ * @returns The hyperbolic secant of x
2351
+ */
2352
+ sech(x: number | Unit): number;
2353
+ sech(x: Complex): Complex;
2354
+ sech(x: MathArray): MathArray;
2355
+ sech(x: Matrix): Matrix;
2356
+
2357
+ /**
2358
+ * Calculate the sine of a value. For matrices, the function is
2359
+ * evaluated element wise.
2360
+ * @param x Function input
2361
+ * @returns The sine of x
2362
+ */
2363
+ sin(x: number | Unit): number;
2364
+ sin(x: BigNumber): BigNumber;
2365
+ sin(x: Complex): Complex;
2366
+ sin(x: MathArray): MathArray;
2367
+ sin(x: Matrix): Matrix;
2368
+
2369
+ /**
2370
+ * Calculate the hyperbolic sine of a value, defined as sinh(x) = 1/2 *
2371
+ * (exp(x) - exp(-x)). For matrices, the function is evaluated element
2372
+ * wise.
2373
+ * @param x Function input
2374
+ * @returns The hyperbolic sine of x
2375
+ */
2376
+ sinh(x: number | Unit): number;
2377
+ sinh(x: BigNumber): BigNumber;
2378
+ sinh(x: Complex): Complex;
2379
+ sinh(x: MathArray): MathArray;
2380
+ sinh(x: Matrix): Matrix;
2381
+
2382
+ /**
2383
+ * Calculate the tangent of a value. tan(x) is equal to sin(x) / cos(x).
2384
+ * For matrices, the function is evaluated element wise.
2385
+ * @param x Function input
2386
+ * @returns The tangent of x
2387
+ */
2388
+ tan(x: number | Unit): number;
2389
+ tan(x: BigNumber): BigNumber;
2390
+ tan(x: Complex): Complex;
2391
+ tan(x: MathArray): MathArray;
2392
+ tan(x: Matrix): Matrix;
2393
+
2394
+ /**
2395
+ * Calculate the hyperbolic tangent of a value, defined as tanh(x) =
2396
+ * (exp(2 * x) - 1) / (exp(2 * x) + 1). For matrices, the function is
2397
+ * evaluated element wise.
2398
+ * @param x Function input
2399
+ * @returns The hyperbolic tangent of x
2400
+ */
2401
+ tanh(x: number | Unit): number;
2402
+ tanh(x: BigNumber): BigNumber;
2403
+ tanh(x: Complex): Complex;
2404
+ tanh(x: MathArray): MathArray;
2405
+ tanh(x: Matrix): Matrix;
2406
+
2407
+ /*************************************************************************
2408
+ * Unit functions
2409
+ ************************************************************************/
2410
+
2411
+ /**
2412
+ * Change the unit of a value. For matrices, the function is evaluated
2413
+ * element wise.
2414
+ * @param x The unit to be converted.
2415
+ * @param unit New unit. Can be a string like "cm" or a unit without
2416
+ * value.
2417
+ * @returns Value with changed, fixed unit
2418
+ */
2419
+ to(x: Unit | MathArray | Matrix, unit: Unit | string): Unit | MathArray | Matrix;
2420
+
2421
+ /*************************************************************************
2422
+ * Utils functions
2423
+ ************************************************************************/
2424
+
2425
+ /**
2426
+ * Clone an object.
2427
+ * @param x Object to be cloned
2428
+ * @returns A clone of object x
2429
+ */
2430
+ clone(x: any): any;
2431
+
2432
+ /**
2433
+ * Test whether a value is an integer number. The function supports
2434
+ * number, BigNumber, and Fraction. The function is evaluated
2435
+ * element-wise in case of Array or Matrix input.
2436
+ * @param x Value to be tested
2437
+ * @returns Returns true when x contains a numeric, integer value.
2438
+ * Throws an error in case of an unknown data type.
2439
+ */
2440
+ isInteger(x: number | BigNumber | Fraction | MathArray | Matrix): boolean;
2441
+
2442
+ /**
2443
+ * Test whether a value is NaN (not a number). The function supports
2444
+ * types number, BigNumber, Fraction, Unit and Complex. The function is
2445
+ * evaluated element-wise in case of Array or Matrix input.
2446
+ * @param x Value to be tested
2447
+ * @returns Returns true when x is NaN. Throws an error in case of an
2448
+ * unknown data type.
2449
+ */
2450
+ isNaN(x: number | BigNumber | Fraction | MathArray | Matrix | Unit): boolean;
2451
+
2452
+ /**
2453
+ * Test whether a value is negative: smaller than zero. The function
2454
+ * supports types number, BigNumber, Fraction, and Unit. The function is
2455
+ * evaluated element-wise in case of Array or Matrix input.
2456
+ * @param x Value to be tested
2457
+ * @returns Returns true when x is larger than zero. Throws an error in
2458
+ * case of an unknown data type.
2459
+ */
2460
+ isNegative(x: number | BigNumber | Fraction | MathArray | Matrix | Unit): boolean;
2461
+
2462
+ /**
2463
+ * Test whether a value is an numeric value. The function is evaluated
2464
+ * element-wise in case of Array or Matrix input.
2465
+ * @param x Value to be tested
2466
+ * @returns Returns true when x is a number, BigNumber, Fraction, or
2467
+ * boolean. Returns false for other types. Throws an error in case of
2468
+ * unknown types.
2469
+ */
2470
+ isNumeric(x: any): x is number | BigNumber | Fraction | boolean;
2471
+
2472
+ /**
2473
+ * Test whether a value is positive: larger than zero. The function
2474
+ * supports types number, BigNumber, Fraction, and Unit. The function is
2475
+ * evaluated element-wise in case of Array or Matrix input.
2476
+ * @param x Value to be tested
2477
+ * @returns Returns true when x is larger than zero. Throws an error in
2478
+ * case of an unknown data type.
2479
+ */
2480
+ isPositive(x: number | BigNumber | Fraction | MathArray | Matrix | Unit): boolean;
2481
+
2482
+ /**
2483
+ * Test whether a value is prime: has no divisors other than itself and
2484
+ * one. The function supports type number, bignumber. The function is
2485
+ * evaluated element-wise in case of Array or Matrix input.
2486
+ * @param x Value to be tested
2487
+ * @returns Returns true when x is larger than zero. Throws an error in
2488
+ * case of an unknown data type.
2489
+ */
2490
+ isPrime(x: number | BigNumber | MathArray | Matrix): boolean;
2491
+
2492
+ /**
2493
+ * Test whether a value is zero. The function can check for zero for
2494
+ * types number, BigNumber, Fraction, Complex, and Unit. The function is
2495
+ * evaluated element-wise in case of Array or Matrix input.
2496
+ * @param x Value to be tested
2497
+ * @returns Returns true when x is zero. Throws an error in case of an
2498
+ * unknown data type.
2499
+ */
2500
+ isZero(x: number | BigNumber | Fraction | MathArray | Matrix | Unit | Complex): boolean;
2501
+
2502
+ /**
2503
+ * Determine the type of a variable.
2504
+ * @param x The variable for which to test the type
2505
+ * @returns Returns the name of the type. Primitive types are lower
2506
+ * case, non-primitive types are upper-camel-case. For example ‘number’,
2507
+ * ‘string’, ‘Array’, ‘Date’.
2508
+ */
2509
+ typeOf(x: any): string;
2510
+
2511
+ /**
2512
+ * Import functions from an object or a module
2513
+ * To avoid errors when using one of the imported functions extend module like this:
2514
+ *
2515
+ * @example
2516
+ * // imported_math_functions.ts
2517
+ * declare module 'mathjs' {
2518
+ * interface MathJsStatic {
2519
+ * hello(a: number): number;
2520
+ * }
2521
+ * }
2522
+ *
2523
+ * @param object An object with functions to be imported.
2524
+ * @param options An object with import options.
2525
+ */
2526
+ import(object: ImportObject | ImportObject[], options: ImportOptions): void;
2527
+ }
2528
+
2529
+ /*************************************************************************
2530
+ * Factory and Dependencies
2531
+ ************************************************************************/
2532
+ interface FactoryDependencies {
2533
+ create: (factories: FactoryFunctionMap, config?: ConfigOptions) => Partial<MathJsStatic>;
2534
+ factory: <T>(
2535
+ name: string,
2536
+ dependencies: MathJsFunctionName[],
2537
+ create: (injected: Partial<MathJsStatic>) => T,
2538
+ meta?: any
2539
+ ) => FactoryFunction<T>;
2540
+ all: FactoryFunctionMap;
2541
+
2542
+ typedDependencies: FactoryFunctionMap;
2543
+ ResultSetDependencies: FactoryFunctionMap;
2544
+ BigNumberDependencies: FactoryFunctionMap;
2545
+ ComplexDependencies: FactoryFunctionMap;
2546
+ FractionDependencies: FactoryFunctionMap;
2547
+ RangeDependencies: FactoryFunctionMap;
2548
+ MatrixDependencies: FactoryFunctionMap;
2549
+ DenseMatrixDependencies: FactoryFunctionMap;
2550
+ cloneDependencies: FactoryFunctionMap;
2551
+ isIntegerDependencies: FactoryFunctionMap;
2552
+ isNegativeDependencies: FactoryFunctionMap;
2553
+ isNumericDependencies: FactoryFunctionMap;
2554
+ hasNumericValueDependencies: FactoryFunctionMap;
2555
+ isPositiveDependencies: FactoryFunctionMap;
2556
+ isZeroDependencies: FactoryFunctionMap;
2557
+ isNaNDependencies: FactoryFunctionMap;
2558
+ typeOfDependencies: FactoryFunctionMap;
2559
+ typeofDependencies: FactoryFunctionMap;
2560
+ equalScalarDependencies: FactoryFunctionMap;
2561
+ SparseMatrixDependencies: FactoryFunctionMap;
2562
+ numberDependencies: FactoryFunctionMap;
2563
+ stringDependencies: FactoryFunctionMap;
2564
+ booleanDependencies: FactoryFunctionMap;
2565
+ bignumberDependencies: FactoryFunctionMap;
2566
+ complexDependencies: FactoryFunctionMap;
2567
+ fractionDependencies: FactoryFunctionMap;
2568
+ matrixDependencies: FactoryFunctionMap;
2569
+ splitUnitDependencies: FactoryFunctionMap;
2570
+ unaryMinusDependencies: FactoryFunctionMap;
2571
+ unaryPlusDependencies: FactoryFunctionMap;
2572
+ absDependencies: FactoryFunctionMap;
2573
+ applyDependencies: FactoryFunctionMap;
2574
+ addScalarDependencies: FactoryFunctionMap;
2575
+ cbrtDependencies: FactoryFunctionMap;
2576
+ ceilDependencies: FactoryFunctionMap;
2577
+ cubeDependencies: FactoryFunctionMap;
2578
+ expDependencies: FactoryFunctionMap;
2579
+ expm1Dependencies: FactoryFunctionMap;
2580
+ fixDependencies: FactoryFunctionMap;
2581
+ floorDependencies: FactoryFunctionMap;
2582
+ gcdDependencies: FactoryFunctionMap;
2583
+ lcmDependencies: FactoryFunctionMap;
2584
+ log10Dependencies: FactoryFunctionMap;
2585
+ log2Dependencies: FactoryFunctionMap;
2586
+ modDependencies: FactoryFunctionMap;
2587
+ multiplyScalarDependencies: FactoryFunctionMap;
2588
+ multiplyDependencies: FactoryFunctionMap;
2589
+ nthRootDependencies: FactoryFunctionMap;
2590
+ signDependencies: FactoryFunctionMap;
2591
+ sqrtDependencies: FactoryFunctionMap;
2592
+ squareDependencies: FactoryFunctionMap;
2593
+ subtractDependencies: FactoryFunctionMap;
2594
+ xgcdDependencies: FactoryFunctionMap;
2595
+ dotMultiplyDependencies: FactoryFunctionMap;
2596
+ bitAndDependencies: FactoryFunctionMap;
2597
+ bitNotDependencies: FactoryFunctionMap;
2598
+ bitOrDependencies: FactoryFunctionMap;
2599
+ bitXorDependencies: FactoryFunctionMap;
2600
+ argDependencies: FactoryFunctionMap;
2601
+ conjDependencies: FactoryFunctionMap;
2602
+ imDependencies: FactoryFunctionMap;
2603
+ reDependencies: FactoryFunctionMap;
2604
+ notDependencies: FactoryFunctionMap;
2605
+ orDependencies: FactoryFunctionMap;
2606
+ xorDependencies: FactoryFunctionMap;
2607
+ concatDependencies: FactoryFunctionMap;
2608
+ columnDependencies: FactoryFunctionMap;
2609
+ crossDependencies: FactoryFunctionMap;
2610
+ diagDependencies: FactoryFunctionMap;
2611
+ eyeDependencies: FactoryFunctionMap;
2612
+ filterDependencies: FactoryFunctionMap;
2613
+ flattenDependencies: FactoryFunctionMap;
2614
+ forEachDependencies: FactoryFunctionMap;
2615
+ getMatrixDataTypeDependencies: FactoryFunctionMap;
2616
+ identityDependencies: FactoryFunctionMap;
2617
+ kronDependencies: FactoryFunctionMap;
2618
+ mapDependencies: FactoryFunctionMap;
2619
+ onesDependencies: FactoryFunctionMap;
2620
+ rangeDependencies: FactoryFunctionMap;
2621
+ reshapeDependencies: FactoryFunctionMap;
2622
+ resizeDependencies: FactoryFunctionMap;
2623
+ rowDependencies: FactoryFunctionMap;
2624
+ sizeDependencies: FactoryFunctionMap;
2625
+ squeezeDependencies: FactoryFunctionMap;
2626
+ subsetDependencies: FactoryFunctionMap;
2627
+ transposeDependencies: FactoryFunctionMap;
2628
+ ctransposeDependencies: FactoryFunctionMap;
2629
+ zerosDependencies: FactoryFunctionMap;
2630
+ erfDependencies: FactoryFunctionMap;
2631
+ modeDependencies: FactoryFunctionMap;
2632
+ prodDependencies: FactoryFunctionMap;
2633
+ formatDependencies: FactoryFunctionMap;
2634
+ printDependencies: FactoryFunctionMap;
2635
+ toDependencies: FactoryFunctionMap;
2636
+ isPrimeDependencies: FactoryFunctionMap;
2637
+ numericDependencies: FactoryFunctionMap;
2638
+ divideScalarDependencies: FactoryFunctionMap;
2639
+ powDependencies: FactoryFunctionMap;
2640
+ roundDependencies: FactoryFunctionMap;
2641
+ logDependencies: FactoryFunctionMap;
2642
+ log1pDependencies: FactoryFunctionMap;
2643
+ nthRootsDependencies: FactoryFunctionMap;
2644
+ dotPowDependencies: FactoryFunctionMap;
2645
+ dotDivideDependencies: FactoryFunctionMap;
2646
+ lsolveDependencies: FactoryFunctionMap;
2647
+ usolveDependencies: FactoryFunctionMap;
2648
+ leftShiftDependencies: FactoryFunctionMap;
2649
+ rightArithShiftDependencies: FactoryFunctionMap;
2650
+ rightLogShiftDependencies: FactoryFunctionMap;
2651
+ andDependencies: FactoryFunctionMap;
2652
+ compareDependencies: FactoryFunctionMap;
2653
+ compareNaturalDependencies: FactoryFunctionMap;
2654
+ compareTextDependencies: FactoryFunctionMap;
2655
+ equalDependencies: FactoryFunctionMap;
2656
+ equalTextDependencies: FactoryFunctionMap;
2657
+ smallerDependencies: FactoryFunctionMap;
2658
+ smallerEqDependencies: FactoryFunctionMap;
2659
+ largerDependencies: FactoryFunctionMap;
2660
+ largerEqDependencies: FactoryFunctionMap;
2661
+ deepEqualDependencies: FactoryFunctionMap;
2662
+ unequalDependencies: FactoryFunctionMap;
2663
+ partitionSelectDependencies: FactoryFunctionMap;
2664
+ sortDependencies: FactoryFunctionMap;
2665
+ maxDependencies: FactoryFunctionMap;
2666
+ minDependencies: FactoryFunctionMap;
2667
+ ImmutableDenseMatrixDependencies: FactoryFunctionMap;
2668
+ IndexDependencies: FactoryFunctionMap;
2669
+ FibonacciHeapDependencies: FactoryFunctionMap;
2670
+ SpaDependencies: FactoryFunctionMap;
2671
+ UnitDependencies: FactoryFunctionMap;
2672
+ unitDependencies: FactoryFunctionMap;
2673
+ sparseDependencies: FactoryFunctionMap;
2674
+ createUnitDependencies: FactoryFunctionMap;
2675
+ acosDependencies: FactoryFunctionMap;
2676
+ acoshDependencies: FactoryFunctionMap;
2677
+ acotDependencies: FactoryFunctionMap;
2678
+ acothDependencies: FactoryFunctionMap;
2679
+ acscDependencies: FactoryFunctionMap;
2680
+ acschDependencies: FactoryFunctionMap;
2681
+ asecDependencies: FactoryFunctionMap;
2682
+ asechDependencies: FactoryFunctionMap;
2683
+ asinDependencies: FactoryFunctionMap;
2684
+ asinhDependencies: FactoryFunctionMap;
2685
+ atanDependencies: FactoryFunctionMap;
2686
+ atan2Dependencies: FactoryFunctionMap;
2687
+ atanhDependencies: FactoryFunctionMap;
2688
+ cosDependencies: FactoryFunctionMap;
2689
+ coshDependencies: FactoryFunctionMap;
2690
+ cotDependencies: FactoryFunctionMap;
2691
+ cothDependencies: FactoryFunctionMap;
2692
+ cscDependencies: FactoryFunctionMap;
2693
+ cschDependencies: FactoryFunctionMap;
2694
+ secDependencies: FactoryFunctionMap;
2695
+ sechDependencies: FactoryFunctionMap;
2696
+ sinDependencies: FactoryFunctionMap;
2697
+ sinhDependencies: FactoryFunctionMap;
2698
+ tanDependencies: FactoryFunctionMap;
2699
+ tanhDependencies: FactoryFunctionMap;
2700
+ setCartesianDependencies: FactoryFunctionMap;
2701
+ setDifferenceDependencies: FactoryFunctionMap;
2702
+ setDistinctDependencies: FactoryFunctionMap;
2703
+ setIntersectDependencies: FactoryFunctionMap;
2704
+ setIsSubsetDependencies: FactoryFunctionMap;
2705
+ setMultiplicityDependencies: FactoryFunctionMap;
2706
+ setPowersetDependencies: FactoryFunctionMap;
2707
+ setSizeDependencies: FactoryFunctionMap;
2708
+ setSymDifferenceDependencies: FactoryFunctionMap;
2709
+ setUnionDependencies: FactoryFunctionMap;
2710
+ addDependencies: FactoryFunctionMap;
2711
+ hypotDependencies: FactoryFunctionMap;
2712
+ normDependencies: FactoryFunctionMap;
2713
+ dotDependencies: FactoryFunctionMap;
2714
+ traceDependencies: FactoryFunctionMap;
2715
+ indexDependencies: FactoryFunctionMap;
2716
+ NodeDependencies: FactoryFunctionMap;
2717
+ AccessorNodeDependencies: FactoryFunctionMap;
2718
+ ArrayNodeDependencies: FactoryFunctionMap;
2719
+ AssignmentNodeDependencies: FactoryFunctionMap;
2720
+ BlockNodeDependencies: FactoryFunctionMap;
2721
+ ConditionalNodeDependencies: FactoryFunctionMap;
2722
+ ConstantNodeDependencies: FactoryFunctionMap;
2723
+ FunctionAssignmentNodeDependencies: FactoryFunctionMap;
2724
+ IndexNodeDependencies: FactoryFunctionMap;
2725
+ ObjectNodeDependencies: FactoryFunctionMap;
2726
+ OperatorNodeDependencies: FactoryFunctionMap;
2727
+ ParenthesisNodeDependencies: FactoryFunctionMap;
2728
+ RangeNodeDependencies: FactoryFunctionMap;
2729
+ RelationalNodeDependencies: FactoryFunctionMap;
2730
+ SymbolNodeDependencies: FactoryFunctionMap;
2731
+ FunctionNodeDependencies: FactoryFunctionMap;
2732
+ parseDependencies: FactoryFunctionMap;
2733
+ compileDependencies: FactoryFunctionMap;
2734
+ evaluateDependencies: FactoryFunctionMap;
2735
+ evalDependencies: FactoryFunctionMap;
2736
+ ParserDependencies: FactoryFunctionMap;
2737
+ parserDependencies: FactoryFunctionMap;
2738
+ lupDependencies: FactoryFunctionMap;
2739
+ qrDependencies: FactoryFunctionMap;
2740
+ sluDependencies: FactoryFunctionMap;
2741
+ lusolveDependencies: FactoryFunctionMap;
2742
+ HelpDependencies: FactoryFunctionMap;
2743
+ ChainDependencies: FactoryFunctionMap;
2744
+ helpDependencies: FactoryFunctionMap;
2745
+ chainDependencies: FactoryFunctionMap;
2746
+ detDependencies: FactoryFunctionMap;
2747
+ invDependencies: FactoryFunctionMap;
2748
+ expmDependencies: FactoryFunctionMap;
2749
+ sqrtmDependencies: FactoryFunctionMap;
2750
+ divideDependencies: FactoryFunctionMap;
2751
+ distanceDependencies: FactoryFunctionMap;
2752
+ intersectDependencies: FactoryFunctionMap;
2753
+ sumDependencies: FactoryFunctionMap;
2754
+ meanDependencies: FactoryFunctionMap;
2755
+ medianDependencies: FactoryFunctionMap;
2756
+ madDependencies: FactoryFunctionMap;
2757
+ varianceDependencies: FactoryFunctionMap;
2758
+ varDependencies: FactoryFunctionMap;
2759
+ quantileSeqDependencies: FactoryFunctionMap;
2760
+ stdDependencies: FactoryFunctionMap;
2761
+ combinationsDependencies: FactoryFunctionMap;
2762
+ gammaDependencies: FactoryFunctionMap;
2763
+ factorialDependencies: FactoryFunctionMap;
2764
+ kldivergenceDependencies: FactoryFunctionMap;
2765
+ multinomialDependencies: FactoryFunctionMap;
2766
+ permutationsDependencies: FactoryFunctionMap;
2767
+ pickRandomDependencies: FactoryFunctionMap;
2768
+ randomDependencies: FactoryFunctionMap;
2769
+ randomIntDependencies: FactoryFunctionMap;
2770
+ stirlingS2Dependencies: FactoryFunctionMap;
2771
+ bellNumbersDependencies: FactoryFunctionMap;
2772
+ catalanDependencies: FactoryFunctionMap;
2773
+ compositionDependencies: FactoryFunctionMap;
2774
+ simplifyDependencies: FactoryFunctionMap;
2775
+ derivativeDependencies: FactoryFunctionMap;
2776
+ rationalizeDependencies: FactoryFunctionMap;
2777
+ reviverDependencies: FactoryFunctionMap;
2778
+ eDependencies: FactoryFunctionMap;
2779
+ EDependencies: FactoryFunctionMap;
2780
+ falseDependencies: FactoryFunctionMap;
2781
+ iDependencies: FactoryFunctionMap;
2782
+ InfinityDependencies: FactoryFunctionMap;
2783
+ LN10Dependencies: FactoryFunctionMap;
2784
+ LN2Dependencies: FactoryFunctionMap;
2785
+ LOG10EDependencies: FactoryFunctionMap;
2786
+ LOG2EDependencies: FactoryFunctionMap;
2787
+ NaNDependencies: FactoryFunctionMap;
2788
+ nullDependencies: FactoryFunctionMap;
2789
+ phiDependencies: FactoryFunctionMap;
2790
+ piDependencies: FactoryFunctionMap;
2791
+ PIDependencies: FactoryFunctionMap;
2792
+ SQRT1_2Dependencies: FactoryFunctionMap;
2793
+ SQRT2Dependencies: FactoryFunctionMap;
2794
+ tauDependencies: FactoryFunctionMap;
2795
+ trueDependencies: FactoryFunctionMap;
2796
+ versionDependencies: FactoryFunctionMap;
2797
+ atomicMassDependencies: FactoryFunctionMap;
2798
+ avogadroDependencies: FactoryFunctionMap;
2799
+ bohrMagnetonDependencies: FactoryFunctionMap;
2800
+ bohrRadiusDependencies: FactoryFunctionMap;
2801
+ boltzmannDependencies: FactoryFunctionMap;
2802
+ classicalElectronRadiusDependencies: FactoryFunctionMap;
2803
+ conductanceQuantumDependencies: FactoryFunctionMap;
2804
+ coulombDependencies: FactoryFunctionMap;
2805
+ deuteronMassDependencies: FactoryFunctionMap;
2806
+ efimovFactorDependencies: FactoryFunctionMap;
2807
+ electricConstantDependencies: FactoryFunctionMap;
2808
+ electronMassDependencies: FactoryFunctionMap;
2809
+ elementaryChargeDependencies: FactoryFunctionMap;
2810
+ faradayDependencies: FactoryFunctionMap;
2811
+ fermiCouplingDependencies: FactoryFunctionMap;
2812
+ fineStructureDependencies: FactoryFunctionMap;
2813
+ firstRadiationDependencies: FactoryFunctionMap;
2814
+ gasConstantDependencies: FactoryFunctionMap;
2815
+ gravitationConstantDependencies: FactoryFunctionMap;
2816
+ gravityDependencies: FactoryFunctionMap;
2817
+ hartreeEnergyDependencies: FactoryFunctionMap;
2818
+ inverseConductanceQuantumDependencies: FactoryFunctionMap;
2819
+ klitzingDependencies: FactoryFunctionMap;
2820
+ loschmidtDependencies: FactoryFunctionMap;
2821
+ magneticConstantDependencies: FactoryFunctionMap;
2822
+ magneticFluxQuantumDependencies: FactoryFunctionMap;
2823
+ molarMassDependencies: FactoryFunctionMap;
2824
+ molarMassC12Dependencies: FactoryFunctionMap;
2825
+ molarPlanckConstantDependencies: FactoryFunctionMap;
2826
+ molarVolumeDependencies: FactoryFunctionMap;
2827
+ neutronMassDependencies: FactoryFunctionMap;
2828
+ nuclearMagnetonDependencies: FactoryFunctionMap;
2829
+ planckChargeDependencies: FactoryFunctionMap;
2830
+ planckConstantDependencies: FactoryFunctionMap;
2831
+ planckLengthDependencies: FactoryFunctionMap;
2832
+ planckMassDependencies: FactoryFunctionMap;
2833
+ planckTemperatureDependencies: FactoryFunctionMap;
2834
+ planckTimeDependencies: FactoryFunctionMap;
2835
+ protonMassDependencies: FactoryFunctionMap;
2836
+ quantumOfCirculationDependencies: FactoryFunctionMap;
2837
+ reducedPlanckConstantDependencies: FactoryFunctionMap;
2838
+ rydbergDependencies: FactoryFunctionMap;
2839
+ sackurTetrodeDependencies: FactoryFunctionMap;
2840
+ secondRadiationDependencies: FactoryFunctionMap;
2841
+ speedOfLightDependencies: FactoryFunctionMap;
2842
+ stefanBoltzmannDependencies: FactoryFunctionMap;
2843
+ thomsonCrossSectionDependencies: FactoryFunctionMap;
2844
+ vacuumImpedanceDependencies: FactoryFunctionMap;
2845
+ weakMixingAngleDependencies: FactoryFunctionMap;
2846
+ wienDisplacementDependencies: FactoryFunctionMap;
2847
+ applyTransformDependencies: FactoryFunctionMap;
2848
+ columnTransformDependencies: FactoryFunctionMap;
2849
+ filterTransformDependencies: FactoryFunctionMap;
2850
+ forEachTransformDependencies: FactoryFunctionMap;
2851
+ indexTransformDependencies: FactoryFunctionMap;
2852
+ mapTransformDependencies: FactoryFunctionMap;
2853
+ maxTransformDependencies: FactoryFunctionMap;
2854
+ meanTransformDependencies: FactoryFunctionMap;
2855
+ minTransformDependencies: FactoryFunctionMap;
2856
+ rangeTransformDependencies: FactoryFunctionMap;
2857
+ rowTransformDependencies: FactoryFunctionMap;
2858
+ subsetTransformDependencies: FactoryFunctionMap;
2859
+ concatTransformDependencies: FactoryFunctionMap;
2860
+ stdTransformDependencies: FactoryFunctionMap;
2861
+ sumTransformDependencies: FactoryFunctionMap;
2862
+ varianceTransformDependencies: FactoryFunctionMap;
2863
+ }
2864
+
2865
+ interface Matrix {
2866
+ type: string;
2867
+ storage(): string;
2868
+ datatype(): string;
2869
+ create(data: MathArray, datatype?: string): void;
2870
+ density(): number;
2871
+ subset(index: Index, replacement?: any, defaultValue?: any): Matrix;
2872
+ get(index: number[]): any;
2873
+ set(index: number[], value: any, defaultValue?: number | string): Matrix;
2874
+ resize(size: MathArray | Matrix, defaultValue?: number | string): Matrix;
2875
+ clone(): Matrix;
2876
+ size(): number[];
2877
+ map(callback: (a: any, b: number, c: Matrix) => any, skipZeros?: boolean): Matrix;
2878
+ forEach(callback: (a: any, b: number, c: Matrix) => void, skipZeros?: boolean): void;
2879
+ toArray(): MathArray;
2880
+ valueOf(): MathArray;
2881
+ format(options?: FormatOptions | number | ((value: any) => string)): string;
2882
+ toString(): string;
2883
+ toJSON(): any;
2884
+ diagonal(k?: number | BigNumber): any[];
2885
+ swapRows(i: number, j: number): Matrix;
2886
+ }
2887
+
2888
+ interface BigNumber extends Decimal {} // tslint:disable-line no-empty-interface
2889
+
2890
+ interface Fraction {
2891
+ s: number;
2892
+ n: number;
2893
+ d: number;
2894
+ }
2895
+
2896
+ interface Complex {
2897
+ re: number;
2898
+ im: number;
2899
+ clone(): Complex;
2900
+ equals(other: Complex): boolean;
2901
+ format(precision?: number): string;
2902
+ fromJSON(json: object): Complex;
2903
+ fromPolar(polar: object): Complex;
2904
+ fromPolar(r: number, phi: number): Complex;
2905
+ toJSON(): object;
2906
+ toPolar(): PolarCoordinates;
2907
+ toString(): string;
2908
+ compare(a: Complex, b: Complex): number;
2909
+ }
2910
+
2911
+ interface PolarCoordinates {
2912
+ r: number;
2913
+ phi: number;
2914
+ }
2915
+
2916
+ interface MathJSON {
2917
+ mathjs?: string;
2918
+ value: number;
2919
+ unit: string;
2920
+ fixPrefix?: boolean;
2921
+ }
2922
+
2923
+ interface Unit {
2924
+ valueOf(): string;
2925
+ clone(): Unit;
2926
+ hasBase(base: any): boolean;
2927
+ equalBase(unit: Unit): boolean;
2928
+ equals(unit: Unit): boolean;
2929
+ multiply(unit: Unit): Unit;
2930
+ divide(unit: Unit): Unit;
2931
+ pow(unit: Unit): Unit;
2932
+ abs(unit: Unit): Unit;
2933
+ to(unit: string): Unit;
2934
+ toNumber(unit: string): number;
2935
+ toNumeric(unit: string): number | Fraction | BigNumber;
2936
+ toSI(): Unit;
2937
+ toString(): string;
2938
+ toJSON(): MathJSON;
2939
+ formatUnits(): string;
2940
+ format(options: FormatOptions): string;
2941
+ splitUnit(parts: ReadonlyArray<string | Unit>): Unit[];
2942
+ }
2943
+
2944
+ interface CreateUnitOptions {
2945
+ prefixes?: 'none' | 'short' | 'long' | 'binary_short' | 'binary_long';
2946
+ aliases?: string[];
2947
+ offset?: number;
2948
+ override?: boolean;
2949
+ }
2950
+
2951
+ interface SimplifyOptions {
2952
+ /** A boolean which is `true` by default. */
2953
+ exactFractions?: boolean;
2954
+ /**
2955
+ * When `exactFractions` is true, a fraction will be returned only
2956
+ * when both numerator and denominator are smaller than `fractionsLimit`.
2957
+ * Default value is 10000.
2958
+ */
2959
+ fractionsLimit?: number;
2960
+ }
2961
+
2962
+ interface UnitDefinition {
2963
+ definition?: string | Unit;
2964
+ prefixes?: string;
2965
+ offset?: number;
2966
+ aliases?: string[];
2967
+ }
2968
+
2969
+ interface Index {} // tslint:disable-line no-empty-interface
2970
+
2971
+ interface EvalFunction {
2972
+ evaluate(scope?: any): any;
2973
+ }
2974
+
2975
+ interface MathNode {
2976
+ isNode: boolean;
2977
+ isAccessorNode?: boolean;
2978
+ isArrayNode?: boolean;
2979
+ isAssignmentNode?: boolean;
2980
+ isBlockNode?: boolean;
2981
+ isConditionalnode?: boolean;
2982
+ isConstantNode?: boolean;
2983
+ isFunctionAssignmentNode?: boolean;
2984
+ isFunctionNode?: boolean;
2985
+ isIndexNode?: boolean;
2986
+ isObjectNode?: boolean;
2987
+ isOperatorNode?: boolean;
2988
+ isParenthesisNode?: boolean;
2989
+ isRangeNode?: boolean;
2990
+ isSymbolNode?: boolean;
2991
+ isUpdateNode?: boolean;
2992
+ comment?: string;
2993
+ content?: MathNode;
2994
+ op?: string;
2995
+ fn?: string;
2996
+ args?: MathNode[];
2997
+ type: string;
2998
+ name?: string;
2999
+ value?: any;
3000
+
3001
+ /**
3002
+ * Create a shallow clone of the node. The node itself is cloned, its
3003
+ * childs are not cloned.
3004
+ */
3005
+ clone(): MathNode;
3006
+ /**
3007
+ * Create a deep clone of the node. Both the node as well as all its
3008
+ * childs are cloned recursively.
3009
+ */
3010
+ cloneDeep(): MathNode;
3011
+ /**
3012
+ * Compile an expression into optimized JavaScript code. compile returns
3013
+ * an object with a function evaluate([scope]) to evaluate. Example:
3014
+ */
3015
+ compile(): EvalFunction;
3016
+ /**
3017
+ * Compile and eval an expression, this is the equivalent of doing
3018
+ * node.compile().evaluate(scope). Example:
3019
+ */
3020
+ evaluate(expr?: any): any;
3021
+ /**
3022
+ * Test whether this node equals an other node. Does a deep comparison
3023
+ * of the values of both nodes.
3024
+ */
3025
+ equals(other: MathNode): boolean;
3026
+ /**
3027
+ *
3028
+ * Filter nodes in an expression tree. The callback function is called
3029
+ * as callback(node: MathNode, path: string, parent: MathNode) : boolean
3030
+ * for every node in the tree, and must return a boolean. The function
3031
+ * filter returns an array with nodes for which the test returned true.
3032
+ * Parameter path is a string containing a relative JSON Path.
3033
+ *
3034
+ * Example:
3035
+ *
3036
+ * ```
3037
+ * var node = math.parse('x^2 + x/4 + 3*y');
3038
+ * var filtered = node.filter(function (node) {
3039
+ * return node.isSymbolMathNode && node.name == 'x';
3040
+ * });
3041
+ * // returns an array with two entries: two SymbolMathNodes 'x'
3042
+ * ```
3043
+ *
3044
+ * The callback function is called as callback(node: MathNode, path:
3045
+ * string, parent: MathNode) : boolean for every node in the tree, and
3046
+ * must return a boolean. The function filter returns an array with
3047
+ * nodes for which the test returned true. Parameter path is a string
3048
+ * containing a relative JSON Path.
3049
+ * @return Returns an array with nodes for which test returned true
3050
+ */
3051
+ filter(callback: (node: MathNode, path: string, parent: MathNode) => any): MathNode[];
3052
+
3053
+ /**
3054
+ * [forEach description]
3055
+ */
3056
+ forEach(callback: (node: MathNode, path: string, parent: MathNode) => any): MathNode[];
3057
+
3058
+ /**
3059
+ * Transform a node. Creates a new MathNode having it’s child's be the
3060
+ * results of calling the provided callback function for each of the
3061
+ * child's of the original node. The callback function is called as
3062
+ * `callback(child: MathNode, path: string, parent: MathNode)` and must
3063
+ * return a MathNode. Parameter path is a string containing a relative
3064
+ * JSON Path.
3065
+ *
3066
+ *
3067
+ * See also transform, which is a recursive version of map.
3068
+ */
3069
+ map(callback: (node: MathNode, path: string, parent: MathNode) => MathNode): MathNode;
3070
+
3071
+ /**
3072
+ * Get a HTML representation of the parsed expression.
3073
+ */
3074
+ toHtml(options?: object): string;
3075
+
3076
+ /**
3077
+ * Get a string representation of the parsed expression. This is not
3078
+ * exactly the same as the original input.
3079
+ */
3080
+ toString(options?: object): string;
3081
+
3082
+ /**
3083
+ * Get a LaTeX representation of the expression.
3084
+ */
3085
+ toTex(options?: object): string;
3086
+
3087
+ /**
3088
+ * Recursively transform an expression tree via a transform function.
3089
+ * Similar to Array.map, but recursively executed on all nodes in the
3090
+ * expression tree. The callback function is a mapping function
3091
+ * accepting a node, and returning a replacement for the node or the
3092
+ * original node. Function callback is called as callback(node:
3093
+ * MathNode, path: string, parent: MathNode) for every node in the tree,
3094
+ * and must return a MathNode. Parameter path is a string containing a
3095
+ * relative JSON Path.
3096
+ *
3097
+ * For example, to replace all nodes of type SymbolMathNode having name
3098
+ * ‘x’ with a ConstantMathNode with value 3:
3099
+ * ```js
3100
+ * var node = math.parse('x^2 + 5*x');
3101
+ * var transformed = node.transform(function (node, path, parent) {
3102
+ * if (node.SymbolMathNode && node.name == 'x') {
3103
+ * return new math.expression.node.ConstantMathNode(3);
3104
+ * }
3105
+ * else {
3106
+ * return node;
3107
+ * }
3108
+ * });
3109
+ * transformed.toString(); // returns '(3 ^ 2) + (5 * 3)'
3110
+ * ```
3111
+ */
3112
+ transform(callback: (node: MathNode, path: string, parent: MathNode) => MathNode): MathNode;
3113
+
3114
+ /**
3115
+ * `traverse(callback)`
3116
+ *
3117
+ * Recursively traverse all nodes in a node tree. Executes given
3118
+ * callback for this node and each of its child nodes. Similar to
3119
+ * Array.forEach, except recursive. The callback function is a mapping
3120
+ * function accepting a node, and returning a replacement for the node
3121
+ * or the original node. Function callback is called as callback(node:
3122
+ * MathNode, path: string, parent: MathNode) for every node in the tree.
3123
+ * Parameter path is a string containing a relative JSON Path. Example:
3124
+ *
3125
+ * ```
3126
+ * var node = math.parse('3 * x + 2');
3127
+ * node.traverse(function (node, path, parent) {
3128
+ * switch (node.type) {
3129
+ * case 'OperatorMathNode': console.log(node.type, node.op); break;
3130
+ * case 'ConstantMathNode': console.log(node.type, node.value); break;
3131
+ * case 'SymbolMathNode': console.log(node.type, node.name); break;
3132
+ * default: console.log(node.type);
3133
+ * }
3134
+ * });
3135
+ * // outputs:
3136
+ * // OperatorMathNode +
3137
+ * // OperatorMathNode *
3138
+ * // ConstantMathNode 3
3139
+ * // SymbolMathNode x
3140
+ * // ConstantMathNode 2
3141
+ * ```
3142
+ */
3143
+ traverse(callback: (node: MathNode, path: string, parent: MathNode) => void): any;
3144
+ }
3145
+
3146
+ interface Parser {
3147
+ evaluate(expr: string): any;
3148
+ get(variable: string): any;
3149
+ getAll(): { [key: string]: any };
3150
+ set: (variable: string, value: any) => void;
3151
+ clear: () => void;
3152
+ }
3153
+
3154
+ interface Distribution {
3155
+ random(size: any, min?: any, max?: any): any;
3156
+ randomInt(min: any, max?: any): any;
3157
+ pickRandom(array: any): any;
3158
+ }
3159
+
3160
+ interface FormatOptions {
3161
+ /**
3162
+ * Number notation. Choose from: 'fixed' Always use regular number
3163
+ * notation. For example '123.40' and '14000000' 'exponential' Always
3164
+ * use exponential notation. For example '1.234e+2' and '1.4e+7' 'auto'
3165
+ * (default) Regular number notation for numbers having an absolute
3166
+ * value between lower and upper bounds, and uses exponential notation
3167
+ * elsewhere. Lower bound is included, upper bound is excluded. For
3168
+ * example '123.4' and '1.4e7'.
3169
+ */
3170
+ notation?: 'fixed' | 'exponential' | 'engineering' | 'auto';
3171
+
3172
+ /**
3173
+ * A number between 0 and 16 to round the digits of the number. In case
3174
+ * of notations 'exponential' and 'auto', precision defines the total
3175
+ * number of significant digits returned and is undefined by default. In
3176
+ * case of notation 'fixed', precision defines the number of significant
3177
+ * digits after the decimal point, and is 0 by default.
3178
+ */
3179
+ precision?: number;
3180
+
3181
+ /**
3182
+ * Exponent determining the lower boundary for formatting a value with
3183
+ * an exponent when notation='auto. Default value is -3.
3184
+ */
3185
+ lowerExp?: number;
3186
+
3187
+ /**
3188
+ * Exponent determining the upper boundary for formatting a value with
3189
+ * an exponent when notation='auto. Default value is 5.
3190
+ */
3191
+ upperExp?: number;
3192
+
3193
+ /**
3194
+ * Available values: 'ratio' (default) or 'decimal'. For example
3195
+ * format(fraction(1, 3)) will output '1/3' when 'ratio' is configured,
3196
+ * and will output 0.(3) when 'decimal' is configured.
3197
+ */
3198
+ fraction?: string;
3199
+ }
3200
+
3201
+ interface Help {
3202
+ toString(): string;
3203
+ toJSON(): string;
3204
+ }
3205
+
3206
+ interface ConfigOptions {
3207
+ epsilon?: number;
3208
+ matrix?: string;
3209
+ number?: string;
3210
+ precision?: number;
3211
+ parenthesis?: string;
3212
+ randomSeed?: string;
3213
+ }
3214
+
3215
+ interface MathJsJson {
3216
+ /**
3217
+ * Returns reviver function that can be used as reviver in JSON.parse function.
3218
+ */
3219
+ reviver(): (key: any, value: any) => any;
3220
+ }
3221
+
3222
+ interface MathJsChain {
3223
+ done(): any;
3224
+
3225
+ /*************************************************************************
3226
+ * Construction functions
3227
+ ************************************************************************/
3228
+
3229
+ /**
3230
+ * Create a BigNumber, which can store numbers with arbitrary precision.
3231
+ * When a matrix is provided, all elements will be converted to
3232
+ * BigNumber.
3233
+ */
3234
+ bignumber(): MathJsChain;
3235
+
3236
+ /**
3237
+ * Create a boolean or convert a string or number to a boolean. In case
3238
+ * of a number, true is returned for non-zero numbers, and false in case
3239
+ * of zero. Strings can be 'true' or 'false', or can contain a number.
3240
+ * When value is a matrix, all elements will be converted to boolean.
3241
+ */
3242
+ boolean(): MathJsChain;
3243
+
3244
+ /**
3245
+ * Create a complex value or convert a value to a complex value.
3246
+ * @param im Argument specifying the imaginary part of the complex
3247
+ * number
3248
+ */
3249
+ complex(im?: number): MathJsChain;
3250
+
3251
+ /**
3252
+ * Create a user-defined unit and register it with the Unit type.
3253
+ * @param definition Definition of the unit in terms of existing units.
3254
+ * For example, ‘0.514444444 m / s’.
3255
+ * @param options (optional) An object containing any of the following
3256
+ * properties:</br>- prefixes {string} “none”, “short”, “long”,
3257
+ * “binary_short”, or “binary_long”. The default is “none”.</br>-
3258
+ * aliases {Array} Array of strings. Example: [‘knots’, ‘kt’,
3259
+ * ‘kts’]</br>- offset {Numeric} An offset to apply when converting from
3260
+ * the unit. For example, the offset for celsius is 273.15. Default is
3261
+ * 0.
3262
+ */
3263
+ createUnit(definition?: string | UnitDefinition, options?: CreateUnitOptions): MathJsChain;
3264
+ /**
3265
+ * Create a user-defined unit and register it with the Unit type.
3266
+ * @param options (optional) An object containing any of the following
3267
+ * properties:</br>- prefixes {string} “none”, “short”, “long”,
3268
+ * “binary_short”, or “binary_long”. The default is “none”.</br>-
3269
+ * aliases {Array} Array of strings. Example: [‘knots’, ‘kt’,
3270
+ * ‘kts’]</br>- offset {Numeric} An offset to apply when converting from
3271
+ * the unit. For example, the offset for celsius is 273.15. Default is
3272
+ * 0.
3273
+ */
3274
+ createUnit(options?: CreateUnitOptions): MathJsChain;
3275
+
3276
+ /**
3277
+ * Create a fraction convert a value to a fraction.
3278
+ * @param denominator Argument specifying the denominator of the
3279
+ * fraction
3280
+ */
3281
+ fraction(denominator?: number | string | MathArray | Matrix): MathJsChain;
3282
+
3283
+ /**
3284
+ * Create an index. An Index can store ranges having start, step, and
3285
+ * end for multiple dimensions. Matrix.get, Matrix.set, and math.subset
3286
+ * accept an Index as input.
3287
+ */
3288
+ index(): MathJsChain;
3289
+
3290
+ /**
3291
+ * Create a Matrix. The function creates a new math.type.Matrix object
3292
+ * from an Array. A Matrix has utility functions to manipulate the data
3293
+ * in the matrix, like getting the size and getting or setting values in
3294
+ * the matrix. Supported storage formats are 'dense' and 'sparse'.
3295
+ */
3296
+ matrix(format?: 'sparse' | 'dense', dataType?: string): MathJsChain;
3297
+
3298
+ /**
3299
+ * Create a number or convert a string, boolean, or unit to a number.
3300
+ * When value is a matrix, all elements will be converted to number.
3301
+ * @param valuelessUnit A valueless unit, used to convert a unit to a
3302
+ * number
3303
+ */
3304
+ number(valuelessUnit?: Unit | string): MathJsChain;
3305
+
3306
+ /**
3307
+ * Create a Sparse Matrix. The function creates a new math.type.Matrix
3308
+ * object from an Array. A Matrix has utility functions to manipulate
3309
+ * the data in the matrix, like getting the size and getting or setting
3310
+ * values in the matrix.
3311
+ * @param dataType Sparse Matrix data type
3312
+ */
3313
+ sparse(dataType?: string): MathJsChain;
3314
+
3315
+ /**
3316
+ * Split a unit in an array of units whose sum is equal to the original
3317
+ * unit.
3318
+ * @param parts An array of strings or valueless units
3319
+ */
3320
+ splitUnit(parts: Unit[]): MathJsChain;
3321
+
3322
+ /**
3323
+ * Create a string or convert any object into a string. Elements of
3324
+ * Arrays and Matrices are processed element wise.
3325
+ */
3326
+ string(): MathJsChain;
3327
+
3328
+ /**
3329
+ * Create a unit. Depending on the passed arguments, the function will
3330
+ * create and return a new math.type.Unit object. When a matrix is
3331
+ * provided, all elements will be converted to units.
3332
+ * @param unit The unit to be created
3333
+ */
3334
+ unit(unit?: string): MathJsChain;
3335
+
3336
+ /*************************************************************************
3337
+ * Expression functions
3338
+ ************************************************************************/
3339
+
3340
+ /**
3341
+ * Parse and compile an expression. Returns a an object with a function
3342
+ * evaluate([scope]) to evaluate the compiled expression.
3343
+ */
3344
+ compile(): MathJsChain;
3345
+
3346
+ /**
3347
+ * Evaluate an expression.
3348
+ * @param scope Scope to read/write variables
3349
+ */
3350
+ evaluate(scope?: object): MathJsChain;
3351
+
3352
+ /**
3353
+ * Retrieve help on a function or data type. Help files are retrieved
3354
+ * from the documentation in math.expression.docs.
3355
+ */
3356
+ help(): MathJsChain;
3357
+
3358
+ /**
3359
+ * Parse an expression. Returns a node tree, which can be evaluated by
3360
+ * invoking node.evaluate();
3361
+ * @param options Available options: nodes - a set of custome nodes
3362
+ */
3363
+ parse(options?: any): MathJsChain;
3364
+ /**
3365
+ * @param options Available options: nodes - a set of custome nodes
3366
+ */
3367
+ parse(options?: any): MathJsChain;
3368
+
3369
+ /**
3370
+ * Create a parser. The function creates a new math.expression.Parser
3371
+ * object.
3372
+ */
3373
+ parser(): MathJsChain;
3374
+
3375
+ /*************************************************************************
3376
+ * Algebra functions
3377
+ ************************************************************************/
3378
+ /**
3379
+ * @param variable The variable over which to differentiate
3380
+ * @param options There is one option available, simplify, which is true
3381
+ * by default. When false, output will not be simplified.
3382
+ */
3383
+ derivative(variable: MathNode | string, options?: { simplify: boolean }): MathJsChain;
3384
+
3385
+ /**
3386
+ * Solves the linear equation system by forwards substitution. Matrix
3387
+ * must be a lower triangular matrix.
3388
+ * @param b A column vector with the b values
3389
+ */
3390
+ lsolve(b: Matrix | MathArray): MathJsChain;
3391
+
3392
+ /**
3393
+ * Calculate the Matrix LU decomposition with partial pivoting. Matrix A
3394
+ * is decomposed in two matrices (L, U) and a row permutation vector p
3395
+ * where A[p,:] = L * U
3396
+ */
3397
+ lup(): MathJsChain;
3398
+
3399
+ /**
3400
+ * Solves the linear system A * x = b where A is an [n x n] matrix and b
3401
+ * is a [n] column vector.
3402
+ * @param b Column Vector
3403
+ * @param order The Symbolic Ordering and Analysis order, see slu for
3404
+ * details. Matrix must be a SparseMatrix
3405
+ * @param threshold Partial pivoting threshold (1 for partial pivoting),
3406
+ * see slu for details. Matrix must be a SparseMatrix.
3407
+ */
3408
+ lusolve(b: Matrix | MathArray, order?: number, threshold?: number): MathJsChain;
3409
+
3410
+ /**
3411
+ * Calculate the Matrix QR decomposition. Matrix A is decomposed in two
3412
+ * matrices (Q, R) where Q is an orthogonal matrix and R is an upper
3413
+ * triangular matrix.
3414
+ */
3415
+ qr(): MathJsChain;
3416
+
3417
+ /**
3418
+ * Transform a rationalizable expression in a rational fraction. If
3419
+ * rational fraction is one variable polynomial then converts the
3420
+ * numerator and denominator in canonical form, with decreasing
3421
+ * exponents, returning the coefficients of numerator.
3422
+ * @param optional scope of expression or true for already evaluated
3423
+ * rational expression at input
3424
+ * @param detailed optional True if return an object, false if return
3425
+ * expression node (default)
3426
+ */
3427
+ rationalize(optional?: object | boolean, detailed?: boolean): MathJsChain;
3428
+
3429
+ /**
3430
+ * Simplify an expression tree.
3431
+ * @param rules A list of rules are applied to an expression, repeating
3432
+ * over the list until no further changes are made. It’s possible to
3433
+ * pass a custom set of rules to the function as second argument. A rule
3434
+ * can be specified as an object, string, or function.
3435
+ * @param scope Scope to variables
3436
+ */
3437
+ simplify(rules?: Array<{ l: string; r: string } | string | ((node: MathNode) => MathNode)>, scope?: object): MathJsChain;
3438
+
3439
+ /**
3440
+ * Calculate the Sparse Matrix LU decomposition with full pivoting.
3441
+ * Sparse Matrix A is decomposed in two matrices (L, U) and two
3442
+ * permutation vectors (pinv, q) where P * A * Q = L * U
3443
+ * @param order The Symbolic Ordering and Analysis order: 0 - Natural
3444
+ * ordering, no permutation vector q is returned 1 - Matrix must be
3445
+ * square, symbolic ordering and analisis is performed on M = A + A' 2 -
3446
+ * Symbolic ordering and analysis is performed on M = A' * A. Dense
3447
+ * columns from A' are dropped, A recreated from A'. This is appropriate
3448
+ * for LU factorization of non-symmetric matrices. 3 - Symbolic ordering
3449
+ * and analysis is performed on M = A' * A. This is best used for LU
3450
+ * factorization is matrix M has no dense rows. A dense row is a row
3451
+ * with more than 10*sqr(columns) entries.
3452
+ * @param threshold Partial pivoting threshold (1 for partial pivoting)
3453
+ */
3454
+ slu(order: number, threshold: number): MathJsChain;
3455
+
3456
+ /**
3457
+ * Solves the linear equation system by backward substitution. Matrix
3458
+ * must be an upper triangular matrix. U * x = b
3459
+ * @param b A column vector with the b values
3460
+ */
3461
+ usolve(b: Matrix | MathArray): MathJsChain;
3462
+
3463
+ /*************************************************************************
3464
+ * Arithmetic functions
3465
+ ************************************************************************/
3466
+
3467
+ /**
3468
+ * Calculate the absolute value of a number. For matrices, the function
3469
+ * is evaluated element wise.
3470
+ */
3471
+ abs(): MathJsChain;
3472
+
3473
+ /**
3474
+ * Add two values, x + y. For matrices, the function is evaluated
3475
+ * element wise.
3476
+ * @param y Second value to add
3477
+ */
3478
+ add(y: MathType): MathJsChain;
3479
+
3480
+ /**
3481
+ * Calculate the cubic root of a value. For matrices, the function is
3482
+ * evaluated element wise.
3483
+ * @param allRoots Optional, false by default. Only applicable when x is
3484
+ * a number or complex number. If true, all complex roots are returned,
3485
+ * if false (default) the principal root is returned.
3486
+ */
3487
+ cbrt(allRoots?: boolean): MathJsChain;
3488
+
3489
+ /**
3490
+ * Round a value towards plus infinity If x is complex, both real and
3491
+ * imaginary part are rounded towards plus infinity. For matrices, the
3492
+ * function is evaluated element wise.
3493
+ */
3494
+ ceil(): MathJsChain;
3495
+
3496
+ /**
3497
+ * Compute the cube of a value, x * x * x. For matrices, the function is
3498
+ * evaluated element wise.
3499
+ */
3500
+ cube(): MathJsChain;
3501
+
3502
+ /**
3503
+ * Divide two values, x / y. To divide matrices, x is multiplied with
3504
+ * the inverse of y: x * inv(y).
3505
+ * @param y Denominator
3506
+ */
3507
+ divide(y: MathType): MathJsChain;
3508
+
3509
+ /**
3510
+ * Divide two matrices element wise. The function accepts both matrices
3511
+ * and scalar values.
3512
+ * @param y Denominator
3513
+ */
3514
+ dotDivide(y: MathType): MathJsChain;
3515
+
3516
+ /**
3517
+ * Multiply two matrices element wise. The function accepts both
3518
+ * matrices and scalar values.
3519
+ * @param y Right hand value
3520
+ */
3521
+ dotMultiply(y: MathType): MathJsChain;
3522
+
3523
+ /**
3524
+ * Calculates the power of x to y element wise.
3525
+ * @param y The exponent
3526
+ */
3527
+ dotPow(y: MathType): MathJsChain;
3528
+
3529
+ /**
3530
+ * Calculate the exponent of a value. For matrices, the function is
3531
+ * evaluated element wise.
3532
+ */
3533
+ exp(): MathJsChain;
3534
+
3535
+ /**
3536
+ * Calculate the value of subtracting 1 from the exponential value. For
3537
+ * matrices, the function is evaluated element wise.
3538
+ */
3539
+ expm1(): MathJsChain;
3540
+
3541
+ /**
3542
+ * Round a value towards zero. For matrices, the function is evaluated
3543
+ * element wise.
3544
+ */
3545
+ fix(): MathJsChain;
3546
+
3547
+ /**
3548
+ * Round a value towards minus infinity. For matrices, the function is
3549
+ * evaluated element wise.
3550
+ */
3551
+ floor(): MathJsChain;
3552
+
3553
+ /**
3554
+ * Calculate the greatest common divisor for two or more values or
3555
+ * arrays. For matrices, the function is evaluated element wise.
3556
+ */
3557
+ gcd(): MathJsChain;
3558
+
3559
+ /**
3560
+ * Calculate the hypotenusa of a list with values. The hypotenusa is
3561
+ * defined as: hypot(a, b, c, ...) = sqrt(a^2 + b^2 + c^2 + ...) For
3562
+ * matrix input, the hypotenusa is calculated for all values in the
3563
+ * matrix.
3564
+ */
3565
+ hypot(): MathJsChain;
3566
+
3567
+ /**
3568
+ * Calculate the least common multiple for two or more values or arrays.
3569
+ * lcm is defined as: lcm(a, b) = abs(a * b) / gcd(a, b) For matrices,
3570
+ * the function is evaluated element wise.
3571
+ * @param b An integer number
3572
+ */
3573
+ lcm(b: number | BigNumber | MathArray | Matrix): MathJsChain;
3574
+
3575
+ /**
3576
+ * Calculate the logarithm of a value. For matrices, the function is
3577
+ * evaluated element wise.
3578
+ * @param base Optional base for the logarithm. If not provided, the
3579
+ * natural logarithm of x is calculated. Default value: e.
3580
+ */
3581
+ log(base?: number | BigNumber | Complex): MathJsChain;
3582
+
3583
+ /**
3584
+ * Calculate the 10-base of a value. This is the same as calculating
3585
+ * log(x, 10). For matrices, the function is evaluated element wise.
3586
+ */
3587
+ log10(): MathJsChain;
3588
+
3589
+ /**
3590
+ * Calculate the logarithm of a value+1. For matrices, the function is
3591
+ * evaluated element wise.
3592
+ */
3593
+ log1p(base?: number | BigNumber | Complex): MathJsChain;
3594
+ /**
3595
+ * Calculate the 2-base of a value. This is the same as calculating
3596
+ * log(x, 2). For matrices, the function is evaluated element wise.
3597
+ */
3598
+ log2(): MathJsChain;
3599
+ /**
3600
+ * Calculates the modulus, the remainder of an integer division. For
3601
+ * matrices, the function is evaluated element wise. The modulus is
3602
+ * defined as: x - y * floor(x / y)
3603
+ * @see http://en.wikipedia.org/wiki/Modulo_operation.
3604
+ * @param y Divisor
3605
+ */
3606
+ mod(y: number | BigNumber | Fraction | MathArray | Matrix): MathJsChain;
3607
+
3608
+ /**
3609
+ * Multiply two values, x * y. The result is squeezed. For matrices, the
3610
+ * matrix product is calculated.
3611
+ * @param y The second value to multiply
3612
+ */
3613
+ multiply(y: MathType): MathJsChain;
3614
+
3615
+ /**
3616
+ * Calculate the norm of a number, vector or matrix. The second
3617
+ * parameter p is optional. If not provided, it defaults to 2.
3618
+ * @param p Vector space. Supported numbers include Infinity and
3619
+ * -Infinity. Supported strings are: 'inf', '-inf', and 'fro' (The
3620
+ * Frobenius norm) Default value: 2.
3621
+ */
3622
+ norm(p?: number | BigNumber | string): MathJsChain;
3623
+
3624
+ /**
3625
+ * Calculate the nth root of a value. The principal nth root of a
3626
+ * positive real number A, is the positive real solution of the equation
3627
+ * x^root = A For matrices, the function is evaluated element wise.
3628
+ * @param root The root. Default value: 2.
3629
+ */
3630
+ nthRoot(root?: number | BigNumber): MathJsChain;
3631
+
3632
+ /**
3633
+ * Calculates the power of x to y, x ^ y. Matrix exponentiation is
3634
+ * supported for square matrices x, and positive integer exponents y.
3635
+ * @param y The exponent
3636
+ */
3637
+ pow(y: number | BigNumber): MathJsChain;
3638
+
3639
+ /**
3640
+ * Round a value towards the nearest integer. For matrices, the function
3641
+ * is evaluated element wise.
3642
+ * @param n Number of decimals Default value: 0.
3643
+ */
3644
+ round(n?: number | BigNumber | MathArray): MathJsChain;
3645
+
3646
+ /**
3647
+ * Compute the sign of a value. The sign of a value x is: 1 when x > 1
3648
+ * -1 when x < 0 0 when x == 0 For matrices, the function is evaluated
3649
+ * element wise.
3650
+ * @param x The number for which to determine the sign
3651
+ * @returns The sign of x
3652
+ */
3653
+ sign(x: number | BigNumber): MathJsChain;
3654
+
3655
+ /**
3656
+ * Calculate the square root of a value. For matrices, the function is
3657
+ * evaluated element wise.
3658
+ */
3659
+ sqrt(): MathJsChain;
3660
+
3661
+ /**
3662
+ * Compute the square of a value, x * x. For matrices, the function is
3663
+ * evaluated element wise.
3664
+ */
3665
+ square(): MathJsChain;
3666
+
3667
+ /**
3668
+ * Subtract two values, x - y. For matrices, the function is evaluated
3669
+ * element wise.
3670
+ * @param y Value to subtract from x
3671
+ */
3672
+ subtract(y: MathType): MathJsChain;
3673
+
3674
+ /**
3675
+ * Inverse the sign of a value, apply a unary minus operation. For
3676
+ * matrices, the function is evaluated element wise. Boolean values and
3677
+ * strings will be converted to a number. For complex numbers, both real
3678
+ * and complex value are inverted.
3679
+ */
3680
+ unaryMinus(): MathJsChain;
3681
+
3682
+ /**
3683
+ * Unary plus operation. Boolean values and strings will be converted to
3684
+ * a number, numeric values will be returned as is. For matrices, the
3685
+ * function is evaluated element wise.
3686
+ */
3687
+ unaryPlus(): MathJsChain;
3688
+
3689
+ /**
3690
+ * Calculate the extended greatest common divisor for two values. See
3691
+ * http://en.wikipedia.org/wiki/Extended_Euclidean_algorithm.
3692
+ * @param b An integer number
3693
+ */
3694
+ xgcd(b: number | BigNumber): MathJsChain;
3695
+
3696
+ /*************************************************************************
3697
+ * Bitwise functions
3698
+ ************************************************************************/
3699
+
3700
+ /**
3701
+ * Bitwise AND two values, x & y. For matrices, the function is
3702
+ * evaluated element wise.
3703
+ * @param y Second value to and
3704
+ */
3705
+ bitAnd(y: number | BigNumber | MathArray | Matrix): MathJsChain;
3706
+
3707
+ /**
3708
+ * Bitwise NOT value, ~x. For matrices, the function is evaluated
3709
+ * element wise. For units, the function is evaluated on the best prefix
3710
+ * base.
3711
+ */
3712
+ bitNot(): MathJsChain;
3713
+
3714
+ /**
3715
+ * Bitwise OR two values, x | y. For matrices, the function is evaluated
3716
+ * element wise. For units, the function is evaluated on the lowest
3717
+ * print base.
3718
+ * @param y Second value to or
3719
+ */
3720
+ bitOr(y: number | BigNumber | MathArray | Matrix): MathJsChain;
3721
+
3722
+ /**
3723
+ * Bitwise XOR two values, x ^ y. For matrices, the function is
3724
+ * evaluated element wise.
3725
+ * @param y Second value to xor
3726
+ */
3727
+ bitXor(y: number | BigNumber | MathArray | Matrix): MathJsChain;
3728
+
3729
+ /**
3730
+ * Bitwise left logical shift of a value x by y number of bits, x << y.
3731
+ * For matrices, the function is evaluated element wise. For units, the
3732
+ * function is evaluated on the best prefix base.
3733
+ * @param y Amount of shifts
3734
+ */
3735
+ leftShift(y: number | BigNumber): MathJsChain;
3736
+
3737
+ /**
3738
+ * Bitwise right arithmetic shift of a value x by y number of bits, x >>
3739
+ * y. For matrices, the function is evaluated element wise. For units,
3740
+ * the function is evaluated on the best prefix base.
3741
+ * @param y Amount of shifts
3742
+ */
3743
+ rightArithShift(y: number | BigNumber): MathJsChain;
3744
+
3745
+ /**
3746
+ * Bitwise right logical shift of value x by y number of bits, x >>> y.
3747
+ * For matrices, the function is evaluated element wise. For units, the
3748
+ * function is evaluated on the best prefix base.
3749
+ * @param y Amount of shifts
3750
+ */
3751
+ rightLogShift(y: number): MathJsChain;
3752
+
3753
+ /*************************************************************************
3754
+ * Combinatorics functions
3755
+ ************************************************************************/
3756
+
3757
+ /**
3758
+ * The Bell Numbers count the number of partitions of a set. A partition
3759
+ * is a pairwise disjoint subset of S whose union is S. bellNumbers only
3760
+ * takes integer arguments. The following condition must be enforced: n
3761
+ * >= 0
3762
+ */
3763
+ bellNumbers(): MathJsChain;
3764
+
3765
+ /**
3766
+ * The Catalan Numbers enumerate combinatorial structures of many
3767
+ * different types. catalan only takes integer arguments. The following
3768
+ * condition must be enforced: n >= 0
3769
+ */
3770
+ catalan(): MathJsChain;
3771
+
3772
+ /**
3773
+ * The composition counts of n into k parts. Composition only takes
3774
+ * integer arguments. The following condition must be enforced: k <= n.
3775
+ * @param k Number of objects in the subset
3776
+ */
3777
+ composition(k: number | BigNumber): MathJsChain;
3778
+
3779
+ /**
3780
+ * The Stirling numbers of the second kind, counts the number of ways to
3781
+ * partition a set of n labelled objects into k nonempty unlabelled
3782
+ * subsets. stirlingS2 only takes integer arguments. The following
3783
+ * condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) =
3784
+ * 1
3785
+ * @param k Number of objects in the subset
3786
+ */
3787
+ stirlingS2(k: number | BigNumber): MathJsChain;
3788
+
3789
+ /*************************************************************************
3790
+ * Complex functions
3791
+ ************************************************************************/
3792
+
3793
+ /**
3794
+ * Compute the argument of a complex value. For a complex number a + bi,
3795
+ * the argument is computed as atan2(b, a). For matrices, the function
3796
+ * is evaluated element wise.
3797
+ */
3798
+ arg(): MathJsChain;
3799
+
3800
+ /**
3801
+ * Compute the complex conjugate of a complex value. If x = a+bi, the
3802
+ * complex conjugate of x is a - bi. For matrices, the function is
3803
+ * evaluated element wise.
3804
+ */
3805
+ conj(): MathJsChain;
3806
+
3807
+ /**
3808
+ * Get the imaginary part of a complex number. For a complex number a +
3809
+ * bi, the function returns b. For matrices, the function is evaluated
3810
+ * element wise.
3811
+ */
3812
+ im(): MathJsChain;
3813
+
3814
+ /**
3815
+ * Get the real part of a complex number. For a complex number a + bi,
3816
+ * the function returns a. For matrices, the function is evaluated
3817
+ * element wise.
3818
+ */
3819
+ re(): MathJsChain;
3820
+
3821
+ /*************************************************************************
3822
+ * Geometry functions
3823
+ ************************************************************************/
3824
+
3825
+ /**
3826
+ * Calculates: The eucledian distance between two points in 2 and 3
3827
+ * dimensional spaces. Distance between point and a line in 2 and 3
3828
+ * dimensional spaces. Pairwise distance between a set of 2D or 3D
3829
+ * points NOTE: When substituting coefficients of a line(a, b and c),
3830
+ * use ax + by + c = 0 instead of ax + by = c For parametric equation of
3831
+ * a 3D line, x0, y0, z0, a, b, c are from: (x−x0, y−y0, z−z0) = t(a, b,
3832
+ * c)
3833
+ * @param y Coordinates of the second point
3834
+ */
3835
+ distance(y: MathArray | Matrix | object): MathJsChain;
3836
+
3837
+ /**
3838
+ * Calculates the point of intersection of two lines in two or three
3839
+ * dimensions and of a line and a plane in three dimensions. The inputs
3840
+ * are in the form of arrays or 1 dimensional matrices. The line
3841
+ * intersection functions return null if the lines do not meet. Note:
3842
+ * Fill the plane coefficients as x + y + z = c and not as x + y + z + c
3843
+ * = 0.
3844
+ * @param x Co-ordinates of second end-point of first line
3845
+ * @param y Co-ordinates of first end-point of second line OR
3846
+ * Coefficients of the plane's equation
3847
+ * @param z Co-ordinates of second end-point of second line OR null if
3848
+ * the calculation is for line and plane
3849
+ */
3850
+ intersect(x: MathArray | Matrix, y: MathArray | Matrix, z: MathArray | Matrix): MathJsChain;
3851
+
3852
+ /*************************************************************************
3853
+ * Logical functions
3854
+ ************************************************************************/
3855
+
3856
+ /**
3857
+ * Logical and. Test whether two values are both defined with a
3858
+ * nonzero/nonempty value. For matrices, the function is evaluated
3859
+ * element wise.
3860
+ * @param y Second value to and
3861
+ */
3862
+ and(y: number | BigNumber | Complex | Unit | MathArray | Matrix): MathJsChain;
3863
+
3864
+ /**
3865
+ * Logical not. Flips boolean value of a given parameter. For matrices,
3866
+ * the function is evaluated element wise.
3867
+ */
3868
+ not(): MathJsChain;
3869
+
3870
+ /**
3871
+ * Logical or. Test if at least one value is defined with a
3872
+ * nonzero/nonempty value. For matrices, the function is evaluated
3873
+ * element wise.
3874
+ * @param y Second value to or
3875
+ */
3876
+ or(y: number | BigNumber | Complex | Unit | MathArray | Matrix): MathJsChain;
3877
+
3878
+ /**
3879
+ * Logical xor. Test whether one and only one value is defined with a
3880
+ * nonzero/nonempty value. For matrices, the function is evaluated
3881
+ * element wise.
3882
+ * @param y Second value to xor
3883
+ */
3884
+ xor(y: number | BigNumber | Complex | Unit | MathArray | Matrix): MathJsChain;
3885
+
3886
+ /*************************************************************************
3887
+ * Matrix functions
3888
+ ************************************************************************/
3889
+
3890
+ /**
3891
+ * Concatenate two or more matrices. dim: number is a zero-based
3892
+ * dimension over which to concatenate the matrices. By default the last
3893
+ * dimension of the matrices.
3894
+ */
3895
+ concat(): MathJsChain;
3896
+
3897
+ /**
3898
+ * Calculate the cross product for two vectors in three dimensional
3899
+ * space. The cross product of A = [a1, a2, a3] and B =[b1, b2, b3] is
3900
+ * defined as: cross(A, B) = [ a2 * b3 - a3 * b2, a3 * b1 - a1 * b3, a1
3901
+ * * b2 - a2 * b1 ]
3902
+ * @param y Second vector
3903
+ */
3904
+ cross(y: MathArray | Matrix): MathJsChain;
3905
+
3906
+ /**
3907
+ * Calculate the determinant of a matrix.
3908
+ */
3909
+ det(): MathJsChain;
3910
+
3911
+ /**
3912
+ * Create a diagonal matrix or retrieve the diagonal of a matrix. When x
3913
+ * is a vector, a matrix with vector x on the diagonal will be returned.
3914
+ * When x is a two dimensional matrix, the matrixes kth diagonal will be
3915
+ * returned as vector. When k is positive, the values are placed on the
3916
+ * super diagonal. When k is negative, the values are placed on the sub
3917
+ * diagonal.
3918
+ * @param k The diagonal where the vector will be filled in or
3919
+ * retrieved. Default value: 0.
3920
+ * @param format The matrix storage format. Default value: 'dense'.
3921
+ */
3922
+ diag(format?: string): MathJsChain;
3923
+ diag(k: number | BigNumber, format?: string): MathJsChain;
3924
+
3925
+ /**
3926
+ * Calculate the dot product of two vectors. The dot product of A = [a1,
3927
+ * a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as: dot(A,
3928
+ * B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn
3929
+ * @param y Second vector
3930
+ */
3931
+ dot(y: MathArray | Matrix): MathJsChain;
3932
+
3933
+ /**
3934
+ * Compute the matrix exponential, expm(A) = e^A. The matrix must be
3935
+ * square. Not to be confused with exp(a), which performs element-wise
3936
+ * exponentiation. The exponential is calculated using the Padé
3937
+ * approximant with scaling and squaring; see “Nineteen Dubious Ways to
3938
+ * Compute the Exponential of a Matrix,” by Moler and Van Loan.
3939
+ */
3940
+ expm(): MathJsChain;
3941
+
3942
+ /**
3943
+ * Create a 2-dimensional identity matrix with size m x n or n x n. The
3944
+ * matrix has ones on the diagonal and zeros elsewhere.
3945
+ * @param format The Matrix storage format
3946
+ */
3947
+ identity(format?: string): MathJsChain;
3948
+ /**
3949
+ * @param n The y dimension for the matrix
3950
+ * @param format The Matrix storage format
3951
+ */
3952
+ identity(n: number, format?: string): MathJsChain;
3953
+
3954
+ /**
3955
+ * Filter the items in an array or one dimensional matrix.
3956
+ */
3957
+ filter(test: ((value: any, index: any, matrix: Matrix | MathArray) => boolean) | RegExp): MathJsChain;
3958
+
3959
+ /**
3960
+ * Flatten a multi dimensional matrix into a single dimensional matrix.
3961
+ */
3962
+ flatten(): MathJsChain;
3963
+
3964
+ /**
3965
+ * Iterate over all elements of a matrix/array, and executes the given
3966
+ * callback function.
3967
+ */
3968
+ forEach(callback: (value: any, index: any, matrix: Matrix | MathArray) => void): MathJsChain;
3969
+
3970
+ /**
3971
+ * Calculate the inverse of a square matrix.
3972
+ */
3973
+ inv(): MathJsChain;
3974
+
3975
+ /**
3976
+ * Calculate the kronecker product of two matrices or vectors
3977
+ * @param y Second vector
3978
+ */
3979
+ kron(y: Matrix | MathArray): MathJsChain;
3980
+
3981
+ /**
3982
+ * Iterate over all elements of a matrix/array, and executes the given
3983
+ * callback function.
3984
+ * @param callback The callback function is invoked with three
3985
+ * parameters: the value of the element, the index of the element, and
3986
+ * the Matrix/array being traversed.
3987
+ */
3988
+ map(callback: (value: any, index: any, matrix: Matrix | MathArray) => Matrix | MathArray): MathJsChain;
3989
+
3990
+ /**
3991
+ * Create a matrix filled with ones. The created matrix can have one or
3992
+ * multiple dimensions.
3993
+ * @param format The matrix storage format
3994
+ */
3995
+ ones(format?: string): MathJsChain;
3996
+ /**
3997
+ * @param format The matrix storage format
3998
+ */
3999
+ ones(n: number, format?: string): MathJsChain;
4000
+ /**
4001
+ * Partition-based selection of an array or 1D matrix. Will find the kth
4002
+ * smallest value, and mutates the input array. Uses Quickselect.
4003
+ * @param k The kth smallest value to be retrieved; zero-based index
4004
+ * @param compare An optional comparator function. The function is
4005
+ * called as compare(a, b), and must return 1 when a > b, -1 when a < b,
4006
+ * and 0 when a == b. Default value: 'asc'.
4007
+ */
4008
+ partitionSelect(k: number, compare?: 'asc' | 'desc' | ((a: any, b: any) => number)): MathJsChain;
4009
+
4010
+ /**
4011
+ * Create an array from a range. By default, the range end is excluded.
4012
+ * This can be customized by providing an extra parameter includeEnd.
4013
+ * @param end End of the range, excluded by default, included when
4014
+ * parameter includeEnd=true
4015
+ * @param step Step size. Default value is 1.
4016
+ * @param includeEnd: Option to specify whether to include the end or
4017
+ * not. False by default
4018
+ */
4019
+ range(includeEnd?: boolean): Matrix;
4020
+ range(end: number | BigNumber, includeEnd?: boolean): MathJsChain;
4021
+ range(end: number | BigNumber, step: number | BigNumber, includeEnd?: boolean): MathJsChain;
4022
+
4023
+ /**
4024
+ * Reshape a multi dimensional array to fit the specified dimensions
4025
+ * @param sizes One dimensional array with integral sizes for each
4026
+ * dimension
4027
+ */
4028
+ reshape(sizes: number[]): MathJsChain;
4029
+
4030
+ /**
4031
+ * Resize a matrix
4032
+ * @param size One dimensional array with numbers
4033
+ * @param defaultValue Zero by default, except in case of a string, in
4034
+ * that case defaultValue = ' ' Default value: 0.
4035
+ */
4036
+ resize(size: MathArray | Matrix, defaultValue?: number | string): MathJsChain;
4037
+
4038
+ /**
4039
+ * Calculate the size of a matrix or scalar.
4040
+ */
4041
+ size(): MathJsChain;
4042
+
4043
+ /**
4044
+ * Sort the items in a matrix
4045
+ * @param compare An optional _comparator function or name. The function
4046
+ * is called as compare(a, b), and must return 1 when a > b, -1 when a <
4047
+ * b, and 0 when a == b. Default value: ‘asc’
4048
+ */
4049
+ sort(compare: ((a: any, b: any) => number) | 'asc' | 'desc' | 'natural'): MathJsChain;
4050
+
4051
+ /**
4052
+ * Calculate the principal square root of a square matrix. The principal
4053
+ * square root matrix X of another matrix A is such that X * X = A.
4054
+ */
4055
+ sqrtm(): MathJsChain;
4056
+
4057
+ /**
4058
+ * Squeeze a matrix, remove inner and outer singleton dimensions from a
4059
+ * matrix.
4060
+ */
4061
+ squeeze(): MathJsChain;
4062
+
4063
+ /**
4064
+ * Get or set a subset of a matrix or string.
4065
+ * @param index An index containing ranges for each dimension
4066
+ * @param replacement An array, matrix, or scalar. If provided, the
4067
+ * subset is replaced with replacement. If not provided, the subset is
4068
+ * returned
4069
+ * @param defaultValue Default value, filled in on new entries when the
4070
+ * matrix is resized. If not provided, math.matrix elements will be left
4071
+ * undefined. Default value: undefined.
4072
+ */
4073
+ subset(index: Index, replacement?: any, defaultValue?: any): MathJsChain;
4074
+
4075
+ /**
4076
+ * Calculate the trace of a matrix: the sum of the elements on the main
4077
+ * diagonal of a square matrix.
4078
+ */
4079
+ trace(): MathJsChain;
4080
+
4081
+ /**
4082
+ * Transpose a matrix. All values of the matrix are reflected over its
4083
+ * main diagonal. Only two dimensional matrices are supported.
4084
+ */
4085
+ transpose(): MathJsChain;
4086
+
4087
+ /**
4088
+ * Create a matrix filled with zeros. The created matrix can have one or
4089
+ * multiple dimensions.
4090
+ * @param format The matrix storage format
4091
+ * @returns A matrix filled with zeros
4092
+ */
4093
+ zeros(format?: string): MathJsChain;
4094
+ /**
4095
+ * @param n The y dimension of the matrix
4096
+ * @param format The matrix storage format
4097
+ */
4098
+ zeros(n: number, format?: string): MathJsChain;
4099
+
4100
+ /*************************************************************************
4101
+ * Probability functions
4102
+ ************************************************************************/
4103
+
4104
+ /**
4105
+ * Compute the number of ways of picking k unordered outcomes from n
4106
+ * possibilities. Combinations only takes integer arguments. The
4107
+ * following condition must be enforced: k <= n.
4108
+ * @param k Number of objects in the subset
4109
+ */
4110
+ combinations(k: number | BigNumber): MathJsChain;
4111
+
4112
+ /**
4113
+ * Compute the factorial of a value Factorial only supports an integer
4114
+ * value as argument. For matrices, the function is evaluated element
4115
+ * wise.
4116
+ */
4117
+ factorial(): MathJsChain;
4118
+
4119
+ /**
4120
+ * Compute the gamma function of a value using Lanczos approximation for
4121
+ * small values, and an extended Stirling approximation for large
4122
+ * values. For matrices, the function is evaluated element wise.
4123
+ */
4124
+ gamma(): MathJsChain;
4125
+
4126
+ /**
4127
+ * Calculate the Kullback-Leibler (KL) divergence between two
4128
+ * distributions
4129
+ * @param p Second vector
4130
+ */
4131
+ kldivergence(p: MathArray | Matrix): MathJsChain;
4132
+
4133
+ /**
4134
+ * Multinomial Coefficients compute the number of ways of picking a1,
4135
+ * a2, ..., ai unordered outcomes from n possibilities. multinomial
4136
+ * takes one array of integers as an argument. The following condition
4137
+ * must be enforced: every ai <= 0
4138
+ */
4139
+ multinomial(): MathJsChain;
4140
+
4141
+ /**
4142
+ * Compute the number of ways of obtaining an ordered subset of k
4143
+ * elements from a set of n elements. Permutations only takes integer
4144
+ * arguments. The following condition must be enforced: k <= n.
4145
+ * @param k The number of objects in the subset
4146
+ */
4147
+ permutations(k?: number | BigNumber): MathJsChain;
4148
+
4149
+ /**
4150
+ * Random pick a value from a one dimensional array. Array element is
4151
+ * picked using a random function with uniform distribution.
4152
+ * @param number An int or float
4153
+ * @param weights An array of ints or floats
4154
+ */
4155
+ pickRandom(number?: number, weights?: number[]): MathJsChain;
4156
+
4157
+ /**
4158
+ * Return a random number larger or equal to min and smaller than max
4159
+ * using a uniform distribution.
4160
+ * @param min Minimum boundary for the random value, included
4161
+ * @param max Maximum boundary for the random value, excluded
4162
+ */
4163
+ random(max?: number): MathJsChain;
4164
+ // tslint:disable-next-line unified-signatures
4165
+ random(min: number, max: number): MathJsChain;
4166
+
4167
+ /**
4168
+ * Return a random integer number larger or equal to min and smaller
4169
+ * than max using a uniform distribution.
4170
+ * @param min Minimum boundary for the random value, included
4171
+ * @param max Maximum boundary for the random value, excluded
4172
+ */
4173
+ randomInt(max?: number): MathJsChain;
4174
+ // tslint:disable-next-line unified-signatures
4175
+ randomInt(min: number, max: number): MathJsChain;
4176
+
4177
+ /*************************************************************************
4178
+ * Relational functions
4179
+ ************************************************************************/
4180
+
4181
+ /**
4182
+ * Compare two values. Returns 1 when x > y, -1 when x < y, and 0 when x
4183
+ * == y. x and y are considered equal when the relative difference
4184
+ * between x and y is smaller than the configured epsilon. The function
4185
+ * cannot be used to compare values smaller than approximately 2.22e-16.
4186
+ * For matrices, the function is evaluated element wise.
4187
+ * @param y Second value to compare
4188
+ */
4189
+ compare(y: MathType | string): MathJsChain;
4190
+
4191
+ /**
4192
+ * Compare two values of any type in a deterministic, natural way. For
4193
+ * numeric values, the function works the same as math.compare. For
4194
+ * types of values that can’t be compared mathematically, the function
4195
+ * compares in a natural way.
4196
+ * @param y Second value to compare
4197
+ */
4198
+ compareNatural(y: any): MathJsChain;
4199
+
4200
+ /**
4201
+ * Compare two strings lexically. Comparison is case sensitive. Returns
4202
+ * 1 when x > y, -1 when x < y, and 0 when x == y. For matrices, the
4203
+ * function is evaluated element wise.
4204
+ * @param y Second string to compare
4205
+ */
4206
+ compareText(y: string | MathArray | Matrix): MathJsChain;
4207
+
4208
+ /**
4209
+ * Test element wise whether two matrices are equal. The function
4210
+ * accepts both matrices and scalar values.
4211
+ * @param y Second amtrix to compare
4212
+ */
4213
+ deepEqual(y: MathType): MathJsChain;
4214
+
4215
+ /**
4216
+ * Test whether two values are equal.
4217
+ *
4218
+ * The function tests whether the relative difference between x and y is
4219
+ * smaller than the configured epsilon. The function cannot be used to
4220
+ * compare values smaller than approximately 2.22e-16. For matrices, the
4221
+ * function is evaluated element wise. In case of complex numbers, x.re
4222
+ * must equal y.re, and x.im must equal y.im. Values null and undefined
4223
+ * are compared strictly, thus null is only equal to null and nothing
4224
+ * else, and undefined is only equal to undefined and nothing else.
4225
+ * @param y Second value to compare
4226
+ */
4227
+ equal(y: MathType | string): MathJsChain;
4228
+
4229
+ /**
4230
+ * Check equality of two strings. Comparison is case sensitive. For
4231
+ * matrices, the function is evaluated element wise.
4232
+ * @param y Second string to compare
4233
+ */
4234
+ equalText(y: string | MathArray | Matrix): MathJsChain;
4235
+
4236
+ /**
4237
+ * Test whether value x is larger than y. The function returns true when
4238
+ * x is larger than y and the relative difference between x and y is
4239
+ * larger than the configured epsilon. The function cannot be used to
4240
+ * compare values smaller than approximately 2.22e-16. For matrices, the
4241
+ * function is evaluated element wise.
4242
+ * @param y Second value to compare
4243
+ */
4244
+ larger(y: MathType | string): MathJsChain;
4245
+
4246
+ /**
4247
+ * Test whether value x is larger or equal to y. The function returns
4248
+ * true when x is larger than y or the relative difference between x and
4249
+ * y is smaller than the configured epsilon. The function cannot be used
4250
+ * to compare values smaller than approximately 2.22e-16. For matrices,
4251
+ * the function is evaluated element wise.
4252
+ * @param y Second value to vcompare
4253
+ */
4254
+ largerEq(y: MathType | string): MathJsChain;
4255
+
4256
+ /**
4257
+ * Test whether value x is smaller than y. The function returns true
4258
+ * when x is smaller than y and the relative difference between x and y
4259
+ * is smaller than the configured epsilon. The function cannot be used
4260
+ * to compare values smaller than approximately 2.22e-16. For matrices,
4261
+ * the function is evaluated element wise.
4262
+ * @param y Second value to vcompare
4263
+ */
4264
+ smaller(y: MathType | string): MathJsChain;
4265
+
4266
+ /**
4267
+ * Test whether value x is smaller or equal to y. The function returns
4268
+ * true when x is smaller than y or the relative difference between x
4269
+ * and y is smaller than the configured epsilon. The function cannot be
4270
+ * used to compare values smaller than approximately 2.22e-16. For
4271
+ * matrices, the function is evaluated element wise.
4272
+ * @param y Second value to compare
4273
+ */
4274
+ smallerEq(y: MathType | string): MathJsChain;
4275
+
4276
+ /**
4277
+ * Test whether two values are unequal. The function tests whether the
4278
+ * relative difference between x and y is larger than the configured
4279
+ * epsilon. The function cannot be used to compare values smaller than
4280
+ * approximately 2.22e-16. For matrices, the function is evaluated
4281
+ * element wise. In case of complex numbers, x.re must unequal y.re, or
4282
+ * x.im must unequal y.im. Values null and undefined are compared
4283
+ * strictly, thus null is unequal with everything except null, and
4284
+ * undefined is unequal with everything except undefined.
4285
+ * @param y Second value to vcompare
4286
+ */
4287
+ unequal(y: MathType | string): MathJsChain;
4288
+
4289
+ /*************************************************************************
4290
+ * Set functions
4291
+ ************************************************************************/
4292
+
4293
+ /**
4294
+ * Create the cartesian product of two (multi)sets. Multi-dimension
4295
+ * arrays will be converted to single-dimension arrays before the
4296
+ * operation.
4297
+ * @param a2 A (multi)set
4298
+ */
4299
+ setCartesian(a2: MathArray | Matrix): MathJsChain;
4300
+
4301
+ /**
4302
+ * Create the difference of two (multi)sets: every element of set1, that
4303
+ * is not the element of set2. Multi-dimension arrays will be converted
4304
+ * to single-dimension arrays before the operation
4305
+ * @param a2 A (multi)set
4306
+ */
4307
+ setDifference(a2: MathArray | Matrix): MathJsChain;
4308
+
4309
+ /**
4310
+ * Collect the distinct elements of a multiset. A multi-dimension array
4311
+ * will be converted to a single-dimension array before the operation.
4312
+ */
4313
+ setDistinct(): MathJsChain;
4314
+
4315
+ /**
4316
+ * Create the intersection of two (multi)sets. Multi-dimension arrays
4317
+ * will be converted to single-dimension arrays before the operation.
4318
+ * @param a2 A (multi)set
4319
+ */
4320
+ setIntersect(a2: MathArray | Matrix): MathJsChain;
4321
+
4322
+ /**
4323
+ * Check whether a (multi)set is a subset of another (multi)set. (Every
4324
+ * element of set1 is the element of set2.) Multi-dimension arrays will
4325
+ * be converted to single-dimension arrays before the operation.
4326
+ * @param a2 A (multi)set
4327
+ */
4328
+ setIsSubset(a2: MathArray | Matrix): MathJsChain;
4329
+
4330
+ /**
4331
+ * Count the multiplicity of an element in a multiset. A multi-dimension
4332
+ * array will be converted to a single-dimension array before the
4333
+ * operation.
4334
+ * @param a A multiset
4335
+ */
4336
+ setMultiplicity(a: MathArray | Matrix): MathJsChain;
4337
+
4338
+ /**
4339
+ * Create the powerset of a (multi)set. (The powerset contains very
4340
+ * possible subsets of a (multi)set.) A multi-dimension array will be
4341
+ * converted to a single-dimension array before the operation.
4342
+ */
4343
+ setPowerset(): MathJsChain;
4344
+
4345
+ /**
4346
+ * Count the number of elements of a (multi)set. When a second parameter
4347
+ * is ‘true’, count only the unique values. A multi-dimension array will
4348
+ * be converted to a single-dimension array before the operation.
4349
+ */
4350
+ setSize(): MathJsChain;
4351
+
4352
+ /**
4353
+ * Create the symmetric difference of two (multi)sets. Multi-dimension
4354
+ * arrays will be converted to single-dimension arrays before the
4355
+ * operation.
4356
+ * @param a2 A (multi)set
4357
+ */
4358
+ setSymDifference(a2: MathArray | Matrix): MathJsChain;
4359
+
4360
+ /**
4361
+ * Create the union of two (multi)sets. Multi-dimension arrays will be
4362
+ * converted to single-dimension arrays before the operation.
4363
+ * @param a2 A (multi)set
4364
+ */
4365
+ setUnion(a2: MathArray | Matrix): MathJsChain;
4366
+
4367
+ /*************************************************************************
4368
+ * Special functions
4369
+ ************************************************************************/
4370
+
4371
+ /**
4372
+ * Compute the erf function of a value using a rational Chebyshev
4373
+ * approximations for different intervals of x.
4374
+ */
4375
+ erf(): MathJsChain;
4376
+
4377
+ /*************************************************************************
4378
+ * Statistics functions
4379
+ ************************************************************************/
4380
+
4381
+ /**
4382
+ * Compute the median absolute deviation of a matrix or a list with
4383
+ * values. The median absolute deviation is defined as the median of the
4384
+ * absolute deviations from the median.
4385
+ */
4386
+ mad(): MathJsChain;
4387
+
4388
+ /**
4389
+ * Compute the maximum value of a matrix or a list with values. In case
4390
+ * of a multi dimensional array, the maximum of the flattened array will
4391
+ * be calculated. When dim is provided, the maximum over the selected
4392
+ * dimension will be calculated. Parameter dim is zero-based.
4393
+ * @param dim The maximum over the selected dimension
4394
+ */
4395
+ max(dim?: number): MathJsChain;
4396
+
4397
+ /**
4398
+ * Compute the mean value of matrix or a list with values. In case of a
4399
+ * multi dimensional array, the mean of the flattened array will be
4400
+ * calculated. When dim is provided, the maximum over the selected
4401
+ * dimension will be calculated. Parameter dim is zero-based.
4402
+ * @param dim The mean over the selected dimension
4403
+ */
4404
+ mean(dim?: number): MathJsChain;
4405
+
4406
+ /**
4407
+ * Compute the median of a matrix or a list with values. The values are
4408
+ * sorted and the middle value is returned. In case of an even number of
4409
+ * values, the average of the two middle values is returned. Supported
4410
+ * types of values are: Number, BigNumber, Unit In case of a (multi
4411
+ * dimensional) array or matrix, the median of all elements will be
4412
+ * calculated.
4413
+ */
4414
+ median(): MathJsChain;
4415
+
4416
+ /**
4417
+ * Compute the maximum value of a matrix or a list of values. In case of
4418
+ * a multi dimensional array, the maximum of the flattened array will be
4419
+ * calculated. When dim is provided, the maximum over the selected
4420
+ * dimension will be calculated. Parameter dim is zero-based.
4421
+ * @param dim The minimum over the selected dimension
4422
+ */
4423
+ min(dim?: number): MathJsChain;
4424
+
4425
+ /**
4426
+ * Computes the mode of a set of numbers or a list with values(numbers
4427
+ * or characters). If there are more than one modes, it returns a list
4428
+ * of those values.
4429
+ */
4430
+ mode(): MathJsChain;
4431
+
4432
+ /**
4433
+ * Compute the product of a matrix or a list with values. In case of a
4434
+ * (multi dimensional) array or matrix, the sum of all elements will be
4435
+ * calculated.
4436
+ */
4437
+ prod(): MathJsChain;
4438
+
4439
+ /**
4440
+ * Compute the prob order quantile of a matrix or a list with values.
4441
+ * The sequence is sorted and the middle value is returned. Supported
4442
+ * types of sequence values are: Number, BigNumber, Unit Supported types
4443
+ * of probability are: Number, BigNumber In case of a (multi
4444
+ * dimensional) array or matrix, the prob order quantile of all elements
4445
+ * will be calculated.
4446
+ * @param probOrN prob is the order of the quantile, while N is the
4447
+ * amount of evenly distributed steps of probabilities; only one of
4448
+ * these options can be provided
4449
+ * @param sorted =false is data sorted in ascending order
4450
+ */
4451
+ quantileSeq(prob: number | BigNumber | MathArray, sorted?: boolean): MathJsChain;
4452
+
4453
+ /**
4454
+ * Compute the standard deviation of a matrix or a list with values. The
4455
+ * standard deviations is defined as the square root of the variance:
4456
+ * std(A) = sqrt(variance(A)). In case of a (multi dimensional) array or
4457
+ * matrix, the standard deviation over all elements will be calculated.
4458
+ * Optionally, the type of normalization can be specified as second
4459
+ * parameter. The parameter normalization can be one of the following
4460
+ * values: 'unbiased' (default) The sum of squared errors is divided by
4461
+ * (n - 1) 'uncorrected' The sum of squared errors is divided by n
4462
+ * 'biased' The sum of squared errors is divided by (n + 1)
4463
+ * @param array A single matrix or multiple scalar values
4464
+ * @param normalization Determines how to normalize the variance. Choose
4465
+ * ‘unbiased’ (default), ‘uncorrected’, or ‘biased’. Default value:
4466
+ * ‘unbiased’.
4467
+ * @returns The standard deviation
4468
+ */
4469
+ std(normalization?: 'unbiased' | 'uncorrected' | 'biased' | 'unbiased'): MathJsChain;
4470
+
4471
+ /**
4472
+ * Compute the sum of a matrix or a list with values. In case of a
4473
+ * (multi dimensional) array or matrix, the sum of all elements will be
4474
+ * calculated.
4475
+ */
4476
+ sum(): MathJsChain;
4477
+
4478
+ /**
4479
+ * Compute the variance of a matrix or a list with values. In case of a
4480
+ * (multi dimensional) array or matrix, the variance over all elements
4481
+ * will be calculated. Optionally, the type of normalization can be
4482
+ * specified as second parameter. The parameter normalization can be one
4483
+ * of the following values: 'unbiased' (default) The sum of squared
4484
+ * errors is divided by (n - 1) 'uncorrected' The sum of squared errors
4485
+ * is divided by n 'biased' The sum of squared errors is divided by (n +
4486
+ * 1) Note that older browser may not like the variable name var. In
4487
+ * that case, the function can be called as math['var'](...) instead of
4488
+ * math.variance(...).
4489
+ * @param normalization normalization Determines how to normalize the
4490
+ * variance. Choose ‘unbiased’ (default), ‘uncorrected’, or ‘biased’.
4491
+ * Default value: ‘unbiased’.
4492
+ * @returns The variance
4493
+ */
4494
+ variance(normalization?: 'unbiased' | 'uncorrected' | 'biased' | 'unbiased'): MathJsChain;
4495
+
4496
+ /*************************************************************************
4497
+ * String functions
4498
+ ************************************************************************/
4499
+
4500
+ /**
4501
+ * Format a value of any type into a string.
4502
+ * @param options An object with formatting options.
4503
+ * @param callback A custom formatting function, invoked for all numeric
4504
+ * elements in value, for example all elements of a matrix, or the real
4505
+ * and imaginary parts of a complex number. This callback can be used to
4506
+ * override the built-in numeric notation with any type of formatting.
4507
+ * Function callback is called with value as parameter and must return a
4508
+ * string.
4509
+ * @see http://mathjs.org/docs/reference/functions/format.html
4510
+ */
4511
+ format(value: any, options?: FormatOptions | number | ((item: any) => string), callback?: (value: any) => string): MathJsChain;
4512
+
4513
+ /**
4514
+ * Interpolate values into a string template.
4515
+ * @param values An object containing variables which will be filled in
4516
+ * in the template.
4517
+ * @param precision Number of digits to format numbers. If not provided,
4518
+ * the value will not be rounded.
4519
+ * @param options Formatting options, or the number of digits to format
4520
+ * numbers. See function math.format for a description of all options.
4521
+ */
4522
+ print(values: any, precision?: number, options?: number | object): MathJsChain;
4523
+
4524
+ /*************************************************************************
4525
+ * Trigonometry functions
4526
+ ************************************************************************/
4527
+
4528
+ /**
4529
+ * Calculate the inverse cosine of a value. For matrices, the function
4530
+ * is evaluated element wise.
4531
+ */
4532
+ acos(): MathJsChain;
4533
+
4534
+ /**
4535
+ * Calculate the hyperbolic arccos of a value, defined as acosh(x) =
4536
+ * ln(sqrt(x^2 - 1) + x). For matrices, the function is evaluated
4537
+ * element wise.
4538
+ */
4539
+ acosh(): MathJsChain;
4540
+
4541
+ /**
4542
+ * Calculate the inverse cotangent of a value. For matrices, the
4543
+ * function is evaluated element wise.
4544
+ */
4545
+ acot(): MathJsChain;
4546
+
4547
+ /**
4548
+ * Calculate the hyperbolic arccotangent of a value, defined as acoth(x)
4549
+ * = (ln((x+1)/x) + ln(x/(x-1))) / 2. For matrices, the function is
4550
+ * evaluated element wise.
4551
+ */
4552
+ acoth(): MathJsChain;
4553
+
4554
+ /**
4555
+ * Calculate the inverse cosecant of a value. For matrices, the function
4556
+ * is evaluated element wise.
4557
+ */
4558
+ acsc(): MathJsChain;
4559
+
4560
+ /**
4561
+ * Calculate the hyperbolic arccosecant of a value, defined as acsch(x)
4562
+ * = ln(1/x + sqrt(1/x^2 + 1)). For matrices, the function is evaluated
4563
+ * element wise.
4564
+ */
4565
+ acsch(): MathJsChain;
4566
+
4567
+ /**
4568
+ * Calculate the inverse secant of a value. For matrices, the function
4569
+ * is evaluated element wise.
4570
+ */
4571
+ asec(): MathJsChain;
4572
+
4573
+ /**
4574
+ * Calculate the hyperbolic arcsecant of a value, defined as asech(x) =
4575
+ * ln(sqrt(1/x^2 - 1) + 1/x). For matrices, the function is evaluated
4576
+ * element wise.
4577
+ */
4578
+ asech(): MathJsChain;
4579
+
4580
+ /**
4581
+ * Calculate the inverse sine of a value. For matrices, the function is
4582
+ * evaluated element wise.
4583
+ */
4584
+ asin(): MathJsChain;
4585
+
4586
+ /**
4587
+ * Calculate the hyperbolic arcsine of a value, defined as asinh(x) =
4588
+ * ln(x + sqrt(x^2 + 1)). For matrices, the function is evaluated
4589
+ * element wise.
4590
+ */
4591
+ asinh(): MathJsChain;
4592
+
4593
+ /**
4594
+ * Calculate the inverse tangent of a value. For matrices, the function
4595
+ * is evaluated element wise.
4596
+ */
4597
+ atan(): MathJsChain;
4598
+
4599
+ /**
4600
+ * Calculate the inverse tangent function with two arguments, y/x. By
4601
+ * providing two arguments, the right quadrant of the computed angle can
4602
+ * be determined. For matrices, the function is evaluated element wise.
4603
+ */
4604
+ atan2(): MathJsChain;
4605
+
4606
+ /**
4607
+ * Calculate the hyperbolic arctangent of a value, defined as atanh(x) =
4608
+ * ln((1 + x)/(1 - x)) / 2. For matrices, the function is evaluated
4609
+ * element wise.
4610
+ */
4611
+ atanh(): MathJsChain;
4612
+
4613
+ /**
4614
+ * Calculate the cosine of a value. For matrices, the function is
4615
+ * evaluated element wise.
4616
+ */
4617
+ cos(): MathJsChain;
4618
+
4619
+ /**
4620
+ * Calculate the hyperbolic cosine of a value, defined as cosh(x) = 1/2
4621
+ * * (exp(x) + exp(-x)). For matrices, the function is evaluated element
4622
+ * wise.
4623
+ */
4624
+ cosh(): MathJsChain;
4625
+
4626
+ /**
4627
+ * Calculate the cotangent of a value. cot(x) is defined as 1 / tan(x).
4628
+ * For matrices, the function is evaluated element wise.
4629
+ */
4630
+ cot(): MathJsChain;
4631
+
4632
+ /**
4633
+ * Calculate the hyperbolic cotangent of a value, defined as coth(x) = 1
4634
+ * / tanh(x). For matrices, the function is evaluated element wise.
4635
+ */
4636
+ coth(): MathJsChain;
4637
+
4638
+ /**
4639
+ * Calculate the cosecant of a value, defined as csc(x) = 1/sin(x). For
4640
+ * matrices, the function is evaluated element wise.
4641
+ */
4642
+ csc(): MathJsChain;
4643
+
4644
+ /**
4645
+ * Calculate the hyperbolic cosecant of a value, defined as csch(x) = 1
4646
+ * / sinh(x). For matrices, the function is evaluated element wise.
4647
+ */
4648
+ csch(): MathJsChain;
4649
+
4650
+ /**
4651
+ * Calculate the secant of a value, defined as sec(x) = 1/cos(x). For
4652
+ * matrices, the function is evaluated element wise.
4653
+ */
4654
+ sec(): MathJsChain;
4655
+
4656
+ /**
4657
+ * Calculate the hyperbolic secant of a value, defined as sech(x) = 1 /
4658
+ * cosh(x). For matrices, the function is evaluated element wise.
4659
+ */
4660
+ sech(): MathJsChain;
4661
+
4662
+ /**
4663
+ * Calculate the sine of a value. For matrices, the function is
4664
+ * evaluated element wise.
4665
+ */
4666
+ sin(): MathJsChain;
4667
+
4668
+ /**
4669
+ * Calculate the hyperbolic sine of a value, defined as sinh(x) = 1/2 *
4670
+ * (exp(x) - exp(-x)). For matrices, the function is evaluated element
4671
+ * wise.
4672
+ */
4673
+ sinh(): MathJsChain;
4674
+
4675
+ /**
4676
+ * Calculate the tangent of a value. tan(x) is equal to sin(x) / cos(x).
4677
+ * For matrices, the function is evaluated element wise.
4678
+ */
4679
+ tan(): MathJsChain;
4680
+
4681
+ /**
4682
+ * Calculate the hyperbolic tangent of a value, defined as tanh(x) =
4683
+ * (exp(2 * x) - 1) / (exp(2 * x) + 1). For matrices, the function is
4684
+ * evaluated element wise.
4685
+ */
4686
+ tanh(): MathJsChain;
4687
+
4688
+ /*************************************************************************
4689
+ * Unit functions
4690
+ ************************************************************************/
4691
+
4692
+ /**
4693
+ * Change the unit of a value. For matrices, the function is evaluated
4694
+ * element wise.
4695
+ * @param unit New unit. Can be a string like "cm" or a unit without
4696
+ * value.
4697
+ */
4698
+ to(unit: Unit | string): MathJsChain;
4699
+
4700
+ /*************************************************************************
4701
+ * Utils functions
4702
+ ************************************************************************/
4703
+
4704
+ /**
4705
+ * Clone an object.
4706
+ */
4707
+ clone(): MathJsChain;
4708
+
4709
+ /**
4710
+ * Test whether a value is an integer number. The function supports
4711
+ * number, BigNumber, and Fraction. The function is evaluated
4712
+ * element-wise in case of Array or Matrix input.
4713
+ */
4714
+ isInteger(): MathJsChain;
4715
+
4716
+ /**
4717
+ * Test whether a value is NaN (not a number). The function supports
4718
+ * types number, BigNumber, Fraction, Unit and Complex. The function is
4719
+ * evaluated element-wise in case of Array or Matrix input.
4720
+ */
4721
+ isNaN(): MathJsChain;
4722
+
4723
+ /**
4724
+ * Test whether a value is negative: smaller than zero. The function
4725
+ * supports types number, BigNumber, Fraction, and Unit. The function is
4726
+ * evaluated element-wise in case of Array or Matrix input.
4727
+ */
4728
+ isNegative(): MathJsChain;
4729
+
4730
+ /**
4731
+ * Test whether a value is an numeric value. The function is evaluated
4732
+ * element-wise in case of Array or Matrix input.
4733
+ */
4734
+ isNumeric(): MathJsChain;
4735
+
4736
+ /**
4737
+ * Test whether a value is positive: larger than zero. The function
4738
+ * supports types number, BigNumber, Fraction, and Unit. The function is
4739
+ * evaluated element-wise in case of Array or Matrix input.
4740
+ */
4741
+ isPositive(): MathJsChain;
4742
+
4743
+ /**
4744
+ * Test whether a value is prime: has no divisors other than itself and
4745
+ * one. The function supports type number, bignumber. The function is
4746
+ * evaluated element-wise in case of Array or Matrix input.
4747
+ */
4748
+ isPrime(): MathJsChain;
4749
+
4750
+ /**
4751
+ * Test whether a value is zero. The function can check for zero for
4752
+ * types number, BigNumber, Fraction, Complex, and Unit. The function is
4753
+ * evaluated element-wise in case of Array or Matrix input.
4754
+ */
4755
+ isZero(): MathJsChain;
4756
+
4757
+ /**
4758
+ * Determine the type of a variable.
4759
+ */
4760
+ typeOf(): MathJsChain;
4761
+ }
4762
+
4763
+ interface ImportOptions {
4764
+ override?: boolean;
4765
+ silent?: boolean;
4766
+ wrap?: boolean;
4767
+ }
4768
+
4769
+ interface ImportObject {
4770
+ [key: string]: any;
4771
+ }
4772
+ }