mathjs 10.5.0 → 10.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. package/HISTORY.md +12 -0
  2. package/docs/datatypes/matrices.md +17 -0
  3. package/docs/expressions/syntax.md +4 -1
  4. package/docs/reference/functions/fix.md +1 -0
  5. package/docs/reference/functions/floor.md +4 -0
  6. package/docs/reference/functions/resolve.md +2 -2
  7. package/docs/reference/functions/simplifyConstant.md +52 -0
  8. package/lib/browser/math.js +5 -5
  9. package/lib/browser/math.js.map +1 -1
  10. package/lib/cjs/entry/dependenciesAny/dependenciesCeil.generated.js +6 -0
  11. package/lib/cjs/entry/dependenciesAny/dependenciesFix.generated.js +9 -0
  12. package/lib/cjs/entry/dependenciesAny/dependenciesFloor.generated.js +6 -0
  13. package/lib/cjs/entry/dependenciesAny/dependenciesIndexNode.generated.js +0 -3
  14. package/lib/cjs/entry/dependenciesNumber/dependenciesCeil.generated.js +3 -0
  15. package/lib/cjs/entry/dependenciesNumber/dependenciesFix.generated.js +6 -0
  16. package/lib/cjs/entry/dependenciesNumber/dependenciesFloor.generated.js +3 -0
  17. package/lib/cjs/entry/dependenciesNumber/dependenciesIndexNode.generated.js +0 -3
  18. package/lib/cjs/entry/impureFunctionsAny.generated.js +0 -1
  19. package/lib/cjs/entry/impureFunctionsNumber.generated.js +6 -7
  20. package/lib/cjs/entry/pureFunctionsAny.generated.js +10 -3
  21. package/lib/cjs/entry/pureFunctionsNumber.generated.js +21 -15
  22. package/lib/cjs/expression/node/IndexNode.js +26 -61
  23. package/lib/cjs/factoriesNumber.js +29 -24
  24. package/lib/cjs/function/algebra/resolve.js +3 -3
  25. package/lib/cjs/function/arithmetic/ceil.js +75 -39
  26. package/lib/cjs/function/arithmetic/fix.js +54 -16
  27. package/lib/cjs/function/arithmetic/floor.js +79 -37
  28. package/lib/cjs/function/arithmetic/nthRoot.js +1 -3
  29. package/lib/cjs/function/arithmetic/round.js +27 -47
  30. package/lib/cjs/header.js +2 -2
  31. package/lib/cjs/plain/number/arithmetic.js +9 -27
  32. package/lib/cjs/type/matrix/function/sparse.js +6 -0
  33. package/lib/cjs/utils/lruQueue.js +1 -3
  34. package/lib/cjs/utils/object.js +3 -1
  35. package/lib/cjs/version.js +1 -1
  36. package/lib/esm/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
  37. package/lib/esm/entry/dependenciesAny/dependenciesFix.generated.js +6 -0
  38. package/lib/esm/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
  39. package/lib/esm/entry/dependenciesAny/dependenciesIndexNode.generated.js +0 -2
  40. package/lib/esm/entry/dependenciesNumber/dependenciesCeil.generated.js +2 -0
  41. package/lib/esm/entry/dependenciesNumber/dependenciesFix.generated.js +4 -0
  42. package/lib/esm/entry/dependenciesNumber/dependenciesFloor.generated.js +2 -0
  43. package/lib/esm/entry/dependenciesNumber/dependenciesIndexNode.generated.js +0 -2
  44. package/lib/esm/entry/impureFunctionsAny.generated.js +0 -1
  45. package/lib/esm/entry/impureFunctionsNumber.generated.js +7 -8
  46. package/lib/esm/entry/pureFunctionsAny.generated.js +10 -3
  47. package/lib/esm/entry/pureFunctionsNumber.generated.js +16 -10
  48. package/lib/esm/expression/node/BlockNode.js +3 -3
  49. package/lib/esm/expression/node/IndexNode.js +22 -59
  50. package/lib/esm/expression/parse.js +5 -5
  51. package/lib/esm/factoriesNumber.js +6 -6
  52. package/lib/esm/function/algebra/decomposition/qr.js +2 -2
  53. package/lib/esm/function/algebra/resolve.js +3 -3
  54. package/lib/esm/function/algebra/solver/utils/solveValidation.js +5 -5
  55. package/lib/esm/function/algebra/sparse/csChol.js +2 -2
  56. package/lib/esm/function/algebra/sparse/csLeaf.js +2 -2
  57. package/lib/esm/function/algebra/sparse/csLu.js +3 -3
  58. package/lib/esm/function/arithmetic/ceil.js +61 -24
  59. package/lib/esm/function/arithmetic/fix.js +51 -13
  60. package/lib/esm/function/arithmetic/floor.js +65 -23
  61. package/lib/esm/function/arithmetic/nthRoot.js +1 -3
  62. package/lib/esm/function/arithmetic/nthRoots.js +1 -1
  63. package/lib/esm/function/arithmetic/round.js +25 -43
  64. package/lib/esm/function/matrix/expm.js +2 -2
  65. package/lib/esm/function/probability/gamma.js +1 -1
  66. package/lib/esm/function/string/bin.js +1 -1
  67. package/lib/esm/function/string/hex.js +1 -1
  68. package/lib/esm/function/string/oct.js +1 -1
  69. package/lib/esm/plain/number/arithmetic.js +9 -17
  70. package/lib/esm/type/complex/Complex.js +2 -2
  71. package/lib/esm/type/matrix/DenseMatrix.js +2 -2
  72. package/lib/esm/type/matrix/FibonacciHeap.js +2 -2
  73. package/lib/esm/type/matrix/SparseMatrix.js +13 -13
  74. package/lib/esm/type/matrix/function/sparse.js +6 -0
  75. package/lib/esm/type/unit/Unit.js +7 -7
  76. package/lib/esm/utils/lruQueue.js +1 -2
  77. package/lib/esm/utils/number.js +3 -3
  78. package/lib/esm/utils/object.js +3 -1
  79. package/lib/esm/version.js +1 -1
  80. package/package.json +14 -3
  81. package/types/index.d.ts +1794 -1372
  82. package/types/index.ts +697 -266
