mathjs 10.0.2 → 10.2.0

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 (337) hide show
  1. package/HISTORY.md +37 -0
  2. package/NOTICE +1 -1
  3. package/README.md +10 -2
  4. package/bin/cli.js +1 -1
  5. package/docs/expressions/algebra.md +27 -0
  6. package/docs/expressions/syntax.md +1 -1
  7. package/docs/reference/functions/abs.md +6 -0
  8. package/docs/reference/functions/acos.md +6 -0
  9. package/docs/reference/functions/acosh.md +6 -0
  10. package/docs/reference/functions/acot.md +6 -0
  11. package/docs/reference/functions/acoth.md +6 -0
  12. package/docs/reference/functions/acsc.md +6 -0
  13. package/docs/reference/functions/acsch.md +6 -0
  14. package/docs/reference/functions/add.md +6 -0
  15. package/docs/reference/functions/and.md +6 -0
  16. package/docs/reference/functions/apply.md +6 -0
  17. package/docs/reference/functions/arg.md +6 -0
  18. package/docs/reference/functions/asec.md +6 -0
  19. package/docs/reference/functions/asech.md +6 -0
  20. package/docs/reference/functions/asin.md +6 -0
  21. package/docs/reference/functions/asinh.md +6 -0
  22. package/docs/reference/functions/atan.md +6 -0
  23. package/docs/reference/functions/atan2.md +6 -0
  24. package/docs/reference/functions/atanh.md +6 -0
  25. package/docs/reference/functions/bellNumbers.md +6 -0
  26. package/docs/reference/functions/bin.md +6 -0
  27. package/docs/reference/functions/bitAnd.md +6 -0
  28. package/docs/reference/functions/bitNot.md +6 -0
  29. package/docs/reference/functions/bitOr.md +6 -0
  30. package/docs/reference/functions/bitXor.md +6 -0
  31. package/docs/reference/functions/catalan.md +6 -0
  32. package/docs/reference/functions/cbrt.md +6 -0
  33. package/docs/reference/functions/ceil.md +6 -0
  34. package/docs/reference/functions/clone.md +6 -0
  35. package/docs/reference/functions/column.md +6 -0
  36. package/docs/reference/functions/combinations.md +6 -0
  37. package/docs/reference/functions/combinationsWithRep.md +6 -0
  38. package/docs/reference/functions/compare.md +6 -0
  39. package/docs/reference/functions/compareNatural.md +6 -0
  40. package/docs/reference/functions/compareText.md +6 -0
  41. package/docs/reference/functions/compile.md +6 -0
  42. package/docs/reference/functions/composition.md +6 -0
  43. package/docs/reference/functions/concat.md +6 -0
  44. package/docs/reference/functions/conj.md +6 -0
  45. package/docs/reference/functions/cos.md +6 -0
  46. package/docs/reference/functions/cosh.md +6 -0
  47. package/docs/reference/functions/cot.md +6 -0
  48. package/docs/reference/functions/coth.md +6 -0
  49. package/docs/reference/functions/count.md +6 -0
  50. package/docs/reference/functions/cross.md +6 -0
  51. package/docs/reference/functions/csc.md +6 -0
  52. package/docs/reference/functions/csch.md +6 -0
  53. package/docs/reference/functions/ctranspose.md +6 -0
  54. package/docs/reference/functions/cube.md +6 -0
  55. package/docs/reference/functions/deepEqual.md +6 -0
  56. package/docs/reference/functions/derivative.md +6 -0
  57. package/docs/reference/functions/det.md +6 -0
  58. package/docs/reference/functions/diag.md +6 -0
  59. package/docs/reference/functions/diff.md +6 -0
  60. package/docs/reference/functions/distance.md +6 -0
  61. package/docs/reference/functions/divide.md +6 -0
  62. package/docs/reference/functions/dot.md +6 -0
  63. package/docs/reference/functions/dotDivide.md +6 -0
  64. package/docs/reference/functions/dotMultiply.md +6 -0
  65. package/docs/reference/functions/dotPow.md +6 -0
  66. package/docs/reference/functions/eigs.md +6 -0
  67. package/docs/reference/functions/equal.md +6 -0
  68. package/docs/reference/functions/equalText.md +6 -0
  69. package/docs/reference/functions/erf.md +6 -0
  70. package/docs/reference/functions/evaluate.md +6 -0
  71. package/docs/reference/functions/exp.md +6 -0
  72. package/docs/reference/functions/expm.md +6 -0
  73. package/docs/reference/functions/expm1.md +6 -0
  74. package/docs/reference/functions/factorial.md +6 -0
  75. package/docs/reference/functions/filter.md +6 -0
  76. package/docs/reference/functions/fix.md +6 -0
  77. package/docs/reference/functions/flatten.md +6 -0
  78. package/docs/reference/functions/floor.md +6 -0
  79. package/docs/reference/functions/forEach.md +6 -0
  80. package/docs/reference/functions/format.md +6 -0
  81. package/docs/reference/functions/gamma.md +6 -0
  82. package/docs/reference/functions/gcd.md +6 -0
  83. package/docs/reference/functions/getMatrixDataType.md +6 -0
  84. package/docs/reference/functions/hasNumericValue.md +6 -0
  85. package/docs/reference/functions/help.md +6 -0
  86. package/docs/reference/functions/hex.md +6 -0
  87. package/docs/reference/functions/hypot.md +6 -0
  88. package/docs/reference/functions/identity.md +6 -0
  89. package/docs/reference/functions/im.md +6 -0
  90. package/docs/reference/functions/intersect.md +6 -0
  91. package/docs/reference/functions/inv.md +6 -0
  92. package/docs/reference/functions/invmod.md +47 -0
  93. package/docs/reference/functions/isInteger.md +6 -0
  94. package/docs/reference/functions/isNaN.md +6 -0
  95. package/docs/reference/functions/isNegative.md +6 -0
  96. package/docs/reference/functions/isNumeric.md +6 -0
  97. package/docs/reference/functions/isPositive.md +6 -0
  98. package/docs/reference/functions/isPrime.md +6 -0
  99. package/docs/reference/functions/isZero.md +6 -0
  100. package/docs/reference/functions/kldivergence.md +6 -0
  101. package/docs/reference/functions/kron.md +6 -0
  102. package/docs/reference/functions/larger.md +6 -0
  103. package/docs/reference/functions/largerEq.md +6 -0
  104. package/docs/reference/functions/lcm.md +6 -0
  105. package/docs/reference/functions/leafCount.md +52 -0
  106. package/docs/reference/functions/leftShift.md +6 -0
  107. package/docs/reference/functions/log.md +6 -0
  108. package/docs/reference/functions/log10.md +6 -0
  109. package/docs/reference/functions/log1p.md +6 -0
  110. package/docs/reference/functions/log2.md +6 -0
  111. package/docs/reference/functions/lsolve.md +6 -0
  112. package/docs/reference/functions/lsolveAll.md +6 -0
  113. package/docs/reference/functions/lup.md +6 -0
  114. package/docs/reference/functions/lusolve.md +6 -0
  115. package/docs/reference/functions/mad.md +6 -0
  116. package/docs/reference/functions/map.md +6 -0
  117. package/docs/reference/functions/matrixFromColumns.md +6 -0
  118. package/docs/reference/functions/matrixFromFunction.md +6 -0
  119. package/docs/reference/functions/matrixFromRows.md +6 -0
  120. package/docs/reference/functions/max.md +6 -0
  121. package/docs/reference/functions/mean.md +6 -0
  122. package/docs/reference/functions/median.md +6 -0
  123. package/docs/reference/functions/min.md +6 -0
  124. package/docs/reference/functions/mod.md +6 -0
  125. package/docs/reference/functions/mode.md +6 -0
  126. package/docs/reference/functions/multinomial.md +6 -0
  127. package/docs/reference/functions/multiply.md +6 -0
  128. package/docs/reference/functions/norm.md +6 -0
  129. package/docs/reference/functions/not.md +6 -0
  130. package/docs/reference/functions/nthRoot.md +6 -0
  131. package/docs/reference/functions/nthRoots.md +6 -0
  132. package/docs/reference/functions/numeric.md +6 -0
  133. package/docs/reference/functions/oct.md +6 -0
  134. package/docs/reference/functions/ones.md +6 -0
  135. package/docs/reference/functions/or.md +6 -0
  136. package/docs/reference/functions/parser.md +6 -0
  137. package/docs/reference/functions/partitionSelect.md +6 -0
  138. package/docs/reference/functions/permutations.md +6 -0
  139. package/docs/reference/functions/pickRandom.md +6 -0
  140. package/docs/reference/functions/pow.md +6 -0
  141. package/docs/reference/functions/print.md +6 -0
  142. package/docs/reference/functions/prod.md +6 -0
  143. package/docs/reference/functions/qr.md +6 -0
  144. package/docs/reference/functions/quantileSeq.md +6 -0
  145. package/docs/reference/functions/random.md +6 -0
  146. package/docs/reference/functions/randomInt.md +6 -0
  147. package/docs/reference/functions/range.md +6 -0
  148. package/docs/reference/functions/rationalize.md +7 -1
  149. package/docs/reference/functions/re.md +6 -0
  150. package/docs/reference/functions/reshape.md +7 -0
  151. package/docs/reference/functions/resize.md +6 -0
  152. package/docs/reference/functions/resolve.md +46 -0
  153. package/docs/reference/functions/rightArithShift.md +6 -0
  154. package/docs/reference/functions/rightLogShift.md +6 -0
  155. package/docs/reference/functions/rotate.md +6 -0
  156. package/docs/reference/functions/rotationMatrix.md +6 -0
  157. package/docs/reference/functions/round.md +6 -0
  158. package/docs/reference/functions/row.md +6 -0
  159. package/docs/reference/functions/sec.md +6 -0
  160. package/docs/reference/functions/sech.md +6 -0
  161. package/docs/reference/functions/setCartesian.md +6 -0
  162. package/docs/reference/functions/setDifference.md +6 -0
  163. package/docs/reference/functions/setDistinct.md +6 -0
  164. package/docs/reference/functions/setIntersect.md +6 -0
  165. package/docs/reference/functions/setIsSubset.md +6 -0
  166. package/docs/reference/functions/setMultiplicity.md +6 -0
  167. package/docs/reference/functions/setPowerset.md +6 -0
  168. package/docs/reference/functions/setSize.md +6 -0
  169. package/docs/reference/functions/setSymDifference.md +6 -0
  170. package/docs/reference/functions/setUnion.md +6 -0
  171. package/docs/reference/functions/sign.md +6 -0
  172. package/docs/reference/functions/simplify.md +47 -7
  173. package/docs/reference/functions/simplifyCore.md +50 -0
  174. package/docs/reference/functions/sin.md +6 -0
  175. package/docs/reference/functions/sinh.md +6 -0
  176. package/docs/reference/functions/size.md +6 -0
  177. package/docs/reference/functions/slu.md +6 -0
  178. package/docs/reference/functions/smaller.md +6 -0
  179. package/docs/reference/functions/smallerEq.md +6 -0
  180. package/docs/reference/functions/sort.md +6 -0
  181. package/docs/reference/functions/sqrt.md +6 -0
  182. package/docs/reference/functions/sqrtm.md +6 -0
  183. package/docs/reference/functions/square.md +6 -0
  184. package/docs/reference/functions/squeeze.md +6 -0
  185. package/docs/reference/functions/std.md +6 -0
  186. package/docs/reference/functions/stirlingS2.md +6 -0
  187. package/docs/reference/functions/subset.md +6 -0
  188. package/docs/reference/functions/subtract.md +6 -0
  189. package/docs/reference/functions/sum.md +6 -0
  190. package/docs/reference/functions/tan.md +6 -0
  191. package/docs/reference/functions/tanh.md +6 -0
  192. package/docs/reference/functions/to.md +6 -0
  193. package/docs/reference/functions/trace.md +6 -0
  194. package/docs/reference/functions/transpose.md +6 -0
  195. package/docs/reference/functions/typeOf.md +6 -0
  196. package/docs/reference/functions/unaryMinus.md +6 -0
  197. package/docs/reference/functions/unaryPlus.md +6 -0
  198. package/docs/reference/functions/unequal.md +6 -0
  199. package/docs/reference/functions/usolve.md +6 -0
  200. package/docs/reference/functions/usolveAll.md +6 -0
  201. package/docs/reference/functions/variance.md +6 -0
  202. package/docs/reference/functions/xgcd.md +6 -0
  203. package/docs/reference/functions/xor.md +6 -0
  204. package/docs/reference/functions/zeros.md +6 -0
  205. package/docs/reference/functions.md +4 -0
  206. package/lib/browser/math.js +7 -7
  207. package/lib/browser/math.js.map +1 -1
  208. package/lib/cjs/core/create.js +4 -4
  209. package/lib/cjs/core/function/import.js +3 -3
  210. package/lib/cjs/core/function/typed.js +2 -2
  211. package/lib/cjs/defaultInstance.js +3 -3
  212. package/lib/cjs/entry/allFactoriesAny.js +1 -1
  213. package/lib/cjs/entry/allFactoriesNumber.js +1 -1
  214. package/lib/cjs/entry/configReadonly.js +1 -1
  215. package/lib/cjs/entry/dependenciesAny/dependenciesInvmod.generated.js +41 -0
  216. package/lib/cjs/entry/dependenciesAny/dependenciesLeafCount.generated.js +23 -0
  217. package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +18 -0
  218. package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +32 -0
  219. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +21 -0
  220. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +65 -0
  221. package/lib/cjs/entry/dependenciesAny.generated.js +32 -0
  222. package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +18 -0
  223. package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +32 -0
  224. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +21 -0
  225. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +65 -0
  226. package/lib/cjs/entry/dependenciesNumber.generated.js +16 -0
  227. package/lib/cjs/entry/impureFunctionsAny.generated.js +78 -29
  228. package/lib/cjs/entry/impureFunctionsNumber.generated.js +102 -60
  229. package/lib/cjs/entry/pureFunctionsAny.generated.js +65 -55
  230. package/lib/cjs/entry/pureFunctionsNumber.generated.js +46 -48
  231. package/lib/cjs/expression/Help.js +4 -0
  232. package/lib/cjs/expression/Parser.js +1 -1
  233. package/lib/cjs/expression/embeddedDocs/core/typed.js +1 -1
  234. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +20 -6
  235. package/lib/cjs/expression/embeddedDocs/function/algebra/leafCount.js +15 -0
  236. package/lib/cjs/expression/embeddedDocs/function/algebra/resolve.js +16 -0
  237. package/lib/cjs/expression/embeddedDocs/function/algebra/simplify.js +1 -1
  238. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +15 -0
  239. package/lib/cjs/expression/embeddedDocs/function/arithmetic/invmod.js +15 -0
  240. package/lib/cjs/expression/embeddedDocs/function/matrix/forEach.js +1 -1
  241. package/lib/cjs/expression/node/FunctionNode.js +7 -7
  242. package/lib/cjs/expression/node/IndexNode.js +1 -1
  243. package/lib/cjs/expression/node/Node.js +3 -3
  244. package/lib/cjs/expression/node/ObjectNode.js +1 -1
  245. package/lib/cjs/expression/node/utils/access.js +1 -1
  246. package/lib/cjs/expression/node/utils/assign.js +1 -1
  247. package/lib/cjs/expression/parse.js +13 -13
  248. package/lib/cjs/factoriesAny.js +32 -0
  249. package/lib/cjs/factoriesNumber.js +16 -0
  250. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  251. package/lib/cjs/function/algebra/leafCount.js +66 -0
  252. package/lib/cjs/function/algebra/rationalize.js +36 -39
  253. package/lib/cjs/function/algebra/resolve.js +106 -0
  254. package/lib/cjs/function/algebra/simplify/simplifyConstant.js +226 -32
  255. package/lib/cjs/function/algebra/simplify/util.js +171 -33
  256. package/lib/cjs/function/algebra/simplify.js +608 -191
  257. package/lib/cjs/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +83 -31
  258. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  259. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  260. package/lib/cjs/function/arithmetic/ceil.js +3 -3
  261. package/lib/cjs/function/arithmetic/floor.js +3 -3
  262. package/lib/cjs/function/arithmetic/invmod.js +73 -0
  263. package/lib/cjs/function/arithmetic/norm.js +1 -1
  264. package/lib/cjs/function/arithmetic/round.js +1 -1
  265. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  266. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  267. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  268. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  269. package/lib/cjs/function/relational/compareNatural.js +6 -6
  270. package/lib/cjs/header.js +3 -3
  271. package/lib/cjs/plain/bignumber/index.js +1 -1
  272. package/lib/cjs/plain/number/combinations.js +18 -6
  273. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  274. package/lib/cjs/type/bignumber/function/bignumber.js +1 -1
  275. package/lib/cjs/type/boolean.js +2 -2
  276. package/lib/cjs/type/complex/Complex.js +14 -14
  277. package/lib/cjs/type/complex/function/complex.js +1 -1
  278. package/lib/cjs/type/fraction/Fraction.js +6 -6
  279. package/lib/cjs/type/fraction/function/fraction.js +1 -1
  280. package/lib/cjs/type/matrix/DenseMatrix.js +5 -5
  281. package/lib/cjs/type/matrix/SparseMatrix.js +2 -2
  282. package/lib/cjs/type/number.js +1 -1
  283. package/lib/cjs/type/string.js +2 -2
  284. package/lib/cjs/type/unit/Unit.js +8 -8
  285. package/lib/cjs/utils/customs.js +2 -2
  286. package/lib/cjs/utils/emitter.js +1 -1
  287. package/lib/cjs/utils/function.js +2 -2
  288. package/lib/cjs/utils/is.js +6 -6
  289. package/lib/cjs/utils/latex.js +3 -3
  290. package/lib/cjs/utils/lruQueue.js +1 -1
  291. package/lib/cjs/utils/map.js +3 -3
  292. package/lib/cjs/utils/object.js +2 -2
  293. package/lib/cjs/utils/snapshot.js +7 -7
  294. package/lib/cjs/utils/string.js +2 -2
  295. package/lib/cjs/version.js +1 -1
  296. package/lib/esm/entry/dependenciesAny/dependenciesInvmod.generated.js +24 -0
  297. package/lib/esm/entry/dependenciesAny/dependenciesLeafCount.generated.js +12 -0
  298. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +12 -0
  299. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +18 -0
  300. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +14 -0
  301. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +40 -0
  302. package/lib/esm/entry/dependenciesAny.generated.js +4 -0
  303. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +12 -0
  304. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +18 -0
  305. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +14 -0
  306. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +40 -0
  307. package/lib/esm/entry/dependenciesNumber.generated.js +2 -0
  308. package/lib/esm/entry/impureFunctionsAny.generated.js +68 -22
  309. package/lib/esm/entry/impureFunctionsNumber.generated.js +92 -52
  310. package/lib/esm/entry/pureFunctionsAny.generated.js +53 -42
  311. package/lib/esm/entry/pureFunctionsNumber.generated.js +32 -32
  312. package/lib/esm/expression/Help.js +4 -0
  313. package/lib/esm/expression/embeddedDocs/core/typed.js +1 -1
  314. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +10 -1
  315. package/lib/esm/expression/embeddedDocs/function/algebra/leafCount.js +8 -0
  316. package/lib/esm/expression/embeddedDocs/function/algebra/resolve.js +9 -0
  317. package/lib/esm/expression/embeddedDocs/function/algebra/simplify.js +1 -1
  318. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +8 -0
  319. package/lib/esm/expression/embeddedDocs/function/arithmetic/invmod.js +8 -0
  320. package/lib/esm/expression/embeddedDocs/function/matrix/forEach.js +1 -1
  321. package/lib/esm/factoriesAny.js +4 -0
  322. package/lib/esm/factoriesNumber.js +2 -0
  323. package/lib/esm/function/algebra/leafCount.js +59 -0
  324. package/lib/esm/function/algebra/rationalize.js +36 -38
  325. package/lib/esm/function/algebra/resolve.js +95 -0
  326. package/lib/esm/function/algebra/simplify/simplifyConstant.js +200 -32
  327. package/lib/esm/function/algebra/simplify/util.js +170 -34
  328. package/lib/esm/function/algebra/simplify.js +603 -186
  329. package/lib/esm/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +75 -31
  330. package/lib/esm/function/arithmetic/invmod.js +57 -0
  331. package/lib/esm/header.js +1 -1
  332. package/lib/esm/plain/number/combinations.js +18 -6
  333. package/lib/esm/version.js +1 -1
  334. package/package.json +21 -15
  335. package/types/index.d.ts +48 -6
  336. package/lib/cjs/function/algebra/simplify/resolve.js +0 -76
  337. package/lib/esm/function/algebra/simplify/resolve.js +0 -67
