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,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.laplace = laplace;
4
+ const Expression_1 = require("../../core/classes/expression/Expression");
5
+ const products_1 = require("../../core/classes/expression/products");
6
+ const shortcuts_1 = require("../../core/classes/expression/shortcuts");
7
+ const utils_1 = require("../../core/classes/expression/utils");
8
+ const constants_1 = require("../../core/classes/parser/constants");
9
+ const Pattern_1 = require("../../core/converters/Pattern");
10
+ const laplaceTable_1 = require("./laplaceTable");
11
+ /**
12
+ * Computes a symbolic Laplace transform from a time variable to a transform variable.
13
+ *
14
+ * The expression is expanded, linear sums are transformed term by term,
15
+ * constants independent of the time variable are extracted, and the remaining
16
+ * expression is matched against the transform table.
17
+ *
18
+ * @param expr - Time-domain expression.
19
+ * @param t - Plain time-domain variable.
20
+ * @param s - Plain transform-domain variable.
21
+ * @returns The symbolic transform, or an unevaluated `laplace(expr, t, s)`
22
+ * Expression when no table rule resolves the input.
23
+ * @throws {@link core!UnexpectedInputError} If `t` or `s` is not a plain variable.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * laplace('sin(t)', 't', 's').text();
28
+ * ```
29
+ */
30
+ function laplace(expr, t, s) {
31
+ expr = Expression_1.Expression.create(expr).expand();
32
+ s = (0, utils_1.assertPlainVariableAndGetString)(Expression_1.Expression.create(s));
33
+ t = (0, utils_1.assertPlainVariableAndGetString)(Expression_1.Expression.create(t));
34
+ let retval;
35
+ // Linearity over sums
36
+ if (expr.isSum() && expr.isLinear()) {
37
+ const elements = expr.elementsArray();
38
+ retval = (0, shortcuts_1.zero)();
39
+ for (const e of elements) {
40
+ const transform = laplace(e, t, s);
41
+ // Any unevaluated laplace(...) means this branch failed
42
+ if (transform.isFunction(constants_1.LAPLACE)) {
43
+ retval = undefined;
44
+ break;
45
+ }
46
+ retval = retval.plus(transform);
47
+ }
48
+ if (retval) {
49
+ return retval;
50
+ }
51
+ }
52
+ // Pull out constants from products
53
+ if (expr.isProduct()) {
54
+ // let constants: Expression;
55
+ // let expression: Expression;
56
+ const { constants, expression } = (0, products_1.constantsFreeProduct)(expr, t);
57
+ // Only worthwhile if something was actually extracted
58
+ if (!constants.isOne()) {
59
+ const transform = laplace(expression, t, s);
60
+ if (!transform.isFunction(constants_1.LAPLACE)) {
61
+ return constants.times(transform);
62
+ }
63
+ }
64
+ }
65
+ // Pattern writes a negative exponential power as a reciprocal, while the transform table
66
+ // stores exponential factors with their signed rate in the exponent. Apply the frequency
67
+ // shift directly so the remainder can use the existing table instead of duplicating rules.
68
+ const factors = expr.isProduct() ? expr.elementsArray() : [expr];
69
+ for (let i = 0; i < factors.length; i++) {
70
+ const factor = factors[i];
71
+ if (!factor.isEXP()) {
72
+ continue;
73
+ }
74
+ const base = factor.getBase();
75
+ const exponent = factor.getPower();
76
+ if (base.hasVariable(t) || !exponent.isPolynomialLike()) {
77
+ continue;
78
+ }
79
+ const coefficients = exponent.coeffs(t).toArray();
80
+ if (coefficients.length !== 2 || !coefficients[0].isZero()) {
81
+ continue;
82
+ }
83
+ const rate = coefficients[1];
84
+ if (rate.sign() !== -1) {
85
+ continue;
86
+ }
87
+ let remainder = (0, shortcuts_1.one)();
88
+ for (let j = 0; j < factors.length; j++) {
89
+ if (j !== i) {
90
+ remainder = remainder.times(factors[j]);
91
+ }
92
+ }
93
+ const transform = laplace(remainder, t, s);
94
+ if (!transform.isFunction(constants_1.LAPLACE)) {
95
+ const baseLog = base.isE() ? (0, shortcuts_1.one)() : Expression_1.Expression.toFunction(constants_1.LOG, [base]);
96
+ const shiftedVariable = Expression_1.Expression.Variable(s).minus(rate.copy().times(baseLog));
97
+ return transform.subst(s, shiftedVariable);
98
+ }
99
+ }
100
+ // Base/derived table lookup
101
+ retval = laplaceTable_1.tableOfTransforms.lookup(new Pattern_1.Pattern(expr, [t]), 0);
102
+ if (retval) {
103
+ if (s !== 's') {
104
+ retval = retval.evaluate({ s });
105
+ }
106
+ return retval;
107
+ }
108
+ return Expression_1.Expression.toFunction(constants_1.LAPLACE, [expr, t, s]);
109
+ }
@@ -0,0 +1,2 @@
1
+ import { LookupTable } from '../../core/classes/lookupTable/LookupTable';
2
+ export declare const tableOfTransforms: LookupTable;
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tableOfTransforms = void 0;
4
+ const LookupTable_1 = require("../../core/classes/lookupTable/LookupTable");
5
+ const diff_1 = require("../derivative/diff");
6
+ const laplaceTable = {
7
+ // L{a1}
8
+ a1: (p, _depth) => {
9
+ return p.fromPattern('a1/s');
10
+ },
11
+ // L{a1*t^n1}
12
+ 'a1*x1^n1': p => {
13
+ const { n1 } = p.references;
14
+ // Reject Gamma poles: n1 = -1, -2, -3, ...
15
+ if (n1.isNegative() && n1.plus(1).isInteger()) {
16
+ return undefined;
17
+ }
18
+ return p.fromPattern('a1*gamma(n1+1)/s^(n1+1)');
19
+ },
20
+ // L{a1*(a2)^(a3*x1)}
21
+ 'a1*(a2)^(a3*x1^n1)': p => {
22
+ if (!p.get('n1').isOne()) {
23
+ return undefined;
24
+ }
25
+ // a^(b t) = e^(log(a) b t)
26
+ return p.fromPattern('a1/(s-log(a2)*a3)');
27
+ },
28
+ // L{a1*sin(a2*x1)}
29
+ 'a1*sin(a2*x1^n1)^n2': p => {
30
+ if (!p.get('n1').isOne() || !p.get('n2').isOne()) {
31
+ return undefined;
32
+ }
33
+ return p.fromPattern('(a1*a2)/(s^2+a2^2)');
34
+ },
35
+ // L{a1*cos(a2*x1)}
36
+ 'a1*cos(a2*x1^n1)^n2': p => {
37
+ if (!p.get('n1').isOne() || !p.get('n2').isOne()) {
38
+ return undefined;
39
+ }
40
+ return p.fromPattern('(a1*s)/(s^2+a2^2)');
41
+ },
42
+ 'a1*(a2)^(a3*x1^n1)*x1^n2': p => {
43
+ const { n1, n2 } = p.references;
44
+ if (!n1.isOne()) {
45
+ return undefined;
46
+ }
47
+ // Reject the pole at Gamma(0), Gamma(-1), ...
48
+ if (n2.isNegative() && n2.plus(1).isInteger()) {
49
+ return undefined;
50
+ }
51
+ return p.fromPattern('a1*gamma(n2+1)/(s-log(a2)*a3)^(n2+1)');
52
+ },
53
+ 'a1*x1^n1*sin(a2*x1^n2)^n3': p => {
54
+ const { _a1, n1, n2, n3, _a2 } = p.references;
55
+ if (!n2.isOne() || !n3.isOne()) {
56
+ return undefined;
57
+ }
58
+ if (!n1.isInteger() || n1.isNegative()) {
59
+ return undefined;
60
+ }
61
+ const n = Number(n1.getMultiplier().numerator);
62
+ let result = p.fromPattern('(a1*a2)/(s^2+a2^2)');
63
+ for (let i = 0; i < n; i++) {
64
+ result = (0, diff_1.diff)(result, 's').neg();
65
+ }
66
+ return result;
67
+ },
68
+ 'a1*x1^n1*cos(a2*x1^n2)^n3': p => {
69
+ const { _a1, n1, n2, n3, _a2 } = p.references;
70
+ if (!n2.isOne() || !n3.isOne()) {
71
+ return undefined;
72
+ }
73
+ if (!n1.isInteger() || n1.isNegative()) {
74
+ return undefined;
75
+ }
76
+ const n = Number(n1.getMultiplier().numerator);
77
+ let result = p.fromPattern('(a1*s)/(s^2+a2^2)');
78
+ for (let i = 0; i < n; i++) {
79
+ result = (0, diff_1.diff)(result, 's').neg();
80
+ }
81
+ return result;
82
+ },
83
+ 'a1*(a2)^(a3*x1^n1)*sin(a4*x1^n2)^n3': p => {
84
+ const { n1, n2, n3 } = p.references;
85
+ if (!n1.isOne() || !n2.isOne() || !n3.isOne()) {
86
+ return undefined;
87
+ }
88
+ return p.fromPattern('(a1*a4)/((s-log(a2)*a3)^2+a4^2)');
89
+ },
90
+ 'a1*(a2)^(a3*x1^n1)*cos(a4*x1^n2)^n3': p => {
91
+ const { n1, n2, n3 } = p.references;
92
+ if (!n1.isOne() || !n2.isOne() || !n3.isOne()) {
93
+ return undefined;
94
+ }
95
+ return p.fromPattern('a1*(s-log(a2)*a3)/((s-log(a2)*a3)^2+a4^2)');
96
+ },
97
+ 'a1*cos(a2*x1^n1)^n2*sin(a3*x1^n3)^n4': p => {
98
+ const { _a1, a2, a3, n1, n2, n3, n4 } = p.references;
99
+ if (!n1.isOne() || !n2.isOne() || !n3.isOne() || !n4.isOne()) {
100
+ return undefined;
101
+ }
102
+ if (!a2.eq(a3)) {
103
+ return undefined;
104
+ }
105
+ return p.fromPattern('(a1*a2)/(s^2+4*a2^2)');
106
+ },
107
+ 'a1*(a2)^(a3*x1^n1)*x1^n2*sin(a4*x1^n3)^n4': p => {
108
+ const { n1, n2, n3, n4 } = p.references;
109
+ if (!n1.isOne() || !n2.isOne() || !n3.isOne() || !n4.isOne()) {
110
+ return undefined;
111
+ }
112
+ return p.fromPattern('(2*a1*a4*(s-a3*log(a2)))/((a4^2+(s-a3*log(a2))^2)^2)');
113
+ },
114
+ 'a1*(a2)^(a3*x1^n1)*x1^n2*cos(a4*x1^n3)^n4': p => {
115
+ const { n1, n2, n3, n4 } = p.references;
116
+ if (!n1.isOne() || !n2.isOne() || !n3.isOne() || !n4.isOne()) {
117
+ return undefined;
118
+ }
119
+ return p.fromPattern('(a1*((s-a3*log(a2))^2-a4^2))/((a4^2+(s-a3*log(a2))^2)^2)');
120
+ },
121
+ 'a1*(a2)^(a3*x1^n1)*(a4*sin(a5*x1^n2)^n3-a6*x1^n4*cos(a7*x1^n5)^n6)^n7': p => {
122
+ const { n1, n2, n3, n4, n5, n6, n7, a5, a7 } = p.references;
123
+ if (!n1.isOne() ||
124
+ !n2.isOne() ||
125
+ !n3.isOne() ||
126
+ !n4.isOne() ||
127
+ !n5.isOne() ||
128
+ !n6.isOne() ||
129
+ !n7.isOne()) {
130
+ return undefined;
131
+ }
132
+ if (!a5.eq(a7)) {
133
+ return undefined;
134
+ }
135
+ return p.fromPattern('(a1*(a4*a5^2-a6*((s-a3*log(a2))^2-a5^2)))/(((s-a3*log(a2))^2+a5^2)^2)');
136
+ },
137
+ 'a1*(a2)^(a3*x1^n1)*(a4*sin(a5*x1^n2)^n3+a6*x1^n4*cos(a7*x1^n5)^n6)^n7': p => {
138
+ const { n1, n2, n3, n4, n5, n6, n7, a5, a7 } = p.references;
139
+ if (!n1.isOne() ||
140
+ !n2.isOne() ||
141
+ !n3.isOne() ||
142
+ !n4.isOne() ||
143
+ !n5.isOne() ||
144
+ !n6.isOne() ||
145
+ !n7.isOne()) {
146
+ return undefined;
147
+ }
148
+ if (!a5.eq(a7)) {
149
+ return undefined;
150
+ }
151
+ return p.fromPattern('(a1*(a4*a5^2+a6*((s-a3*log(a2))^2-a5^2)))/(((s-a3*log(a2))^2+a5^2)^2)');
152
+ },
153
+ // e^(a t) sinh(b t)
154
+ 'a1*(a2)^(a3*x1^n1)*sinh(a4*x1^n2)^n3': p => {
155
+ const { n1, n2, n3 } = p.references;
156
+ if (!n1.isOne() || !n2.isOne() || !n3.isOne()) {
157
+ return undefined;
158
+ }
159
+ return p.fromPattern('(a1*a4)/((s-a3*log(a2))^2-a4^2)');
160
+ },
161
+ // e^(a t) cosh(b t)
162
+ 'a1*(a2)^(a3*x1^n1)*cosh(a4*x1^n2)^n3': p => {
163
+ const { n1, n2, n3 } = p.references;
164
+ if (!n1.isOne() || !n2.isOne() || !n3.isOne()) {
165
+ return undefined;
166
+ }
167
+ return p.fromPattern('(a1*(s-a3*log(a2)))/((s-a3*log(a2))^2-a4^2)');
168
+ },
169
+ // t*e^(a t) sinh(b t)
170
+ 'a1*(a2)^(a3*x1^n1)*x1^n2*sinh(a4*x1^n3)^n4': p => {
171
+ const { n1, n2, n3, n4 } = p.references;
172
+ if (!n1.isOne() || !n2.isOne() || !n3.isOne() || !n4.isOne()) {
173
+ return undefined;
174
+ }
175
+ return p.fromPattern('(2*a1*a4*(s-a3*log(a2)))/(((s-a3*log(a2))^2-a4^2)^2)');
176
+ },
177
+ // t*e^(a t) cosh(b t)
178
+ 'a1*(a2)^(a3*x1^n1)*x1^n2*cosh(a4*x1^n3)^n4': p => {
179
+ const { n1, n2, n3, n4 } = p.references;
180
+ if (!n1.isOne() || !n2.isOne() || !n3.isOne() || !n4.isOne()) {
181
+ return undefined;
182
+ }
183
+ return p.fromPattern('(a1*((s-a3*log(a2))^2+a4^2))/(((s-a3*log(a2))^2-a4^2)^2)');
184
+ },
185
+ };
186
+ exports.tableOfTransforms = new LookupTable_1.LookupTable();
187
+ exports.tableOfTransforms.addEntries(laplaceTable);
@@ -0,0 +1,35 @@
1
+ import { Expression } from '../../core/classes/expression/Expression';
2
+ import type { ExpressionInput } from '../../core/types';
3
+ /** Direction from which the independent variable approaches a finite point. */
4
+ export type LimitDir = 'both' | 'left' | 'right';
5
+ /**
6
+ * Computes a symbolic finite or infinite limit.
7
+ *
8
+ * The implementation combines direct substitution, side-aware pole analysis,
9
+ * simplification, bounded L'Hopital recursion, indeterminate-form rewrites,
10
+ * composition rules, dominant-growth analysis at infinity, and a table of
11
+ * known limits.
12
+ *
13
+ * @remarks
14
+ * `'left'` and `'right'` request one-sided limits; `'both'` is the default
15
+ * two-sided direction. Direction is significant for poles and piecewise
16
+ * functions such as `sign`. When the available strategies cannot establish a
17
+ * result, the function returns an unevaluated `limit(expr, x, val, dir)`
18
+ * Expression. That form can therefore mean unsupported, undefined, or
19
+ * non-existent; it is not a proof that a limit exists.
20
+ *
21
+ * The implementation primarily reasons about real signs and real growth.
22
+ * Oscillatory and branch-sensitive complex cases are intentionally left
23
+ * symbolic unless a specific rule resolves them. Decimal input is preserved in
24
+ * the formatting of a resolved result.
25
+ *
26
+ * `depth` is an internal recursion counter and should normally be omitted.
27
+ *
28
+ * @param expr - Expression whose limit is sought.
29
+ * @param x - Independent variable.
30
+ * @param val - Finite value or positive/negative infinity to approach.
31
+ * @param dir - Two-sided, left-sided, or right-sided approach.
32
+ * @param depth - Internal recursion depth. Defaults to zero.
33
+ * @returns The resolved limit or an unevaluated `limit(...)` Expression.
34
+ */
35
+ export declare function limit(expr: ExpressionInput, x: ExpressionInput, val: ExpressionInput, dir?: LimitDir, depth?: number): Expression;