mathjs 10.4.2 → 10.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/HISTORY.md +36 -0
  2. package/docs/datatypes/matrices.md +17 -0
  3. package/docs/expressions/syntax.md +11 -4
  4. package/docs/reference/functions/fix.md +1 -0
  5. package/docs/reference/functions/floor.md +4 -0
  6. package/docs/reference/functions/lgamma.md +46 -0
  7. package/docs/reference/functions/pinv.md +44 -0
  8. package/docs/reference/functions/pow.md +8 -2
  9. package/docs/reference/functions/resolve.md +2 -2
  10. package/docs/reference/functions/simplifyConstant.md +52 -0
  11. package/docs/reference/functions/stirlingS2.md +5 -1
  12. package/docs/reference/functions.md +2 -0
  13. package/lib/browser/math.js +6 -6
  14. package/lib/browser/math.js.map +1 -1
  15. package/lib/cjs/entry/dependenciesAny/dependenciesCeil.generated.js +6 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesDet.generated.js +5 -2
  17. package/lib/cjs/entry/dependenciesAny/dependenciesFix.generated.js +9 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesFloor.generated.js +6 -0
  19. package/lib/cjs/entry/dependenciesAny/dependenciesIndexNode.generated.js +0 -3
  20. package/lib/cjs/entry/dependenciesAny/dependenciesLgamma.generated.js +23 -0
  21. package/lib/cjs/entry/dependenciesAny/dependenciesPinv.generated.js +53 -0
  22. package/lib/cjs/entry/dependenciesAny/dependenciesPow.generated.js +3 -0
  23. package/lib/cjs/entry/dependenciesAny/dependenciesStirlingS2.generated.js +6 -0
  24. package/lib/cjs/entry/dependenciesAny.generated.js +16 -0
  25. package/lib/cjs/entry/dependenciesNumber/dependenciesCeil.generated.js +3 -0
  26. package/lib/cjs/entry/dependenciesNumber/dependenciesFix.generated.js +6 -0
  27. package/lib/cjs/entry/dependenciesNumber/dependenciesFloor.generated.js +3 -0
  28. package/lib/cjs/entry/dependenciesNumber/dependenciesIndexNode.generated.js +0 -3
  29. package/lib/cjs/entry/dependenciesNumber/dependenciesLgamma.generated.js +20 -0
  30. package/lib/cjs/entry/dependenciesNumber/dependenciesStirlingS2.generated.js +3 -0
  31. package/lib/cjs/entry/dependenciesNumber.generated.js +8 -0
  32. package/lib/cjs/entry/impureFunctionsAny.generated.js +96 -95
  33. package/lib/cjs/entry/impureFunctionsNumber.generated.js +11 -11
  34. package/lib/cjs/entry/pureFunctionsAny.generated.js +227 -196
  35. package/lib/cjs/entry/pureFunctionsNumber.generated.js +36 -25
  36. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +6 -0
  37. package/lib/cjs/expression/embeddedDocs/function/arithmetic/pow.js +1 -1
  38. package/lib/cjs/expression/embeddedDocs/function/matrix/pinv.js +15 -0
  39. package/lib/cjs/expression/embeddedDocs/function/probability/lgamma.js +15 -0
  40. package/lib/cjs/expression/node/IndexNode.js +26 -61
  41. package/lib/cjs/factoriesAny.js +16 -0
  42. package/lib/cjs/factoriesNumber.js +44 -27
  43. package/lib/cjs/function/algebra/resolve.js +3 -3
  44. package/lib/cjs/function/arithmetic/ceil.js +75 -39
  45. package/lib/cjs/function/arithmetic/fix.js +54 -16
  46. package/lib/cjs/function/arithmetic/floor.js +79 -37
  47. package/lib/cjs/function/arithmetic/nthRoot.js +1 -3
  48. package/lib/cjs/function/arithmetic/pow.js +25 -6
  49. package/lib/cjs/function/arithmetic/round.js +27 -47
  50. package/lib/cjs/function/combinatorics/stirlingS2.js +42 -12
  51. package/lib/cjs/function/matrix/det.js +37 -31
  52. package/lib/cjs/function/matrix/pinv.js +223 -0
  53. package/lib/cjs/function/probability/lgamma.js +146 -0
  54. package/lib/cjs/header.js +2 -2
  55. package/lib/cjs/plain/number/arithmetic.js +17 -31
  56. package/lib/cjs/plain/number/probability.js +43 -3
  57. package/lib/cjs/type/matrix/function/sparse.js +6 -0
  58. package/lib/cjs/utils/latex.js +6 -0
  59. package/lib/cjs/utils/lruQueue.js +1 -3
  60. package/lib/cjs/utils/number.js +17 -2
  61. package/lib/cjs/utils/object.js +3 -1
  62. package/lib/cjs/version.js +1 -1
  63. package/lib/esm/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
  64. package/lib/esm/entry/dependenciesAny/dependenciesDet.generated.js +4 -2
  65. package/lib/esm/entry/dependenciesAny/dependenciesFix.generated.js +6 -0
  66. package/lib/esm/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
  67. package/lib/esm/entry/dependenciesAny/dependenciesIndexNode.generated.js +0 -2
  68. package/lib/esm/entry/dependenciesAny/dependenciesLgamma.generated.js +12 -0
  69. package/lib/esm/entry/dependenciesAny/dependenciesPinv.generated.js +32 -0
  70. package/lib/esm/entry/dependenciesAny/dependenciesPow.generated.js +2 -0
  71. package/lib/esm/entry/dependenciesAny/dependenciesStirlingS2.generated.js +4 -0
  72. package/lib/esm/entry/dependenciesAny.generated.js +2 -0
  73. package/lib/esm/entry/dependenciesNumber/dependenciesCeil.generated.js +2 -0
  74. package/lib/esm/entry/dependenciesNumber/dependenciesFix.generated.js +4 -0
  75. package/lib/esm/entry/dependenciesNumber/dependenciesFloor.generated.js +2 -0
  76. package/lib/esm/entry/dependenciesNumber/dependenciesIndexNode.generated.js +0 -2
  77. package/lib/esm/entry/dependenciesNumber/dependenciesLgamma.generated.js +10 -0
  78. package/lib/esm/entry/dependenciesNumber/dependenciesStirlingS2.generated.js +2 -0
  79. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  80. package/lib/esm/entry/impureFunctionsAny.generated.js +90 -89
  81. package/lib/esm/entry/impureFunctionsNumber.generated.js +12 -12
  82. package/lib/esm/entry/pureFunctionsAny.generated.js +191 -162
  83. package/lib/esm/entry/pureFunctionsNumber.generated.js +24 -14
  84. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +4 -0
  85. package/lib/esm/expression/embeddedDocs/function/arithmetic/pow.js +1 -1
  86. package/lib/esm/expression/embeddedDocs/function/matrix/pinv.js +8 -0
  87. package/lib/esm/expression/embeddedDocs/function/probability/lgamma.js +8 -0
  88. package/lib/esm/expression/node/BlockNode.js +3 -3
  89. package/lib/esm/expression/node/IndexNode.js +22 -59
  90. package/lib/esm/expression/parse.js +5 -5
  91. package/lib/esm/factoriesAny.js +2 -0
  92. package/lib/esm/factoriesNumber.js +21 -8
  93. package/lib/esm/function/algebra/decomposition/qr.js +2 -2
  94. package/lib/esm/function/algebra/resolve.js +3 -3
  95. package/lib/esm/function/algebra/solver/utils/solveValidation.js +5 -5
  96. package/lib/esm/function/algebra/sparse/csChol.js +2 -2
  97. package/lib/esm/function/algebra/sparse/csLeaf.js +2 -2
  98. package/lib/esm/function/algebra/sparse/csLu.js +3 -3
  99. package/lib/esm/function/arithmetic/ceil.js +61 -24
  100. package/lib/esm/function/arithmetic/fix.js +51 -13
  101. package/lib/esm/function/arithmetic/floor.js +65 -23
  102. package/lib/esm/function/arithmetic/nthRoot.js +1 -3
  103. package/lib/esm/function/arithmetic/nthRoots.js +1 -1
  104. package/lib/esm/function/arithmetic/pow.js +25 -6
  105. package/lib/esm/function/arithmetic/round.js +25 -43
  106. package/lib/esm/function/combinatorics/stirlingS2.js +41 -12
  107. package/lib/esm/function/matrix/det.js +35 -31
  108. package/lib/esm/function/matrix/expm.js +2 -2
  109. package/lib/esm/function/matrix/pinv.js +205 -0
  110. package/lib/esm/function/probability/gamma.js +1 -1
  111. package/lib/esm/function/probability/lgamma.js +137 -0
  112. package/lib/esm/function/string/bin.js +1 -1
  113. package/lib/esm/function/string/hex.js +1 -1
  114. package/lib/esm/function/string/oct.js +1 -1
  115. package/lib/esm/plain/number/arithmetic.js +16 -20
  116. package/lib/esm/plain/number/probability.js +33 -1
  117. package/lib/esm/type/complex/Complex.js +2 -2
  118. package/lib/esm/type/matrix/DenseMatrix.js +2 -2
  119. package/lib/esm/type/matrix/FibonacciHeap.js +2 -2
  120. package/lib/esm/type/matrix/SparseMatrix.js +13 -13
  121. package/lib/esm/type/matrix/function/sparse.js +6 -0
  122. package/lib/esm/type/unit/Unit.js +7 -7
  123. package/lib/esm/utils/latex.js +6 -0
  124. package/lib/esm/utils/lruQueue.js +1 -2
  125. package/lib/esm/utils/number.js +16 -4
  126. package/lib/esm/utils/object.js +3 -1
  127. package/lib/esm/version.js +1 -1
  128. package/package.json +20 -9
  129. package/types/index.d.ts +1806 -1363
  130. package/types/index.ts +705 -264
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { config } from './configReadonly.js';
6
6
  import { createE, createFalse, createIndex, createInfinity, createLN10, createLOG10E, createMatrix, createNaN, createNull, createPhi, createRangeClass, createReplacer, createResultSet, createSQRT1_2, // eslint-disable-line camelcase
7
- createSubset, createTau, createTyped, createUnaryPlus, createVersion, createXor, createAbs, createAcos, createAcot, createAcsc, createAdd, createAnd, createAsec, createAsin, createAtan, createAtanh, createBitAnd, createBitOr, createBoolean, createCbrt, createCombinations, createCompare, createCompareText, createCos, createCot, createCsc, createCube, createDivide, createEqualScalar, createErf, createExp, createFilter, createFix, createForEach, createFormat, createGamma, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLargerEq, createLeftShift, createLog10, createLog2, createMap, createMean, createMod, createMultiply, createNot, createNumber, createOr, createPi, createPow, createRandom, createRightLogShift, createSQRT2, createSech, createSin, createSize, createSmallerEq, createSquare, createString, createSubtract, createTanh, createTypeOf, createUnequal, createXgcd, createAcoth, createAddScalar, createAsech, createBitNot, createCeil, createCombinationsWithRep, createCosh, createCsch, createDivideScalar, createEqualText, createExpm1, createIsNumeric, createLN2, createLcm, createLog1p, createMultiplyScalar, createNthRoot, createPickRandom, createRandomInt, createRightArithShift, createSec, createSinh, createSqrt, createTan, createUnaryMinus, createAcosh, createApply, createAsinh, createBitXor, createClone, createCumSum, createEqual, createFactorial, createHasNumericValue, createIsNaN, createLarger, createMode, createNorm, createPartitionSelect, createPrint, createQuantileSeq, createRound, createSmaller, createStirlingS2, createTrue, createVariance, createAcsch, createAtan2, createCatalan, createComposition, createDeepEqual, createFloor, createHypot, createLog, createMedian, createMultinomial, createPermutations, createRange, createSign, createStd, createCompareNatural, createCoth, createGcd, createIsPrime, createNumeric, createProd, createSum, createBellNumbers, createMad, createMax, createMin } from '../factoriesNumber.js';
7
+ createSubset, createTau, createTyped, createUnaryPlus, createVersion, createXor, createAbs, createAcos, createAcot, createAcsc, createAdd, createAnd, createAsec, createAsin, createAtan, createAtanh, createBitAnd, createBitOr, createBoolean, createCbrt, createCombinations, createCompare, createCompareText, createCos, createCot, createCsc, createCube, createDivide, createEqualScalar, createErf, createExp, createFilter, createForEach, createFormat, createGamma, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLargerEq, createLeftShift, createLog, createLog1p, createMap, createMean, createMod, createMultiply, createNot, createNumber, createOr, createPi, createPow, createRandom, createRightLogShift, createSQRT2, createSech, createSin, createSize, createSmallerEq, createSquare, createString, createSubtract, createTanh, createTypeOf, createUnequal, createXgcd, createAcoth, createAddScalar, createAsech, createBitNot, createClone, createCompareNatural, createCosh, createCsch, createDivideScalar, createEqualText, createExpm1, createIsNumeric, createLN2, createLcm, createLog10, createMultiplyScalar, createNthRoot, createPickRandom, createRandomInt, createRightArithShift, createSec, createSinh, createSqrt, createTan, createUnaryMinus, createAcosh, createApply, createAsinh, createBitXor, createCombinationsWithRep, createCumSum, createEqual, createFactorial, createHasNumericValue, createIsNaN, createLarger, createLog2, createMode, createNorm, createPartitionSelect, createPrint, createQuantileSeq, createRound, createSmaller, createStirlingS2, createTrue, createVariance, createAcsch, createAtan2, createCatalan, createComposition, createDeepEqual, createFloor, createHypot, createLgamma, createMedian, createMultinomial, createPermutations, createRange, createSign, createStd, createCeil, createCoth, createFix, createIsPrime, createNumeric, createProd, createSum, createBellNumbers, createGcd, createMad, createMax, createMin } from '../factoriesNumber.js';
8
8
  export var e = /* #__PURE__ */createE({
9
9
  config
10
10
  });