@@ -1,7 +1,8 @@
1
- import { isConstantNode, isFunctionNode, isOperatorNode, isParenthesisNode, isSymbolNode } from '../../../utils/is.js';
2
- import { factory } from '../../../utils/factory.js';
1
+ import { isAccessorNode, isArrayNode, isConstantNode, isFunctionNode, isIndexNode, isObjectNode, isOperatorNode } from '../../utils/is.js';
2
+ import { createUtil } from './simplify/util.js';
3
+ import { factory } from '../../utils/factory.js';
3
4
  var name = 'simplifyCore';
4
- var dependencies = ['equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'ConstantNode', 'OperatorNode', 'FunctionNode', 'ParenthesisNode'];
5
+ var dependencies = ['equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];
5
6
  export var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref => {
6
7
  var {
7
8
  equal,
@@ -11,13 +12,26 @@ export var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref
11
12
  multiply,
12
13
  divide,
13
14
  pow,
15
+ AccessorNode,
16
+ ArrayNode,
14
17
  ConstantNode,
15
- OperatorNode,
16
18
  FunctionNode,
17
- ParenthesisNode
19
+ IndexNode,
20
+ ObjectNode,
21
+ OperatorNode,
22
+ ParenthesisNode,
23
+ SymbolNode
18
24
  } = _ref;
19
25
  var node0 = new ConstantNode(0);
20
26
  var node1 = new ConstantNode(1);
27
+ var {
28
+ hasProperty,
29
+ isCommutative
30
+ } = createUtil({
31
+ FunctionNode,
32
+ OperatorNode,
33
+ SymbolNode
34
+ });
21
35
  /**
22
36
  * simplifyCore() performs single pass simplification suitable for
23
37
  * applications requiring ultimate performance. In contrast, simplify()
@@ -26,30 +40,53 @@ export var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref
26
40
  *
27
41
  * Syntax:
28
42
  *
29
- * simplify.simplifyCore(expr)
43
+ * simplifyCore(expr)
30
44
  *
31
45
  * Examples:
32
46
  *
33
47
  * const f = math.parse('2 * 1 * x ^ (2 - 1)')
34
- * math.simplify.simpifyCore(f) // Node {2 * x}
35
- * math.simplify('2 * 1 * x ^ (2 - 1)', [math.simplify.simpifyCore]) // Node {2 * x}
48
+ * math.simpifyCore(f) // Node {2 * x}
49
+ * math.simplify('2 * 1 * x ^ (2 - 1)', [math.simplifyCore]) // Node {2 * x}
36
50
  *
37
51
  * See also:
38
52
  *
39
- * derivative
53
+ * simplify, resolve, derivative
40
54
  *
41
55
  * @param {Node} node
42
56
  * The expression to be simplified
57
+ * @param {Object} options
58
+ * Simplification options, as per simplify()
59
+ * @return {Node} Returns expression with basic simplifications applied
43
60
  */
44
61
 
45
- function simplifyCore(node) {
46
- if (isOperatorNode(node) && node.isUnary()) {
47
- var a0 = simplifyCore(node.args[0]);
62
+ function simplifyCore(node, options) {
63
+ var context = options ? options.context : undefined;
48
64
 
49
- if (node.op === '+') {
50
- // unary plus
51
- return a0;
65
+ if (hasProperty(node, 'trivial', context)) {
66
+ // This node does nothing if it has only one argument, so if so,
67
+ // return that argument simplified
68
+ if (isFunctionNode(node) && node.args.length === 1) {
69
+ return simplifyCore(node.args[0], options);
70
+ } // For other node types, we try the generic methods
71
+
72
+
73
+ var simpChild = false;
74
+ var childCount = 0;
75
+ node.forEach(c => {
76
+ ++childCount;
77
+
78
+ if (childCount === 1) {
79
+ simpChild = simplifyCore(c, options);
80
+ }
81
+ });
82
+
83
+ if (childCount === 1) {
84
+ return simpChild;
52
85
  }
86
+ }
87
+
88
+ if (isOperatorNode(node) && node.isUnary()) {
89
+ var a0 = simplifyCore(node.args[0], options);
53
90
 
54
91
  if (node.op === '-') {
55
92
  // unary minus
@@ -64,9 +101,9 @@ export var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref
64
101
  return new OperatorNode(node.op, node.fn, [a0]);
65
102
  }
66
103
  } else if (isOperatorNode(node) && node.isBinary()) {
67
- var _a = simplifyCore(node.args[0]);
104
+ var _a = simplifyCore(node.args[0], options);
68
105
 
69
- var a1 = simplifyCore(node.args[1]);
106
+ var a1 = simplifyCore(node.args[1], options);
70
107
 
71
108
  if (node.op === '+') {
72
109
  if (isConstantNode(_a)) {
@@ -102,7 +139,7 @@ export var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref
102
139
  }
103
140
 
104
141
  if (isOperatorNode(a1) && a1.isUnary() && a1.op === '-') {
105
- return simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]));
142
+ return simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]), options);
106
143
  }
107
144
 
108
145
  return new OperatorNode(node.op, node.fn, [_a, a1]);
@@ -123,7 +160,7 @@ export var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref
123
160
  return node0;
124
161
  } else if (equal(a1.value, 1)) {
125
162
  return _a;
126
- } else if (isOperatorNode(_a) && _a.isBinary() && _a.op === node.op) {
163
+ } else if (isOperatorNode(_a) && _a.isBinary() && _a.op === node.op && isCommutative(node, context)) {
127
164
  var a00 = _a.args[0];
128
165
 
129
166
  if (isConstantNode(a00)) {
@@ -132,7 +169,11 @@ export var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref
132
169
  }
133
170
  }
134
171
 
135
- return new OperatorNode(node.op, node.fn, [a1, _a], node.implicit); // constants on left
172
+ if (isCommutative(node, context)) {
173
+ return new OperatorNode(node.op, node.fn, [a1, _a], node.implicit); // constants on left
174
+ } else {
175
+ return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);
176
+ }
136
177
  }
