nerdamer 1.1.13 → 2.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/LICENSE.md +184 -0
  2. package/README.md +293 -312
  3. package/dist/bundle.js +2 -0
  4. package/dist/bundle.js.LICENSE.txt +7 -0
  5. package/dist/parser.js +2 -0
  6. package/dist/parser.js.LICENSE.txt +7 -0
  7. package/docs-data/parser-functions.json +1960 -0
  8. package/index.d.ts +10 -426
  9. package/output/algebra/adapters.d.ts +33 -0
  10. package/output/algebra/adapters.js +109 -0
  11. package/output/algebra/algorithms/arith.d.ts +84 -0
  12. package/output/algebra/algorithms/arith.js +323 -0
  13. package/output/algebra/algorithms/factor.d.ts +3 -0
  14. package/output/algebra/algorithms/factor.js +5 -0
  15. package/output/algebra/algorithms/factorMultivariate.d.ts +23 -0
  16. package/output/algebra/algorithms/factorMultivariate.js +2393 -0
  17. package/output/algebra/algorithms/factorUnivariate.d.ts +72 -0
  18. package/output/algebra/algorithms/factorUnivariate.js +1072 -0
  19. package/output/algebra/algorithms/gcd.d.ts +22 -0
  20. package/output/algebra/algorithms/gcd.js +690 -0
  21. package/output/algebra/algorithms/groebnerBase.d.ts +157 -0
  22. package/output/algebra/algorithms/groebnerBase.js +1166 -0
  23. package/output/algebra/algorithms/multiPoly/MultiPoly.d.ts +137 -0
  24. package/output/algebra/algorithms/multiPoly/MultiPoly.js +346 -0
  25. package/output/algebra/algorithms/poly.d.ts +228 -0
  26. package/output/algebra/algorithms/poly.js +1299 -0
  27. package/output/algebra/algorithms/rational.d.ts +17 -0
  28. package/output/algebra/algorithms/rational.js +115 -0
  29. package/output/algebra/factor/factor.d.ts +62 -0
  30. package/output/algebra/factor/factor.js +158 -0
  31. package/output/algebra/gcd/gcd.d.ts +29 -0
  32. package/output/algebra/gcd/gcd.js +141 -0
  33. package/output/algebra/groebner.d.ts +21 -0
  34. package/output/algebra/groebner.js +42 -0
  35. package/output/algebra/partfrac.d.ts +19 -0
  36. package/output/algebra/partfrac.js +398 -0
  37. package/output/algebra/polynomialize.d.ts +20 -0
  38. package/output/algebra/polynomialize.js +24 -0
  39. package/output/algebra/simplify/complexsimp.d.ts +7 -0
  40. package/output/algebra/simplify/complexsimp.js +24 -0
  41. package/output/algebra/simplify/factorCommon.d.ts +13 -0
  42. package/output/algebra/simplify/factorCommon.js +136 -0
  43. package/output/algebra/simplify/funcsimp.d.ts +26 -0
  44. package/output/algebra/simplify/funcsimp.js +633 -0
  45. package/output/algebra/simplify/invtrigrewrite.d.ts +10 -0
  46. package/output/algebra/simplify/invtrigrewrite.js +96 -0
  47. package/output/algebra/simplify/ratsimp.d.ts +21 -0
  48. package/output/algebra/simplify/ratsimp.js +140 -0
  49. package/output/algebra/simplify/simplify.d.ts +25 -0
  50. package/output/algebra/simplify/simplify.js +228 -0
  51. package/output/algebra/simplify/trigreduce.d.ts +38 -0
  52. package/output/algebra/simplify/trigreduce.js +424 -0
  53. package/output/algebra/simplify/trigrewrite.d.ts +17 -0
  54. package/output/algebra/simplify/trigrewrite.js +156 -0
  55. package/output/algebra/simplify/trigsimp.d.ts +11 -0
  56. package/output/algebra/simplify/trigsimp.js +369 -0
  57. package/output/algebra/simplify/utils.d.ts +32 -0
  58. package/output/algebra/simplify/utils.js +56 -0
  59. package/output/algebra/utils.d.ts +32 -0
  60. package/output/algebra/utils.js +48 -0
  61. package/output/api/advanced.d.ts +7 -0
  62. package/output/api/advanced.js +18 -0
  63. package/output/api/algebra.d.ts +17 -0
  64. package/output/api/algebra.js +32 -0
  65. package/output/api/assumptions.d.ts +4 -0
  66. package/output/api/assumptions.js +11 -0
  67. package/output/api/calculus.d.ts +9 -0
  68. package/output/api/calculus.js +21 -0
  69. package/output/api/core.d.ts +17 -0
  70. package/output/api/core.js +41 -0
  71. package/output/api/debug.d.ts +16 -0
  72. package/output/api/debug.js +23 -0
  73. package/output/api/parser.d.ts +85 -0
  74. package/output/api/parser.js +16 -0
  75. package/output/api/solve.d.ts +10 -0
  76. package/output/api/solve.js +16 -0
  77. package/output/api/structures.d.ts +10 -0
  78. package/output/api/structures.js +22 -0
  79. package/output/calculus/derivative/diff.d.ts +30 -0
  80. package/output/calculus/derivative/diff.js +238 -0
  81. package/output/calculus/fresnel.d.ts +16 -0
  82. package/output/calculus/fresnel.js +39 -0
  83. package/output/calculus/integrate/byParts.d.ts +18 -0
  84. package/output/calculus/integrate/byParts.js +339 -0
  85. package/output/calculus/integrate/bySubstitution.d.ts +135 -0
  86. package/output/calculus/integrate/bySubstitution.js +411 -0
  87. package/output/calculus/integrate/integrate.d.ts +38 -0
  88. package/output/calculus/integrate/integrate.js +652 -0
  89. package/output/calculus/integrate/integrationTable.d.ts +2 -0
  90. package/output/calculus/integrate/integrationTable.js +914 -0
  91. package/output/calculus/integrate/utils.d.ts +28 -0
  92. package/output/calculus/integrate/utils.js +96 -0
  93. package/output/calculus/laplace/ilaplace.d.ts +31 -0
  94. package/output/calculus/laplace/ilaplace.js +192 -0
  95. package/output/calculus/laplace/ilaplaceTable.d.ts +2 -0
  96. package/output/calculus/laplace/ilaplaceTable.js +200 -0
  97. package/output/calculus/laplace/laplace.d.ts +22 -0
  98. package/output/calculus/laplace/laplace.js +109 -0
  99. package/output/calculus/laplace/laplaceTable.d.ts +2 -0
  100. package/output/calculus/laplace/laplaceTable.js +187 -0
  101. package/output/calculus/limit/limit.d.ts +35 -0
  102. package/output/calculus/limit/limit.js +1183 -0
  103. package/output/calculus/limit/limitsTable.d.ts +2 -0
  104. package/output/calculus/limit/limitsTable.js +7 -0
  105. package/output/core/Settings.d.ts +32 -0
  106. package/output/core/Settings.js +68 -0
  107. package/output/core/adapters.d.ts +18 -0
  108. package/output/core/adapters.js +40 -0
  109. package/output/core/classes/assumption/Assumption.d.ts +218 -0
  110. package/output/core/classes/assumption/Assumption.js +605 -0
  111. package/output/core/classes/assumption/assertiveFunctions.d.ts +6 -0
  112. package/output/core/classes/assumption/assertiveFunctions.js +64 -0
  113. package/output/core/classes/assumption/assume.d.ts +90 -0
  114. package/output/core/classes/assumption/assume.js +145 -0
  115. package/output/core/classes/collection/Collection.d.ts +107 -0
  116. package/output/core/classes/collection/Collection.js +231 -0
  117. package/output/core/classes/complex/Complex.d.ts +99 -0
  118. package/output/core/classes/complex/Complex.js +135 -0
  119. package/output/core/classes/decimalSet/DecimalSet.d.ts +226 -0
  120. package/output/core/classes/decimalSet/DecimalSet.js +453 -0
  121. package/output/core/classes/dictionary/Dictionary.d.ts +102 -0
  122. package/output/core/classes/dictionary/Dictionary.js +213 -0
  123. package/output/core/classes/equation/Equation.d.ts +256 -0
  124. package/output/core/classes/equation/Equation.js +350 -0
  125. package/output/core/classes/expression/CoeffObject.d.ts +100 -0
  126. package/output/core/classes/expression/CoeffObject.js +198 -0
  127. package/output/core/classes/expression/Expression.d.ts +1674 -0
  128. package/output/core/classes/expression/Expression.js +2332 -0
  129. package/output/core/classes/expression/analysis.d.ts +25 -0
  130. package/output/core/classes/expression/analysis.js +218 -0
  131. package/output/core/classes/expression/collect.d.ts +9 -0
  132. package/output/core/classes/expression/collect.js +49 -0
  133. package/output/core/classes/expression/format.d.ts +45 -0
  134. package/output/core/classes/expression/format.js +217 -0
  135. package/output/core/classes/expression/products.d.ts +23 -0
  136. package/output/core/classes/expression/products.js +115 -0
  137. package/output/core/classes/expression/shortcuts.d.ts +35 -0
  138. package/output/core/classes/expression/shortcuts.js +129 -0
  139. package/output/core/classes/expression/traversal.d.ts +31 -0
  140. package/output/core/classes/expression/traversal.js +216 -0
  141. package/output/core/classes/expression/trig.d.ts +25 -0
  142. package/output/core/classes/expression/trig.js +40 -0
  143. package/output/core/classes/expression/utils.d.ts +52 -0
  144. package/output/core/classes/expression/utils.js +189 -0
  145. package/output/core/classes/lookupTable/LookupTable.d.ts +12 -0
  146. package/output/core/classes/lookupTable/LookupTable.js +55 -0
  147. package/output/core/classes/matrix/Matrix.d.ts +227 -0
  148. package/output/core/classes/matrix/Matrix.js +889 -0
  149. package/output/core/classes/matrix/Sylvester.d.ts +11 -0
  150. package/output/core/classes/matrix/Sylvester.js +54 -0
  151. package/output/core/classes/matrix/functions.d.ts +26 -0
  152. package/output/core/classes/matrix/functions.js +52 -0
  153. package/output/core/classes/matrix/utils.d.ts +9 -0
  154. package/output/core/classes/matrix/utils.js +22 -0
  155. package/output/core/classes/parser/Parser.d.ts +480 -0
  156. package/output/core/classes/parser/Parser.js +1812 -0
  157. package/output/core/classes/parser/Token.d.ts +58 -0
  158. package/output/core/classes/parser/Token.js +137 -0
  159. package/output/core/classes/parser/constants.d.ts +160 -0
  160. package/output/core/classes/parser/constants.js +227 -0
  161. package/output/core/classes/parser/helpers.d.ts +21 -0
  162. package/output/core/classes/parser/helpers.js +42 -0
  163. package/output/core/classes/parser/operations/add.d.ts +15 -0
  164. package/output/core/classes/parser/operations/add.js +238 -0
  165. package/output/core/classes/parser/operations/comma.d.ts +7 -0
  166. package/output/core/classes/parser/operations/comma.js +11 -0
  167. package/output/core/classes/parser/operations/compare.d.ts +21 -0
  168. package/output/core/classes/parser/operations/compare.js +461 -0
  169. package/output/core/classes/parser/operations/divide.d.ts +2 -0
  170. package/output/core/classes/parser/operations/divide.js +72 -0
  171. package/output/core/classes/parser/operations/functions.d.ts +46 -0
  172. package/output/core/classes/parser/operations/functions.js +430 -0
  173. package/output/core/classes/parser/operations/multiply.d.ts +11 -0
  174. package/output/core/classes/parser/operations/multiply.js +321 -0
  175. package/output/core/classes/parser/operations/power.d.ts +48 -0
  176. package/output/core/classes/parser/operations/power.js +673 -0
  177. package/output/core/classes/parser/operations/subtract.d.ts +3 -0
  178. package/output/core/classes/parser/operations/subtract.js +35 -0
  179. package/output/core/classes/parser/preprocess.d.ts +14 -0
  180. package/output/core/classes/parser/preprocess.js +259 -0
  181. package/output/core/classes/parser/scripting/controlFlow.d.ts +121 -0
  182. package/output/core/classes/parser/scripting/controlFlow.js +355 -0
  183. package/output/core/classes/parser/scripting/evaluate.d.ts +10 -0
  184. package/output/core/classes/parser/scripting/evaluate.js +112 -0
  185. package/output/core/classes/parser/scripting/functions.d.ts +14 -0
  186. package/output/core/classes/parser/scripting/functions.js +59 -0
  187. package/output/core/classes/parser/scripting/scope.d.ts +35 -0
  188. package/output/core/classes/parser/scripting/scope.js +155 -0
  189. package/output/core/classes/parser/types.d.ts +125 -0
  190. package/output/core/classes/parser/types.js +2 -0
  191. package/output/core/classes/parser/wrappers/IndexedReference.d.ts +31 -0
  192. package/output/core/classes/parser/wrappers/IndexedReference.js +68 -0
  193. package/output/core/classes/parser/wrappers/KeyValuePair.d.ts +24 -0
  194. package/output/core/classes/parser/wrappers/KeyValuePair.js +51 -0
  195. package/output/core/classes/polynomial/Polynomial.d.ts +500 -0
  196. package/output/core/classes/polynomial/Polynomial.js +1149 -0
  197. package/output/core/classes/polynomial/Term.d.ts +222 -0
  198. package/output/core/classes/polynomial/Term.js +430 -0
  199. package/output/core/classes/polynomial/functions.d.ts +69 -0
  200. package/output/core/classes/polynomial/functions.js +126 -0
  201. package/output/core/classes/polynomial/utils.d.ts +62 -0
  202. package/output/core/classes/polynomial/utils.js +206 -0
  203. package/output/core/classes/rational/Rational.d.ts +504 -0
  204. package/output/core/classes/rational/Rational.js +779 -0
  205. package/output/core/classes/seq/SEQ.d.ts +13 -0
  206. package/output/core/classes/seq/SEQ.js +137 -0
  207. package/output/core/classes/valuesSet/ValuesSet.d.ts +179 -0
  208. package/output/core/classes/valuesSet/ValuesSet.js +381 -0
  209. package/output/core/classes/vector/Vector.d.ts +222 -0
  210. package/output/core/classes/vector/Vector.js +497 -0
  211. package/output/core/classes/vector/functions.d.ts +28 -0
  212. package/output/core/classes/vector/functions.js +47 -0
  213. package/output/core/common/classes/MathematicalAggregate.d.ts +53 -0
  214. package/output/core/common/classes/MathematicalAggregate.js +140 -0
  215. package/output/core/common/classes/Scope.d.ts +62 -0
  216. package/output/core/common/classes/Scope.js +122 -0
  217. package/output/core/common/classes/StructuredEntity.d.ts +55 -0
  218. package/output/core/common/classes/StructuredEntity.js +151 -0
  219. package/output/core/common/common.d.ts +63 -0
  220. package/output/core/common/common.js +279 -0
  221. package/output/core/common/functions/functions.d.ts +14 -0
  222. package/output/core/common/functions/functions.js +33 -0
  223. package/output/core/common/functions/structuredEntityUtils.d.ts +27 -0
  224. package/output/core/common/functions/structuredEntityUtils.js +40 -0
  225. package/output/core/converters/BaseConverter.d.ts +97 -0
  226. package/output/core/converters/BaseConverter.js +405 -0
  227. package/output/core/converters/Converter.d.ts +111 -0
  228. package/output/core/converters/Converter.js +802 -0
  229. package/output/core/converters/Pattern.d.ts +71 -0
  230. package/output/core/converters/Pattern.js +302 -0
  231. package/output/core/dispatch.d.ts +34 -0
  232. package/output/core/dispatch.js +304 -0
  233. package/output/core/errors.d.ts +531 -0
  234. package/output/core/errors.js +621 -0
  235. package/output/core/functions/bigint/bigint.d.ts +121 -0
  236. package/output/core/functions/bigint/bigint.js +392 -0
  237. package/output/core/functions/bigint/primeFactor.d.ts +49 -0
  238. package/output/core/functions/bigint/primeFactor.js +267 -0
  239. package/output/core/functions/bigint/primes.d.ts +1 -0
  240. package/output/core/functions/bigint/primes.js +11 -0
  241. package/output/core/functions/build/definitions.d.ts +12 -0
  242. package/output/core/functions/build/definitions.js +133 -0
  243. package/output/core/functions/build/index.d.ts +32 -0
  244. package/output/core/functions/build/index.js +136 -0
  245. package/output/core/functions/complex.d.ts +90 -0
  246. package/output/core/functions/complex.js +482 -0
  247. package/output/core/functions/decimal.d.ts +24 -0
  248. package/output/core/functions/decimal.js +664 -0
  249. package/output/core/functions/expand/expand.d.ts +42 -0
  250. package/output/core/functions/expand/expand.js +376 -0
  251. package/output/core/functions/fresnelNumeric.d.ts +12 -0
  252. package/output/core/functions/fresnelNumeric.js +123 -0
  253. package/output/core/functions/numeric.d.ts +140 -0
  254. package/output/core/functions/numeric.js +790 -0
  255. package/output/core/functions/rationalNormalization.d.ts +11 -0
  256. package/output/core/functions/rationalNormalization.js +117 -0
  257. package/output/core/functions/setFunction.d.ts +19 -0
  258. package/output/core/functions/setFunction.js +75 -0
  259. package/output/core/functions/string.d.ts +26 -0
  260. package/output/core/functions/string.js +101 -0
  261. package/output/core/functions/subst.d.ts +90 -0
  262. package/output/core/functions/subst.js +498 -0
  263. package/output/core/functions/utils.d.ts +24 -0
  264. package/output/core/functions/utils.js +51 -0
  265. package/output/core/types.d.ts +48 -0
  266. package/output/core/types.js +2 -0
  267. package/output/index.d.ts +339 -0
  268. package/output/index.js +715 -0
  269. package/output/math/defint/defintDecimal.d.ts +37 -0
  270. package/output/math/defint/defintDecimal.js +320 -0
  271. package/output/math/defint/defintNative.d.ts +57 -0
  272. package/output/math/defint/defintNative.js +292 -0
  273. package/output/math/geometry.d.ts +8 -0
  274. package/output/math/geometry.js +32 -0
  275. package/output/math/math.d.ts +655 -0
  276. package/output/math/math.js +1811 -0
  277. package/output/math/trig.d.ts +518 -0
  278. package/output/math/trig.js +1444 -0
  279. package/output/math/trunc.d.ts +19 -0
  280. package/output/math/trunc.js +36 -0
  281. package/output/math/utils.d.ts +60 -0
  282. package/output/math/utils.js +180 -0
  283. package/output/solve/classes/DecimalMatrix.d.ts +17 -0
  284. package/output/solve/classes/DecimalMatrix.js +86 -0
  285. package/output/solve/classes/FunctionSolver.d.ts +135 -0
  286. package/output/solve/classes/FunctionSolver.js +433 -0
  287. package/output/solve/classes/MultivariateSolver.d.ts +84 -0
  288. package/output/solve/classes/MultivariateSolver.js +240 -0
  289. package/output/solve/classes/PolynomialSolver.d.ts +85 -0
  290. package/output/solve/classes/PolynomialSolver.js +292 -0
  291. package/output/solve/classes/SolutionSet.d.ts +153 -0
  292. package/output/solve/classes/SolutionSet.js +357 -0
  293. package/output/solve/classes/Solver.d.ts +17 -0
  294. package/output/solve/classes/Solver.js +132 -0
  295. package/output/solve/classes/SymbolicSolver.d.ts +74 -0
  296. package/output/solve/classes/SymbolicSolver.js +601 -0
  297. package/output/solve/linsolve.d.ts +51 -0
  298. package/output/solve/linsolve.js +225 -0
  299. package/output/solve/solve.d.ts +34 -0
  300. package/output/solve/solve.js +260 -0
  301. package/output/solve/solveSystem.d.ts +31 -0
  302. package/output/solve/solveSystem.js +290 -0
  303. package/output/solve/utils.d.ts +9 -0
  304. package/output/solve/utils.js +62 -0
  305. package/output/utils/array.d.ts +42 -0
  306. package/output/utils/array.js +98 -0
  307. package/output/utils/debug.d.ts +131 -0
  308. package/output/utils/debug.js +295 -0
  309. package/output/utils/decimal.d.ts +3 -0
  310. package/output/utils/decimal.js +16 -0
  311. package/output/utils/numeric.d.ts +14 -0
  312. package/output/utils/numeric.js +51 -0
  313. package/output/utils/object.d.ts +26 -0
  314. package/output/utils/object.js +56 -0
  315. package/package.json +213 -57
  316. package/.travis.yml +0 -3
  317. package/Algebra.js +0 -4568
  318. package/BREAKING_CHANGES.md +0 -5
  319. package/CODE_OF_CONDUCT.md +0 -46
  320. package/CONTRIBUTING.md +0 -14
  321. package/Calculus.js +0 -2675
  322. package/Extra.js +0 -622
  323. package/Solve.js +0 -1783
  324. package/all.js +0 -16
  325. package/all.min.js +0 -1
  326. package/gulpfile.js +0 -16
  327. package/index.html +0 -158
  328. package/license.txt +0 -19
  329. package/nerdamer.core.js +0 -12510
  330. package/spec/LaTeX.spec.js +0 -302
  331. package/spec/TeXConvert.spec.js +0 -8
  332. package/spec/algebra.spec.js +0 -287
  333. package/spec/basic_parser.spec.js +0 -134
  334. package/spec/build.spec.js +0 -131
  335. package/spec/calculus.spec.js +0 -183
  336. package/spec/core.spec.js +0 -2970
  337. package/spec/extra.spec.js +0 -54
  338. package/spec/solve.spec.js +0 -126
  339. package/spec/support/jasmine.json +0 -11
  340. package/spec/support/utils.js +0 -42
  341. package/spec/text.spec.js +0 -132
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ASSERTIVE_FUNCTIONS = exports.operators = exports.brackets = void 0;
4
+ exports.isNerdamerNativeType = isNerdamerNativeType;
5
+ /**
6
+ * Checks Nerdamer's runtime data-type discriminator without importing a concrete class.
7
+ *
8
+ * Class-specific guards such as `Matrix.isMatrix` should remain the normal call site when
9
+ * that class can be imported safely. This lower-level check backs those guards and provides
10
+ * the same discriminator in code where a concrete import would introduce a cycle.
11
+ */
12
+ function isNerdamerNativeType(obj, dataType) {
13
+ let retval = false;
14
+ if (typeof obj === 'object' && obj !== null && 'dataType' in obj) {
15
+ retval = obj.dataType === dataType;
16
+ }
17
+ return retval;
18
+ }
19
+ exports.brackets = {
20
+ '(': {
21
+ type: 'parenthesis',
22
+ id: 1,
23
+ isOpen: true,
24
+ isClose: false,
25
+ matches: ')',
26
+ },
27
+ ')': {
28
+ type: 'parenthesis',
29
+ id: 2,
30
+ isOpen: false,
31
+ isClose: true,
32
+ matches: '(',
33
+ },
34
+ '[': {
35
+ type: 'square',
36
+ id: 3,
37
+ isOpen: true,
38
+ isClose: false,
39
+ matches: ']',
40
+ },
41
+ ']': {
42
+ type: 'square',
43
+ id: 4,
44
+ isOpen: false,
45
+ isClose: true,
46
+ matches: '[',
47
+ },
48
+ '{': {
49
+ type: 'curly',
50
+ id: 5,
51
+ isOpen: true,
52
+ isClose: false,
53
+ matches: '}',
54
+ },
55
+ '}': {
56
+ type: 'curly',
57
+ id: 6,
58
+ isOpen: false,
59
+ isClose: true,
60
+ matches: '{',
61
+ },
62
+ '|': {
63
+ type: 'pipe',
64
+ id: 7,
65
+ isOpen: true,
66
+ isClose: true,
67
+ matches: '|',
68
+ },
69
+ };
70
+ exports.operators = {
71
+ '.': {
72
+ precedence: 9,
73
+ operator: '.',
74
+ action: 'dot',
75
+ isPrefix: false,
76
+ isPostfix: false,
77
+ leftAssoc: false,
78
+ iterates: false,
79
+ },
80
+ '!!': {
81
+ precedence: 7,
82
+ operator: '!!',
83
+ action: 'doubleFactorial',
84
+ isPrefix: false,
85
+ isPostfix: true,
86
+ leftAssoc: false,
87
+ iterates: true,
88
+ },
89
+ '!': {
90
+ precedence: 7,
91
+ operator: '!',
92
+ action: 'factorial',
93
+ isPrefix: false,
94
+ isPostfix: true,
95
+ leftAssoc: false,
96
+ iterates: true,
97
+ },
98
+ '^': {
99
+ precedence: 6,
100
+ operator: '^',
101
+ action: 'pow',
102
+ isPrefix: false,
103
+ isPostfix: false,
104
+ leftAssoc: false,
105
+ iterates: true,
106
+ },
107
+ '**': {
108
+ precedence: 6,
109
+ operator: '**',
110
+ action: 'pow',
111
+ isPrefix: false,
112
+ isPostfix: false,
113
+ leftAssoc: false,
114
+ iterates: true,
115
+ },
116
+ '%': {
117
+ precedence: 4,
118
+ operator: '%',
119
+ action: 'mod',
120
+ isPrefix: false,
121
+ isPostfix: false,
122
+ leftAssoc: true,
123
+ iterates: true,
124
+ postfixVariant: {
125
+ precedence: 7,
126
+ operator: '%',
127
+ action: 'percent',
128
+ isPrefix: false,
129
+ isPostfix: true,
130
+ leftAssoc: false,
131
+ iterates: true,
132
+ },
133
+ },
134
+ '*': {
135
+ precedence: 4,
136
+ operator: '*',
137
+ action: 'times',
138
+ isPrefix: false,
139
+ isPostfix: false,
140
+ leftAssoc: true,
141
+ iterates: true,
142
+ },
143
+ '/': {
144
+ precedence: 4,
145
+ operator: '/',
146
+ action: 'div',
147
+ isPrefix: false,
148
+ isPostfix: false,
149
+ leftAssoc: true,
150
+ iterates: true,
151
+ },
152
+ '+': {
153
+ precedence: 3,
154
+ operator: '+',
155
+ action: 'plus',
156
+ isPrefix: true,
157
+ isPostfix: false,
158
+ leftAssoc: true,
159
+ iterates: true,
160
+ },
161
+ '-': {
162
+ precedence: 3,
163
+ operator: '-',
164
+ action: 'minus',
165
+ isPrefix: true,
166
+ isPostfix: false,
167
+ leftAssoc: true,
168
+ iterates: true,
169
+ },
170
+ '=': {
171
+ precedence: 2,
172
+ operator: '=',
173
+ action: 'setEqual',
174
+ assertiveAction: 'assertEQ',
175
+ isPrefix: false,
176
+ isPostfix: false,
177
+ leftAssoc: true,
178
+ iterates: false,
179
+ },
180
+ '==': {
181
+ precedence: 1,
182
+ operator: '==',
183
+ action: 'eq',
184
+ assertiveAction: 'assertEQ',
185
+ isPrefix: false,
186
+ isPostfix: false,
187
+ leftAssoc: true,
188
+ iterates: false,
189
+ },
190
+ '<': {
191
+ precedence: 1,
192
+ operator: '<',
193
+ action: 'lt',
194
+ assertiveAction: 'assertLT',
195
+ isPrefix: false,
196
+ isPostfix: false,
197
+ leftAssoc: true,
198
+ iterates: false,
199
+ },
200
+ '<=': {
201
+ precedence: 1,
202
+ operator: '<=',
203
+ action: 'lte',
204
+ assertiveAction: 'assertLTE',
205
+ isPrefix: false,
206
+ isPostfix: false,
207
+ leftAssoc: true,
208
+ iterates: false,
209
+ },
210
+ '>': {
211
+ precedence: 1,
212
+ operator: '>',
213
+ action: 'gt',
214
+ assertiveAction: 'assertGT',
215
+ isPrefix: false,
216
+ isPostfix: false,
217
+ leftAssoc: true,
218
+ iterates: false,
219
+ },
220
+ '>=': {
221
+ precedence: 1,
222
+ operator: '>=',
223
+ action: 'gte',
224
+ assertiveAction: 'assertGTE',
225
+ isPrefix: false,
226
+ isPostfix: false,
227
+ leftAssoc: true,
228
+ iterates: false,
229
+ },
230
+ '=>': {
231
+ precedence: 0,
232
+ operator: '=>',
233
+ action: 'mapTo',
234
+ isPrefix: false,
235
+ isPostfix: false,
236
+ leftAssoc: true,
237
+ iterates: false,
238
+ },
239
+ ',': {
240
+ precedence: 0,
241
+ operator: ',',
242
+ action: 'comma',
243
+ isPrefix: false,
244
+ isPostfix: false,
245
+ leftAssoc: true,
246
+ iterates: false,
247
+ },
248
+ ':': {
249
+ precedence: 0,
250
+ operator: ':',
251
+ action: 'assign',
252
+ isPrefix: false,
253
+ isPostfix: false,
254
+ leftAssoc: true,
255
+ iterates: false,
256
+ deferLHSResolution: true,
257
+ },
258
+ ':=': {
259
+ precedence: 0,
260
+ operator: ':=',
261
+ action: 'functionAssign',
262
+ isPrefix: false,
263
+ isPostfix: false,
264
+ leftAssoc: false,
265
+ iterates: false,
266
+ deferLHSResolution: true,
267
+ deferRHSResolution: true,
268
+ },
269
+ in: {
270
+ precedence: 0,
271
+ operator: 'in',
272
+ action: 'in',
273
+ isPrefix: false,
274
+ isPostfix: false,
275
+ leftAssoc: true,
276
+ iterates: false,
277
+ },
278
+ };
279
+ exports.ASSERTIVE_FUNCTIONS = ['assume'];
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Reads the array of operators and breaks it up into individual symbols
3
+ *
4
+ * @returns An array with operator symbol
5
+ */
6
+ export declare function getOperatorSymbolArray(): string[];
7
+ /**
8
+ * Links operator actions to operator objects
9
+ *
10
+ * @returns The operators object
11
+ */
12
+ export declare function getOperators(): Record<string, import("../common").Operator & {
13
+ action: import("../common").OperatorAction;
14
+ }>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOperatorSymbolArray = getOperatorSymbolArray;
4
+ exports.getOperators = getOperators;
5
+ const common_1 = require("../common");
6
+ /**
7
+ * Reads the array of operators and breaks it up into individual symbols
8
+ *
9
+ * @returns An array with operator symbol
10
+ */
11
+ function getOperatorSymbolArray() {
12
+ // make them one long string and then filter out duplicates
13
+ const symbolSet = new Set(Object.keys(common_1.operators).join('').split(''));
14
+ //filter out letters used in keyword operators
15
+ const symbolArray = [...symbolSet].filter(x => {
16
+ return !/[a-z]/i.test(x);
17
+ });
18
+ return symbolArray;
19
+ }
20
+ /**
21
+ * Links operator actions to operator objects
22
+ *
23
+ * @returns The operators object
24
+ */
25
+ function getOperators() {
26
+ // for (const operator in operators) {
27
+ // // Get the object
28
+ // let operatorObject: Operator = operators[operator];
29
+ // // Link the operation function to the operator object or overwrite it
30
+ // operatorObject.operation = _[operatorObject.action]
31
+ // }
32
+ return common_1.operators;
33
+ }
@@ -0,0 +1,27 @@
1
+ import { Expression } from '../../classes/expression/Expression';
2
+ import type { SolutionSet } from '../../../solve/classes/SolutionSet';
3
+ import type { Collection } from '../../classes/collection/Collection';
4
+ import type { Dictionary } from '../../classes/dictionary/Dictionary';
5
+ import type { Matrix } from '../../classes/matrix/Matrix';
6
+ import type { ValuesSet } from '../../classes/valuesSet/ValuesSet';
7
+ import type { Vector } from '../../classes/vector/Vector';
8
+ import type { NerdamerInput, ParserEntity, ExpressionInput } from '../../types';
9
+ /**
10
+ * Checks to see if an obj is a set of values
11
+ *
12
+ * @param obj
13
+ * @returns
14
+ */
15
+ export declare function isEnumerable(obj: unknown): obj is Vector | Collection | Matrix | ValuesSet | SolutionSet | Dictionary;
16
+ /**
17
+ * Converts string and numbers to a parser supported type.
18
+ * @param elements
19
+ * @returns
20
+ */
21
+ export declare function toParserEntities(elements: NerdamerInput[]): ParserEntity[];
22
+ /**
23
+ * Converts all inputs to Expression
24
+ * @param inputs
25
+ * @returns
26
+ */
27
+ export declare function toExpressions(inputs: ExpressionInput[]): Expression[];
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEnumerable = isEnumerable;
4
+ exports.toParserEntities = toParserEntities;
5
+ exports.toExpressions = toExpressions;
6
+ const Expression_1 = require("../../classes/expression/Expression");
7
+ /**
8
+ * Checks to see if an obj is a set of values
9
+ *
10
+ * @param obj
11
+ * @returns
12
+ */
13
+ function isEnumerable(obj) {
14
+ if (obj === undefined) {
15
+ return false;
16
+ }
17
+ return !!obj
18
+ .isEnumerable;
19
+ }
20
+ /**
21
+ * Converts string and numbers to a parser supported type.
22
+ * @param elements
23
+ * @returns
24
+ */
25
+ function toParserEntities(elements) {
26
+ const retval = [];
27
+ for (let i = 0; i < elements.length; i++) {
28
+ const element = elements[i];
29
+ retval.push(isEnumerable(element) ? element : Expression_1.Expression.create(element));
30
+ }
31
+ return retval;
32
+ }
33
+ /**
34
+ * Converts all inputs to Expression
35
+ * @param inputs
36
+ * @returns
37
+ */
38
+ function toExpressions(inputs) {
39
+ return inputs.map(e => Expression_1.Expression.create(e));
40
+ }
@@ -0,0 +1,97 @@
1
+ import { Expression } from '../classes/expression/Expression';
2
+ import type { FracArray } from '../classes/parser/types';
3
+ import type { OptionsObject } from '../classes/parser/types';
4
+ import type { Rational } from '../classes/rational/Rational';
5
+ import type { ParserEntity } from '../types';
6
+ type BracketType = 'parens' | 'square' | 'brace' | 'abs';
7
+ /**
8
+ * Shared formatting pipeline for Nerdamer converters.
9
+ *
10
+ * @remarks
11
+ * This is an implementation base class. Public callers should construct `Converter`
12
+ * through `nerdamer.classes.Converter`; subclasses provide the
13
+ * expression-specific formatting hooks used by {@link BaseConverter.convert}.
14
+ *
15
+ * Conversion separates every expression into multiplier, value, and power fragments,
16
+ * each with numerator and denominator slots. Keeping those fragments separate lets the
17
+ * final formatting step place negative powers and rational multipliers into one
18
+ * denominator without algebraically rewriting the caller's symbolic value.
19
+ */
20
+ export declare class BaseConverter {
21
+ protected static readonly GREEK_LETTERS: string[];
22
+ static readonly modes: {
23
+ TeX: string;
24
+ TEXT: string;
25
+ };
26
+ protected greek: string[];
27
+ private readonly modes;
28
+ protected mode: string;
29
+ static convertNtRoot(input: Expression, root: Expression): Expression;
30
+ static convertSQRT(input: Expression): Expression;
31
+ private static join;
32
+ private static merge;
33
+ private static strip;
34
+ protected cleanup(): void;
35
+ protected convertPower(input: Expression, power: Expression, options: OptionsObject): string;
36
+ protected finalizePowerAndInput(power: Expression, input: Expression, _options?: OptionsObject): [Expression, Expression];
37
+ protected formatPowerOutput(pArray: FracArray, requiresBrackets: boolean): FracArray;
38
+ protected formatSubscripts(value: string): string;
39
+ protected getMultiplicationSymbol(): string;
40
+ protected inBraces(value: string): string;
41
+ protected inBrackets(value: string, type?: BracketType): string;
42
+ protected initInput(input: Expression): Expression;
43
+ protected isBracketed(v: string): boolean;
44
+ protected requiresMultiplicationSymbol(input: Expression): boolean;
45
+ protected set(m: FracArray, v: FracArray, p: FracArray, input: Expression): string;
46
+ protected setMultiplier(m: Rational, multiplierArray: FracArray, _input: Expression, options?: OptionsObject): void;
47
+ protected toFraction(n: string, d: string): string;
48
+ protected value(_input: Expression, _isInverted: boolean, _isNegative: boolean, _options?: OptionsObject): FracArray;
49
+ private convertCollection;
50
+ private convertDictionary;
51
+ private convertEquation;
52
+ private convertExpression;
53
+ private convertMatrix;
54
+ private convertValuesSet;
55
+ /**
56
+ * Removes a single outer \left(...\right) wrapper when the contents
57
+ * will already be visually grouped (e.g. inside \frac{}{}).
58
+ */
59
+ private stripOuterBrackets;
60
+ /**
61
+ * Formats a supported Nerdamer value in the converter's current mode.
62
+ *
63
+ * @remarks
64
+ * String input is parsed before formatting, so current parser settings, constants,
65
+ * and known values apply. Numbers are converted with JavaScript's string conversion.
66
+ * Expressions, equations, collections, vectors, matrices, solution sets, value sets,
67
+ * and dictionaries use their structured representations rather than being reparsed
68
+ * from display text.
69
+ * Reading an expression can initialize its lazily stored multiplier or power fields,
70
+ * but conversion does not change the expression's mathematical value.
71
+ *
72
+ * `convertRoots` defaults to `true`, rendering reciprocal integer powers as roots
73
+ * where the active mode supports that form. `decimal` requests decimal rational
74
+ * multipliers, `precision` is forwarded to rational formatting, `matrixStyle`
75
+ * selects the TeX matrix environment prefix, and `ignoreMultiplier` omits an
76
+ * expression's top-level multiplier. `insideMatrix` is used while formatting matrix
77
+ * elements and is normally managed by the converter itself.
78
+ *
79
+ * @param input - The parser entity, expression string, or number to format.
80
+ * @param options - Formatting options for this conversion and recursive child conversions.
81
+ * @returns The formatted text or TeX string for `input`.
82
+ * @throws Error When `input` is not one of the supported parser entity types.
83
+ */
84
+ convert(input: ParserEntity | string | number, options?: OptionsObject): string;
85
+ /**
86
+ * Selects the output syntax used by subsequent conversions.
87
+ *
88
+ * @remarks
89
+ * The mode is mutable converter state. Supported values are `"TeX"` and `"text"`;
90
+ * changing the mode does not alter parser settings or previously returned strings.
91
+ *
92
+ * @param mode - The output mode to activate.
93
+ * @throws Error When `mode` is not `"TeX"` or `"text"`.
94
+ */
95
+ setMode(mode: string): void;
96
+ }
97
+ export {};