package/HISTORY.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # History
2
2
 
3
+ # 2022-05-02 version 10.5.1
4
+
5
+ - Fix #2526, #2529: improve TypeScript definitions of function `round`, `fix`,
6
+ `floor`, `ceil`, and `nthRoot`, and improved the number only implementations
7
+ of those functions (#2531, #2539). Thanks @simlaticak and @gwhitney.
8
+ - Fix #2532: matrix index symbol `end` not working when used inside
9
+ a sub-expression.
10
+ - Fix #2524: In generating AUTHORS list, ignore a list of specific commits
11
+ (e.g., to avoid spurious duplicates in list). (#2543)
12
+ - Add type definitions of function `resolve` (#2536). Thanks @mattvague.
13
+
14
+
3
15
  # 2022-04-19, version 10.5.0
4
16
 
5
17
  - Implement #1563: function `pinv`, Moore–Penrose inverse (#2521).
@@ -342,6 +342,23 @@ const m1 = math.matrix([[0, 1], [0, 0]], 'sparse')
342
342
  const m2 = math.identity(1000, 1000, 'sparse')
343
343
  ```
344
344
 
345
+ You can also coerce an array or matrix into sparse storage format with the
346
+ `sparse` function.
347
+ ```js
348
+ const md = math.matrix([[0, 1], [0,0]]) // dense
349
+ const ms = math.sparse(md) // sparse
350
+ ```
351
+
352
+ Caution: `sparse` called on a JavaScript array of _n_ plain numbers produces
353
+ a matrix with one column and _n_ rows -- in contrast to `matrix`, which
354
+ produces a 1-dimensional matrix object with _n_ entries, i.e., a vector
355
+ (_not_ a 1 by _n_ "row vector" nor an _n_ by 1 "column vector", but just a plain
356
+ vector of length _n_).
357
+ ```js
358
+ const mv = math.matrix([0, 0, 1]) // Has size [3]
359
+ const mc = math.sparse([0, 0, 1]) // A "column vector," has size [3, 1]
360
+ ```
361
+
345
362
  ## API
346
363
 
347
364
  All relevant functions in math.js support Matrices and Arrays. Functions like `math.add` and `math.subtract`, `math.sqrt` handle matrices element wise. There is a set of functions specifically for creating or manipulating matrices, such as:
@@ -549,8 +549,11 @@ can be replaced by using indexes. Indexes are enclosed in square brackets, and
549
549
  contain a number or a range for each of the matrix dimensions. A range can have
550
550
  its start and/or end undefined. When the start is undefined, the range will start
551
551
  at 1, when the end is undefined, the range will end at the end of the matrix.
552
+
552
553
  There is a context variable `end` available as well to denote the end of the
553
- matrix.
554
+ matrix. This variable cannot be used in multiple nested indices. In that case,
555
+ `end` will be resolved as the end of the innermost matrix. To solve this,
556
+ resolving of the nested index needs to be split in two separate operations.
554
557
 
555
558
  *IMPORTANT: matrix indexes and ranges work differently from the math.js indexes
556
559
  in JavaScript: They are one-based with an included upper-bound, similar to most
@@ -10,6 +10,7 @@ For matrices, the function is evaluated element wise.
10
10
 
11
11
  ```js
12
12
  math.fix(x)
13
+ math.fix(x,n)
13
14
  ```
14
15
 
15
16
  ### Parameters
@@ -52,6 +52,10 @@ math.floor(c, 1) // returns Complex 3.2 - 2.8i
52
52
 
53
53
  math.floor([3.2, 3.8, -4.7]) // returns Array [3, 3, -5]
54
54
  math.floor([3.21, 3.82, -4.71], 1) // returns Array [3.2, 3.8, -4.8]
55
+
56
+ math.floor(math.tau, [2, 3]) // returns Array [6.28, 6.283]
57
+
58
+ // Note that floor(array, array) currently not implemented.
55
59
  ```
56
60
 
57
61
 
@@ -15,14 +15,14 @@ resolve(expr, scope)
15
15
 
16
16
  Parameter | Type | Description
17
17
  --------- | ---- | -----------
18
- `node` | Node | The expression tree to be simplified
18
+ `node` | Node | Node[] | The expression tree (or trees) to be simplified
19
19
  `scope` | Object | Scope specifying variables to be resolved
20
20
 
21
21
  ### Returns
22
22
 
23
23
  Type | Description
24
24
  ---- | -----------
25
- Node | Returns `node` with variables recursively substituted.
25
+ Node | Node[] | Returns `node` with variables recursively substituted.
26
26
 
27
27
 
28
28
  ### Throws
@@ -0,0 +1,52 @@
1
+ <!-- Note: This file is automatically generated from source code comments. Changes made in this file will be overridden. -->
2
+
3
+ # Function simplifyConstant
4
+
5
+ simplifyConstant() takes a mathjs expression (either a Node representing
6
+ a parse tree or a string which it parses to produce a node), and replaces
7
+ any subexpression of it consisting entirely of constants with the computed
8
+ value of that subexpression.
9
+
10
+
11
+ ## Syntax
12
+
13
+ ```js
14
+ simplifyConstant(expr)
15
+ simplifyConstant(expr, options)
16
+ ```
17
+
18
+ ### Parameters
19
+
20
+ Parameter | Type | Description
21
+ --------- | ---- | -----------
22
+ `node` | Node &#124; string | The expression to be simplified
23
+ `options` | Object | Simplification options, as per simplify()
24
+
25
+ ### Returns
26
+
27
+ Type | Description
28
+ ---- | -----------
29
+ Node | Returns expression with constant subexpressions evaluated
30
+
31
+
32
+ ### Throws
33
+
34
+ Type | Description
35
+ ---- | -----------
36
+
37
+
38
+ ## Examples
39
+
40
+ ```js
41
+ math.simplifyConstant('x + 4*3/6') // Node "x + 2"
42
+ math.simplifyConstant('z cos(0)') // Node "z 1"
43
+ math.simplifyConstant('(5.2 + 1.08)t', {exactFractions: false}) // Node "6.28 t"
44
+ ```
45
+
46
+
47
+ ## See also
48
+
49
+ [simplify](simplify.md),
50
+ [simplifyCore](simplifyCore.md),
51
+ [resolve](resolve.md),
52
+ [derivative](derivative.md)