137
178
 
138
179
  return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);
@@ -168,19 +209,22 @@ export var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, _ref
168
209
 
169
210
  return new OperatorNode(node.op, node.fn, [_a, a1]);
170
211
  }
171
- } else if (isParenthesisNode(node)) {
172
- var c = simplifyCore(node.content);
173
-
174
- if (isParenthesisNode(c) || isSymbolNode(c) || isConstantNode(c)) {
175
- return c;
212
+ } else if (isFunctionNode(node)) {
213
+ return new FunctionNode(simplifyCore(node.fn), node.args.map(n => simplifyCore(n, options)));
214
+ } else if (isArrayNode(node)) {
215
+ return new ArrayNode(node.items.map(n => simplifyCore(n, options)));
216
+ } else if (isAccessorNode(node)) {
217
+ return new AccessorNode(simplifyCore(node.object, options), simplifyCore(node.index, options));
218
+ } else if (isIndexNode(node)) {
219
+ return new IndexNode(node.dimensions.map(n => simplifyCore(n, options)));
220
+ } else if (isObjectNode(node)) {
221
+ var newProps = {};
222
+
223
+ for (var prop in node.properties) {
224
+ newProps[prop] = simplifyCore(node.properties[prop], options);
176
225
  }
177
226
 
178
- return new ParenthesisNode(c);
179
- } else if (isFunctionNode(node)) {
180
- var args = node.args.map(simplifyCore).map(function (arg) {
181
- return isParenthesisNode(arg) ? arg.content : arg;
182
- });
183
- return new FunctionNode(simplifyCore(node.fn), args);
227
+ return new ObjectNode(newProps);
184
228
  } else {// cannot simplify
185
229
  }
186
230
 
@@ -0,0 +1,57 @@
1
+ import { factory } from '../../utils/factory.js';
2
+ var name = 'invmod';
3
+ var dependencies = ['typed', 'config', 'BigNumber', 'xgcd', 'equal', 'smaller', 'mod', 'add', 'isInteger'];
4
+ export var createInvmod = /* #__PURE__ */factory(name, dependencies, _ref => {
5
+ var {
6
+ typed,
7
+ config,
8
+ BigNumber,
9
+ xgcd,
10
+ equal,
11
+ smaller,
12
+ mod,
13
+ add,
14
+ isInteger
15
+ } = _ref;
16
+
17
+ /**
18
+ * Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation `ax ≣ 1 (mod b)`
19
+ * See https://en.wikipedia.org/wiki/Modular_multiplicative_inverse.
20
+ *
21
+ * Syntax:
22
+ *
23
+ * math.invmod(a, b)
24
+ *
25
+ * Examples:
26
+ *
27
+ * math.invmod(8, 12) // returns NaN
28
+ * math.invmod(7, 13) // return 2
29
+ * math.invmod(15151, 15122) // returns 10429
30
+ *
31
+ * See also:
32
+ *
33
+ * gcd, xgcd
34
+ *
35
+ * @param {number | BigNumber} a An integer number
36
+ * @param {number | BigNumber} b An integer number
37
+ * @return {number | BigNumber } Returns an integer number
38
+ * where `invmod(a,b)*a ≣ 1 (mod b)`
39
+ */
40
+ return typed(name, {
41
+ 'number, number': invmod,
42
+ 'BigNumber, BigNumber': invmod
43
+ });
44
+
45
+ function invmod(a, b) {
46
+ if (!isInteger(a) || !isInteger(b)) throw new Error('Parameters in function invmod must be integer numbers');
47
+ a = mod(a, b);
48
+ if (equal(b, 0)) throw new Error('Divisor must be non zero');
49
+ var res = xgcd(a, b);
50
+ res = res.valueOf();
51
+ var [gcd, inv] = res;
52
+ if (!equal(gcd, BigNumber(1))) return NaN;
53
+ inv = mod(inv, b);
54
+ if (smaller(inv, BigNumber(0))) inv = add(inv, b);
55
+ return inv;
56
+ }
57
+ });
package/lib/esm/header.js CHANGED
@@ -10,7 +10,7 @@
10
10
  * @date @@date
11
11
  *
12
12
  * @license
13
- * Copyright (C) 2013-2021 Jos de Jong <wjosdejong@gmail.com>
13
+ * Copyright (C) 2013-2022 Jos de Jong <wjosdejong@gmail.com>
14
14
  *
15
15
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
16
16
  * use this file except in compliance with the License. You may obtain a copy
@@ -14,14 +14,26 @@ export function combinationsNumber(n, k) {
14
14
  }
15
15
 
16
16
  var nMinusk = n - k;
17
- var prodrange;
17
+ var answer = 1;
18
+ var firstnumerator = k < nMinusk ? nMinusk + 1 : k + 1;
19
+ var nextdivisor = 2;
20
+ var lastdivisor = k < nMinusk ? k : nMinusk; // balance multiplications and divisions to try to keep intermediate values
21
+ // in exact-integer range as long as possible
18
22
 
19
- if (k < nMinusk) {
20
- prodrange = product(nMinusk + 1, n);
21
- return prodrange / product(1, k);
23
+ for (var nextnumerator = firstnumerator; nextnumerator <= n; ++nextnumerator) {
24
+ answer *= nextnumerator;
25
+
26
+ while (nextdivisor <= lastdivisor && answer % nextdivisor === 0) {
27
+ answer /= nextdivisor;
28
+ ++nextdivisor;
29
+ }
30
+ } // for big n, k, floating point may have caused weirdness in remainder
31
+
32
+
33
+ if (nextdivisor <= lastdivisor) {
34
+ answer /= product(nextdivisor, lastdivisor);
22
35
  }
23
36
 
24
- prodrange = product(k + 1, n);
25
- return prodrange / product(1, nMinusk);
37
+ return answer;
26
38
  }
27
39
  combinationsNumber.signature = 'number, number';
@@ -1,2 +1,2 @@
1
- export var version = '10.0.2'; // Note: This file is automatically generated when building math.js.
1
+ export var version = '10.2.0'; // Note: This file is automatically generated when building math.js.
2
2
  // Changes made in this file will be overwritten.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mathjs",
3
- "version": "10.0.2",
3
+ "version": "10.2.0",
4
4
  "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.",
5
5
  "author": "Jos de Jong <wjosdejong@gmail.com> (https://github.com/josdejong)",
6
6
  "homepage": "https://mathjs.org",
@@ -25,43 +25,44 @@
25
25
  "unit"
26
26
  ],
