@pie-element/number-line 13.1.1 → 13.1.2-next.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 (381) hide show
  1. package/configure.js +2 -0
  2. package/controller.js +1 -0
  3. package/dist/_virtual/_rolldown/runtime.js +11 -0
  4. package/dist/author/arrows.d.ts +28 -0
  5. package/dist/author/arrows.js +69 -0
  6. package/dist/author/card-bar.d.ts +20 -0
  7. package/dist/author/card-bar.js +41 -0
  8. package/dist/author/defaults.d.ts +178 -0
  9. package/dist/author/defaults.js +144 -0
  10. package/dist/author/domain.d.ts +15 -0
  11. package/dist/author/domain.js +54 -0
  12. package/dist/author/index.d.ts +23 -0
  13. package/dist/author/index.js +89 -0
  14. package/dist/author/main.d.ts +44 -0
  15. package/dist/author/main.js +485 -0
  16. package/dist/author/number-text-field.d.ts +13 -0
  17. package/dist/author/number-text-field.js +13 -0
  18. package/dist/author/point-config.d.ts +25 -0
  19. package/dist/author/point-config.js +69 -0
  20. package/dist/author/size.d.ts +24 -0
  21. package/dist/author/size.js +48 -0
  22. package/dist/author/ticks.d.ts +22 -0
  23. package/dist/author/ticks.js +115 -0
  24. package/dist/author/utils.d.ts +9 -0
  25. package/dist/author/utils.js +4 -0
  26. package/dist/browser/_baseSet-ycZx94p7.js +8672 -0
  27. package/dist/browser/_baseSet-ycZx94p7.js.map +1 -0
  28. package/dist/browser/author/index.js +40436 -0
  29. package/dist/browser/author/index.js.map +1 -0
  30. package/dist/browser/controller/index.js +823 -0
  31. package/dist/browser/controller/index.js.map +1 -0
  32. package/dist/browser/delivery/index.js +2 -0
  33. package/dist/browser/delivery-Dh8QdqpO.js +17950 -0
  34. package/dist/browser/delivery-Dh8QdqpO.js.map +1 -0
  35. package/dist/browser/number-line.css +2 -0
  36. package/dist/browser/uniqWith-CKN50xMI.js +17886 -0
  37. package/dist/browser/uniqWith-CKN50xMI.js.map +1 -0
  38. package/dist/controller/defaults.d.ts +58 -0
  39. package/dist/controller/defaults.js +50 -0
  40. package/dist/controller/index.d.ts +33 -0
  41. package/dist/controller/index.js +170 -0
  42. package/dist/controller/tickUtils.d.ts +20 -0
  43. package/dist/controller/tickUtils.js +254 -0
  44. package/dist/controller/utils.d.ts +9 -0
  45. package/dist/controller/utils.js +68 -0
  46. package/dist/delivery/data-converter.d.ts +64 -0
  47. package/dist/delivery/data-converter.js +70 -0
  48. package/dist/delivery/draggable/index.d.ts +33 -0
  49. package/dist/delivery/draggable/index.js +39 -0
  50. package/dist/delivery/index.d.ts +35 -0
  51. package/dist/delivery/index.js +109 -0
  52. package/dist/delivery/number-line/colors.d.ts +11 -0
  53. package/dist/delivery/number-line/colors.js +5 -0
  54. package/dist/delivery/number-line/feedback.d.ts +19 -0
  55. package/dist/delivery/number-line/feedback.js +57 -0
  56. package/dist/delivery/number-line/graph/arrow.d.ts +30 -0
  57. package/dist/delivery/number-line/graph/arrow.js +27 -0
  58. package/dist/delivery/number-line/graph/elements/base.d.ts +16 -0
  59. package/dist/delivery/number-line/graph/elements/base.js +11 -0
  60. package/dist/delivery/number-line/graph/elements/builder.d.ts +33 -0
  61. package/dist/delivery/number-line/graph/elements/builder.js +30 -0
  62. package/dist/delivery/number-line/graph/elements/line.d.ts +51 -0
  63. package/dist/delivery/number-line/graph/elements/line.js +189 -0
  64. package/dist/delivery/number-line/graph/elements/point.d.ts +43 -0
  65. package/dist/delivery/number-line/graph/elements/point.js +127 -0
  66. package/dist/delivery/number-line/graph/elements/ray.d.ts +43 -0
  67. package/dist/delivery/number-line/graph/elements/ray.js +130 -0
  68. package/dist/delivery/number-line/graph/index.d.ts +59 -0
  69. package/dist/delivery/number-line/graph/index.js +196 -0
  70. package/dist/delivery/number-line/graph/line.d.ts +46 -0
  71. package/dist/delivery/number-line/graph/line.js +27 -0
  72. package/dist/delivery/number-line/graph/stacks.d.ts +10 -0
  73. package/dist/delivery/number-line/graph/stacks.js +40 -0
  74. package/dist/delivery/number-line/graph/tick-utils.d.ts +73 -0
  75. package/dist/delivery/number-line/graph/tick-utils.js +297 -0
  76. package/dist/delivery/number-line/graph/ticks.d.ts +46 -0
  77. package/dist/delivery/number-line/graph/ticks.js +115 -0
  78. package/dist/delivery/number-line/index.d.ts +35 -0
  79. package/dist/delivery/number-line/index.js +218 -0
  80. package/dist/delivery/number-line/point-chooser/button.d.ts +31 -0
  81. package/dist/delivery/number-line/point-chooser/button.js +36 -0
  82. package/dist/delivery/number-line/point-chooser/img.d.ts +10 -0
  83. package/dist/delivery/number-line/point-chooser/img.js +4 -0
  84. package/dist/delivery/number-line/point-chooser/index.d.ts +37 -0
  85. package/dist/delivery/number-line/point-chooser/index.js +154 -0
  86. package/dist/delivery/number-line/point-chooser/styles.d.ts +192 -0
  87. package/dist/delivery/number-line/transitions/fade.d.ts +34 -0
  88. package/dist/delivery/number-line/transitions/fade.js +75 -0
  89. package/dist/delivery/number-line/transitions/index.d.ts +10 -0
  90. package/dist/index.d.ts +1 -0
  91. package/dist/index.iife.d.ts +8 -0
  92. package/dist/index.iife.js +201 -0
  93. package/dist/index.js +2 -0
  94. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_DataView.js +6 -0
  95. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Hash.js +16 -0
  96. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_ListCache.js +16 -0
  97. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Map.js +6 -0
  98. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_MapCache.js +16 -0
  99. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Promise.js +6 -0
  100. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Set.js +6 -0
  101. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_SetCache.js +11 -0
  102. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Stack.js +14 -0
  103. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Symbol.js +5 -0
  104. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_Uint8Array.js +5 -0
  105. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_WeakMap.js +6 -0
  106. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_apply.js +12 -0
  107. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayEach.js +7 -0
  108. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayFilter.js +10 -0
  109. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludes.js +7 -0
  110. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayIncludesWith.js +7 -0
  111. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayLikeKeys.js +15 -0
  112. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js +7 -0
  113. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayPush.js +7 -0
  114. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arraySome.js +7 -0
  115. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assignMergeValue.js +8 -0
  116. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assignValue.js +10 -0
  117. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_assocIndexOf.js +8 -0
  118. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssign.js +8 -0
  119. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignIn.js +8 -0
  120. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseAssignValue.js +12 -0
  121. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseClone.js +57 -0
  122. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseCreate.js +14 -0
  123. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseFindIndex.js +7 -0
  124. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseFor.js +5 -0
  125. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGet.js +10 -0
  126. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetAllKeys.js +9 -0
  127. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGetTag.js +10 -0
  128. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseHasIn.js +6 -0
  129. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIndexOf.js +9 -0
  130. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsArguments.js +9 -0
  131. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqual.js +8 -0
  132. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsEqualDeep.js +30 -0
  133. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsMap.js +9 -0
  134. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsMatch.js +26 -0
  135. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNaN.js +6 -0
  136. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsNative.js +11 -0
  137. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsSet.js +9 -0
  138. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIsTypedArray.js +11 -0
  139. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseIteratee.js +11 -0
  140. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeys.js +12 -0
  141. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseKeysIn.js +13 -0
  142. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseMatches.js +12 -0
  143. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseMatchesProperty.js +17 -0
  144. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseMerge.js +19 -0
  145. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseMergeDeep.js +31 -0
  146. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_basePickBy.js +13 -0
  147. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseProperty.js +8 -0
  148. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_basePropertyDeep.js +9 -0
  149. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseRest.js +9 -0
  150. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseSet.js +22 -0
  151. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseSetToString.js +14 -0
  152. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseTimes.js +7 -0
  153. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js +15 -0
  154. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseTrim.js +8 -0
  155. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseUnary.js +8 -0
  156. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseUniq.js +27 -0
  157. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cacheHas.js +6 -0
  158. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_castPath.js +10 -0
  159. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneArrayBuffer.js +8 -0
  160. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneBuffer.js +10 -0
  161. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneDataView.js +8 -0
  162. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneRegExp.js +8 -0
  163. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneSymbol.js +8 -0
  164. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_cloneTypedArray.js +8 -0
  165. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyArray.js +8 -0
  166. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copyObject.js +14 -0
  167. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbols.js +8 -0
  168. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_copySymbolsIn.js +8 -0
  169. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_coreJsData.js +5 -0
  170. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_createAssigner.js +15 -0
  171. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_createBaseFor.js +12 -0
  172. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_createFind.js +19 -0
  173. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_createSet.js +9 -0
  174. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_defineProperty.js +10 -0
  175. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalArrays.js +35 -0
  176. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalByTag.js +35 -0
  177. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_equalObjects.js +32 -0
  178. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_freeGlobal.js +4 -0
  179. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeys.js +9 -0
  180. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getAllKeysIn.js +9 -0
  181. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getMapData.js +8 -0
  182. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getMatchData.js +16 -0
  183. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getNative.js +9 -0
  184. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getPrototype.js +5 -0
  185. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getRawTag.js +14 -0
  186. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbols.js +10 -0
  187. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getSymbolsIn.js +11 -0
  188. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getTag.js +23 -0
  189. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_getValue.js +6 -0
  190. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hasPath.js +18 -0
  191. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashClear.js +7 -0
  192. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashDelete.js +7 -0
  193. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashGet.js +13 -0
  194. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashHas.js +9 -0
  195. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_hashSet.js +9 -0
  196. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneArray.js +8 -0
  197. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneByTag.js +33 -0
  198. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_initCloneObject.js +9 -0
  199. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isIndex.js +8 -0
  200. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isIterateeCall.js +12 -0
  201. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isKey.js +11 -0
  202. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isKeyable.js +7 -0
  203. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isMasked.js +11 -0
  204. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isPrototype.js +8 -0
  205. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isStrictComparable.js +7 -0
  206. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheClear.js +6 -0
  207. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheDelete.js +9 -0
  208. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheGet.js +8 -0
  209. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheHas.js +7 -0
  210. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_listCacheSet.js +8 -0
  211. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheClear.js +13 -0
  212. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheDelete.js +8 -0
  213. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheGet.js +7 -0
  214. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheHas.js +7 -0
  215. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapCacheSet.js +8 -0
  216. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_mapToArray.js +9 -0
  217. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_matchesStrictComparable.js +8 -0
  218. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_memoizeCapped.js +11 -0
  219. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeCreate.js +5 -0
  220. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeys.js +5 -0
  221. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nativeKeysIn.js +8 -0
  222. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_nodeUtil.js +9 -0
  223. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_objectToString.js +7 -0
  224. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_overArg.js +8 -0
  225. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_overRest.js +13 -0
  226. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_root.js +5 -0
  227. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_safeGet.js +6 -0
  228. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setCacheAdd.js +7 -0
  229. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setCacheHas.js +6 -0
  230. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setToArray.js +9 -0
  231. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setToString.js +6 -0
  232. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_shortOut.js +14 -0
  233. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackClear.js +7 -0
  234. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackDelete.js +7 -0
  235. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackGet.js +6 -0
  236. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackHas.js +6 -0
  237. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stackSet.js +16 -0
  238. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_strictIndexOf.js +7 -0
  239. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stringToPath.js +10 -0
  240. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_toKey.js +10 -0
  241. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_toSource.js +15 -0
  242. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_trimmedEndIndex.js +8 -0
  243. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/cloneDeep.js +8 -0
  244. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/constant.js +8 -0
  245. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/eq.js +6 -0
  246. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/find.js +6 -0
  247. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/findIndex.js +13 -0
  248. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/get.js +8 -0
  249. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/hasIn.js +8 -0
  250. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/identity.js +6 -0
  251. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArguments.js +10 -0
  252. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArray.js +4 -0
  253. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArrayLike.js +8 -0
  254. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArrayLikeObject.js +8 -0
  255. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isBuffer.js +6 -0
  256. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isEmpty.js +21 -0
  257. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isEqual.js +7 -0
  258. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isEqualWith.js +9 -0
  259. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isFunction.js +11 -0
  260. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isLength.js +7 -0
  261. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isMap.js +7 -0
  262. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isNumber.js +9 -0
  263. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObject.js +7 -0
  264. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isObjectLike.js +6 -0
  265. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isPlainObject.js +14 -0
  266. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isSet.js +7 -0
  267. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js +9 -0
  268. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isTypedArray.js +7 -0
  269. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keys.js +9 -0
  270. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/keysIn.js +9 -0
  271. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/memoize.js +16 -0
  272. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/merge.js +8 -0
  273. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/negate.js +17 -0
  274. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/noop.js +4 -0
  275. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/omitBy.js +9 -0
  276. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/pickBy.js +16 -0
  277. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/property.js +10 -0
  278. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubArray.js +6 -0
  279. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/stubFalse.js +6 -0
  280. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toFinite.js +8 -0
  281. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toInteger.js +8 -0
  282. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toNumber.js +19 -0
  283. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toPlainObject.js +8 -0
  284. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toString.js +7 -0
  285. package/dist/node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/uniqWith.js +7 -0
  286. package/package.json +78 -16
  287. package/CHANGELOG.json +0 -1247
  288. package/CHANGELOG.md +0 -2435
  289. package/LICENSE.md +0 -5
  290. package/README.md +0 -28
  291. package/configure/CHANGELOG.json +0 -827
  292. package/configure/CHANGELOG.md +0 -2082
  293. package/configure/lib/arrows.js +0 -89
  294. package/configure/lib/arrows.js.map +0 -1
  295. package/configure/lib/card-bar.js +0 -57
  296. package/configure/lib/card-bar.js.map +0 -1
  297. package/configure/lib/defaults.js +0 -177
  298. package/configure/lib/defaults.js.map +0 -1
  299. package/configure/lib/domain.js +0 -87
  300. package/configure/lib/domain.js.map +0 -1
  301. package/configure/lib/index.js +0 -176
  302. package/configure/lib/index.js.map +0 -1
  303. package/configure/lib/main.js +0 -815
  304. package/configure/lib/main.js.map +0 -1
  305. package/configure/lib/number-text-field.js +0 -26
  306. package/configure/lib/number-text-field.js.map +0 -1
  307. package/configure/lib/point-config.js +0 -84
  308. package/configure/lib/point-config.js.map +0 -1
  309. package/configure/lib/size.js +0 -66
  310. package/configure/lib/size.js.map +0 -1
  311. package/configure/lib/ticks.js +0 -234
  312. package/configure/lib/ticks.js.map +0 -1
  313. package/configure/lib/utils.js +0 -12
  314. package/configure/lib/utils.js.map +0 -1
  315. package/configure/package.json +0 -20
  316. package/controller/CHANGELOG.json +0 -332
  317. package/controller/CHANGELOG.md +0 -1360
  318. package/controller/lib/defaults.js +0 -56
  319. package/controller/lib/defaults.js.map +0 -1
  320. package/controller/lib/index.js +0 -430
  321. package/controller/lib/index.js.map +0 -1
  322. package/controller/lib/tickUtils.js +0 -294
  323. package/controller/lib/tickUtils.js.map +0 -1
  324. package/controller/lib/utils.js +0 -168
  325. package/controller/lib/utils.js.map +0 -1
  326. package/controller/package.json +0 -20
  327. package/demo.gif +0 -0
  328. package/docs/config-schema.json +0 -2532
  329. package/docs/config-schema.json.md +0 -1844
  330. package/docs/demo/config.js +0 -8
  331. package/docs/demo/generate.js +0 -39
  332. package/docs/demo/index.html +0 -1
  333. package/docs/pie-schema.json +0 -2461
  334. package/docs/pie-schema.json.md +0 -1228
  335. package/docs/schemas/config.json +0 -256
  336. package/lib/data-converter.js +0 -96
  337. package/lib/data-converter.js.map +0 -1
  338. package/lib/draggable/index.js +0 -114
  339. package/lib/draggable/index.js.map +0 -1
  340. package/lib/index.js +0 -196
  341. package/lib/index.js.map +0 -1
  342. package/lib/number-line/colors.js +0 -11
  343. package/lib/number-line/colors.js.map +0 -1
  344. package/lib/number-line/feedback.js +0 -92
  345. package/lib/number-line/feedback.js.map +0 -1
  346. package/lib/number-line/graph/arrow.js +0 -44
  347. package/lib/number-line/graph/arrow.js.map +0 -1
  348. package/lib/number-line/graph/elements/base.js +0 -20
  349. package/lib/number-line/graph/elements/base.js.map +0 -1
  350. package/lib/number-line/graph/elements/builder.js +0 -37
  351. package/lib/number-line/graph/elements/builder.js.map +0 -1
  352. package/lib/number-line/graph/elements/line.js +0 -259
  353. package/lib/number-line/graph/elements/line.js.map +0 -1
  354. package/lib/number-line/graph/elements/point.js +0 -204
  355. package/lib/number-line/graph/elements/point.js.map +0 -1
  356. package/lib/number-line/graph/elements/ray.js +0 -190
  357. package/lib/number-line/graph/elements/ray.js.map +0 -1
  358. package/lib/number-line/graph/index.js +0 -262
  359. package/lib/number-line/graph/index.js.map +0 -1
  360. package/lib/number-line/graph/line.js +0 -38
  361. package/lib/number-line/graph/line.js.map +0 -1
  362. package/lib/number-line/graph/stacks.js +0 -78
  363. package/lib/number-line/graph/stacks.js.map +0 -1
  364. package/lib/number-line/graph/tick-utils.js +0 -347
  365. package/lib/number-line/graph/tick-utils.js.map +0 -1
  366. package/lib/number-line/graph/ticks.js +0 -188
  367. package/lib/number-line/graph/ticks.js.map +0 -1
  368. package/lib/number-line/index.js +0 -384
  369. package/lib/number-line/index.js.map +0 -1
  370. package/lib/number-line/point-chooser/button.js +0 -49
  371. package/lib/number-line/point-chooser/button.js.map +0 -1
  372. package/lib/number-line/point-chooser/img.js +0 -8
  373. package/lib/number-line/point-chooser/img.js.map +0 -1
  374. package/lib/number-line/point-chooser/index.js +0 -197
  375. package/lib/number-line/point-chooser/index.js.map +0 -1
  376. package/lib/number-line/point-chooser/styles.js +0 -77
  377. package/lib/number-line/point-chooser/styles.js.map +0 -1
  378. package/lib/number-line/transitions/fade.js +0 -88
  379. package/lib/number-line/transitions/fade.js.map +0 -1
  380. package/lib/number-line/transitions/index.js +0 -14
  381. package/lib/number-line/transitions/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_baseSet-ycZx94p7.js","names":["_typeof","name","dependencies","hasOwnProperty","_typeof","name","dependencies","name","dependencies","_typeof","hasOwnProperty","name","dependencies","name","dependencies","name","dependencies","hasOwnProperty","name","dependencies","name","dependencies","name","dependencies","_typeof","name","dependencies","hasOwnProperty","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","_typeof","_extends","name","dependencies","hasOwnProperty","_extends","name","dependencies","hasOwnProperty","name","dependencies","name","dependencies","name","dependencies","hasOwnProperty","name","dependencies","name","dependencies","name","dependencies","hasOwnProperty","name","dependencies","hasOwnProperty","name","dependencies","name","dependencies","hasOwnProperty","name","dependencies","name","dependencies","name","dependencies","name","dependencies","hasOwnProperty","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","name","dependencies","isInteger","isNaN","apply","filter","forEach","map","format","clone","typeOf","identity","INFINITY","Symbol","isArray","INFINITY","isArray","isArray","hasOwnProperty","isArray","getTag"],"sources":["../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/keywords.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/Node.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/utils/errorTransform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/utils/access.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/AccessorNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/ArrayNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/utils/assign.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/operators.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/AssignmentNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/BlockNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/ConditionalNode.js","../../../../../node_modules/.bun/escape-latex@1.2.0/node_modules/escape-latex/dist/index.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/utils/latex.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/ConstantNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/FunctionAssignmentNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/IndexNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/ObjectNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/OperatorNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/ParenthesisNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/RangeNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/RelationalNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/SymbolNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/node/FunctionNode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/parse.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/function/compile.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/function/evaluate.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/Parser.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/function/parser.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/Help.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/type/chain/Chain.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/bignumber.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/typeOf.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/isZero.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/isPrime.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/isPositive.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/isNumeric.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/hasNumericValue.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/isNegative.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/isInteger.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/isNaN.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/format.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/bin.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/oct.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/hex.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/clone.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/units/to.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/tanh.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/tan.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/sinh.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/sech.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/sec.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/csch.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/csc.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/coth.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/cot.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/cosh.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/cos.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/atan2.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/atanh.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/atan.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/asinh.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/asin.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/asech.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/asec.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/acsch.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/acsc.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/acoth.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/acot.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/acosh.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/acos.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/statistics/sum.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/statistics/std.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/statistics/quantileSeq.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/statistics/prod.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/statistics/mode.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/statistics/min.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/statistics/median.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/statistics/mean.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/statistics/max.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/statistics/mad.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/special/erf.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/set/setUnion.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/set/setSymDifference.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/set/setSize.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/set/setPowerset.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/set/setMultiplicity.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/set/setIsSubset.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/set/setIntersect.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/set/setDistinct.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/set/setDifference.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/set/setCartesian.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/relational/unequal.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/relational/smallerEq.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/relational/smaller.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/relational/largerEq.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/relational/larger.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/relational/equalText.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/relational/equal.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/relational/deepEqual.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/relational/compareText.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/relational/compareNatural.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/relational/compare.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/probability/randomInt.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/probability/random.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/probability/pickRandom.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/probability/permutations.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/probability/multinomial.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/probability/kldivergence.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/probability/gamma.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/probability/factorial.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/probability/combinations.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/probability/combinationsWithRep.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/zeros.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/transpose.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/trace.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/subset.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/squeeze.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/sort.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/size.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/diff.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/reshape.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/resize.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/range.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/partitionSelect.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/ones.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/map.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/kron.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/inv.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/forEach.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/flatten.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/filter.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/identity.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/getMatrixDataType.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/dot.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/diag.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/det.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/ctranspose.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/cross.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/concat.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/logical/xor.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/logical/or.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/logical/not.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/logical/and.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/geometry/intersect.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/geometry/distance.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/expression/help.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/expression/evaluate.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/complex/im.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/complex/re.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/complex/conj.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/complex/arg.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/core/typed.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/core/import.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/core/config.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/combinatorics/stirlingS2.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/combinatorics/composition.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/combinatorics/catalan.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/combinatorics/bellNumbers.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/bitwise/rightLogShift.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/bitwise/rightArithShift.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/bitwise/leftShift.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/bitwise/bitXor.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/bitwise/bitOr.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/bitwise/bitNot.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/bitwise/bitAnd.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/xgcd.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/unaryPlus.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/unaryMinus.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/square.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/sqrtm.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/sqrt.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/sign.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/round.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/pow.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/nthRoots.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/nthRoot.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/norm.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/multiply.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/mod.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/log10.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/log1p.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/log2.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/log.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/lcm.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/hypot.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/gcd.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/floor.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/fix.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/expm1.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/expm.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/eigs.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/exp.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/dotMultiply.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/dotDivide.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/divide.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/cube.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/ceil.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/cbrt.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/add.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/abs.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/algebra/qr.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/algebra/usolve.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/algebra/usolveAll.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/algebra/slu.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/algebra/rationalize.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/algebra/simplify.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/algebra/lup.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/algebra/lsolve.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/algebra/lsolveAll.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/algebra/derivative.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/version.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/true.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/tau.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/SQRT2.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/SQRT1_2.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/phi.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/pi.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/null.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/NaN.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/LOG10E.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/LOG2E.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/LN10.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/LN2.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/Infinity.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/i.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/false.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/constants/e.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/unit.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/string.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/splitUnit.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/sparse.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/number.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/matrix.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/index.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/fraction.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/createUnit.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/complex.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/construction/boolean.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/dotPow.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/algebra/lusolve.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/arithmetic/subtract.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/statistics/variance.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/trigonometry/sin.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/utils/numeric.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/column.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/row.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/rotationMatrix.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/function/matrix/rotate.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/embeddedDocs/embeddedDocs.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/function/help.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/type/chain/function/chain.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/function/algebra/simplify/util.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/function/algebra/simplify/simplifyCore.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/function/algebra/simplify/simplifyConstant.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/function/algebra/simplify/resolve.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/function/algebra/simplify.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/function/algebra/derivative.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/function/algebra/rationalize.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/json/reviver.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/apply.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/column.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/utils/compileInlineExpression.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/filter.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/forEach.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/index.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/map.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/max.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/mean.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/min.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/range.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/row.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/subset.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/concat.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/diff.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/std.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/sum.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/expression/transform/variance.transform.js","../../../../../node_modules/.bun/mathjs@7.6.0/node_modules/mathjs/es/entry/impureFunctionsAny.generated.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isSymbol.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_arrayMap.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseToString.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_trimmedEndIndex.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseTrim.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toNumber.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toFinite.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toInteger.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/identity.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_apply.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_shortOut.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/constant.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseSetToString.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_setToString.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_overRest.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseRest.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_isKey.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/memoize.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_memoizeCapped.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_stringToPath.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/toString.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_castPath.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_toKey.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseGet.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/get.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isPlainObject.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseProperty.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isArrayLikeObject.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/isEmpty.js","../../../../../node_modules/.bun/lodash-es@4.18.1/node_modules/lodash-es/_baseSet.js"],"sourcesContent":["// Reserved keywords not allowed to use in the parser\nexport var keywords = {\n end: true\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { isNode } from '../../utils/is';\nimport { keywords } from '../keywords';\nimport { deepStrictEqual, hasOwnProperty } from '../../utils/object';\nimport { factory } from '../../utils/factory';\nvar name = 'Node';\nvar dependencies = ['mathWithTransform'];\nexport var createNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var mathWithTransform = _ref.mathWithTransform;\n\n /**\n * Node\n */\n function Node() {\n if (!(this instanceof Node)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n }\n /**\n * Evaluate the node\n * @param {Object} [scope] Scope to read/write variables\n * @return {*} Returns the result\n */\n\n\n Node.prototype.evaluate = function (scope) {\n return this.compile().evaluate(scope);\n };\n\n Node.prototype.type = 'Node';\n Node.prototype.isNode = true;\n Node.prototype.comment = '';\n /**\n * Compile the node into an optimized, evauatable JavaScript function\n * @return {{evaluate: function([Object])}} object\n * Returns an object with a function 'evaluate',\n * which can be invoked as expr.evaluate([scope: Object]),\n * where scope is an optional object with\n * variables.\n */\n\n Node.prototype.compile = function () {\n var expr = this._compile(mathWithTransform, {});\n\n var args = {};\n var context = null;\n\n function evaluate(scope) {\n var s = scope || {};\n\n _validateScope(s);\n\n return expr(s, args, context);\n }\n\n return {\n evaluate: evaluate\n };\n };\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n\n Node.prototype._compile = function (math, argNames) {\n throw new Error('Method _compile should be implemented by type ' + this.type);\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n Node.prototype.forEach = function (callback) {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot run forEach on a Node interface');\n };\n /**\n * Create a new Node having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {OperatorNode} Returns a transformed copy of the node\n */\n\n\n Node.prototype.map = function (callback) {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot run map on a Node interface');\n };\n /**\n * Validate whether an object is a Node, for use with map\n * @param {Node} node\n * @returns {Node} Returns the input if it's a node, else throws an Error\n * @protected\n */\n\n\n Node.prototype._ifNode = function (node) {\n if (!isNode(node)) {\n throw new TypeError('Callback function must return a Node');\n }\n\n return node;\n };\n /**\n * Recursively traverse all nodes in a node tree. Executes given callback for\n * this node and each of its child nodes.\n * @param {function(node: Node, path: string, parent: Node)} callback\n * A callback called for every node in the node tree.\n */\n\n\n Node.prototype.traverse = function (callback) {\n // execute callback for itself\n // eslint-disable-next-line\n callback(this, null, null); // recursively traverse over all childs of a node\n\n function _traverse(node, callback) {\n node.forEach(function (child, path, parent) {\n callback(child, path, parent);\n\n _traverse(child, callback);\n });\n }\n\n _traverse(this, callback);\n };\n /**\n * Recursively transform a node tree via a transform function.\n *\n * For example, to replace all nodes of type SymbolNode having name 'x' with a\n * ConstantNode with value 2:\n *\n * const res = Node.transform(function (node, path, parent) {\n * if (node && node.isSymbolNode) && (node.name === 'x')) {\n * return new ConstantNode(2)\n * }\n * else {\n * return node\n * }\n * })\n *\n * @param {function(node: Node, path: string, parent: Node) : Node} callback\n * A mapping function accepting a node, and returning\n * a replacement for the node or the original node.\n * Signature: callback(node: Node, index: string, parent: Node) : Node\n * @return {Node} Returns the original node or its replacement\n */\n\n\n Node.prototype.transform = function (callback) {\n function _transform(child, path, parent) {\n var replacement = callback(child, path, parent);\n\n if (replacement !== child) {\n // stop iterating when the node is replaced\n return replacement;\n }\n\n return child.map(_transform);\n }\n\n return _transform(this, null, null);\n };\n /**\n * Find any node in the node tree matching given filter function. For example, to\n * find all nodes of type SymbolNode having name 'x':\n *\n * const results = Node.filter(function (node) {\n * return (node && node.isSymbolNode) && (node.name === 'x')\n * })\n *\n * @param {function(node: Node, path: string, parent: Node) : Node} callback\n * A test function returning true when a node matches, and false\n * otherwise. Function signature:\n * callback(node: Node, index: string, parent: Node) : boolean\n * @return {Node[]} nodes An array with nodes matching given filter criteria\n */\n\n\n Node.prototype.filter = function (callback) {\n var nodes = [];\n this.traverse(function (node, path, parent) {\n if (callback(node, path, parent)) {\n nodes.push(node);\n }\n });\n return nodes;\n };\n /**\n * Create a shallow clone of this node\n * @return {Node}\n */\n\n\n Node.prototype.clone = function () {\n // must be implemented by each of the Node implementations\n throw new Error('Cannot clone a Node interface');\n };\n /**\n * Create a deep clone of this node\n * @return {Node}\n */\n\n\n Node.prototype.cloneDeep = function () {\n return this.map(function (node) {\n return node.cloneDeep();\n });\n };\n /**\n * Deep compare this node with another node.\n * @param {Node} other\n * @return {boolean} Returns true when both nodes are of the same type and\n * contain the same values (as do their childs)\n */\n\n\n Node.prototype.equals = function (other) {\n return other ? deepStrictEqual(this, other) : false;\n };\n /**\n * Get string representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\"or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n\n\n Node.prototype.toString = function (options) {\n var customString;\n\n if (options && _typeof(options) === 'object') {\n switch (_typeof(options.handler)) {\n case 'object':\n case 'undefined':\n break;\n\n case 'function':\n customString = options.handler(this, options);\n break;\n\n default:\n throw new TypeError('Object or function expected as callback');\n }\n }\n\n if (typeof customString !== 'undefined') {\n return customString;\n }\n\n return this._toString(options);\n };\n /**\n * Get a JSON representation of the node\n * Both .toJSON() and the static .fromJSON(json) should be implemented by all\n * implementations of Node\n * @returns {Object}\n */\n\n\n Node.prototype.toJSON = function () {\n throw new Error('Cannot serialize object: toJSON not implemented by ' + this.type);\n };\n /**\n * Get HTML representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\" or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n\n\n Node.prototype.toHTML = function (options) {\n var customString;\n\n if (options && _typeof(options) === 'object') {\n switch (_typeof(options.handler)) {\n case 'object':\n case 'undefined':\n break;\n\n case 'function':\n customString = options.handler(this, options);\n break;\n\n default:\n throw new TypeError('Object or function expected as callback');\n }\n }\n\n if (typeof customString !== 'undefined') {\n return customString;\n }\n\n return this.toHTML(options);\n };\n /**\n * Internal function to generate the string output.\n * This has to be implemented by every Node\n *\n * @throws {Error}\n */\n\n\n Node.prototype._toString = function () {\n // must be implemented by each of the Node implementations\n throw new Error('_toString not implemented for ' + this.type);\n };\n /**\n * Get LaTeX representation. (wrapper function)\n *\n * This function can get an object of the following form:\n * {\n * handler: //This can be a callback function of the form\n * // \"function callback(node, options)\"or\n * // a map that maps function names (used in FunctionNodes)\n * // to callbacks\n * parenthesis: \"keep\" //the parenthesis option (This is optional)\n * }\n *\n * @param {Object} [options]\n * @return {string}\n */\n\n\n Node.prototype.toTex = function (options) {\n var customTex;\n\n if (options && _typeof(options) === 'object') {\n switch (_typeof(options.handler)) {\n case 'object':\n case 'undefined':\n break;\n\n case 'function':\n customTex = options.handler(this, options);\n break;\n\n default:\n throw new TypeError('Object or function expected as callback');\n }\n }\n\n if (typeof customTex !== 'undefined') {\n return customTex;\n }\n\n return this._toTex(options);\n };\n /**\n * Internal function to generate the LaTeX output.\n * This has to be implemented by every Node\n *\n * @param {Object} [options]\n * @throws {Error}\n */\n\n\n Node.prototype._toTex = function (options) {\n // must be implemented by each of the Node implementations\n throw new Error('_toTex not implemented for ' + this.type);\n };\n /**\n * Get identifier.\n * @return {string}\n */\n\n\n Node.prototype.getIdentifier = function () {\n return this.type;\n };\n /**\n * Get the content of the current Node.\n * @return {Node} node\n **/\n\n\n Node.prototype.getContent = function () {\n return this;\n };\n /**\n * Validate the symbol names of a scope.\n * Throws an error when the scope contains an illegal symbol.\n * @param {Object} scope\n */\n\n\n function _validateScope(scope) {\n for (var symbol in scope) {\n if (hasOwnProperty(scope, symbol)) {\n if (symbol in keywords) {\n throw new Error('Scope contains an illegal symbol, \"' + symbol + '\" is a reserved keyword');\n }\n }\n }\n }\n\n return Node;\n}, {\n isClass: true,\n isNode: true\n});","import { IndexError } from '../../../error/IndexError';\n/**\n * Transform zero-based indices to one-based indices in errors\n * @param {Error} err\n * @returns {Error | IndexError} Returns the transformed error\n */\n\nexport function errorTransform(err) {\n if (err && err.isIndexError) {\n return new IndexError(err.index + 1, err.min + 1, err.max !== undefined ? err.max + 1 : undefined);\n }\n\n return err;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { errorTransform } from '../../transform/utils/errorTransform';\nimport { getSafeProperty } from '../../../utils/customs';\nexport function accessFactory(_ref) {\n var subset = _ref.subset;\n\n /**\n * Retrieve part of an object:\n *\n * - Retrieve a property from an object\n * - Retrieve a part of a string\n * - Retrieve a matrix subset\n *\n * @param {Object | Array | Matrix | string} object\n * @param {Index} index\n * @return {Object | Array | Matrix | string} Returns the subset\n */\n return function access(object, index) {\n try {\n if (Array.isArray(object)) {\n return subset(object, index);\n } else if (object && typeof object.subset === 'function') {\n // Matrix\n return object.subset(index);\n } else if (typeof object === 'string') {\n // TODO: move getStringSubset into a separate util file, use that\n return subset(object, index);\n } else if (_typeof(object) === 'object') {\n if (!index.isObjectProperty()) {\n throw new TypeError('Cannot apply a numeric index as object property');\n }\n\n return getSafeProperty(object, index.getObjectProperty());\n } else {\n throw new TypeError('Cannot apply index: unsupported type of object');\n }\n } catch (err) {\n throw errorTransform(err);\n }\n };\n}","import { isAccessorNode, isArrayNode, isConstantNode, isFunctionNode, isIndexNode, isNode, isObjectNode, isParenthesisNode, isSymbolNode } from '../../utils/is';\nimport { getSafeProperty } from '../../utils/customs';\nimport { factory } from '../../utils/factory';\nimport { accessFactory } from './utils/access';\nvar name = 'AccessorNode';\nvar dependencies = ['subset', 'Node'];\nexport var createAccessorNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var subset = _ref.subset,\n Node = _ref.Node;\n var access = accessFactory({\n subset: subset\n });\n /**\n * @constructor AccessorNode\n * @extends {Node}\n * Access an object property or get a matrix subset\n *\n * @param {Node} object The object from which to retrieve\n * a property or subset.\n * @param {IndexNode} index IndexNode containing ranges\n */\n\n function AccessorNode(object, index) {\n if (!(this instanceof AccessorNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (!isNode(object)) {\n throw new TypeError('Node expected for parameter \"object\"');\n }\n\n if (!isIndexNode(index)) {\n throw new TypeError('IndexNode expected for parameter \"index\"');\n }\n\n this.object = object || null;\n this.index = index; // readonly property name\n\n Object.defineProperty(this, 'name', {\n get: function () {\n if (this.index) {\n return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';\n } else {\n return this.object.name || '';\n }\n }.bind(this),\n set: function set() {\n throw new Error('Cannot assign a new name, name is read-only');\n }\n });\n }\n\n AccessorNode.prototype = new Node();\n AccessorNode.prototype.type = 'AccessorNode';\n AccessorNode.prototype.isAccessorNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n AccessorNode.prototype._compile = function (math, argNames) {\n var evalObject = this.object._compile(math, argNames);\n\n var evalIndex = this.index._compile(math, argNames);\n\n if (this.index.isObjectProperty()) {\n var prop = this.index.getObjectProperty();\n return function evalAccessorNode(scope, args, context) {\n return getSafeProperty(evalObject(scope, args, context), prop);\n };\n } else {\n return function evalAccessorNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n var index = evalIndex(scope, args, object); // we pass object here instead of context\n\n return access(object, index);\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n AccessorNode.prototype.forEach = function (callback) {\n callback(this.object, 'object', this);\n callback(this.index, 'index', this);\n };\n /**\n * Create a new AccessorNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {AccessorNode} Returns a transformed copy of the node\n */\n\n\n AccessorNode.prototype.map = function (callback) {\n return new AccessorNode(this._ifNode(callback(this.object, 'object', this)), this._ifNode(callback(this.index, 'index', this)));\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {AccessorNode}\n */\n\n\n AccessorNode.prototype.clone = function () {\n return new AccessorNode(this.object, this.index);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AccessorNode.prototype._toString = function (options) {\n var object = this.object.toString(options);\n\n if (needParenthesis(this.object)) {\n object = '(' + object + ')';\n }\n\n return object + this.index.toString(options);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AccessorNode.prototype.toHTML = function (options) {\n var object = this.object.toHTML(options);\n\n if (needParenthesis(this.object)) {\n object = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + object + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n return object + this.index.toHTML(options);\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AccessorNode.prototype._toTex = function (options) {\n var object = this.object.toTex(options);\n\n if (needParenthesis(this.object)) {\n object = '\\\\left(\\' + object + \\'\\\\right)';\n }\n\n return object + this.index.toTex(options);\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n AccessorNode.prototype.toJSON = function () {\n return {\n mathjs: 'AccessorNode',\n object: this.object,\n index: this.index\n };\n };\n /**\n * Instantiate an AccessorNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"AccessorNode\", object: ..., index: ...}`,\n * where mathjs is optional\n * @returns {AccessorNode}\n */\n\n\n AccessorNode.fromJSON = function (json) {\n return new AccessorNode(json.object, json.index);\n };\n /**\n * Are parenthesis needed?\n * @private\n */\n\n\n function needParenthesis(node) {\n // TODO: maybe make a method on the nodes which tells whether they need parenthesis?\n return !(isAccessorNode(node) || isArrayNode(node) || isConstantNode(node) || isFunctionNode(node) || isObjectNode(node) || isParenthesisNode(node) || isSymbolNode(node));\n }\n\n return AccessorNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isNode } from '../../utils/is';\nimport { map } from '../../utils/array';\nimport { factory } from '../../utils/factory';\nvar name = 'ArrayNode';\nvar dependencies = ['Node'];\nexport var createArrayNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var Node = _ref.Node;\n\n /**\n * @constructor ArrayNode\n * @extends {Node}\n * Holds an 1-dimensional array with items\n * @param {Node[]} [items] 1 dimensional array with items\n */\n function ArrayNode(items) {\n if (!(this instanceof ArrayNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.items = items || []; // validate input\n\n if (!Array.isArray(this.items) || !this.items.every(isNode)) {\n throw new TypeError('Array containing Nodes expected');\n }\n }\n\n ArrayNode.prototype = new Node();\n ArrayNode.prototype.type = 'ArrayNode';\n ArrayNode.prototype.isArrayNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n ArrayNode.prototype._compile = function (math, argNames) {\n var evalItems = map(this.items, function (item) {\n return item._compile(math, argNames);\n });\n var asMatrix = math.config.matrix !== 'Array';\n\n if (asMatrix) {\n var matrix = math.matrix;\n return function evalArrayNode(scope, args, context) {\n return matrix(map(evalItems, function (evalItem) {\n return evalItem(scope, args, context);\n }));\n };\n } else {\n return function evalArrayNode(scope, args, context) {\n return map(evalItems, function (evalItem) {\n return evalItem(scope, args, context);\n });\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n ArrayNode.prototype.forEach = function (callback) {\n for (var i = 0; i < this.items.length; i++) {\n var node = this.items[i];\n callback(node, 'items[' + i + ']', this);\n }\n };\n /**\n * Create a new ArrayNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ArrayNode} Returns a transformed copy of the node\n */\n\n\n ArrayNode.prototype.map = function (callback) {\n var items = [];\n\n for (var i = 0; i < this.items.length; i++) {\n items[i] = this._ifNode(callback(this.items[i], 'items[' + i + ']', this));\n }\n\n return new ArrayNode(items);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {ArrayNode}\n */\n\n\n ArrayNode.prototype.clone = function () {\n return new ArrayNode(this.items.slice(0));\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ArrayNode.prototype._toString = function (options) {\n var items = this.items.map(function (node) {\n return node.toString(options);\n });\n return '[' + items.join(', ') + ']';\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n ArrayNode.prototype.toJSON = function () {\n return {\n mathjs: 'ArrayNode',\n items: this.items\n };\n };\n /**\n * Instantiate an ArrayNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ArrayNode\", items: [...]}`,\n * where mathjs is optional\n * @returns {ArrayNode}\n */\n\n\n ArrayNode.fromJSON = function (json) {\n return new ArrayNode(json.items);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ArrayNode.prototype.toHTML = function (options) {\n var items = this.items.map(function (node) {\n return node.toHTML(options);\n });\n return '<span class=\"math-parenthesis math-square-parenthesis\">[</span>' + items.join('<span class=\"math-separator\">,</span>') + '<span class=\"math-parenthesis math-square-parenthesis\">]</span>';\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ArrayNode.prototype._toTex = function (options) {\n var s = '\\\\begin{bmatrix}';\n this.items.forEach(function (node) {\n if (node.items) {\n s += node.items.map(function (childNode) {\n return childNode.toTex(options);\n }).join('&');\n } else {\n s += node.toTex(options);\n } // new line\n\n\n s += '\\\\\\\\';\n });\n s += '\\\\end{bmatrix}';\n return s;\n };\n\n return ArrayNode;\n}, {\n isClass: true,\n isNode: true\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { errorTransform } from '../../transform/utils/errorTransform';\nimport { setSafeProperty } from '../../../utils/customs';\nexport function assignFactory(_ref) {\n var subset = _ref.subset,\n matrix = _ref.matrix;\n\n /**\n * Replace part of an object:\n *\n * - Assign a property to an object\n * - Replace a part of a string\n * - Replace a matrix subset\n *\n * @param {Object | Array | Matrix | string} object\n * @param {Index} index\n * @param {*} value\n * @return {Object | Array | Matrix | string} Returns the original object\n * except in case of a string\n */\n // TODO: change assign to return the value instead of the object\n return function assign(object, index, value) {\n try {\n if (Array.isArray(object)) {\n // we use matrix.subset here instead of the function subset because we must not clone the contents\n return matrix(object).subset(index, value).valueOf();\n } else if (object && typeof object.subset === 'function') {\n // Matrix\n return object.subset(index, value);\n } else if (typeof object === 'string') {\n // TODO: move setStringSubset into a separate util file, use that\n return subset(object, index, value);\n } else if (_typeof(object) === 'object') {\n if (!index.isObjectProperty()) {\n throw TypeError('Cannot apply a numeric index as object property');\n }\n\n setSafeProperty(object, index.getObjectProperty(), value);\n return object;\n } else {\n throw new TypeError('Cannot apply index: unsupported type of object');\n }\n } catch (err) {\n throw errorTransform(err);\n }\n };\n}","// list of identifiers of nodes in order of their precedence\n// also contains information about left/right associativity\n// and which other operator the operator is associative with\n// Example:\n// addition is associative with addition and subtraction, because:\n// (a+b)+c=a+(b+c)\n// (a+b)-c=a+(b-c)\n//\n// postfix operators are left associative, prefix operators\n// are right associative\n//\n// It's also possible to set the following properties:\n// latexParens: if set to false, this node doesn't need to be enclosed\n// in parentheses when using LaTeX\n// latexLeftParens: if set to false, this !OperatorNode's!\n// left argument doesn't need to be enclosed\n// in parentheses\n// latexRightParens: the same for the right argument\nimport { hasOwnProperty } from '../utils/object';\nexport var properties = [{\n // assignment\n AssignmentNode: {},\n FunctionAssignmentNode: {}\n}, {\n // conditional expression\n ConditionalNode: {\n latexLeftParens: false,\n latexRightParens: false,\n latexParens: false // conditionals don't need parentheses in LaTeX because\n // they are 2 dimensional\n\n }\n}, {\n // logical or\n 'OperatorNode:or': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // logical xor\n 'OperatorNode:xor': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // logical and\n 'OperatorNode:and': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise or\n 'OperatorNode:bitOr': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise xor\n 'OperatorNode:bitXor': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitwise and\n 'OperatorNode:bitAnd': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // relational operators\n 'OperatorNode:equal': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:unequal': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:smaller': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:larger': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:smallerEq': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:largerEq': {\n associativity: 'left',\n associativeWith: []\n },\n RelationalNode: {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // bitshift operators\n 'OperatorNode:leftShift': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:rightArithShift': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:rightLogShift': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // unit conversion\n 'OperatorNode:to': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // range\n RangeNode: {}\n}, {\n // addition, subtraction\n 'OperatorNode:add': {\n associativity: 'left',\n associativeWith: ['OperatorNode:add', 'OperatorNode:subtract']\n },\n 'OperatorNode:subtract': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // multiply, divide, modulus\n 'OperatorNode:multiply': {\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'Operator:dotMultiply', 'Operator:dotDivide']\n },\n 'OperatorNode:divide': {\n associativity: 'left',\n associativeWith: [],\n latexLeftParens: false,\n latexRightParens: false,\n latexParens: false // fractions don't require parentheses because\n // they're 2 dimensional, so parens aren't needed\n // in LaTeX\n\n },\n 'OperatorNode:dotMultiply': {\n associativity: 'left',\n associativeWith: ['OperatorNode:multiply', 'OperatorNode:divide', 'OperatorNode:dotMultiply', 'OperatorNode:doDivide']\n },\n 'OperatorNode:dotDivide': {\n associativity: 'left',\n associativeWith: []\n },\n 'OperatorNode:mod': {\n associativity: 'left',\n associativeWith: []\n }\n}, {\n // unary prefix operators\n 'OperatorNode:unaryPlus': {\n associativity: 'right'\n },\n 'OperatorNode:unaryMinus': {\n associativity: 'right'\n },\n 'OperatorNode:bitNot': {\n associativity: 'right'\n },\n 'OperatorNode:not': {\n associativity: 'right'\n }\n}, {\n // exponentiation\n 'OperatorNode:pow': {\n associativity: 'right',\n associativeWith: [],\n latexRightParens: false // the exponent doesn't need parentheses in\n // LaTeX because it's 2 dimensional\n // (it's on top)\n\n },\n 'OperatorNode:dotPow': {\n associativity: 'right',\n associativeWith: []\n }\n}, {\n // factorial\n 'OperatorNode:factorial': {\n associativity: 'left'\n }\n}, {\n // matrix transpose\n 'OperatorNode:transpose': {\n associativity: 'left'\n }\n}];\n/**\n * Get the precedence of a Node.\n * Higher number for higher precedence, starting with 0.\n * Returns null if the precedence is undefined.\n *\n * @param {Node} _node\n * @param {string} parenthesis\n * @return {number | null}\n */\n\nexport function getPrecedence(_node, parenthesis) {\n var node = _node;\n\n if (parenthesis !== 'keep') {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n node = _node.getContent();\n }\n\n var identifier = node.getIdentifier();\n\n for (var i = 0; i < properties.length; i++) {\n if (identifier in properties[i]) {\n return i;\n }\n }\n\n return null;\n}\n/**\n * Get the associativity of an operator (left or right).\n * Returns a string containing 'left' or 'right' or null if\n * the associativity is not defined.\n *\n * @param {Node}\n * @param {string} parenthesis\n * @return {string|null}\n * @throws {Error}\n */\n\nexport function getAssociativity(_node, parenthesis) {\n var node = _node;\n\n if (parenthesis !== 'keep') {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n node = _node.getContent();\n }\n\n var identifier = node.getIdentifier();\n var index = getPrecedence(node, parenthesis);\n\n if (index === null) {\n // node isn't in the list\n return null;\n }\n\n var property = properties[index][identifier];\n\n if (hasOwnProperty(property, 'associativity')) {\n if (property.associativity === 'left') {\n return 'left';\n }\n\n if (property.associativity === 'right') {\n return 'right';\n } // associativity is invalid\n\n\n throw Error('\\'' + identifier + '\\' has the invalid associativity \\'' + property.associativity + '\\'.');\n } // associativity is undefined\n\n\n return null;\n}\n/**\n * Check if an operator is associative with another operator.\n * Returns either true or false or null if not defined.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @param {string} parenthesis\n * @return {boolean | null}\n */\n\nexport function isAssociativeWith(nodeA, nodeB, parenthesis) {\n // ParenthesisNodes are only ignored when not in 'keep' mode\n var a = parenthesis !== 'keep' ? nodeA.getContent() : nodeA;\n var b = parenthesis !== 'keep' ? nodeA.getContent() : nodeB;\n var identifierA = a.getIdentifier();\n var identifierB = b.getIdentifier();\n var index = getPrecedence(a, parenthesis);\n\n if (index === null) {\n // node isn't in the list\n return null;\n }\n\n var property = properties[index][identifierA];\n\n if (hasOwnProperty(property, 'associativeWith') && property.associativeWith instanceof Array) {\n for (var i = 0; i < property.associativeWith.length; i++) {\n if (property.associativeWith[i] === identifierB) {\n return true;\n }\n }\n\n return false;\n } // associativeWith is not defined\n\n\n return null;\n}","import { isAccessorNode, isIndexNode, isNode, isSymbolNode } from '../../utils/is';\nimport { getSafeProperty, setSafeProperty } from '../../utils/customs';\nimport { factory } from '../../utils/factory';\nimport { accessFactory } from './utils/access';\nimport { assignFactory } from './utils/assign';\nimport { getPrecedence } from '../operators';\nvar name = 'AssignmentNode';\nvar dependencies = ['subset', '?matrix', // FIXME: should not be needed at all, should be handled by subset\n'Node'];\nexport var createAssignmentNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var subset = _ref.subset,\n matrix = _ref.matrix,\n Node = _ref.Node;\n var access = accessFactory({\n subset: subset\n });\n var assign = assignFactory({\n subset: subset,\n matrix: matrix\n });\n /**\n * @constructor AssignmentNode\n * @extends {Node}\n *\n * Define a symbol, like `a=3.2`, update a property like `a.b=3.2`, or\n * replace a subset of a matrix like `A[2,2]=42`.\n *\n * Syntax:\n *\n * new AssignmentNode(symbol, value)\n * new AssignmentNode(object, index, value)\n *\n * Usage:\n *\n * new AssignmentNode(new SymbolNode('a'), new ConstantNode(2)) // a=2\n * new AssignmentNode(new SymbolNode('a'), new IndexNode('b'), new ConstantNode(2)) // a.b=2\n * new AssignmentNode(new SymbolNode('a'), new IndexNode(1, 2), new ConstantNode(3)) // a[1,2]=3\n *\n * @param {SymbolNode | AccessorNode} object Object on which to assign a value\n * @param {IndexNode} [index=null] Index, property name or matrix\n * index. Optional. If not provided\n * and `object` is a SymbolNode,\n * the property is assigned to the\n * global scope.\n * @param {Node} value The value to be assigned\n */\n\n function AssignmentNode(object, index, value) {\n if (!(this instanceof AssignmentNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.object = object;\n this.index = value ? index : null;\n this.value = value || index; // validate input\n\n if (!isSymbolNode(object) && !isAccessorNode(object)) {\n throw new TypeError('SymbolNode or AccessorNode expected as \"object\"');\n }\n\n if (isSymbolNode(object) && object.name === 'end') {\n throw new Error('Cannot assign to symbol \"end\"');\n }\n\n if (this.index && !isIndexNode(this.index)) {\n // index is optional\n throw new TypeError('IndexNode expected as \"index\"');\n }\n\n if (!isNode(this.value)) {\n throw new TypeError('Node expected as \"value\"');\n } // readonly property name\n\n\n Object.defineProperty(this, 'name', {\n get: function () {\n if (this.index) {\n return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';\n } else {\n return this.object.name || '';\n }\n }.bind(this),\n set: function set() {\n throw new Error('Cannot assign a new name, name is read-only');\n }\n });\n }\n\n AssignmentNode.prototype = new Node();\n AssignmentNode.prototype.type = 'AssignmentNode';\n AssignmentNode.prototype.isAssignmentNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n AssignmentNode.prototype._compile = function (math, argNames) {\n var evalObject = this.object._compile(math, argNames);\n\n var evalIndex = this.index ? this.index._compile(math, argNames) : null;\n\n var evalValue = this.value._compile(math, argNames);\n\n var name = this.object.name;\n\n if (!this.index) {\n // apply a variable to the scope, for example `a=2`\n if (!isSymbolNode(this.object)) {\n throw new TypeError('SymbolNode expected as object');\n }\n\n return function evalAssignmentNode(scope, args, context) {\n return setSafeProperty(scope, name, evalValue(scope, args, context));\n };\n } else if (this.index.isObjectProperty()) {\n // apply an object property for example `a.b=2`\n var prop = this.index.getObjectProperty();\n return function evalAssignmentNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n var value = evalValue(scope, args, context);\n return setSafeProperty(object, prop, value);\n };\n } else if (isSymbolNode(this.object)) {\n // update a matrix subset, for example `a[2]=3`\n return function evalAssignmentNode(scope, args, context) {\n var childObject = evalObject(scope, args, context);\n var value = evalValue(scope, args, context);\n var index = evalIndex(scope, args, childObject); // Important: we pass childObject instead of context\n\n setSafeProperty(scope, name, assign(childObject, index, value));\n return value;\n };\n } else {\n // isAccessorNode(node.object) === true\n // update a matrix subset, for example `a.b[2]=3`\n // we will not use the compile function of the AccessorNode, but compile it\n // ourselves here as we need the parent object of the AccessorNode:\n // wee need to apply the updated object to parent object\n var evalParentObject = this.object.object._compile(math, argNames);\n\n if (this.object.index.isObjectProperty()) {\n var parentProp = this.object.index.getObjectProperty();\n return function evalAssignmentNode(scope, args, context) {\n var parent = evalParentObject(scope, args, context);\n var childObject = getSafeProperty(parent, parentProp);\n var index = evalIndex(scope, args, childObject); // Important: we pass childObject instead of context\n\n var value = evalValue(scope, args, context);\n setSafeProperty(parent, parentProp, assign(childObject, index, value));\n return value;\n };\n } else {\n // if some parameters use the 'end' parameter, we need to calculate the size\n var evalParentIndex = this.object.index._compile(math, argNames);\n\n return function evalAssignmentNode(scope, args, context) {\n var parent = evalParentObject(scope, args, context);\n var parentIndex = evalParentIndex(scope, args, parent); // Important: we pass parent instead of context\n\n var childObject = access(parent, parentIndex);\n var index = evalIndex(scope, args, childObject); // Important: we pass childObject instead of context\n\n var value = evalValue(scope, args, context);\n assign(parent, parentIndex, assign(childObject, index, value));\n return value;\n };\n }\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n AssignmentNode.prototype.forEach = function (callback) {\n callback(this.object, 'object', this);\n\n if (this.index) {\n callback(this.index, 'index', this);\n }\n\n callback(this.value, 'value', this);\n };\n /**\n * Create a new AssignmentNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {AssignmentNode} Returns a transformed copy of the node\n */\n\n\n AssignmentNode.prototype.map = function (callback) {\n var object = this._ifNode(callback(this.object, 'object', this));\n\n var index = this.index ? this._ifNode(callback(this.index, 'index', this)) : null;\n\n var value = this._ifNode(callback(this.value, 'value', this));\n\n return new AssignmentNode(object, index, value);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {AssignmentNode}\n */\n\n\n AssignmentNode.prototype.clone = function () {\n return new AssignmentNode(this.object, this.index, this.value);\n };\n /*\n * Is parenthesis needed?\n * @param {node} node\n * @param {string} [parenthesis='keep']\n * @private\n */\n\n\n function needParenthesis(node, parenthesis) {\n if (!parenthesis) {\n parenthesis = 'keep';\n }\n\n var precedence = getPrecedence(node, parenthesis);\n var exprPrecedence = getPrecedence(node.value, parenthesis);\n return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;\n }\n /**\n * Get string representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AssignmentNode.prototype._toString = function (options) {\n var object = this.object.toString(options);\n var index = this.index ? this.index.toString(options) : '';\n var value = this.value.toString(options);\n\n if (needParenthesis(this, options && options.parenthesis)) {\n value = '(' + value + ')';\n }\n\n return object + index + ' = ' + value;\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n AssignmentNode.prototype.toJSON = function () {\n return {\n mathjs: 'AssignmentNode',\n object: this.object,\n index: this.index,\n value: this.value\n };\n };\n /**\n * Instantiate an AssignmentNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"AssignmentNode\", object: ..., index: ..., value: ...}`,\n * where mathjs is optional\n * @returns {AssignmentNode}\n */\n\n\n AssignmentNode.fromJSON = function (json) {\n return new AssignmentNode(json.object, json.index, json.value);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AssignmentNode.prototype.toHTML = function (options) {\n var object = this.object.toHTML(options);\n var index = this.index ? this.index.toHTML(options) : '';\n var value = this.value.toHTML(options);\n\n if (needParenthesis(this, options && options.parenthesis)) {\n value = '<span class=\"math-paranthesis math-round-parenthesis\">(</span>' + value + '<span class=\"math-paranthesis math-round-parenthesis\">)</span>';\n }\n\n return object + index + '<span class=\"math-operator math-assignment-operator math-variable-assignment-operator math-binary-operator\">=</span>' + value;\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string}\n */\n\n\n AssignmentNode.prototype._toTex = function (options) {\n var object = this.object.toTex(options);\n var index = this.index ? this.index.toTex(options) : '';\n var value = this.value.toTex(options);\n\n if (needParenthesis(this, options && options.parenthesis)) {\n value = \"\\\\left(\".concat(value, \"\\\\right)\");\n }\n\n return object + index + ':=' + value;\n };\n\n return AssignmentNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isNode } from '../../utils/is';\nimport { forEach, map } from '../../utils/array';\nimport { factory } from '../../utils/factory';\nvar name = 'BlockNode';\nvar dependencies = ['ResultSet', 'Node'];\nexport var createBlockNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var ResultSet = _ref.ResultSet,\n Node = _ref.Node;\n\n /**\n * @constructor BlockNode\n * @extends {Node}\n * Holds a set with blocks\n * @param {Array.<{node: Node} | {node: Node, visible: boolean}>} blocks\n * An array with blocks, where a block is constructed as an Object\n * with properties block, which is a Node, and visible, which is\n * a boolean. The property visible is optional and is true by default\n */\n function BlockNode(blocks) {\n if (!(this instanceof BlockNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate input, copy blocks\n\n\n if (!Array.isArray(blocks)) throw new Error('Array expected');\n this.blocks = blocks.map(function (block) {\n var node = block && block.node;\n var visible = block && block.visible !== undefined ? block.visible : true;\n if (!isNode(node)) throw new TypeError('Property \"node\" must be a Node');\n if (typeof visible !== 'boolean') throw new TypeError('Property \"visible\" must be a boolean');\n return {\n node: node,\n visible: visible\n };\n });\n }\n\n BlockNode.prototype = new Node();\n BlockNode.prototype.type = 'BlockNode';\n BlockNode.prototype.isBlockNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n BlockNode.prototype._compile = function (math, argNames) {\n var evalBlocks = map(this.blocks, function (block) {\n return {\n evaluate: block.node._compile(math, argNames),\n visible: block.visible\n };\n });\n return function evalBlockNodes(scope, args, context) {\n var results = [];\n forEach(evalBlocks, function evalBlockNode(block) {\n var result = block.evaluate(scope, args, context);\n\n if (block.visible) {\n results.push(result);\n }\n });\n return new ResultSet(results);\n };\n };\n /**\n * Execute a callback for each of the child blocks of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n BlockNode.prototype.forEach = function (callback) {\n for (var i = 0; i < this.blocks.length; i++) {\n callback(this.blocks[i].node, 'blocks[' + i + '].node', this);\n }\n };\n /**\n * Create a new BlockNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {BlockNode} Returns a transformed copy of the node\n */\n\n\n BlockNode.prototype.map = function (callback) {\n var blocks = [];\n\n for (var i = 0; i < this.blocks.length; i++) {\n var block = this.blocks[i];\n\n var node = this._ifNode(callback(block.node, 'blocks[' + i + '].node', this));\n\n blocks[i] = {\n node: node,\n visible: block.visible\n };\n }\n\n return new BlockNode(blocks);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {BlockNode}\n */\n\n\n BlockNode.prototype.clone = function () {\n var blocks = this.blocks.map(function (block) {\n return {\n node: block.node,\n visible: block.visible\n };\n });\n return new BlockNode(blocks);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n BlockNode.prototype._toString = function (options) {\n return this.blocks.map(function (param) {\n return param.node.toString(options) + (param.visible ? '' : ';');\n }).join('\\n');\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n BlockNode.prototype.toJSON = function () {\n return {\n mathjs: 'BlockNode',\n blocks: this.blocks\n };\n };\n /**\n * Instantiate an BlockNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"BlockNode\", blocks: [{node: ..., visible: false}, ...]}`,\n * where mathjs is optional\n * @returns {BlockNode}\n */\n\n\n BlockNode.fromJSON = function (json) {\n return new BlockNode(json.blocks);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n BlockNode.prototype.toHTML = function (options) {\n return this.blocks.map(function (param) {\n return param.node.toHTML(options) + (param.visible ? '' : '<span class=\"math-separator\">;</span>');\n }).join('<span class=\"math-separator\"><br /></span>');\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n BlockNode.prototype._toTex = function (options) {\n return this.blocks.map(function (param) {\n return param.node.toTex(options) + (param.visible ? '' : ';');\n }).join('\\\\;\\\\;\\n');\n };\n\n return BlockNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isBigNumber, isComplex, isNode, isUnit, typeOf } from '../../utils/is';\nimport { factory } from '../../utils/factory';\nimport { getPrecedence } from '../operators';\nvar name = 'ConditionalNode';\nvar dependencies = ['Node'];\nexport var createConditionalNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var Node = _ref.Node;\n\n /**\n * A lazy evaluating conditional operator: 'condition ? trueExpr : falseExpr'\n *\n * @param {Node} condition Condition, must result in a boolean\n * @param {Node} trueExpr Expression evaluated when condition is true\n * @param {Node} falseExpr Expression evaluated when condition is true\n *\n * @constructor ConditionalNode\n * @extends {Node}\n */\n function ConditionalNode(condition, trueExpr, falseExpr) {\n if (!(this instanceof ConditionalNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (!isNode(condition)) throw new TypeError('Parameter condition must be a Node');\n if (!isNode(trueExpr)) throw new TypeError('Parameter trueExpr must be a Node');\n if (!isNode(falseExpr)) throw new TypeError('Parameter falseExpr must be a Node');\n this.condition = condition;\n this.trueExpr = trueExpr;\n this.falseExpr = falseExpr;\n }\n\n ConditionalNode.prototype = new Node();\n ConditionalNode.prototype.type = 'ConditionalNode';\n ConditionalNode.prototype.isConditionalNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n ConditionalNode.prototype._compile = function (math, argNames) {\n var evalCondition = this.condition._compile(math, argNames);\n\n var evalTrueExpr = this.trueExpr._compile(math, argNames);\n\n var evalFalseExpr = this.falseExpr._compile(math, argNames);\n\n return function evalConditionalNode(scope, args, context) {\n return testCondition(evalCondition(scope, args, context)) ? evalTrueExpr(scope, args, context) : evalFalseExpr(scope, args, context);\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n ConditionalNode.prototype.forEach = function (callback) {\n callback(this.condition, 'condition', this);\n callback(this.trueExpr, 'trueExpr', this);\n callback(this.falseExpr, 'falseExpr', this);\n };\n /**\n * Create a new ConditionalNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ConditionalNode} Returns a transformed copy of the node\n */\n\n\n ConditionalNode.prototype.map = function (callback) {\n return new ConditionalNode(this._ifNode(callback(this.condition, 'condition', this)), this._ifNode(callback(this.trueExpr, 'trueExpr', this)), this._ifNode(callback(this.falseExpr, 'falseExpr', this)));\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {ConditionalNode}\n */\n\n\n ConditionalNode.prototype.clone = function () {\n return new ConditionalNode(this.condition, this.trueExpr, this.falseExpr);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConditionalNode.prototype._toString = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis); // Enclose Arguments in parentheses if they are an OperatorNode\n // or have lower or equal precedence\n // NOTE: enclosing all OperatorNodes in parentheses is a decision\n // purely based on aesthetics and readability\n\n var condition = this.condition.toString(options);\n var conditionPrecedence = getPrecedence(this.condition, parenthesis);\n\n if (parenthesis === 'all' || this.condition.type === 'OperatorNode' || conditionPrecedence !== null && conditionPrecedence <= precedence) {\n condition = '(' + condition + ')';\n }\n\n var trueExpr = this.trueExpr.toString(options);\n var truePrecedence = getPrecedence(this.trueExpr, parenthesis);\n\n if (parenthesis === 'all' || this.trueExpr.type === 'OperatorNode' || truePrecedence !== null && truePrecedence <= precedence) {\n trueExpr = '(' + trueExpr + ')';\n }\n\n var falseExpr = this.falseExpr.toString(options);\n var falsePrecedence = getPrecedence(this.falseExpr, parenthesis);\n\n if (parenthesis === 'all' || this.falseExpr.type === 'OperatorNode' || falsePrecedence !== null && falsePrecedence <= precedence) {\n falseExpr = '(' + falseExpr + ')';\n }\n\n return condition + ' ? ' + trueExpr + ' : ' + falseExpr;\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n ConditionalNode.prototype.toJSON = function () {\n return {\n mathjs: 'ConditionalNode',\n condition: this.condition,\n trueExpr: this.trueExpr,\n falseExpr: this.falseExpr\n };\n };\n /**\n * Instantiate an ConditionalNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ConditionalNode\", \"condition\": ..., \"trueExpr\": ..., \"falseExpr\": ...}`,\n * where mathjs is optional\n * @returns {ConditionalNode}\n */\n\n\n ConditionalNode.fromJSON = function (json) {\n return new ConditionalNode(json.condition, json.trueExpr, json.falseExpr);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConditionalNode.prototype.toHTML = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis); // Enclose Arguments in parentheses if they are an OperatorNode\n // or have lower or equal precedence\n // NOTE: enclosing all OperatorNodes in parentheses is a decision\n // purely based on aesthetics and readability\n\n var condition = this.condition.toHTML(options);\n var conditionPrecedence = getPrecedence(this.condition, parenthesis);\n\n if (parenthesis === 'all' || this.condition.type === 'OperatorNode' || conditionPrecedence !== null && conditionPrecedence <= precedence) {\n condition = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + condition + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n var trueExpr = this.trueExpr.toHTML(options);\n var truePrecedence = getPrecedence(this.trueExpr, parenthesis);\n\n if (parenthesis === 'all' || this.trueExpr.type === 'OperatorNode' || truePrecedence !== null && truePrecedence <= precedence) {\n trueExpr = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + trueExpr + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n var falseExpr = this.falseExpr.toHTML(options);\n var falsePrecedence = getPrecedence(this.falseExpr, parenthesis);\n\n if (parenthesis === 'all' || this.falseExpr.type === 'OperatorNode' || falsePrecedence !== null && falsePrecedence <= precedence) {\n falseExpr = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + falseExpr + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n return condition + '<span class=\"math-operator math-conditional-operator\">?</span>' + trueExpr + '<span class=\"math-operator math-conditional-operator\">:</span>' + falseExpr;\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConditionalNode.prototype._toTex = function (options) {\n return '\\\\begin{cases} {' + this.trueExpr.toTex(options) + '}, &\\\\quad{\\\\text{if }\\\\;' + this.condition.toTex(options) + '}\\\\\\\\{' + this.falseExpr.toTex(options) + '}, &\\\\quad{\\\\text{otherwise}}\\\\end{cases}';\n };\n /**\n * Test whether a condition is met\n * @param {*} condition\n * @returns {boolean} true if condition is true or non-zero, else false\n */\n\n\n function testCondition(condition) {\n if (typeof condition === 'number' || typeof condition === 'boolean' || typeof condition === 'string') {\n return !!condition;\n }\n\n if (condition) {\n if (isBigNumber(condition)) {\n return !condition.isZero();\n }\n\n if (isComplex(condition)) {\n return !!(condition.re || condition.im);\n }\n\n if (isUnit(condition)) {\n return !!condition.value;\n }\n }\n\n if (condition === null || condition === undefined) {\n return false;\n }\n\n throw new TypeError('Unsupported type of condition \"' + typeOf(condition) + '\"');\n }\n\n return ConditionalNode;\n}, {\n isClass: true,\n isNode: true\n});","\"use strict\";\n\n// Map the characters to escape to their escaped values. The list is derived\n// from http://www.cespedes.org/blog/85/how-to-escape-latex-special-characters\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar defaultEscapes = {\n \"{\": \"\\\\{\",\n \"}\": \"\\\\}\",\n \"\\\\\": \"\\\\textbackslash{}\",\n \"#\": \"\\\\#\",\n $: \"\\\\$\",\n \"%\": \"\\\\%\",\n \"&\": \"\\\\&\",\n \"^\": \"\\\\textasciicircum{}\",\n _: \"\\\\_\",\n \"~\": \"\\\\textasciitilde{}\"\n};\nvar formatEscapes = {\n \"\\u2013\": \"\\\\--\",\n \"\\u2014\": \"\\\\---\",\n \" \": \"~\",\n \"\\t\": \"\\\\qquad{}\",\n \"\\r\\n\": \"\\\\newline{}\",\n \"\\n\": \"\\\\newline{}\"\n};\n\nvar defaultEscapeMapFn = function defaultEscapeMapFn(defaultEscapes, formatEscapes) {\n return _extends({}, defaultEscapes, formatEscapes);\n};\n\n/**\n * Escape a string to be used in LaTeX documents.\n * @param {string} str the string to be escaped.\n * @param {boolean} params.preserveFormatting whether formatting escapes should\n * be performed (default: false).\n * @param {function} params.escapeMapFn the function to modify the escape maps.\n * @return {string} the escaped string, ready to be used in LaTeX.\n */\nmodule.exports = function (str) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$preserveFormatti = _ref.preserveFormatting,\n preserveFormatting = _ref$preserveFormatti === undefined ? false : _ref$preserveFormatti,\n _ref$escapeMapFn = _ref.escapeMapFn,\n escapeMapFn = _ref$escapeMapFn === undefined ? defaultEscapeMapFn : _ref$escapeMapFn;\n\n var runningStr = String(str);\n var result = \"\";\n\n var escapes = escapeMapFn(_extends({}, defaultEscapes), preserveFormatting ? _extends({}, formatEscapes) : {});\n var escapeKeys = Object.keys(escapes); // as it is reused later on\n\n // Algorithm: Go through the string character by character, if it matches\n // with one of the special characters then we'll replace it with the escaped\n // version.\n\n var _loop = function _loop() {\n var specialCharFound = false;\n escapeKeys.forEach(function (key, index) {\n if (specialCharFound) {\n return;\n }\n if (runningStr.length >= key.length && runningStr.slice(0, key.length) === key) {\n result += escapes[escapeKeys[index]];\n runningStr = runningStr.slice(key.length, runningStr.length);\n specialCharFound = true;\n }\n });\n if (!specialCharFound) {\n result += runningStr.slice(0, 1);\n runningStr = runningStr.slice(1, runningStr.length);\n }\n };\n\n while (runningStr) {\n _loop();\n }\n return result;\n};","/* eslint no-template-curly-in-string: \"off\" */\nimport escapeLatexLib from 'escape-latex';\nimport { hasOwnProperty } from './object';\nexport var latexSymbols = {\n // GREEK LETTERS\n Alpha: 'A',\n alpha: '\\\\alpha',\n Beta: 'B',\n beta: '\\\\beta',\n Gamma: '\\\\Gamma',\n gamma: '\\\\gamma',\n Delta: '\\\\Delta',\n delta: '\\\\delta',\n Epsilon: 'E',\n epsilon: '\\\\epsilon',\n varepsilon: '\\\\varepsilon',\n Zeta: 'Z',\n zeta: '\\\\zeta',\n Eta: 'H',\n eta: '\\\\eta',\n Theta: '\\\\Theta',\n theta: '\\\\theta',\n vartheta: '\\\\vartheta',\n Iota: 'I',\n iota: '\\\\iota',\n Kappa: 'K',\n kappa: '\\\\kappa',\n varkappa: '\\\\varkappa',\n Lambda: '\\\\Lambda',\n lambda: '\\\\lambda',\n Mu: 'M',\n mu: '\\\\mu',\n Nu: 'N',\n nu: '\\\\nu',\n Xi: '\\\\Xi',\n xi: '\\\\xi',\n Omicron: 'O',\n omicron: 'o',\n Pi: '\\\\Pi',\n pi: '\\\\pi',\n varpi: '\\\\varpi',\n Rho: 'P',\n rho: '\\\\rho',\n varrho: '\\\\varrho',\n Sigma: '\\\\Sigma',\n sigma: '\\\\sigma',\n varsigma: '\\\\varsigma',\n Tau: 'T',\n tau: '\\\\tau',\n Upsilon: \"\\\\Upsilon\",\n upsilon: \"\\\\upsilon\",\n Phi: '\\\\Phi',\n phi: '\\\\phi',\n varphi: '\\\\varphi',\n Chi: 'X',\n chi: '\\\\chi',\n Psi: '\\\\Psi',\n psi: '\\\\psi',\n Omega: '\\\\Omega',\n omega: '\\\\omega',\n // logic\n \"true\": '\\\\mathrm{True}',\n \"false\": '\\\\mathrm{False}',\n // other\n i: 'i',\n // TODO use \\i ??\n inf: '\\\\infty',\n Inf: '\\\\infty',\n infinity: '\\\\infty',\n Infinity: '\\\\infty',\n oo: '\\\\infty',\n lim: '\\\\lim',\n undefined: '\\\\mathbf{?}'\n};\nexport var latexOperators = {\n transpose: '^\\\\top',\n ctranspose: '^H',\n factorial: '!',\n pow: '^',\n dotPow: '.^\\\\wedge',\n // TODO find ideal solution\n unaryPlus: '+',\n unaryMinus: '-',\n bitNot: '\\\\~',\n // TODO find ideal solution\n not: '\\\\neg',\n multiply: '\\\\cdot',\n divide: '\\\\frac',\n // TODO how to handle that properly?\n dotMultiply: '.\\\\cdot',\n // TODO find ideal solution\n dotDivide: '.:',\n // TODO find ideal solution\n mod: '\\\\mod',\n add: '+',\n subtract: '-',\n to: '\\\\rightarrow',\n leftShift: '<<',\n rightArithShift: '>>',\n rightLogShift: '>>>',\n equal: '=',\n unequal: '\\\\neq',\n smaller: '<',\n larger: '>',\n smallerEq: '\\\\leq',\n largerEq: '\\\\geq',\n bitAnd: '\\\\&',\n bitXor: \"\\\\underline{|}\",\n bitOr: '|',\n and: '\\\\wedge',\n xor: '\\\\veebar',\n or: '\\\\vee'\n};\nexport var latexFunctions = {\n // arithmetic\n abs: {\n 1: '\\\\left|${args[0]}\\\\right|'\n },\n add: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.add, \"${args[1]}\\\\right)\")\n },\n cbrt: {\n 1: '\\\\sqrt[3]{${args[0]}}'\n },\n ceil: {\n 1: '\\\\left\\\\lceil${args[0]}\\\\right\\\\rceil'\n },\n cube: {\n 1: '\\\\left(${args[0]}\\\\right)^3'\n },\n divide: {\n 2: '\\\\frac{${args[0]}}{${args[1]}}'\n },\n dotDivide: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotDivide, \"${args[1]}\\\\right)\")\n },\n dotMultiply: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotMultiply, \"${args[1]}\\\\right)\")\n },\n dotPow: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.dotPow, \"${args[1]}\\\\right)\")\n },\n exp: {\n 1: '\\\\exp\\\\left(${args[0]}\\\\right)'\n },\n expm1: \"\\\\left(e\".concat(latexOperators.pow, \"{${args[0]}}-1\\\\right)\"),\n fix: {\n 1: '\\\\mathrm{${name}}\\\\left(${args[0]}\\\\right)'\n },\n floor: {\n 1: '\\\\left\\\\lfloor${args[0]}\\\\right\\\\rfloor'\n },\n gcd: '\\\\gcd\\\\left(${args}\\\\right)',\n hypot: '\\\\hypot\\\\left(${args}\\\\right)',\n log: {\n 1: '\\\\ln\\\\left(${args[0]}\\\\right)',\n 2: '\\\\log_{${args[1]}}\\\\left(${args[0]}\\\\right)'\n },\n log10: {\n 1: '\\\\log_{10}\\\\left(${args[0]}\\\\right)'\n },\n log1p: {\n 1: '\\\\ln\\\\left(${args[0]}+1\\\\right)',\n 2: '\\\\log_{${args[1]}}\\\\left(${args[0]}+1\\\\right)'\n },\n log2: '\\\\log_{2}\\\\left(${args[0]}\\\\right)',\n mod: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.mod, \"${args[1]}\\\\right)\")\n },\n multiply: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.multiply, \"${args[1]}\\\\right)\")\n },\n norm: {\n 1: '\\\\left\\\\|${args[0]}\\\\right\\\\|',\n 2: undefined // use default template\n\n },\n nthRoot: {\n 2: '\\\\sqrt[${args[1]}]{${args[0]}}'\n },\n nthRoots: {\n 2: '\\\\{y : $y^{args[1]} = {${args[0]}}\\\\}'\n },\n pow: {\n 2: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.pow, \"{${args[1]}}\")\n },\n round: {\n 1: '\\\\left\\\\lfloor${args[0]}\\\\right\\\\rceil',\n 2: undefined // use default template\n\n },\n sign: {\n 1: '\\\\mathrm{${name}}\\\\left(${args[0]}\\\\right)'\n },\n sqrt: {\n 1: '\\\\sqrt{${args[0]}}'\n },\n square: {\n 1: '\\\\left(${args[0]}\\\\right)^2'\n },\n subtract: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.subtract, \"${args[1]}\\\\right)\")\n },\n unaryMinus: {\n 1: \"\".concat(latexOperators.unaryMinus, \"\\\\left(${args[0]}\\\\right)\")\n },\n unaryPlus: {\n 1: \"\".concat(latexOperators.unaryPlus, \"\\\\left(${args[0]}\\\\right)\")\n },\n // bitwise\n bitAnd: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitAnd, \"${args[1]}\\\\right)\")\n },\n bitNot: {\n 1: latexOperators.bitNot + '\\\\left(${args[0]}\\\\right)'\n },\n bitOr: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitOr, \"${args[1]}\\\\right)\")\n },\n bitXor: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.bitXor, \"${args[1]}\\\\right)\")\n },\n leftShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.leftShift, \"${args[1]}\\\\right)\")\n },\n rightArithShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.rightArithShift, \"${args[1]}\\\\right)\")\n },\n rightLogShift: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.rightLogShift, \"${args[1]}\\\\right)\")\n },\n // combinatorics\n bellNumbers: {\n 1: '\\\\mathrm{B}_{${args[0]}}'\n },\n catalan: {\n 1: '\\\\mathrm{C}_{${args[0]}}'\n },\n stirlingS2: {\n 2: '\\\\mathrm{S}\\\\left(${args}\\\\right)'\n },\n // complex\n arg: {\n 1: '\\\\arg\\\\left(${args[0]}\\\\right)'\n },\n conj: {\n 1: '\\\\left(${args[0]}\\\\right)^*'\n },\n im: {\n 1: '\\\\Im\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace'\n },\n re: {\n 1: '\\\\Re\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace'\n },\n // logical\n and: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.and, \"${args[1]}\\\\right)\")\n },\n not: {\n 1: latexOperators.not + '\\\\left(${args[0]}\\\\right)'\n },\n or: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.or, \"${args[1]}\\\\right)\")\n },\n xor: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.xor, \"${args[1]}\\\\right)\")\n },\n // matrix\n cross: {\n 2: '\\\\left(${args[0]}\\\\right)\\\\times\\\\left(${args[1]}\\\\right)'\n },\n ctranspose: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.ctranspose)\n },\n det: {\n 1: '\\\\det\\\\left(${args[0]}\\\\right)'\n },\n dot: {\n 2: '\\\\left(${args[0]}\\\\cdot${args[1]}\\\\right)'\n },\n expm: {\n 1: '\\\\exp\\\\left(${args[0]}\\\\right)'\n },\n inv: {\n 1: '\\\\left(${args[0]}\\\\right)^{-1}'\n },\n sqrtm: {\n 1: \"{${args[0]}}\".concat(latexOperators.pow, \"{\\\\frac{1}{2}}\")\n },\n trace: {\n 1: '\\\\mathrm{tr}\\\\left(${args[0]}\\\\right)'\n },\n transpose: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.transpose)\n },\n // probability\n combinations: {\n 2: '\\\\binom{${args[0]}}{${args[1]}}'\n },\n combinationsWithRep: {\n 2: '\\\\left(\\\\!\\\\!{\\\\binom{${args[0]}}{${args[1]}}}\\\\!\\\\!\\\\right)'\n },\n factorial: {\n 1: \"\\\\left(${args[0]}\\\\right)\".concat(latexOperators.factorial)\n },\n gamma: {\n 1: '\\\\Gamma\\\\left(${args[0]}\\\\right)'\n },\n // relational\n equal: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.equal, \"${args[1]}\\\\right)\")\n },\n larger: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.larger, \"${args[1]}\\\\right)\")\n },\n largerEq: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.largerEq, \"${args[1]}\\\\right)\")\n },\n smaller: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.smaller, \"${args[1]}\\\\right)\")\n },\n smallerEq: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.smallerEq, \"${args[1]}\\\\right)\")\n },\n unequal: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.unequal, \"${args[1]}\\\\right)\")\n },\n // special\n erf: {\n 1: 'erf\\\\left(${args[0]}\\\\right)'\n },\n // statistics\n max: '\\\\max\\\\left(${args}\\\\right)',\n min: '\\\\min\\\\left(${args}\\\\right)',\n variance: '\\\\mathrm{Var}\\\\left(${args}\\\\right)',\n // trigonometry\n acos: {\n 1: '\\\\cos^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acosh: {\n 1: '\\\\cosh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acot: {\n 1: '\\\\cot^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acoth: {\n 1: '\\\\coth^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acsc: {\n 1: '\\\\csc^{-1}\\\\left(${args[0]}\\\\right)'\n },\n acsch: {\n 1: '\\\\mathrm{csch}^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asec: {\n 1: '\\\\sec^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asech: {\n 1: '\\\\mathrm{sech}^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asin: {\n 1: '\\\\sin^{-1}\\\\left(${args[0]}\\\\right)'\n },\n asinh: {\n 1: '\\\\sinh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n atan: {\n 1: '\\\\tan^{-1}\\\\left(${args[0]}\\\\right)'\n },\n atan2: {\n 2: '\\\\mathrm{atan2}\\\\left(${args}\\\\right)'\n },\n atanh: {\n 1: '\\\\tanh^{-1}\\\\left(${args[0]}\\\\right)'\n },\n cos: {\n 1: '\\\\cos\\\\left(${args[0]}\\\\right)'\n },\n cosh: {\n 1: '\\\\cosh\\\\left(${args[0]}\\\\right)'\n },\n cot: {\n 1: '\\\\cot\\\\left(${args[0]}\\\\right)'\n },\n coth: {\n 1: '\\\\coth\\\\left(${args[0]}\\\\right)'\n },\n csc: {\n 1: '\\\\csc\\\\left(${args[0]}\\\\right)'\n },\n csch: {\n 1: '\\\\mathrm{csch}\\\\left(${args[0]}\\\\right)'\n },\n sec: {\n 1: '\\\\sec\\\\left(${args[0]}\\\\right)'\n },\n sech: {\n 1: '\\\\mathrm{sech}\\\\left(${args[0]}\\\\right)'\n },\n sin: {\n 1: '\\\\sin\\\\left(${args[0]}\\\\right)'\n },\n sinh: {\n 1: '\\\\sinh\\\\left(${args[0]}\\\\right)'\n },\n tan: {\n 1: '\\\\tan\\\\left(${args[0]}\\\\right)'\n },\n tanh: {\n 1: '\\\\tanh\\\\left(${args[0]}\\\\right)'\n },\n // unit\n to: {\n 2: \"\\\\left(${args[0]}\".concat(latexOperators.to, \"${args[1]}\\\\right)\")\n },\n // utils\n numeric: function numeric(node, options) {\n // Not sure if this is strictly right but should work correctly for the vast majority of use cases.\n return node.args[0].toTex();\n },\n // type\n number: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)'\n },\n string: {\n 0: '\\\\mathtt{\"\"}',\n 1: '\\\\mathrm{string}\\\\left(${args[0]}\\\\right)'\n },\n bignumber: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n complex: {\n 0: '0',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: \"\\\\left(\\\\left(${args[0]}\\\\right)+\".concat(latexSymbols.i, \"\\\\cdot\\\\left(${args[1]}\\\\right)\\\\right)\")\n },\n matrix: {\n 0: '\\\\begin{bmatrix}\\\\end{bmatrix}',\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(${args[0]}\\\\right)'\n },\n sparse: {\n 0: '\\\\begin{bsparse}\\\\end{bsparse}',\n 1: '\\\\left(${args[0]}\\\\right)'\n },\n unit: {\n 1: '\\\\left(${args[0]}\\\\right)',\n 2: '\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)'\n }\n};\nexport var defaultTemplate = '\\\\mathrm{${name}}\\\\left(${args}\\\\right)';\nvar latexUnits = {\n deg: '^\\\\circ'\n};\nexport function escapeLatex(string) {\n return escapeLatexLib(string, {\n preserveFormatting: true\n });\n} // @param {string} name\n// @param {boolean} isUnit\n\nexport function toSymbol(name, isUnit) {\n isUnit = typeof isUnit === 'undefined' ? false : isUnit;\n\n if (isUnit) {\n if (hasOwnProperty(latexUnits, name)) {\n return latexUnits[name];\n }\n\n return '\\\\mathrm{' + escapeLatex(name) + '}';\n }\n\n if (hasOwnProperty(latexSymbols, name)) {\n return latexSymbols[name];\n }\n\n return escapeLatex(name);\n}","import { format } from '../../utils/string';\nimport { typeOf } from '../../utils/is';\nimport { escapeLatex } from '../../utils/latex';\nimport { factory } from '../../utils/factory';\nvar name = 'ConstantNode';\nvar dependencies = ['Node'];\nexport var createConstantNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var Node = _ref.Node;\n\n /**\n * A ConstantNode holds a constant value like a number or string.\n *\n * Usage:\n *\n * new ConstantNode(2.3)\n * new ConstantNode('hello')\n *\n * @param {*} value Value can be any type (number, BigNumber, string, ...)\n * @constructor ConstantNode\n * @extends {Node}\n */\n function ConstantNode(value) {\n if (!(this instanceof ConstantNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.value = value;\n }\n\n ConstantNode.prototype = new Node();\n ConstantNode.prototype.type = 'ConstantNode';\n ConstantNode.prototype.isConstantNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n ConstantNode.prototype._compile = function (math, argNames) {\n var value = this.value;\n return function evalConstantNode() {\n return value;\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n ConstantNode.prototype.forEach = function (callback) {// nothing to do, we don't have childs\n };\n /**\n * Create a new ConstantNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {ConstantNode} Returns a clone of the node\n */\n\n\n ConstantNode.prototype.map = function (callback) {\n return this.clone();\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {ConstantNode}\n */\n\n\n ConstantNode.prototype.clone = function () {\n return new ConstantNode(this.value);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConstantNode.prototype._toString = function (options) {\n return format(this.value, options);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConstantNode.prototype.toHTML = function (options) {\n var value = this._toString(options);\n\n switch (typeOf(this.value)) {\n case 'number':\n case 'BigNumber':\n case 'Fraction':\n return '<span class=\"math-number\">' + value + '</span>';\n\n case 'string':\n return '<span class=\"math-string\">' + value + '</span>';\n\n case 'boolean':\n return '<span class=\"math-boolean\">' + value + '</span>';\n\n case 'null':\n return '<span class=\"math-null-symbol\">' + value + '</span>';\n\n case 'undefined':\n return '<span class=\"math-undefined\">' + value + '</span>';\n\n default:\n return '<span class=\"math-symbol\">' + value + '</span>';\n }\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n ConstantNode.prototype.toJSON = function () {\n return {\n mathjs: 'ConstantNode',\n value: this.value\n };\n };\n /**\n * Instantiate a ConstantNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SymbolNode\", value: 2.3}`,\n * where mathjs is optional\n * @returns {ConstantNode}\n */\n\n\n ConstantNode.fromJSON = function (json) {\n return new ConstantNode(json.value);\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ConstantNode.prototype._toTex = function (options) {\n var value = this._toString(options);\n\n switch (typeOf(this.value)) {\n case 'string':\n return '\\\\mathtt{' + escapeLatex(value) + '}';\n\n case 'number':\n case 'BigNumber':\n {\n if (!isFinite(this.value)) {\n return this.value.valueOf() < 0 ? '-\\\\infty' : '\\\\infty';\n }\n\n var index = value.toLowerCase().indexOf('e');\n\n if (index !== -1) {\n return value.substring(0, index) + '\\\\cdot10^{' + value.substring(index + 1) + '}';\n }\n }\n return value;\n\n case 'Fraction':\n return this.value.toLatex();\n\n default:\n return value;\n }\n };\n\n return ConstantNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isNode } from '../../utils/is';\nimport { keywords } from '../keywords';\nimport { escape } from '../../utils/string';\nimport { forEach, join } from '../../utils/array';\nimport { toSymbol } from '../../utils/latex';\nimport { getPrecedence } from '../operators';\nimport { setSafeProperty } from '../../utils/customs';\nimport { factory } from '../../utils/factory';\nvar name = 'FunctionAssignmentNode';\nvar dependencies = ['typed', 'Node'];\nexport var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n Node = _ref.Node;\n\n /**\n * @constructor FunctionAssignmentNode\n * @extends {Node}\n * Function assignment\n *\n * @param {string} name Function name\n * @param {string[] | Array.<{name: string, type: string}>} params\n * Array with function parameter names, or an\n * array with objects containing the name\n * and type of the parameter\n * @param {Node} expr The function expression\n */\n function FunctionAssignmentNode(name, params, expr) {\n if (!(this instanceof FunctionAssignmentNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate input\n\n\n if (typeof name !== 'string') throw new TypeError('String expected for parameter \"name\"');\n if (!Array.isArray(params)) throw new TypeError('Array containing strings or objects expected for parameter \"params\"');\n if (!isNode(expr)) throw new TypeError('Node expected for parameter \"expr\"');\n if (name in keywords) throw new Error('Illegal function name, \"' + name + '\" is a reserved keyword');\n this.name = name;\n this.params = params.map(function (param) {\n return param && param.name || param;\n });\n this.types = params.map(function (param) {\n return param && param.type || 'any';\n });\n this.expr = expr;\n }\n\n FunctionAssignmentNode.prototype = new Node();\n FunctionAssignmentNode.prototype.type = 'FunctionAssignmentNode';\n FunctionAssignmentNode.prototype.isFunctionAssignmentNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n FunctionAssignmentNode.prototype._compile = function (math, argNames) {\n var childArgNames = Object.create(argNames);\n forEach(this.params, function (param) {\n childArgNames[param] = true;\n }); // compile the function expression with the child args\n\n var evalExpr = this.expr._compile(math, childArgNames);\n\n var name = this.name;\n var params = this.params;\n var signature = join(this.types, ',');\n var syntax = name + '(' + join(this.params, ', ') + ')';\n return function evalFunctionAssignmentNode(scope, args, context) {\n var signatures = {};\n\n signatures[signature] = function () {\n var childArgs = Object.create(args);\n\n for (var i = 0; i < params.length; i++) {\n childArgs[params[i]] = arguments[i];\n }\n\n return evalExpr(scope, childArgs, context);\n };\n\n var fn = typed(name, signatures);\n fn.syntax = syntax;\n setSafeProperty(scope, name, fn);\n return fn;\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n FunctionAssignmentNode.prototype.forEach = function (callback) {\n callback(this.expr, 'expr', this);\n };\n /**\n * Create a new FunctionAssignmentNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {FunctionAssignmentNode} Returns a transformed copy of the node\n */\n\n\n FunctionAssignmentNode.prototype.map = function (callback) {\n var expr = this._ifNode(callback(this.expr, 'expr', this));\n\n return new FunctionAssignmentNode(this.name, this.params.slice(0), expr);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {FunctionAssignmentNode}\n */\n\n\n FunctionAssignmentNode.prototype.clone = function () {\n return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr);\n };\n /**\n * Is parenthesis needed?\n * @param {Node} node\n * @param {Object} parenthesis\n * @private\n */\n\n\n function needParenthesis(node, parenthesis) {\n var precedence = getPrecedence(node, parenthesis);\n var exprPrecedence = getPrecedence(node.expr, parenthesis);\n return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;\n }\n /**\n * get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionAssignmentNode.prototype._toString = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var expr = this.expr.toString(options);\n\n if (needParenthesis(this, parenthesis)) {\n expr = '(' + expr + ')';\n }\n\n return this.name + '(' + this.params.join(', ') + ') = ' + expr;\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n FunctionAssignmentNode.prototype.toJSON = function () {\n var types = this.types;\n return {\n mathjs: 'FunctionAssignmentNode',\n name: this.name,\n params: this.params.map(function (param, index) {\n return {\n name: param,\n type: types[index]\n };\n }),\n expr: this.expr\n };\n };\n /**\n * Instantiate an FunctionAssignmentNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"FunctionAssignmentNode\", name: ..., params: ..., expr: ...}`,\n * where mathjs is optional\n * @returns {FunctionAssignmentNode}\n */\n\n\n FunctionAssignmentNode.fromJSON = function (json) {\n return new FunctionAssignmentNode(json.name, json.params, json.expr);\n };\n /**\n * get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionAssignmentNode.prototype.toHTML = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var params = [];\n\n for (var i = 0; i < this.params.length; i++) {\n params.push('<span class=\"math-symbol math-parameter\">' + escape(this.params[i]) + '</span>');\n }\n\n var expr = this.expr.toHTML(options);\n\n if (needParenthesis(this, parenthesis)) {\n expr = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + expr + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n return '<span class=\"math-function\">' + escape(this.name) + '</span>' + '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + params.join('<span class=\"math-separator\">,</span>') + '<span class=\"math-parenthesis math-round-parenthesis\">)</span><span class=\"math-operator math-assignment-operator math-variable-assignment-operator math-binary-operator\">=</span>' + expr;\n };\n /**\n * get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionAssignmentNode.prototype._toTex = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var expr = this.expr.toTex(options);\n\n if (needParenthesis(this, parenthesis)) {\n expr = \"\\\\left(\".concat(expr, \"\\\\right)\");\n }\n\n return '\\\\mathrm{' + this.name + '}\\\\left(' + this.params.map(toSymbol).join(',') + '\\\\right):=' + expr;\n };\n\n return FunctionAssignmentNode;\n}, {\n isClass: true,\n isNode: true\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { isBigNumber, isConstantNode, isNode, isRangeNode, isSymbolNode } from '../../utils/is';\nimport { map } from '../../utils/array';\nimport { escape } from '../../utils/string';\nimport { factory } from '../../utils/factory';\nimport { getSafeProperty } from '../../utils/customs';\nvar name = 'IndexNode';\nvar dependencies = ['Range', 'Node', 'size'];\nexport var createIndexNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var Range = _ref.Range,\n Node = _ref.Node,\n size = _ref.size;\n\n /**\n * @constructor IndexNode\n * @extends Node\n *\n * Describes a subset of a matrix or an object property.\n * Cannot be used on its own, needs to be used within an AccessorNode or\n * AssignmentNode.\n *\n * @param {Node[]} dimensions\n * @param {boolean} [dotNotation=false] Optional property describing whether\n * this index was written using dot\n * notation like `a.b`, or using bracket\n * notation like `a[\"b\"]` (default).\n * Used to stringify an IndexNode.\n */\n function IndexNode(dimensions, dotNotation) {\n if (!(this instanceof IndexNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.dimensions = dimensions;\n this.dotNotation = dotNotation || false; // validate input\n\n if (!Array.isArray(dimensions) || !dimensions.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"dimensions\"');\n }\n\n if (this.dotNotation && !this.isObjectProperty()) {\n throw new Error('dotNotation only applicable for object properties');\n }\n }\n\n IndexNode.prototype = new Node();\n IndexNode.prototype.type = 'IndexNode';\n IndexNode.prototype.isIndexNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n IndexNode.prototype._compile = function (math, argNames) {\n // TODO: implement support for bignumber (currently bignumbers are silently\n // reduced to numbers when changing the value to zero-based)\n // TODO: Optimization: when the range values are ConstantNodes,\n // we can beforehand resolve the zero-based value\n // optimization for a simple object property\n var evalDimensions = map(this.dimensions, function (range, i) {\n if (isRangeNode(range)) {\n if (range.needsEnd()) {\n // create a range containing end (like '4:end')\n var childArgNames = Object.create(argNames);\n childArgNames.end = true;\n\n var evalStart = range.start._compile(math, childArgNames);\n\n var evalEnd = range.end._compile(math, childArgNames);\n\n var evalStep = range.step ? range.step._compile(math, childArgNames) : function () {\n return 1;\n };\n return function evalDimension(scope, args, context) {\n var s = size(context).valueOf();\n var childArgs = Object.create(args);\n childArgs.end = s[i];\n return createRange(evalStart(scope, childArgs, context), evalEnd(scope, childArgs, context), evalStep(scope, childArgs, context));\n };\n } else {\n // create range\n var _evalStart = range.start._compile(math, argNames);\n\n var _evalEnd = range.end._compile(math, argNames);\n\n var _evalStep = range.step ? range.step._compile(math, argNames) : function () {\n return 1;\n };\n\n return function evalDimension(scope, args, context) {\n return createRange(_evalStart(scope, args, context), _evalEnd(scope, args, context), _evalStep(scope, args, context));\n };\n }\n } else if (isSymbolNode(range) && range.name === 'end') {\n // SymbolNode 'end'\n var _childArgNames = Object.create(argNames);\n\n _childArgNames.end = true;\n\n var evalRange = range._compile(math, _childArgNames);\n\n return function evalDimension(scope, args, context) {\n var s = size(context).valueOf();\n var childArgs = Object.create(args);\n childArgs.end = s[i];\n return evalRange(scope, childArgs, context);\n };\n } else {\n // ConstantNode\n var _evalRange = range._compile(math, argNames);\n\n return function evalDimension(scope, args, context) {\n return _evalRange(scope, args, context);\n };\n }\n });\n var index = getSafeProperty(math, 'index');\n return function evalIndexNode(scope, args, context) {\n var dimensions = map(evalDimensions, function (evalDimension) {\n return evalDimension(scope, args, context);\n });\n return index.apply(void 0, _toConsumableArray(dimensions));\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n IndexNode.prototype.forEach = function (callback) {\n for (var i = 0; i < this.dimensions.length; i++) {\n callback(this.dimensions[i], 'dimensions[' + i + ']', this);\n }\n };\n /**\n * Create a new IndexNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {IndexNode} Returns a transformed copy of the node\n */\n\n\n IndexNode.prototype.map = function (callback) {\n var dimensions = [];\n\n for (var i = 0; i < this.dimensions.length; i++) {\n dimensions[i] = this._ifNode(callback(this.dimensions[i], 'dimensions[' + i + ']', this));\n }\n\n return new IndexNode(dimensions, this.dotNotation);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {IndexNode}\n */\n\n\n IndexNode.prototype.clone = function () {\n return new IndexNode(this.dimensions.slice(0), this.dotNotation);\n };\n /**\n * Test whether this IndexNode contains a single property name\n * @return {boolean}\n */\n\n\n IndexNode.prototype.isObjectProperty = function () {\n return this.dimensions.length === 1 && isConstantNode(this.dimensions[0]) && typeof this.dimensions[0].value === 'string';\n };\n /**\n * Returns the property name if IndexNode contains a property.\n * If not, returns null.\n * @return {string | null}\n */\n\n\n IndexNode.prototype.getObjectProperty = function () {\n return this.isObjectProperty() ? this.dimensions[0].value : null;\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n IndexNode.prototype._toString = function (options) {\n // format the parameters like \"[1, 0:5]\"\n return this.dotNotation ? '.' + this.getObjectProperty() : '[' + this.dimensions.join(', ') + ']';\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n IndexNode.prototype.toJSON = function () {\n return {\n mathjs: 'IndexNode',\n dimensions: this.dimensions,\n dotNotation: this.dotNotation\n };\n };\n /**\n * Instantiate an IndexNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"IndexNode\", dimensions: [...], dotNotation: false}`,\n * where mathjs is optional\n * @returns {IndexNode}\n */\n\n\n IndexNode.fromJSON = function (json) {\n return new IndexNode(json.dimensions, json.dotNotation);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n IndexNode.prototype.toHTML = function (options) {\n // format the parameters like \"[1, 0:5]\"\n var dimensions = [];\n\n for (var i = 0; i < this.dimensions.length; i++) {\n dimensions[i] = this.dimensions[i].toHTML();\n }\n\n if (this.dotNotation) {\n return '<span class=\"math-operator math-accessor-operator\">.</span>' + '<span class=\"math-symbol math-property\">' + escape(this.getObjectProperty()) + '</span>';\n } else {\n return '<span class=\"math-parenthesis math-square-parenthesis\">[</span>' + dimensions.join('<span class=\"math-separator\">,</span>') + '<span class=\"math-parenthesis math-square-parenthesis\">]</span>';\n }\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n IndexNode.prototype._toTex = function (options) {\n var dimensions = this.dimensions.map(function (range) {\n return range.toTex(options);\n });\n return this.dotNotation ? '.' + this.getObjectProperty() + '' : '_{' + dimensions.join(',') + '}';\n }; // helper function to create a Range from start, step and end\n\n\n function createRange(start, end, step) {\n return new Range(isBigNumber(start) ? start.toNumber() : start, isBigNumber(end) ? end.toNumber() : end, isBigNumber(step) ? step.toNumber() : step);\n }\n\n return IndexNode;\n}, {\n isClass: true,\n isNode: true\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { isNode } from '../../utils/is';\nimport { escape, stringify } from '../../utils/string';\nimport { isSafeProperty } from '../../utils/customs';\nimport { hasOwnProperty } from '../../utils/object';\nimport { factory } from '../../utils/factory';\nvar name = 'ObjectNode';\nvar dependencies = ['Node'];\nexport var createObjectNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var Node = _ref.Node;\n\n /**\n * @constructor ObjectNode\n * @extends {Node}\n * Holds an object with keys/values\n * @param {Object.<string, Node>} [properties] object with key/value pairs\n */\n function ObjectNode(properties) {\n if (!(this instanceof ObjectNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.properties = properties || {}; // validate input\n\n if (properties) {\n if (!(_typeof(properties) === 'object') || !Object.keys(properties).every(function (key) {\n return isNode(properties[key]);\n })) {\n throw new TypeError('Object containing Nodes expected');\n }\n }\n }\n\n ObjectNode.prototype = new Node();\n ObjectNode.prototype.type = 'ObjectNode';\n ObjectNode.prototype.isObjectNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n ObjectNode.prototype._compile = function (math, argNames) {\n var evalEntries = {};\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n // we stringify/parse the key here to resolve unicode characters,\n // so you cannot create a key like {\"co\\\\u006Estructor\": null}\n var stringifiedKey = stringify(key);\n var parsedKey = JSON.parse(stringifiedKey);\n\n if (!isSafeProperty(this.properties, parsedKey)) {\n throw new Error('No access to property \"' + parsedKey + '\"');\n }\n\n evalEntries[parsedKey] = this.properties[key]._compile(math, argNames);\n }\n }\n\n return function evalObjectNode(scope, args, context) {\n var obj = {};\n\n for (var _key in evalEntries) {\n if (hasOwnProperty(evalEntries, _key)) {\n obj[_key] = evalEntries[_key](scope, args, context);\n }\n }\n\n return obj;\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n ObjectNode.prototype.forEach = function (callback) {\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n callback(this.properties[key], 'properties[' + stringify(key) + ']', this);\n }\n }\n };\n /**\n * Create a new ObjectNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {ObjectNode} Returns a transformed copy of the node\n */\n\n\n ObjectNode.prototype.map = function (callback) {\n var properties = {};\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n properties[key] = this._ifNode(callback(this.properties[key], 'properties[' + stringify(key) + ']', this));\n }\n }\n\n return new ObjectNode(properties);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {ObjectNode}\n */\n\n\n ObjectNode.prototype.clone = function () {\n var properties = {};\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n properties[key] = this.properties[key];\n }\n }\n\n return new ObjectNode(properties);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ObjectNode.prototype._toString = function (options) {\n var entries = [];\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push(stringify(key) + ': ' + this.properties[key].toString(options));\n }\n }\n\n return '{' + entries.join(', ') + '}';\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n ObjectNode.prototype.toJSON = function () {\n return {\n mathjs: 'ObjectNode',\n properties: this.properties\n };\n };\n /**\n * Instantiate an OperatorNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ObjectNode\", \"properties\": {...}}`,\n * where mathjs is optional\n * @returns {ObjectNode}\n */\n\n\n ObjectNode.fromJSON = function (json) {\n return new ObjectNode(json.properties);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ObjectNode.prototype.toHTML = function (options) {\n var entries = [];\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push('<span class=\"math-symbol math-property\">' + escape(key) + '</span>' + '<span class=\"math-operator math-assignment-operator math-property-assignment-operator math-binary-operator\">:</span>' + this.properties[key].toHTML(options));\n }\n }\n\n return '<span class=\"math-parenthesis math-curly-parenthesis\">{</span>' + entries.join('<span class=\"math-separator\">,</span>') + '<span class=\"math-parenthesis math-curly-parenthesis\">}</span>';\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n ObjectNode.prototype._toTex = function (options) {\n var entries = [];\n\n for (var key in this.properties) {\n if (hasOwnProperty(this.properties, key)) {\n entries.push('\\\\mathbf{' + key + ':} & ' + this.properties[key].toTex(options) + '\\\\\\\\');\n }\n }\n\n return \"\\\\left\\\\{\\\\begin{array}{ll}\".concat(entries.join('\\n'), \"\\\\end{array}\\\\right\\\\}\");\n };\n\n return ObjectNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isNode } from '../../utils/is';\nimport { map } from '../../utils/array';\nimport { escape } from '../../utils/string';\nimport { getSafeProperty, isSafeMethod } from '../../utils/customs';\nimport { getAssociativity, getPrecedence, isAssociativeWith, properties } from '../operators';\nimport { latexOperators } from '../../utils/latex';\nimport { factory } from '../../utils/factory';\nvar name = 'OperatorNode';\nvar dependencies = ['Node'];\nexport var createOperatorNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var Node = _ref.Node;\n\n /**\n * @constructor OperatorNode\n * @extends {Node}\n * An operator with two arguments, like 2+3\n *\n * @param {string} op Operator name, for example '+'\n * @param {string} fn Function name, for example 'add'\n * @param {Node[]} args Operator arguments\n * @param {boolean} [implicit] Is this an implicit multiplication?\n */\n function OperatorNode(op, fn, args, implicit) {\n if (!(this instanceof OperatorNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate input\n\n\n if (typeof op !== 'string') {\n throw new TypeError('string expected for parameter \"op\"');\n }\n\n if (typeof fn !== 'string') {\n throw new TypeError('string expected for parameter \"fn\"');\n }\n\n if (!Array.isArray(args) || !args.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"args\"');\n }\n\n this.implicit = implicit === true;\n this.op = op;\n this.fn = fn;\n this.args = args || [];\n }\n\n OperatorNode.prototype = new Node();\n OperatorNode.prototype.type = 'OperatorNode';\n OperatorNode.prototype.isOperatorNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n OperatorNode.prototype._compile = function (math, argNames) {\n // validate fn\n if (typeof this.fn !== 'string' || !isSafeMethod(math, this.fn)) {\n if (!math[this.fn]) {\n throw new Error('Function ' + this.fn + ' missing in provided namespace \"math\"');\n } else {\n throw new Error('No access to function \"' + this.fn + '\"');\n }\n }\n\n var fn = getSafeProperty(math, this.fn);\n var evalArgs = map(this.args, function (arg) {\n return arg._compile(math, argNames);\n });\n\n if (evalArgs.length === 1) {\n var evalArg0 = evalArgs[0];\n return function evalOperatorNode(scope, args, context) {\n return fn(evalArg0(scope, args, context));\n };\n } else if (evalArgs.length === 2) {\n var _evalArg = evalArgs[0];\n var evalArg1 = evalArgs[1];\n return function evalOperatorNode(scope, args, context) {\n return fn(_evalArg(scope, args, context), evalArg1(scope, args, context));\n };\n } else {\n return function evalOperatorNode(scope, args, context) {\n return fn.apply(null, map(evalArgs, function (evalArg) {\n return evalArg(scope, args, context);\n }));\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n OperatorNode.prototype.forEach = function (callback) {\n for (var i = 0; i < this.args.length; i++) {\n callback(this.args[i], 'args[' + i + ']', this);\n }\n };\n /**\n * Create a new OperatorNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {OperatorNode} Returns a transformed copy of the node\n */\n\n\n OperatorNode.prototype.map = function (callback) {\n var args = [];\n\n for (var i = 0; i < this.args.length; i++) {\n args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));\n }\n\n return new OperatorNode(this.op, this.fn, args, this.implicit);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {OperatorNode}\n */\n\n\n OperatorNode.prototype.clone = function () {\n return new OperatorNode(this.op, this.fn, this.args.slice(0), this.implicit);\n };\n /**\n * Check whether this is an unary OperatorNode:\n * has exactly one argument, like `-a`.\n * @return {boolean} Returns true when an unary operator node, false otherwise.\n */\n\n\n OperatorNode.prototype.isUnary = function () {\n return this.args.length === 1;\n };\n /**\n * Check whether this is a binary OperatorNode:\n * has exactly two arguments, like `a + b`.\n * @return {boolean} Returns true when a binary operator node, false otherwise.\n */\n\n\n OperatorNode.prototype.isBinary = function () {\n return this.args.length === 2;\n };\n /**\n * Calculate which parentheses are necessary. Gets an OperatorNode\n * (which is the root of the tree) and an Array of Nodes\n * (this.args) and returns an array where 'true' means that an argument\n * has to be enclosed in parentheses whereas 'false' means the opposite.\n *\n * @param {OperatorNode} root\n * @param {string} parenthesis\n * @param {Node[]} args\n * @param {boolean} latex\n * @return {boolean[]}\n * @private\n */\n\n\n function calculateNecessaryParentheses(root, parenthesis, implicit, args, latex) {\n // precedence of the root OperatorNode\n var precedence = getPrecedence(root, parenthesis);\n var associativity = getAssociativity(root, parenthesis);\n\n if (parenthesis === 'all' || args.length > 2 && root.getIdentifier() !== 'OperatorNode:add' && root.getIdentifier() !== 'OperatorNode:multiply') {\n return args.map(function (arg) {\n switch (arg.getContent().type) {\n // Nodes that don't need extra parentheses\n case 'ArrayNode':\n case 'ConstantNode':\n case 'SymbolNode':\n case 'ParenthesisNode':\n return false;\n\n default:\n return true;\n }\n });\n }\n\n var result;\n\n switch (args.length) {\n case 0:\n result = [];\n break;\n\n case 1:\n // unary operators\n {\n // precedence of the operand\n var operandPrecedence = getPrecedence(args[0], parenthesis); // handle special cases for LaTeX, where some of the parentheses aren't needed\n\n if (latex && operandPrecedence !== null) {\n var operandIdentifier;\n var rootIdentifier;\n\n if (parenthesis === 'keep') {\n operandIdentifier = args[0].getIdentifier();\n rootIdentifier = root.getIdentifier();\n } else {\n // Ignore Parenthesis Nodes when not in 'keep' mode\n operandIdentifier = args[0].getContent().getIdentifier();\n rootIdentifier = root.getContent().getIdentifier();\n }\n\n if (properties[precedence][rootIdentifier].latexLeftParens === false) {\n result = [false];\n break;\n }\n\n if (properties[operandPrecedence][operandIdentifier].latexParens === false) {\n result = [false];\n break;\n }\n }\n\n if (operandPrecedence === null) {\n // if the operand has no defined precedence, no parens are needed\n result = [false];\n break;\n }\n\n if (operandPrecedence <= precedence) {\n // if the operands precedence is lower, parens are needed\n result = [true];\n break;\n } // otherwise, no parens needed\n\n\n result = [false];\n }\n break;\n\n case 2:\n // binary operators\n {\n var lhsParens; // left hand side needs parenthesis?\n // precedence of the left hand side\n\n var lhsPrecedence = getPrecedence(args[0], parenthesis); // is the root node associative with the left hand side\n\n var assocWithLhs = isAssociativeWith(root, args[0], parenthesis);\n\n if (lhsPrecedence === null) {\n // if the left hand side has no defined precedence, no parens are needed\n // FunctionNode for example\n lhsParens = false;\n } else if (lhsPrecedence === precedence && associativity === 'right' && !assocWithLhs) {\n // In case of equal precedence, if the root node is left associative\n // parens are **never** necessary for the left hand side.\n // If it is right associative however, parens are necessary\n // if the root node isn't associative with the left hand side\n lhsParens = true;\n } else if (lhsPrecedence < precedence) {\n lhsParens = true;\n } else {\n lhsParens = false;\n }\n\n var rhsParens; // right hand side needs parenthesis?\n // precedence of the right hand side\n\n var rhsPrecedence = getPrecedence(args[1], parenthesis); // is the root node associative with the right hand side?\n\n var assocWithRhs = isAssociativeWith(root, args[1], parenthesis);\n\n if (rhsPrecedence === null) {\n // if the right hand side has no defined precedence, no parens are needed\n // FunctionNode for example\n rhsParens = false;\n } else if (rhsPrecedence === precedence && associativity === 'left' && !assocWithRhs) {\n // In case of equal precedence, if the root node is right associative\n // parens are **never** necessary for the right hand side.\n // If it is left associative however, parens are necessary\n // if the root node isn't associative with the right hand side\n rhsParens = true;\n } else if (rhsPrecedence < precedence) {\n rhsParens = true;\n } else {\n rhsParens = false;\n } // handle special cases for LaTeX, where some of the parentheses aren't needed\n\n\n if (latex) {\n var _rootIdentifier;\n\n var lhsIdentifier;\n var rhsIdentifier;\n\n if (parenthesis === 'keep') {\n _rootIdentifier = root.getIdentifier();\n lhsIdentifier = root.args[0].getIdentifier();\n rhsIdentifier = root.args[1].getIdentifier();\n } else {\n // Ignore ParenthesisNodes when not in 'keep' mode\n _rootIdentifier = root.getContent().getIdentifier();\n lhsIdentifier = root.args[0].getContent().getIdentifier();\n rhsIdentifier = root.args[1].getContent().getIdentifier();\n }\n\n if (lhsPrecedence !== null) {\n if (properties[precedence][_rootIdentifier].latexLeftParens === false) {\n lhsParens = false;\n }\n\n if (properties[lhsPrecedence][lhsIdentifier].latexParens === false) {\n lhsParens = false;\n }\n }\n\n if (rhsPrecedence !== null) {\n if (properties[precedence][_rootIdentifier].latexRightParens === false) {\n rhsParens = false;\n }\n\n if (properties[rhsPrecedence][rhsIdentifier].latexParens === false) {\n rhsParens = false;\n }\n }\n }\n\n result = [lhsParens, rhsParens];\n }\n break;\n\n default:\n if (root.getIdentifier() === 'OperatorNode:add' || root.getIdentifier() === 'OperatorNode:multiply') {\n result = args.map(function (arg) {\n var argPrecedence = getPrecedence(arg, parenthesis);\n var assocWithArg = isAssociativeWith(root, arg, parenthesis);\n var argAssociativity = getAssociativity(arg, parenthesis);\n\n if (argPrecedence === null) {\n // if the argument has no defined precedence, no parens are needed\n return false;\n } else if (precedence === argPrecedence && associativity === argAssociativity && !assocWithArg) {\n return true;\n } else if (argPrecedence < precedence) {\n return true;\n }\n\n return false;\n });\n }\n\n break;\n } // handles an edge case of 'auto' parentheses with implicit multiplication of ConstantNode\n // In that case print parentheses for ParenthesisNodes even though they normally wouldn't be\n // printed.\n\n\n if (args.length >= 2 && root.getIdentifier() === 'OperatorNode:multiply' && root.implicit && parenthesis === 'auto' && implicit === 'hide') {\n result = args.map(function (arg, index) {\n var isParenthesisNode = arg.getIdentifier() === 'ParenthesisNode';\n\n if (result[index] || isParenthesisNode) {\n // put in parenthesis?\n return true;\n }\n\n return false;\n });\n }\n\n return result;\n }\n /**\n * Get string representation.\n * @param {Object} options\n * @return {string} str\n */\n\n\n OperatorNode.prototype._toString = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);\n\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toString(options);\n\n if (parens[0]) {\n operand = '(' + operand + ')';\n } // for example for \"not\", we want a space between operand and argument\n\n\n var opIsNamed = /[a-zA-Z]+/.test(this.op);\n\n if (assoc === 'right') {\n // prefix operator\n return this.op + (opIsNamed ? ' ' : '') + operand;\n } else if (assoc === 'left') {\n // postfix\n return operand + (opIsNamed ? ' ' : '') + this.op;\n } // fall back to postfix\n\n\n return operand + this.op;\n } else if (args.length === 2) {\n var lhs = args[0].toString(options); // left hand side\n\n var rhs = args[1].toString(options); // right hand side\n\n if (parens[0]) {\n // left hand side in parenthesis?\n lhs = '(' + lhs + ')';\n }\n\n if (parens[1]) {\n // right hand side in parenthesis?\n rhs = '(' + rhs + ')';\n }\n\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return lhs + ' ' + rhs;\n }\n\n return lhs + ' ' + this.op + ' ' + rhs;\n } else if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n var stringifiedArgs = args.map(function (arg, index) {\n arg = arg.toString(options);\n\n if (parens[index]) {\n // put in parenthesis?\n arg = '(' + arg + ')';\n }\n\n return arg;\n });\n\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return stringifiedArgs.join(' ');\n }\n\n return stringifiedArgs.join(' ' + this.op + ' ');\n } else {\n // fallback to formatting as a function call\n return this.fn + '(' + this.args.join(', ') + ')';\n }\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n OperatorNode.prototype.toJSON = function () {\n return {\n mathjs: 'OperatorNode',\n op: this.op,\n fn: this.fn,\n args: this.args,\n implicit: this.implicit\n };\n };\n /**\n * Instantiate an OperatorNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"OperatorNode\", \"op\": \"+\", \"fn\": \"add\", \"args\": [...], \"implicit\": false}`,\n * where mathjs is optional\n * @returns {OperatorNode}\n */\n\n\n OperatorNode.fromJSON = function (json) {\n return new OperatorNode(json.op, json.fn, json.args, json.implicit);\n };\n /**\n * Get HTML representation.\n * @param {Object} options\n * @return {string} str\n */\n\n\n OperatorNode.prototype.toHTML = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, false);\n\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toHTML(options);\n\n if (parens[0]) {\n operand = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + operand + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n if (assoc === 'right') {\n // prefix operator\n return '<span class=\"math-operator math-unary-operator math-lefthand-unary-operator\">' + escape(this.op) + '</span>' + operand;\n } else {\n // postfix when assoc === 'left' or undefined\n return operand + '<span class=\"math-operator math-unary-operator math-righthand-unary-operator\">' + escape(this.op) + '</span>';\n }\n } else if (args.length === 2) {\n // binary operatoes\n var lhs = args[0].toHTML(options); // left hand side\n\n var rhs = args[1].toHTML(options); // right hand side\n\n if (parens[0]) {\n // left hand side in parenthesis?\n lhs = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + lhs + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n if (parens[1]) {\n // right hand side in parenthesis?\n rhs = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + rhs + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return lhs + '<span class=\"math-operator math-binary-operator math-implicit-binary-operator\"></span>' + rhs;\n }\n\n return lhs + '<span class=\"math-operator math-binary-operator math-explicit-binary-operator\">' + escape(this.op) + '</span>' + rhs;\n } else {\n var stringifiedArgs = args.map(function (arg, index) {\n arg = arg.toHTML(options);\n\n if (parens[index]) {\n // put in parenthesis?\n arg = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + arg + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n return arg;\n });\n\n if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n if (this.implicit && this.getIdentifier() === 'OperatorNode:multiply' && implicit === 'hide') {\n return stringifiedArgs.join('<span class=\"math-operator math-binary-operator math-implicit-binary-operator\"></span>');\n }\n\n return stringifiedArgs.join('<span class=\"math-operator math-binary-operator math-explicit-binary-operator\">' + escape(this.op) + '</span>');\n } else {\n // fallback to formatting as a function call\n return '<span class=\"math-function\">' + escape(this.fn) + '</span><span class=\"math-paranthesis math-round-parenthesis\">(</span>' + stringifiedArgs.join('<span class=\"math-separator\">,</span>') + '<span class=\"math-paranthesis math-round-parenthesis\">)</span>';\n }\n }\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n OperatorNode.prototype._toTex = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var implicit = options && options.implicit ? options.implicit : 'hide';\n var args = this.args;\n var parens = calculateNecessaryParentheses(this, parenthesis, implicit, args, true);\n var op = latexOperators[this.fn];\n op = typeof op === 'undefined' ? this.op : op; // fall back to using this.op\n\n if (args.length === 1) {\n // unary operators\n var assoc = getAssociativity(this, parenthesis);\n var operand = args[0].toTex(options);\n\n if (parens[0]) {\n operand = \"\\\\left(\".concat(operand, \"\\\\right)\");\n }\n\n if (assoc === 'right') {\n // prefix operator\n return op + operand;\n } else if (assoc === 'left') {\n // postfix operator\n return operand + op;\n } // fall back to postfix\n\n\n return operand + op;\n } else if (args.length === 2) {\n // binary operators\n var lhs = args[0]; // left hand side\n\n var lhsTex = lhs.toTex(options);\n\n if (parens[0]) {\n lhsTex = \"\\\\left(\".concat(lhsTex, \"\\\\right)\");\n }\n\n var rhs = args[1]; // right hand side\n\n var rhsTex = rhs.toTex(options);\n\n if (parens[1]) {\n rhsTex = \"\\\\left(\".concat(rhsTex, \"\\\\right)\");\n } // handle some exceptions (due to the way LaTeX works)\n\n\n var lhsIdentifier;\n\n if (parenthesis === 'keep') {\n lhsIdentifier = lhs.getIdentifier();\n } else {\n // Ignore ParenthesisNodes if in 'keep' mode\n lhsIdentifier = lhs.getContent().getIdentifier();\n }\n\n switch (this.getIdentifier()) {\n case 'OperatorNode:divide':\n // op contains '\\\\frac' at this point\n return op + '{' + lhsTex + '}' + '{' + rhsTex + '}';\n\n case 'OperatorNode:pow':\n lhsTex = '{' + lhsTex + '}';\n rhsTex = '{' + rhsTex + '}';\n\n switch (lhsIdentifier) {\n case 'ConditionalNode': //\n\n case 'OperatorNode:divide':\n lhsTex = \"\\\\left(\".concat(lhsTex, \"\\\\right)\");\n }\n\n break;\n\n case 'OperatorNode:multiply':\n if (this.implicit && implicit === 'hide') {\n return lhsTex + '~' + rhsTex;\n }\n\n }\n\n return lhsTex + op + rhsTex;\n } else if (args.length > 2 && (this.getIdentifier() === 'OperatorNode:add' || this.getIdentifier() === 'OperatorNode:multiply')) {\n var texifiedArgs = args.map(function (arg, index) {\n arg = arg.toTex(options);\n\n if (parens[index]) {\n arg = \"\\\\left(\".concat(arg, \"\\\\right)\");\n }\n\n return arg;\n });\n\n if (this.getIdentifier() === 'OperatorNode:multiply' && this.implicit) {\n return texifiedArgs.join('~');\n }\n\n return texifiedArgs.join(op);\n } else {\n // fall back to formatting as a function call\n // as this is a fallback, it doesn't use\n // fancy function names\n return '\\\\mathrm{' + this.fn + '}\\\\left(' + args.map(function (arg) {\n return arg.toTex(options);\n }).join(',') + '\\\\right)';\n }\n };\n /**\n * Get identifier.\n * @return {string}\n */\n\n\n OperatorNode.prototype.getIdentifier = function () {\n return this.type + ':' + this.fn;\n };\n\n return OperatorNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isNode } from '../../utils/is';\nimport { factory } from '../../utils/factory';\nvar name = 'ParenthesisNode';\nvar dependencies = ['Node'];\nexport var createParenthesisNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var Node = _ref.Node;\n\n /**\n * @constructor ParenthesisNode\n * @extends {Node}\n * A parenthesis node describes manual parenthesis from the user input\n * @param {Node} content\n * @extends {Node}\n */\n function ParenthesisNode(content) {\n if (!(this instanceof ParenthesisNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate input\n\n\n if (!isNode(content)) {\n throw new TypeError('Node expected for parameter \"content\"');\n }\n\n this.content = content;\n }\n\n ParenthesisNode.prototype = new Node();\n ParenthesisNode.prototype.type = 'ParenthesisNode';\n ParenthesisNode.prototype.isParenthesisNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n ParenthesisNode.prototype._compile = function (math, argNames) {\n return this.content._compile(math, argNames);\n };\n /**\n * Get the content of the current Node.\n * @return {Node} content\n * @override\n **/\n\n\n ParenthesisNode.prototype.getContent = function () {\n return this.content.getContent();\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n ParenthesisNode.prototype.forEach = function (callback) {\n callback(this.content, 'content', this);\n };\n /**\n * Create a new ParenthesisNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {ParenthesisNode} Returns a clone of the node\n */\n\n\n ParenthesisNode.prototype.map = function (callback) {\n var content = callback(this.content, 'content', this);\n return new ParenthesisNode(content);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {ParenthesisNode}\n */\n\n\n ParenthesisNode.prototype.clone = function () {\n return new ParenthesisNode(this.content);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ParenthesisNode.prototype._toString = function (options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return '(' + this.content.toString(options) + ')';\n }\n\n return this.content.toString(options);\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n ParenthesisNode.prototype.toJSON = function () {\n return {\n mathjs: 'ParenthesisNode',\n content: this.content\n };\n };\n /**\n * Instantiate an ParenthesisNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"ParenthesisNode\", \"content\": ...}`,\n * where mathjs is optional\n * @returns {ParenthesisNode}\n */\n\n\n ParenthesisNode.fromJSON = function (json) {\n return new ParenthesisNode(json.content);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ParenthesisNode.prototype.toHTML = function (options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + this.content.toHTML(options) + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n return this.content.toHTML(options);\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n ParenthesisNode.prototype._toTex = function (options) {\n if (!options || options && !options.parenthesis || options && options.parenthesis === 'keep') {\n return \"\\\\left(\".concat(this.content.toTex(options), \"\\\\right)\");\n }\n\n return this.content.toTex(options);\n };\n\n return ParenthesisNode;\n}, {\n isClass: true,\n isNode: true\n});","import { isNode, isSymbolNode } from '../../utils/is';\nimport { factory } from '../../utils/factory';\nimport { getPrecedence } from '../operators';\nvar name = 'RangeNode';\nvar dependencies = ['Node'];\nexport var createRangeNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var Node = _ref.Node;\n\n /**\n * @constructor RangeNode\n * @extends {Node}\n * create a range\n * @param {Node} start included lower-bound\n * @param {Node} end included upper-bound\n * @param {Node} [step] optional step\n */\n function RangeNode(start, end, step) {\n if (!(this instanceof RangeNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate inputs\n\n\n if (!isNode(start)) throw new TypeError('Node expected');\n if (!isNode(end)) throw new TypeError('Node expected');\n if (step && !isNode(step)) throw new TypeError('Node expected');\n if (arguments.length > 3) throw new Error('Too many arguments');\n this.start = start; // included lower-bound\n\n this.end = end; // included upper-bound\n\n this.step = step || null; // optional step\n }\n\n RangeNode.prototype = new Node();\n RangeNode.prototype.type = 'RangeNode';\n RangeNode.prototype.isRangeNode = true;\n /**\n * Check whether the RangeNode needs the `end` symbol to be defined.\n * This end is the size of the Matrix in current dimension.\n * @return {boolean}\n */\n\n RangeNode.prototype.needsEnd = function () {\n // find all `end` symbols in this RangeNode\n var endSymbols = this.filter(function (node) {\n return isSymbolNode(node) && node.name === 'end';\n });\n return endSymbols.length > 0;\n };\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n\n RangeNode.prototype._compile = function (math, argNames) {\n var range = math.range;\n\n var evalStart = this.start._compile(math, argNames);\n\n var evalEnd = this.end._compile(math, argNames);\n\n if (this.step) {\n var evalStep = this.step._compile(math, argNames);\n\n return function evalRangeNode(scope, args, context) {\n return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));\n };\n } else {\n return function evalRangeNode(scope, args, context) {\n return range(evalStart(scope, args, context), evalEnd(scope, args, context));\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n RangeNode.prototype.forEach = function (callback) {\n callback(this.start, 'start', this);\n callback(this.end, 'end', this);\n\n if (this.step) {\n callback(this.step, 'step', this);\n }\n };\n /**\n * Create a new RangeNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {RangeNode} Returns a transformed copy of the node\n */\n\n\n RangeNode.prototype.map = function (callback) {\n return new RangeNode(this._ifNode(callback(this.start, 'start', this)), this._ifNode(callback(this.end, 'end', this)), this.step && this._ifNode(callback(this.step, 'step', this)));\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {RangeNode}\n */\n\n\n RangeNode.prototype.clone = function () {\n return new RangeNode(this.start, this.end, this.step && this.step);\n };\n /**\n * Calculate the necessary parentheses\n * @param {Node} node\n * @param {string} parenthesis\n * @return {Object} parentheses\n * @private\n */\n\n\n function calculateNecessaryParentheses(node, parenthesis) {\n var precedence = getPrecedence(node, parenthesis);\n var parens = {};\n var startPrecedence = getPrecedence(node.start, parenthesis);\n parens.start = startPrecedence !== null && startPrecedence <= precedence || parenthesis === 'all';\n\n if (node.step) {\n var stepPrecedence = getPrecedence(node.step, parenthesis);\n parens.step = stepPrecedence !== null && stepPrecedence <= precedence || parenthesis === 'all';\n }\n\n var endPrecedence = getPrecedence(node.end, parenthesis);\n parens.end = endPrecedence !== null && endPrecedence <= precedence || parenthesis === 'all';\n return parens;\n }\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n RangeNode.prototype._toString = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis); // format string as start:step:stop\n\n var str;\n var start = this.start.toString(options);\n\n if (parens.start) {\n start = '(' + start + ')';\n }\n\n str = start;\n\n if (this.step) {\n var step = this.step.toString(options);\n\n if (parens.step) {\n step = '(' + step + ')';\n }\n\n str += ':' + step;\n }\n\n var end = this.end.toString(options);\n\n if (parens.end) {\n end = '(' + end + ')';\n }\n\n str += ':' + end;\n return str;\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n RangeNode.prototype.toJSON = function () {\n return {\n mathjs: 'RangeNode',\n start: this.start,\n end: this.end,\n step: this.step\n };\n };\n /**\n * Instantiate an RangeNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"RangeNode\", \"start\": ..., \"end\": ..., \"step\": ...}`,\n * where mathjs is optional\n * @returns {RangeNode}\n */\n\n\n RangeNode.fromJSON = function (json) {\n return new RangeNode(json.start, json.end, json.step);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n RangeNode.prototype.toHTML = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis); // format string as start:step:stop\n\n var str;\n var start = this.start.toHTML(options);\n\n if (parens.start) {\n start = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + start + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n str = start;\n\n if (this.step) {\n var step = this.step.toHTML(options);\n\n if (parens.step) {\n step = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + step + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n str += '<span class=\"math-operator math-range-operator\">:</span>' + step;\n }\n\n var end = this.end.toHTML(options);\n\n if (parens.end) {\n end = '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + end + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>';\n }\n\n str += '<span class=\"math-operator math-range-operator\">:</span>' + end;\n return str;\n };\n /**\n * Get LaTeX representation\n * @params {Object} options\n * @return {string} str\n */\n\n\n RangeNode.prototype._toTex = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var parens = calculateNecessaryParentheses(this, parenthesis);\n var str = this.start.toTex(options);\n\n if (parens.start) {\n str = \"\\\\left(\".concat(str, \"\\\\right)\");\n }\n\n if (this.step) {\n var step = this.step.toTex(options);\n\n if (parens.step) {\n step = \"\\\\left(\".concat(step, \"\\\\right)\");\n }\n\n str += ':' + step;\n }\n\n var end = this.end.toTex(options);\n\n if (parens.end) {\n end = \"\\\\left(\".concat(end, \"\\\\right)\");\n }\n\n str += ':' + end;\n return str;\n };\n\n return RangeNode;\n}, {\n isClass: true,\n isNode: true\n});","import { getPrecedence } from '../operators';\nimport { escape } from '../../utils/string';\nimport { getSafeProperty } from '../../utils/customs';\nimport { latexOperators } from '../../utils/latex';\nimport { factory } from '../../utils/factory';\nvar name = 'RelationalNode';\nvar dependencies = ['Node'];\nexport var createRelationalNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var Node = _ref.Node;\n\n /**\n * A node representing a chained conditional expression, such as 'x > y > z'\n *\n * @param {String[]} conditionals An array of conditional operators used to compare the parameters\n * @param {Node[]} params The parameters that will be compared\n *\n * @constructor RelationalNode\n * @extends {Node}\n */\n function RelationalNode(conditionals, params) {\n if (!(this instanceof RelationalNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (!Array.isArray(conditionals)) throw new TypeError('Parameter conditionals must be an array');\n if (!Array.isArray(params)) throw new TypeError('Parameter params must be an array');\n if (conditionals.length !== params.length - 1) throw new TypeError('Parameter params must contain exactly one more element than parameter conditionals');\n this.conditionals = conditionals;\n this.params = params;\n }\n\n RelationalNode.prototype = new Node();\n RelationalNode.prototype.type = 'RelationalNode';\n RelationalNode.prototype.isRelationalNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n RelationalNode.prototype._compile = function (math, argNames) {\n var self = this;\n var compiled = this.params.map(function (p) {\n return p._compile(math, argNames);\n });\n return function evalRelationalNode(scope, args, context) {\n var evalLhs;\n var evalRhs = compiled[0](scope, args, context);\n\n for (var i = 0; i < self.conditionals.length; i++) {\n evalLhs = evalRhs;\n evalRhs = compiled[i + 1](scope, args, context);\n var condFn = getSafeProperty(math, self.conditionals[i]);\n\n if (!condFn(evalLhs, evalRhs)) {\n return false;\n }\n }\n\n return true;\n };\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n RelationalNode.prototype.forEach = function (callback) {\n var _this = this;\n\n this.params.forEach(function (n, i) {\n return callback(n, 'params[' + i + ']', _this);\n }, this);\n };\n /**\n * Create a new RelationalNode having its childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {RelationalNode} Returns a transformed copy of the node\n */\n\n\n RelationalNode.prototype.map = function (callback) {\n var _this2 = this;\n\n return new RelationalNode(this.conditionals.slice(), this.params.map(function (n, i) {\n return _this2._ifNode(callback(n, 'params[' + i + ']', _this2));\n }, this));\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {RelationalNode}\n */\n\n\n RelationalNode.prototype.clone = function () {\n return new RelationalNode(this.conditionals, this.params);\n };\n /**\n * Get string representation.\n * @param {Object} options\n * @return {string} str\n */\n\n\n RelationalNode.prototype._toString = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '(' + p.toString(options) + ')' : p.toString(options);\n });\n var operatorMap = {\n equal: '==',\n unequal: '!=',\n smaller: '<',\n larger: '>',\n smallerEq: '<=',\n largerEq: '>='\n };\n var ret = paramStrings[0];\n\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += ' ' + operatorMap[this.conditionals[i]] + ' ' + paramStrings[i + 1];\n }\n\n return ret;\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n RelationalNode.prototype.toJSON = function () {\n return {\n mathjs: 'RelationalNode',\n conditionals: this.conditionals,\n params: this.params\n };\n };\n /**\n * Instantiate a RelationalNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"RelationalNode\", \"condition\": ..., \"trueExpr\": ..., \"falseExpr\": ...}`,\n * where mathjs is optional\n * @returns {RelationalNode}\n */\n\n\n RelationalNode.fromJSON = function (json) {\n return new RelationalNode(json.conditionals, json.params);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n RelationalNode.prototype.toHTML = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '<span class=\"math-parenthesis math-round-parenthesis\">(</span>' + p.toHTML(options) + '<span class=\"math-parenthesis math-round-parenthesis\">)</span>' : p.toHTML(options);\n });\n var operatorMap = {\n equal: '==',\n unequal: '!=',\n smaller: '<',\n larger: '>',\n smallerEq: '<=',\n largerEq: '>='\n };\n var ret = paramStrings[0];\n\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += '<span class=\"math-operator math-binary-operator math-explicit-binary-operator\">' + escape(operatorMap[this.conditionals[i]]) + '</span>' + paramStrings[i + 1];\n }\n\n return ret;\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n RelationalNode.prototype._toTex = function (options) {\n var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';\n var precedence = getPrecedence(this, parenthesis);\n var paramStrings = this.params.map(function (p, index) {\n var paramPrecedence = getPrecedence(p, parenthesis);\n return parenthesis === 'all' || paramPrecedence !== null && paramPrecedence <= precedence ? '\\\\left(' + p.toTex(options) + '\\right)' : p.toTex(options);\n });\n var ret = paramStrings[0];\n\n for (var i = 0; i < this.conditionals.length; i++) {\n ret += latexOperators[this.conditionals[i]] + paramStrings[i + 1];\n }\n\n return ret;\n };\n\n return RelationalNode;\n}, {\n isClass: true,\n isNode: true\n});","import { escape } from '../../utils/string';\nimport { getSafeProperty } from '../../utils/customs';\nimport { factory } from '../../utils/factory';\nimport { toSymbol } from '../../utils/latex';\nvar name = 'SymbolNode';\nvar dependencies = ['math', '?Unit', 'Node'];\nexport var createSymbolNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var math = _ref.math,\n Unit = _ref.Unit,\n Node = _ref.Node;\n\n /**\n * Check whether some name is a valueless unit like \"inch\".\n * @param {string} name\n * @return {boolean}\n */\n function isValuelessUnit(name) {\n return Unit ? Unit.isValuelessUnit(name) : false;\n }\n /**\n * @constructor SymbolNode\n * @extends {Node}\n * A symbol node can hold and resolve a symbol\n * @param {string} name\n * @extends {Node}\n */\n\n\n function SymbolNode(name) {\n if (!(this instanceof SymbolNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n } // validate input\n\n\n if (typeof name !== 'string') throw new TypeError('String expected for parameter \"name\"');\n this.name = name;\n }\n\n SymbolNode.prototype = new Node();\n SymbolNode.prototype.type = 'SymbolNode';\n SymbolNode.prototype.isSymbolNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n SymbolNode.prototype._compile = function (math, argNames) {\n var name = this.name;\n\n if (argNames[name] === true) {\n // this is a FunctionAssignment argument\n // (like an x when inside the expression of a function assignment `f(x) = ...`)\n return function (scope, args, context) {\n return args[name];\n };\n } else if (name in math) {\n return function (scope, args, context) {\n return name in scope ? getSafeProperty(scope, name) : getSafeProperty(math, name);\n };\n } else {\n var isUnit = isValuelessUnit(name);\n return function (scope, args, context) {\n return name in scope ? getSafeProperty(scope, name) : isUnit ? new Unit(null, name) : undef(name);\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n SymbolNode.prototype.forEach = function (callback) {// nothing to do, we don't have childs\n };\n /**\n * Create a new SymbolNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node) : Node} callback\n * @returns {SymbolNode} Returns a clone of the node\n */\n\n\n SymbolNode.prototype.map = function (callback) {\n return this.clone();\n };\n /**\n * Throws an error 'Undefined symbol {name}'\n * @param {string} name\n */\n\n\n function undef(name) {\n throw new Error('Undefined symbol ' + name);\n }\n /**\n * Create a clone of this node, a shallow copy\n * @return {SymbolNode}\n */\n\n\n SymbolNode.prototype.clone = function () {\n return new SymbolNode(this.name);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n SymbolNode.prototype._toString = function (options) {\n return this.name;\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n SymbolNode.prototype.toHTML = function (options) {\n var name = escape(this.name);\n\n if (name === 'true' || name === 'false') {\n return '<span class=\"math-symbol math-boolean\">' + name + '</span>';\n } else if (name === 'i') {\n return '<span class=\"math-symbol math-imaginary-symbol\">' + name + '</span>';\n } else if (name === 'Infinity') {\n return '<span class=\"math-symbol math-infinity-symbol\">' + name + '</span>';\n } else if (name === 'NaN') {\n return '<span class=\"math-symbol math-nan-symbol\">' + name + '</span>';\n } else if (name === 'null') {\n return '<span class=\"math-symbol math-null-symbol\">' + name + '</span>';\n } else if (name === 'undefined') {\n return '<span class=\"math-symbol math-undefined-symbol\">' + name + '</span>';\n }\n\n return '<span class=\"math-symbol\">' + name + '</span>';\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n SymbolNode.prototype.toJSON = function () {\n return {\n mathjs: 'SymbolNode',\n name: this.name\n };\n };\n /**\n * Instantiate a SymbolNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"SymbolNode\", name: \"x\"}`,\n * where mathjs is optional\n * @returns {SymbolNode}\n */\n\n\n SymbolNode.fromJSON = function (json) {\n return new SymbolNode(json.name);\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n\n SymbolNode.prototype._toTex = function (options) {\n var isUnit = false;\n\n if (typeof math[this.name] === 'undefined' && isValuelessUnit(this.name)) {\n isUnit = true;\n }\n\n var symbol = toSymbol(this.name, isUnit);\n\n if (symbol[0] === '\\\\') {\n // no space needed if the symbol starts with '\\'\n return symbol;\n } // the space prevents symbols from breaking stuff like '\\cdot' if it's written right before the symbol\n\n\n return ' ' + symbol;\n };\n\n return SymbolNode;\n}, {\n isClass: true,\n isNode: true\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { isAccessorNode, isFunctionAssignmentNode, isIndexNode, isNode, isSymbolNode } from '../../utils/is';\nimport { escape } from '../../utils/string';\nimport { hasOwnProperty } from '../../utils/object';\nimport { map } from '../../utils/array';\nimport { getSafeProperty, validateSafeMethod } from '../../utils/customs';\nimport { factory } from '../../utils/factory';\nimport { defaultTemplate, latexFunctions } from '../../utils/latex';\nvar name = 'FunctionNode';\nvar dependencies = ['math', 'Node', 'SymbolNode'];\nexport var createFunctionNode = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var math = _ref.math,\n Node = _ref.Node,\n SymbolNode = _ref.SymbolNode;\n\n /**\n * @constructor FunctionNode\n * @extends {./Node}\n * invoke a list with arguments on a node\n * @param {./Node | string} fn Node resolving with a function on which to invoke\n * the arguments, typically a SymboNode or AccessorNode\n * @param {./Node[]} args\n */\n function FunctionNode(fn, args) {\n if (!(this instanceof FunctionNode)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (typeof fn === 'string') {\n fn = new SymbolNode(fn);\n } // validate input\n\n\n if (!isNode(fn)) throw new TypeError('Node expected as parameter \"fn\"');\n\n if (!Array.isArray(args) || !args.every(isNode)) {\n throw new TypeError('Array containing Nodes expected for parameter \"args\"');\n }\n\n this.fn = fn;\n this.args = args || []; // readonly property name\n\n Object.defineProperty(this, 'name', {\n get: function () {\n return this.fn.name || '';\n }.bind(this),\n set: function set() {\n throw new Error('Cannot assign a new name, name is read-only');\n }\n });\n }\n\n FunctionNode.prototype = new Node();\n FunctionNode.prototype.type = 'FunctionNode';\n FunctionNode.prototype.isFunctionNode = true;\n /**\n * Compile a node into a JavaScript function.\n * This basically pre-calculates as much as possible and only leaves open\n * calculations which depend on a dynamic scope with variables.\n * @param {Object} math Math.js namespace with functions and constants.\n * @param {Object} argNames An object with argument names as key and `true`\n * as value. Used in the SymbolNode to optimize\n * for arguments from user assigned functions\n * (see FunctionAssignmentNode) or special symbols\n * like `end` (see IndexNode).\n * @return {function} Returns a function which can be called like:\n * evalNode(scope: Object, args: Object, context: *)\n */\n\n FunctionNode.prototype._compile = function (math, argNames) {\n if (!(this instanceof FunctionNode)) {\n throw new TypeError('No valid FunctionNode');\n } // compile arguments\n\n\n var evalArgs = map(this.args, function (arg) {\n return arg._compile(math, argNames);\n });\n\n if (isSymbolNode(this.fn)) {\n // we can statically determine whether the function has an rawArgs property\n var _name = this.fn.name;\n var fn = _name in math ? getSafeProperty(math, _name) : undefined;\n var isRaw = typeof fn === 'function' && fn.rawArgs === true;\n\n if (isRaw) {\n // pass unevaluated parameters (nodes) to the function\n // \"raw\" evaluation\n var rawArgs = this.args;\n return function evalFunctionNode(scope, args, context) {\n return (_name in scope ? getSafeProperty(scope, _name) : fn)(rawArgs, math, _extends({}, scope, args));\n };\n } else {\n // \"regular\" evaluation\n if (evalArgs.length === 1) {\n var evalArg0 = evalArgs[0];\n return function evalFunctionNode(scope, args, context) {\n return (_name in scope ? getSafeProperty(scope, _name) : fn)(evalArg0(scope, args, context));\n };\n } else if (evalArgs.length === 2) {\n var _evalArg = evalArgs[0];\n var evalArg1 = evalArgs[1];\n return function evalFunctionNode(scope, args, context) {\n return (_name in scope ? getSafeProperty(scope, _name) : fn)(_evalArg(scope, args, context), evalArg1(scope, args, context));\n };\n } else {\n return function evalFunctionNode(scope, args, context) {\n return (_name in scope ? getSafeProperty(scope, _name) : fn).apply(null, map(evalArgs, function (evalArg) {\n return evalArg(scope, args, context);\n }));\n };\n }\n }\n } else if (isAccessorNode(this.fn) && isIndexNode(this.fn.index) && this.fn.index.isObjectProperty()) {\n // execute the function with the right context: the object of the AccessorNode\n var evalObject = this.fn.object._compile(math, argNames);\n\n var prop = this.fn.index.getObjectProperty();\n var _rawArgs = this.args;\n return function evalFunctionNode(scope, args, context) {\n var object = evalObject(scope, args, context);\n validateSafeMethod(object, prop);\n var isRaw = object[prop] && object[prop].rawArgs;\n return isRaw ? object[prop](_rawArgs, math, _extends({}, scope, args)) // \"raw\" evaluation\n : object[prop].apply(object, map(evalArgs, function (evalArg) {\n // \"regular\" evaluation\n return evalArg(scope, args, context);\n }));\n };\n } else {\n // node.fn.isAccessorNode && !node.fn.index.isObjectProperty()\n // we have to dynamically determine whether the function has a rawArgs property\n var evalFn = this.fn._compile(math, argNames);\n\n var _rawArgs2 = this.args;\n return function evalFunctionNode(scope, args, context) {\n var fn = evalFn(scope, args, context);\n var isRaw = fn && fn.rawArgs;\n return isRaw ? fn(_rawArgs2, math, _extends({}, scope, args)) // \"raw\" evaluation\n : fn.apply(fn, map(evalArgs, function (evalArg) {\n // \"regular\" evaluation\n return evalArg(scope, args, context);\n }));\n };\n }\n };\n /**\n * Execute a callback for each of the child nodes of this node\n * @param {function(child: Node, path: string, parent: Node)} callback\n */\n\n\n FunctionNode.prototype.forEach = function (callback) {\n callback(this.fn, 'fn', this);\n\n for (var i = 0; i < this.args.length; i++) {\n callback(this.args[i], 'args[' + i + ']', this);\n }\n };\n /**\n * Create a new FunctionNode having it's childs be the results of calling\n * the provided callback function for each of the childs of the original node.\n * @param {function(child: Node, path: string, parent: Node): Node} callback\n * @returns {FunctionNode} Returns a transformed copy of the node\n */\n\n\n FunctionNode.prototype.map = function (callback) {\n var fn = this._ifNode(callback(this.fn, 'fn', this));\n\n var args = [];\n\n for (var i = 0; i < this.args.length; i++) {\n args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this));\n }\n\n return new FunctionNode(fn, args);\n };\n /**\n * Create a clone of this node, a shallow copy\n * @return {FunctionNode}\n */\n\n\n FunctionNode.prototype.clone = function () {\n return new FunctionNode(this.fn, this.args.slice(0));\n }; // backup Node's toString function\n // @private\n\n\n var nodeToString = FunctionNode.prototype.toString;\n /**\n * Get string representation. (wrapper function)\n * This overrides parts of Node's toString function.\n * If callback is an object containing callbacks, it\n * calls the correct callback for the current node,\n * otherwise it falls back to calling Node's toString\n * function.\n *\n * @param {Object} options\n * @return {string} str\n * @override\n */\n\n FunctionNode.prototype.toString = function (options) {\n var customString;\n var name = this.fn.toString(options);\n\n if (options && _typeof(options.handler) === 'object' && hasOwnProperty(options.handler, name)) {\n // callback is a map of callback functions\n customString = options.handler[name](this, options);\n }\n\n if (typeof customString !== 'undefined') {\n return customString;\n } // fall back to Node's toString\n\n\n return nodeToString.call(this, options);\n };\n /**\n * Get string representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionNode.prototype._toString = function (options) {\n var args = this.args.map(function (arg) {\n return arg.toString(options);\n });\n var fn = isFunctionAssignmentNode(this.fn) ? '(' + this.fn.toString(options) + ')' : this.fn.toString(options); // format the arguments like \"add(2, 4.2)\"\n\n return fn + '(' + args.join(', ') + ')';\n };\n /**\n * Get a JSON representation of the node\n * @returns {Object}\n */\n\n\n FunctionNode.prototype.toJSON = function () {\n return {\n mathjs: 'FunctionNode',\n fn: this.fn,\n args: this.args\n };\n };\n /**\n * Instantiate an AssignmentNode from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"FunctionNode\", fn: ..., args: ...}`,\n * where mathjs is optional\n * @returns {FunctionNode}\n */\n\n\n FunctionNode.fromJSON = function (json) {\n return new FunctionNode(json.fn, json.args);\n };\n /**\n * Get HTML representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionNode.prototype.toHTML = function (options) {\n var args = this.args.map(function (arg) {\n return arg.toHTML(options);\n }); // format the arguments like \"add(2, 4.2)\"\n\n return '<span class=\"math-function\">' + escape(this.fn) + '</span><span class=\"math-paranthesis math-round-parenthesis\">(</span>' + args.join('<span class=\"math-separator\">,</span>') + '<span class=\"math-paranthesis math-round-parenthesis\">)</span>';\n };\n /*\n * Expand a LaTeX template\n *\n * @param {string} template\n * @param {Node} node\n * @param {Object} options\n * @private\n **/\n\n\n function expandTemplate(template, node, options) {\n var latex = ''; // Match everything of the form ${identifier} or ${identifier[2]} or $$\n // while submatching identifier and 2 (in the second case)\n\n var regex = /\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)/gi;\n var inputPos = 0; // position in the input string\n\n var match;\n\n while ((match = regex.exec(template)) !== null) {\n // go through all matches\n // add everything in front of the match to the LaTeX string\n latex += template.substring(inputPos, match.index);\n inputPos = match.index;\n\n if (match[0] === '$$') {\n // escaped dollar sign\n latex += '$';\n inputPos++;\n } else {\n // template parameter\n inputPos += match[0].length;\n var property = node[match[1]];\n\n if (!property) {\n throw new ReferenceError('Template: Property ' + match[1] + ' does not exist.');\n }\n\n if (match[2] === undefined) {\n // no square brackets\n switch (_typeof(property)) {\n case 'string':\n latex += property;\n break;\n\n case 'object':\n if (isNode(property)) {\n latex += property.toTex(options);\n } else if (Array.isArray(property)) {\n // make array of Nodes into comma separated list\n latex += property.map(function (arg, index) {\n if (isNode(arg)) {\n return arg.toTex(options);\n }\n\n throw new TypeError('Template: ' + match[1] + '[' + index + '] is not a Node.');\n }).join(',');\n } else {\n throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes');\n }\n\n break;\n\n default:\n throw new TypeError('Template: ' + match[1] + ' has to be a Node, String or array of Nodes');\n }\n } else {\n // with square brackets\n if (isNode(property[match[2]] && property[match[2]])) {\n latex += property[match[2]].toTex(options);\n } else {\n throw new TypeError('Template: ' + match[1] + '[' + match[2] + '] is not a Node.');\n }\n }\n }\n }\n\n latex += template.slice(inputPos); // append rest of the template\n\n return latex;\n } // backup Node's toTex function\n // @private\n\n\n var nodeToTex = FunctionNode.prototype.toTex;\n /**\n * Get LaTeX representation. (wrapper function)\n * This overrides parts of Node's toTex function.\n * If callback is an object containing callbacks, it\n * calls the correct callback for the current node,\n * otherwise it falls back to calling Node's toTex\n * function.\n *\n * @param {Object} options\n * @return {string}\n */\n\n FunctionNode.prototype.toTex = function (options) {\n var customTex;\n\n if (options && _typeof(options.handler) === 'object' && hasOwnProperty(options.handler, this.name)) {\n // callback is a map of callback functions\n customTex = options.handler[this.name](this, options);\n }\n\n if (typeof customTex !== 'undefined') {\n return customTex;\n } // fall back to Node's toTex\n\n\n return nodeToTex.call(this, options);\n };\n /**\n * Get LaTeX representation\n * @param {Object} options\n * @return {string} str\n */\n\n\n FunctionNode.prototype._toTex = function (options) {\n var args = this.args.map(function (arg) {\n // get LaTeX of the arguments\n return arg.toTex(options);\n });\n var latexConverter;\n\n if (latexFunctions[this.name]) {\n latexConverter = latexFunctions[this.name];\n } // toTex property on the function itself\n\n\n if (math[this.name] && (typeof math[this.name].toTex === 'function' || _typeof(math[this.name].toTex) === 'object' || typeof math[this.name].toTex === 'string')) {\n // .toTex is a callback function\n latexConverter = math[this.name].toTex;\n }\n\n var customToTex;\n\n switch (_typeof(latexConverter)) {\n case 'function':\n // a callback function\n customToTex = latexConverter(this, options);\n break;\n\n case 'string':\n // a template string\n customToTex = expandTemplate(latexConverter, this, options);\n break;\n\n case 'object':\n // an object with different \"converters\" for different numbers of arguments\n switch (_typeof(latexConverter[args.length])) {\n case 'function':\n customToTex = latexConverter[args.length](this, options);\n break;\n\n case 'string':\n customToTex = expandTemplate(latexConverter[args.length], this, options);\n break;\n }\n\n }\n\n if (typeof customToTex !== 'undefined') {\n return customToTex;\n }\n\n return expandTemplate(defaultTemplate, this, options);\n };\n /**\n * Get identifier.\n * @return {string}\n */\n\n\n FunctionNode.prototype.getIdentifier = function () {\n return this.type + ':' + this.name;\n };\n\n return FunctionNode;\n}, {\n isClass: true,\n isNode: true\n});","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { factory } from '../utils/factory';\nimport { isAccessorNode, isConstantNode, isFunctionNode, isOperatorNode, isSymbolNode } from '../utils/is';\nimport { deepMap } from '../utils/collection';\nimport { hasOwnProperty } from '../utils/object';\nvar name = 'parse';\nvar dependencies = ['typed', 'numeric', 'config', 'AccessorNode', 'ArrayNode', 'AssignmentNode', 'BlockNode', 'ConditionalNode', 'ConstantNode', 'FunctionAssignmentNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'RangeNode', 'RelationalNode', 'SymbolNode'];\nexport var createParse = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n numeric = _ref.numeric,\n config = _ref.config,\n AccessorNode = _ref.AccessorNode,\n ArrayNode = _ref.ArrayNode,\n AssignmentNode = _ref.AssignmentNode,\n BlockNode = _ref.BlockNode,\n ConditionalNode = _ref.ConditionalNode,\n ConstantNode = _ref.ConstantNode,\n FunctionAssignmentNode = _ref.FunctionAssignmentNode,\n FunctionNode = _ref.FunctionNode,\n IndexNode = _ref.IndexNode,\n ObjectNode = _ref.ObjectNode,\n OperatorNode = _ref.OperatorNode,\n ParenthesisNode = _ref.ParenthesisNode,\n RangeNode = _ref.RangeNode,\n RelationalNode = _ref.RelationalNode,\n SymbolNode = _ref.SymbolNode;\n\n /**\n * Parse an expression. Returns a node tree, which can be evaluated by\n * invoking node.evaluate().\n *\n * Note the evaluating arbitrary expressions may involve security risks,\n * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information.\n *\n * Syntax:\n *\n * math.parse(expr)\n * math.parse(expr, options)\n * math.parse([expr1, expr2, expr3, ...])\n * math.parse([expr1, expr2, expr3, ...], options)\n *\n * Example:\n *\n * const node1 = math.parse('sqrt(3^2 + 4^2)')\n * node1.compile().evaluate() // 5\n *\n * let scope = {a:3, b:4}\n * const node2 = math.parse('a * b') // 12\n * const code2 = node2.compile()\n * code2.evaluate(scope) // 12\n * scope.a = 5\n * code2.evaluate(scope) // 20\n *\n * const nodes = math.parse(['a = 3', 'b = 4', 'a * b'])\n * nodes[2].compile().evaluate() // 12\n *\n * See also:\n *\n * evaluate, compile\n *\n * @param {string | string[] | Matrix} expr Expression to be parsed\n * @param {{nodes: Object<string, Node>}} [options] Available options:\n * - `nodes` a set of custom nodes\n * @return {Node | Node[]} node\n * @throws {Error}\n */\n var parse = typed(name, {\n string: function string(expression) {\n return parseStart(expression, {});\n },\n 'Array | Matrix': function ArrayMatrix(expressions) {\n return parseMultiple(expressions, {});\n },\n 'string, Object': function stringObject(expression, options) {\n var extraNodes = options.nodes !== undefined ? options.nodes : {};\n return parseStart(expression, extraNodes);\n },\n 'Array | Matrix, Object': parseMultiple\n });\n\n function parseMultiple(expressions) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var extraNodes = options.nodes !== undefined ? options.nodes : {}; // parse an array or matrix with expressions\n\n return deepMap(expressions, function (elem) {\n if (typeof elem !== 'string') throw new TypeError('String expected');\n return parseStart(elem, extraNodes);\n });\n } // token types enumeration\n\n\n var TOKENTYPE = {\n NULL: 0,\n DELIMITER: 1,\n NUMBER: 2,\n SYMBOL: 3,\n UNKNOWN: 4\n }; // map with all delimiters\n\n var DELIMITERS = {\n ',': true,\n '(': true,\n ')': true,\n '[': true,\n ']': true,\n '{': true,\n '}': true,\n '\"': true,\n '\\'': true,\n ';': true,\n '+': true,\n '-': true,\n '*': true,\n '.*': true,\n '/': true,\n './': true,\n '%': true,\n '^': true,\n '.^': true,\n '~': true,\n '!': true,\n '&': true,\n '|': true,\n '^|': true,\n '=': true,\n ':': true,\n '?': true,\n '==': true,\n '!=': true,\n '<': true,\n '>': true,\n '<=': true,\n '>=': true,\n '<<': true,\n '>>': true,\n '>>>': true\n }; // map with all named delimiters\n\n var NAMED_DELIMITERS = {\n mod: true,\n to: true,\n \"in\": true,\n and: true,\n xor: true,\n or: true,\n not: true\n };\n var CONSTANTS = {\n \"true\": true,\n \"false\": false,\n \"null\": null,\n undefined: undefined\n };\n var NUMERIC_CONSTANTS = ['NaN', 'Infinity'];\n\n function initialState() {\n return {\n extraNodes: {},\n // current extra nodes, must be careful not to mutate\n expression: '',\n // current expression\n comment: '',\n // last parsed comment\n index: 0,\n // current index in expr\n token: '',\n // current token\n tokenType: TOKENTYPE.NULL,\n // type of the token\n nestingLevel: 0,\n // level of nesting inside parameters, used to ignore newline characters\n conditionalLevel: null // when a conditional is being parsed, the level of the conditional is stored here\n\n };\n }\n /**\n * View upto `length` characters of the expression starting at the current character.\n *\n * @param {Object} state\n * @param {number} [length=1] Number of characters to view\n * @returns {string}\n * @private\n */\n\n\n function currentString(state, length) {\n return state.expression.substr(state.index, length);\n }\n /**\n * View the current character. Returns '' if end of expression is reached.\n *\n * @param {Object} state\n * @returns {string}\n * @private\n */\n\n\n function currentCharacter(state) {\n return currentString(state, 1);\n }\n /**\n * Get the next character from the expression.\n * The character is stored into the char c. If the end of the expression is\n * reached, the function puts an empty string in c.\n * @private\n */\n\n\n function next(state) {\n state.index++;\n }\n /**\n * Preview the previous character from the expression.\n * @return {string} cNext\n * @private\n */\n\n\n function prevCharacter(state) {\n return state.expression.charAt(state.index - 1);\n }\n /**\n * Preview the next character from the expression.\n * @return {string} cNext\n * @private\n */\n\n\n function nextCharacter(state) {\n return state.expression.charAt(state.index + 1);\n }\n /**\n * Get next token in the current string expr.\n * The token and token type are available as token and tokenType\n * @private\n */\n\n\n function getToken(state) {\n state.tokenType = TOKENTYPE.NULL;\n state.token = '';\n state.comment = ''; // skip over whitespaces\n // space, tab, and newline when inside parameters\n\n while (parse.isWhitespace(currentCharacter(state), state.nestingLevel)) {\n next(state);\n } // skip comment\n\n\n if (currentCharacter(state) === '#') {\n while (currentCharacter(state) !== '\\n' && currentCharacter(state) !== '') {\n state.comment += currentCharacter(state);\n next(state);\n }\n } // check for end of expression\n\n\n if (currentCharacter(state) === '') {\n // token is still empty\n state.tokenType = TOKENTYPE.DELIMITER;\n return;\n } // check for new line character\n\n\n if (currentCharacter(state) === '\\n' && !state.nestingLevel) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = currentCharacter(state);\n next(state);\n return;\n }\n\n var c1 = currentCharacter(state);\n var c2 = currentString(state, 2);\n var c3 = currentString(state, 3);\n\n if (c3.length === 3 && DELIMITERS[c3]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c3;\n next(state);\n next(state);\n next(state);\n return;\n } // check for delimiters consisting of 2 characters\n\n\n if (c2.length === 2 && DELIMITERS[c2]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c2;\n next(state);\n next(state);\n return;\n } // check for delimiters consisting of 1 character\n\n\n if (DELIMITERS[c1]) {\n state.tokenType = TOKENTYPE.DELIMITER;\n state.token = c1;\n next(state);\n return;\n } // check for a number\n\n\n if (parse.isDigitDot(c1)) {\n state.tokenType = TOKENTYPE.NUMBER; // check for binary, octal, or hex\n\n var _c = currentString(state, 2);\n\n if (_c === '0b' || _c === '0o' || _c === '0x') {\n state.token += currentCharacter(state);\n next(state);\n state.token += currentCharacter(state);\n next(state);\n\n while (parse.isHexDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n\n return;\n } // get number, can have a single dot\n\n\n if (currentCharacter(state) === '.') {\n state.token += currentCharacter(state);\n next(state);\n\n if (!parse.isDigit(currentCharacter(state))) {\n // this is no number, it is just a dot (can be dot notation)\n state.tokenType = TOKENTYPE.DELIMITER;\n }\n } else {\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n\n if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n }\n\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n } // check for exponential notation like \"2.3e-4\", \"1.23e50\" or \"2e+4\"\n\n\n if (currentCharacter(state) === 'E' || currentCharacter(state) === 'e') {\n if (parse.isDigit(nextCharacter(state)) || nextCharacter(state) === '-' || nextCharacter(state) === '+') {\n state.token += currentCharacter(state);\n next(state);\n\n if (currentCharacter(state) === '+' || currentCharacter(state) === '-') {\n state.token += currentCharacter(state);\n next(state);\n } // Scientific notation MUST be followed by an exponent\n\n\n if (!parse.isDigit(currentCharacter(state))) {\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n\n while (parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n\n if (parse.isDecimalMark(currentCharacter(state), nextCharacter(state))) {\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n } else if (nextCharacter(state) === '.') {\n next(state);\n throw createSyntaxError(state, 'Digit expected, got \"' + currentCharacter(state) + '\"');\n }\n }\n\n return;\n } // check for variables, functions, named operators\n\n\n if (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state))) {\n while (parse.isAlpha(currentCharacter(state), prevCharacter(state), nextCharacter(state)) || parse.isDigit(currentCharacter(state))) {\n state.token += currentCharacter(state);\n next(state);\n }\n\n if (hasOwnProperty(NAMED_DELIMITERS, state.token)) {\n state.tokenType = TOKENTYPE.DELIMITER;\n } else {\n state.tokenType = TOKENTYPE.SYMBOL;\n }\n\n return;\n } // something unknown is found, wrong characters -> a syntax error\n\n\n state.tokenType = TOKENTYPE.UNKNOWN;\n\n while (currentCharacter(state) !== '') {\n state.token += currentCharacter(state);\n next(state);\n }\n\n throw createSyntaxError(state, 'Syntax error in part \"' + state.token + '\"');\n }\n /**\n * Get next token and skip newline tokens\n */\n\n\n function getTokenSkipNewline(state) {\n do {\n getToken(state);\n } while (state.token === '\\n'); // eslint-disable-line no-unmodified-loop-condition\n\n }\n /**\n * Open parameters.\n * New line characters will be ignored until closeParams(state) is called\n */\n\n\n function openParams(state) {\n state.nestingLevel++;\n }\n /**\n * Close parameters.\n * New line characters will no longer be ignored\n */\n\n\n function closeParams(state) {\n state.nestingLevel--;\n }\n /**\n * Checks whether the current character `c` is a valid alpha character:\n *\n * - A latin letter (upper or lower case) Ascii: a-z, A-Z\n * - An underscore Ascii: _\n * - A dollar sign Ascii: $\n * - A latin letter with accents Unicode: \\u00C0 - \\u02AF\n * - A greek letter Unicode: \\u0370 - \\u03FF\n * - A mathematical alphanumeric symbol Unicode: \\u{1D400} - \\u{1D7FF} excluding invalid code points\n *\n * The previous and next characters are needed to determine whether\n * this character is part of a unicode surrogate pair.\n *\n * @param {string} c Current character in the expression\n * @param {string} cPrev Previous character\n * @param {string} cNext Next character\n * @return {boolean}\n */\n\n\n parse.isAlpha = function isAlpha(c, cPrev, cNext) {\n return parse.isValidLatinOrGreek(c) || parse.isValidMathSymbol(c, cNext) || parse.isValidMathSymbol(cPrev, c);\n };\n /**\n * Test whether a character is a valid latin, greek, or letter-like character\n * @param {string} c\n * @return {boolean}\n */\n\n\n parse.isValidLatinOrGreek = function isValidLatinOrGreek(c) {\n return /^[a-zA-Z_$\\u00C0-\\u02AF\\u0370-\\u03FF\\u2100-\\u214F]$/.test(c);\n };\n /**\n * Test whether two given 16 bit characters form a surrogate pair of a\n * unicode math symbol.\n *\n * https://unicode-table.com/en/\n * https://www.wikiwand.com/en/Mathematical_operators_and_symbols_in_Unicode\n *\n * Note: In ES6 will be unicode aware:\n * https://stackoverflow.com/questions/280712/javascript-unicode-regexes\n * https://mathiasbynens.be/notes/es6-unicode-regex\n *\n * @param {string} high\n * @param {string} low\n * @return {boolean}\n */\n\n\n parse.isValidMathSymbol = function isValidMathSymbol(high, low) {\n return /^[\\uD835]$/.test(high) && /^[\\uDC00-\\uDFFF]$/.test(low) && /^[^\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]$/.test(low);\n };\n /**\n * Check whether given character c is a white space character: space, tab, or enter\n * @param {string} c\n * @param {number} nestingLevel\n * @return {boolean}\n */\n\n\n parse.isWhitespace = function isWhitespace(c, nestingLevel) {\n // TODO: also take '\\r' carriage return as newline? Or does that give problems on mac?\n return c === ' ' || c === '\\t' || c === '\\n' && nestingLevel > 0;\n };\n /**\n * Test whether the character c is a decimal mark (dot).\n * This is the case when it's not the start of a delimiter '.*', './', or '.^'\n * @param {string} c\n * @param {string} cNext\n * @return {boolean}\n */\n\n\n parse.isDecimalMark = function isDecimalMark(c, cNext) {\n return c === '.' && cNext !== '/' && cNext !== '*' && cNext !== '^';\n };\n /**\n * checks if the given char c is a digit or dot\n * @param {string} c a string with one character\n * @return {boolean}\n */\n\n\n parse.isDigitDot = function isDigitDot(c) {\n return c >= '0' && c <= '9' || c === '.';\n };\n /**\n * checks if the given char c is a digit\n * @param {string} c a string with one character\n * @return {boolean}\n */\n\n\n parse.isDigit = function isDigit(c) {\n return c >= '0' && c <= '9';\n };\n /**\n * checks if the given char c is a hex digit\n * @param {string} c a string with one character\n * @return {boolean}\n */\n\n\n parse.isHexDigit = function isHexDigit(c) {\n return c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F';\n };\n /**\n * Start of the parse levels below, in order of precedence\n * @return {Node} node\n * @private\n */\n\n\n function parseStart(expression, extraNodes) {\n var state = initialState();\n\n _extends(state, {\n expression: expression,\n extraNodes: extraNodes\n });\n\n getToken(state);\n var node = parseBlock(state); // check for garbage at the end of the expression\n // an expression ends with a empty character '' and tokenType DELIMITER\n\n if (state.token !== '') {\n if (state.tokenType === TOKENTYPE.DELIMITER) {\n // user entered a not existing operator like \"//\"\n // TODO: give hints for aliases, for example with \"<>\" give as hint \" did you mean !== ?\"\n throw createError(state, 'Unexpected operator ' + state.token);\n } else {\n throw createSyntaxError(state, 'Unexpected part \"' + state.token + '\"');\n }\n }\n\n return node;\n }\n /**\n * Parse a block with expressions. Expressions can be separated by a newline\n * character '\\n', or by a semicolon ';'. In case of a semicolon, no output\n * of the preceding line is returned.\n * @return {Node} node\n * @private\n */\n\n\n function parseBlock(state) {\n var node;\n var blocks = [];\n var visible;\n\n if (state.token !== '' && state.token !== '\\n' && state.token !== ';') {\n node = parseAssignment(state);\n node.comment = state.comment;\n } // TODO: simplify this loop\n\n\n while (state.token === '\\n' || state.token === ';') {\n // eslint-disable-line no-unmodified-loop-condition\n if (blocks.length === 0 && node) {\n visible = state.token !== ';';\n blocks.push({\n node: node,\n visible: visible\n });\n }\n\n getToken(state);\n\n if (state.token !== '\\n' && state.token !== ';' && state.token !== '') {\n node = parseAssignment(state);\n node.comment = state.comment;\n visible = state.token !== ';';\n blocks.push({\n node: node,\n visible: visible\n });\n }\n }\n\n if (blocks.length > 0) {\n return new BlockNode(blocks);\n } else {\n if (!node) {\n node = new ConstantNode(undefined);\n node.comment = state.comment;\n }\n\n return node;\n }\n }\n /**\n * Assignment of a function or variable,\n * - can be a variable like 'a=2.3'\n * - or a updating an existing variable like 'matrix(2,3:5)=[6,7,8]'\n * - defining a function like 'f(x) = x^2'\n * @return {Node} node\n * @private\n */\n\n\n function parseAssignment(state) {\n var name, args, value, valid;\n var node = parseConditional(state);\n\n if (state.token === '=') {\n if (isSymbolNode(node)) {\n // parse a variable assignment like 'a = 2/3'\n name = node.name;\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new AssignmentNode(new SymbolNode(name), value);\n } else if (isAccessorNode(node)) {\n // parse a matrix subset assignment like 'A[1,2] = 4'\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new AssignmentNode(node.object, node.index, value);\n } else if (isFunctionNode(node) && isSymbolNode(node.fn)) {\n // parse function assignment like 'f(x) = x^2'\n valid = true;\n args = [];\n name = node.name;\n node.args.forEach(function (arg, index) {\n if (isSymbolNode(arg)) {\n args[index] = arg.name;\n } else {\n valid = false;\n }\n });\n\n if (valid) {\n getTokenSkipNewline(state);\n value = parseAssignment(state);\n return new FunctionAssignmentNode(name, args, value);\n }\n }\n\n throw createSyntaxError(state, 'Invalid left hand side of assignment operator =');\n }\n\n return node;\n }\n /**\n * conditional operation\n *\n * condition ? truePart : falsePart\n *\n * Note: conditional operator is right-associative\n *\n * @return {Node} node\n * @private\n */\n\n\n function parseConditional(state) {\n var node = parseLogicalOr(state);\n\n while (state.token === '?') {\n // eslint-disable-line no-unmodified-loop-condition\n // set a conditional level, the range operator will be ignored as long\n // as conditionalLevel === state.nestingLevel.\n var prev = state.conditionalLevel;\n state.conditionalLevel = state.nestingLevel;\n getTokenSkipNewline(state);\n var condition = node;\n var trueExpr = parseAssignment(state);\n if (state.token !== ':') throw createSyntaxError(state, 'False part of conditional expression expected');\n state.conditionalLevel = null;\n getTokenSkipNewline(state);\n var falseExpr = parseAssignment(state); // Note: check for conditional operator again, right associativity\n\n node = new ConditionalNode(condition, trueExpr, falseExpr); // restore the previous conditional level\n\n state.conditionalLevel = prev;\n }\n\n return node;\n }\n /**\n * logical or, 'x or y'\n * @return {Node} node\n * @private\n */\n\n\n function parseLogicalOr(state) {\n var node = parseLogicalXor(state);\n\n while (state.token === 'or') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('or', 'or', [node, parseLogicalXor(state)]);\n }\n\n return node;\n }\n /**\n * logical exclusive or, 'x xor y'\n * @return {Node} node\n * @private\n */\n\n\n function parseLogicalXor(state) {\n var node = parseLogicalAnd(state);\n\n while (state.token === 'xor') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('xor', 'xor', [node, parseLogicalAnd(state)]);\n }\n\n return node;\n }\n /**\n * logical and, 'x and y'\n * @return {Node} node\n * @private\n */\n\n\n function parseLogicalAnd(state) {\n var node = parseBitwiseOr(state);\n\n while (state.token === 'and') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('and', 'and', [node, parseBitwiseOr(state)]);\n }\n\n return node;\n }\n /**\n * bitwise or, 'x | y'\n * @return {Node} node\n * @private\n */\n\n\n function parseBitwiseOr(state) {\n var node = parseBitwiseXor(state);\n\n while (state.token === '|') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('|', 'bitOr', [node, parseBitwiseXor(state)]);\n }\n\n return node;\n }\n /**\n * bitwise exclusive or (xor), 'x ^| y'\n * @return {Node} node\n * @private\n */\n\n\n function parseBitwiseXor(state) {\n var node = parseBitwiseAnd(state);\n\n while (state.token === '^|') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('^|', 'bitXor', [node, parseBitwiseAnd(state)]);\n }\n\n return node;\n }\n /**\n * bitwise and, 'x & y'\n * @return {Node} node\n * @private\n */\n\n\n function parseBitwiseAnd(state) {\n var node = parseRelational(state);\n\n while (state.token === '&') {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n node = new OperatorNode('&', 'bitAnd', [node, parseRelational(state)]);\n }\n\n return node;\n }\n /**\n * Parse a chained conditional, like 'a > b >= c'\n * @return {Node} node\n */\n\n\n function parseRelational(state) {\n var params = [parseShift(state)];\n var conditionals = [];\n var operators = {\n '==': 'equal',\n '!=': 'unequal',\n '<': 'smaller',\n '>': 'larger',\n '<=': 'smallerEq',\n '>=': 'largerEq'\n };\n\n while (hasOwnProperty(operators, state.token)) {\n // eslint-disable-line no-unmodified-loop-condition\n var cond = {\n name: state.token,\n fn: operators[state.token]\n };\n conditionals.push(cond);\n getTokenSkipNewline(state);\n params.push(parseShift(state));\n }\n\n if (params.length === 1) {\n return params[0];\n } else if (params.length === 2) {\n return new OperatorNode(conditionals[0].name, conditionals[0].fn, params);\n } else {\n return new RelationalNode(conditionals.map(function (c) {\n return c.fn;\n }), params);\n }\n }\n /**\n * Bitwise left shift, bitwise right arithmetic shift, bitwise right logical shift\n * @return {Node} node\n * @private\n */\n\n\n function parseShift(state) {\n var node, name, fn, params;\n node = parseConversion(state);\n var operators = {\n '<<': 'leftShift',\n '>>': 'rightArithShift',\n '>>>': 'rightLogShift'\n };\n\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n params = [node, parseConversion(state)];\n node = new OperatorNode(name, fn, params);\n }\n\n return node;\n }\n /**\n * conversion operators 'to' and 'in'\n * @return {Node} node\n * @private\n */\n\n\n function parseConversion(state) {\n var node, name, fn, params;\n node = parseRange(state);\n var operators = {\n to: 'to',\n \"in\": 'to' // alias of 'to'\n\n };\n\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n\n if (name === 'in' && state.token === '') {\n // end of expression -> this is the unit 'in' ('inch')\n node = new OperatorNode('*', 'multiply', [node, new SymbolNode('in')], true);\n } else {\n // operator 'a to b' or 'a in b'\n params = [node, parseRange(state)];\n node = new OperatorNode(name, fn, params);\n }\n }\n\n return node;\n }\n /**\n * parse range, \"start:end\", \"start:step:end\", \":\", \"start:\", \":end\", etc\n * @return {Node} node\n * @private\n */\n\n\n function parseRange(state) {\n var node;\n var params = [];\n\n if (state.token === ':') {\n // implicit start=1 (one-based)\n node = new ConstantNode(1);\n } else {\n // explicit start\n node = parseAddSubtract(state);\n }\n\n if (state.token === ':' && state.conditionalLevel !== state.nestingLevel) {\n // we ignore the range operator when a conditional operator is being processed on the same level\n params.push(node); // parse step and end\n\n while (state.token === ':' && params.length < 3) {\n // eslint-disable-line no-unmodified-loop-condition\n getTokenSkipNewline(state);\n\n if (state.token === ')' || state.token === ']' || state.token === ',' || state.token === '') {\n // implicit end\n params.push(new SymbolNode('end'));\n } else {\n // explicit end\n params.push(parseAddSubtract(state));\n }\n }\n\n if (params.length === 3) {\n // params = [start, step, end]\n node = new RangeNode(params[0], params[2], params[1]); // start, end, step\n } else {\n // length === 2\n // params = [start, end]\n node = new RangeNode(params[0], params[1]); // start, end\n }\n }\n\n return node;\n }\n /**\n * add or subtract\n * @return {Node} node\n * @private\n */\n\n\n function parseAddSubtract(state) {\n var node, name, fn, params;\n node = parseMultiplyDivide(state);\n var operators = {\n '+': 'add',\n '-': 'subtract'\n };\n\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n params = [node, parseMultiplyDivide(state)];\n node = new OperatorNode(name, fn, params);\n }\n\n return node;\n }\n /**\n * multiply, divide, modulus\n * @return {Node} node\n * @private\n */\n\n\n function parseMultiplyDivide(state) {\n var node, last, name, fn;\n node = parseImplicitMultiplication(state);\n last = node;\n var operators = {\n '*': 'multiply',\n '.*': 'dotMultiply',\n '/': 'divide',\n './': 'dotDivide',\n '%': 'mod',\n mod: 'mod'\n };\n\n while (true) {\n if (hasOwnProperty(operators, state.token)) {\n // explicit operators\n name = state.token;\n fn = operators[name];\n getTokenSkipNewline(state);\n last = parseImplicitMultiplication(state);\n node = new OperatorNode(name, fn, [node, last]);\n } else {\n break;\n }\n }\n\n return node;\n }\n /**\n * implicit multiplication\n * @return {Node} node\n * @private\n */\n\n\n function parseImplicitMultiplication(state) {\n var node, last;\n node = parseRule2(state);\n last = node;\n\n while (true) {\n if (state.tokenType === TOKENTYPE.SYMBOL || state.token === 'in' && isConstantNode(node) || state.tokenType === TOKENTYPE.NUMBER && !isConstantNode(last) && (!isOperatorNode(last) || last.op === '!') || state.token === '(') {\n // parse implicit multiplication\n //\n // symbol: implicit multiplication like '2a', '(2+3)a', 'a b'\n // number: implicit multiplication like '(2+3)2'\n // parenthesis: implicit multiplication like '2(3+4)', '(3+4)(1+2)'\n last = parseRule2(state);\n node = new OperatorNode('*', 'multiply', [node, last], true\n /* implicit */\n );\n } else {\n break;\n }\n }\n\n return node;\n }\n /**\n * Infamous \"rule 2\" as described in https://github.com/josdejong/mathjs/issues/792#issuecomment-361065370\n * Explicit division gets higher precedence than implicit multiplication\n * when the division matches this pattern: [number] / [number] [symbol]\n * @return {Node} node\n * @private\n */\n\n\n function parseRule2(state) {\n var node = parseUnary(state);\n var last = node;\n var tokenStates = [];\n\n while (true) {\n // Match the \"number /\" part of the pattern \"number / number symbol\"\n if (state.token === '/' && isConstantNode(last)) {\n // Look ahead to see if the next token is a number\n tokenStates.push(_extends({}, state));\n getTokenSkipNewline(state); // Match the \"number / number\" part of the pattern\n\n if (state.tokenType === TOKENTYPE.NUMBER) {\n // Look ahead again\n tokenStates.push(_extends({}, state));\n getTokenSkipNewline(state); // Match the \"symbol\" part of the pattern, or a left parenthesis\n\n if (state.tokenType === TOKENTYPE.SYMBOL || state.token === '(') {\n // We've matched the pattern \"number / number symbol\".\n // Rewind once and build the \"number / number\" node; the symbol will be consumed later\n _extends(state, tokenStates.pop());\n\n tokenStates.pop();\n last = parseUnary(state);\n node = new OperatorNode('/', 'divide', [node, last]);\n } else {\n // Not a match, so rewind\n tokenStates.pop();\n\n _extends(state, tokenStates.pop());\n\n break;\n }\n } else {\n // Not a match, so rewind\n _extends(state, tokenStates.pop());\n\n break;\n }\n } else {\n break;\n }\n }\n\n return node;\n }\n /**\n * Unary plus and minus, and logical and bitwise not\n * @return {Node} node\n * @private\n */\n\n\n function parseUnary(state) {\n var name, params, fn;\n var operators = {\n '-': 'unaryMinus',\n '+': 'unaryPlus',\n '~': 'bitNot',\n not: 'not'\n };\n\n if (hasOwnProperty(operators, state.token)) {\n fn = operators[state.token];\n name = state.token;\n getTokenSkipNewline(state);\n params = [parseUnary(state)];\n return new OperatorNode(name, fn, params);\n }\n\n return parsePow(state);\n }\n /**\n * power\n * Note: power operator is right associative\n * @return {Node} node\n * @private\n */\n\n\n function parsePow(state) {\n var node, name, fn, params;\n node = parseLeftHandOperators(state);\n\n if (state.token === '^' || state.token === '.^') {\n name = state.token;\n fn = name === '^' ? 'pow' : 'dotPow';\n getTokenSkipNewline(state);\n params = [node, parseUnary(state)]; // Go back to unary, we can have '2^-3'\n\n node = new OperatorNode(name, fn, params);\n }\n\n return node;\n }\n /**\n * Left hand operators: factorial x!, ctranspose x'\n * @return {Node} node\n * @private\n */\n\n\n function parseLeftHandOperators(state) {\n var node, name, fn, params;\n node = parseCustomNodes(state);\n var operators = {\n '!': 'factorial',\n '\\'': 'ctranspose'\n };\n\n while (hasOwnProperty(operators, state.token)) {\n name = state.token;\n fn = operators[name];\n getToken(state);\n params = [node];\n node = new OperatorNode(name, fn, params);\n node = parseAccessors(state, node);\n }\n\n return node;\n }\n /**\n * Parse a custom node handler. A node handler can be used to process\n * nodes in a custom way, for example for handling a plot.\n *\n * A handler must be passed as second argument of the parse function.\n * - must extend math.Node\n * - must contain a function _compile(defs: Object) : string\n * - must contain a function find(filter: Object) : Node[]\n * - must contain a function toString() : string\n * - the constructor is called with a single argument containing all parameters\n *\n * For example:\n *\n * nodes = {\n * 'plot': PlotHandler\n * }\n *\n * The constructor of the handler is called as:\n *\n * node = new PlotHandler(params)\n *\n * The handler will be invoked when evaluating an expression like:\n *\n * node = math.parse('plot(sin(x), x)', nodes)\n *\n * @return {Node} node\n * @private\n */\n\n\n function parseCustomNodes(state) {\n var params = [];\n\n if (state.tokenType === TOKENTYPE.SYMBOL && hasOwnProperty(state.extraNodes, state.token)) {\n var CustomNode = state.extraNodes[state.token];\n getToken(state); // parse parameters\n\n if (state.token === '(') {\n params = [];\n openParams(state);\n getToken(state);\n\n if (state.token !== ')') {\n params.push(parseAssignment(state)); // parse a list with parameters\n\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n\n closeParams(state);\n getToken(state);\n } // create a new custom node\n // noinspection JSValidateTypes\n\n\n return new CustomNode(params);\n }\n\n return parseSymbol(state);\n }\n /**\n * parse symbols: functions, variables, constants, units\n * @return {Node} node\n * @private\n */\n\n\n function parseSymbol(state) {\n var node, name;\n\n if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {\n name = state.token;\n getToken(state);\n\n if (hasOwnProperty(CONSTANTS, name)) {\n // true, false, null, ...\n node = new ConstantNode(CONSTANTS[name]);\n } else if (NUMERIC_CONSTANTS.indexOf(name) !== -1) {\n // NaN, Infinity\n node = new ConstantNode(numeric(name, 'number'));\n } else {\n node = new SymbolNode(name);\n } // parse function parameters and matrix index\n\n\n node = parseAccessors(state, node);\n return node;\n }\n\n return parseDoubleQuotesString(state);\n }\n /**\n * parse accessors:\n * - function invocation in round brackets (...), for example sqrt(2)\n * - index enclosed in square brackets [...], for example A[2,3]\n * - dot notation for properties, like foo.bar\n * @param {Object} state\n * @param {Node} node Node on which to apply the parameters. If there\n * are no parameters in the expression, the node\n * itself is returned\n * @param {string[]} [types] Filter the types of notations\n * can be ['(', '[', '.']\n * @return {Node} node\n * @private\n */\n\n\n function parseAccessors(state, node, types) {\n var params;\n\n while ((state.token === '(' || state.token === '[' || state.token === '.') && (!types || types.indexOf(state.token) !== -1)) {\n // eslint-disable-line no-unmodified-loop-condition\n params = [];\n\n if (state.token === '(') {\n if (isSymbolNode(node) || isAccessorNode(node)) {\n // function invocation like fn(2, 3) or obj.fn(2, 3)\n openParams(state);\n getToken(state);\n\n if (state.token !== ')') {\n params.push(parseAssignment(state)); // parse a list with parameters\n\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n\n closeParams(state);\n getToken(state);\n node = new FunctionNode(node, params);\n } else {\n // implicit multiplication like (2+3)(4+5) or sqrt(2)(1+2)\n // don't parse it here but let it be handled by parseImplicitMultiplication\n // with correct precedence\n return node;\n }\n } else if (state.token === '[') {\n // index notation like variable[2, 3]\n openParams(state);\n getToken(state);\n\n if (state.token !== ']') {\n params.push(parseAssignment(state)); // parse a list with parameters\n\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params.push(parseAssignment(state));\n }\n }\n\n if (state.token !== ']') {\n throw createSyntaxError(state, 'Parenthesis ] expected');\n }\n\n closeParams(state);\n getToken(state);\n node = new AccessorNode(node, new IndexNode(params));\n } else {\n // dot notation like variable.prop\n getToken(state);\n\n if (state.tokenType !== TOKENTYPE.SYMBOL) {\n throw createSyntaxError(state, 'Property name expected after dot');\n }\n\n params.push(new ConstantNode(state.token));\n getToken(state);\n var dotNotation = true;\n node = new AccessorNode(node, new IndexNode(params, dotNotation));\n }\n }\n\n return node;\n }\n /**\n * Parse a double quotes string.\n * @return {Node} node\n * @private\n */\n\n\n function parseDoubleQuotesString(state) {\n var node, str;\n\n if (state.token === '\"') {\n str = parseDoubleQuotesStringToken(state); // create constant\n\n node = new ConstantNode(str); // parse index parameters\n\n node = parseAccessors(state, node);\n return node;\n }\n\n return parseSingleQuotesString(state);\n }\n /**\n * Parse a string surrounded by double quotes \"...\"\n * @return {string}\n */\n\n\n function parseDoubleQuotesStringToken(state) {\n var str = '';\n\n while (currentCharacter(state) !== '' && currentCharacter(state) !== '\"') {\n if (currentCharacter(state) === '\\\\') {\n // escape character, immediately process the next\n // character to prevent stopping at a next '\\\"'\n str += currentCharacter(state);\n next(state);\n }\n\n str += currentCharacter(state);\n next(state);\n }\n\n getToken(state);\n\n if (state.token !== '\"') {\n throw createSyntaxError(state, 'End of string \" expected');\n }\n\n getToken(state);\n return JSON.parse('\"' + str + '\"'); // unescape escaped characters\n }\n /**\n * Parse a single quotes string.\n * @return {Node} node\n * @private\n */\n\n\n function parseSingleQuotesString(state) {\n var node, str;\n\n if (state.token === '\\'') {\n str = parseSingleQuotesStringToken(state); // create constant\n\n node = new ConstantNode(str); // parse index parameters\n\n node = parseAccessors(state, node);\n return node;\n }\n\n return parseMatrix(state);\n }\n /**\n * Parse a string surrounded by single quotes '...'\n * @return {string}\n */\n\n\n function parseSingleQuotesStringToken(state) {\n var str = '';\n\n while (currentCharacter(state) !== '' && currentCharacter(state) !== '\\'') {\n if (currentCharacter(state) === '\\\\') {\n // escape character, immediately process the next\n // character to prevent stopping at a next '\\''\n str += currentCharacter(state);\n next(state);\n }\n\n str += currentCharacter(state);\n next(state);\n }\n\n getToken(state);\n\n if (state.token !== '\\'') {\n throw createSyntaxError(state, 'End of string \\' expected');\n }\n\n getToken(state);\n return JSON.parse('\"' + str + '\"'); // unescape escaped characters\n }\n /**\n * parse the matrix\n * @return {Node} node\n * @private\n */\n\n\n function parseMatrix(state) {\n var array, params, rows, cols;\n\n if (state.token === '[') {\n // matrix [...]\n openParams(state);\n getToken(state);\n\n if (state.token !== ']') {\n // this is a non-empty matrix\n var row = parseRow(state);\n\n if (state.token === ';') {\n // 2 dimensional array\n rows = 1;\n params = [row]; // the rows of the matrix are separated by dot-comma's\n\n while (state.token === ';') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state);\n params[rows] = parseRow(state);\n rows++;\n }\n\n if (state.token !== ']') {\n throw createSyntaxError(state, 'End of matrix ] expected');\n }\n\n closeParams(state);\n getToken(state); // check if the number of columns matches in all rows\n\n cols = params[0].items.length;\n\n for (var r = 1; r < rows; r++) {\n if (params[r].items.length !== cols) {\n throw createError(state, 'Column dimensions mismatch ' + '(' + params[r].items.length + ' !== ' + cols + ')');\n }\n }\n\n array = new ArrayNode(params);\n } else {\n // 1 dimensional vector\n if (state.token !== ']') {\n throw createSyntaxError(state, 'End of matrix ] expected');\n }\n\n closeParams(state);\n getToken(state);\n array = row;\n }\n } else {\n // this is an empty matrix \"[ ]\"\n closeParams(state);\n getToken(state);\n array = new ArrayNode([]);\n }\n\n return parseAccessors(state, array);\n }\n\n return parseObject(state);\n }\n /**\n * Parse a single comma-separated row from a matrix, like 'a, b, c'\n * @return {ArrayNode} node\n */\n\n\n function parseRow(state) {\n var params = [parseAssignment(state)];\n var len = 1;\n\n while (state.token === ',') {\n // eslint-disable-line no-unmodified-loop-condition\n getToken(state); // parse expression\n\n params[len] = parseAssignment(state);\n len++;\n }\n\n return new ArrayNode(params);\n }\n /**\n * parse an object, enclosed in angle brackets{...}, for example {value: 2}\n * @return {Node} node\n * @private\n */\n\n\n function parseObject(state) {\n if (state.token === '{') {\n openParams(state);\n var key;\n var properties = {};\n\n do {\n getToken(state);\n\n if (state.token !== '}') {\n // parse key\n if (state.token === '\"') {\n key = parseDoubleQuotesStringToken(state);\n } else if (state.token === '\\'') {\n key = parseSingleQuotesStringToken(state);\n } else if (state.tokenType === TOKENTYPE.SYMBOL || state.tokenType === TOKENTYPE.DELIMITER && state.token in NAMED_DELIMITERS) {\n key = state.token;\n getToken(state);\n } else {\n throw createSyntaxError(state, 'Symbol or string expected as object key');\n } // parse key/value separator\n\n\n if (state.token !== ':') {\n throw createSyntaxError(state, 'Colon : expected after object key');\n }\n\n getToken(state); // parse key\n\n properties[key] = parseAssignment(state);\n }\n } while (state.token === ','); // eslint-disable-line no-unmodified-loop-condition\n\n\n if (state.token !== '}') {\n throw createSyntaxError(state, 'Comma , or bracket } expected after object value');\n }\n\n closeParams(state);\n getToken(state);\n var node = new ObjectNode(properties); // parse index parameters\n\n node = parseAccessors(state, node);\n return node;\n }\n\n return parseNumber(state);\n }\n /**\n * parse a number\n * @return {Node} node\n * @private\n */\n\n\n function parseNumber(state) {\n var numberStr;\n\n if (state.tokenType === TOKENTYPE.NUMBER) {\n // this is a number\n numberStr = state.token;\n getToken(state);\n return new ConstantNode(numeric(numberStr, config.number));\n }\n\n return parseParentheses(state);\n }\n /**\n * parentheses\n * @return {Node} node\n * @private\n */\n\n\n function parseParentheses(state) {\n var node; // check if it is a parenthesized expression\n\n if (state.token === '(') {\n // parentheses (...)\n openParams(state);\n getToken(state);\n node = parseAssignment(state); // start again\n\n if (state.token !== ')') {\n throw createSyntaxError(state, 'Parenthesis ) expected');\n }\n\n closeParams(state);\n getToken(state);\n node = new ParenthesisNode(node);\n node = parseAccessors(state, node);\n return node;\n }\n\n return parseEnd(state);\n }\n /**\n * Evaluated when the expression is not yet ended but expected to end\n * @return {Node} res\n * @private\n */\n\n\n function parseEnd(state) {\n if (state.token === '') {\n // syntax error or unexpected end of expression\n throw createSyntaxError(state, 'Unexpected end of expression');\n } else {\n throw createSyntaxError(state, 'Value expected');\n }\n }\n /**\n * Shortcut for getting the current row value (one based)\n * Returns the line of the currently handled expression\n * @private\n */\n\n /* TODO: implement keeping track on the row number\n function row () {\n return null\n }\n */\n\n /**\n * Shortcut for getting the current col value (one based)\n * Returns the column (position) where the last state.token starts\n * @private\n */\n\n\n function col(state) {\n return state.index - state.token.length + 1;\n }\n /**\n * Create an error\n * @param {Object} state\n * @param {string} message\n * @return {SyntaxError} instantiated error\n * @private\n */\n\n\n function createSyntaxError(state, message) {\n var c = col(state);\n var error = new SyntaxError(message + ' (char ' + c + ')');\n error[\"char\"] = c;\n return error;\n }\n /**\n * Create an error\n * @param {Object} state\n * @param {string} message\n * @return {Error} instantiated error\n * @private\n */\n\n\n function createError(state, message) {\n var c = col(state);\n var error = new SyntaxError(message + ' (char ' + c + ')');\n error[\"char\"] = c;\n return error;\n }\n\n return parse;\n});","import { deepMap } from '../../utils/collection';\nimport { factory } from '../../utils/factory';\nvar name = 'compile';\nvar dependencies = ['typed', 'parse'];\nexport var createCompile = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n parse = _ref.parse;\n\n /**\n * Parse and compile an expression.\n * Returns a an object with a function `evaluate([scope])` to evaluate the\n * compiled expression.\n *\n * Syntax:\n *\n * math.compile(expr) // returns one node\n * math.compile([expr1, expr2, expr3, ...]) // returns an array with nodes\n *\n * Examples:\n *\n * const code1 = math.compile('sqrt(3^2 + 4^2)')\n * code1.evaluate() // 5\n *\n * let scope = {a: 3, b: 4}\n * const code2 = math.compile('a * b') // 12\n * code2.evaluate(scope) // 12\n * scope.a = 5\n * code2.evaluate(scope) // 20\n *\n * const nodes = math.compile(['a = 3', 'b = 4', 'a * b'])\n * nodes[2].evaluate() // 12\n *\n * See also:\n *\n * parse, evaluate\n *\n * @param {string | string[] | Array | Matrix} expr\n * The expression to be compiled\n * @return {{evaluate: Function} | Array.<{evaluate: Function}>} code\n * An object with the compiled expression\n * @throws {Error}\n */\n return typed(name, {\n string: function string(expr) {\n return parse(expr).compile();\n },\n 'Array | Matrix': function ArrayMatrix(expr) {\n return deepMap(expr, function (entry) {\n return parse(entry).compile();\n });\n }\n });\n});","import { deepMap } from '../../utils/collection';\nimport { factory } from '../../utils/factory';\nvar name = 'evaluate';\nvar dependencies = ['typed', 'parse'];\nexport var createEvaluate = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n parse = _ref.parse;\n\n /**\n * Evaluate an expression.\n *\n * Note the evaluating arbitrary expressions may involve security risks,\n * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information.\n *\n * Syntax:\n *\n * math.evaluate(expr)\n * math.evaluate(expr, scope)\n * math.evaluate([expr1, expr2, expr3, ...])\n * math.evaluate([expr1, expr2, expr3, ...], scope)\n *\n * Example:\n *\n * math.evaluate('(2+3)/4') // 1.25\n * math.evaluate('sqrt(3^2 + 4^2)') // 5\n * math.evaluate('sqrt(-4)') // 2i\n * math.evaluate(['a=3', 'b=4', 'a*b']) // [3, 4, 12]\n *\n * let scope = {a:3, b:4}\n * math.evaluate('a * b', scope) // 12\n *\n * See also:\n *\n * parse, compile\n *\n * @param {string | string[] | Matrix} expr The expression to be evaluated\n * @param {Object} [scope] Scope to read/write variables\n * @return {*} The result of the expression\n * @throws {Error}\n */\n return typed(name, {\n string: function string(expr) {\n var scope = {};\n return parse(expr).compile().evaluate(scope);\n },\n 'string, Object': function stringObject(expr, scope) {\n return parse(expr).compile().evaluate(scope);\n },\n 'Array | Matrix': function ArrayMatrix(expr) {\n var scope = {};\n return deepMap(expr, function (entry) {\n return parse(entry).compile().evaluate(scope);\n });\n },\n 'Array | Matrix, Object': function ArrayMatrixObject(expr, scope) {\n return deepMap(expr, function (entry) {\n return parse(entry).compile().evaluate(scope);\n });\n }\n });\n});","import { factory } from '../utils/factory';\nimport { extend, hasOwnProperty } from '../utils/object';\nimport { getSafeProperty, setSafeProperty } from '../utils/customs';\nvar name = 'Parser';\nvar dependencies = ['parse'];\nexport var createParserClass = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var parse = _ref.parse;\n\n /**\n * @constructor Parser\n * Parser contains methods to evaluate or parse expressions, and has a number\n * of convenience methods to get, set, and remove variables from memory. Parser\n * keeps a scope containing variables in memory, which is used for all\n * evaluations.\n *\n * Methods:\n * const result = parser.evaluate(expr) // evaluate an expression\n * const value = parser.get(name) // retrieve a variable from the parser\n * const values = parser.getAll() // retrieve all defined variables\n * parser.set(name, value) // set a variable in the parser\n * parser.remove(name) // clear a variable from the\n * // parsers scope\n * parser.clear() // clear the parsers scope\n *\n * Example usage:\n * const parser = new Parser()\n * // Note: there is a convenience method which can be used instead:\n * // const parser = new math.parser()\n *\n * // evaluate expressions\n * parser.evaluate('sqrt(3^2 + 4^2)') // 5\n * parser.evaluate('sqrt(-4)') // 2i\n * parser.evaluate('2 inch in cm') // 5.08 cm\n * parser.evaluate('cos(45 deg)') // 0.7071067811865476\n *\n * // define variables and functions\n * parser.evaluate('x = 7 / 2') // 3.5\n * parser.evaluate('x + 3') // 6.5\n * parser.evaluate('function f(x, y) = x^y') // f(x, y)\n * parser.evaluate('f(2, 3)') // 8\n *\n * // get and set variables and functions\n * const x = parser.get('x') // 7\n * const f = parser.get('f') // function\n * const g = f(3, 2) // 9\n * parser.set('h', 500)\n * const i = parser.evaluate('h / 2') // 250\n * parser.set('hello', function (name) {\n * return 'hello, ' + name + '!'\n * })\n * parser.evaluate('hello(\"user\")') // \"hello, user!\"\n *\n * // clear defined functions and variables\n * parser.clear()\n *\n */\n function Parser() {\n if (!(this instanceof Parser)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n this.scope = {};\n }\n /**\n * Attach type information\n */\n\n\n Parser.prototype.type = 'Parser';\n Parser.prototype.isParser = true;\n /**\n * Parse and evaluate the given expression\n * @param {string} expr A string containing an expression, for example \"2+3\"\n * @return {*} result The result, or undefined when the expression was empty\n * @throws {Error}\n */\n\n Parser.prototype.evaluate = function (expr) {\n // TODO: validate arguments\n return parse(expr).compile().evaluate(this.scope);\n };\n /**\n * Get a variable (a function or variable) by name from the parsers scope.\n * Returns undefined when not found\n * @param {string} name\n * @return {* | undefined} value\n */\n\n\n Parser.prototype.get = function (name) {\n // TODO: validate arguments\n return name in this.scope ? getSafeProperty(this.scope, name) : undefined;\n };\n /**\n * Get a map with all defined variables\n * @return {Object} values\n */\n\n\n Parser.prototype.getAll = function () {\n return extend({}, this.scope);\n };\n /**\n * Set a symbol (a function or variable) by name from the parsers scope.\n * @param {string} name\n * @param {* | undefined} value\n */\n\n\n Parser.prototype.set = function (name, value) {\n // TODO: validate arguments\n return setSafeProperty(this.scope, name, value);\n };\n /**\n * Remove a variable from the parsers scope\n * @param {string} name\n */\n\n\n Parser.prototype.remove = function (name) {\n // TODO: validate arguments\n delete this.scope[name];\n };\n /**\n * Clear the scope with variables and functions\n */\n\n\n Parser.prototype.clear = function () {\n for (var _name in this.scope) {\n if (hasOwnProperty(this.scope, _name)) {\n delete this.scope[_name];\n }\n }\n };\n\n return Parser;\n}, {\n isClass: true\n});","import { factory } from '../../utils/factory';\nvar name = 'parser';\nvar dependencies = ['typed', 'Parser'];\nexport var createParser = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n Parser = _ref.Parser;\n\n /**\n * Create a parser. The function creates a new `math.Parser` object.\n *\n * Syntax:\n *\n * math.parser()\n *\n * Examples:\n *\n * const parser = new math.parser()\n *\n * // evaluate expressions\n * const a = parser.evaluate('sqrt(3^2 + 4^2)') // 5\n * const b = parser.evaluate('sqrt(-4)') // 2i\n * const c = parser.evaluate('2 inch in cm') // 5.08 cm\n * const d = parser.evaluate('cos(45 deg)') // 0.7071067811865476\n *\n * // define variables and functions\n * parser.evaluate('x = 7 / 2') // 3.5\n * parser.evaluate('x + 3') // 6.5\n * parser.evaluate('function f(x, y) = x^y') // f(x, y)\n * parser.evaluate('f(2, 3)') // 8\n *\n * // get and set variables and functions\n * const x = parser.get('x') // 7\n * const f = parser.get('f') // function\n * const g = f(3, 2) // 9\n * parser.set('h', 500)\n * const i = parser.evaluate('h / 2') // 250\n * parser.set('hello', function (name) {\n * return 'hello, ' + name + '!'\n * })\n * parser.evaluate('hello(\"user\")') // \"hello, user!\"\n *\n * // clear defined functions and variables\n * parser.clear()\n *\n * See also:\n *\n * evaluate, compile, parse\n *\n * @return {Parser} Parser\n */\n return typed(name, {\n '': function _() {\n return new Parser();\n }\n });\n});","import { isHelp } from '../utils/is';\nimport { clone } from '../utils/object';\nimport { format } from '../utils/string';\nimport { factory } from '../utils/factory';\nvar name = 'Help';\nvar dependencies = ['parse'];\nexport var createHelpClass = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var parse = _ref.parse;\n\n /**\n * Documentation object\n * @param {Object} doc Object containing properties:\n * {string} name\n * {string} category\n * {string} description\n * {string[]} syntax\n * {string[]} examples\n * {string[]} seealso\n * @constructor\n */\n function Help(doc) {\n if (!(this instanceof Help)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (!doc) throw new Error('Argument \"doc\" missing');\n this.doc = doc;\n }\n /**\n * Attach type information\n */\n\n\n Help.prototype.type = 'Help';\n Help.prototype.isHelp = true;\n /**\n * Generate a string representation of the Help object\n * @return {string} Returns a string\n * @private\n */\n\n Help.prototype.toString = function () {\n var doc = this.doc || {};\n var desc = '\\n';\n\n if (doc.name) {\n desc += 'Name: ' + doc.name + '\\n\\n';\n }\n\n if (doc.category) {\n desc += 'Category: ' + doc.category + '\\n\\n';\n }\n\n if (doc.description) {\n desc += 'Description:\\n ' + doc.description + '\\n\\n';\n }\n\n if (doc.syntax) {\n desc += 'Syntax:\\n ' + doc.syntax.join('\\n ') + '\\n\\n';\n }\n\n if (doc.examples) {\n desc += 'Examples:\\n';\n var scope = {};\n\n for (var i = 0; i < doc.examples.length; i++) {\n var expr = doc.examples[i];\n desc += ' ' + expr + '\\n';\n var res = void 0;\n\n try {\n // note: res can be undefined when `expr` is an empty string\n res = parse(expr).compile().evaluate(scope);\n } catch (e) {\n res = e;\n }\n\n if (res !== undefined && !isHelp(res)) {\n desc += ' ' + format(res, {\n precision: 14\n }) + '\\n';\n }\n }\n\n desc += '\\n';\n }\n\n if (doc.seealso && doc.seealso.length) {\n desc += 'See also: ' + doc.seealso.join(', ') + '\\n';\n }\n\n return desc;\n };\n /**\n * Export the help object to JSON\n */\n\n\n Help.prototype.toJSON = function () {\n var obj = clone(this.doc);\n obj.mathjs = 'Help';\n return obj;\n };\n /**\n * Instantiate a Help object from a JSON object\n * @param {Object} json\n * @returns {Help} Returns a new Help object\n */\n\n\n Help.fromJSON = function (json) {\n var doc = {};\n Object.keys(json).filter(function (prop) {\n return prop !== 'mathjs';\n }).forEach(function (prop) {\n doc[prop] = json[prop];\n });\n return new Help(doc);\n };\n /**\n * Returns a string representation of the Help object\n */\n\n\n Help.prototype.valueOf = Help.prototype.toString;\n return Help;\n}, {\n isClass: true\n});","import { isChain } from '../../utils/is';\nimport { format } from '../../utils/string';\nimport { hasOwnProperty, lazy } from '../../utils/object';\nimport { factory } from '../../utils/factory';\nvar name = 'Chain';\nvar dependencies = ['?on', 'math'];\nexport var createChainClass = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var on = _ref.on,\n math = _ref.math;\n\n /**\n * @constructor Chain\n * Wrap any value in a chain, allowing to perform chained operations on\n * the value.\n *\n * All methods available in the math.js library can be called upon the chain,\n * and then will be evaluated with the value itself as first argument.\n * The chain can be closed by executing chain.done(), which will return\n * the final value.\n *\n * The Chain has a number of special functions:\n * - done() Finalize the chained operation and return the\n * chain's value.\n * - valueOf() The same as done()\n * - toString() Returns a string representation of the chain's value.\n *\n * @param {*} [value]\n */\n function Chain(value) {\n if (!(this instanceof Chain)) {\n throw new SyntaxError('Constructor must be called with the new operator');\n }\n\n if (isChain(value)) {\n this.value = value.value;\n } else {\n this.value = value;\n }\n }\n /**\n * Attach type information\n */\n\n\n Chain.prototype.type = 'Chain';\n Chain.prototype.isChain = true;\n /**\n * Close the chain. Returns the final value.\n * Does the same as method valueOf()\n * @returns {*} value\n */\n\n Chain.prototype.done = function () {\n return this.value;\n };\n /**\n * Close the chain. Returns the final value.\n * Does the same as method done()\n * @returns {*} value\n */\n\n\n Chain.prototype.valueOf = function () {\n return this.value;\n };\n /**\n * Get a string representation of the value in the chain\n * @returns {string}\n */\n\n\n Chain.prototype.toString = function () {\n return format(this.value);\n };\n /**\n * Get a JSON representation of the chain\n * @returns {Object}\n */\n\n\n Chain.prototype.toJSON = function () {\n return {\n mathjs: 'Chain',\n value: this.value\n };\n };\n /**\n * Instantiate a Chain from its JSON representation\n * @param {Object} json An object structured like\n * `{\"mathjs\": \"Chain\", value: ...}`,\n * where mathjs is optional\n * @returns {Chain}\n */\n\n\n Chain.fromJSON = function (json) {\n return new Chain(json.value);\n };\n /**\n * Create a proxy method for the chain\n * @param {string} name\n * @param {Function} fn The function to be proxied\n * If fn is no function, it is silently ignored.\n * @private\n */\n\n\n function createProxy(name, fn) {\n if (typeof fn === 'function') {\n Chain.prototype[name] = chainify(fn);\n }\n }\n /**\n * Create a proxy method for the chain\n * @param {string} name\n * @param {function} resolver The function resolving with the\n * function to be proxied\n * @private\n */\n\n\n function createLazyProxy(name, resolver) {\n lazy(Chain.prototype, name, function outerResolver() {\n var fn = resolver();\n\n if (typeof fn === 'function') {\n return chainify(fn);\n }\n\n return undefined; // if not a function, ignore\n });\n }\n /**\n * Make a function chainable\n * @param {function} fn\n * @return {Function} chain function\n * @private\n */\n\n\n function chainify(fn) {\n return function () {\n var args = [this.value]; // `this` will be the context of a Chain instance\n\n for (var i = 0; i < arguments.length; i++) {\n args[i + 1] = arguments[i];\n }\n\n return new Chain(fn.apply(fn, args));\n };\n }\n /**\n * Create a proxy for a single method, or an object with multiple methods.\n * Example usage:\n *\n * Chain.createProxy('add', function add (x, y) {...})\n * Chain.createProxy({\n * add: function add (x, y) {...},\n * subtract: function subtract (x, y) {...}\n * }\n *\n * @param {string | Object} arg0 A name (string), or an object with\n * functions\n * @param {*} [arg1] A function, when arg0 is a name\n */\n\n\n Chain.createProxy = function (arg0, arg1) {\n if (typeof arg0 === 'string') {\n // createProxy(name, value)\n createProxy(arg0, arg1);\n } else {\n var _loop = function _loop(_name) {\n if (hasOwnProperty(arg0, _name) && excludedNames[_name] === undefined) {\n createLazyProxy(_name, function () {\n return arg0[_name];\n });\n }\n };\n\n // createProxy(values)\n for (var _name in arg0) {\n _loop(_name);\n }\n }\n };\n\n var excludedNames = {\n expression: true,\n docs: true,\n type: true,\n classes: true,\n json: true,\n error: true,\n isChain: true // conflicts with the property isChain of a Chain instance\n\n }; // create proxy for everything that is in math.js\n\n Chain.createProxy(math); // register on the import event, automatically add a proxy for every imported function.\n\n if (on) {\n on('import', function (name, resolver, path) {\n if (!path) {\n // an imported function (not a data type or something special)\n createLazyProxy(name, resolver);\n }\n });\n }\n\n return Chain;\n}, {\n isClass: true\n});","export var bignumberDocs = {\n name: 'bignumber',\n category: 'Construction',\n syntax: ['bignumber(x)'],\n description: 'Create a big number from a number or string.',\n examples: ['0.1 + 0.2', 'bignumber(0.1) + bignumber(0.2)', 'bignumber(\"7.2\")', 'bignumber(\"7.2e500\")', 'bignumber([0.1, 0.2, 0.3])'],\n seealso: ['boolean', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};","export var typeOfDocs = {\n name: 'typeOf',\n category: 'Utils',\n syntax: ['typeOf(x)'],\n description: 'Get the type of a variable.',\n examples: ['typeOf(3.5)', 'typeOf(2 - 4i)', 'typeOf(45 deg)', 'typeOf(\"hello world\")'],\n seealso: ['getMatrixDataType']\n};","export var isZeroDocs = {\n name: 'isZero',\n category: 'Utils',\n syntax: ['isZero(x)'],\n description: 'Test whether a value is zero.',\n examples: ['isZero(2)', 'isZero(0)', 'isZero(-4)', 'isZero([3, 0, -2, 0])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isPositive']\n};","export var isPrimeDocs = {\n name: 'isPrime',\n category: 'Utils',\n syntax: ['isPrime(x)'],\n description: 'Test whether a value is prime: has no divisors other than itself and one.',\n examples: ['isPrime(3)', 'isPrime(-2)', 'isPrime([2, 17, 100])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isZero']\n};","export var isPositiveDocs = {\n name: 'isPositive',\n category: 'Utils',\n syntax: ['isPositive(x)'],\n description: 'Test whether a value is positive: larger than zero.',\n examples: ['isPositive(2)', 'isPositive(0)', 'isPositive(-4)', 'isPositive([3, 0.5, -2])'],\n seealso: ['isInteger', 'isNumeric', 'isNegative', 'isZero']\n};","export var isNumericDocs = {\n name: 'isNumeric',\n category: 'Utils',\n syntax: ['isNumeric(x)'],\n description: 'Test whether a value is a numeric value. ' + 'Returns true when the input is a number, BigNumber, Fraction, or boolean.',\n examples: ['isNumeric(2)', 'isNumeric(\"2\")', 'hasNumericValue(\"2\")', 'isNumeric(0)', 'isNumeric(bignumber(500))', 'isNumeric(fraction(0.125))', 'isNumeric(2 + 3i)', 'isNumeric([2.3, \"foo\", false])'],\n seealso: ['isInteger', 'isZero', 'isNegative', 'isPositive', 'isNaN', 'hasNumericValue']\n};","export var hasNumericValueDocs = {\n name: 'hasNumericValue',\n category: 'Utils',\n syntax: ['hasNumericValue(x)'],\n description: 'Test whether a value is an numeric value. ' + 'In case of a string, true is returned if the string contains a numeric value.',\n examples: ['hasNumericValue(2)', 'hasNumericValue(\"2\")', 'isNumeric(\"2\")', 'hasNumericValue(0)', 'hasNumericValue(bignumber(500))', 'hasNumericValue(fraction(0.125))', 'hasNumericValue(2 + 3i)', 'hasNumericValue([2.3, \"foo\", false])'],\n seealso: ['isInteger', 'isZero', 'isNegative', 'isPositive', 'isNaN', 'isNumeric']\n};","export var isNegativeDocs = {\n name: 'isNegative',\n category: 'Utils',\n syntax: ['isNegative(x)'],\n description: 'Test whether a value is negative: smaller than zero.',\n examples: ['isNegative(2)', 'isNegative(0)', 'isNegative(-4)', 'isNegative([3, 0.5, -2])'],\n seealso: ['isInteger', 'isNumeric', 'isPositive', 'isZero']\n};","export var isIntegerDocs = {\n name: 'isInteger',\n category: 'Utils',\n syntax: ['isInteger(x)'],\n description: 'Test whether a value is an integer number.',\n examples: ['isInteger(2)', 'isInteger(3.5)', 'isInteger([3, 0.5, -2])'],\n seealso: ['isNegative', 'isNumeric', 'isPositive', 'isZero']\n};","export var isNaNDocs = {\n name: 'isNaN',\n category: 'Utils',\n syntax: ['isNaN(x)'],\n description: 'Test whether a value is NaN (not a number)',\n examples: ['isNaN(2)', 'isNaN(0 / 0)', 'isNaN(NaN)', 'isNaN(Infinity)'],\n seealso: ['isNegative', 'isNumeric', 'isPositive', 'isZero']\n};","export var formatDocs = {\n name: 'format',\n category: 'Utils',\n syntax: ['format(value)', 'format(value, precision)'],\n description: 'Format a value of any type as string.',\n examples: ['format(2.3)', 'format(3 - 4i)', 'format([])', 'format(pi, 3)'],\n seealso: ['print']\n};","export var binDocs = {\n name: 'bin',\n category: 'Utils',\n syntax: ['bin(value)'],\n description: 'Format a number as binary',\n examples: ['bin(2)'],\n seealso: ['oct', 'hex']\n};","export var octDocs = {\n name: 'oct',\n category: 'Utils',\n syntax: ['oct(value)'],\n description: 'Format a number as octal',\n examples: ['oct(56)'],\n seealso: ['bin', 'hex']\n};","export var hexDocs = {\n name: 'hex',\n category: 'Utils',\n syntax: ['hex(value)'],\n description: 'Format a number as hexadecimal',\n examples: ['hex(240)'],\n seealso: ['bin', 'oct']\n};","export var cloneDocs = {\n name: 'clone',\n category: 'Utils',\n syntax: ['clone(x)'],\n description: 'Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices',\n examples: ['clone(3.5)', 'clone(2 - 4i)', 'clone(45 deg)', 'clone([1, 2; 3, 4])', 'clone(\"hello world\")'],\n seealso: []\n};","export var toDocs = {\n name: 'to',\n category: 'Units',\n syntax: ['x to unit', 'to(x, unit)'],\n description: 'Change the unit of a value.',\n examples: ['5 inch to cm', '3.2kg to g', '16 bytes in bits'],\n seealso: []\n};","export var tanhDocs = {\n name: 'tanh',\n category: 'Trigonometry',\n syntax: ['tanh(x)'],\n description: 'Compute the hyperbolic tangent of x in radians.',\n examples: ['tanh(0.5)', 'sinh(0.5) / cosh(0.5)'],\n seealso: ['sinh', 'cosh']\n};","export var tanDocs = {\n name: 'tan',\n category: 'Trigonometry',\n syntax: ['tan(x)'],\n description: 'Compute the tangent of x in radians.',\n examples: ['tan(0.5)', 'sin(0.5) / cos(0.5)', 'tan(pi / 4)', 'tan(45 deg)'],\n seealso: ['atan', 'sin', 'cos']\n};","export var sinhDocs = {\n name: 'sinh',\n category: 'Trigonometry',\n syntax: ['sinh(x)'],\n description: 'Compute the hyperbolic sine of x in radians.',\n examples: ['sinh(0.5)'],\n seealso: ['cosh', 'tanh']\n};","export var sechDocs = {\n name: 'sech',\n category: 'Trigonometry',\n syntax: ['sech(x)'],\n description: 'Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)',\n examples: ['sech(2)', '1 / cosh(2)'],\n seealso: ['coth', 'csch', 'cosh']\n};","export var secDocs = {\n name: 'sec',\n category: 'Trigonometry',\n syntax: ['sec(x)'],\n description: 'Compute the secant of x in radians. Defined as 1/cos(x)',\n examples: ['sec(2)', '1 / cos(2)'],\n seealso: ['cot', 'csc', 'cos']\n};","export var cschDocs = {\n name: 'csch',\n category: 'Trigonometry',\n syntax: ['csch(x)'],\n description: 'Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)',\n examples: ['csch(2)', '1 / sinh(2)'],\n seealso: ['sech', 'coth', 'sinh']\n};","export var cscDocs = {\n name: 'csc',\n category: 'Trigonometry',\n syntax: ['csc(x)'],\n description: 'Compute the cosecant of x in radians. Defined as 1/sin(x)',\n examples: ['csc(2)', '1 / sin(2)'],\n seealso: ['sec', 'cot', 'sin']\n};","export var cothDocs = {\n name: 'coth',\n category: 'Trigonometry',\n syntax: ['coth(x)'],\n description: 'Compute the hyperbolic cotangent of x in radians.',\n examples: ['coth(2)', '1 / tanh(2)'],\n seealso: ['sech', 'csch', 'tanh']\n};","export var cotDocs = {\n name: 'cot',\n category: 'Trigonometry',\n syntax: ['cot(x)'],\n description: 'Compute the cotangent of x in radians. Defined as 1/tan(x)',\n examples: ['cot(2)', '1 / tan(2)'],\n seealso: ['sec', 'csc', 'tan']\n};","export var coshDocs = {\n name: 'cosh',\n category: 'Trigonometry',\n syntax: ['cosh(x)'],\n description: 'Compute the hyperbolic cosine of x in radians.',\n examples: ['cosh(0.5)'],\n seealso: ['sinh', 'tanh', 'coth']\n};","export var cosDocs = {\n name: 'cos',\n category: 'Trigonometry',\n syntax: ['cos(x)'],\n description: 'Compute the cosine of x in radians.',\n examples: ['cos(2)', 'cos(pi / 4) ^ 2', 'cos(180 deg)', 'cos(60 deg)', 'sin(0.2)^2 + cos(0.2)^2'],\n seealso: ['acos', 'sin', 'tan']\n};","export var atan2Docs = {\n name: 'atan2',\n category: 'Trigonometry',\n syntax: ['atan2(y, x)'],\n description: 'Computes the principal value of the arc tangent of y/x in radians.',\n examples: ['atan2(2, 2) / pi', 'angle = 60 deg in rad', 'x = cos(angle)', 'y = sin(angle)', 'atan2(y, x)'],\n seealso: ['sin', 'cos', 'tan']\n};","export var atanhDocs = {\n name: 'atanh',\n category: 'Trigonometry',\n syntax: ['atanh(x)'],\n description: 'Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.',\n examples: ['atanh(0.5)'],\n seealso: ['acosh', 'asinh']\n};","export var atanDocs = {\n name: 'atan',\n category: 'Trigonometry',\n syntax: ['atan(x)'],\n description: 'Compute the inverse tangent of a value in radians.',\n examples: ['atan(0.5)', 'atan(tan(0.5))'],\n seealso: ['tan', 'acos', 'asin']\n};","export var asinhDocs = {\n name: 'asinh',\n category: 'Trigonometry',\n syntax: ['asinh(x)'],\n description: 'Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.',\n examples: ['asinh(0.5)'],\n seealso: ['acosh', 'atanh']\n};","export var asinDocs = {\n name: 'asin',\n category: 'Trigonometry',\n syntax: ['asin(x)'],\n description: 'Compute the inverse sine of a value in radians.',\n examples: ['asin(0.5)', 'asin(sin(0.5))'],\n seealso: ['sin', 'acos', 'atan']\n};","export var asechDocs = {\n name: 'asech',\n category: 'Trigonometry',\n syntax: ['asech(x)'],\n description: 'Calculate the inverse secant of a value.',\n examples: ['asech(0.5)'],\n seealso: ['acsch', 'acoth']\n};","export var asecDocs = {\n name: 'asec',\n category: 'Trigonometry',\n syntax: ['asec(x)'],\n description: 'Calculate the inverse secant of a value.',\n examples: ['asec(0.5)', 'asec(sec(0.5))', 'asec(2)'],\n seealso: ['acos', 'acot', 'acsc']\n};","export var acschDocs = {\n name: 'acsch',\n category: 'Trigonometry',\n syntax: ['acsch(x)'],\n description: 'Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.',\n examples: ['acsch(0.5)'],\n seealso: ['asech', 'acoth']\n};","export var acscDocs = {\n name: 'acsc',\n category: 'Trigonometry',\n syntax: ['acsc(x)'],\n description: 'Calculate the inverse cotangent of a value.',\n examples: ['acsc(2)', 'acsc(csc(0.5))', 'acsc(0.5)'],\n seealso: ['csc', 'asin', 'asec']\n};","export var acothDocs = {\n name: 'acoth',\n category: 'Trigonometry',\n syntax: ['acoth(x)'],\n description: 'Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.',\n examples: ['acoth(2)', 'acoth(0.5)'],\n seealso: ['acsch', 'asech']\n};","export var acotDocs = {\n name: 'acot',\n category: 'Trigonometry',\n syntax: ['acot(x)'],\n description: 'Calculate the inverse cotangent of a value.',\n examples: ['acot(0.5)', 'acot(cot(0.5))', 'acot(2)'],\n seealso: ['cot', 'atan']\n};","export var acoshDocs = {\n name: 'acosh',\n category: 'Trigonometry',\n syntax: ['acosh(x)'],\n description: 'Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.',\n examples: ['acosh(1.5)'],\n seealso: ['cosh', 'asinh', 'atanh']\n};","export var acosDocs = {\n name: 'acos',\n category: 'Trigonometry',\n syntax: ['acos(x)'],\n description: 'Compute the inverse cosine of a value in radians.',\n examples: ['acos(0.5)', 'acos(cos(2.3))'],\n seealso: ['cos', 'atan', 'asin']\n};","export var sumDocs = {\n name: 'sum',\n category: 'Statistics',\n syntax: ['sum(a, b, c, ...)', 'sum(A)'],\n description: 'Compute the sum of all values.',\n examples: ['sum(2, 3, 4, 1)', 'sum([2, 3, 4, 1])', 'sum([2, 5; 4, 3])'],\n seealso: ['max', 'mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};","export var stdDocs = {\n name: 'std',\n category: 'Statistics',\n syntax: ['std(a, b, c, ...)', 'std(A)', 'std(A, normalization)'],\n description: 'Compute the standard deviation of all values, defined as std(A) = sqrt(variance(A)). Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',\n examples: ['std(2, 4, 6)', 'std([2, 4, 6, 8])', 'std([2, 4, 6, 8], \"uncorrected\")', 'std([2, 4, 6, 8], \"biased\")', 'std([1, 2, 3; 4, 5, 6])'],\n seealso: ['max', 'mean', 'min', 'median', 'prod', 'sum', 'variance']\n};","export var quantileSeqDocs = {\n name: 'quantileSeq',\n category: 'Statistics',\n syntax: ['quantileSeq(A, prob[, sorted])', 'quantileSeq(A, [prob1, prob2, ...][, sorted])', 'quantileSeq(A, N[, sorted])'],\n description: 'Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probablity are: Number, BigNumber. \\n\\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.',\n examples: ['quantileSeq([3, -1, 5, 7], 0.5)', 'quantileSeq([3, -1, 5, 7], [1/3, 2/3])', 'quantileSeq([3, -1, 5, 7], 2)', 'quantileSeq([-1, 3, 5, 7], 0.5, true)'],\n seealso: ['mean', 'median', 'min', 'max', 'prod', 'std', 'sum', 'variance']\n};","export var prodDocs = {\n name: 'prod',\n category: 'Statistics',\n syntax: ['prod(a, b, c, ...)', 'prod(A)'],\n description: 'Compute the product of all values.',\n examples: ['prod(2, 3, 4)', 'prod([2, 3, 4])', 'prod([2, 5; 4, 3])'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'std', 'sum', 'variance']\n};","export var modeDocs = {\n name: 'mode',\n category: 'Statistics',\n syntax: ['mode(a, b, c, ...)', 'mode(A)', 'mode(A, a, b, B, c, ...)'],\n description: 'Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.',\n examples: ['mode(2, 1, 4, 3, 1)', 'mode([1, 2.7, 3.2, 4, 2.7])', 'mode(1, 4, 6, 1, 6)'],\n seealso: ['max', 'mean', 'min', 'median', 'prod', 'std', 'sum', 'variance']\n};","export var minDocs = {\n name: 'min',\n category: 'Statistics',\n syntax: ['min(a, b, c, ...)', 'min(A)', 'min(A, dim)'],\n description: 'Compute the minimum value of a list of values.',\n examples: ['min(2, 3, 4, 1)', 'min([2, 3, 4, 1])', 'min([2, 5; 4, 3])', 'min([2, 5; 4, 3], 1)', 'min([2, 5; 4, 3], 2)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)'],\n seealso: ['max', 'mean', 'median', 'prod', 'std', 'sum', 'variance']\n};","export var medianDocs = {\n name: 'median',\n category: 'Statistics',\n syntax: ['median(a, b, c, ...)', 'median(A)'],\n description: 'Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.',\n examples: ['median(5, 2, 7)', 'median([3, -1, 5, 7])'],\n seealso: ['max', 'mean', 'min', 'prod', 'std', 'sum', 'variance', 'quantileSeq']\n};","export var meanDocs = {\n name: 'mean',\n category: 'Statistics',\n syntax: ['mean(a, b, c, ...)', 'mean(A)', 'mean(A, dim)'],\n description: 'Compute the arithmetic mean of a list of values.',\n examples: ['mean(2, 3, 4, 1)', 'mean([2, 3, 4, 1])', 'mean([2, 5; 4, 3])', 'mean([2, 5; 4, 3], 1)', 'mean([2, 5; 4, 3], 2)', 'mean([1.0, 2.7, 3.2, 4.0])'],\n seealso: ['max', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};","export var maxDocs = {\n name: 'max',\n category: 'Statistics',\n syntax: ['max(a, b, c, ...)', 'max(A)', 'max(A, dim)'],\n description: 'Compute the maximum value of a list of values.',\n examples: ['max(2, 3, 4, 1)', 'max([2, 3, 4, 1])', 'max([2, 5; 4, 3])', 'max([2, 5; 4, 3], 1)', 'max([2, 5; 4, 3], 2)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)'],\n seealso: ['mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']\n};","export var madDocs = {\n name: 'mad',\n category: 'Statistics',\n syntax: ['mad(a, b, c, ...)', 'mad(A)'],\n description: 'Compute the median absolute deviation of a matrix or a list with values. The median absolute deviation is defined as the median of the absolute deviations from the median.',\n examples: ['mad(10, 20, 30)', 'mad([1, 2, 3])'],\n seealso: ['mean', 'median', 'std', 'abs']\n};","export var erfDocs = {\n name: 'erf',\n category: 'Special',\n syntax: ['erf(x)'],\n description: 'Compute the erf function of a value using a rational Chebyshev approximations for different intervals of x',\n examples: ['erf(0.2)', 'erf(-0.5)', 'erf(4)'],\n seealso: []\n};","export var setUnionDocs = {\n name: 'setUnion',\n category: 'Set',\n syntax: ['setUnion(set1, set2)'],\n description: 'Create the union of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setUnion([1, 2, 3, 4], [3, 4, 5, 6])', 'setUnion([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setIntersect', 'setDifference']\n};","export var setSymDifferenceDocs = {\n name: 'setSymDifference',\n category: 'Set',\n syntax: ['setSymDifference(set1, set2)'],\n description: 'Create the symmetric difference of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setSymDifference([1, 2, 3, 4], [3, 4, 5, 6])', 'setSymDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};","export var setSizeDocs = {\n name: 'setSize',\n category: 'Set',\n syntax: ['setSize(set)', 'setSize(set, unique)'],\n description: 'Count the number of elements of a (multi)set. When the second parameter \"unique\" is true, count only the unique values. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setSize([1, 2, 2, 4])', 'setSize([1, 2, 2, 4], true)'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};","export var setPowersetDocs = {\n name: 'setPowerset',\n category: 'Set',\n syntax: ['setPowerset(set)'],\n description: 'Create the powerset of a (multi)set: the powerset contains very possible subsets of a (multi)set. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setPowerset([1, 2, 3])'],\n seealso: ['setCartesian']\n};","export var setMultiplicityDocs = {\n name: 'setMultiplicity',\n category: 'Set',\n syntax: ['setMultiplicity(element, set)'],\n description: 'Count the multiplicity of an element in a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setMultiplicity(1, [1, 2, 2, 4])', 'setMultiplicity(2, [1, 2, 2, 4])'],\n seealso: ['setDistinct', 'setSize']\n};","export var setIsSubsetDocs = {\n name: 'setIsSubset',\n category: 'Set',\n syntax: ['setIsSubset(set1, set2)'],\n description: 'Check whether a (multi)set is a subset of another (multi)set: every element of set1 is the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setIsSubset([1, 2], [3, 4, 5, 6])', 'setIsSubset([3, 4], [3, 4, 5, 6])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference']\n};","export var setIntersectDocs = {\n name: 'setIntersect',\n category: 'Set',\n syntax: ['setIntersect(set1, set2)'],\n description: 'Create the intersection of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setIntersect([1, 2, 3, 4], [3, 4, 5, 6])', 'setIntersect([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setDifference']\n};","export var setDistinctDocs = {\n name: 'setDistinct',\n category: 'Set',\n syntax: ['setDistinct(set)'],\n description: 'Collect the distinct elements of a multiset. A multi-dimension array will be converted to a single-dimension array before the operation.',\n examples: ['setDistinct([1, 1, 1, 2, 2, 3])'],\n seealso: ['setMultiplicity']\n};","export var setDifferenceDocs = {\n name: 'setDifference',\n category: 'Set',\n syntax: ['setDifference(set1, set2)'],\n description: 'Create the difference of two (multi)sets: every element of set1, that is not the element of set2. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setDifference([1, 2, 3, 4], [3, 4, 5, 6])', 'setDifference([[1, 2], [3, 4]], [[3, 4], [5, 6]])'],\n seealso: ['setUnion', 'setIntersect', 'setSymDifference']\n};","export var setCartesianDocs = {\n name: 'setCartesian',\n category: 'Set',\n syntax: ['setCartesian(set1, set2)'],\n description: 'Create the cartesian product of two (multi)sets. Multi-dimension arrays will be converted to single-dimension arrays before the operation.',\n examples: ['setCartesian([1, 2], [3, 4])'],\n seealso: ['setUnion', 'setIntersect', 'setDifference', 'setPowerset']\n};","export var unequalDocs = {\n name: 'unequal',\n category: 'Relational',\n syntax: ['x != y', 'unequal(x, y)'],\n description: 'Check unequality of two values. Returns true if the values are unequal, and false if they are equal.',\n examples: ['2+2 != 3', '2+2 != 4', 'a = 3.2', 'b = 6-2.8', 'a != b', '50cm != 0.5m', '5 cm != 2 inch'],\n seealso: ['equal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare', 'deepEqual']\n};","export var smallerEqDocs = {\n name: 'smallerEq',\n category: 'Relational',\n syntax: ['x <= y', 'smallerEq(x, y)'],\n description: 'Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.',\n examples: ['2 <= 1+1', '2 < 1+1', 'a = 3.2', 'b = 6-2.8', '(a <= b)'],\n seealso: ['equal', 'unequal', 'larger', 'smaller', 'largerEq', 'compare']\n};","export var smallerDocs = {\n name: 'smaller',\n category: 'Relational',\n syntax: ['x < y', 'smaller(x, y)'],\n description: 'Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.',\n examples: ['2 < 3', '5 < 2*2', 'a = 3.3', 'b = 6-2.8', '(a < b)', '5 cm < 2 inch'],\n seealso: ['equal', 'unequal', 'larger', 'smallerEq', 'largerEq', 'compare']\n};","export var largerEqDocs = {\n name: 'largerEq',\n category: 'Relational',\n syntax: ['x >= y', 'largerEq(x, y)'],\n description: 'Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.',\n examples: ['2 >= 1+1', '2 > 1+1', 'a = 3.2', 'b = 6-2.8', '(a >= b)'],\n seealso: ['equal', 'unequal', 'smallerEq', 'smaller', 'compare']\n};","export var largerDocs = {\n name: 'larger',\n category: 'Relational',\n syntax: ['x > y', 'larger(x, y)'],\n description: 'Check if value x is larger than y. Returns true if x is larger than y, and false if not.',\n examples: ['2 > 3', '5 > 2*2', 'a = 3.3', 'b = 6-2.8', '(a > b)', '(b < a)', '5 cm > 2 inch'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compare']\n};","export var equalTextDocs = {\n name: 'equalText',\n category: 'Relational',\n syntax: ['equalText(x, y)'],\n description: 'Check equality of two strings. Comparison is case sensitive. Returns true if the values are equal, and false if not.',\n examples: ['equalText(\"Hello\", \"Hello\")', 'equalText(\"a\", \"A\")', 'equal(\"2e3\", \"2000\")', 'equalText(\"2e3\", \"2000\")', 'equalText(\"B\", [\"A\", \"B\", \"C\"])'],\n seealso: ['compare', 'compareNatural', 'compareText', 'equal']\n};","export var equalDocs = {\n name: 'equal',\n category: 'Relational',\n syntax: ['x == y', 'equal(x, y)'],\n description: 'Check equality of two values. Returns true if the values are equal, and false if not.',\n examples: ['2+2 == 3', '2+2 == 4', 'a = 3.2', 'b = 6-2.8', 'a == b', '50cm == 0.5m'],\n seealso: ['unequal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare', 'deepEqual', 'equalText']\n};","export var deepEqualDocs = {\n name: 'deepEqual',\n category: 'Relational',\n syntax: ['deepEqual(x, y)'],\n description: 'Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.',\n examples: ['deepEqual([1,3,4], [1,3,4])', 'deepEqual([1,3,4], [1,3])'],\n seealso: ['equal', 'unequal', 'smaller', 'larger', 'smallerEq', 'largerEq', 'compare']\n};","export var compareTextDocs = {\n name: 'compareText',\n category: 'Relational',\n syntax: ['compareText(x, y)'],\n description: 'Compare two strings lexically. Comparison is case sensitive. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compareText(\"B\", \"A\")', 'compareText(\"A\", \"B\")', 'compareText(\"A\", \"A\")', 'compareText(\"2\", \"10\")', 'compare(\"2\", \"10\")', 'compare(2, 10)', 'compareNatural(\"2\", \"10\")', 'compareText(\"B\", [\"A\", \"B\", \"C\"])'],\n seealso: ['compare', 'compareNatural']\n};","export var compareNaturalDocs = {\n name: 'compareNatural',\n category: 'Relational',\n syntax: ['compareNatural(x, y)'],\n description: 'Compare two values of any type in a deterministic, natural way. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compareNatural(2, 3)', 'compareNatural(3, 2)', 'compareNatural(2, 2)', 'compareNatural(5cm, 40mm)', 'compareNatural(\"2\", \"10\")', 'compareNatural(2 + 3i, 2 + 4i)', 'compareNatural([1, 2, 4], [1, 2, 3])', 'compareNatural([1, 5], [1, 2, 3])', 'compareNatural([1, 2], [1, 2])', 'compareNatural({a: 2}, {a: 4})'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compare', 'compareText']\n};","export var compareDocs = {\n name: 'compare',\n category: 'Relational',\n syntax: ['compare(x, y)'],\n description: 'Compare two values. ' + 'Returns 1 when x > y, -1 when x < y, and 0 when x == y.',\n examples: ['compare(2, 3)', 'compare(3, 2)', 'compare(2, 2)', 'compare(5cm, 40mm)', 'compare(2, [1, 2, 3])'],\n seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compareNatural', 'compareText']\n};","export var randomIntDocs = {\n name: 'randomInt',\n category: 'Probability',\n syntax: ['randomInt(max)', 'randomInt(min, max)', 'randomInt(size)', 'randomInt(size, max)', 'randomInt(size, min, max)'],\n description: 'Return a random integer number',\n examples: ['randomInt(10, 20)', 'randomInt([2, 3], 10)'],\n seealso: ['pickRandom', 'random']\n};","export var randomDocs = {\n name: 'random',\n category: 'Probability',\n syntax: ['random()', 'random(max)', 'random(min, max)', 'random(size)', 'random(size, max)', 'random(size, min, max)'],\n description: 'Return a random number.',\n examples: ['random()', 'random(10, 20)', 'random([2, 3])'],\n seealso: ['pickRandom', 'randomInt']\n};","export var pickRandomDocs = {\n name: 'pickRandom',\n category: 'Probability',\n syntax: ['pickRandom(array)', 'pickRandom(array, number)', 'pickRandom(array, weights)', 'pickRandom(array, number, weights)', 'pickRandom(array, weights, number)'],\n description: 'Pick a random entry from a given array.',\n examples: ['pickRandom(0:10)', 'pickRandom([1, 3, 1, 6])', 'pickRandom([1, 3, 1, 6], 2)', 'pickRandom([1, 3, 1, 6], [2, 3, 2, 1])', 'pickRandom([1, 3, 1, 6], 2, [2, 3, 2, 1])', 'pickRandom([1, 3, 1, 6], [2, 3, 2, 1], 2)'],\n seealso: ['random', 'randomInt']\n};","export var permutationsDocs = {\n name: 'permutations',\n category: 'Probability',\n syntax: ['permutations(n)', 'permutations(n, k)'],\n description: 'Compute the number of permutations of n items taken k at a time',\n examples: ['permutations(5)', 'permutations(5, 3)'],\n seealso: ['combinations', 'combinationsWithRep', 'factorial']\n};","export var multinomialDocs = {\n name: 'multinomial',\n category: 'Probability',\n syntax: ['multinomial(A)'],\n description: 'Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai > 0.',\n examples: ['multinomial([1, 2, 1])'],\n seealso: ['combinations', 'factorial']\n};","export var kldivergenceDocs = {\n name: 'kldivergence',\n category: 'Probability',\n syntax: ['kldivergence(x, y)'],\n description: 'Calculate the Kullback-Leibler (KL) divergence between two distributions.',\n examples: ['kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])'],\n seealso: []\n};","export var gammaDocs = {\n name: 'gamma',\n category: 'Probability',\n syntax: ['gamma(n)'],\n description: 'Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.',\n examples: ['gamma(4)', '3!', 'gamma(1/2)', 'sqrt(pi)'],\n seealso: ['factorial']\n};","export var factorialDocs = {\n name: 'factorial',\n category: 'Probability',\n syntax: ['n!', 'factorial(n)'],\n description: 'Compute the factorial of a value',\n examples: ['5!', '5 * 4 * 3 * 2 * 1', '3!'],\n seealso: ['combinations', 'combinationsWithRep', 'permutations', 'gamma']\n};","export var combinationsDocs = {\n name: 'combinations',\n category: 'Probability',\n syntax: ['combinations(n, k)'],\n description: 'Compute the number of combinations of n items taken k at a time',\n examples: ['combinations(7, 5)'],\n seealso: ['combinationsWithRep', 'permutations', 'factorial']\n};","export var combinationsWithRepDocs = {\n name: 'combinationsWithRep',\n category: 'Probability',\n syntax: ['combinationsWithRep(n, k)'],\n description: 'Compute the number of combinations of n items taken k at a time with replacements.',\n examples: ['combinationsWithRep(7, 5)'],\n seealso: ['combinations', 'permutations', 'factorial']\n};","export var zerosDocs = {\n name: 'zeros',\n category: 'Matrix',\n syntax: ['zeros(m)', 'zeros(m, n)', 'zeros(m, n, p, ...)', 'zeros([m])', 'zeros([m, n])', 'zeros([m, n, p, ...])'],\n description: 'Create a matrix containing zeros.',\n examples: ['zeros(3)', 'zeros(3, 5)', 'a = [1, 2, 3; 4, 5, 6]', 'zeros(size(a))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose']\n};","export var transposeDocs = {\n name: 'transpose',\n category: 'Matrix',\n syntax: ['x\\'', 'transpose(x)'],\n description: 'Transpose a matrix',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a\\'', 'transpose(a)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros']\n};","export var traceDocs = {\n name: 'trace',\n category: 'Matrix',\n syntax: ['trace(A)'],\n description: 'Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.',\n examples: ['A = [1, 2, 3; -1, 2, 3; 2, 0, 3]', 'trace(A)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros']\n};","export var subsetDocs = {\n name: 'subset',\n category: 'Matrix',\n syntax: ['value(index)', 'value(index) = replacement', 'subset(value, [index])', 'subset(value, [index], replacement)'],\n description: 'Get or set a subset of a matrix or string. ' + 'Indexes are one-based. ' + 'Both the ranges lower-bound and upper-bound are included.',\n examples: ['d = [1, 2; 3, 4]', 'e = []', 'e[1, 1:2] = [5, 6]', 'e[2, :] = [7, 8]', 'f = d * e', 'f[2, 1]', 'f[:, 1]'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'trace', 'transpose', 'zeros']\n};","export var squeezeDocs = {\n name: 'squeeze',\n category: 'Matrix',\n syntax: ['squeeze(x)'],\n description: 'Remove inner and outer singleton dimensions from a matrix.',\n examples: ['a = zeros(3,2,1)', 'size(squeeze(a))', 'b = zeros(1,1,3)', 'size(squeeze(b))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'subset', 'trace', 'transpose', 'zeros']\n};","export var sortDocs = {\n name: 'sort',\n category: 'Matrix',\n syntax: ['sort(x)', 'sort(x, compare)'],\n description: 'Sort the items in a matrix. Compare can be a string \"asc\", \"desc\", \"natural\", or a custom sort function.',\n examples: ['sort([5, 10, 1])', 'sort([\"C\", \"B\", \"A\", \"D\"])', 'sortByLength(a, b) = size(a)[1] - size(b)[1]', 'sort([\"Langdon\", \"Tom\", \"Sara\"], sortByLength)', 'sort([\"10\", \"1\", \"2\"], \"natural\")'],\n seealso: ['map', 'filter', 'forEach']\n};","export var sizeDocs = {\n name: 'size',\n category: 'Matrix',\n syntax: ['size(x)'],\n description: 'Calculate the size of a matrix.',\n examples: ['size(2.3)', 'size(\"hello world\")', 'a = [1, 2; 3, 4; 5, 6]', 'size(a)', 'size(1:6)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var diffDocs = {\n name: 'diff',\n category: 'Matrix',\n syntax: ['diff(arr)', 'diff(arr, dim)'],\n description: ['Create a new matrix or array with the difference of the passed matrix or array.', 'Dim parameter is optional and used to indicant the dimension of the array/matrix to apply the difference', 'If no dimension parameter is passed it is assumed as dimension 0', 'Dimension is zero-based in javascript and one-based in the parser', 'Arrays must be \\'rectangular\\' meaning arrays like [1, 2]', 'If something is passed as a matrix it will be returned as a matrix but other than that all matrices are converted to arrays'],\n examples: ['diff([1, 2, 4, 7, 0])', 'diff([1, 2, 4, 7, 0], 0)', 'diff(matrix([1, 2, 4, 7, 0]))', 'diff([[1, 2], [3, 4]])', 'diff([[1, 2], [3, 4]], 0)', 'diff([[1, 2], [3, 4]], 1)', 'diff([[1, 2], [3, 4]], bignumber(1))', 'diff(matrix([[1, 2], [3, 4]]), 1)', 'diff([[1, 2], matrix([3, 4])], 1)'],\n seealso: ['subtract', 'partitionSelect']\n};","export var reshapeDocs = {\n name: 'reshape',\n category: 'Matrix',\n syntax: ['reshape(x, sizes)'],\n description: 'Reshape a multi dimensional array to fit the specified dimensions.',\n examples: ['reshape([1, 2, 3, 4, 5, 6], [2, 3])', 'reshape([[1, 2], [3, 4]], [1, 4])', 'reshape([[1, 2], [3, 4]], [4])'],\n seealso: ['size', 'squeeze', 'resize']\n};","export var resizeDocs = {\n name: 'resize',\n category: 'Matrix',\n syntax: ['resize(x, size)', 'resize(x, size, defaultValue)'],\n description: 'Resize a matrix.',\n examples: ['resize([1,2,3,4,5], [3])', 'resize([1,2,3], [5])', 'resize([1,2,3], [5], -1)', 'resize(2, [2, 3])', 'resize(\"hello\", [8], \"!\")'],\n seealso: ['size', 'subset', 'squeeze', 'reshape']\n};","export var rangeDocs = {\n name: 'range',\n category: 'Type',\n syntax: ['start:end', 'start:step:end', 'range(start, end)', 'range(start, end, step)', 'range(string)'],\n description: 'Create a range. Lower bound of the range is included, upper bound is excluded.',\n examples: ['1:5', '3:-1:-3', 'range(3, 7)', 'range(0, 12, 2)', 'range(\"4:10\")', 'a = [1, 2, 3, 4; 5, 6, 7, 8]', 'a[1:2, 1:2]'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var partitionSelectDocs = {\n name: 'partitionSelect',\n category: 'Matrix',\n syntax: ['partitionSelect(x, k)', 'partitionSelect(x, k, compare)'],\n description: 'Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.',\n examples: ['partitionSelect([5, 10, 1], 2)', 'partitionSelect([\"C\", \"B\", \"A\", \"D\"], 1)'],\n seealso: ['sort']\n};","export var onesDocs = {\n name: 'ones',\n category: 'Matrix',\n syntax: ['ones(m)', 'ones(m, n)', 'ones(m, n, p, ...)', 'ones([m])', 'ones([m, n])', 'ones([m, n, p, ...])'],\n description: 'Create a matrix containing ones.',\n examples: ['ones(3)', 'ones(3, 5)', 'ones([2,3]) * 4.5', 'a = [1, 2, 3; 4, 5, 6]', 'ones(size(a))'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var mapDocs = {\n name: 'map',\n category: 'Matrix',\n syntax: ['map(x, callback)'],\n description: 'Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.',\n examples: ['map([1, 2, 3], square)'],\n seealso: ['filter', 'forEach']\n};","export var kronDocs = {\n name: 'kron',\n category: 'Matrix',\n syntax: ['kron(x, y)'],\n description: 'Calculates the kronecker product of 2 matrices or vectors.',\n examples: ['kron([[1, 0], [0, 1]], [[1, 2], [3, 4]])', 'kron([1,1], [2,3,4])'],\n seealso: ['multiply', 'dot', 'cross']\n};","export var invDocs = {\n name: 'inv',\n category: 'Matrix',\n syntax: ['inv(x)'],\n description: 'Calculate the inverse of a matrix',\n examples: ['inv([1, 2; 3, 4])', 'inv(4)', '1 / 4'],\n seealso: ['concat', 'det', 'diag', 'identity', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var forEachDocs = {\n name: 'forEach',\n category: 'Matrix',\n syntax: ['forEach(x, callback)'],\n description: 'Iterates over all elements of a matrix/array, and executes the given callback function.',\n examples: ['forEach([1, 2, 3], function(val) { console.log(val) })'],\n seealso: ['map', 'sort', 'filter']\n};","export var flattenDocs = {\n name: 'flatten',\n category: 'Matrix',\n syntax: ['flatten(x)'],\n description: 'Flatten a multi dimensional matrix into a single dimensional matrix.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'size(a)', 'b = flatten(a)', 'size(b)'],\n seealso: ['concat', 'resize', 'size', 'squeeze']\n};","export var filterDocs = {\n name: 'filter',\n category: 'Matrix',\n syntax: ['filter(x, test)'],\n description: 'Filter items in a matrix.',\n examples: ['isPositive(x) = x > 0', 'filter([6, -2, -1, 4, 3], isPositive)', 'filter([6, -2, 0, 1, 0], x != 0)'],\n seealso: ['sort', 'map', 'forEach']\n};","export var identityDocs = {\n name: 'identity',\n category: 'Matrix',\n syntax: ['identity(n)', 'identity(m, n)', 'identity([m, n])'],\n description: 'Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.',\n examples: ['identity(3)', 'identity(3, 5)', 'a = [1, 2, 3; 4, 5, 6]', 'identity(size(a))'],\n seealso: ['concat', 'det', 'diag', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var getMatrixDataTypeDocs = {\n name: 'getMatrixDataType',\n category: 'Matrix',\n syntax: ['getMatrixDataType(x)'],\n description: 'Find the data type of all elements in a matrix or array, ' + 'for example \"number\" if all items are a number ' + 'and \"Complex\" if all values are complex numbers. ' + 'If a matrix contains more than one data type, it will return \"mixed\".',\n examples: ['getMatrixDataType([1, 2, 3])', 'getMatrixDataType([[5 cm], [2 inch]])', 'getMatrixDataType([1, \"text\"])', 'getMatrixDataType([1, bignumber(4)])'],\n seealso: ['matrix', 'sparse', 'typeOf']\n};","export var dotDocs = {\n name: 'dot',\n category: 'Matrix',\n syntax: ['dot(A, B)', 'A * B'],\n description: 'Calculate the dot product of two vectors. ' + 'The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] ' + 'is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn',\n examples: ['dot([2, 4, 1], [2, 2, 3])', '[2, 4, 1] * [2, 2, 3]'],\n seealso: ['multiply', 'cross']\n};","export var diagDocs = {\n name: 'diag',\n category: 'Matrix',\n syntax: ['diag(x)', 'diag(x, k)'],\n description: 'Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.',\n examples: ['diag(1:3)', 'diag(1:3, 1)', 'a = [1, 2, 3; 4, 5, 6; 7, 8, 9]', 'diag(a)'],\n seealso: ['concat', 'det', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var detDocs = {\n name: 'det',\n category: 'Matrix',\n syntax: ['det(x)'],\n description: 'Calculate the determinant of a matrix',\n examples: ['det([1, 2; 3, 4])', 'det([-2, 2, 3; -1, 1, 3; 2, 0, -1])'],\n seealso: ['concat', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var ctransposeDocs = {\n name: 'ctranspose',\n category: 'Matrix',\n syntax: ['x\\'', 'ctranspose(x)'],\n description: 'Complex Conjugate and Transpose a matrix',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a\\'', 'ctranspose(a)'],\n seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros']\n};","export var crossDocs = {\n name: 'cross',\n category: 'Matrix',\n syntax: ['cross(A, B)'],\n description: 'Calculate the cross product for two vectors in three dimensional space.',\n examples: ['cross([1, 1, 0], [0, 1, 1])', 'cross([3, -3, 1], [4, 9, 2])', 'cross([2, 3, 4], [5, 6, 7])'],\n seealso: ['multiply', 'dot']\n};","export var concatDocs = {\n name: 'concat',\n category: 'Matrix',\n syntax: ['concat(A, B, C, ...)', 'concat(A, B, C, ..., dim)'],\n description: 'Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.',\n examples: ['A = [1, 2; 5, 6]', 'B = [3, 4; 7, 8]', 'concat(A, B)', 'concat(A, B, 1)', 'concat(A, B, 2)'],\n seealso: ['det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros']\n};","export var xorDocs = {\n name: 'xor',\n category: 'Logical',\n syntax: ['x xor y', 'xor(x, y)'],\n description: 'Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.',\n examples: ['true xor false', 'false xor false', 'true xor true', '0 xor 4'],\n seealso: ['not', 'and', 'or']\n};","export var orDocs = {\n name: 'or',\n category: 'Logical',\n syntax: ['x or y', 'or(x, y)'],\n description: 'Logical or. Test if at least one value is defined with a nonzero/nonempty value.',\n examples: ['true or false', 'false or false', '0 or 4'],\n seealso: ['not', 'and', 'xor']\n};","export var notDocs = {\n name: 'not',\n category: 'Logical',\n syntax: ['not x', 'not(x)'],\n description: 'Logical not. Flips the boolean value of given argument.',\n examples: ['not true', 'not false', 'not 2', 'not 0'],\n seealso: ['and', 'or', 'xor']\n};","export var andDocs = {\n name: 'and',\n category: 'Logical',\n syntax: ['x and y', 'and(x, y)'],\n description: 'Logical and. Test whether two values are both defined with a nonzero/nonempty value.',\n examples: ['true and false', 'true and true', '2 and 4'],\n seealso: ['not', 'or', 'xor']\n};","export var intersectDocs = {\n name: 'intersect',\n category: 'Geometry',\n syntax: ['intersect(expr1, expr2, expr3, expr4)', 'intersect(expr1, expr2, expr3)'],\n description: 'Computes the intersection point of lines and/or planes.',\n examples: ['intersect([0, 0], [10, 10], [10, 0], [0, 10])', 'intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])'],\n seealso: []\n};","export var distanceDocs = {\n name: 'distance',\n category: 'Geometry',\n syntax: ['distance([x1, y1], [x2, y2])', 'distance([[x1, y1], [x2, y2]])'],\n description: 'Calculates the Euclidean distance between two points.',\n examples: ['distance([0,0], [4,4])', 'distance([[0,0], [4,4]])'],\n seealso: []\n};","export var helpDocs = {\n name: 'help',\n category: 'Expression',\n syntax: ['help(object)', 'help(string)'],\n description: 'Display documentation on a function or data type.',\n examples: ['help(sqrt)', 'help(\"complex\")'],\n seealso: []\n};","export var evaluateDocs = {\n name: 'evaluate',\n category: 'Expression',\n syntax: ['evaluate(expression)', 'evaluate([expr1, expr2, expr3, ...])'],\n description: 'Evaluate an expression or an array with expressions.',\n examples: ['evaluate(\"2 + 3\")', 'evaluate(\"sqrt(\" + 4 + \")\")'],\n seealso: []\n};","export var imDocs = {\n name: 'im',\n category: 'Complex',\n syntax: ['im(x)'],\n description: 'Get the imaginary part of a complex number.',\n examples: ['im(2 + 3i)', 're(2 + 3i)', 'im(-5.2i)', 'im(2.4)'],\n seealso: ['re', 'conj', 'abs', 'arg']\n};","export var reDocs = {\n name: 're',\n category: 'Complex',\n syntax: ['re(x)'],\n description: 'Get the real part of a complex number.',\n examples: ['re(2 + 3i)', 'im(2 + 3i)', 're(-5.2i)', 're(2.4)'],\n seealso: ['im', 'conj', 'abs', 'arg']\n};","export var conjDocs = {\n name: 'conj',\n category: 'Complex',\n syntax: ['conj(x)'],\n description: 'Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.',\n examples: ['conj(2 + 3i)', 'conj(2 - 3i)', 'conj(-5.2i)'],\n seealso: ['re', 'im', 'abs', 'arg']\n};","export var argDocs = {\n name: 'arg',\n category: 'Complex',\n syntax: ['arg(x)'],\n description: 'Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).',\n examples: ['arg(2 + 2i)', 'atan2(3, 2)', 'arg(2 + 3i)'],\n seealso: ['re', 'im', 'conj', 'abs']\n};","export var typedDocs = {\n name: 'typed',\n category: 'Core',\n syntax: ['typed(signatures)', 'typed(name, signatures)'],\n description: 'Create a typed function.',\n examples: ['double = typed({ \"number, number\": f(x)=x+x })', 'double(2)', 'double(\"hello\")'],\n seealso: []\n};","export var importDocs = {\n name: 'import',\n category: 'Core',\n syntax: ['import(functions)', 'import(functions, options)'],\n description: 'Import functions or constants from an object.',\n examples: ['import({myFn: f(x)=x^2, myConstant: 32 })', 'myFn(2)', 'myConstant'],\n seealso: []\n};","export var configDocs = {\n name: 'config',\n category: 'Core',\n syntax: ['config()', 'config(options)'],\n description: 'Get configuration or change configuration.',\n examples: ['config()', '1/3 + 1/4', 'config({number: \"Fraction\"})', '1/3 + 1/4'],\n seealso: []\n};","export var stirlingS2Docs = {\n name: 'stirlingS2',\n category: 'Combinatorics',\n syntax: ['stirlingS2(n, k)'],\n description: 'he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.',\n examples: ['stirlingS2(5, 3)'],\n seealso: ['bellNumbers']\n};","export var compositionDocs = {\n name: 'composition',\n category: 'Combinatorics',\n syntax: ['composition(n, k)'],\n description: 'The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.',\n examples: ['composition(5, 3)'],\n seealso: ['combinations']\n};","export var catalanDocs = {\n name: 'catalan',\n category: 'Combinatorics',\n syntax: ['catalan(n)'],\n description: 'The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.',\n examples: ['catalan(3)', 'catalan(8)'],\n seealso: ['bellNumbers']\n};","export var bellNumbersDocs = {\n name: 'bellNumbers',\n category: 'Combinatorics',\n syntax: ['bellNumbers(n)'],\n description: 'The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.',\n examples: ['bellNumbers(3)', 'bellNumbers(8)'],\n seealso: ['stirlingS2']\n};","export var rightLogShiftDocs = {\n name: 'rightLogShift',\n category: 'Bitwise',\n syntax: ['x >>> y', 'rightLogShift(x, y)'],\n description: 'Bitwise right logical shift of a value x by y number of bits.',\n examples: ['8 >>> 1', '4 << 1', '-12 >>> 2'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift']\n};","export var rightArithShiftDocs = {\n name: 'rightArithShift',\n category: 'Bitwise',\n syntax: ['x >> y', 'rightArithShift(x, y)'],\n description: 'Bitwise right arithmetic shift of a value x by y number of bits.',\n examples: ['8 >> 1', '4 << 1', '-12 >> 2'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightLogShift']\n};","export var leftShiftDocs = {\n name: 'leftShift',\n category: 'Bitwise',\n syntax: ['x << y', 'leftShift(x, y)'],\n description: 'Bitwise left logical shift of a value x by y number of bits.',\n examples: ['4 << 1', '8 >> 1'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'bitXor', 'rightArithShift', 'rightLogShift']\n};","export var bitXorDocs = {\n name: 'bitXor',\n category: 'Bitwise',\n syntax: ['bitXor(x, y)'],\n description: 'Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.',\n examples: ['bitOr(1, 2)', 'bitXor([2, 3, 4], 4)'],\n seealso: ['bitAnd', 'bitNot', 'bitOr', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var bitOrDocs = {\n name: 'bitOr',\n category: 'Bitwise',\n syntax: ['x | y', 'bitOr(x, y)'],\n description: 'Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.',\n examples: ['5 | 3', 'bitOr([1, 2, 3], 4)'],\n seealso: ['bitAnd', 'bitNot', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var bitNotDocs = {\n name: 'bitNot',\n category: 'Bitwise',\n syntax: ['~x', 'bitNot(x)'],\n description: 'Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.',\n examples: ['~1', '~2', 'bitNot([2, -3, 4])'],\n seealso: ['bitAnd', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var bitAndDocs = {\n name: 'bitAnd',\n category: 'Bitwise',\n syntax: ['x & y', 'bitAnd(x, y)'],\n description: 'Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0',\n examples: ['5 & 3', 'bitAnd(53, 131)', '[1, 12, 31] & 42'],\n seealso: ['bitNot', 'bitOr', 'bitXor', 'leftShift', 'rightArithShift', 'rightLogShift']\n};","export var xgcdDocs = {\n name: 'xgcd',\n category: 'Arithmetic',\n syntax: ['xgcd(a, b)'],\n description: 'Calculate the extended greatest common divisor for two values. The result is an array [d, x, y] with 3 entries, where d is the greatest common divisor, and d = x * a + y * b.',\n examples: ['xgcd(8, 12)', 'gcd(8, 12)', 'xgcd(36163, 21199)'],\n seealso: ['gcd', 'lcm']\n};","export var unaryPlusDocs = {\n name: 'unaryPlus',\n category: 'Operators',\n syntax: ['+x', 'unaryPlus(x)'],\n description: 'Converts booleans and strings to numbers.',\n examples: ['+true', '+\"2\"'],\n seealso: ['add', 'subtract', 'unaryMinus']\n};","export var unaryMinusDocs = {\n name: 'unaryMinus',\n category: 'Operators',\n syntax: ['-x', 'unaryMinus(x)'],\n description: 'Inverse the sign of a value. Converts booleans and strings to numbers.',\n examples: ['-4.5', '-(-5.6)', '-\"22\"'],\n seealso: ['add', 'subtract', 'unaryPlus']\n};","export var squareDocs = {\n name: 'square',\n category: 'Arithmetic',\n syntax: ['square(x)'],\n description: 'Compute the square of a value. The square of x is x * x.',\n examples: ['square(3)', 'sqrt(9)', '3^2', '3 * 3'],\n seealso: ['multiply', 'pow', 'sqrt', 'cube']\n};","export var sqrtmDocs = {\n name: 'sqrtm',\n category: 'Arithmetic',\n syntax: ['sqrtm(x)'],\n description: 'Calculate the principal square root of a square matrix. The principal square root matrix `X` of another matrix `A` is such that `X * X = A`.',\n examples: ['sqrtm([[1, 2], [3, 4]])'],\n seealso: ['sqrt', 'abs', 'square', 'multiply']\n};","export var sqrtDocs = {\n name: 'sqrt',\n category: 'Arithmetic',\n syntax: ['sqrt(x)'],\n description: 'Compute the square root value. If x = y * y, then y is the square root of x.',\n examples: ['sqrt(25)', '5 * 5', 'sqrt(-1)'],\n seealso: ['square', 'sqrtm', 'multiply', 'nthRoot', 'nthRoots', 'pow']\n};","export var signDocs = {\n name: 'sign',\n category: 'Arithmetic',\n syntax: ['sign(x)'],\n description: 'Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.',\n examples: ['sign(3.5)', 'sign(-4.2)', 'sign(0)'],\n seealso: ['abs']\n};","export var roundDocs = {\n name: 'round',\n category: 'Arithmetic',\n syntax: ['round(x)', 'round(x, n)'],\n description: 'round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.',\n examples: ['round(3.2)', 'round(3.8)', 'round(-4.2)', 'round(-4.8)', 'round(pi, 3)', 'round(123.45678, 2)'],\n seealso: ['ceil', 'floor', 'fix']\n};","export var powDocs = {\n name: 'pow',\n category: 'Operators',\n syntax: ['x ^ y', 'pow(x, y)'],\n description: 'Calculates the power of x to y, x^y.',\n examples: ['2^3', '2*2*2', '1 + e ^ (pi * i)'],\n seealso: ['multiply', 'nthRoot', 'nthRoots', 'sqrt']\n};","export var nthRootsDocs = {\n name: 'nthRoots',\n category: 'Arithmetic',\n syntax: ['nthRoots(A)', 'nthRoots(A, root)'],\n description: '' + 'Calculate the nth roots of a value. ' + 'An nth root of a positive real number A, ' + 'is a positive real solution of the equation \"x^root = A\". ' + 'This function returns an array of complex values.',\n examples: ['nthRoots(1)', 'nthRoots(1, 3)'],\n seealso: ['sqrt', 'pow', 'nthRoot']\n};","export var nthRootDocs = {\n name: 'nthRoot',\n category: 'Arithmetic',\n syntax: ['nthRoot(a)', 'nthRoot(a, root)'],\n description: 'Calculate the nth root of a value. ' + 'The principal nth root of a positive real number A, ' + 'is the positive real solution of the equation \"x^root = A\".',\n examples: ['4 ^ 3', 'nthRoot(64, 3)', 'nthRoot(9, 2)', 'sqrt(9)'],\n seealso: ['nthRoots', 'pow', 'sqrt']\n};","export var normDocs = {\n name: 'norm',\n category: 'Arithmetic',\n syntax: ['norm(x)', 'norm(x, p)'],\n description: 'Calculate the norm of a number, vector or matrix.',\n examples: ['abs(-3.5)', 'norm(-3.5)', 'norm(3 - 4i)', 'norm([1, 2, -3], Infinity)', 'norm([1, 2, -3], -Infinity)', 'norm([3, 4], 2)', 'norm([[1, 2], [3, 4]], 1)', 'norm([[1, 2], [3, 4]], \"inf\")', 'norm([[1, 2], [3, 4]], \"fro\")']\n};","export var multiplyDocs = {\n name: 'multiply',\n category: 'Operators',\n syntax: ['x * y', 'multiply(x, y)'],\n description: 'multiply two values.',\n examples: ['a = 2.1 * 3.4', 'a / 3.4', '2 * 3 + 4', '2 * (3 + 4)', '3 * 2.1 km'],\n seealso: ['divide']\n};","export var modDocs = {\n name: 'mod',\n category: 'Operators',\n syntax: ['x % y', 'x mod y', 'mod(x, y)'],\n description: 'Calculates the modulus, the remainder of an integer division.',\n examples: ['7 % 3', '11 % 2', '10 mod 4', 'isOdd(x) = x % 2', 'isOdd(2)', 'isOdd(3)'],\n seealso: ['divide']\n};","export var log10Docs = {\n name: 'log10',\n category: 'Arithmetic',\n syntax: ['log10(x)'],\n description: 'Compute the 10-base logarithm of a value.',\n examples: ['log10(0.00001)', 'log10(10000)', '10 ^ 4', 'log(10000) / log(10)', 'log(10000, 10)'],\n seealso: ['exp', 'log']\n};","export var log1pDocs = {\n name: 'log1p',\n category: 'Arithmetic',\n syntax: ['log1p(x)', 'log1p(x, base)'],\n description: 'Calculate the logarithm of a `value+1`',\n examples: ['log1p(2.5)', 'exp(log1p(1.4))', 'pow(10, 4)', 'log1p(9999, 10)', 'log1p(9999) / log(10)'],\n seealso: ['exp', 'log', 'log2', 'log10']\n};","export var log2Docs = {\n name: 'log2',\n category: 'Arithmetic',\n syntax: ['log2(x)'],\n description: 'Calculate the 2-base of a value. This is the same as calculating `log(x, 2)`.',\n examples: ['log2(0.03125)', 'log2(16)', 'log2(16) / log2(2)', 'pow(2, 4)'],\n seealso: ['exp', 'log1p', 'log', 'log10']\n};","export var logDocs = {\n name: 'log',\n category: 'Arithmetic',\n syntax: ['log(x)', 'log(x, base)'],\n description: 'Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).',\n examples: ['log(3.5)', 'a = log(2.4)', 'exp(a)', '10 ^ 4', 'log(10000, 10)', 'log(10000) / log(10)', 'b = log(1024, 2)', '2 ^ b'],\n seealso: ['exp', 'log1p', 'log2', 'log10']\n};","export var lcmDocs = {\n name: 'lcm',\n category: 'Arithmetic',\n syntax: ['lcm(x, y)'],\n description: 'Compute the least common multiple.',\n examples: ['lcm(4, 6)', 'lcm(6, 21)', 'lcm(6, 21, 5)'],\n seealso: ['gcd']\n};","export var hypotDocs = {\n name: 'hypot',\n category: 'Arithmetic',\n syntax: ['hypot(a, b, c, ...)', 'hypot([a, b, c, ...])'],\n description: 'Calculate the hypotenusa of a list with values. ',\n examples: ['hypot(3, 4)', 'sqrt(3^2 + 4^2)', 'hypot(-2)', 'hypot([3, 4, 5])'],\n seealso: ['abs', 'norm']\n};","export var gcdDocs = {\n name: 'gcd',\n category: 'Arithmetic',\n syntax: ['gcd(a, b)', 'gcd(a, b, c, ...)'],\n description: 'Compute the greatest common divisor.',\n examples: ['gcd(8, 12)', 'gcd(-4, 6)', 'gcd(25, 15, -10)'],\n seealso: ['lcm', 'xgcd']\n};","export var floorDocs = {\n name: 'floor',\n category: 'Arithmetic',\n syntax: ['floor(x)'],\n description: 'Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.',\n examples: ['floor(3.2)', 'floor(3.8)', 'floor(-4.2)'],\n seealso: ['ceil', 'fix', 'round']\n};","export var fixDocs = {\n name: 'fix',\n category: 'Arithmetic',\n syntax: ['fix(x)'],\n description: 'Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.',\n examples: ['fix(3.2)', 'fix(3.8)', 'fix(-4.2)', 'fix(-4.8)'],\n seealso: ['ceil', 'floor', 'round']\n};","export var expm1Docs = {\n name: 'expm1',\n category: 'Arithmetic',\n syntax: ['expm1(x)'],\n description: 'Calculate the value of subtracting 1 from the exponential value.',\n examples: ['expm1(2)', 'pow(e, 2) - 1', 'log(expm1(2) + 1)'],\n seealso: ['exp', 'pow', 'log']\n};","export var expmDocs = {\n name: 'expm',\n category: 'Arithmetic',\n syntax: ['exp(x)'],\n description: 'Compute the matrix exponential, expm(A) = e^A. ' + 'The matrix must be square. ' + 'Not to be confused with exp(a), which performs element-wise exponentiation.',\n examples: ['expm([[0,2],[0,0]])'],\n seealso: ['exp']\n};","export var eigsDocs = {\n name: 'eigs',\n category: 'Matrix',\n syntax: ['eigs(x)'],\n description: 'Calculate the eigenvalues and eigenvectors of a real symmetric matrix',\n examples: ['eigs([[5, 2.3], [2.3, 1]])'],\n seealso: ['inv']\n};","export var expDocs = {\n name: 'exp',\n category: 'Arithmetic',\n syntax: ['exp(x)'],\n description: 'Calculate the exponent of a value.',\n examples: ['exp(1.3)', 'e ^ 1.3', 'log(exp(1.3))', 'x = 2.4', '(exp(i*x) == cos(x) + i*sin(x)) # Euler\\'s formula'],\n seealso: ['expm', 'expm1', 'pow', 'log']\n};","export var dotMultiplyDocs = {\n name: 'dotMultiply',\n category: 'Operators',\n syntax: ['x .* y', 'dotMultiply(x, y)'],\n description: 'Multiply two values element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'b = [2, 1, 1; 3, 2, 5]', 'a .* b'],\n seealso: ['multiply', 'divide', 'dotDivide']\n};","export var dotDivideDocs = {\n name: 'dotDivide',\n category: 'Operators',\n syntax: ['x ./ y', 'dotDivide(x, y)'],\n description: 'Divide two values element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'b = [2, 1, 1; 3, 2, 5]', 'a ./ b'],\n seealso: ['multiply', 'dotMultiply', 'divide']\n};","export var divideDocs = {\n name: 'divide',\n category: 'Operators',\n syntax: ['x / y', 'divide(x, y)'],\n description: 'Divide two values.',\n examples: ['a = 2 / 3', 'a * 3', '4.5 / 2', '3 + 4 / 2', '(3 + 4) / 2', '18 km / 4.5'],\n seealso: ['multiply']\n};","export var cubeDocs = {\n name: 'cube',\n category: 'Arithmetic',\n syntax: ['cube(x)'],\n description: 'Compute the cube of a value. The cube of x is x * x * x.',\n examples: ['cube(2)', '2^3', '2 * 2 * 2'],\n seealso: ['multiply', 'square', 'pow']\n};","export var ceilDocs = {\n name: 'ceil',\n category: 'Arithmetic',\n syntax: ['ceil(x)'],\n description: 'Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.',\n examples: ['ceil(3.2)', 'ceil(3.8)', 'ceil(-4.2)'],\n seealso: ['floor', 'fix', 'round']\n};","export var cbrtDocs = {\n name: 'cbrt',\n category: 'Arithmetic',\n syntax: ['cbrt(x)', 'cbrt(x, allRoots)'],\n description: 'Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned',\n examples: ['cbrt(64)', 'cube(4)', 'cbrt(-8)', 'cbrt(2 + 3i)', 'cbrt(8i)', 'cbrt(8i, true)', 'cbrt(27 m^3)'],\n seealso: ['square', 'sqrt', 'cube', 'multiply']\n};","export var addDocs = {\n name: 'add',\n category: 'Operators',\n syntax: ['x + y', 'add(x, y)'],\n description: 'Add two values.',\n examples: ['a = 2.1 + 3.6', 'a - 3.6', '3 + 2i', '3 cm + 2 inch', '\"2.3\" + \"4\"'],\n seealso: ['subtract']\n};","export var absDocs = {\n name: 'abs',\n category: 'Arithmetic',\n syntax: ['abs(x)'],\n description: 'Compute the absolute value.',\n examples: ['abs(3.5)', 'abs(-4.2)'],\n seealso: ['sign']\n};","export var qrDocs = {\n name: 'qr',\n category: 'Algebra',\n syntax: ['qr(A)'],\n description: 'Calculates the Matrix QR decomposition. Matrix `A` is decomposed in two matrices (`Q`, `R`) where `Q` is an orthogonal matrix and `R` is an upper triangular matrix.',\n examples: ['qr([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])'],\n seealso: ['lup', 'slu', 'matrix']\n};","export var usolveDocs = {\n name: 'usolve',\n category: 'Algebra',\n syntax: ['x=usolve(U, b)'],\n description: 'Finds one solution of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',\n examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],\n seealso: ['usolveAll', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']\n};","export var usolveAllDocs = {\n name: 'usolveAll',\n category: 'Algebra',\n syntax: ['x=usolve(U, b)'],\n description: 'Finds all solutions of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',\n examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],\n seealso: ['usolve', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']\n};","export var sluDocs = {\n name: 'slu',\n category: 'Algebra',\n syntax: ['slu(A, order, threshold)'],\n description: 'Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U',\n examples: ['slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)'],\n seealso: ['lusolve', 'lsolve', 'usolve', 'matrix', 'sparse', 'lup', 'qr']\n};","export var rationalizeDocs = {\n name: 'rationalize',\n category: 'Algebra',\n syntax: ['rationalize(expr)', 'rationalize(expr, scope)', 'rationalize(expr, scope, detailed)'],\n description: 'Transform a rationalizable expression in a rational fraction. If rational fraction is one variable polynomial then converts the numerator and denominator in canonical form, with decreasing exponents, returning the coefficients of numerator.',\n examples: ['rationalize(\"2x/y - y/(x+1)\")', 'rationalize(\"2x/y - y/(x+1)\", true)'],\n seealso: ['simplify']\n};","export var simplifyDocs = {\n name: 'simplify',\n category: 'Algebra',\n syntax: ['simplify(expr)', 'simplify(expr, rules)'],\n description: 'Simplify an expression tree.',\n examples: ['simplify(\"3 + 2 / 4\")', 'simplify(\"2x + x\")', 'f = parse(\"x * (x + 2 + x)\")', 'simplified = simplify(f)', 'simplified.evaluate({x: 2})'],\n seealso: ['derivative', 'parse', 'evaluate']\n};","export var lupDocs = {\n name: 'lup',\n category: 'Algebra',\n syntax: ['lup(m)'],\n description: 'Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U',\n examples: ['lup([[2, 1], [1, 4]])', 'lup(matrix([[2, 1], [1, 4]]))', 'lup(sparse([[2, 1], [1, 4]]))'],\n seealso: ['lusolve', 'lsolve', 'usolve', 'matrix', 'sparse', 'slu', 'qr']\n};","export var lsolveDocs = {\n name: 'lsolve',\n category: 'Algebra',\n syntax: ['x=lsolve(L, b)'],\n description: 'Finds one solution of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],\n seealso: ['lsolveAll', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']\n};","export var lsolveAllDocs = {\n name: 'lsolveAll',\n category: 'Algebra',\n syntax: ['x=lsolveAll(L, b)'],\n description: 'Finds all solutions of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],\n seealso: ['lsolve', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']\n};","export var derivativeDocs = {\n name: 'derivative',\n category: 'Algebra',\n syntax: ['derivative(expr, variable)', 'derivative(expr, variable, {simplify: boolean})'],\n description: 'Takes the derivative of an expression expressed in parser Nodes. The derivative will be taken over the supplied variable in the second parameter. If there are multiple variables in the expression, it will return a partial derivative.',\n examples: ['derivative(\"2x^3\", \"x\")', 'derivative(\"2x^3\", \"x\", {simplify: false})', 'derivative(\"2x^2 + 3x + 4\", \"x\")', 'derivative(\"sin(2x)\", \"x\")', 'f = parse(\"x^2 + x\")', 'x = parse(\"x\")', 'df = derivative(f, x)', 'df.evaluate({x: 3})'],\n seealso: ['simplify', 'parse', 'evaluate']\n};","export var versionDocs = {\n name: 'version',\n category: 'Constants',\n syntax: ['version'],\n description: 'A string with the version number of math.js',\n examples: ['version'],\n seealso: []\n};","export var trueDocs = {\n name: 'true',\n category: 'Constants',\n syntax: ['true'],\n description: 'Boolean value true',\n examples: ['true'],\n seealso: ['false']\n};","export var tauDocs = {\n name: 'tau',\n category: 'Constants',\n syntax: ['tau'],\n description: 'Tau is the ratio constant of a circle\\'s circumference to radius, equal to 2 * pi, approximately 6.2832.',\n examples: ['tau', '2 * pi'],\n seealso: ['pi']\n};","export var SQRT2Docs = {\n name: 'SQRT2',\n category: 'Constants',\n syntax: ['SQRT2'],\n description: 'Returns the square root of 2, approximately equal to 1.414',\n examples: ['SQRT2', 'sqrt(2)'],\n seealso: []\n};","export var SQRT12Docs = {\n name: 'SQRT1_2',\n category: 'Constants',\n syntax: ['SQRT1_2'],\n description: 'Returns the square root of 1/2, approximately equal to 0.707',\n examples: ['SQRT1_2', 'sqrt(1/2)'],\n seealso: []\n};","export var phiDocs = {\n name: 'phi',\n category: 'Constants',\n syntax: ['phi'],\n description: 'Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...',\n examples: ['phi'],\n seealso: []\n};","export var piDocs = {\n name: 'pi',\n category: 'Constants',\n syntax: ['pi'],\n description: 'The number pi is a mathematical constant that is the ratio of a circle\\'s circumference to its diameter, and is approximately equal to 3.14159',\n examples: ['pi', 'sin(pi/2)'],\n seealso: ['tau']\n};","export var nullDocs = {\n name: 'null',\n category: 'Constants',\n syntax: ['null'],\n description: 'Value null',\n examples: ['null'],\n seealso: ['true', 'false']\n};","export var NaNDocs = {\n name: 'NaN',\n category: 'Constants',\n syntax: ['NaN'],\n description: 'Not a number',\n examples: ['NaN', '0 / 0'],\n seealso: []\n};","export var LOG10EDocs = {\n name: 'LOG10E',\n category: 'Constants',\n syntax: ['LOG10E'],\n description: 'Returns the base-10 logarithm of E, approximately equal to 0.434',\n examples: ['LOG10E', 'log(e, 10)'],\n seealso: []\n};","export var LOG2EDocs = {\n name: 'LOG2E',\n category: 'Constants',\n syntax: ['LOG2E'],\n description: 'Returns the base-2 logarithm of E, approximately equal to 1.442',\n examples: ['LOG2E', 'log(e, 2)'],\n seealso: []\n};","export var LN10Docs = {\n name: 'LN10',\n category: 'Constants',\n syntax: ['LN10'],\n description: 'Returns the natural logarithm of 10, approximately equal to 2.302',\n examples: ['LN10', 'log(10)'],\n seealso: []\n};","export var LN2Docs = {\n name: 'LN2',\n category: 'Constants',\n syntax: ['LN2'],\n description: 'Returns the natural logarithm of 2, approximately equal to 0.693',\n examples: ['LN2', 'log(2)'],\n seealso: []\n};","export var InfinityDocs = {\n name: 'Infinity',\n category: 'Constants',\n syntax: ['Infinity'],\n description: 'Infinity, a number which is larger than the maximum number that can be handled by a floating point number.',\n examples: ['Infinity', '1 / 0'],\n seealso: []\n};","export var iDocs = {\n name: 'i',\n category: 'Constants',\n syntax: ['i'],\n description: 'Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.',\n examples: ['i', 'i * i', 'sqrt(-1)'],\n seealso: []\n};","export var falseDocs = {\n name: 'false',\n category: 'Constants',\n syntax: ['false'],\n description: 'Boolean value false',\n examples: ['false'],\n seealso: ['true']\n};","export var eDocs = {\n name: 'e',\n category: 'Constants',\n syntax: ['e'],\n description: 'Euler\\'s number, the base of the natural logarithm. Approximately equal to 2.71828',\n examples: ['e', 'e ^ 2', 'exp(2)', 'log(e)'],\n seealso: ['exp']\n};","export var unitDocs = {\n name: 'unit',\n category: 'Construction',\n syntax: ['value unit', 'unit(value, unit)', 'unit(string)'],\n description: 'Create a unit.',\n examples: ['5.5 mm', '3 inch', 'unit(7.1, \"kilogram\")', 'unit(\"23 deg\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'number', 'string']\n};","export var stringDocs = {\n name: 'string',\n category: 'Construction',\n syntax: ['\"text\"', 'string(x)'],\n description: 'Create a string or convert a value to a string',\n examples: ['\"Hello World!\"', 'string(4.2)', 'string(3 + 2i)'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'number', 'unit']\n};","export var splitUnitDocs = {\n name: 'splitUnit',\n category: 'Construction',\n syntax: ['splitUnit(unit: Unit, parts: Unit[])'],\n description: 'Split a unit in an array of units whose sum is equal to the original unit.',\n examples: ['splitUnit(1 m, [\"feet\", \"inch\"])'],\n seealso: ['unit', 'createUnit']\n};","export var sparseDocs = {\n name: 'sparse',\n category: 'Construction',\n syntax: ['sparse()', 'sparse([a1, b1, ...; a1, b2, ...])', 'sparse([a1, b1, ...; a1, b2, ...], \"number\")'],\n description: 'Create a sparse matrix.',\n examples: ['sparse()', 'sparse([3, 4; 5, 6])', 'sparse([3, 0; 5, 0], \"number\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'number', 'string', 'unit', 'matrix']\n};","export var numberDocs = {\n name: 'number',\n category: 'Construction',\n syntax: ['x', 'number(x)', 'number(unit, valuelessUnit)'],\n description: 'Create a number or convert a string or boolean into a number.',\n examples: ['2', '2e3', '4.05', 'number(2)', 'number(\"7.2\")', 'number(true)', 'number([true, false, true, true])', 'number(unit(\"52cm\"), \"m\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'fraction', 'index', 'matrix', 'string', 'unit']\n};","export var matrixDocs = {\n name: 'matrix',\n category: 'Construction',\n syntax: ['[]', '[a1, b1, ...; a2, b2, ...]', 'matrix()', 'matrix(\"dense\")', 'matrix([...])'],\n description: 'Create a matrix.',\n examples: ['[]', '[1, 2, 3]', '[1, 2, 3; 4, 5, 6]', 'matrix()', 'matrix([3, 4])', 'matrix([3, 4; 5, 6], \"sparse\")', 'matrix([3, 4; 5, 6], \"sparse\", \"number\")'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'number', 'string', 'unit', 'sparse']\n};","export var indexDocs = {\n name: 'index',\n category: 'Construction',\n syntax: ['[start]', '[start:end]', '[start:step:end]', '[start1, start 2, ...]', '[start1:end1, start2:end2, ...]', '[start1:step1:end1, start2:step2:end2, ...]'],\n description: 'Create an index to get or replace a subset of a matrix',\n examples: ['[]', '[1, 2, 3]', 'A = [1, 2, 3; 4, 5, 6]', 'A[1, :]', 'A[1, 2] = 50', 'A[0:2, 0:2] = ones(2, 2)'],\n seealso: ['bignumber', 'boolean', 'complex', 'matrix,', 'number', 'range', 'string', 'unit']\n};","export var fractionDocs = {\n name: 'fraction',\n category: 'Construction',\n syntax: ['fraction(num)', 'fraction(num,den)'],\n description: 'Create a fraction from a number or from a numerator and denominator.',\n examples: ['fraction(0.125)', 'fraction(1, 3) + fraction(2, 5)'],\n seealso: ['bignumber', 'boolean', 'complex', 'index', 'matrix', 'string', 'unit']\n};","export var createUnitDocs = {\n name: 'createUnit',\n category: 'Construction',\n syntax: ['createUnit(definitions)', 'createUnit(name, definition)'],\n description: 'Create a user-defined unit and register it with the Unit type.',\n examples: ['createUnit(\"foo\")', 'createUnit(\"knot\", {definition: \"0.514444444 m/s\", aliases: [\"knots\", \"kt\", \"kts\"]})', 'createUnit(\"mph\", \"1 mile/hour\")'],\n seealso: ['unit', 'splitUnit']\n};","export var complexDocs = {\n name: 'complex',\n category: 'Construction',\n syntax: ['complex()', 'complex(re, im)', 'complex(string)'],\n description: 'Create a complex number.',\n examples: ['complex()', 'complex(2, 3)', 'complex(\"7 - 2i\")'],\n seealso: ['bignumber', 'boolean', 'index', 'matrix', 'number', 'string', 'unit']\n};","export var booleanDocs = {\n name: 'boolean',\n category: 'Construction',\n syntax: ['x', 'boolean(x)'],\n description: 'Convert a string or number into a boolean.',\n examples: ['boolean(0)', 'boolean(1)', 'boolean(3)', 'boolean(\"true\")', 'boolean(\"false\")', 'boolean([1, 0, 1, 1])'],\n seealso: ['bignumber', 'complex', 'index', 'matrix', 'number', 'string', 'unit']\n};","export var dotPowDocs = {\n name: 'dotPow',\n category: 'Operators',\n syntax: ['x .^ y', 'dotPow(x, y)'],\n description: 'Calculates the power of x to y element wise.',\n examples: ['a = [1, 2, 3; 4, 5, 6]', 'a .^ 2'],\n seealso: ['pow']\n};","export var lusolveDocs = {\n name: 'lusolve',\n category: 'Algebra',\n syntax: ['x=lusolve(A, b)', 'x=lusolve(lu, b)'],\n description: 'Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.',\n examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lusolve(a, b)'],\n seealso: ['lup', 'slu', 'lsolve', 'usolve', 'matrix', 'sparse']\n};","export var subtractDocs = {\n name: 'subtract',\n category: 'Operators',\n syntax: ['x - y', 'subtract(x, y)'],\n description: 'subtract two values.',\n examples: ['a = 5.3 - 2', 'a + 2', '2/3 - 1/6', '2 * 3 - 3', '2.1 km - 500m'],\n seealso: ['add']\n};","export var varianceDocs = {\n name: 'variance',\n category: 'Statistics',\n syntax: ['variance(a, b, c, ...)', 'variance(A)', 'variance(A, normalization)'],\n description: 'Compute the variance of all values. Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',\n examples: ['variance(2, 4, 6)', 'variance([2, 4, 6, 8])', 'variance([2, 4, 6, 8], \"uncorrected\")', 'variance([2, 4, 6, 8], \"biased\")', 'variance([1, 2, 3; 4, 5, 6])'],\n seealso: ['max', 'mean', 'min', 'median', 'min', 'prod', 'std', 'sum']\n};","export var sinDocs = {\n name: 'sin',\n category: 'Trigonometry',\n syntax: ['sin(x)'],\n description: 'Compute the sine of x in radians.',\n examples: ['sin(2)', 'sin(pi / 4) ^ 2', 'sin(90 deg)', 'sin(30 deg)', 'sin(0.2)^2 + cos(0.2)^2'],\n seealso: ['asin', 'cos', 'tan']\n};","export var numericDocs = {\n name: 'numeric',\n category: 'Utils',\n syntax: ['numeric(x)'],\n description: 'Convert a numeric input to a specific numeric type: number, BigNumber, or Fraction.',\n examples: ['numeric(\"4\")', 'numeric(\"4\", \"number\")', 'numeric(\"4\", \"BigNumber\")', 'numeric(\"4\", \"Fraction)', 'numeric(4, \"Fraction\")', 'numeric(fraction(2, 5), \"number)'],\n seealso: ['number', 'fraction', 'bignumber', 'string', 'format']\n};","export var columnDocs = {\n name: 'column',\n category: 'Matrix',\n syntax: ['column(x, index)'],\n description: 'Return a column from a matrix or array.',\n examples: ['A = [[1, 2], [3, 4]]', 'column(A, 1)', 'column(A, 2)'],\n seealso: ['row']\n};","export var rowDocs = {\n name: 'row',\n category: 'Matrix',\n syntax: ['row(x, index)'],\n description: 'Return a row from a matrix or array.',\n examples: ['A = [[1, 2], [3, 4]]', 'row(A, 1)', 'row(A, 2)'],\n seealso: ['column']\n};","export var rotationMatrixDocs = {\n name: 'rotationMatrix',\n category: 'Matrix',\n syntax: ['rotationMatrix(theta)', 'rotationMatrix(theta, v)', 'rotationMatrix(theta, v, format)'],\n description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',\n examples: ['rotationMatrix(pi / 2)', 'rotationMatrix(unit(\"45deg\"), [0, 0, 1])', 'rotationMatrix(1, matrix([0, 0, 1]), \"sparse\")'],\n seealso: ['cos', 'sin']\n};","export var rotateDocs = {\n name: 'rotate',\n category: 'Matrix',\n syntax: ['rotate(w, theta)', 'rotate(w, theta, v)'],\n description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',\n examples: ['rotate([1, 0], math.pi / 2)', 'rotate(matrix([1, 0]), unit(\"35deg\"))', 'rotate([1, 0, 0], unit(\"90deg\"), [0, 0, 1])', 'rotate(matrix([1, 0, 0]), unit(\"90deg\"), matrix([0, 0, 1]))'],\n seealso: ['matrix', 'rotationMatrix']\n};","import { bignumberDocs } from './construction/bignumber';\nimport { typeOfDocs } from './function/utils/typeOf';\nimport { isZeroDocs } from './function/utils/isZero';\nimport { isPrimeDocs } from './function/utils/isPrime';\nimport { isPositiveDocs } from './function/utils/isPositive';\nimport { isNumericDocs } from './function/utils/isNumeric';\nimport { hasNumericValueDocs } from './function/utils/hasNumericValue';\nimport { isNegativeDocs } from './function/utils/isNegative';\nimport { isIntegerDocs } from './function/utils/isInteger';\nimport { isNaNDocs } from './function/utils/isNaN';\nimport { formatDocs } from './function/utils/format';\nimport { binDocs } from './function/utils/bin';\nimport { octDocs } from './function/utils/oct';\nimport { hexDocs } from './function/utils/hex';\nimport { cloneDocs } from './function/utils/clone';\nimport { toDocs } from './function/units/to';\nimport { tanhDocs } from './function/trigonometry/tanh';\nimport { tanDocs } from './function/trigonometry/tan';\nimport { sinhDocs } from './function/trigonometry/sinh';\nimport { sechDocs } from './function/trigonometry/sech';\nimport { secDocs } from './function/trigonometry/sec';\nimport { cschDocs } from './function/trigonometry/csch';\nimport { cscDocs } from './function/trigonometry/csc';\nimport { cothDocs } from './function/trigonometry/coth';\nimport { cotDocs } from './function/trigonometry/cot';\nimport { coshDocs } from './function/trigonometry/cosh';\nimport { cosDocs } from './function/trigonometry/cos';\nimport { atan2Docs } from './function/trigonometry/atan2';\nimport { atanhDocs } from './function/trigonometry/atanh';\nimport { atanDocs } from './function/trigonometry/atan';\nimport { asinhDocs } from './function/trigonometry/asinh';\nimport { asinDocs } from './function/trigonometry/asin';\nimport { asechDocs } from './function/trigonometry/asech';\nimport { asecDocs } from './function/trigonometry/asec';\nimport { acschDocs } from './function/trigonometry/acsch';\nimport { acscDocs } from './function/trigonometry/acsc';\nimport { acothDocs } from './function/trigonometry/acoth';\nimport { acotDocs } from './function/trigonometry/acot';\nimport { acoshDocs } from './function/trigonometry/acosh';\nimport { acosDocs } from './function/trigonometry/acos';\nimport { sumDocs } from './function/statistics/sum';\nimport { stdDocs } from './function/statistics/std';\nimport { quantileSeqDocs } from './function/statistics/quantileSeq';\nimport { prodDocs } from './function/statistics/prod';\nimport { modeDocs } from './function/statistics/mode';\nimport { minDocs } from './function/statistics/min';\nimport { medianDocs } from './function/statistics/median';\nimport { meanDocs } from './function/statistics/mean';\nimport { maxDocs } from './function/statistics/max';\nimport { madDocs } from './function/statistics/mad';\nimport { erfDocs } from './function/special/erf';\nimport { setUnionDocs } from './function/set/setUnion';\nimport { setSymDifferenceDocs } from './function/set/setSymDifference';\nimport { setSizeDocs } from './function/set/setSize';\nimport { setPowersetDocs } from './function/set/setPowerset';\nimport { setMultiplicityDocs } from './function/set/setMultiplicity';\nimport { setIsSubsetDocs } from './function/set/setIsSubset';\nimport { setIntersectDocs } from './function/set/setIntersect';\nimport { setDistinctDocs } from './function/set/setDistinct';\nimport { setDifferenceDocs } from './function/set/setDifference';\nimport { setCartesianDocs } from './function/set/setCartesian';\nimport { unequalDocs } from './function/relational/unequal';\nimport { smallerEqDocs } from './function/relational/smallerEq';\nimport { smallerDocs } from './function/relational/smaller';\nimport { largerEqDocs } from './function/relational/largerEq';\nimport { largerDocs } from './function/relational/larger';\nimport { equalTextDocs } from './function/relational/equalText';\nimport { equalDocs } from './function/relational/equal';\nimport { deepEqualDocs } from './function/relational/deepEqual';\nimport { compareTextDocs } from './function/relational/compareText';\nimport { compareNaturalDocs } from './function/relational/compareNatural';\nimport { compareDocs } from './function/relational/compare';\nimport { randomIntDocs } from './function/probability/randomInt';\nimport { randomDocs } from './function/probability/random';\nimport { pickRandomDocs } from './function/probability/pickRandom';\nimport { permutationsDocs } from './function/probability/permutations';\nimport { multinomialDocs } from './function/probability/multinomial';\nimport { kldivergenceDocs } from './function/probability/kldivergence';\nimport { gammaDocs } from './function/probability/gamma';\nimport { factorialDocs } from './function/probability/factorial';\nimport { combinationsDocs } from './function/probability/combinations';\nimport { combinationsWithRepDocs } from './function/probability/combinationsWithRep';\nimport { zerosDocs } from './function/matrix/zeros';\nimport { transposeDocs } from './function/matrix/transpose';\nimport { traceDocs } from './function/matrix/trace';\nimport { subsetDocs } from './function/matrix/subset';\nimport { squeezeDocs } from './function/matrix/squeeze';\nimport { sortDocs } from './function/matrix/sort';\nimport { sizeDocs } from './function/matrix/size';\nimport { diffDocs } from './function/matrix/diff';\nimport { reshapeDocs } from './function/matrix/reshape';\nimport { resizeDocs } from './function/matrix/resize';\nimport { rangeDocs } from './function/matrix/range';\nimport { partitionSelectDocs } from './function/matrix/partitionSelect';\nimport { onesDocs } from './function/matrix/ones';\nimport { mapDocs } from './function/matrix/map';\nimport { kronDocs } from './function/matrix/kron';\nimport { invDocs } from './function/matrix/inv';\nimport { forEachDocs } from './function/matrix/forEach';\nimport { flattenDocs } from './function/matrix/flatten';\nimport { filterDocs } from './function/matrix/filter';\nimport { identityDocs } from './function/matrix/identity';\nimport { getMatrixDataTypeDocs } from './function/matrix/getMatrixDataType';\nimport { dotDocs } from './function/matrix/dot';\nimport { diagDocs } from './function/matrix/diag';\nimport { detDocs } from './function/matrix/det';\nimport { ctransposeDocs } from './function/matrix/ctranspose';\nimport { crossDocs } from './function/matrix/cross';\nimport { concatDocs } from './function/matrix/concat';\nimport { xorDocs } from './function/logical/xor';\nimport { orDocs } from './function/logical/or';\nimport { notDocs } from './function/logical/not';\nimport { andDocs } from './function/logical/and';\nimport { intersectDocs } from './function/geometry/intersect';\nimport { distanceDocs } from './function/geometry/distance';\nimport { helpDocs } from './function/expression/help';\nimport { evaluateDocs } from './function/expression/evaluate';\nimport { imDocs } from './function/complex/im';\nimport { reDocs } from './function/complex/re';\nimport { conjDocs } from './function/complex/conj';\nimport { argDocs } from './function/complex/arg';\nimport { typedDocs } from './core/typed';\nimport { importDocs } from './core/import';\nimport { configDocs } from './core/config';\nimport { stirlingS2Docs } from './function/combinatorics/stirlingS2';\nimport { compositionDocs } from './function/combinatorics/composition';\nimport { catalanDocs } from './function/combinatorics/catalan';\nimport { bellNumbersDocs } from './function/combinatorics/bellNumbers';\nimport { rightLogShiftDocs } from './function/bitwise/rightLogShift';\nimport { rightArithShiftDocs } from './function/bitwise/rightArithShift';\nimport { leftShiftDocs } from './function/bitwise/leftShift';\nimport { bitXorDocs } from './function/bitwise/bitXor';\nimport { bitOrDocs } from './function/bitwise/bitOr';\nimport { bitNotDocs } from './function/bitwise/bitNot';\nimport { bitAndDocs } from './function/bitwise/bitAnd';\nimport { xgcdDocs } from './function/arithmetic/xgcd';\nimport { unaryPlusDocs } from './function/arithmetic/unaryPlus';\nimport { unaryMinusDocs } from './function/arithmetic/unaryMinus';\nimport { squareDocs } from './function/arithmetic/square';\nimport { sqrtmDocs } from './function/arithmetic/sqrtm';\nimport { sqrtDocs } from './function/arithmetic/sqrt';\nimport { signDocs } from './function/arithmetic/sign';\nimport { roundDocs } from './function/arithmetic/round';\nimport { powDocs } from './function/arithmetic/pow';\nimport { nthRootsDocs } from './function/arithmetic/nthRoots';\nimport { nthRootDocs } from './function/arithmetic/nthRoot';\nimport { normDocs } from './function/arithmetic/norm';\nimport { multiplyDocs } from './function/arithmetic/multiply';\nimport { modDocs } from './function/arithmetic/mod';\nimport { log10Docs } from './function/arithmetic/log10';\nimport { log1pDocs } from './function/arithmetic/log1p';\nimport { log2Docs } from './function/arithmetic/log2';\nimport { logDocs } from './function/arithmetic/log';\nimport { lcmDocs } from './function/arithmetic/lcm';\nimport { hypotDocs } from './function/arithmetic/hypot';\nimport { gcdDocs } from './function/arithmetic/gcd';\nimport { floorDocs } from './function/arithmetic/floor';\nimport { fixDocs } from './function/arithmetic/fix';\nimport { expm1Docs } from './function/arithmetic/expm1';\nimport { expmDocs } from './function/arithmetic/expm';\nimport { eigsDocs } from './function/matrix/eigs';\nimport { expDocs } from './function/arithmetic/exp';\nimport { dotMultiplyDocs } from './function/arithmetic/dotMultiply';\nimport { dotDivideDocs } from './function/arithmetic/dotDivide';\nimport { divideDocs } from './function/arithmetic/divide';\nimport { cubeDocs } from './function/arithmetic/cube';\nimport { ceilDocs } from './function/arithmetic/ceil';\nimport { cbrtDocs } from './function/arithmetic/cbrt';\nimport { addDocs } from './function/arithmetic/add';\nimport { absDocs } from './function/arithmetic/abs';\nimport { qrDocs } from './function/algebra/qr';\nimport { usolveDocs } from './function/algebra/usolve';\nimport { usolveAllDocs } from './function/algebra/usolveAll';\nimport { sluDocs } from './function/algebra/slu';\nimport { rationalizeDocs } from './function/algebra/rationalize';\nimport { simplifyDocs } from './function/algebra/simplify';\nimport { lupDocs } from './function/algebra/lup';\nimport { lsolveDocs } from './function/algebra/lsolve';\nimport { lsolveAllDocs } from './function/algebra/lsolveAll';\nimport { derivativeDocs } from './function/algebra/derivative';\nimport { versionDocs } from './constants/version';\nimport { trueDocs } from './constants/true';\nimport { tauDocs } from './constants/tau';\nimport { SQRT2Docs } from './constants/SQRT2';\nimport { SQRT12Docs } from './constants/SQRT1_2';\nimport { phiDocs } from './constants/phi';\nimport { piDocs } from './constants/pi';\nimport { nullDocs } from './constants/null';\nimport { NaNDocs } from './constants/NaN';\nimport { LOG10EDocs } from './constants/LOG10E';\nimport { LOG2EDocs } from './constants/LOG2E';\nimport { LN10Docs } from './constants/LN10';\nimport { LN2Docs } from './constants/LN2';\nimport { InfinityDocs } from './constants/Infinity';\nimport { iDocs } from './constants/i';\nimport { falseDocs } from './constants/false';\nimport { eDocs } from './constants/e';\nimport { unitDocs } from './construction/unit';\nimport { stringDocs } from './construction/string';\nimport { splitUnitDocs } from './construction/splitUnit';\nimport { sparseDocs } from './construction/sparse';\nimport { numberDocs } from './construction/number';\nimport { matrixDocs } from './construction/matrix';\nimport { indexDocs } from './construction';\nimport { fractionDocs } from './construction/fraction';\nimport { createUnitDocs } from './construction/createUnit';\nimport { complexDocs } from './construction/complex';\nimport { booleanDocs } from './construction/boolean';\nimport { dotPowDocs } from './function/arithmetic/dotPow';\nimport { lusolveDocs } from './function/algebra/lusolve';\nimport { subtractDocs } from './function/arithmetic/subtract';\nimport { varianceDocs } from './function/statistics/variance';\nimport { sinDocs } from './function/trigonometry/sin';\nimport { numericDocs } from './function/utils/numeric';\nimport { columnDocs } from './function/matrix/column';\nimport { rowDocs } from './function/matrix/row';\nimport { rotationMatrixDocs } from './function/matrix/rotationMatrix';\nimport { rotateDocs } from './function/matrix/rotate';\nexport var embeddedDocs = {\n // construction functions\n bignumber: bignumberDocs,\n \"boolean\": booleanDocs,\n complex: complexDocs,\n createUnit: createUnitDocs,\n fraction: fractionDocs,\n index: indexDocs,\n matrix: matrixDocs,\n number: numberDocs,\n sparse: sparseDocs,\n splitUnit: splitUnitDocs,\n string: stringDocs,\n unit: unitDocs,\n // constants\n e: eDocs,\n E: eDocs,\n \"false\": falseDocs,\n i: iDocs,\n Infinity: InfinityDocs,\n LN2: LN2Docs,\n LN10: LN10Docs,\n LOG2E: LOG2EDocs,\n LOG10E: LOG10EDocs,\n NaN: NaNDocs,\n \"null\": nullDocs,\n pi: piDocs,\n PI: piDocs,\n phi: phiDocs,\n SQRT1_2: SQRT12Docs,\n SQRT2: SQRT2Docs,\n tau: tauDocs,\n \"true\": trueDocs,\n version: versionDocs,\n // physical constants\n // TODO: more detailed docs for physical constants\n speedOfLight: {\n description: 'Speed of light in vacuum',\n examples: ['speedOfLight']\n },\n gravitationConstant: {\n description: 'Newtonian constant of gravitation',\n examples: ['gravitationConstant']\n },\n planckConstant: {\n description: 'Planck constant',\n examples: ['planckConstant']\n },\n reducedPlanckConstant: {\n description: 'Reduced Planck constant',\n examples: ['reducedPlanckConstant']\n },\n magneticConstant: {\n description: 'Magnetic constant (vacuum permeability)',\n examples: ['magneticConstant']\n },\n electricConstant: {\n description: 'Electric constant (vacuum permeability)',\n examples: ['electricConstant']\n },\n vacuumImpedance: {\n description: 'Characteristic impedance of vacuum',\n examples: ['vacuumImpedance']\n },\n coulomb: {\n description: 'Coulomb\\'s constant',\n examples: ['coulomb']\n },\n elementaryCharge: {\n description: 'Elementary charge',\n examples: ['elementaryCharge']\n },\n bohrMagneton: {\n description: 'Borh magneton',\n examples: ['bohrMagneton']\n },\n conductanceQuantum: {\n description: 'Conductance quantum',\n examples: ['conductanceQuantum']\n },\n inverseConductanceQuantum: {\n description: 'Inverse conductance quantum',\n examples: ['inverseConductanceQuantum']\n },\n // josephson: {description: 'Josephson constant', examples: ['josephson']},\n magneticFluxQuantum: {\n description: 'Magnetic flux quantum',\n examples: ['magneticFluxQuantum']\n },\n nuclearMagneton: {\n description: 'Nuclear magneton',\n examples: ['nuclearMagneton']\n },\n klitzing: {\n description: 'Von Klitzing constant',\n examples: ['klitzing']\n },\n bohrRadius: {\n description: 'Borh radius',\n examples: ['bohrRadius']\n },\n classicalElectronRadius: {\n description: 'Classical electron radius',\n examples: ['classicalElectronRadius']\n },\n electronMass: {\n description: 'Electron mass',\n examples: ['electronMass']\n },\n fermiCoupling: {\n description: 'Fermi coupling constant',\n examples: ['fermiCoupling']\n },\n fineStructure: {\n description: 'Fine-structure constant',\n examples: ['fineStructure']\n },\n hartreeEnergy: {\n description: 'Hartree energy',\n examples: ['hartreeEnergy']\n },\n protonMass: {\n description: 'Proton mass',\n examples: ['protonMass']\n },\n deuteronMass: {\n description: 'Deuteron Mass',\n examples: ['deuteronMass']\n },\n neutronMass: {\n description: 'Neutron mass',\n examples: ['neutronMass']\n },\n quantumOfCirculation: {\n description: 'Quantum of circulation',\n examples: ['quantumOfCirculation']\n },\n rydberg: {\n description: 'Rydberg constant',\n examples: ['rydberg']\n },\n thomsonCrossSection: {\n description: 'Thomson cross section',\n examples: ['thomsonCrossSection']\n },\n weakMixingAngle: {\n description: 'Weak mixing angle',\n examples: ['weakMixingAngle']\n },\n efimovFactor: {\n description: 'Efimov factor',\n examples: ['efimovFactor']\n },\n atomicMass: {\n description: 'Atomic mass constant',\n examples: ['atomicMass']\n },\n avogadro: {\n description: 'Avogadro\\'s number',\n examples: ['avogadro']\n },\n boltzmann: {\n description: 'Boltzmann constant',\n examples: ['boltzmann']\n },\n faraday: {\n description: 'Faraday constant',\n examples: ['faraday']\n },\n firstRadiation: {\n description: 'First radiation constant',\n examples: ['firstRadiation']\n },\n loschmidt: {\n description: 'Loschmidt constant at T=273.15 K and p=101.325 kPa',\n examples: ['loschmidt']\n },\n gasConstant: {\n description: 'Gas constant',\n examples: ['gasConstant']\n },\n molarPlanckConstant: {\n description: 'Molar Planck constant',\n examples: ['molarPlanckConstant']\n },\n molarVolume: {\n description: 'Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa',\n examples: ['molarVolume']\n },\n sackurTetrode: {\n description: 'Sackur-Tetrode constant at T=1 K and p=101.325 kPa',\n examples: ['sackurTetrode']\n },\n secondRadiation: {\n description: 'Second radiation constant',\n examples: ['secondRadiation']\n },\n stefanBoltzmann: {\n description: 'Stefan-Boltzmann constant',\n examples: ['stefanBoltzmann']\n },\n wienDisplacement: {\n description: 'Wien displacement law constant',\n examples: ['wienDisplacement']\n },\n // spectralRadiance: {description: 'First radiation constant for spectral radiance', examples: ['spectralRadiance']},\n molarMass: {\n description: 'Molar mass constant',\n examples: ['molarMass']\n },\n molarMassC12: {\n description: 'Molar mass constant of carbon-12',\n examples: ['molarMassC12']\n },\n gravity: {\n description: 'Standard acceleration of gravity (standard acceleration of free-fall on Earth)',\n examples: ['gravity']\n },\n planckLength: {\n description: 'Planck length',\n examples: ['planckLength']\n },\n planckMass: {\n description: 'Planck mass',\n examples: ['planckMass']\n },\n planckTime: {\n description: 'Planck time',\n examples: ['planckTime']\n },\n planckCharge: {\n description: 'Planck charge',\n examples: ['planckCharge']\n },\n planckTemperature: {\n description: 'Planck temperature',\n examples: ['planckTemperature']\n },\n // functions - algebra\n derivative: derivativeDocs,\n lsolve: lsolveDocs,\n lsolveAll: lsolveAllDocs,\n lup: lupDocs,\n lusolve: lusolveDocs,\n simplify: simplifyDocs,\n rationalize: rationalizeDocs,\n slu: sluDocs,\n usolve: usolveDocs,\n usolveAll: usolveAllDocs,\n qr: qrDocs,\n // functions - arithmetic\n abs: absDocs,\n add: addDocs,\n cbrt: cbrtDocs,\n ceil: ceilDocs,\n cube: cubeDocs,\n divide: divideDocs,\n dotDivide: dotDivideDocs,\n dotMultiply: dotMultiplyDocs,\n dotPow: dotPowDocs,\n exp: expDocs,\n expm: expmDocs,\n expm1: expm1Docs,\n fix: fixDocs,\n floor: floorDocs,\n gcd: gcdDocs,\n hypot: hypotDocs,\n lcm: lcmDocs,\n log: logDocs,\n log2: log2Docs,\n log1p: log1pDocs,\n log10: log10Docs,\n mod: modDocs,\n multiply: multiplyDocs,\n norm: normDocs,\n nthRoot: nthRootDocs,\n nthRoots: nthRootsDocs,\n pow: powDocs,\n round: roundDocs,\n sign: signDocs,\n sqrt: sqrtDocs,\n sqrtm: sqrtmDocs,\n square: squareDocs,\n subtract: subtractDocs,\n unaryMinus: unaryMinusDocs,\n unaryPlus: unaryPlusDocs,\n xgcd: xgcdDocs,\n // functions - bitwise\n bitAnd: bitAndDocs,\n bitNot: bitNotDocs,\n bitOr: bitOrDocs,\n bitXor: bitXorDocs,\n leftShift: leftShiftDocs,\n rightArithShift: rightArithShiftDocs,\n rightLogShift: rightLogShiftDocs,\n // functions - combinatorics\n bellNumbers: bellNumbersDocs,\n catalan: catalanDocs,\n composition: compositionDocs,\n stirlingS2: stirlingS2Docs,\n // functions - core\n config: configDocs,\n \"import\": importDocs,\n typed: typedDocs,\n // functions - complex\n arg: argDocs,\n conj: conjDocs,\n re: reDocs,\n im: imDocs,\n // functions - expression\n evaluate: evaluateDocs,\n help: helpDocs,\n // functions - geometry\n distance: distanceDocs,\n intersect: intersectDocs,\n // functions - logical\n and: andDocs,\n not: notDocs,\n or: orDocs,\n xor: xorDocs,\n // functions - matrix\n concat: concatDocs,\n cross: crossDocs,\n column: columnDocs,\n ctranspose: ctransposeDocs,\n det: detDocs,\n diag: diagDocs,\n diff: diffDocs,\n dot: dotDocs,\n getMatrixDataType: getMatrixDataTypeDocs,\n identity: identityDocs,\n filter: filterDocs,\n flatten: flattenDocs,\n forEach: forEachDocs,\n inv: invDocs,\n eigs: eigsDocs,\n kron: kronDocs,\n map: mapDocs,\n ones: onesDocs,\n partitionSelect: partitionSelectDocs,\n range: rangeDocs,\n resize: resizeDocs,\n reshape: reshapeDocs,\n rotate: rotateDocs,\n rotationMatrix: rotationMatrixDocs,\n row: rowDocs,\n size: sizeDocs,\n sort: sortDocs,\n squeeze: squeezeDocs,\n subset: subsetDocs,\n trace: traceDocs,\n transpose: transposeDocs,\n zeros: zerosDocs,\n // functions - probability\n combinations: combinationsDocs,\n combinationsWithRep: combinationsWithRepDocs,\n // distribution: distributionDocs,\n factorial: factorialDocs,\n gamma: gammaDocs,\n kldivergence: kldivergenceDocs,\n multinomial: multinomialDocs,\n permutations: permutationsDocs,\n pickRandom: pickRandomDocs,\n random: randomDocs,\n randomInt: randomIntDocs,\n // functions - relational\n compare: compareDocs,\n compareNatural: compareNaturalDocs,\n compareText: compareTextDocs,\n deepEqual: deepEqualDocs,\n equal: equalDocs,\n equalText: equalTextDocs,\n larger: largerDocs,\n largerEq: largerEqDocs,\n smaller: smallerDocs,\n smallerEq: smallerEqDocs,\n unequal: unequalDocs,\n // functions - set\n setCartesian: setCartesianDocs,\n setDifference: setDifferenceDocs,\n setDistinct: setDistinctDocs,\n setIntersect: setIntersectDocs,\n setIsSubset: setIsSubsetDocs,\n setMultiplicity: setMultiplicityDocs,\n setPowerset: setPowersetDocs,\n setSize: setSizeDocs,\n setSymDifference: setSymDifferenceDocs,\n setUnion: setUnionDocs,\n // functions - special\n erf: erfDocs,\n // functions - statistics\n mad: madDocs,\n max: maxDocs,\n mean: meanDocs,\n median: medianDocs,\n min: minDocs,\n mode: modeDocs,\n prod: prodDocs,\n quantileSeq: quantileSeqDocs,\n std: stdDocs,\n sum: sumDocs,\n variance: varianceDocs,\n // functions - trigonometry\n acos: acosDocs,\n acosh: acoshDocs,\n acot: acotDocs,\n acoth: acothDocs,\n acsc: acscDocs,\n acsch: acschDocs,\n asec: asecDocs,\n asech: asechDocs,\n asin: asinDocs,\n asinh: asinhDocs,\n atan: atanDocs,\n atanh: atanhDocs,\n atan2: atan2Docs,\n cos: cosDocs,\n cosh: coshDocs,\n cot: cotDocs,\n coth: cothDocs,\n csc: cscDocs,\n csch: cschDocs,\n sec: secDocs,\n sech: sechDocs,\n sin: sinDocs,\n sinh: sinhDocs,\n tan: tanDocs,\n tanh: tanhDocs,\n // functions - units\n to: toDocs,\n // functions - utils\n clone: cloneDocs,\n format: formatDocs,\n bin: binDocs,\n oct: octDocs,\n hex: hexDocs,\n isNaN: isNaNDocs,\n isInteger: isIntegerDocs,\n isNegative: isNegativeDocs,\n isNumeric: isNumericDocs,\n hasNumericValue: hasNumericValueDocs,\n isPositive: isPositiveDocs,\n isPrime: isPrimeDocs,\n isZero: isZeroDocs,\n // print: printDocs // TODO: add documentation for print as soon as the parser supports objects.\n typeOf: typeOfDocs,\n numeric: numericDocs\n};","import { factory } from '../../utils/factory';\nimport { getSafeProperty } from '../../utils/customs';\nimport { embeddedDocs } from '../embeddedDocs/embeddedDocs';\nimport { hasOwnProperty } from '../../utils/object';\nvar name = 'help';\nvar dependencies = ['typed', 'mathWithTransform', 'Help'];\nexport var createHelp = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n mathWithTransform = _ref.mathWithTransform,\n Help = _ref.Help;\n\n /**\n * Retrieve help on a function or data type.\n * Help files are retrieved from the embedded documentation in math.docs.\n *\n * Syntax:\n *\n * math.help(search)\n *\n * Examples:\n *\n * console.log(math.help('sin').toString())\n * console.log(math.help(math.add).toString())\n * console.log(math.help(math.add).toJSON())\n *\n * @param {Function | string | Object} search A function or function name\n * for which to get help\n * @return {Help} A help object\n */\n return typed(name, {\n any: function any(search) {\n var prop;\n var searchName = search;\n\n if (typeof search !== 'string') {\n for (prop in mathWithTransform) {\n // search in functions and constants\n if (hasOwnProperty(mathWithTransform, prop) && search === mathWithTransform[prop]) {\n searchName = prop;\n break;\n }\n }\n /* TODO: implement help for data types\n if (!text) {\n // search data type\n for (prop in math.type) {\n if (hasOwnProperty(math, prop)) {\n if (search === math.type[prop]) {\n text = prop\n break\n }\n }\n }\n }\n */\n\n }\n\n var doc = getSafeProperty(embeddedDocs, searchName);\n\n if (!doc) {\n var searchText = typeof searchName === 'function' ? searchName.name : searchName;\n throw new Error('No documentation found on \"' + searchText + '\"');\n }\n\n return new Help(doc);\n }\n });\n});","import { factory } from '../../../utils/factory';\nvar name = 'chain';\nvar dependencies = ['typed', 'Chain'];\nexport var createChain = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n Chain = _ref.Chain;\n\n /**\n * Wrap any value in a chain, allowing to perform chained operations on\n * the value.\n *\n * All methods available in the math.js library can be called upon the chain,\n * and then will be evaluated with the value itself as first argument.\n * The chain can be closed by executing `chain.done()`, which returns\n * the final value.\n *\n * The chain has a number of special functions:\n *\n * - `done()` Finalize the chain and return the chain's value.\n * - `valueOf()` The same as `done()`\n * - `toString()` Executes `math.format()` onto the chain's value, returning\n * a string representation of the value.\n *\n * Syntax:\n *\n * math.chain(value)\n *\n * Examples:\n *\n * math.chain(3)\n * .add(4)\n * .subtract(2)\n * .done() // 5\n *\n * math.chain( [[1, 2], [3, 4]] )\n * .subset(math.index(0, 0), 8)\n * .multiply(3)\n * .done() // [[24, 6], [9, 12]]\n *\n * @param {*} [value] A value of any type on which to start a chained operation.\n * @return {math.Chain} The created chain\n */\n return typed(name, {\n '': function _() {\n return new Chain();\n },\n any: function any(value) {\n return new Chain(value);\n }\n });\n});","import { isOperatorNode } from '../../../utils/is';\nimport { factory } from '../../../utils/factory';\nimport { hasOwnProperty } from '../../../utils/object';\nvar name = 'simplifyUtil';\nvar dependencies = ['FunctionNode', 'OperatorNode', 'SymbolNode'];\nexport var createUtil = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var FunctionNode = _ref.FunctionNode,\n OperatorNode = _ref.OperatorNode,\n SymbolNode = _ref.SymbolNode;\n // TODO commutative/associative properties rely on the arguments\n // e.g. multiply is not commutative for matrices\n // The properties should be calculated from an argument to simplify, or possibly something in math.config\n // the other option is for typed() to specify a return type so that we can evaluate the type of arguments\n var commutative = {\n add: true,\n multiply: true\n };\n var associative = {\n add: true,\n multiply: true\n };\n\n function isCommutative(node, context) {\n if (!isOperatorNode(node)) {\n return true;\n }\n\n var name = node.fn.toString();\n\n if (context && hasOwnProperty(context, name) && hasOwnProperty(context[name], 'commutative')) {\n return context[name].commutative;\n }\n\n return commutative[name] || false;\n }\n\n function isAssociative(node, context) {\n if (!isOperatorNode(node)) {\n return false;\n }\n\n var name = node.fn.toString();\n\n if (context && hasOwnProperty(context, name) && hasOwnProperty(context[name], 'associative')) {\n return context[name].associative;\n }\n\n return associative[name] || false;\n }\n /**\n * Flatten all associative operators in an expression tree.\n * Assumes parentheses have already been removed.\n */\n\n\n function flatten(node) {\n if (!node.args || node.args.length === 0) {\n return node;\n }\n\n node.args = allChildren(node);\n\n for (var i = 0; i < node.args.length; i++) {\n flatten(node.args[i]);\n }\n }\n /**\n * Get the children of a node as if it has been flattened.\n * TODO implement for FunctionNodes\n */\n\n\n function allChildren(node) {\n var op;\n var children = [];\n\n var findChildren = function findChildren(node) {\n for (var i = 0; i < node.args.length; i++) {\n var child = node.args[i];\n\n if (isOperatorNode(child) && op === child.op) {\n findChildren(child);\n } else {\n children.push(child);\n }\n }\n };\n\n if (isAssociative(node)) {\n op = node.op;\n findChildren(node);\n return children;\n } else {\n return node.args;\n }\n }\n /**\n * Unflatten all flattened operators to a right-heavy binary tree.\n */\n\n\n function unflattenr(node) {\n if (!node.args || node.args.length === 0) {\n return;\n }\n\n var makeNode = createMakeNodeFunction(node);\n var l = node.args.length;\n\n for (var i = 0; i < l; i++) {\n unflattenr(node.args[i]);\n }\n\n if (l > 2 && isAssociative(node)) {\n var curnode = node.args.pop();\n\n while (node.args.length > 0) {\n curnode = makeNode([node.args.pop(), curnode]);\n }\n\n node.args = curnode.args;\n }\n }\n /**\n * Unflatten all flattened operators to a left-heavy binary tree.\n */\n\n\n function unflattenl(node) {\n if (!node.args || node.args.length === 0) {\n return;\n }\n\n var makeNode = createMakeNodeFunction(node);\n var l = node.args.length;\n\n for (var i = 0; i < l; i++) {\n unflattenl(node.args[i]);\n }\n\n if (l > 2 && isAssociative(node)) {\n var curnode = node.args.shift();\n\n while (node.args.length > 0) {\n curnode = makeNode([curnode, node.args.shift()]);\n }\n\n node.args = curnode.args;\n }\n }\n\n function createMakeNodeFunction(node) {\n if (isOperatorNode(node)) {\n return function (args) {\n try {\n return new OperatorNode(node.op, node.fn, args, node.implicit);\n } catch (err) {\n console.error(err);\n return [];\n }\n };\n } else {\n return function (args) {\n return new FunctionNode(new SymbolNode(node.name), args);\n };\n }\n }\n\n return {\n createMakeNodeFunction: createMakeNodeFunction,\n isCommutative: isCommutative,\n isAssociative: isAssociative,\n flatten: flatten,\n allChildren: allChildren,\n unflattenr: unflattenr,\n unflattenl: unflattenl\n };\n});","import { isConstantNode, isFunctionNode, isOperatorNode, isParenthesisNode, isSymbolNode } from '../../../utils/is';\nimport { factory } from '../../../utils/factory';\nvar name = 'simplifyCore';\nvar dependencies = ['equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'ConstantNode', 'OperatorNode', 'FunctionNode', 'ParenthesisNode'];\nexport var createSimplifyCore = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var equal = _ref.equal,\n isZero = _ref.isZero,\n add = _ref.add,\n subtract = _ref.subtract,\n multiply = _ref.multiply,\n divide = _ref.divide,\n pow = _ref.pow,\n ConstantNode = _ref.ConstantNode,\n OperatorNode = _ref.OperatorNode,\n FunctionNode = _ref.FunctionNode,\n ParenthesisNode = _ref.ParenthesisNode;\n var node0 = new ConstantNode(0);\n var node1 = new ConstantNode(1);\n /**\n * simplifyCore() performs single pass simplification suitable for\n * applications requiring ultimate performance. In contrast, simplify()\n * extends simplifyCore() with additional passes to provide deeper\n * simplification.\n *\n * Syntax:\n *\n * simplify.simplifyCore(expr)\n *\n * Examples:\n *\n * const f = math.parse('2 * 1 * x ^ (2 - 1)')\n * math.simplify.simpifyCore(f) // Node {2 * x}\n * math.simplify('2 * 1 * x ^ (2 - 1)', [math.simplify.simpifyCore]) // Node {2 * x}\n *\n * See also:\n *\n * derivative\n *\n * @param {Node} node\n * The expression to be simplified\n */\n\n function simplifyCore(node) {\n if (isOperatorNode(node) && node.isUnary()) {\n var a0 = simplifyCore(node.args[0]);\n\n if (node.op === '+') {\n // unary plus\n return a0;\n }\n\n if (node.op === '-') {\n // unary minus\n if (isOperatorNode(a0)) {\n if (a0.isUnary() && a0.op === '-') {\n return a0.args[0];\n } else if (a0.isBinary() && a0.fn === 'subtract') {\n return new OperatorNode('-', 'subtract', [a0.args[1], a0.args[0]]);\n }\n }\n\n return new OperatorNode(node.op, node.fn, [a0]);\n }\n } else if (isOperatorNode(node) && node.isBinary()) {\n var _a = simplifyCore(node.args[0]);\n\n var a1 = simplifyCore(node.args[1]);\n\n if (node.op === '+') {\n if (isConstantNode(_a)) {\n if (isZero(_a.value)) {\n return a1;\n } else if (isConstantNode(a1)) {\n return new ConstantNode(add(_a.value, a1.value));\n }\n }\n\n if (isConstantNode(a1) && isZero(a1.value)) {\n return _a;\n }\n\n if (isOperatorNode(a1) && a1.isUnary() && a1.op === '-') {\n return new OperatorNode('-', 'subtract', [_a, a1.args[0]]);\n }\n\n return new OperatorNode(node.op, node.fn, a1 ? [_a, a1] : [_a]);\n } else if (node.op === '-') {\n if (isConstantNode(_a) && a1) {\n if (isConstantNode(a1)) {\n return new ConstantNode(subtract(_a.value, a1.value));\n } else if (isZero(_a.value)) {\n return new OperatorNode('-', 'unaryMinus', [a1]);\n }\n } // if (node.fn === \"subtract\" && node.args.length === 2) {\n\n\n if (node.fn === 'subtract') {\n if (isConstantNode(a1) && isZero(a1.value)) {\n return _a;\n }\n\n if (isOperatorNode(a1) && a1.isUnary() && a1.op === '-') {\n return simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]));\n }\n\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n } else if (node.op === '*') {\n if (isConstantNode(_a)) {\n if (isZero(_a.value)) {\n return node0;\n } else if (equal(_a.value, 1)) {\n return a1;\n } else if (isConstantNode(a1)) {\n return new ConstantNode(multiply(_a.value, a1.value));\n }\n }\n\n if (isConstantNode(a1)) {\n if (isZero(a1.value)) {\n return node0;\n } else if (equal(a1.value, 1)) {\n return _a;\n } else if (isOperatorNode(_a) && _a.isBinary() && _a.op === node.op) {\n var a00 = _a.args[0];\n\n if (isConstantNode(a00)) {\n var a00a1 = new ConstantNode(multiply(a00.value, a1.value));\n return new OperatorNode(node.op, node.fn, [a00a1, _a.args[1]], node.implicit); // constants on left\n }\n }\n\n return new OperatorNode(node.op, node.fn, [a1, _a], node.implicit); // constants on left\n }\n\n return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);\n } else if (node.op === '/') {\n if (isConstantNode(_a)) {\n if (isZero(_a.value)) {\n return node0;\n } else if (isConstantNode(a1) && (equal(a1.value, 1) || equal(a1.value, 2) || equal(a1.value, 4))) {\n return new ConstantNode(divide(_a.value, a1.value));\n }\n }\n\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n } else if (node.op === '^') {\n if (isConstantNode(a1)) {\n if (isZero(a1.value)) {\n return node1;\n } else if (equal(a1.value, 1)) {\n return _a;\n } else {\n if (isConstantNode(_a)) {\n // fold constant\n return new ConstantNode(pow(_a.value, a1.value));\n } else if (isOperatorNode(_a) && _a.isBinary() && _a.op === '^') {\n var a01 = _a.args[1];\n\n if (isConstantNode(a01)) {\n return new OperatorNode(node.op, node.fn, [_a.args[0], new ConstantNode(multiply(a01.value, a1.value))]);\n }\n }\n }\n }\n\n return new OperatorNode(node.op, node.fn, [_a, a1]);\n }\n } else if (isParenthesisNode(node)) {\n var c = simplifyCore(node.content);\n\n if (isParenthesisNode(c) || isSymbolNode(c) || isConstantNode(c)) {\n return c;\n }\n\n return new ParenthesisNode(c);\n } else if (isFunctionNode(node)) {\n var args = node.args.map(simplifyCore).map(function (arg) {\n return isParenthesisNode(arg) ? arg.content : arg;\n });\n return new FunctionNode(simplifyCore(node.fn), args);\n } else {// cannot simplify\n }\n\n return node;\n }\n\n return simplifyCore;\n});","// TODO this could be improved by simplifying seperated constants under associative and commutative operators\nimport { isFraction, isNode, isOperatorNode } from '../../../utils/is';\nimport { factory } from '../../../utils/factory';\nimport { createUtil } from './util';\nimport { noBignumber, noFraction } from '../../../utils/noop';\nvar name = 'simplifyConstant';\nvar dependencies = ['typed', 'config', 'mathWithTransform', '?fraction', '?bignumber', 'ConstantNode', 'OperatorNode', 'FunctionNode', 'SymbolNode'];\nexport var createSimplifyConstant = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n config = _ref.config,\n mathWithTransform = _ref.mathWithTransform,\n fraction = _ref.fraction,\n bignumber = _ref.bignumber,\n ConstantNode = _ref.ConstantNode,\n OperatorNode = _ref.OperatorNode,\n FunctionNode = _ref.FunctionNode,\n SymbolNode = _ref.SymbolNode;\n\n var _createUtil = createUtil({\n FunctionNode: FunctionNode,\n OperatorNode: OperatorNode,\n SymbolNode: SymbolNode\n }),\n isCommutative = _createUtil.isCommutative,\n isAssociative = _createUtil.isAssociative,\n allChildren = _createUtil.allChildren,\n createMakeNodeFunction = _createUtil.createMakeNodeFunction;\n\n function simplifyConstant(expr, options) {\n var res = foldFraction(expr, options);\n return isNode(res) ? res : _toNode(res);\n }\n\n function _eval(fnname, args, options) {\n try {\n return _toNumber(mathWithTransform[fnname].apply(null, args), options);\n } catch (ignore) {\n // sometimes the implicit type conversion causes the evaluation to fail, so we'll try again after removing Fractions\n args = args.map(function (x) {\n if (isFraction(x)) {\n return x.valueOf();\n }\n\n return x;\n });\n return _toNumber(mathWithTransform[fnname].apply(null, args), options);\n }\n }\n\n var _toNode = typed({\n Fraction: _fractionToNode,\n number: function number(n) {\n if (n < 0) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n\n return new ConstantNode(n);\n },\n BigNumber: function BigNumber(n) {\n if (n < 0) {\n return unaryMinusNode(new ConstantNode(-n));\n }\n\n return new ConstantNode(n); // old parameters: (n.toString(), 'number')\n },\n Complex: function Complex(s) {\n throw new Error('Cannot convert Complex number to Node');\n }\n }); // convert a number to a fraction only if it can be expressed exactly\n\n\n function _exactFraction(n, options) {\n var exactFractions = options && options.exactFractions !== false;\n\n if (exactFractions && isFinite(n) && fraction) {\n var f = fraction(n);\n\n if (f.valueOf() === n) {\n return f;\n }\n }\n\n return n;\n } // Convert numbers to a preferred number type in preference order: Fraction, number, Complex\n // BigNumbers are left alone\n\n\n var _toNumber = typed({\n 'string, Object': function stringObject(s, options) {\n if (config.number === 'BigNumber') {\n if (bignumber === undefined) {\n noBignumber();\n }\n\n return bignumber(s);\n } else if (config.number === 'Fraction') {\n if (fraction === undefined) {\n noFraction();\n }\n\n return fraction(s);\n } else {\n var n = parseFloat(s);\n return _exactFraction(n, options);\n }\n },\n 'Fraction, Object': function FractionObject(s, options) {\n return s;\n },\n // we don't need options here\n 'BigNumber, Object': function BigNumberObject(s, options) {\n return s;\n },\n // we don't need options here\n 'number, Object': function numberObject(s, options) {\n return _exactFraction(s, options);\n },\n 'Complex, Object': function ComplexObject(s, options) {\n if (s.im !== 0) {\n return s;\n }\n\n return _exactFraction(s.re, options);\n }\n });\n\n function unaryMinusNode(n) {\n return new OperatorNode('-', 'unaryMinus', [n]);\n }\n\n function _fractionToNode(f) {\n var n;\n var vn = f.s * f.n;\n\n if (vn < 0) {\n n = new OperatorNode('-', 'unaryMinus', [new ConstantNode(-vn)]);\n } else {\n n = new ConstantNode(vn);\n }\n\n if (f.d === 1) {\n return n;\n }\n\n return new OperatorNode('/', 'divide', [n, new ConstantNode(f.d)]);\n }\n /*\n * Create a binary tree from a list of Fractions and Nodes.\n * Tries to fold Fractions by evaluating them until the first Node in the list is hit, so\n * `args` should be sorted to have the Fractions at the start (if the operator is commutative).\n * @param args - list of Fractions and Nodes\n * @param fn - evaluator for the binary operation evaluator that accepts two Fractions\n * @param makeNode - creates a binary OperatorNode/FunctionNode from a list of child Nodes\n * if args.length is 1, returns args[0]\n * @return - Either a Node representing a binary expression or Fraction\n */\n\n\n function foldOp(fn, args, makeNode, options) {\n return args.reduce(function (a, b) {\n if (!isNode(a) && !isNode(b)) {\n try {\n return _eval(fn, [a, b], options);\n } catch (ignoreandcontinue) {}\n\n a = _toNode(a);\n b = _toNode(b);\n } else if (!isNode(a)) {\n a = _toNode(a);\n } else if (!isNode(b)) {\n b = _toNode(b);\n }\n\n return makeNode([a, b]);\n });\n } // destroys the original node and returns a folded one\n\n\n function foldFraction(node, options) {\n switch (node.type) {\n case 'SymbolNode':\n return node;\n\n case 'ConstantNode':\n if (typeof node.value === 'number' || !isNaN(node.value)) {\n return _toNumber(node.value, options);\n }\n\n return node;\n\n case 'FunctionNode':\n if (mathWithTransform[node.name] && mathWithTransform[node.name].rawArgs) {\n return node;\n }\n\n {\n // Process operators as OperatorNode\n var operatorFunctions = ['add', 'multiply'];\n\n if (operatorFunctions.indexOf(node.name) === -1) {\n var args = node.args.map(function (arg) {\n return foldFraction(arg, options);\n }); // If all args are numbers\n\n if (!args.some(isNode)) {\n try {\n return _eval(node.name, args, options);\n } catch (ignoreandcontine) {}\n } // Convert all args to nodes and construct a symbolic function call\n\n\n args = args.map(function (arg) {\n return isNode(arg) ? arg : _toNode(arg);\n });\n return new FunctionNode(node.name, args);\n } else {// treat as operator\n }\n }\n\n /* falls through */\n\n case 'OperatorNode':\n {\n var fn = node.fn.toString();\n\n var _args;\n\n var res;\n var makeNode = createMakeNodeFunction(node);\n\n if (isOperatorNode(node) && node.isUnary()) {\n _args = [foldFraction(node.args[0], options)];\n\n if (!isNode(_args[0])) {\n res = _eval(fn, _args, options);\n } else {\n res = makeNode(_args);\n }\n } else if (isAssociative(node)) {\n _args = allChildren(node);\n _args = _args.map(function (arg) {\n return foldFraction(arg, options);\n });\n\n if (isCommutative(fn)) {\n // commutative binary operator\n var consts = [];\n var vars = [];\n\n for (var i = 0; i < _args.length; i++) {\n if (!isNode(_args[i])) {\n consts.push(_args[i]);\n } else {\n vars.push(_args[i]);\n }\n }\n\n if (consts.length > 1) {\n res = foldOp(fn, consts, makeNode, options);\n vars.unshift(res);\n res = foldOp(fn, vars, makeNode, options);\n } else {\n // we won't change the children order since it's not neccessary\n res = foldOp(fn, _args, makeNode, options);\n }\n } else {\n // non-commutative binary operator\n res = foldOp(fn, _args, makeNode, options);\n }\n } else {\n // non-associative binary operator\n _args = node.args.map(function (arg) {\n return foldFraction(arg, options);\n });\n res = foldOp(fn, _args, makeNode, options);\n }\n\n return res;\n }\n\n case 'ParenthesisNode':\n // remove the uneccessary parenthesis\n return foldFraction(node.content, options);\n\n case 'AccessorNode':\n /* falls through */\n\n case 'ArrayNode':\n /* falls through */\n\n case 'AssignmentNode':\n /* falls through */\n\n case 'BlockNode':\n /* falls through */\n\n case 'FunctionAssignmentNode':\n /* falls through */\n\n case 'IndexNode':\n /* falls through */\n\n case 'ObjectNode':\n /* falls through */\n\n case 'RangeNode':\n /* falls through */\n\n case 'ConditionalNode':\n /* falls through */\n\n default:\n throw new Error(\"Unimplemented node type in simplifyConstant: \".concat(node.type));\n }\n }\n\n return simplifyConstant;\n});","import { isFunctionNode, isNode, isOperatorNode, isParenthesisNode, isSymbolNode } from '../../../utils/is';\nimport { factory } from '../../../utils/factory';\nvar name = 'resolve';\nvar dependencies = ['parse', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];\nexport var createResolve = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var parse = _ref.parse,\n FunctionNode = _ref.FunctionNode,\n OperatorNode = _ref.OperatorNode,\n ParenthesisNode = _ref.ParenthesisNode;\n\n /**\n * resolve(expr, scope) replaces variable nodes with their scoped values\n *\n * Syntax:\n *\n * simplify.resolve(expr, scope)\n *\n * Examples:\n *\n * math.simplify.resolve('x + y', {x:1, y:2}) // Node {1 + 2}\n * math.simplify.resolve(math.parse('x+y'), {x:1, y:2}) // Node {1 + 2}\n * math.simplify('x+y', {x:2, y:'x+x'}).toString() // \"6\"\n *\n * @param {Node} node\n * The expression tree to be simplified\n * @param {Object} scope with variables to be resolved\n */\n function resolve(node, scope) {\n if (!scope) {\n return node;\n }\n\n if (isSymbolNode(node)) {\n var value = scope[node.name];\n\n if (isNode(value)) {\n return resolve(value, scope);\n } else if (typeof value === 'number') {\n return parse(String(value));\n }\n } else if (isOperatorNode(node)) {\n var args = node.args.map(function (arg) {\n return resolve(arg, scope);\n });\n return new OperatorNode(node.op, node.fn, args, node.implicit);\n } else if (isParenthesisNode(node)) {\n return new ParenthesisNode(resolve(node.content, scope));\n } else if (isFunctionNode(node)) {\n var _args = node.args.map(function (arg) {\n return resolve(arg, scope);\n });\n\n return new FunctionNode(node.name, _args);\n }\n\n return node;\n }\n\n return resolve;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { isConstantNode, isParenthesisNode } from '../../utils/is';\nimport { factory } from '../../utils/factory';\nimport { createUtil } from './simplify/util';\nimport { createSimplifyCore } from './simplify/simplifyCore';\nimport { createSimplifyConstant } from './simplify/simplifyConstant';\nimport { createResolve } from './simplify/resolve';\nimport { hasOwnProperty } from '../../utils/object';\nvar name = 'simplify';\nvar dependencies = ['config', 'typed', 'parse', 'add', 'subtract', 'multiply', 'divide', 'pow', 'isZero', 'equal', '?fraction', '?bignumber', 'mathWithTransform', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createSimplify = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var config = _ref.config,\n typed = _ref.typed,\n parse = _ref.parse,\n add = _ref.add,\n subtract = _ref.subtract,\n multiply = _ref.multiply,\n divide = _ref.divide,\n pow = _ref.pow,\n isZero = _ref.isZero,\n equal = _ref.equal,\n fraction = _ref.fraction,\n bignumber = _ref.bignumber,\n mathWithTransform = _ref.mathWithTransform,\n ConstantNode = _ref.ConstantNode,\n FunctionNode = _ref.FunctionNode,\n OperatorNode = _ref.OperatorNode,\n ParenthesisNode = _ref.ParenthesisNode,\n SymbolNode = _ref.SymbolNode;\n var simplifyConstant = createSimplifyConstant({\n typed: typed,\n config: config,\n mathWithTransform: mathWithTransform,\n fraction: fraction,\n bignumber: bignumber,\n ConstantNode: ConstantNode,\n OperatorNode: OperatorNode,\n FunctionNode: FunctionNode,\n SymbolNode: SymbolNode\n });\n var simplifyCore = createSimplifyCore({\n equal: equal,\n isZero: isZero,\n add: add,\n subtract: subtract,\n multiply: multiply,\n divide: divide,\n pow: pow,\n ConstantNode: ConstantNode,\n OperatorNode: OperatorNode,\n FunctionNode: FunctionNode,\n ParenthesisNode: ParenthesisNode\n });\n var resolve = createResolve({\n parse: parse,\n FunctionNode: FunctionNode,\n OperatorNode: OperatorNode,\n ParenthesisNode: ParenthesisNode\n });\n\n var _createUtil = createUtil({\n FunctionNode: FunctionNode,\n OperatorNode: OperatorNode,\n SymbolNode: SymbolNode\n }),\n isCommutative = _createUtil.isCommutative,\n isAssociative = _createUtil.isAssociative,\n flatten = _createUtil.flatten,\n unflattenr = _createUtil.unflattenr,\n unflattenl = _createUtil.unflattenl,\n createMakeNodeFunction = _createUtil.createMakeNodeFunction;\n /**\n * Simplify an expression tree.\n *\n * A list of rules are applied to an expression, repeating over the list until\n * no further changes are made.\n * It's possible to pass a custom set of rules to the function as second\n * argument. A rule can be specified as an object, string, or function:\n *\n * const rules = [\n * { l: 'n1*n3 + n2*n3', r: '(n1+n2)*n3' },\n * 'n1*n3 + n2*n3 -> (n1+n2)*n3',\n * function (node) {\n * // ... return a new node or return the node unchanged\n * return node\n * }\n * ]\n *\n * String and object rules consist of a left and right pattern. The left is\n * used to match against the expression and the right determines what matches\n * are replaced with. The main difference between a pattern and a normal\n * expression is that variables starting with the following characters are\n * interpreted as wildcards:\n *\n * - 'n' - matches any Node\n * - 'c' - matches any ConstantNode\n * - 'v' - matches any Node that is not a ConstantNode\n *\n * The default list of rules is exposed on the function as `simplify.rules`\n * and can be used as a basis to built a set of custom rules.\n *\n * For more details on the theory, see:\n *\n * - [Strategies for simplifying math expressions (Stackoverflow)](https://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions)\n * - [Symbolic computation - Simplification (Wikipedia)](https://en.wikipedia.org/wiki/Symbolic_computation#Simplification)\n *\n * An optional `options` argument can be passed as last argument of `simplify`.\n * There is currently one option available: `exactFractions`, a boolean which\n * is `true` by default.\n *\n * Syntax:\n *\n * simplify(expr)\n * simplify(expr, rules)\n * simplify(expr, rules)\n * simplify(expr, rules, scope)\n * simplify(expr, rules, scope, options)\n * simplify(expr, scope)\n * simplify(expr, scope, options)\n *\n * Examples:\n *\n * math.simplify('2 * 1 * x ^ (2 - 1)') // Node \"2 * x\"\n * math.simplify('2 * 3 * x', {x: 4}) // Node \"24\"\n * const f = math.parse('2 * 1 * x ^ (2 - 1)')\n * math.simplify(f) // Node \"2 * x\"\n * math.simplify('0.4 * x', {}, {exactFractions: true}) // Node \"x * 2 / 5\"\n * math.simplify('0.4 * x', {}, {exactFractions: false}) // Node \"0.4 * x\"\n *\n * See also:\n *\n * derivative, parse, evaluate, rationalize\n *\n * @param {Node | string} expr\n * The expression to be simplified\n * @param {Array<{l:string, r: string} | string | function>} [rules]\n * Optional list with custom rules\n * @return {Node} Returns the simplified form of `expr`\n */\n\n\n var simplify = typed('simplify', {\n string: function string(expr) {\n return this(parse(expr), this.rules, {}, {});\n },\n 'string, Object': function stringObject(expr, scope) {\n return this(parse(expr), this.rules, scope, {});\n },\n 'string, Object, Object': function stringObjectObject(expr, scope, options) {\n return this(parse(expr), this.rules, scope, options);\n },\n 'string, Array': function stringArray(expr, rules) {\n return this(parse(expr), rules, {}, {});\n },\n 'string, Array, Object': function stringArrayObject(expr, rules, scope) {\n return this(parse(expr), rules, scope, {});\n },\n 'string, Array, Object, Object': function stringArrayObjectObject(expr, rules, scope, options) {\n return this(parse(expr), rules, scope, options);\n },\n 'Node, Object': function NodeObject(expr, scope) {\n return this(expr, this.rules, scope, {});\n },\n 'Node, Object, Object': function NodeObjectObject(expr, scope, options) {\n return this(expr, this.rules, scope, options);\n },\n Node: function Node(expr) {\n return this(expr, this.rules, {}, {});\n },\n 'Node, Array': function NodeArray(expr, rules) {\n return this(expr, rules, {}, {});\n },\n 'Node, Array, Object': function NodeArrayObject(expr, rules, scope) {\n return this(expr, rules, scope, {});\n },\n 'Node, Array, Object, Object': function NodeArrayObjectObject(expr, rules, scope, options) {\n rules = _buildRules(rules);\n var res = resolve(expr, scope);\n res = removeParens(res);\n var visited = {};\n var str = res.toString({\n parenthesis: 'all'\n });\n\n while (!visited[str]) {\n visited[str] = true;\n _lastsym = 0; // counter for placeholder symbols\n\n for (var i = 0; i < rules.length; i++) {\n if (typeof rules[i] === 'function') {\n res = rules[i](res, options);\n } else {\n flatten(res);\n res = applyRule(res, rules[i]);\n }\n\n unflattenl(res); // using left-heavy binary tree here since custom rule functions may expect it\n }\n\n str = res.toString({\n parenthesis: 'all'\n });\n }\n\n return res;\n }\n });\n simplify.simplifyCore = simplifyCore;\n simplify.resolve = resolve;\n\n function removeParens(node) {\n return node.transform(function (node, path, parent) {\n return isParenthesisNode(node) ? removeParens(node.content) : node;\n });\n } // All constants that are allowed in rules\n\n\n var SUPPORTED_CONSTANTS = {\n \"true\": true,\n \"false\": true,\n e: true,\n i: true,\n Infinity: true,\n LN2: true,\n LN10: true,\n LOG2E: true,\n LOG10E: true,\n NaN: true,\n phi: true,\n pi: true,\n SQRT1_2: true,\n SQRT2: true,\n tau: true // null: false,\n // undefined: false,\n // version: false,\n\n }; // Array of strings, used to build the ruleSet.\n // Each l (left side) and r (right side) are parsed by\n // the expression parser into a node tree.\n // Left hand sides are matched to subtrees within the\n // expression to be parsed and replaced with the right\n // hand side.\n // TODO: Add support for constraints on constants (either in the form of a '=' expression or a callback [callback allows things like comparing symbols alphabetically])\n // To evaluate lhs constants for rhs constants, use: { l: 'c1+c2', r: 'c3', evaluate: 'c3 = c1 + c2' }. Multiple assignments are separated by ';' in block format.\n // It is possible to get into an infinite loop with conflicting rules\n\n simplify.rules = [simplifyCore, // { l: 'n+0', r: 'n' }, // simplifyCore\n // { l: 'n^0', r: '1' }, // simplifyCore\n // { l: '0*n', r: '0' }, // simplifyCore\n // { l: 'n/n', r: '1'}, // simplifyCore\n // { l: 'n^1', r: 'n' }, // simplifyCore\n // { l: '+n1', r:'n1' }, // simplifyCore\n // { l: 'n--n1', r:'n+n1' }, // simplifyCore\n {\n l: 'log(e)',\n r: '1'\n }, // temporary rules\n {\n l: 'n-n1',\n r: 'n+-n1'\n }, // temporarily replace 'subtract' so we can further flatten the 'add' operator\n {\n l: '-(c*v)',\n r: '(-c) * v'\n }, // make non-constant terms positive\n {\n l: '-v',\n r: '(-1) * v'\n }, {\n l: 'n/n1^n2',\n r: 'n*n1^-n2'\n }, // temporarily replace 'divide' so we can further flatten the 'multiply' operator\n {\n l: 'n/n1',\n r: 'n*n1^-1'\n }, // expand nested exponentiation\n {\n l: '(n ^ n1) ^ n2',\n r: 'n ^ (n1 * n2)'\n }, // collect like factors\n {\n l: 'n*n',\n r: 'n^2'\n }, {\n l: 'n * n^n1',\n r: 'n^(n1+1)'\n }, {\n l: 'n^n1 * n^n2',\n r: 'n^(n1+n2)'\n }, // collect like terms\n {\n l: 'n+n',\n r: '2*n'\n }, {\n l: 'n+-n',\n r: '0'\n }, {\n l: 'n1*n2 + n2',\n r: '(n1+1)*n2'\n }, {\n l: 'n1*n3 + n2*n3',\n r: '(n1+n2)*n3'\n }, // remove parenthesis in the case of negating a quantitiy\n {\n l: 'n1 + -1 * (n2 + n3)',\n r: 'n1 + -1 * n2 + -1 * n3'\n }, simplifyConstant, {\n l: '(-n)*n1',\n r: '-(n*n1)'\n }, // make factors positive (and undo 'make non-constant terms positive')\n // ordering of constants\n {\n l: 'c+v',\n r: 'v+c',\n context: {\n add: {\n commutative: false\n }\n }\n }, {\n l: 'v*c',\n r: 'c*v',\n context: {\n multiply: {\n commutative: false\n }\n }\n }, // undo temporary rules\n // { l: '(-1) * n', r: '-n' }, // #811 added test which proved this is redundant\n {\n l: 'n+-n1',\n r: 'n-n1'\n }, // undo replace 'subtract'\n {\n l: 'n*(n1^-1)',\n r: 'n/n1'\n }, // undo replace 'divide'\n {\n l: 'n*n1^-n2',\n r: 'n/n1^n2'\n }, {\n l: 'n1^-1',\n r: '1/n1'\n }, {\n l: 'n*(n1/n2)',\n r: '(n*n1)/n2'\n }, // '*' before '/'\n {\n l: 'n-(n1+n2)',\n r: 'n-n1-n2'\n }, // '-' before '+'\n // { l: '(n1/n2)/n3', r: 'n1/(n2*n3)' },\n // { l: '(n*n1)/(n*n2)', r: 'n1/n2' },\n {\n l: '1*n',\n r: 'n'\n }, // this pattern can be produced by simplifyConstant\n {\n l: 'n1/(n2/n3)',\n r: '(n1*n3)/n2'\n }];\n /**\n * Parse the string array of rules into nodes\n *\n * Example syntax for rules:\n *\n * Position constants to the left in a product:\n * { l: 'n1 * c1', r: 'c1 * n1' }\n * n1 is any Node, and c1 is a ConstantNode.\n *\n * Apply difference of squares formula:\n * { l: '(n1 - n2) * (n1 + n2)', r: 'n1^2 - n2^2' }\n * n1, n2 mean any Node.\n *\n * Short hand notation:\n * 'n1 * c1 -> c1 * n1'\n */\n\n function _buildRules(rules) {\n // Array of rules to be used to simplify expressions\n var ruleSet = [];\n\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n var newRule = void 0;\n\n var ruleType = _typeof(rule);\n\n switch (ruleType) {\n case 'string':\n {\n var lr = rule.split('->');\n\n if (lr.length === 2) {\n rule = {\n l: lr[0],\n r: lr[1]\n };\n } else {\n throw SyntaxError('Could not parse rule: ' + rule);\n }\n }\n\n /* falls through */\n\n case 'object':\n newRule = {\n l: removeParens(parse(rule.l)),\n r: removeParens(parse(rule.r))\n };\n\n if (rule.context) {\n newRule.evaluate = rule.context;\n }\n\n if (rule.evaluate) {\n newRule.evaluate = parse(rule.evaluate);\n }\n\n if (isAssociative(newRule.l)) {\n var makeNode = createMakeNodeFunction(newRule.l);\n\n var expandsym = _getExpandPlaceholderSymbol();\n\n newRule.expanded = {};\n newRule.expanded.l = makeNode([newRule.l.clone(), expandsym]); // Push the expandsym into the deepest possible branch.\n // This helps to match the newRule against nodes returned from getSplits() later on.\n\n flatten(newRule.expanded.l);\n unflattenr(newRule.expanded.l);\n newRule.expanded.r = makeNode([newRule.r, expandsym]);\n }\n\n break;\n\n case 'function':\n newRule = rule;\n break;\n\n default:\n throw TypeError('Unsupported type of rule: ' + ruleType);\n } // console.log('Adding rule: ' + rules[i])\n // console.log(newRule)\n\n\n ruleSet.push(newRule);\n }\n\n return ruleSet;\n }\n\n var _lastsym = 0;\n\n function _getExpandPlaceholderSymbol() {\n return new SymbolNode('_p' + _lastsym++);\n }\n /**\n * Returns a simplfied form of node, or the original node if no simplification was possible.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The simplified form of `expr`, or the original node if no simplification was possible.\n */\n\n\n var applyRule = typed('applyRule', {\n 'Node, Object': function NodeObject(node, rule) {\n // console.log('Entering applyRule(' + node.toString() + ')')\n // Do not clone node unless we find a match\n var res = node; // First replace our child nodes with their simplified versions\n // If a child could not be simplified, the assignments will have\n // no effect since the node is returned unchanged\n\n if (res instanceof OperatorNode || res instanceof FunctionNode) {\n if (res.args) {\n for (var i = 0; i < res.args.length; i++) {\n res.args[i] = applyRule(res.args[i], rule);\n }\n }\n } else if (res instanceof ParenthesisNode) {\n if (res.content) {\n res.content = applyRule(res.content, rule);\n }\n } // Try to match a rule against this node\n\n\n var repl = rule.r;\n\n var matches = _ruleMatch(rule.l, res)[0]; // If the rule is associative operator, we can try matching it while allowing additional terms.\n // This allows us to match rules like 'n+n' to the expression '(1+x)+x' or even 'x+1+x' if the operator is commutative.\n\n\n if (!matches && rule.expanded) {\n repl = rule.expanded.r;\n matches = _ruleMatch(rule.expanded.l, res)[0];\n }\n\n if (matches) {\n // const before = res.toString({parenthesis: 'all'})\n // Create a new node by cloning the rhs of the matched rule\n // we keep any implicit multiplication state if relevant\n var implicit = res.implicit;\n res = repl.clone();\n\n if (implicit && 'implicit' in repl) {\n res.implicit = true;\n } // Replace placeholders with their respective nodes without traversing deeper into the replaced nodes\n\n\n res = res.transform(function (node) {\n if (node.isSymbolNode && hasOwnProperty(matches.placeholders, node.name)) {\n return matches.placeholders[node.name].clone();\n } else {\n return node;\n }\n }); // const after = res.toString({parenthesis: 'all'})\n // console.log('Simplified ' + before + ' to ' + after)\n }\n\n return res;\n }\n });\n /**\n * Get (binary) combinations of a flattened binary node\n * e.g. +(node1, node2, node3) -> [\n * +(node1, +(node2, node3)),\n * +(node2, +(node1, node3)),\n * +(node3, +(node1, node2))]\n *\n */\n\n function getSplits(node, context) {\n var res = [];\n var right, rightArgs;\n var makeNode = createMakeNodeFunction(node);\n\n if (isCommutative(node, context)) {\n for (var i = 0; i < node.args.length; i++) {\n rightArgs = node.args.slice(0);\n rightArgs.splice(i, 1);\n right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);\n res.push(makeNode([node.args[i], right]));\n }\n } else {\n rightArgs = node.args.slice(1);\n right = rightArgs.length === 1 ? rightArgs[0] : makeNode(rightArgs);\n res.push(makeNode([node.args[0], right]));\n }\n\n return res;\n }\n /**\n * Returns the set union of two match-placeholders or null if there is a conflict.\n */\n\n\n function mergeMatch(match1, match2) {\n var res = {\n placeholders: {}\n }; // Some matches may not have placeholders; this is OK\n\n if (!match1.placeholders && !match2.placeholders) {\n return res;\n } else if (!match1.placeholders) {\n return match2;\n } else if (!match2.placeholders) {\n return match1;\n } // Placeholders with the same key must match exactly\n\n\n for (var key in match1.placeholders) {\n if (hasOwnProperty(match1.placeholders, key)) {\n res.placeholders[key] = match1.placeholders[key];\n\n if (hasOwnProperty(match2.placeholders, key)) {\n if (!_exactMatch(match1.placeholders[key], match2.placeholders[key])) {\n return null;\n }\n }\n }\n }\n\n for (var _key in match2.placeholders) {\n if (hasOwnProperty(match2.placeholders, _key)) {\n res.placeholders[_key] = match2.placeholders[_key];\n }\n }\n\n return res;\n }\n /**\n * Combine two lists of matches by applying mergeMatch to the cartesian product of two lists of matches.\n * Each list represents matches found in one child of a node.\n */\n\n\n function combineChildMatches(list1, list2) {\n var res = [];\n\n if (list1.length === 0 || list2.length === 0) {\n return res;\n }\n\n var merged;\n\n for (var i1 = 0; i1 < list1.length; i1++) {\n for (var i2 = 0; i2 < list2.length; i2++) {\n merged = mergeMatch(list1[i1], list2[i2]);\n\n if (merged) {\n res.push(merged);\n }\n }\n }\n\n return res;\n }\n /**\n * Combine multiple lists of matches by applying mergeMatch to the cartesian product of two lists of matches.\n * Each list represents matches found in one child of a node.\n * Returns a list of unique matches.\n */\n\n\n function mergeChildMatches(childMatches) {\n if (childMatches.length === 0) {\n return childMatches;\n }\n\n var sets = childMatches.reduce(combineChildMatches);\n var uniqueSets = [];\n var unique = {};\n\n for (var i = 0; i < sets.length; i++) {\n var s = JSON.stringify(sets[i]);\n\n if (!unique[s]) {\n unique[s] = true;\n uniqueSets.push(sets[i]);\n }\n }\n\n return uniqueSets;\n }\n /**\n * Determines whether node matches rule.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} rule\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @return {Object} Information about the match, if it exists.\n */\n\n\n function _ruleMatch(rule, node, isSplit) {\n // console.log('Entering _ruleMatch(' + JSON.stringify(rule) + ', ' + JSON.stringify(node) + ')')\n // console.log('rule = ' + rule)\n // console.log('node = ' + node)\n // console.log('Entering _ruleMatch(' + rule.toString() + ', ' + node.toString() + ')')\n var res = [{\n placeholders: {}\n }];\n\n if (rule instanceof OperatorNode && node instanceof OperatorNode || rule instanceof FunctionNode && node instanceof FunctionNode) {\n // If the rule is an OperatorNode or a FunctionNode, then node must match exactly\n if (rule instanceof OperatorNode) {\n if (rule.op !== node.op || rule.fn !== node.fn) {\n return [];\n }\n } else if (rule instanceof FunctionNode) {\n if (rule.name !== node.name) {\n return [];\n }\n } // rule and node match. Search the children of rule and node.\n\n\n if (node.args.length === 1 && rule.args.length === 1 || !isAssociative(node) || isSplit) {\n // Expect non-associative operators to match exactly\n var childMatches = [];\n\n for (var i = 0; i < rule.args.length; i++) {\n var childMatch = _ruleMatch(rule.args[i], node.args[i]);\n\n if (childMatch.length === 0) {\n // Child did not match, so stop searching immediately\n return [];\n } // The child matched, so add the information returned from the child to our result\n\n\n childMatches.push(childMatch);\n }\n\n res = mergeChildMatches(childMatches);\n } else if (node.args.length >= 2 && rule.args.length === 2) {\n // node is flattened, rule is not\n // Associative operators/functions can be split in different ways so we check if the rule matches each\n // them and return their union.\n var splits = getSplits(node, rule.context);\n var splitMatches = [];\n\n for (var _i = 0; _i < splits.length; _i++) {\n var matchSet = _ruleMatch(rule, splits[_i], true); // recursing at the same tree depth here\n\n\n splitMatches = splitMatches.concat(matchSet);\n }\n\n return splitMatches;\n } else if (rule.args.length > 2) {\n throw Error('Unexpected non-binary associative function: ' + rule.toString());\n } else {\n // Incorrect number of arguments in rule and node, so no match\n return [];\n }\n } else if (rule instanceof SymbolNode) {\n // If the rule is a SymbolNode, then it carries a special meaning\n // according to the first character of the symbol node name.\n // c.* matches a ConstantNode\n // n.* matches any node\n if (rule.name.length === 0) {\n throw new Error('Symbol in rule has 0 length...!?');\n }\n\n if (SUPPORTED_CONSTANTS[rule.name]) {\n // built-in constant must match exactly\n if (rule.name !== node.name) {\n return [];\n }\n } else if (rule.name[0] === 'n' || rule.name.substring(0, 2) === '_p') {\n // rule matches _anything_, so assign this node to the rule.name placeholder\n // Assign node to the rule.name placeholder.\n // Our parent will check for matches among placeholders.\n res[0].placeholders[rule.name] = node;\n } else if (rule.name[0] === 'v') {\n // rule matches any variable thing (not a ConstantNode)\n if (!isConstantNode(node)) {\n res[0].placeholders[rule.name] = node;\n } else {\n // Mis-match: rule was expecting something other than a ConstantNode\n return [];\n }\n } else if (rule.name[0] === 'c') {\n // rule matches any ConstantNode\n if (node instanceof ConstantNode) {\n res[0].placeholders[rule.name] = node;\n } else {\n // Mis-match: rule was expecting a ConstantNode\n return [];\n }\n } else {\n throw new Error('Invalid symbol in rule: ' + rule.name);\n }\n } else if (rule instanceof ConstantNode) {\n // Literal constant must match exactly\n if (!equal(rule.value, node.value)) {\n return [];\n }\n } else {\n // Some other node was encountered which we aren't prepared for, so no match\n return [];\n } // It's a match!\n // console.log('_ruleMatch(' + rule.toString() + ', ' + node.toString() + ') found a match')\n\n\n return res;\n }\n /**\n * Determines whether p and q (and all their children nodes) are identical.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} p\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} q\n * @return {Object} Information about the match, if it exists.\n */\n\n\n function _exactMatch(p, q) {\n if (p instanceof ConstantNode && q instanceof ConstantNode) {\n if (!equal(p.value, q.value)) {\n return false;\n }\n } else if (p instanceof SymbolNode && q instanceof SymbolNode) {\n if (p.name !== q.name) {\n return false;\n }\n } else if (p instanceof OperatorNode && q instanceof OperatorNode || p instanceof FunctionNode && q instanceof FunctionNode) {\n if (p instanceof OperatorNode) {\n if (p.op !== q.op || p.fn !== q.fn) {\n return false;\n }\n } else if (p instanceof FunctionNode) {\n if (p.name !== q.name) {\n return false;\n }\n }\n\n if (p.args.length !== q.args.length) {\n return false;\n }\n\n for (var i = 0; i < p.args.length; i++) {\n if (!_exactMatch(p.args[i], q.args[i])) {\n return false;\n }\n }\n } else {\n return false;\n }\n\n return true;\n }\n\n return simplify;\n});","import { isConstantNode, typeOf } from '../../utils/is';\nimport { factory } from '../../utils/factory';\nvar name = 'derivative';\nvar dependencies = ['typed', 'config', 'parse', 'simplify', 'equal', 'isZero', 'numeric', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];\nexport var createDerivative = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n config = _ref.config,\n parse = _ref.parse,\n simplify = _ref.simplify,\n equal = _ref.equal,\n isZero = _ref.isZero,\n numeric = _ref.numeric,\n ConstantNode = _ref.ConstantNode,\n FunctionNode = _ref.FunctionNode,\n OperatorNode = _ref.OperatorNode,\n ParenthesisNode = _ref.ParenthesisNode,\n SymbolNode = _ref.SymbolNode;\n\n /**\n * Takes the derivative of an expression expressed in parser Nodes.\n * The derivative will be taken over the supplied variable in the\n * second parameter. If there are multiple variables in the expression,\n * it will return a partial derivative.\n *\n * This uses rules of differentiation which can be found here:\n *\n * - [Differentiation rules (Wikipedia)](https://en.wikipedia.org/wiki/Differentiation_rules)\n *\n * Syntax:\n *\n * derivative(expr, variable)\n * derivative(expr, variable, options)\n *\n * Examples:\n *\n * math.derivative('x^2', 'x') // Node {2 * x}\n * math.derivative('x^2', 'x', {simplify: false}) // Node {2 * 1 * x ^ (2 - 1)\n * math.derivative('sin(2x)', 'x')) // Node {2 * cos(2 * x)}\n * math.derivative('2*x', 'x').evaluate() // number 2\n * math.derivative('x^2', 'x').evaluate({x: 4}) // number 8\n * const f = math.parse('x^2')\n * const x = math.parse('x')\n * math.derivative(f, x) // Node {2 * x}\n *\n * See also:\n *\n * simplify, parse, evaluate\n *\n * @param {Node | string} expr The expression to differentiate\n * @param {SymbolNode | string} variable The variable over which to differentiate\n * @param {{simplify: boolean}} [options]\n * There is one option available, `simplify`, which\n * is true by default. When false, output will not\n * be simplified.\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The derivative of `expr`\n */\n var derivative = typed('derivative', {\n 'Node, SymbolNode, Object': function NodeSymbolNodeObject(expr, variable, options) {\n var constNodes = {};\n constTag(constNodes, expr, variable.name);\n\n var res = _derivative(expr, constNodes);\n\n return options.simplify ? simplify(res) : res;\n },\n 'Node, SymbolNode': function NodeSymbolNode(expr, variable) {\n return this(expr, variable, {\n simplify: true\n });\n },\n 'string, SymbolNode': function stringSymbolNode(expr, variable) {\n return this(parse(expr), variable);\n },\n 'string, SymbolNode, Object': function stringSymbolNodeObject(expr, variable, options) {\n return this(parse(expr), variable, options);\n },\n 'string, string': function stringString(expr, variable) {\n return this(parse(expr), parse(variable));\n },\n 'string, string, Object': function stringStringObject(expr, variable, options) {\n return this(parse(expr), parse(variable), options);\n },\n 'Node, string': function NodeString(expr, variable) {\n return this(expr, parse(variable));\n },\n 'Node, string, Object': function NodeStringObject(expr, variable, options) {\n return this(expr, parse(variable), options);\n } // TODO: replace the 8 signatures above with 4 as soon as typed-function supports optional arguments\n\n /* TODO: implement and test syntax with order of derivatives -> implement as an option {order: number}\n 'Node, SymbolNode, ConstantNode': function (expr, variable, {order}) {\n let res = expr\n for (let i = 0; i < order; i++) {\n let constNodes = {}\n constTag(constNodes, expr, variable.name)\n res = _derivative(res, constNodes)\n }\n return res\n }\n */\n\n });\n derivative._simplify = true;\n\n derivative.toTex = function (deriv) {\n return _derivTex.apply(null, deriv.args);\n }; // FIXME: move the toTex method of derivative to latex.js. Difficulty is that it relies on parse.\n // NOTE: the optional \"order\" parameter here is currently unused\n\n\n var _derivTex = typed('_derivTex', {\n 'Node, SymbolNode': function NodeSymbolNode(expr, x) {\n if (isConstantNode(expr) && typeOf(expr.value) === 'string') {\n return _derivTex(parse(expr.value).toString(), x.toString(), 1);\n } else {\n return _derivTex(expr.toString(), x.toString(), 1);\n }\n },\n 'Node, ConstantNode': function NodeConstantNode(expr, x) {\n if (typeOf(x.value) === 'string') {\n return _derivTex(expr, parse(x.value));\n } else {\n throw new Error(\"The second parameter to 'derivative' is a non-string constant\");\n }\n },\n 'Node, SymbolNode, ConstantNode': function NodeSymbolNodeConstantNode(expr, x, order) {\n return _derivTex(expr.toString(), x.name, order.value);\n },\n 'string, string, number': function stringStringNumber(expr, x, order) {\n var d;\n\n if (order === 1) {\n d = '{d\\\\over d' + x + '}';\n } else {\n d = '{d^{' + order + '}\\\\over d' + x + '^{' + order + '}}';\n }\n\n return d + \"\\\\left[\".concat(expr, \"\\\\right]\");\n }\n });\n /**\n * Does a depth-first search on the expression tree to identify what Nodes\n * are constants (e.g. 2 + 2), and stores the ones that are constants in\n * constNodes. Classification is done as follows:\n *\n * 1. ConstantNodes are constants.\n * 2. If there exists a SymbolNode, of which we are differentiating over,\n * in the subtree it is not constant.\n *\n * @param {Object} constNodes Holds the nodes that are constant\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {string} varName Variable that we are differentiating\n * @return {boolean} if node is constant\n */\n // TODO: can we rewrite constTag into a pure function?\n\n\n var constTag = typed('constTag', {\n 'Object, ConstantNode, string': function ObjectConstantNodeString(constNodes, node) {\n constNodes[node] = true;\n return true;\n },\n 'Object, SymbolNode, string': function ObjectSymbolNodeString(constNodes, node, varName) {\n // Treat other variables like constants. For reasoning, see:\n // https://en.wikipedia.org/wiki/Partial_derivative\n if (node.name !== varName) {\n constNodes[node] = true;\n return true;\n }\n\n return false;\n },\n 'Object, ParenthesisNode, string': function ObjectParenthesisNodeString(constNodes, node, varName) {\n return constTag(constNodes, node.content, varName);\n },\n 'Object, FunctionAssignmentNode, string': function ObjectFunctionAssignmentNodeString(constNodes, node, varName) {\n if (node.params.indexOf(varName) === -1) {\n constNodes[node] = true;\n return true;\n }\n\n return constTag(constNodes, node.expr, varName);\n },\n 'Object, FunctionNode | OperatorNode, string': function ObjectFunctionNodeOperatorNodeString(constNodes, node, varName) {\n if (node.args.length > 0) {\n var isConst = constTag(constNodes, node.args[0], varName);\n\n for (var i = 1; i < node.args.length; ++i) {\n isConst = constTag(constNodes, node.args[i], varName) && isConst;\n }\n\n if (isConst) {\n constNodes[node] = true;\n return true;\n }\n }\n\n return false;\n }\n });\n /**\n * Applies differentiation rules.\n *\n * @param {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} node\n * @param {Object} constNodes Holds the nodes that are constant\n * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The derivative of `expr`\n */\n\n var _derivative = typed('_derivative', {\n 'ConstantNode, Object': function ConstantNodeObject(node) {\n return createConstantNode(0);\n },\n 'SymbolNode, Object': function SymbolNodeObject(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n\n return createConstantNode(1);\n },\n 'ParenthesisNode, Object': function ParenthesisNodeObject(node, constNodes) {\n return new ParenthesisNode(_derivative(node.content, constNodes));\n },\n 'FunctionAssignmentNode, Object': function FunctionAssignmentNodeObject(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n\n return _derivative(node.expr, constNodes);\n },\n 'FunctionNode, Object': function FunctionNodeObject(node, constNodes) {\n if (node.args.length !== 1) {\n funcArgsCheck(node);\n }\n\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n\n var arg0 = node.args[0];\n var arg1;\n var div = false; // is output a fraction?\n\n var negative = false; // is output negative?\n\n var funcDerivative;\n\n switch (node.name) {\n case 'cbrt':\n // d/dx(cbrt(x)) = 1 / (3x^(2/3))\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [createConstantNode(3), new OperatorNode('^', 'pow', [arg0, new OperatorNode('/', 'divide', [createConstantNode(2), createConstantNode(3)])])]);\n break;\n\n case 'sqrt':\n case 'nthRoot':\n // d/dx(sqrt(x)) = 1 / (2*sqrt(x))\n if (node.args.length === 1) {\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [createConstantNode(2), new FunctionNode('sqrt', [arg0])]);\n } else if (node.args.length === 2) {\n // Rearrange from nthRoot(x, a) -> x^(1/a)\n arg1 = new OperatorNode('/', 'divide', [createConstantNode(1), node.args[1]]); // Is a variable?\n\n constNodes[arg1] = constNodes[node.args[1]];\n return _derivative(new OperatorNode('^', 'pow', [arg0, arg1]), constNodes);\n }\n\n break;\n\n case 'log10':\n arg1 = createConstantNode(10);\n\n /* fall through! */\n\n case 'log':\n if (!arg1 && node.args.length === 1) {\n // d/dx(log(x)) = 1 / x\n funcDerivative = arg0.clone();\n div = true;\n } else if (node.args.length === 1 && arg1 || node.args.length === 2 && constNodes[node.args[1]] !== undefined) {\n // d/dx(log(x, c)) = 1 / (x*ln(c))\n funcDerivative = new OperatorNode('*', 'multiply', [arg0.clone(), new FunctionNode('log', [arg1 || node.args[1]])]);\n div = true;\n } else if (node.args.length === 2) {\n // d/dx(log(f(x), g(x))) = d/dx(log(f(x)) / log(g(x)))\n return _derivative(new OperatorNode('/', 'divide', [new FunctionNode('log', [arg0]), new FunctionNode('log', [node.args[1]])]), constNodes);\n }\n\n break;\n\n case 'pow':\n constNodes[arg1] = constNodes[node.args[1]]; // Pass to pow operator node parser\n\n return _derivative(new OperatorNode('^', 'pow', [arg0, node.args[1]]), constNodes);\n\n case 'exp':\n // d/dx(e^x) = e^x\n funcDerivative = new FunctionNode('exp', [arg0.clone()]);\n break;\n\n case 'sin':\n // d/dx(sin(x)) = cos(x)\n funcDerivative = new FunctionNode('cos', [arg0.clone()]);\n break;\n\n case 'cos':\n // d/dx(cos(x)) = -sin(x)\n funcDerivative = new OperatorNode('-', 'unaryMinus', [new FunctionNode('sin', [arg0.clone()])]);\n break;\n\n case 'tan':\n // d/dx(tan(x)) = sec(x)^2\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('sec', [arg0.clone()]), createConstantNode(2)]);\n break;\n\n case 'sec':\n // d/dx(sec(x)) = sec(x)tan(x)\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('tan', [arg0.clone()])]);\n break;\n\n case 'csc':\n // d/dx(csc(x)) = -csc(x)cot(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('cot', [arg0.clone()])]);\n break;\n\n case 'cot':\n // d/dx(cot(x)) = -csc(x)^2\n negative = true;\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('csc', [arg0.clone()]), createConstantNode(2)]);\n break;\n\n case 'asin':\n // d/dx(asin(x)) = 1 / sqrt(1 - x^2)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])]);\n break;\n\n case 'acos':\n // d/dx(acos(x)) = -1 / sqrt(1 - x^2)\n div = true;\n negative = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])]);\n break;\n\n case 'atan':\n // d/dx(atan(x)) = 1 / (x^2 + 1)\n div = true;\n funcDerivative = new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)]);\n break;\n\n case 'asec':\n // d/dx(asec(x)) = 1 / (|x|*sqrt(x^2 - 1))\n div = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n\n case 'acsc':\n // d/dx(acsc(x)) = -1 / (|x|*sqrt(x^2 - 1))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n\n case 'acot':\n // d/dx(acot(x)) = -1 / (x^2 + 1)\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)]);\n break;\n\n case 'sinh':\n // d/dx(sinh(x)) = cosh(x)\n funcDerivative = new FunctionNode('cosh', [arg0.clone()]);\n break;\n\n case 'cosh':\n // d/dx(cosh(x)) = sinh(x)\n funcDerivative = new FunctionNode('sinh', [arg0.clone()]);\n break;\n\n case 'tanh':\n // d/dx(tanh(x)) = sech(x)^2\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('sech', [arg0.clone()]), createConstantNode(2)]);\n break;\n\n case 'sech':\n // d/dx(sech(x)) = -sech(x)tanh(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('tanh', [arg0.clone()])]);\n break;\n\n case 'csch':\n // d/dx(csch(x)) = -csch(x)coth(x)\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [node, new FunctionNode('coth', [arg0.clone()])]);\n break;\n\n case 'coth':\n // d/dx(coth(x)) = -csch(x)^2\n negative = true;\n funcDerivative = new OperatorNode('^', 'pow', [new FunctionNode('csch', [arg0.clone()]), createConstantNode(2)]);\n break;\n\n case 'asinh':\n // d/dx(asinh(x)) = 1 / sqrt(x^2 + 1)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])]);\n break;\n\n case 'acosh':\n // d/dx(acosh(x)) = 1 / sqrt(x^2 - 1); XXX potentially only for x >= 1 (the real spectrum)\n div = true;\n funcDerivative = new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])]);\n break;\n\n case 'atanh':\n // d/dx(atanh(x)) = 1 / (1 - x^2)\n div = true;\n funcDerivative = new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])]);\n break;\n\n case 'asech':\n // d/dx(asech(x)) = -1 / (x*sqrt(1 - x^2))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [arg0.clone(), new FunctionNode('sqrt', [new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])])])]);\n break;\n\n case 'acsch':\n // d/dx(acsch(x)) = -1 / (|x|*sqrt(x^2 + 1))\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('*', 'multiply', [new FunctionNode('abs', [arg0.clone()]), new FunctionNode('sqrt', [new OperatorNode('+', 'add', [new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)]), createConstantNode(1)])])]);\n break;\n\n case 'acoth':\n // d/dx(acoth(x)) = -1 / (1 - x^2)\n div = true;\n negative = true;\n funcDerivative = new OperatorNode('-', 'subtract', [createConstantNode(1), new OperatorNode('^', 'pow', [arg0.clone(), createConstantNode(2)])]);\n break;\n\n case 'abs':\n // d/dx(abs(x)) = abs(x)/x\n funcDerivative = new OperatorNode('/', 'divide', [new FunctionNode(new SymbolNode('abs'), [arg0.clone()]), arg0.clone()]);\n break;\n\n case 'gamma': // Needs digamma function, d/dx(gamma(x)) = gamma(x)digamma(x)\n\n default:\n throw new Error('Function \"' + node.name + '\" is not supported by derivative, or a wrong number of arguments is passed');\n }\n\n var op, func;\n\n if (div) {\n op = '/';\n func = 'divide';\n } else {\n op = '*';\n func = 'multiply';\n }\n /* Apply chain rule to all functions:\n F(x) = f(g(x))\n F'(x) = g'(x)*f'(g(x)) */\n\n\n var chainDerivative = _derivative(arg0, constNodes);\n\n if (negative) {\n chainDerivative = new OperatorNode('-', 'unaryMinus', [chainDerivative]);\n }\n\n return new OperatorNode(op, func, [chainDerivative, funcDerivative]);\n },\n 'OperatorNode, Object': function OperatorNodeObject(node, constNodes) {\n if (constNodes[node] !== undefined) {\n return createConstantNode(0);\n }\n\n if (node.op === '+') {\n // d/dx(sum(f(x)) = sum(f'(x))\n return new OperatorNode(node.op, node.fn, node.args.map(function (arg) {\n return _derivative(arg, constNodes);\n }));\n }\n\n if (node.op === '-') {\n // d/dx(+/-f(x)) = +/-f'(x)\n if (node.isUnary()) {\n return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes)]);\n } // Linearity of differentiation, d/dx(f(x) +/- g(x)) = f'(x) +/- g'(x)\n\n\n if (node.isBinary()) {\n return new OperatorNode(node.op, node.fn, [_derivative(node.args[0], constNodes), _derivative(node.args[1], constNodes)]);\n }\n }\n\n if (node.op === '*') {\n // d/dx(c*f(x)) = c*f'(x)\n var constantTerms = node.args.filter(function (arg) {\n return constNodes[arg] !== undefined;\n });\n\n if (constantTerms.length > 0) {\n var nonConstantTerms = node.args.filter(function (arg) {\n return constNodes[arg] === undefined;\n });\n var nonConstantNode = nonConstantTerms.length === 1 ? nonConstantTerms[0] : new OperatorNode('*', 'multiply', nonConstantTerms);\n var newArgs = constantTerms.concat(_derivative(nonConstantNode, constNodes));\n return new OperatorNode('*', 'multiply', newArgs);\n } // Product Rule, d/dx(f(x)*g(x)) = f'(x)*g(x) + f(x)*g'(x)\n\n\n return new OperatorNode('+', 'add', node.args.map(function (argOuter) {\n return new OperatorNode('*', 'multiply', node.args.map(function (argInner) {\n return argInner === argOuter ? _derivative(argInner, constNodes) : argInner.clone();\n }));\n }));\n }\n\n if (node.op === '/' && node.isBinary()) {\n var arg0 = node.args[0];\n var arg1 = node.args[1]; // d/dx(f(x) / c) = f'(x) / c\n\n if (constNodes[arg1] !== undefined) {\n return new OperatorNode('/', 'divide', [_derivative(arg0, constNodes), arg1]);\n } // Reciprocal Rule, d/dx(c / f(x)) = -c(f'(x)/f(x)^2)\n\n\n if (constNodes[arg0] !== undefined) {\n return new OperatorNode('*', 'multiply', [new OperatorNode('-', 'unaryMinus', [arg0]), new OperatorNode('/', 'divide', [_derivative(arg1, constNodes), new OperatorNode('^', 'pow', [arg1.clone(), createConstantNode(2)])])]);\n } // Quotient rule, d/dx(f(x) / g(x)) = (f'(x)g(x) - f(x)g'(x)) / g(x)^2\n\n\n return new OperatorNode('/', 'divide', [new OperatorNode('-', 'subtract', [new OperatorNode('*', 'multiply', [_derivative(arg0, constNodes), arg1.clone()]), new OperatorNode('*', 'multiply', [arg0.clone(), _derivative(arg1, constNodes)])]), new OperatorNode('^', 'pow', [arg1.clone(), createConstantNode(2)])]);\n }\n\n if (node.op === '^' && node.isBinary()) {\n var _arg = node.args[0];\n var _arg2 = node.args[1];\n\n if (constNodes[_arg] !== undefined) {\n // If is secretly constant; 0^f(x) = 1 (in JS), 1^f(x) = 1\n if (isConstantNode(_arg) && (isZero(_arg.value) || equal(_arg.value, 1))) {\n return createConstantNode(0);\n } // d/dx(c^f(x)) = c^f(x)*ln(c)*f'(x)\n\n\n return new OperatorNode('*', 'multiply', [node, new OperatorNode('*', 'multiply', [new FunctionNode('log', [_arg.clone()]), _derivative(_arg2.clone(), constNodes)])]);\n }\n\n if (constNodes[_arg2] !== undefined) {\n if (isConstantNode(_arg2)) {\n // If is secretly constant; f(x)^0 = 1 -> d/dx(1) = 0\n if (isZero(_arg2.value)) {\n return createConstantNode(0);\n } // Ignore exponent; f(x)^1 = f(x)\n\n\n if (equal(_arg2.value, 1)) {\n return _derivative(_arg, constNodes);\n }\n } // Elementary Power Rule, d/dx(f(x)^c) = c*f'(x)*f(x)^(c-1)\n\n\n var powMinusOne = new OperatorNode('^', 'pow', [_arg.clone(), new OperatorNode('-', 'subtract', [_arg2, createConstantNode(1)])]);\n return new OperatorNode('*', 'multiply', [_arg2.clone(), new OperatorNode('*', 'multiply', [_derivative(_arg, constNodes), powMinusOne])]);\n } // Functional Power Rule, d/dx(f^g) = f^g*[f'*(g/f) + g'ln(f)]\n\n\n return new OperatorNode('*', 'multiply', [new OperatorNode('^', 'pow', [_arg.clone(), _arg2.clone()]), new OperatorNode('+', 'add', [new OperatorNode('*', 'multiply', [_derivative(_arg, constNodes), new OperatorNode('/', 'divide', [_arg2.clone(), _arg.clone()])]), new OperatorNode('*', 'multiply', [_derivative(_arg2, constNodes), new FunctionNode('log', [_arg.clone()])])])]);\n }\n\n throw new Error('Operator \"' + node.op + '\" is not supported by derivative, or a wrong number of arguments is passed');\n }\n });\n /**\n * Ensures the number of arguments for a function are correct,\n * and will throw an error otherwise.\n *\n * @param {FunctionNode} node\n */\n\n\n function funcArgsCheck(node) {\n // TODO add min, max etc\n if ((node.name === 'log' || node.name === 'nthRoot' || node.name === 'pow') && node.args.length === 2) {\n return;\n } // There should be an incorrect number of arguments if we reach here\n // Change all args to constants to avoid unidentified\n // symbol error when compiling function\n\n\n for (var i = 0; i < node.args.length; ++i) {\n node.args[i] = createConstantNode(0);\n }\n\n node.compile().evaluate();\n throw new Error('Expected TypeError, but none found');\n }\n /**\n * Helper function to create a constant node with a specific type\n * (number, BigNumber, Fraction)\n * @param {number} value\n * @param {string} [valueType]\n * @return {ConstantNode}\n */\n\n\n function createConstantNode(value, valueType) {\n return new ConstantNode(numeric(value, valueType || config.number));\n }\n\n return derivative;\n});","import { isInteger } from '../../utils/number';\nimport { factory } from '../../utils/factory';\nimport { createSimplifyConstant } from './simplify/simplifyConstant';\nimport { createSimplifyCore } from './simplify/simplifyCore';\nvar name = 'rationalize';\nvar dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'ConstantNode', 'OperatorNode', 'FunctionNode', 'SymbolNode', 'ParenthesisNode'];\nexport var createRationalize = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var config = _ref.config,\n typed = _ref.typed,\n equal = _ref.equal,\n isZero = _ref.isZero,\n add = _ref.add,\n subtract = _ref.subtract,\n multiply = _ref.multiply,\n divide = _ref.divide,\n pow = _ref.pow,\n parse = _ref.parse,\n simplify = _ref.simplify,\n fraction = _ref.fraction,\n bignumber = _ref.bignumber,\n mathWithTransform = _ref.mathWithTransform,\n ConstantNode = _ref.ConstantNode,\n OperatorNode = _ref.OperatorNode,\n FunctionNode = _ref.FunctionNode,\n SymbolNode = _ref.SymbolNode,\n ParenthesisNode = _ref.ParenthesisNode;\n var simplifyConstant = createSimplifyConstant({\n typed: typed,\n config: config,\n mathWithTransform: mathWithTransform,\n fraction: fraction,\n bignumber: bignumber,\n ConstantNode: ConstantNode,\n OperatorNode: OperatorNode,\n FunctionNode: FunctionNode,\n SymbolNode: SymbolNode\n });\n var simplifyCore = createSimplifyCore({\n equal: equal,\n isZero: isZero,\n add: add,\n subtract: subtract,\n multiply: multiply,\n divide: divide,\n pow: pow,\n ConstantNode: ConstantNode,\n OperatorNode: OperatorNode,\n FunctionNode: FunctionNode,\n ParenthesisNode: ParenthesisNode\n });\n /**\n * Transform a rationalizable expression in a rational fraction.\n * If rational fraction is one variable polynomial then converts\n * the numerator and denominator in canonical form, with decreasing\n * exponents, returning the coefficients of numerator.\n *\n * Syntax:\n *\n * rationalize(expr)\n * rationalize(expr, detailed)\n * rationalize(expr, scope)\n * rationalize(expr, scope, detailed)\n *\n * Examples:\n *\n * math.rationalize('sin(x)+y')\n * // Error: There is an unsolved function call\n * math.rationalize('2x/y - y/(x+1)')\n * // (2*x^2-y^2+2*x)/(x*y+y)\n * math.rationalize('(2x+1)^6')\n * // 64*x^6+192*x^5+240*x^4+160*x^3+60*x^2+12*x+1\n * math.rationalize('2x/( (2x-1) / (3x+2) ) - 5x/ ( (3x+4) / (2x^2-5) ) + 3')\n * // -20*x^4+28*x^3+104*x^2+6*x-12)/(6*x^2+5*x-4)\n * math.rationalize('x/(1-x)/(x-2)/(x-3)/(x-4) + 2x/ ( (1-2x)/(2-3x) )/ ((3-4x)/(4-5x) )') =\n * // (-30*x^7+344*x^6-1506*x^5+3200*x^4-3472*x^3+1846*x^2-381*x)/\n * // (-8*x^6+90*x^5-383*x^4+780*x^3-797*x^2+390*x-72)\n *\n * math.rationalize('x+x+x+y',{y:1}) // 3*x+1\n * math.rationalize('x+x+x+y',{}) // 3*x+y\n *\n * const ret = math.rationalize('x+x+x+y',{},true)\n * // ret.expression=3*x+y, ret.variables = [\"x\",\"y\"]\n * const ret = math.rationalize('-2+5x^2',{},true)\n * // ret.expression=5*x^2-2, ret.variables = [\"x\"], ret.coefficients=[-2,0,5]\n *\n * See also:\n *\n * simplify\n *\n * @param {Node|string} expr The expression to check if is a polynomial expression\n * @param {Object|boolean} optional scope of expression or true for already evaluated rational expression at input\n * @param {Boolean} detailed optional True if return an object, false if return expression node (default)\n *\n * @return {Object | Node} The rational polynomial of `expr` or na object\n * {Object}\n * {Expression Node} expression: node simplified expression\n * {Expression Node} numerator: simplified numerator of expression\n * {Expression Node | boolean} denominator: simplified denominator or false (if there is no denominator)\n * {Array} variables: variable names\n * {Array} coefficients: coefficients of numerator sorted by increased exponent\n * {Expression Node} node simplified expression\n *\n */\n\n return typed(name, {\n string: function string(expr) {\n return this(parse(expr), {}, false);\n },\n 'string, boolean': function stringBoolean(expr, detailed) {\n return this(parse(expr), {}, detailed);\n },\n 'string, Object': function stringObject(expr, scope) {\n return this(parse(expr), scope, false);\n },\n 'string, Object, boolean': function stringObjectBoolean(expr, scope, detailed) {\n return this(parse(expr), scope, detailed);\n },\n Node: function Node(expr) {\n return this(expr, {}, false);\n },\n 'Node, boolean': function NodeBoolean(expr, detailed) {\n return this(expr, {}, detailed);\n },\n 'Node, Object': function NodeObject(expr, scope) {\n return this(expr, scope, false);\n },\n 'Node, Object, boolean': function NodeObjectBoolean(expr, scope, detailed) {\n var setRules = rulesRationalize(); // Rules for change polynomial in near canonical form\n\n var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial\n\n var nVars = polyRet.variables.length;\n expr = polyRet.expression;\n\n if (nVars >= 1) {\n // If expression in not a constant\n expr = expandPower(expr); // First expand power of polynomials (cannot be made from rules!)\n\n var sBefore; // Previous expression\n\n var rules;\n var eDistrDiv = true;\n var redoInic = false;\n expr = simplify(expr, setRules.firstRules, {}, {\n exactFractions: false\n }); // Apply the initial rules, including succ div rules\n\n var s;\n\n while (true) {\n // Apply alternately successive division rules and distr.div.rules\n rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;\n expr = simplify(expr, rules); // until no more changes\n\n eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules\n\n s = expr.toString();\n\n if (s === sBefore) {\n break; // No changes : end of the loop\n }\n\n redoInic = true;\n sBefore = s;\n }\n\n if (redoInic) {\n // Apply first rules again without succ div rules (if there are changes)\n expr = simplify(expr, setRules.firstRulesAgain, {}, {\n exactFractions: false\n });\n }\n\n expr = simplify(expr, setRules.finalRules, {}, {\n exactFractions: false\n }); // Apply final rules\n } // NVars >= 1\n\n\n var coefficients = [];\n var retRationalize = {};\n\n if (expr.type === 'OperatorNode' && expr.isBinary() && expr.op === '/') {\n // Separate numerator from denominator\n if (nVars === 1) {\n expr.args[0] = polyToCanonical(expr.args[0], coefficients);\n expr.args[1] = polyToCanonical(expr.args[1]);\n }\n\n if (detailed) {\n retRationalize.numerator = expr.args[0];\n retRationalize.denominator = expr.args[1];\n }\n } else {\n if (nVars === 1) {\n expr = polyToCanonical(expr, coefficients);\n }\n\n if (detailed) {\n retRationalize.numerator = expr;\n retRationalize.denominator = null;\n }\n } // nVars\n\n\n if (!detailed) return expr;\n retRationalize.coefficients = coefficients;\n retRationalize.variables = polyRet.variables;\n retRationalize.expression = expr;\n return retRationalize;\n } // ^^^^^^^ end of rationalize ^^^^^^^^\n\n }); // end of typed rationalize\n\n /**\n * Function to simplify an expression using an optional scope and\n * return it if the expression is a polynomial expression, i.e.\n * an expression with one or more variables and the operators\n * +, -, *, and ^, where the exponent can only be a positive integer.\n *\n * Syntax:\n *\n * polynomial(expr,scope,extended, rules)\n *\n * @param {Node | string} expr The expression to simplify and check if is polynomial expression\n * @param {object} scope Optional scope for expression simplification\n * @param {boolean} extended Optional. Default is false. When true allows divide operator.\n * @param {array} rules Optional. Default is no rule.\n *\n *\n * @return {Object}\n * {Object} node: node simplified expression\n * {Array} variables: variable names\n */\n\n function polynomial(expr, scope, extended, rules) {\n var variables = [];\n var node = simplify(expr, rules, scope, {\n exactFractions: false\n }); // Resolves any variables and functions with all defined parameters\n\n extended = !!extended;\n var oper = '+-*' + (extended ? '/' : '');\n recPoly(node);\n var retFunc = {};\n retFunc.expression = node;\n retFunc.variables = variables;\n return retFunc; // -------------------------------------------------------------------------------------------------------\n\n /**\n * Function to simplify an expression using an optional scope and\n * return it if the expression is a polynomial expression, i.e.\n * an expression with one or more variables and the operators\n * +, -, *, and ^, where the exponent can only be a positive integer.\n *\n * Syntax:\n *\n * recPoly(node)\n *\n *\n * @param {Node} node The current sub tree expression in recursion\n *\n * @return nothing, throw an exception if error\n */\n\n function recPoly(node) {\n var tp = node.type; // node type\n\n if (tp === 'FunctionNode') {\n // No function call in polynomial expression\n throw new Error('There is an unsolved function call');\n } else if (tp === 'OperatorNode') {\n if (node.op === '^') {\n // TODO: handle negative exponents like in '1/x^(-2)'\n if (node.args[1].type !== 'ConstantNode' || !isInteger(parseFloat(node.args[1].value))) {\n throw new Error('There is a non-integer exponent');\n } else {\n recPoly(node.args[0]);\n }\n } else {\n if (oper.indexOf(node.op) === -1) {\n throw new Error('Operator ' + node.op + ' invalid in polynomial expression');\n }\n\n for (var i = 0; i < node.args.length; i++) {\n recPoly(node.args[i]);\n }\n } // type of operator\n\n } else if (tp === 'SymbolNode') {\n var _name = node.name; // variable name\n\n var pos = variables.indexOf(_name);\n\n if (pos === -1) {\n // new variable in expression\n variables.push(_name);\n }\n } else if (tp === 'ParenthesisNode') {\n recPoly(node.content);\n } else if (tp !== 'ConstantNode') {\n throw new Error('type ' + tp + ' is not allowed in polynomial expression');\n }\n } // end of recPoly\n\n } // end of polynomial\n // ---------------------------------------------------------------------------------------\n\n /**\n * Return a rule set to rationalize an polynomial expression in rationalize\n *\n * Syntax:\n *\n * rulesRationalize()\n *\n * @return {array} rule set to rationalize an polynomial expression\n */\n\n\n function rulesRationalize() {\n var oldRules = [simplifyCore, // sCore\n {\n l: 'n+n',\n r: '2*n'\n }, {\n l: 'n+-n',\n r: '0'\n }, simplifyConstant, // sConstant\n {\n l: 'n*(n1^-1)',\n r: 'n/n1'\n }, {\n l: 'n*n1^-n2',\n r: 'n/n1^n2'\n }, {\n l: 'n1^-1',\n r: '1/n1'\n }, {\n l: 'n*(n1/n2)',\n r: '(n*n1)/n2'\n }, {\n l: '1*n',\n r: 'n'\n }];\n var rulesFirst = [{\n l: '(-n1)/(-n2)',\n r: 'n1/n2'\n }, // Unary division\n {\n l: '(-n1)*(-n2)',\n r: 'n1*n2'\n }, // Unary multiplication\n {\n l: 'n1--n2',\n r: 'n1+n2'\n }, // '--' elimination\n {\n l: 'n1-n2',\n r: 'n1+(-n2)'\n }, // Subtraction turn into add with un�ry minus\n {\n l: '(n1+n2)*n3',\n r: '(n1*n3 + n2*n3)'\n }, // Distributive 1\n {\n l: 'n1*(n2+n3)',\n r: '(n1*n2+n1*n3)'\n }, // Distributive 2\n {\n l: 'c1*n + c2*n',\n r: '(c1+c2)*n'\n }, // Joining constants\n {\n l: 'c1*n + n',\n r: '(c1+1)*n'\n }, // Joining constants\n {\n l: 'c1*n - c2*n',\n r: '(c1-c2)*n'\n }, // Joining constants\n {\n l: 'c1*n - n',\n r: '(c1-1)*n'\n }, // Joining constants\n {\n l: 'v/c',\n r: '(1/c)*v'\n }, // variable/constant (new!)\n {\n l: 'v/-c',\n r: '-(1/c)*v'\n }, // variable/constant (new!)\n {\n l: '-v*-c',\n r: 'c*v'\n }, // Inversion constant and variable 1\n {\n l: '-v*c',\n r: '-c*v'\n }, // Inversion constant and variable 2\n {\n l: 'v*-c',\n r: '-c*v'\n }, // Inversion constant and variable 3\n {\n l: 'v*c',\n r: 'c*v'\n }, // Inversion constant and variable 4\n {\n l: '-(-n1*n2)',\n r: '(n1*n2)'\n }, // Unary propagation\n {\n l: '-(n1*n2)',\n r: '(-n1*n2)'\n }, // Unary propagation\n {\n l: '-(-n1+n2)',\n r: '(n1-n2)'\n }, // Unary propagation\n {\n l: '-(n1+n2)',\n r: '(-n1-n2)'\n }, // Unary propagation\n {\n l: '(n1^n2)^n3',\n r: '(n1^(n2*n3))'\n }, // Power to Power\n {\n l: '-(-n1/n2)',\n r: '(n1/n2)'\n }, // Division and Unary\n {\n l: '-(n1/n2)',\n r: '(-n1/n2)'\n }]; // Divisao and Unary\n\n var rulesDistrDiv = [{\n l: '(n1/n2 + n3/n4)',\n r: '((n1*n4 + n3*n2)/(n2*n4))'\n }, // Sum of fractions\n {\n l: '(n1/n2 + n3)',\n r: '((n1 + n3*n2)/n2)'\n }, // Sum fraction with number 1\n {\n l: '(n1 + n2/n3)',\n r: '((n1*n3 + n2)/n3)'\n }]; // Sum fraction with number 1\n\n var rulesSucDiv = [{\n l: '(n1/(n2/n3))',\n r: '((n1*n3)/n2)'\n }, // Division simplification\n {\n l: '(n1/n2/n3)',\n r: '(n1/(n2*n3))'\n }];\n var setRules = {}; // rules set in 4 steps.\n // All rules => infinite loop\n // setRules.allRules =oldRules.concat(rulesFirst,rulesDistrDiv,rulesSucDiv)\n\n setRules.firstRules = oldRules.concat(rulesFirst, rulesSucDiv); // First rule set\n\n setRules.distrDivRules = rulesDistrDiv; // Just distr. div. rules\n\n setRules.sucDivRules = rulesSucDiv; // Jus succ. div. rules\n\n setRules.firstRulesAgain = oldRules.concat(rulesFirst); // Last rules set without succ. div.\n // Division simplification\n // Second rule set.\n // There is no aggregate expression with parentesis, but the only variable can be scattered.\n\n setRules.finalRules = [simplifyCore, // simplify.rules[0]\n {\n l: 'n*-n',\n r: '-n^2'\n }, // Joining multiply with power 1\n {\n l: 'n*n',\n r: 'n^2'\n }, // Joining multiply with power 2\n simplifyConstant, // simplify.rules[14] old 3rd index in oldRules\n {\n l: 'n*-n^n1',\n r: '-n^(n1+1)'\n }, // Joining multiply with power 3\n {\n l: 'n*n^n1',\n r: 'n^(n1+1)'\n }, // Joining multiply with power 4\n {\n l: 'n^n1*-n^n2',\n r: '-n^(n1+n2)'\n }, // Joining multiply with power 5\n {\n l: 'n^n1*n^n2',\n r: 'n^(n1+n2)'\n }, // Joining multiply with power 6\n {\n l: 'n^n1*-n',\n r: '-n^(n1+1)'\n }, // Joining multiply with power 7\n {\n l: 'n^n1*n',\n r: 'n^(n1+1)'\n }, // Joining multiply with power 8\n {\n l: 'n^n1/-n',\n r: '-n^(n1-1)'\n }, // Joining multiply with power 8\n {\n l: 'n^n1/n',\n r: 'n^(n1-1)'\n }, // Joining division with power 1\n {\n l: 'n/-n^n1',\n r: '-n^(1-n1)'\n }, // Joining division with power 2\n {\n l: 'n/n^n1',\n r: 'n^(1-n1)'\n }, // Joining division with power 3\n {\n l: 'n^n1/-n^n2',\n r: 'n^(n1-n2)'\n }, // Joining division with power 4\n {\n l: 'n^n1/n^n2',\n r: 'n^(n1-n2)'\n }, // Joining division with power 5\n {\n l: 'n1+(-n2*n3)',\n r: 'n1-n2*n3'\n }, // Solving useless parenthesis 1\n {\n l: 'v*(-c)',\n r: '-c*v'\n }, // Solving useless unary 2\n {\n l: 'n1+-n2',\n r: 'n1-n2'\n }, // Solving +- together (new!)\n {\n l: 'v*c',\n r: 'c*v'\n }, // inversion constant with variable\n {\n l: '(n1^n2)^n3',\n r: '(n1^(n2*n3))'\n } // Power to Power\n ];\n return setRules;\n } // End rulesRationalize\n // ---------------------------------------------------------------------------------------\n\n /**\n * Expand recursively a tree node for handling with expressions with exponents\n * (it's not for constants, symbols or functions with exponents)\n * PS: The other parameters are internal for recursion\n *\n * Syntax:\n *\n * expandPower(node)\n *\n * @param {Node} node Current expression node\n * @param {node} parent Parent current node inside the recursion\n * @param (int} Parent number of chid inside the rercursion\n *\n * @return {node} node expression with all powers expanded.\n */\n\n\n function expandPower(node, parent, indParent) {\n var tp = node.type;\n var internal = arguments.length > 1; // TRUE in internal calls\n\n if (tp === 'OperatorNode' && node.isBinary()) {\n var does = false;\n var val;\n\n if (node.op === '^') {\n // First operator: Parenthesis or UnaryMinus\n if ((node.args[0].type === 'ParenthesisNode' || node.args[0].type === 'OperatorNode') && node.args[1].type === 'ConstantNode') {\n // Second operator: Constant\n val = parseFloat(node.args[1].value);\n does = val >= 2 && isInteger(val);\n }\n }\n\n if (does) {\n // Exponent >= 2\n // Before:\n // operator A --> Subtree\n // parent pow\n // constant\n //\n if (val > 2) {\n // Exponent > 2,\n // AFTER: (exponent > 2)\n // operator A --> Subtree\n // parent *\n // deep clone (operator A --> Subtree\n // pow\n // constant - 1\n //\n var nEsqTopo = node.args[0];\n var nDirTopo = new OperatorNode('^', 'pow', [node.args[0].cloneDeep(), new ConstantNode(val - 1)]);\n node = new OperatorNode('*', 'multiply', [nEsqTopo, nDirTopo]);\n } else {\n // Expo = 2 - no power\n // AFTER: (exponent = 2)\n // operator A --> Subtree\n // parent oper\n // deep clone (operator A --> Subtree)\n //\n node = new OperatorNode('*', 'multiply', [node.args[0], node.args[0].cloneDeep()]);\n }\n\n if (internal) {\n // Change parent references in internal recursive calls\n if (indParent === 'content') {\n parent.content = node;\n } else {\n parent.args[indParent] = node;\n }\n }\n } // does\n\n } // binary OperatorNode\n\n\n if (tp === 'ParenthesisNode') {\n // Recursion\n expandPower(node.content, node, 'content');\n } else if (tp !== 'ConstantNode' && tp !== 'SymbolNode') {\n for (var i = 0; i < node.args.length; i++) {\n expandPower(node.args[i], node, i);\n }\n }\n\n if (!internal) {\n // return the root node\n return node;\n }\n } // End expandPower\n // ---------------------------------------------------------------------------------------\n\n /**\n * Auxilary function for rationalize\n * Convert near canonical polynomial in one variable in a canonical polynomial\n * with one term for each exponent in decreasing order\n *\n * Syntax:\n *\n * polyToCanonical(node [, coefficients])\n *\n * @param {Node | string} expr The near canonical polynomial expression to convert in a a canonical polynomial expression\n *\n * The string or tree expression needs to be at below syntax, with free spaces:\n * ( (^(-)? | [+-]? )cte (*)? var (^expo)? | cte )+\n * Where 'var' is one variable with any valid name\n * 'cte' are real numeric constants with any value. It can be omitted if equal than 1\n * 'expo' are integers greater than 0. It can be omitted if equal than 1.\n *\n * @param {array} coefficients Optional returns coefficients sorted by increased exponent\n *\n *\n * @return {node} new node tree with one variable polynomial or string error.\n */\n\n\n function polyToCanonical(node, coefficients) {\n if (coefficients === undefined) {\n coefficients = [];\n } // coefficients.\n\n\n coefficients[0] = 0; // index is the exponent\n\n var o = {};\n o.cte = 1;\n o.oper = '+'; // fire: mark with * or ^ when finds * or ^ down tree, reset to \"\" with + and -.\n // It is used to deduce the exponent: 1 for *, 0 for \"\".\n\n o.fire = '';\n var maxExpo = 0; // maximum exponent\n\n var varname = ''; // variable name\n\n recurPol(node, null, o);\n maxExpo = coefficients.length - 1;\n var first = true;\n var no;\n\n for (var i = maxExpo; i >= 0; i--) {\n if (coefficients[i] === 0) continue;\n var n1 = new ConstantNode(first ? coefficients[i] : Math.abs(coefficients[i]));\n var op = coefficients[i] < 0 ? '-' : '+';\n\n if (i > 0) {\n // Is not a constant without variable\n var n2 = new SymbolNode(varname);\n\n if (i > 1) {\n var n3 = new ConstantNode(i);\n n2 = new OperatorNode('^', 'pow', [n2, n3]);\n }\n\n if (coefficients[i] === -1 && first) {\n n1 = new OperatorNode('-', 'unaryMinus', [n2]);\n } else if (Math.abs(coefficients[i]) === 1) {\n n1 = n2;\n } else {\n n1 = new OperatorNode('*', 'multiply', [n1, n2]);\n }\n }\n\n if (first) {\n no = n1;\n } else if (op === '+') {\n no = new OperatorNode('+', 'add', [no, n1]);\n } else {\n no = new OperatorNode('-', 'subtract', [no, n1]);\n }\n\n first = false;\n } // for\n\n\n if (first) {\n return new ConstantNode(0);\n } else {\n return no;\n }\n /**\n * Recursive auxilary function inside polyToCanonical for\n * converting expression in canonical form\n *\n * Syntax:\n *\n * recurPol(node, noPai, obj)\n *\n * @param {Node} node The current subpolynomial expression\n * @param {Node | Null} noPai The current parent node\n * @param {object} obj Object with many internal flags\n *\n * @return {} No return. If error, throws an exception\n */\n\n\n function recurPol(node, noPai, o) {\n var tp = node.type;\n\n if (tp === 'FunctionNode') {\n // ***** FunctionName *****\n // No function call in polynomial expression\n throw new Error('There is an unsolved function call');\n } else if (tp === 'OperatorNode') {\n // ***** OperatorName *****\n if ('+-*^'.indexOf(node.op) === -1) throw new Error('Operator ' + node.op + ' invalid');\n\n if (noPai !== null) {\n // -(unary),^ : children of *,+,-\n if ((node.fn === 'unaryMinus' || node.fn === 'pow') && noPai.fn !== 'add' && noPai.fn !== 'subtract' && noPai.fn !== 'multiply') {\n throw new Error('Invalid ' + node.op + ' placing');\n } // -,+,* : children of +,-\n\n\n if ((node.fn === 'subtract' || node.fn === 'add' || node.fn === 'multiply') && noPai.fn !== 'add' && noPai.fn !== 'subtract') {\n throw new Error('Invalid ' + node.op + ' placing');\n } // -,+ : first child\n\n\n if ((node.fn === 'subtract' || node.fn === 'add' || node.fn === 'unaryMinus') && o.noFil !== 0) {\n throw new Error('Invalid ' + node.op + ' placing');\n }\n } // Has parent\n // Firers: ^,* Old: ^,&,-(unary): firers\n\n\n if (node.op === '^' || node.op === '*') {\n o.fire = node.op;\n }\n\n for (var _i = 0; _i < node.args.length; _i++) {\n // +,-: reset fire\n if (node.fn === 'unaryMinus') o.oper = '-';\n\n if (node.op === '+' || node.fn === 'subtract') {\n o.fire = '';\n o.cte = 1; // default if there is no constant\n\n o.oper = _i === 0 ? '+' : node.op;\n }\n\n o.noFil = _i; // number of son\n\n recurPol(node.args[_i], node, o);\n } // for in children\n\n } else if (tp === 'SymbolNode') {\n // ***** SymbolName *****\n if (node.name !== varname && varname !== '') {\n throw new Error('There is more than one variable');\n }\n\n varname = node.name;\n\n if (noPai === null) {\n coefficients[1] = 1;\n return;\n } // ^: Symbol is First child\n\n\n if (noPai.op === '^' && o.noFil !== 0) {\n throw new Error('In power the variable should be the first parameter');\n } // *: Symbol is Second child\n\n\n if (noPai.op === '*' && o.noFil !== 1) {\n throw new Error('In multiply the variable should be the second parameter');\n } // Symbol: firers '',* => it means there is no exponent above, so it's 1 (cte * var)\n\n\n if (o.fire === '' || o.fire === '*') {\n if (maxExpo < 1) coefficients[1] = 0;\n coefficients[1] += o.cte * (o.oper === '+' ? 1 : -1);\n maxExpo = Math.max(1, maxExpo);\n }\n } else if (tp === 'ConstantNode') {\n var valor = parseFloat(node.value);\n\n if (noPai === null) {\n coefficients[0] = valor;\n return;\n }\n\n if (noPai.op === '^') {\n // cte: second child of power\n if (o.noFil !== 1) throw new Error('Constant cannot be powered');\n\n if (!isInteger(valor) || valor <= 0) {\n throw new Error('Non-integer exponent is not allowed');\n }\n\n for (var _i2 = maxExpo + 1; _i2 < valor; _i2++) {\n coefficients[_i2] = 0;\n }\n\n if (valor > maxExpo) coefficients[valor] = 0;\n coefficients[valor] += o.cte * (o.oper === '+' ? 1 : -1);\n maxExpo = Math.max(valor, maxExpo);\n return;\n }\n\n o.cte = valor; // Cte: firer '' => There is no exponent and no multiplication, so the exponent is 0.\n\n if (o.fire === '') {\n coefficients[0] += o.cte * (o.oper === '+' ? 1 : -1);\n }\n } else {\n throw new Error('Type ' + tp + ' is not allowed');\n }\n } // End of recurPol\n\n } // End of polyToCanonical\n\n});","import { factory } from '../utils/factory';\nvar name = 'reviver';\nvar dependencies = ['classes'];\nexport var createReviver = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var classes = _ref.classes;\n\n /**\n * Instantiate mathjs data types from their JSON representation\n * @param {string} key\n * @param {*} value\n * @returns {*} Returns the revived object\n */\n return function reviver(key, value) {\n var constructor = classes[value && value.mathjs];\n\n if (constructor && typeof constructor.fromJSON === 'function') {\n return constructor.fromJSON(value);\n }\n\n return value;\n };\n});","import { errorTransform } from './utils/errorTransform';\nimport { factory } from '../../utils/factory';\nimport { createApply } from '../../function/matrix/apply';\nimport { isBigNumber, isNumber } from '../../utils/is';\nvar name = 'apply';\nvar dependencies = ['typed', 'isInteger'];\n/**\n * Attach a transform function to math.apply\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function apply\n * from one-based to zero based\n */\n\nexport var createApplyTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n isInteger = _ref.isInteger;\n var apply = createApply({\n typed: typed,\n isInteger: isInteger\n }); // @see: comment of concat itself\n\n return typed('apply', {\n '...any': function any(args) {\n // change dim from one-based to zero-based\n var dim = args[1];\n\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n\n try {\n return apply.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { errorTransform } from './utils/errorTransform';\nimport { factory } from '../../utils/factory';\nimport { createColumn } from '../../function/matrix/column';\nimport { isNumber } from '../../utils/is';\nvar name = 'column';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\n/**\n * Attach a transform function to matrix.column\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `index` parameter of function column\n * from zero-based to one-based\n */\n\nexport var createColumnTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n Index = _ref.Index,\n matrix = _ref.matrix,\n range = _ref.range;\n var column = createColumn({\n typed: typed,\n Index: Index,\n matrix: matrix,\n range: range\n }); // @see: comment of column itself\n\n return typed('column', {\n '...any': function any(args) {\n // change last argument from zero-based to one-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n }\n\n try {\n return column.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isSymbolNode } from '../../../utils/is';\n/**\n * Compile an inline expression like \"x > 0\"\n * @param {Node} expression\n * @param {Object} math\n * @param {Object} scope\n * @return {function} Returns a function with one argument which fills in the\n * undefined variable (like \"x\") and evaluates the expression\n */\n\nexport function compileInlineExpression(expression, math, scope) {\n // find an undefined symbol\n var symbol = expression.filter(function (node) {\n return isSymbolNode(node) && !(node.name in math) && !(node.name in scope);\n })[0];\n\n if (!symbol) {\n throw new Error('No undefined variable found in inline expression \"' + expression + '\"');\n } // create a test function for this equation\n\n\n var name = symbol.name; // variable name\n\n var subScope = Object.create(scope);\n var eq = expression.compile();\n return function inlineExpression(x) {\n subScope[name] = x;\n return eq.evaluate(subScope);\n };\n}","import { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is';\nimport { filter, filterRegExp } from '../../utils/array';\nimport { maxArgumentCount } from '../../utils/function';\nimport { compileInlineExpression } from './utils/compileInlineExpression';\nimport { factory } from '../../utils/factory';\nvar name = 'filter';\nvar dependencies = ['typed'];\nexport var createFilterTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed;\n\n /**\n * Attach a transform function to math.filter\n * Adds a property transform containing the transform function.\n *\n * This transform adds support for equations as test function for math.filter,\n * so you can do something like 'filter([3, -2, 5], x > 0)'.\n */\n function filterTransform(args, math, scope) {\n var x, callback;\n\n if (args[0]) {\n x = args[0].compile().evaluate(scope);\n }\n\n if (args[1]) {\n if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = args[1].compile().evaluate(scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(args[1], math, scope);\n }\n }\n\n return filter(x, callback);\n }\n\n filterTransform.rawArgs = true; // one based version of function filter\n\n var filter = typed('filter', {\n 'Array, function': _filter,\n 'Matrix, function': function MatrixFunction(x, test) {\n return x.create(_filter(x.toArray(), test));\n },\n 'Array, RegExp': filterRegExp,\n 'Matrix, RegExp': function MatrixRegExp(x, test) {\n return x.create(filterRegExp(x.toArray(), test));\n }\n });\n return filterTransform;\n}, {\n isTransformFunction: true\n});\n/**\n * Filter values in a callback given a callback function\n *\n * !!! Passes a one-based index !!!\n *\n * @param {Array} x\n * @param {Function} callback\n * @return {Array} Returns the filtered array\n * @private\n */\n\nfunction _filter(x, callback) {\n // figure out what number of arguments the callback function expects\n var args = maxArgumentCount(callback);\n return filter(x, function (value, index, array) {\n // invoke the callback function with the right number of arguments\n if (args === 1) {\n return callback(value);\n } else if (args === 2) {\n return callback(value, [index + 1]);\n } else {\n // 3 or -1\n return callback(value, [index + 1], array);\n }\n });\n}","import { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is';\nimport { maxArgumentCount } from '../../utils/function';\nimport { forEach } from '../../utils/array';\nimport { factory } from '../../utils/factory';\nimport { compileInlineExpression } from './utils/compileInlineExpression';\nvar name = 'forEach';\nvar dependencies = ['typed'];\nexport var createForEachTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed;\n\n /**\n * Attach a transform function to math.forEach\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n function forEachTransform(args, math, scope) {\n var x, callback;\n\n if (args[0]) {\n x = args[0].compile().evaluate(scope);\n }\n\n if (args[1]) {\n if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {\n // a function pointer, like forEach([3, -2, 5], myTestFunction)\n callback = args[1].compile().evaluate(scope);\n } else {\n // an expression like forEach([3, -2, 5], x > 0 ? callback1(x) : callback2(x) )\n callback = compileInlineExpression(args[1], math, scope);\n }\n }\n\n return _forEach(x, callback);\n }\n\n forEachTransform.rawArgs = true; // one-based version of forEach\n\n var _forEach = typed('forEach', {\n 'Array | Matrix, function': function ArrayMatrixFunction(array, callback) {\n // figure out what number of arguments the callback function expects\n var args = maxArgumentCount(callback);\n\n var recurse = function recurse(value, index) {\n if (Array.isArray(value)) {\n forEach(value, function (child, i) {\n // we create a copy of the index array and append the new index value\n recurse(child, index.concat(i + 1)); // one based index, hence i+1\n });\n } else {\n // invoke the callback function with the right number of arguments\n if (args === 1) {\n callback(value);\n } else if (args === 2) {\n callback(value, index);\n } else {\n // 3 or -1\n callback(value, index, array);\n }\n }\n };\n\n recurse(array.valueOf(), []); // pass Array\n }\n });\n\n return forEachTransform;\n}, {\n isTransformFunction: true\n});","import { isArray, isBigNumber, isMatrix, isNumber, isRange } from '../../utils/is';\nimport { factory } from '../../utils/factory';\nvar name = 'index';\nvar dependencies = ['Index'];\nexport var createIndexTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var Index = _ref.Index;\n\n /**\n * Attach a transform function to math.index\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n return function indexTransform() {\n var args = [];\n\n for (var i = 0, ii = arguments.length; i < ii; i++) {\n var arg = arguments[i]; // change from one-based to zero based, and convert BigNumber to number\n\n if (isRange(arg)) {\n arg.start--;\n arg.end -= arg.step > 0 ? 0 : 2;\n } else if (arg && arg.isSet === true) {\n arg = arg.map(function (v) {\n return v - 1;\n });\n } else if (isArray(arg) || isMatrix(arg)) {\n arg = arg.map(function (v) {\n return v - 1;\n });\n } else if (isNumber(arg)) {\n arg--;\n } else if (isBigNumber(arg)) {\n arg = arg.toNumber() - 1;\n } else if (typeof arg === 'string') {// leave as is\n } else {\n throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');\n }\n\n args[i] = arg;\n }\n\n var res = new Index();\n Index.apply(res, args);\n return res;\n };\n}, {\n isTransformFunction: true\n});","import { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is';\nimport { maxArgumentCount } from '../../utils/function';\nimport { map } from '../../utils/array';\nimport { factory } from '../../utils/factory';\nimport { compileInlineExpression } from './utils/compileInlineExpression';\nvar name = 'map';\nvar dependencies = ['typed'];\nexport var createMapTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed;\n\n /**\n * Attach a transform function to math.map\n * Adds a property transform containing the transform function.\n *\n * This transform creates a one-based index instead of a zero-based index\n */\n function mapTransform(args, math, scope) {\n var x, callback;\n\n if (args[0]) {\n x = args[0].compile().evaluate(scope);\n }\n\n if (args[1]) {\n if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {\n // a function pointer, like filter([3, -2, 5], myTestFunction)\n callback = args[1].compile().evaluate(scope);\n } else {\n // an expression like filter([3, -2, 5], x > 0)\n callback = compileInlineExpression(args[1], math, scope);\n }\n }\n\n return map(x, callback);\n }\n\n mapTransform.rawArgs = true; // one-based version of map function\n\n var map = typed('map', {\n 'Array, function': function ArrayFunction(x, callback) {\n return _map(x, callback, x);\n },\n 'Matrix, function': function MatrixFunction(x, callback) {\n return x.create(_map(x.valueOf(), callback, x));\n }\n });\n return mapTransform;\n}, {\n isTransformFunction: true\n});\n/**\n * Map for a multi dimensional array. One-based indexes\n * @param {Array} array\n * @param {function} callback\n * @param {Array} orig\n * @return {Array}\n * @private\n */\n\nfunction _map(array, callback, orig) {\n // figure out what number of arguments the callback function expects\n var argsCount = maxArgumentCount(callback);\n\n function recurse(value, index) {\n if (Array.isArray(value)) {\n return map(value, function (child, i) {\n // we create a copy of the index array and append the new index value\n return recurse(child, index.concat(i + 1)); // one based index, hence i + 1\n });\n } else {\n // invoke the (typed) callback function with the right number of arguments\n if (argsCount === 1) {\n return callback(value);\n } else if (argsCount === 2) {\n return callback(value, index);\n } else {\n // 3 or -1\n return callback(value, index, orig);\n }\n }\n }\n\n return recurse(array, []);\n}","import { isBigNumber, isCollection, isNumber } from '../../utils/is';\nimport { factory } from '../../utils/factory';\nimport { errorTransform } from './utils/errorTransform';\nimport { createMax } from '../../function/statistics/max';\nvar name = 'max';\nvar dependencies = ['typed', 'config', 'numeric', 'larger'];\nexport var createMaxTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n config = _ref.config,\n numeric = _ref.numeric,\n larger = _ref.larger;\n var max = createMax({\n typed: typed,\n config: config,\n numeric: numeric,\n larger: larger\n });\n /**\n * Attach a transform function to math.max\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function max\n * from one-based to zero based\n */\n\n return typed('max', {\n '...any': function any(args) {\n // change last argument dim from one-based to zero-based\n if (args.length === 2 && isCollection(args[0])) {\n var dim = args[1];\n\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n\n try {\n return max.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isBigNumber, isCollection, isNumber } from '../../utils/is';\nimport { factory } from '../../utils/factory';\nimport { errorTransform } from './utils/errorTransform';\nimport { createMean } from '../../function/statistics/mean';\nvar name = 'mean';\nvar dependencies = ['typed', 'add', 'divide'];\nexport var createMeanTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n add = _ref.add,\n divide = _ref.divide;\n var mean = createMean({\n typed: typed,\n add: add,\n divide: divide\n });\n /**\n * Attach a transform function to math.mean\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function mean\n * from one-based to zero based\n */\n\n return typed('mean', {\n '...any': function any(args) {\n // change last argument dim from one-based to zero-based\n if (args.length === 2 && isCollection(args[0])) {\n var dim = args[1];\n\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n\n try {\n return mean.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isBigNumber, isCollection, isNumber } from '../../utils/is';\nimport { factory } from '../../utils/factory';\nimport { errorTransform } from './utils/errorTransform';\nimport { createMin } from '../../function/statistics/min';\nvar name = 'min';\nvar dependencies = ['typed', 'config', 'numeric', 'smaller'];\nexport var createMinTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n config = _ref.config,\n numeric = _ref.numeric,\n smaller = _ref.smaller;\n var min = createMin({\n typed: typed,\n config: config,\n numeric: numeric,\n smaller: smaller\n });\n /**\n * Attach a transform function to math.min\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function min\n * from one-based to zero based\n */\n\n return typed('min', {\n '...any': function any(args) {\n // change last argument dim from one-based to zero-based\n if (args.length === 2 && isCollection(args[0])) {\n var dim = args[1];\n\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n\n try {\n return min.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory';\nimport { createRange } from '../../function/matrix/range';\nvar name = 'range';\nvar dependencies = ['typed', 'config', '?matrix', '?bignumber', 'smaller', 'smallerEq', 'larger', 'largerEq'];\nexport var createRangeTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n config = _ref.config,\n matrix = _ref.matrix,\n bignumber = _ref.bignumber,\n smaller = _ref.smaller,\n smallerEq = _ref.smallerEq,\n larger = _ref.larger,\n largerEq = _ref.largerEq;\n var range = createRange({\n typed: typed,\n config: config,\n matrix: matrix,\n bignumber: bignumber,\n smaller: smaller,\n smallerEq: smallerEq,\n larger: larger,\n largerEq: largerEq\n });\n /**\n * Attach a transform function to math.range\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n\n return typed('range', {\n '...any': function any(args) {\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n\n if (typeof last !== 'boolean') {\n // append a parameter includeEnd=true\n args.push(true);\n }\n\n return range.apply(null, args);\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory';\nimport { createRow } from '../../function/matrix/row';\nimport { errorTransform } from './utils/errorTransform';\nimport { isNumber } from '../../utils/is';\nvar name = 'row';\nvar dependencies = ['typed', 'Index', 'matrix', 'range'];\n/**\n * Attach a transform function to matrix.column\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `index` parameter of function column\n * from zero-based to one-based\n */\n\nexport var createRowTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n Index = _ref.Index,\n matrix = _ref.matrix,\n range = _ref.range;\n var row = createRow({\n typed: typed,\n Index: Index,\n matrix: matrix,\n range: range\n }); // @see: comment of row itself\n\n return typed('row', {\n '...any': function any(args) {\n // change last argument from zero-based to one-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n }\n\n try {\n return row.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory';\nimport { errorTransform } from './utils/errorTransform';\nimport { createSubset } from '../../function/matrix/subset';\nvar name = 'subset';\nvar dependencies = ['typed', 'matrix'];\nexport var createSubsetTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n matrix = _ref.matrix;\n var subset = createSubset({\n typed: typed,\n matrix: matrix\n });\n /**\n * Attach a transform function to math.subset\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n\n return typed('subset', {\n '...any': function any(args) {\n try {\n return subset.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isBigNumber, isNumber } from '../../utils/is';\nimport { errorTransform } from './utils/errorTransform';\nimport { factory } from '../../utils/factory';\nimport { createConcat } from '../../function/matrix/concat';\nvar name = 'concat';\nvar dependencies = ['typed', 'matrix', 'isInteger'];\nexport var createConcatTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n matrix = _ref.matrix,\n isInteger = _ref.isInteger;\n var concat = createConcat({\n typed: typed,\n matrix: matrix,\n isInteger: isInteger\n });\n /**\n * Attach a transform function to math.range\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function concat\n * from one-based to zero based\n */\n\n return typed('concat', {\n '...any': function any(args) {\n // change last argument from one-based to zero-based\n var lastIndex = args.length - 1;\n var last = args[lastIndex];\n\n if (isNumber(last)) {\n args[lastIndex] = last - 1;\n } else if (isBigNumber(last)) {\n args[lastIndex] = last.minus(1);\n }\n\n try {\n return concat.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isBigNumber, isCollection, isNumber } from '../../utils/is';\nimport { factory } from '../../utils/factory';\nimport { errorTransform } from './utils/errorTransform';\nimport { createDiff } from '../../function/matrix/diff';\nvar name = 'diff';\nvar dependencies = ['typed', 'matrix', 'subtract', 'number', 'bignumber'];\nexport var createDiffTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n matrix = _ref.matrix,\n subtract = _ref.subtract,\n number = _ref.number,\n bignumber = _ref.bignumber;\n var diff = createDiff({\n typed: typed,\n matrix: matrix,\n subtract: subtract,\n number: number,\n bignumber: bignumber\n });\n /**\n * Attach a transform function to math.diff\n * Adds a property transform containing the transform function.\n *\n * This transform creates a range which includes the end value\n */\n\n return typed(name, {\n '...any': function any(args) {\n // change last argument dim from one-based to zero-based\n if (args.length === 2 && isCollection(args[0])) {\n var dim = args[1];\n\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n\n try {\n return diff.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory';\nimport { createStd } from '../../function/statistics/std';\nimport { isBigNumber, isNumber, isCollection } from '../../utils/is';\nimport { errorTransform } from './utils/errorTransform';\nvar name = 'std';\nvar dependencies = ['typed', 'sqrt', 'variance'];\n/**\n * Attach a transform function to math.std\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function std\n * from one-based to zero based\n */\n\nexport var createStdTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n sqrt = _ref.sqrt,\n variance = _ref.variance;\n var std = createStd({\n typed: typed,\n sqrt: sqrt,\n variance: variance\n });\n return typed('std', {\n '...any': function any(args) {\n // change last argument dim from one-based to zero-based\n if (args.length >= 2 && isCollection(args[0])) {\n var dim = args[1];\n\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n\n try {\n return std.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { isBigNumber, isCollection, isNumber } from '../../utils/is';\nimport { factory } from '../../utils/factory';\nimport { errorTransform } from './utils/errorTransform';\nimport { createSum } from '../../function/statistics/sum';\n/**\n * Attach a transform function to math.sum\n * Adds a property transform containing the transform function.\n *\n * This transform changed the last `dim` parameter of function mean\n * from one-based to zero based\n */\n\nvar name = 'sum';\nvar dependencies = ['typed', 'config', 'add', 'numeric'];\nexport var createSumTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n config = _ref.config,\n add = _ref.add,\n numeric = _ref.numeric;\n var sum = createSum({\n typed: typed,\n config: config,\n add: add,\n numeric: numeric\n });\n return typed(name, {\n '...any': function any(args) {\n // change last argument dim from one-based to zero-based\n if (args.length === 2 && isCollection(args[0])) {\n var dim = args[1];\n\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n\n try {\n return sum.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","import { factory } from '../../utils/factory';\nimport { isBigNumber, isCollection, isNumber } from '../../utils/is';\nimport { errorTransform } from './utils/errorTransform';\nimport { createVariance } from '../../function/statistics/variance';\nvar name = 'variance';\nvar dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'apply', 'isNaN'];\n/**\n * Attach a transform function to math.var\n * Adds a property transform containing the transform function.\n *\n * This transform changed the `dim` parameter of function var\n * from one-based to zero based\n */\n\nexport var createVarianceTransform = /* #__PURE__ */factory(name, dependencies, function (_ref) {\n var typed = _ref.typed,\n add = _ref.add,\n subtract = _ref.subtract,\n multiply = _ref.multiply,\n divide = _ref.divide,\n apply = _ref.apply,\n isNaN = _ref.isNaN;\n var variance = createVariance({\n typed: typed,\n add: add,\n subtract: subtract,\n multiply: multiply,\n divide: divide,\n apply: apply,\n isNaN: isNaN\n });\n return typed(name, {\n '...any': function any(args) {\n // change last argument dim from one-based to zero-based\n if (args.length >= 2 && isCollection(args[0])) {\n var dim = args[1];\n\n if (isNumber(dim)) {\n args[1] = dim - 1;\n } else if (isBigNumber(dim)) {\n args[1] = dim.minus(1);\n }\n }\n\n try {\n return variance.apply(null, args);\n } catch (err) {\n throw errorTransform(err);\n }\n }\n });\n}, {\n isTransformFunction: true\n});","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * THIS FILE IS AUTO-GENERATED\n * DON'T MAKE CHANGES HERE\n */\nimport { config } from './configReadonly';\nimport { createNode, createArrayNode, createBlockNode, createConstantNode, createObjectNode, createParenthesisNode, createRelationalNode, createChainClass, createReviver, createConditionalNode, createOperatorNode, createRangeNode, createFunctionAssignmentNode, createChain, createAccessorNode, createIndexNode, createAssignmentNode, createSymbolNode, createFunctionNode, createParse, createEvaluate, createHelpClass, createParserClass, createHelp, createCompile, createSimplify, createRationalize, createParser, createDerivative, createApplyTransform, createFilterTransform, createMapTransform, createForEachTransform, createSubsetTransform, createIndexTransform, createConcatTransform, createMaxTransform, createMinTransform, createSumTransform, createColumnTransform, createRangeTransform, createDiffTransform, createRowTransform, createMeanTransform, createVarianceTransform, createStdTransform } from '../factoriesAny';\nimport { ResultSet, Complex, Range, _false, _null, _true, BigNumber, Matrix, replacer, i, LN10, LOG10E, _NaN, pi, SQRT1_2 // eslint-disable-line camelcase\n, tau, efimovFactor, fineStructure, sackurTetrode, weakMixingAngle, Fraction, e, _Infinity, LOG2E, version, DenseMatrix, phi, typed, isInteger, isNumeric, isPositive, isNaN, equalScalar, number, boolean as _boolean, complex, splitUnit, unaryPlus, apply, cube, expm1, log10, multiplyScalar, sign, square, bitNot, arg, im, not, filter, forEach, map, erf, format, oct, print, isPrime, acos, acot, acsc, asec, asin, atan, atanh, cosh, coth, csch, sech, sinh, tanh, combinations, pickRandom, randomInt, LN2, clone, hasNumericValue, typeOf, string, fraction, unaryMinus, addScalar, exp, log2, sqrt, conj, getMatrixDataType, mode, bin, acosh, acsch, asinh, cos, csc, sin, combinationsWithRep, random, SQRT2, isNegative, SparseMatrix, matrix, cbrt, gcd, mod, nthRoot, xgcd, bitAnd, bitXor, or, concat, diag, identity, ones, reshape, size, subset, zeros, hex, round, leftShift, rightLogShift, compare, compareText, smaller, larger, unequal, ImmutableDenseMatrix, FibonacciHeap, sparse, acoth, atan2, sec, add, dot, composition, isZero, abs, floor, multiply, dotMultiply, re, flatten, resize, squeeze, to, pow, dotPow, rightArithShift, compareNatural, equalText, largerEq, partitionSelect, Index, asech, tan, setDifference, setIntersect, setMultiplicity, setSize, trace, quantileSeq, gamma, bignumber, lcm, bitOr, kron, transpose, numeric, and, smallerEq, sort, min, cot, setDistinct, setPowerset, index, sum, factorial, permutations, ceil, subtract, cross, range, row, prod, equal, max, setCartesian, setSymDifference, fix, column, ctranspose, deepEqual, setIsSubset, xor, divideScalar, nthRoots, lsolve, lsolveAll, Spa, setUnion, lup, slu, det, distance, stirlingS2, catalan, diff, log, dotDivide, usolveAll, hypot, qr, inv, expm, divide, mean, variance, kldivergence, bellNumbers, log1p, Unit, createUnit, eigs, intersect, std, atomicMass, bohrMagneton, boltzmann, conductanceQuantum, deuteronMass, electronMass, faraday, firstRadiation, gravitationConstant, hartreeEnergy, klitzing, magneticConstant, molarMass, molarPlanckConstant, neutronMass, planckCharge, planckLength, planckTemperature, protonMass, reducedPlanckConstant, secondRadiation, stefanBoltzmann, vacuumImpedance, usolve, norm, lusolve, sqrtm, multinomial, avogadro, classicalElectronRadius, electricConstant, fermiCoupling, gravity, loschmidt, molarMassC12, nuclearMagneton, planckMass, quantumOfCirculation, speedOfLight, wienDisplacement, rotationMatrix, median, bohrRadius, elementaryCharge, inverseConductanceQuantum, molarVolume, planckTime, thomsonCrossSection, rotate, mad, coulomb, magneticFluxQuantum, rydberg, unit, gasConstant, planckConstant } from './pureFunctionsAny.generated';\nvar math = {}; // NOT pure!\n\nvar mathWithTransform = {}; // NOT pure!\n\nvar classes = {}; // NOT pure!\n\nexport var Node = createNode({\n mathWithTransform: mathWithTransform\n});\nexport var ArrayNode = createArrayNode({\n Node: Node\n});\nexport var BlockNode = createBlockNode({\n Node: Node,\n ResultSet: ResultSet\n});\nexport var ConstantNode = createConstantNode({\n Node: Node\n});\nexport var ObjectNode = createObjectNode({\n Node: Node\n});\nexport var ParenthesisNode = createParenthesisNode({\n Node: Node\n});\nexport var RelationalNode = createRelationalNode({\n Node: Node\n});\nexport var Chain = createChainClass({\n math: math\n});\nexport var reviver = createReviver({\n classes: classes\n});\nexport var ConditionalNode = createConditionalNode({\n Node: Node\n});\nexport var OperatorNode = createOperatorNode({\n Node: Node\n});\nexport var RangeNode = createRangeNode({\n Node: Node\n});\nexport var FunctionAssignmentNode = createFunctionAssignmentNode({\n Node: Node,\n typed: typed\n});\nexport var chain = createChain({\n Chain: Chain,\n typed: typed\n});\nexport var AccessorNode = createAccessorNode({\n Node: Node,\n subset: subset\n});\nexport var IndexNode = createIndexNode({\n Node: Node,\n Range: Range,\n size: size\n});\nexport var AssignmentNode = createAssignmentNode({\n matrix: matrix,\n Node: Node,\n subset: subset\n});\nexport var SymbolNode = createSymbolNode({\n Unit: Unit,\n Node: Node,\n math: math\n});\nexport var FunctionNode = createFunctionNode({\n Node: Node,\n SymbolNode: SymbolNode,\n math: math\n});\nexport var parse = createParse({\n AccessorNode: AccessorNode,\n ArrayNode: ArrayNode,\n AssignmentNode: AssignmentNode,\n BlockNode: BlockNode,\n ConditionalNode: ConditionalNode,\n ConstantNode: ConstantNode,\n FunctionAssignmentNode: FunctionAssignmentNode,\n FunctionNode: FunctionNode,\n IndexNode: IndexNode,\n ObjectNode: ObjectNode,\n OperatorNode: OperatorNode,\n ParenthesisNode: ParenthesisNode,\n RangeNode: RangeNode,\n RelationalNode: RelationalNode,\n SymbolNode: SymbolNode,\n config: config,\n numeric: numeric,\n typed: typed\n});\nexport var evaluate = createEvaluate({\n parse: parse,\n typed: typed\n});\nexport var Help = createHelpClass({\n parse: parse\n});\nexport var Parser = createParserClass({\n parse: parse\n});\nexport var help = createHelp({\n Help: Help,\n mathWithTransform: mathWithTransform,\n typed: typed\n});\nexport var compile = createCompile({\n parse: parse,\n typed: typed\n});\nexport var simplify = createSimplify({\n bignumber: bignumber,\n fraction: fraction,\n ConstantNode: ConstantNode,\n FunctionNode: FunctionNode,\n OperatorNode: OperatorNode,\n ParenthesisNode: ParenthesisNode,\n SymbolNode: SymbolNode,\n add: add,\n config: config,\n divide: divide,\n equal: equal,\n isZero: isZero,\n mathWithTransform: mathWithTransform,\n multiply: multiply,\n parse: parse,\n pow: pow,\n subtract: subtract,\n typed: typed\n});\nexport var rationalize = createRationalize({\n bignumber: bignumber,\n fraction: fraction,\n ConstantNode: ConstantNode,\n FunctionNode: FunctionNode,\n OperatorNode: OperatorNode,\n ParenthesisNode: ParenthesisNode,\n SymbolNode: SymbolNode,\n add: add,\n config: config,\n divide: divide,\n equal: equal,\n isZero: isZero,\n mathWithTransform: mathWithTransform,\n multiply: multiply,\n parse: parse,\n pow: pow,\n simplify: simplify,\n subtract: subtract,\n typed: typed\n});\nexport var parser = createParser({\n Parser: Parser,\n typed: typed\n});\nexport var derivative = createDerivative({\n ConstantNode: ConstantNode,\n FunctionNode: FunctionNode,\n OperatorNode: OperatorNode,\n ParenthesisNode: ParenthesisNode,\n SymbolNode: SymbolNode,\n config: config,\n equal: equal,\n isZero: isZero,\n numeric: numeric,\n parse: parse,\n simplify: simplify,\n typed: typed\n});\n\n_extends(math, {\n reviver: reviver,\n \"false\": _false,\n \"null\": _null,\n \"true\": _true,\n replacer: replacer,\n i: i,\n LN10: LN10,\n LOG10E: LOG10E,\n NaN: _NaN,\n pi: pi,\n SQRT1_2: SQRT1_2,\n tau: tau,\n efimovFactor: efimovFactor,\n fineStructure: fineStructure,\n sackurTetrode: sackurTetrode,\n weakMixingAngle: weakMixingAngle,\n e: e,\n Infinity: _Infinity,\n LOG2E: LOG2E,\n 'PI': pi,\n version: version,\n 'E': e,\n phi: phi,\n typed: typed,\n isInteger: isInteger,\n isNumeric: isNumeric,\n isPositive: isPositive,\n isNaN: isNaN,\n equalScalar: equalScalar,\n number: number,\n \"boolean\": _boolean,\n complex: complex,\n splitUnit: splitUnit,\n unaryPlus: unaryPlus,\n apply: apply,\n cube: cube,\n expm1: expm1,\n log10: log10,\n multiplyScalar: multiplyScalar,\n sign: sign,\n square: square,\n bitNot: bitNot,\n arg: arg,\n im: im,\n not: not,\n filter: filter,\n forEach: forEach,\n map: map,\n erf: erf,\n format: format,\n oct: oct,\n print: print,\n isPrime: isPrime,\n acos: acos,\n acot: acot,\n acsc: acsc,\n asec: asec,\n asin: asin,\n atan: atan,\n atanh: atanh,\n cosh: cosh,\n coth: coth,\n csch: csch,\n sech: sech,\n sinh: sinh,\n tanh: tanh,\n chain: chain,\n combinations: combinations,\n pickRandom: pickRandom,\n randomInt: randomInt,\n LN2: LN2,\n clone: clone,\n hasNumericValue: hasNumericValue,\n typeOf: typeOf,\n string: string,\n fraction: fraction,\n unaryMinus: unaryMinus,\n addScalar: addScalar,\n exp: exp,\n log2: log2,\n sqrt: sqrt,\n conj: conj,\n getMatrixDataType: getMatrixDataType,\n mode: mode,\n bin: bin,\n acosh: acosh,\n acsch: acsch,\n asinh: asinh,\n cos: cos,\n csc: csc,\n sin: sin,\n combinationsWithRep: combinationsWithRep,\n random: random,\n SQRT2: SQRT2,\n isNegative: isNegative,\n matrix: matrix,\n cbrt: cbrt,\n gcd: gcd,\n mod: mod,\n nthRoot: nthRoot,\n xgcd: xgcd,\n bitAnd: bitAnd,\n bitXor: bitXor,\n or: or,\n concat: concat,\n diag: diag,\n identity: identity,\n ones: ones,\n reshape: reshape,\n size: size,\n subset: subset,\n zeros: zeros,\n hex: hex,\n round: round,\n leftShift: leftShift,\n rightLogShift: rightLogShift,\n compare: compare,\n compareText: compareText,\n smaller: smaller,\n larger: larger,\n unequal: unequal,\n sparse: sparse,\n acoth: acoth,\n atan2: atan2,\n sec: sec,\n add: add,\n dot: dot,\n composition: composition,\n isZero: isZero,\n abs: abs,\n floor: floor,\n multiply: multiply,\n dotMultiply: dotMultiply,\n re: re,\n flatten: flatten,\n resize: resize,\n squeeze: squeeze,\n to: to,\n pow: pow,\n dotPow: dotPow,\n rightArithShift: rightArithShift,\n compareNatural: compareNatural,\n equalText: equalText,\n largerEq: largerEq,\n partitionSelect: partitionSelect,\n asech: asech,\n tan: tan,\n setDifference: setDifference,\n setIntersect: setIntersect,\n setMultiplicity: setMultiplicity,\n setSize: setSize,\n trace: trace,\n quantileSeq: quantileSeq,\n gamma: gamma,\n bignumber: bignumber,\n lcm: lcm,\n bitOr: bitOr,\n kron: kron,\n transpose: transpose,\n numeric: numeric,\n and: and,\n smallerEq: smallerEq,\n sort: sort,\n min: min,\n cot: cot,\n setDistinct: setDistinct,\n setPowerset: setPowerset,\n index: index,\n sum: sum,\n factorial: factorial,\n permutations: permutations,\n ceil: ceil,\n subtract: subtract,\n cross: cross,\n range: range,\n row: row,\n prod: prod,\n equal: equal,\n max: max,\n setCartesian: setCartesian,\n setSymDifference: setSymDifference,\n fix: fix,\n column: column,\n ctranspose: ctranspose,\n deepEqual: deepEqual,\n setIsSubset: setIsSubset,\n xor: xor,\n divideScalar: divideScalar,\n nthRoots: nthRoots,\n lsolve: lsolve,\n lsolveAll: lsolveAll,\n setUnion: setUnion,\n lup: lup,\n slu: slu,\n det: det,\n distance: distance,\n stirlingS2: stirlingS2,\n catalan: catalan,\n diff: diff,\n log: log,\n dotDivide: dotDivide,\n usolveAll: usolveAll,\n hypot: hypot,\n qr: qr,\n inv: inv,\n expm: expm,\n divide: divide,\n mean: mean,\n variance: variance,\n kldivergence: kldivergence,\n bellNumbers: bellNumbers,\n log1p: log1p,\n createUnit: createUnit,\n eigs: eigs,\n intersect: intersect,\n std: std,\n atomicMass: atomicMass,\n bohrMagneton: bohrMagneton,\n boltzmann: boltzmann,\n conductanceQuantum: conductanceQuantum,\n deuteronMass: deuteronMass,\n electronMass: electronMass,\n faraday: faraday,\n firstRadiation: firstRadiation,\n gravitationConstant: gravitationConstant,\n hartreeEnergy: hartreeEnergy,\n klitzing: klitzing,\n magneticConstant: magneticConstant,\n molarMass: molarMass,\n molarPlanckConstant: molarPlanckConstant,\n neutronMass: neutronMass,\n planckCharge: planckCharge,\n planckLength: planckLength,\n planckTemperature: planckTemperature,\n protonMass: protonMass,\n reducedPlanckConstant: reducedPlanckConstant,\n secondRadiation: secondRadiation,\n stefanBoltzmann: stefanBoltzmann,\n vacuumImpedance: vacuumImpedance,\n usolve: usolve,\n norm: norm,\n lusolve: lusolve,\n sqrtm: sqrtm,\n multinomial: multinomial,\n avogadro: avogadro,\n classicalElectronRadius: classicalElectronRadius,\n electricConstant: electricConstant,\n fermiCoupling: fermiCoupling,\n gravity: gravity,\n loschmidt: loschmidt,\n molarMassC12: molarMassC12,\n nuclearMagneton: nuclearMagneton,\n planckMass: planckMass,\n quantumOfCirculation: quantumOfCirculation,\n speedOfLight: speedOfLight,\n wienDisplacement: wienDisplacement,\n rotationMatrix: rotationMatrix,\n median: median,\n bohrRadius: bohrRadius,\n elementaryCharge: elementaryCharge,\n inverseConductanceQuantum: inverseConductanceQuantum,\n molarVolume: molarVolume,\n planckTime: planckTime,\n thomsonCrossSection: thomsonCrossSection,\n rotate: rotate,\n parse: parse,\n evaluate: evaluate,\n mad: mad,\n coulomb: coulomb,\n magneticFluxQuantum: magneticFluxQuantum,\n rydberg: rydberg,\n unit: unit,\n help: help,\n gasConstant: gasConstant,\n compile: compile,\n simplify: simplify,\n rationalize: rationalize,\n parser: parser,\n planckConstant: planckConstant,\n derivative: derivative,\n config: config\n});\n\n_extends(mathWithTransform, math, {\n apply: createApplyTransform({\n isInteger: isInteger,\n typed: typed\n }),\n filter: createFilterTransform({\n typed: typed\n }),\n map: createMapTransform({\n typed: typed\n }),\n forEach: createForEachTransform({\n typed: typed\n }),\n subset: createSubsetTransform({\n matrix: matrix,\n typed: typed\n }),\n index: createIndexTransform({\n Index: Index\n }),\n concat: createConcatTransform({\n isInteger: isInteger,\n matrix: matrix,\n typed: typed\n }),\n max: createMaxTransform({\n config: config,\n larger: larger,\n numeric: numeric,\n typed: typed\n }),\n min: createMinTransform({\n config: config,\n numeric: numeric,\n smaller: smaller,\n typed: typed\n }),\n sum: createSumTransform({\n add: add,\n config: config,\n numeric: numeric,\n typed: typed\n }),\n column: createColumnTransform({\n Index: Index,\n matrix: matrix,\n range: range,\n typed: typed\n }),\n range: createRangeTransform({\n bignumber: bignumber,\n matrix: matrix,\n config: config,\n larger: larger,\n largerEq: largerEq,\n smaller: smaller,\n smallerEq: smallerEq,\n typed: typed\n }),\n diff: createDiffTransform({\n bignumber: bignumber,\n matrix: matrix,\n number: number,\n subtract: subtract,\n typed: typed\n }),\n row: createRowTransform({\n Index: Index,\n matrix: matrix,\n range: range,\n typed: typed\n }),\n mean: createMeanTransform({\n add: add,\n divide: divide,\n typed: typed\n }),\n variance: createVarianceTransform({\n add: add,\n apply: apply,\n divide: divide,\n isNaN: isNaN,\n multiply: multiply,\n subtract: subtract,\n typed: typed\n }),\n std: createStdTransform({\n sqrt: sqrt,\n typed: typed,\n variance: variance\n })\n});\n\n_extends(classes, {\n ResultSet: ResultSet,\n Complex: Complex,\n Range: Range,\n Node: Node,\n ArrayNode: ArrayNode,\n BlockNode: BlockNode,\n ConstantNode: ConstantNode,\n ObjectNode: ObjectNode,\n ParenthesisNode: ParenthesisNode,\n RelationalNode: RelationalNode,\n Chain: Chain,\n BigNumber: BigNumber,\n Matrix: Matrix,\n ConditionalNode: ConditionalNode,\n OperatorNode: OperatorNode,\n Fraction: Fraction,\n RangeNode: RangeNode,\n DenseMatrix: DenseMatrix,\n FunctionAssignmentNode: FunctionAssignmentNode,\n SparseMatrix: SparseMatrix,\n ImmutableDenseMatrix: ImmutableDenseMatrix,\n FibonacciHeap: FibonacciHeap,\n AccessorNode: AccessorNode,\n IndexNode: IndexNode,\n Index: Index,\n AssignmentNode: AssignmentNode,\n Spa: Spa,\n Unit: Unit,\n SymbolNode: SymbolNode,\n FunctionNode: FunctionNode,\n Help: Help,\n Parser: Parser\n});\n\nChain.createProxy(math);\nexport { embeddedDocs as docs } from '../expression/embeddedDocs/embeddedDocs';","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307],"mappings":"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,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;EAAC,GAEG,IAAgB;GAAC;IACnB,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;EAAC,GAEG,IAAc,CAAC;GACjB,GAAG;GACH,GAAG;EACL,GACA;GACE,GAAG;GACH,GAAG;EACL,CAAC,GACG,IAAW,CAAC;EA8FhB,OA1FA,EAAS,aAAa,EAAS,OAAO,GAAY,CAAW,GAE7D,EAAS,gBAAgB,GAEzB,EAAS,cAAc,GAEvB,EAAS,kBAAkB,EAAS,OAAO,CAAU,GAKrD,EAAS,aAAa;GAAC;GACvB;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL;GACA;IACE,GAAG;IACH,GAAG;GACL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W,GAAe;CAC5B;CACA;AACT,CAAC,GACU,KAAO,GAAgB,EACzB,UACT,CAAC,GACU,KAAS,GAAkB,EAC7B,UACT,CAAC,GACU,KAAO,GAAW;CACrB;CACa;CACZ;AACT,CAAC,GACU,KAAU,GAAc;CAC1B;CACA;AACT,CAAC,GACU,KAAW,GAAe;CACxB;CACD;CACI;CACA;CACA;CACG;CACL;CACP;CACG;CACA;CACD;CACC;CACW;CACT;CACH;CACF;CACK;CACH;AACT,CAAC,GACU,KAAc,GAAkB;CAC9B;CACD;CACI;CACA;CACA;CACG;CACL;CACP;CACG;CACA;CACD;CACC;CACW;CACT;CACH;CACF;CACK;CACA;CACH;AACT,CAAC,GACU,KAAS,GAAa;CACvB;CACD;AACT,CAAC,GACU,KAAa,GAAiB;CACzB;CACA;CACA;CACG;CACL;CACJ;CACD;CACC;CACC;CACF;CACG;CACH;AACT,CAAC;AAED,GAAS,IAAM;CACJ;CACT,OAAS;CACT,MAAQ;CACR,MAAQ;CACE;CACP;CACG;CACE;CACR,KAAK;CACD;CACK;CACJ;CACS;CACC;CACA;CACE;CACd;CACH,UAAU;CACH;CACP,IAAM;CACG;CACT,GAAK;CACA;CACE;CACP,WAAWE;CACA;CACC;CACZ,OAAOC;CACM;CACL;CACR,SAAW;CACF;CACE;CACA;CACX,OAAOC;CACD;CACC;CACA;CACS;CACV;CACE;CACA;CACH;CACD;CACC;CACL,QAAQC;CACR,SAASC;CACT,KAAKC;CACA;CACL,QAAQC;CACH;CACE;CACE;CACH;CACA;CACA;CACA;CACA;CACA;CACC;CACD;CACA;CACA;CACA;CACA;CACA;CACC;CACO;CACF;CACD;CACN;CACL,OAAOC;CACU;CACjB,QAAQC;CACA;CACE;CACE;CACD;CACN;CACC;CACA;CACA;CACa;CACb;CACD;CACE;CACA;CACA;CACF;CACA;CACA;CACgB;CACb;CACD;CACK;CACJ;CACF;CACD;CACA;CACI;CACH;CACE;CACA;CACJ;CACI;CACF;CACN,UAAUC;CACJ;CACG;CACH;CACE;CACD;CACF;CACE;CACI;CACI;CACN;CACI;CACJ;CACD;CACC;CACD;CACD;CACA;CACF;CACA;CACA;CACQ;CACL;CACH;CACE;CACG;CACG;CACT;CACK;CACD;CACC;CACL;CACC;CACG;CACS;CACD;CACL;CACD;CACO;CACV;CACF;CACU;CACD;CACG;CACR;CACF;CACM;CACN;CACI;CACN;CACE;CACD;CACK;CACF;CACJ;CACM;CACL;CACD;CACA;CACQ;CACA;CACN;CACF;CACM;CACG;CACR;CACI;CACH;CACA;CACF;CACC;CACC;CACF;CACS;CACI;CACb;CACG;CACI;CACD;CACE;CACR;CACS;CACJ;CACF;CACG;CACD;CACL;CACA;CACA;CACK;CACE;CACH;CACH;CACD;CACM;CACA;CACJ;CACH;CACC;CACC;CACE;CACF;CACI;CACI;CACD;CACN;CACK;CACN;CACK;CACN;CACO;CACE;CACH;CACS;CACN;CACA;CACL;CACO;CACK;CACN;CACL;CACQ;CACP;CACU;CACR;CACC;CACA;CACK;CACP;CACW;CACN;CACA;CACA;CACT;CACF;CACG;CACF;CACM;CACH;CACe;CACP;CACH;CACN;CACE;CACG;CACG;CACL;CACU;CACR;CACI;CACF;CACR;CACI;CACM;CACS;CACd;CACD;CACS;CACb;CACD;CACG;CACL;CACI;CACY;CACZ;CACH;CACA;CACO;CACJ;CACC;CACG;CACL;CACQ;CACJ;CACJ;AACV,CAAC,GAED,GAAS,IAAmB,IAAM;CAChC,OAAO,GAAqB;EAC1B,WAAWT;EACJ;CACT,CAAC;CACD,QAAQ,GAAsB,EACrB,SACT,CAAC;CACD,KAAK,GAAmB,EACf,SACT,CAAC;CACD,SAAS,GAAuB,EACvB,SACT,CAAC;CACD,QAAQ,GAAsB;EACpB;EACD;CACT,CAAC;CACD,OAAO,GAAqB,EACnB,UACT,CAAC;CACD,QAAQ,GAAsB;EAC5B,WAAWA;EACH;EACD;CACT,CAAC;CACD,KAAK,GAAmB;EACd;EACA;EACC;EACF;CACT,CAAC;CACD,KAAK,GAAmB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"}