mathjs 10.4.2 → 10.5.1

Sign up to get free protection for your applications and to get access to all the features.
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
  });