27
27
  "dependencies": {
28
- "@babel/runtime": "^7.16.5",
28
+ "@babel/runtime": "^7.17.2",
29
29
  "complex.js": "^2.0.15",
30
30
  "decimal.js": "^10.3.1",
31
31
  "escape-latex": "^1.2.0",
32
- "fraction.js": "^4.1.2",
32
+ "fraction.js": "^4.1.3",
33
33
  "javascript-natural-sort": "^0.7.1",
34
34
  "seedrandom": "^3.0.5",
35
35
  "tiny-emitter": "^2.1.0",
36
36
  "typed-function": "^2.0.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@babel/core": "7.16.5",
40
- "@babel/plugin-transform-object-assign": "7.16.5",
41
- "@babel/plugin-transform-runtime": "7.16.5",
42
- "@babel/preset-env": "7.16.5",
43
- "@babel/register": "7.16.5",
39
+ "@babel/core": "7.17.5",
40
+ "@babel/plugin-transform-object-assign": "7.16.7",
41
+ "@babel/plugin-transform-runtime": "7.17.0",
42
+ "@babel/preset-env": "7.16.11",
43
+ "@babel/register": "7.17.0",
44
+ "assert": "2.0.0",
44
45
  "babel-loader": "8.2.3",
45
46
  "benchmark": "2.1.4",
46
47
  "codecov": "3.8.3",
47
- "core-js": "3.20.1",
48
+ "core-js": "3.21.1",
48
49
  "del": "6.0.0",
49
50
  "dtslint": "4.2.1",
50
51
  "expr-eval": "2.0.2",
51
- "fancy-log": "1.3.3",
52
+ "fancy-log": "2.0.0",
52
53
  "glob": "7.2.0",
53
54
  "gulp": "4.0.2",
54
55
  "gulp-babel": "8.0.0",
55
56
  "handlebars": "4.7.7",
56
57
  "istanbul": "0.4.5",
57
- "jsep": "1.2.0",
58
- "karma": "6.3.9",
58
+ "jsep": "1.3.0",
59
+ "karma": "6.3.16",
59
60
  "karma-browserstack-launcher": "1.6.0",
60
61
  "karma-firefox-launcher": "2.1.2",
61
62
  "karma-mocha": "2.0.1",
62
63
  "karma-mocha-reporter": "2.2.5",
63
64
  "karma-webpack": "4.0.2",
64
- "math-expression-evaluator": "1.3.8",
65
+ "math-expression-evaluator": "1.3.14",
65
66
  "mkdirp": "1.0.4",
66
67
  "mocha": "8.4.0",
67
68
  "ndarray": "1.0.19",
@@ -72,9 +73,10 @@
72
73
  "numericjs": "1.2.6",
73
74
  "nyc": "15.1.0",
74
75
  "pad-right": "0.2.2",
76
+ "process": "0.11.10",
75
77
  "standard": "16.0.4",
76
78
  "sylvester": "0.0.21",
77
- "typescript": "4.5.4",
79
+ "typescript": "4.5.5",
78
80
  "webpack": "4.46.0",
79
81
  "zeros": "1.0.0"
80
82
  },