@@ -125,9 +125,6 @@ export var exp = /* #__PURE__ */createExp({
125
125
  export var filter = /* #__PURE__ */createFilter({
126
126
  typed
127
127
  });
128
- export var fix = /* #__PURE__ */createFix({
129
- typed
130
- });
131
128
  export var forEach = /* #__PURE__ */createForEach({
132
129
  typed
133
130
  });
@@ -159,10 +156,10 @@ export var largerEq = /* #__PURE__ */createLargerEq({
159
156
  export var leftShift = /* #__PURE__ */createLeftShift({
160
157
  typed
161
158
  });
162
- export var log10 = /* #__PURE__ */createLog10({
159
+ export var log = /* #__PURE__ */createLog({
163
160
  typed
164
161
  });
165
- export var log2 = /* #__PURE__ */createLog2({
162
+ export var log1p = /* #__PURE__ */createLog1p({
166
163
  typed
167
164
  });
168
165
  export var map = /* #__PURE__ */createMap({
@@ -253,10 +250,11 @@ export var asech = /* #__PURE__ */createAsech({
253
250
  export var bitNot = /* #__PURE__ */createBitNot({
254
251
  typed
255
252
  });
256
- export var ceil = /* #__PURE__ */createCeil({
253
+ export var clone = /* #__PURE__ */createClone({
257
254
  typed
258
255
  });
259
- export var combinationsWithRep = /* #__PURE__ */createCombinationsWithRep({
256
+ export var compareNatural = /* #__PURE__ */createCompareNatural({
257
+ compare,
260
258
  typed
261
259
  });
262
260
  export var cosh = /* #__PURE__ */createCosh({
@@ -285,7 +283,7 @@ export var LN2 = /* #__PURE__ */createLN2({
285
283
  export var lcm = /* #__PURE__ */createLcm({
286
284
  typed
287
285
  });
288
- export var log1p = /* #__PURE__ */createLog1p({
286
+ export var log10 = /* #__PURE__ */createLog10({
289
287
  typed
290
288
  });
291
289
  export var multiplyScalar = /* #__PURE__ */createMultiplyScalar({
@@ -333,7 +331,7 @@ export var asinh = /* #__PURE__ */createAsinh({
333
331
  export var bitXor = /* #__PURE__ */createBitXor({
334
332
  typed
335
333
  });
336
- export var clone = /* #__PURE__ */createClone({
334
+ export var combinationsWithRep = /* #__PURE__ */createCombinationsWithRep({
337
335
  typed
338
336
  });
339
337
  export var cumsum = /* #__PURE__ */createCumSum({
@@ -360,6 +358,9 @@ export var larger = /* #__PURE__ */createLarger({
360
358
  config,
361
359
  typed
362
360
  });
361
+ export var log2 = /* #__PURE__ */createLog2({
362
+ typed
363
+ });
363
364
  export var mode = /* #__PURE__ */createMode({
364
365
  isNaN,
365
366
  isNumeric,
@@ -400,6 +401,7 @@ export var stirlingS2 = /* #__PURE__ */createStirlingS2({
400
401
  isNegative,
401
402
  larger,
402
403
  multiplyScalar,
404
+ number,
403
405
  pow,
404
406
  subtract,
405
407
  typed
@@ -443,6 +445,8 @@ export var deepEqual = /* #__PURE__ */createDeepEqual({
443
445
  typed
444
446
  });
445
447
  export var floor = /* #__PURE__ */createFloor({
448
+ config,
449
+ round,
446
450
  typed
447
451
  });
448
452
  export var hypot = /* #__PURE__ */createHypot({
@@ -455,7 +459,7 @@ export var hypot = /* #__PURE__ */createHypot({
455
459
  sqrt,
456
460
  typed
457
461
  });
458
- export var log = /* #__PURE__ */createLog({
462
+ export var lgamma = /* #__PURE__ */createLgamma({
459
463
  typed
460
464
  });
461
465
  export var median = /* #__PURE__ */createMedian({
@@ -495,14 +499,17 @@ export var std = /* #__PURE__ */createStd({
495
499
  typed,
496
500
  variance
497
501
  });
498
- export var compareNatural = /* #__PURE__ */createCompareNatural({
499
- compare,
502
+ export var ceil = /* #__PURE__ */createCeil({
503
+ config,
504
+ round,
500
505
  typed
501
506
  });
502
507
  export var coth = /* #__PURE__ */createCoth({
503
508
  typed
504
509
  });
505
- export var gcd = /* #__PURE__ */createGcd({
510
+ export var fix = /* #__PURE__ */createFix({
511
+ ceil,
512
+ floor,
506
513
  typed
507
514
  });
508
515
  export var isPrime = /* #__PURE__ */createIsPrime({
@@ -530,6 +537,9 @@ export var bellNumbers = /* #__PURE__ */createBellNumbers({
530
537
  stirlingS2,
531
538
  typed
532
539
  });
540
+ export var gcd = /* #__PURE__ */createGcd({
541
+ typed
542
+ });
533
543
  export var mad = /* #__PURE__ */createMad({
534
544
  abs,
535
545
  map,
@@ -121,6 +121,7 @@ import { forEachDocs } from './function/matrix/forEach.js';
121
121
  import { getMatrixDataTypeDocs } from './function/matrix/getMatrixDataType.js';
122
122
  import { identityDocs } from './function/matrix/identity.js';
123
123
  import { invDocs } from './function/matrix/inv.js';
124
+ import { pinvDocs } from './function/matrix/pinv.js';
124
125
  import { kronDocs } from './function/matrix/kron.js';
125
126
  import { mapDocs } from './function/matrix/map.js';
126
127
  import { matrixFromColumnsDocs } from './function/matrix/matrixFromColumns.js';
@@ -145,6 +146,7 @@ import { combinationsDocs } from './function/probability/combinations.js';
145
146
  import { combinationsWithRepDocs } from './function/probability/combinationsWithRep.js';
146
147
  import { factorialDocs } from './function/probability/factorial.js';
147
148
  import { gammaDocs } from './function/probability/gamma.js';
149
+ import { lgammaDocs } from './function/probability/lgamma.js';
148
150
  import { kldivergenceDocs } from './function/probability/kldivergence.js';
149
151
  import { multinomialDocs } from './function/probability/multinomial.js';
150
152
  import { permutationsDocs } from './function/probability/permutations.js';
@@ -568,6 +570,7 @@ export var embeddedDocs = {
568
570
  flatten: flattenDocs,
569
571
  forEach: forEachDocs,
570
572
  inv: invDocs,
573
+ pinv: pinvDocs,
571
574
  eigs: eigsDocs,
572
575
  kron: kronDocs,
573
576
  matrixFromFunction: matrixFromFunctionDocs,
@@ -596,6 +599,7 @@ export var embeddedDocs = {
596
599
  factorial: factorialDocs,
597
600
  gamma: gammaDocs,
598
601
  kldivergence: kldivergenceDocs,
602
+ lgamma: lgammaDocs,
599
603
  multinomial: multinomialDocs,
600
604
  permutations: permutationsDocs,
601
605
  pickRandom: pickRandomDocs,
@@ -3,6 +3,6 @@ export var powDocs = {
3
3
  category: 'Operators',
4
4
  syntax: ['x ^ y', 'pow(x, y)'],
5
5
  description: 'Calculates the power of x to y, x^y.',
6
- examples: ['2^3', '2*2*2', '1 + e ^ (pi * i)'],
6
+ examples: ['2^3', '2*2*2', '1 + e ^ (pi * i)', 'math.pow([[1, 2], [4, 3]], 2)', 'math.pow([[1, 2], [4, 3]], -1)'],
7
7
  seealso: ['multiply', 'nthRoot', 'nthRoots', 'sqrt']
8
8
  };
@@ -0,0 +1,8 @@
1
+ export var pinvDocs = {
2
+ name: 'pinv',
3
+ category: 'Matrix',
4
+ syntax: ['pinv(x)'],
5
+ description: 'Calculate the Moore–Penrose inverse of a matrix',
6
+ examples: ['pinv([1, 2; 3, 4])', 'pinv([[1, 0], [0, 1], [0, 1]])', 'pinv(4)'],
7
+ seealso: ['inv']
8
+ };
@@ -0,0 +1,8 @@
1
+ export var lgammaDocs = {
2
+ name: 'lgamma',
3
+ category: 'Probability',
4
+ syntax: ['lgamma(n)'],
5
+ description: 'Logarithm of the gamma function for real, positive numbers and complex numbers, ' + 'using Lanczos approximation for numbers and Stirling series for complex numbers.',
6
+ examples: ['lgamma(4)', 'lgamma(1/2)', 'lgamma(math.i)', 'lgamma(complex(1.1, 2))'],
7
+ seealso: ['gamma']
8
+ };
@@ -31,8 +31,8 @@ export var createBlockNode = /* #__PURE__ */factory(name, dependencies, _ref =>
31
31
  if (!isNode(node)) throw new TypeError('Property "node" must be a Node');
32
32
  if (typeof visible !== 'boolean') throw new TypeError('Property "visible" must be a boolean');
33
33
  return {
34
- node: node,
35
- visible: visible
34
+ node,
35
+ visible
36
36
  };
37
37
  });
38
38
  }
@@ -101,7 +101,7 @@ export var createBlockNode = /* #__PURE__ */factory(name, dependencies, _ref =>
101
101
  var node = this._ifNode(callback(block.node, 'blocks[' + i + '].node', this));
102
102
 
103
103
  blocks[i] = {
104
- node: node,
104
+ node,
105
105
  visible: block.visible
106
106
  };
107
107
  }
@@ -1,13 +1,12 @@
1
- import { isBigNumber, isConstantNode, isNode, isRangeNode, isSymbolNode } from '../../utils/is.js';
2
1
  import { map } from '../../utils/array.js';
3
- import { escape } from '../../utils/string.js';
4
- import { factory } from '../../utils/factory.js';
5
2
  import { getSafeProperty } from '../../utils/customs.js';
3
+ import { factory } from '../../utils/factory.js';
4
+ import { isArray, isConstantNode, isMatrix, isNode, isString, typeOf } from '../../utils/is.js';
5
+ import { escape } from '../../utils/string.js';
6
6
  var name = 'IndexNode';
7
- var dependencies = ['Range', 'Node', 'size'];
7
+ var dependencies = ['Node', 'size'];
8
8
  export var createIndexNode = /* #__PURE__ */factory(name, dependencies, _ref => {
9
9
  var {
10
- Range,
11
10
  Node,
12
11
  size
13
12
  } = _ref;
@@ -67,61 +66,30 @@ export var createIndexNode = /* #__PURE__ */factory(name, dependencies, _ref =>
67
66
  // TODO: Optimization: when the range values are ConstantNodes,
68
67
  // we can beforehand resolve the zero-based value
69
68
  // optimization for a simple object property
70
- var evalDimensions = map(this.dimensions, function (range, i) {
71
- if (isRangeNode(range)) {
72
- if (range.needsEnd()) {
73
- // create a range containing end (like '4:end')
74
- var childArgNames = Object.create(argNames);
75
- childArgNames.end = true;
76
-
77
- var evalStart = range.start._compile(math, childArgNames);
78
-
79
- var evalEnd = range.end._compile(math, childArgNames);
80
-
81
- var evalStep = range.step ? range.step._compile(math, childArgNames) : function () {
82
- return 1;
83
- };
84
- return function evalDimension(scope, args, context) {
85
- var s = size(context).valueOf();
86
- var childArgs = Object.create(args);
87
- childArgs.end = s[i];
88
- return createRange(evalStart(scope, childArgs, context), evalEnd(scope, childArgs, context), evalStep(scope, childArgs, context));
89
- };
90
- } else {
91
- // create range
92
- var _evalStart = range.start._compile(math, argNames);
93
-
94
- var _evalEnd = range.end._compile(math, argNames);
95
-
96
- var _evalStep = range.step ? range.step._compile(math, argNames) : function () {
97
- return 1;
98
- };
99
-
100
- return function evalDimension(scope, args, context) {
101
- return createRange(_evalStart(scope, args, context), _evalEnd(scope, args, context), _evalStep(scope, args, context));
102
- };
103
- }
104
- } else if (isSymbolNode(range) && range.name === 'end') {
105
- // SymbolNode 'end'
106
- var _childArgNames = Object.create(argNames);
107
-
108
- _childArgNames.end = true;
109
-
110
- var evalRange = range._compile(math, _childArgNames);
69
+ var evalDimensions = map(this.dimensions, function (dimension, i) {
70
+ var needsEnd = dimension.filter(node => node.isSymbolNode && node.name === 'end').length > 0;
71
+
72
+ if (needsEnd) {
73
+ // SymbolNode 'end' is used inside the index,
74
+ // like in `A[end]` or `A[end - 2]`
75
+ var childArgNames = Object.create(argNames);
76
+ childArgNames.end = true;
77
+
78
+ var _evalDimension = dimension._compile(math, childArgNames);
111
79
 
112
80
  return function evalDimension(scope, args, context) {
81
+ if (!isMatrix(context) && !isArray(context) && !isString(context)) {
82
+ throw new TypeError('Cannot resolve "end": ' + 'context must be a Matrix, Array, or string but is ' + typeOf(context));
83
+ }
84
+
113
85
  var s = size(context).valueOf();
114
86
  var childArgs = Object.create(args);
115
87
  childArgs.end = s[i];
116
- return evalRange(scope, childArgs, context);
88
+ return _evalDimension(scope, childArgs, context);
117
89
  };
118
90
  } else {
119
- // ConstantNode
120
- var _evalRange = range._compile(math, argNames);
121
-
122
- return function evalDimension(scope, args, context) {
123
- return _evalRange(scope, args, context);
124
- };
91
+ // SymbolNode `end` not used
92
+ return dimension._compile(math, argNames);
125
93
  }
126
94
  });
127
95
  var index = getSafeProperty(math, 'index');
@@ -257,12 +225,7 @@ export var createIndexNode = /* #__PURE__ */factory(name, dependencies, _ref =>
257
225
  return range.toTex(options);
258
226
  });
259
227
  return this.dotNotation ? '.' + this.getObjectProperty() + '' : '_{' + dimensions.join(',') + '}';
260
- }; // helper function to create a Range from start, step and end
261
-
262
-
263
- function createRange(start, end, step) {
264
- return new Range(isBigNumber(start) ? start.toNumber() : start, isBigNumber(end) ? end.toNumber() : end, isBigNumber(step) ? step.toNumber() : step);
265
- }
228
+ };
266
229
 
267
230
  return IndexNode;
268
231
  }, {
@@ -151,7 +151,7 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
151
151
  true: true,
152
152
  false: false,
153
153
  null: null,
154
- undefined: undefined
154
+ undefined
155
155
  };
156
156
  var NUMERIC_CONSTANTS = ['NaN', 'Infinity'];
157
157
 
@@ -623,8 +623,8 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
623
623
  if (blocks.length === 0 && node) {
624
624
  visible = state.token !== ';';
625
625
  blocks.push({
626
- node: node,
627
- visible: visible
626
+ node,
627
+ visible
628
628
  });
629
629
  }
630
630
 
@@ -635,8 +635,8 @@ export var createParse = /* #__PURE__ */factory(name, dependencies, _ref => {
635
635
  node.comment = state.comment;
636
636
  visible = state.token !== ';';
637
637
  blocks.push({
638
- node: node,
639
- visible: visible
638
+ node,
639
+ visible
640
640
  });
641
641
  }
642
642
  }
@@ -214,6 +214,7 @@ export { createHelp } from './expression/function/help.js';
214
214
  export { createChain } from './type/chain/function/chain.js';
215
215
  export { createDet } from './function/matrix/det.js';
216
216
  export { createInv } from './function/matrix/inv.js';
217
+ export { createPinv } from './function/matrix/pinv.js';
217
218
  export { createEigs } from './function/matrix/eigs.js';
218
219
  export { createExpm } from './function/matrix/expm.js';
219
220
  export { createSqrtm } from './function/matrix/sqrtm.js';
@@ -231,6 +232,7 @@ export { createStd } from './function/statistics/std.js';
231
232
  export { createCombinations } from './function/probability/combinations.js';
232
233
  export { createCombinationsWithRep } from './function/probability/combinationsWithRep.js';
233
234
  export { createGamma } from './function/probability/gamma.js';
235
+ export { createLgamma } from './function/probability/lgamma.js';
234
236
  export { createFactorial } from './function/probability/factorial.js';
235
237
  export { createKldivergence } from './function/probability/kldivergence.js';
236
238
  export { createMultinomial } from './function/probability/multinomial.js';
@@ -1,4 +1,4 @@
1
- import { absNumber, acoshNumber, acosNumber, acothNumber, acotNumber, acschNumber, acscNumber, addNumber, andNumber, asechNumber, asecNumber, asinhNumber, asinNumber, atan2Number, atanhNumber, atanNumber, bitAndNumber, bitNotNumber, bitOrNumber, bitXorNumber, cbrtNumber, ceilNumber, combinationsNumber, coshNumber, cosNumber, cothNumber, cotNumber, cschNumber, cscNumber, cubeNumber, divideNumber, expm1Number, expNumber, fixNumber, floorNumber, gammaNumber, gcdNumber, isIntegerNumber, isNaNNumber, isNegativeNumber, isPositiveNumber, isZeroNumber, lcmNumber, leftShiftNumber, log10Number, log1pNumber, log2Number, logNumber, modNumber, multiplyNumber, normNumber, notNumber, orNumber, powNumber, rightArithShiftNumber, rightLogShiftNumber, sechNumber, secNumber, signNumber, sinhNumber, sinNumber, sqrtNumber, squareNumber, subtractNumber, tanhNumber, tanNumber, unaryMinusNumber, unaryPlusNumber, xgcdNumber, xorNumber } from './plain/number/index.js';
1
+ import { absNumber, acoshNumber, acosNumber, acothNumber, acotNumber, acschNumber, acscNumber, addNumber, andNumber, asechNumber, asecNumber, asinhNumber, asinNumber, atan2Number, atanhNumber, atanNumber, bitAndNumber, bitNotNumber, bitOrNumber, bitXorNumber, cbrtNumber, combinationsNumber, coshNumber, cosNumber, cothNumber, cotNumber, cschNumber, cscNumber, cubeNumber, divideNumber, expm1Number, expNumber, gammaNumber, gcdNumber, isIntegerNumber, isNaNNumber, isNegativeNumber, isPositiveNumber, isZeroNumber, lcmNumber, leftShiftNumber, lgammaNumber, log10Number, log1pNumber, log2Number, logNumber, modNumber, multiplyNumber, normNumber, notNumber, nthRootNumber, orNumber, powNumber, rightArithShiftNumber, rightLogShiftNumber, roundNumber, sechNumber, secNumber, signNumber, sinhNumber, sinNumber, sqrtNumber, squareNumber, subtractNumber, tanhNumber, tanNumber, unaryMinusNumber, unaryPlusNumber, xgcdNumber, xorNumber } from './plain/number/index.js';
2
2
  import { factory } from './utils/factory.js';
3
3
  import { noIndex, noMatrix, noSubset } from './utils/noop.js'; // ----------------------------------------------------------------------------
4
4
  // classes and functions
@@ -24,12 +24,12 @@ export var createUnaryPlus = /* #__PURE__ */createNumberFactory('unaryPlus', una
24
24
  export var createAbs = /* #__PURE__ */createNumberFactory('abs', absNumber);
25
25
  export var createAddScalar = /* #__PURE__ */createNumberFactory('addScalar', addNumber);
26
26
  export var createCbrt = /* #__PURE__ */createNumberFactory('cbrt', cbrtNumber);
27
- export var createCeil = /* #__PURE__ */createNumberFactory('ceil', ceilNumber);
27
+ export { createCeilNumber as createCeil } from './function/arithmetic/ceil.js';
28
28
  export var createCube = /* #__PURE__ */createNumberFactory('cube', cubeNumber);
29
29
  export var createExp = /* #__PURE__ */createNumberFactory('exp', expNumber);
30
30
  export var createExpm1 = /* #__PURE__ */createNumberFactory('expm1', expm1Number);
31
- export var createFix = /* #__PURE__ */createNumberFactory('fix', fixNumber);
32
- export var createFloor = /* #__PURE__ */createNumberFactory('floor', floorNumber);
31
+ export { createFixNumber as createFix } from './function/arithmetic/fix.js';
32
+ export { createFloorNumber as createFloor } from './function/arithmetic/floor.js';
33
33
  export var createGcd = /* #__PURE__ */createNumberFactory('gcd', gcdNumber);
34
34
  export var createLcm = /* #__PURE__ */createNumberFactory('lcm', lcmNumber);
35
35
  export var createLog10 = /* #__PURE__ */createNumberFactory('log10', log10Number);
@@ -37,7 +37,7 @@ export var createLog2 = /* #__PURE__ */createNumberFactory('log2', log2Number);
37
37
  export var createMod = /* #__PURE__ */createNumberFactory('mod', modNumber);
38
38
  export var createMultiplyScalar = /* #__PURE__ */createNumberFactory('multiplyScalar', multiplyNumber);
39
39
  export var createMultiply = /* #__PURE__ */createNumberFactory('multiply', multiplyNumber);
40
- export { createNthRootNumber as createNthRoot } from './function/arithmetic/nthRoot.js';
40
+ export var createNthRoot = /* #__PURE__ */createNumberOptionalSecondArgFactory('nthRoot', nthRootNumber);
41
41
  export var createSign = /* #__PURE__ */createNumberFactory('sign', signNumber);
42
42
  export var createSqrt = /* #__PURE__ */createNumberFactory('sqrt', sqrtNumber);
43
43
  export var createSquare = /* #__PURE__ */createNumberFactory('square', squareNumber);
@@ -45,8 +45,8 @@ export var createSubtract = /* #__PURE__ */createNumberFactory('subtract', subtr
45
45
  export var createXgcd = /* #__PURE__ */createNumberFactory('xgcd', xgcdNumber);
46
46
  export var createDivideScalar = /* #__PURE__ */createNumberFactory('divideScalar', divideNumber);
47
47
  export var createPow = /* #__PURE__ */createNumberFactory('pow', powNumber);
48
- export { createRoundNumber as createRound } from './function/arithmetic/round.js';
49
- export var createLog = /* #__PURE__ */createNumberFactory('log', logNumber);
48
+ export var createRound = /* #__PURE__ */createNumberOptionalSecondArgFactory('round', roundNumber);
49
+ export var createLog = /* #__PURE__ */createNumberOptionalSecondArgFactory('log', logNumber);
50
50
  export var createLog1p = /* #__PURE__ */createNumberFactory('log1p', log1pNumber);
51
51
  export var createAdd = /* #__PURE__ */createNumberFactory('add', addNumber);
52
52
  export { createHypot } from './function/arithmetic/hypot.js';
@@ -118,6 +118,7 @@ export { createPartitionSelect } from './function/matrix/partitionSelect.js'; //
118
118
 
119
119
  export var createCombinations = createNumberFactory('combinations', combinationsNumber);
120
120
  export var createGamma = createNumberFactory('gamma', gammaNumber);
121
+ export var createLgamma = createNumberFactory('lgamma', lgammaNumber);
121
122
  export { createCombinationsWithRep } from './function/probability/combinationsWithRep.js';
122
123
  export { createFactorial } from './function/probability/factorial.js';
123
124
  export { createMultinomial } from './function/probability/multinomial.js';
@@ -212,7 +213,7 @@ export { createIsPrime } from './function/utils/isPrime.js';
212
213
  export { createNumeric } from './function/utils/numeric.js'; // json
213
214
 
214
215
  export { createReviver } from './json/reviver.js';
215
- export { createReplacer } from './json/replacer.js'; // helper function to create a factory function for a function which only needs typed-function
216
+ export { createReplacer } from './json/replacer.js'; // helper functions to create a factory function for a function which only needs typed-function
216
217
 
217
218
  function createNumberFactory(name, fn) {
218
219
  return factory(name, ['typed'], _ref => {
@@ -221,4 +222,16 @@ function createNumberFactory(name, fn) {
221
222
  } = _ref;
222
223
  return typed(fn);
223
224
  });
225
+ }
226
+
227
+ function createNumberOptionalSecondArgFactory(name, fn) {
228
+ return factory(name, ['typed'], _ref2 => {
229
+ var {
230
+ typed
231
+ } = _ref2;
232
+ return typed({
233
+ number: fn,
234
+ 'number,number': fn
235
+ });
236
+ });
224
237
  }
@@ -204,8 +204,8 @@ export var createQr = /* #__PURE__ */factory(name, dependencies, _ref => {
204
204
 
205
205
 
206
206
  return {
207
- Q: Q,
208
- R: R,
207
+ Q,
208
+ R,
209
209
  toString: function toString() {
210
210
  return 'Q: ' + this.Q.toString() + '\nR: ' + this.R.toString();
211
211
  }
@@ -29,11 +29,11 @@ export var createResolve = /* #__PURE__ */factory(name, dependencies, _ref => {
29
29
  *
30
30
  * simplify, evaluate
31
31
  *
32
- * @param {Node} node
33
- * The expression tree to be simplified
32
+ * @param {Node | Node[]} node
33
+ * The expression tree (or trees) to be simplified
34
34
  * @param {Object} scope
35
35
  * Scope specifying variables to be resolved
36
- * @return {Node} Returns `node` with variables recursively substituted.
36
+ * @return {Node | Node[]} Returns `node` with variables recursively substituted.
37
37
  * @throws {ReferenceError}
38
38
  * If there is a cyclic dependency among the variables in `scope`,
39
39
  * resolution is impossible and a ReferenceError is thrown.
@@ -45,7 +45,7 @@ export function createSolveValidation(_ref) {
45
45
  }
46
46
 
47
47
  return new DenseMatrix({
48
- data: data,
48
+ data,
49
49
  size: [rows, 1],
50
50
  datatype: b._datatype
51
51
  });
@@ -66,7 +66,7 @@ export function createSolveValidation(_ref) {
66
66
  }
67
67
 
68
68
  return new DenseMatrix({
69
- data: data,
69
+ data,
70
70
  size: [rows, 1],
71
71
  datatype: b._datatype
72
72
  });
@@ -90,7 +90,7 @@ export function createSolveValidation(_ref) {
90
90
  }
91
91
 
92
92
  return new DenseMatrix({
93
- data: data,
93
+ data,
94
94
  size: [rows, 1],
95
95
  datatype: b._datatype
96
96
  });
@@ -113,7 +113,7 @@ export function createSolveValidation(_ref) {
113
113
  }
114
114
 
115
115
  return new DenseMatrix({
116
- data: data,
116
+ data,
117
117
  size: [rows, 1]
118
118
  });
119
119
  }
@@ -128,7 +128,7 @@ export function createSolveValidation(_ref) {
128
128
  }
129
129
 
130
130
  return new DenseMatrix({
131
- data: data,
131
+ data,
132
132
  size: [rows, 1]
133
133
  });
134
134
  }
@@ -161,8 +161,8 @@ export var createCsChol = /* #__PURE__ */factory(name, dependencies, _ref => {
161
161
 
162
162
 
163
163
  return {
164
- L: L,
165
- P: P
164
+ L,
165
+ P
166
166
  };
167
167
  };
168
168
  });
@@ -50,7 +50,7 @@ export function csLeaf(i, j, w, first, maxfirst, prevleaf, ancestor) {
50
50
  }
51
51
 
52
52
  return {
53
- jleaf: jleaf,
54
- q: q
53
+ jleaf,
54
+ q
55
55
  };
56
56
  }
@@ -190,9 +190,9 @@ export var createCsLu = /* #__PURE__ */factory(name, dependencies, _ref => {
190
190
  uindex.splice(unz, uindex.length - unz); // return LU factor
191
191
 
192
192
  return {
193
- L: L,
194
- U: U,
195
- pinv: pinv
193
+ L,
194
+ U,
195
+ pinv
196
196
  };
197
197
  };
198
198
  });