@@ -124,13 +126,14 @@
124
126
  "CONTRIBUTING.md"
125
127
  ],
126
128
  "scripts": {
127
- "build": "gulp --gulpfile gulpfile.cjs",
129
+ "build": "gulp --gulpfile gulpfile.cjs && npm run update-authors",
128
130
  "build-and-test": "npm run build && npm run test:all && npm run lint",
129
131
  "build:clean": "gulp --gulpfile gulpfile.cjs clean",
130
132
  "build:docs": "gulp --gulpfile gulpfile.cjs docs",
131
133
  "compile": "gulp --gulpfile gulpfile.cjs compile",
132
134
  "watch": "gulp --gulpfile gulpfile.cjs watch",
133
135
  "lint": "standard --env=mocha --env=worker",
136
+ "format": "npm run lint -- --fix",
134
137
  "validate:ascii": "gulp --gulpfile gulpfile.cjs validate:ascii",
135
138
  "test": "npm run test:src && npm run lint",
136
139
  "test:src": "mocha test/unit-tests",
@@ -160,5 +163,8 @@
160
163
  "src": "./src",
161
164
  "test": "./test"
162
165
  },
166
+ "browserslist": [
167
+ "IE 11"
168
+ ],
163
169
  "sideEffects": false
164
170
  }
package/types/index.d.ts CHANGED
@@ -575,7 +575,7 @@ declare namespace math {
575
575
  * @param unit The unit to be created
576
576
  * @returns The created unit
577
577
  */
578
- unit(value: number | MathArray | Matrix, unit: string): Unit;
578
+ unit(value: number | MathArray | Matrix | BigNumber, unit: string): Unit;
579
579
 
580
580
  /*************************************************************************
581
581
  * Expression functions
@@ -1674,6 +1674,19 @@ declare namespace math {
1674
1674
  column: number
1675
1675
  ): T;
1676
1676
 
1677
+ /**
1678
+ * Return a rotated matrix.
1679
+ * @param {Array | Matrix} w Vector to rotate
1680
+ * @param {number | BigNumber | Complex | Unit} theta Rotation angle
1681
+ * @param {Array | Matrix} [v] Rotation axis
1682
+ * @return {Array | Matrix} Multiplication of the rotation matrix and w
1683
+ */
1684
+ rotate<T extends MathArray | Matrix>(
1685
+ w: T,
1686
+ theta: number | BigNumber | Complex | Unit,
1687
+ v?: T
1688
+ ): T;
1689
+
1677
1690
  /**
1678
1691
  * Calculate the size of a matrix or scalar.
1679
1692
  * @param A matrix
@@ -1783,7 +1796,7 @@ declare namespace math {
1783
1796
  * @param n A real or complex number
1784
1797
  * @returns The gamma of n
1785
1798
  */
1786
- gamma(n: number | MathArray | Matrix): number | MathArray | Matrix;
1799
+ gamma<T extends number | BigNumber | Complex | MathArray | Matrix>(n: T): NoLiteralType<T>;
1787
1800
 
1788
1801
  /**
1789
1802
  * Calculate the Kullback-Leibler (KL) divergence between two
@@ -3121,6 +3134,28 @@ declare namespace math {
3121
3134
  fixPrefix?: boolean;
3122
3135
  }
3123
3136
 
3137
+ interface UnitComponent {
3138
+ power: number;
3139
+ prefix: string;
3140
+ unit: {
3141
+ name: string;
3142
+ base: {
3143
+ dimensions: number[];
3144
+ key: string;
3145
+ };
3146
+ prefixes: Record<string, UnitPrefix>;
3147
+ value: number;
3148
+ offset: number;
3149
+ dimensions: number[];
3150
+ };
3151
+ }
3152
+
3153
+ interface UnitPrefix {
3154
+ name: string;
3155
+ value: number;
3156
+ scientific: boolean;
3157
+ }
3158
+
3124
3159
  interface Unit {
3125
3160
  valueOf(): string;
3126
3161
  clone(): Unit;
@@ -3139,7 +3174,14 @@ declare namespace math {
3139
3174
  toJSON(): MathJSON;
3140
3175
  formatUnits(): string;
3141
3176
  format(options: FormatOptions): string;
3177
+ simplify(): Unit;
3142
3178
  splitUnit(parts: ReadonlyArray<string | Unit>): Unit[];
3179
+
3180
+ units: UnitComponent[];
3181
+ dimensions: number[];
3182
+ value: number;
3183
+ fixPrefix: boolean;
3184
+ skipAutomaticSimplification: true;
3143
3185
  }
3144
3186
 
3145
3187
  interface CreateUnitOptions {
@@ -3409,11 +3451,11 @@ declare namespace math {
3409
3451
 
3410
3452
  interface ConfigOptions {
3411
3453
  epsilon?: number;
3412
- matrix?: string;
3413
- number?: string;
3454
+ matrix?: 'Matrix' | 'Array';
3455
+ number?: 'number' | 'BigNumber' | 'Fraction';
3414
3456
  precision?: number;
3415
- parenthesis?: string;
3416
- randomSeed?: string;
3457
+ predictable?: boolean;
3458
+ randomSeed?: string | null;
3417
3459
  }
3418
3460
 
3419
3461
  interface MathJsJson {
@@ -1,76 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createResolve = void 0;
7
-
8
- var _map = require("../../../utils/map.js");
9
-
10
- var _is = require("../../../utils/is.js");
11
-
12
- var _factory = require("../../../utils/factory.js");
13
-
14
- var name = 'resolve';
15
- var dependencies = ['parse', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];
16
- var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
17
- var parse = _ref.parse,
18
- FunctionNode = _ref.FunctionNode,
19
- OperatorNode = _ref.OperatorNode,
20
- ParenthesisNode = _ref.ParenthesisNode;
21
-
22
- /**
23
- * resolve(expr, scope) replaces variable nodes with their scoped values
24
- *
25
- * Syntax:
26
- *
27
- * simplify.resolve(expr, scope)
28
- *
29
- * Examples:
30
- *
31
- * math.simplify.resolve('x + y', {x:1, y:2}) // Node {1 + 2}
32
- * math.simplify.resolve(math.parse('x+y'), {x:1, y:2}) // Node {1 + 2}
33
- * math.simplify('x+y', {x:2, y:'x+x'}).toString() // "6"
34
- *
35
- * @param {Node} node
36
- * The expression tree to be simplified
37
- * @param {Object} scope with variables to be resolved
38
- */
39
- function resolve(node, scope) {
40
- if (!scope) {
41
- return node;
42
- }
43
-
44
- if (!(0, _map.isMap)(scope)) {
45
- scope = (0, _map.createMap)(scope);
46
- }
47
-
48
- if ((0, _is.isSymbolNode)(node)) {
49
- var value = scope.get(node.name);
50
-
51
- if ((0, _is.isNode)(value)) {
52
- return resolve(value, scope);
53
- } else if (typeof value === 'number') {
54
- return parse(String(value));
55
- }
56
- } else if ((0, _is.isOperatorNode)(node)) {
57
- var args = node.args.map(function (arg) {
58
- return resolve(arg, scope);
59
- });
60
- return new OperatorNode(node.op, node.fn, args, node.implicit);
61
- } else if ((0, _is.isParenthesisNode)(node)) {
62
- return new ParenthesisNode(resolve(node.content, scope));
63
- } else if ((0, _is.isFunctionNode)(node)) {
64
- var _args = node.args.map(function (arg) {
65
- return resolve(arg, scope);
66
- });
67
-
68
- return new FunctionNode(node.name, _args);
69
- }
70
-
71
- return node;
72
- }
73
-
74
- return resolve;
75
- });
76
- exports.createResolve = createResolve;
@@ -1,67 +0,0 @@
1
- import { createMap, isMap } from '../../../utils/map.js';
2
- import { isFunctionNode, isNode, isOperatorNode, isParenthesisNode, isSymbolNode } from '../../../utils/is.js';
3
- import { factory } from '../../../utils/factory.js';
4
- var name = 'resolve';
5
- var dependencies = ['parse', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];
6
- export var createResolve = /* #__PURE__ */factory(name, dependencies, _ref => {
7
- var {
8
- parse,
9
- FunctionNode,
10
- OperatorNode,
11
- ParenthesisNode
12
- } = _ref;
13
-
14
- /**
15
- * resolve(expr, scope) replaces variable nodes with their scoped values
16
- *
17
- * Syntax:
18
- *
19
- * simplify.resolve(expr, scope)
20
- *
21
- * Examples:
22
- *
23
- * math.simplify.resolve('x + y', {x:1, y:2}) // Node {1 + 2}
24
- * math.simplify.resolve(math.parse('x+y'), {x:1, y:2}) // Node {1 + 2}
25
- * math.simplify('x+y', {x:2, y:'x+x'}).toString() // "6"
26
- *
27
- * @param {Node} node
28
- * The expression tree to be simplified
29
- * @param {Object} scope with variables to be resolved
30
- */
31
- function resolve(node, scope) {
32
- if (!scope) {
33
- return node;
34
- }
35
-
36
- if (!isMap(scope)) {
37
- scope = createMap(scope);
38
- }
39
-
40
- if (isSymbolNode(node)) {
41
- var value = scope.get(node.name);
42
-
43
- if (isNode(value)) {
44
- return resolve(value, scope);
45
- } else if (typeof value === 'number') {
46
- return parse(String(value));
47
- }
48
- } else if (isOperatorNode(node)) {
49
- var args = node.args.map(function (arg) {
50
- return resolve(arg, scope);
51
- });
52
- return new OperatorNode(node.op, node.fn, args, node.implicit);
53
- } else if (isParenthesisNode(node)) {
54
- return new ParenthesisNode(resolve(node.content, scope));
55
- } else if (isFunctionNode(node)) {
56
- var _args = node.args.map(function (arg) {
57
- return resolve(arg, scope);
58
- });
59
-
60
- return new FunctionNode(node.name, _args);
61
- }
62
-
63
- return node;
64
- }
65
-
66
- return resolve;
67
- });