math-exercises 2.2.67 → 2.2.69

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 (123) hide show
  1. package/lib/exercises/math/calcul/fractions/fractionsOperations.d.ts +8 -0
  2. package/lib/exercises/math/calcul/fractions/fractionsOperations.d.ts.map +1 -0
  3. package/lib/exercises/math/calcul/fractions/fractionsOperations.js +85 -0
  4. package/lib/exercises/math/calcul/fractions/index.d.ts +1 -0
  5. package/lib/exercises/math/calcul/fractions/index.d.ts.map +1 -1
  6. package/lib/exercises/math/calcul/fractions/index.js +1 -0
  7. package/lib/exercises/math/derivation/derivative/rootFunctionDerivative.d.ts.map +1 -1
  8. package/lib/exercises/math/derivation/derivative/rootFunctionDerivative.js +11 -1
  9. package/lib/exercises/math/functions/absolute/absolueValueAffineEquation.d.ts +9 -0
  10. package/lib/exercises/math/functions/absolute/absolueValueAffineEquation.d.ts.map +1 -0
  11. package/lib/exercises/math/functions/absolute/absolueValueAffineEquation.js +178 -0
  12. package/lib/exercises/math/functions/absolute/index.d.ts +1 -0
  13. package/lib/exercises/math/functions/absolute/index.d.ts.map +1 -1
  14. package/lib/exercises/math/functions/absolute/index.js +1 -0
  15. package/lib/exercises/math/functions/affines/leadingCoefficient.d.ts.map +1 -1
  16. package/lib/exercises/math/functions/affines/leadingCoefficient.js +9 -16
  17. package/lib/exercises/math/functions/trinoms/rootsProduct.js +1 -1
  18. package/lib/exercises/math/functions/trinoms/rootsSum.d.ts.map +1 -1
  19. package/lib/exercises/math/functions/trinoms/rootsSum.js +2 -3
  20. package/lib/exercises/math/geometry/cartesian/placeAbscissOnLine.js +1 -1
  21. package/lib/exercises/math/geometry/euclidianConstructions/pointImageFromTranslation.d.ts.map +1 -1
  22. package/lib/exercises/math/geometry/euclidianConstructions/pointImageFromTranslation.js +4 -1
  23. package/lib/index.d.ts +5 -0
  24. package/lib/index.d.ts.map +1 -1
  25. package/lib/math/numbers/nombre.d.ts +5 -0
  26. package/lib/math/numbers/nombre.d.ts.map +1 -1
  27. package/lib/math/numbers/nombre.js +12 -0
  28. package/lib/math/polynomials/generalAffine.d.ts +13 -0
  29. package/lib/math/polynomials/generalAffine.d.ts.map +1 -1
  30. package/lib/math/polynomials/generalAffine.js +25 -1
  31. package/lib/playground.d.ts.map +1 -1
  32. package/lib/playground.js +6 -2
  33. package/lib/tree/nodes/algebraicNode.d.ts +1 -0
  34. package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
  35. package/lib/tree/nodes/functions/absNode.d.ts +2 -0
  36. package/lib/tree/nodes/functions/absNode.d.ts.map +1 -1
  37. package/lib/tree/nodes/functions/absNode.js +13 -1
  38. package/lib/tree/nodes/functions/arcSinNode.d.ts +1 -0
  39. package/lib/tree/nodes/functions/arcSinNode.d.ts.map +1 -1
  40. package/lib/tree/nodes/functions/arcSinNode.js +3 -0
  41. package/lib/tree/nodes/functions/arccosNode.d.ts +1 -0
  42. package/lib/tree/nodes/functions/arccosNode.d.ts.map +1 -1
  43. package/lib/tree/nodes/functions/arccosNode.js +3 -0
  44. package/lib/tree/nodes/functions/arctanNode.d.ts +1 -0
  45. package/lib/tree/nodes/functions/arctanNode.d.ts.map +1 -1
  46. package/lib/tree/nodes/functions/arctanNode.js +3 -0
  47. package/lib/tree/nodes/functions/cosNode.d.ts +2 -0
  48. package/lib/tree/nodes/functions/cosNode.d.ts.map +1 -1
  49. package/lib/tree/nodes/functions/cosNode.js +9 -1
  50. package/lib/tree/nodes/functions/expNode.d.ts +2 -0
  51. package/lib/tree/nodes/functions/expNode.d.ts.map +1 -1
  52. package/lib/tree/nodes/functions/expNode.js +10 -1
  53. package/lib/tree/nodes/functions/log10Node.d.ts +1 -0
  54. package/lib/tree/nodes/functions/log10Node.d.ts.map +1 -1
  55. package/lib/tree/nodes/functions/log10Node.js +3 -0
  56. package/lib/tree/nodes/functions/logNode.d.ts +1 -0
  57. package/lib/tree/nodes/functions/logNode.d.ts.map +1 -1
  58. package/lib/tree/nodes/functions/logNode.js +3 -0
  59. package/lib/tree/nodes/functions/oppositeNode.d.ts +1 -0
  60. package/lib/tree/nodes/functions/oppositeNode.d.ts.map +1 -1
  61. package/lib/tree/nodes/functions/oppositeNode.js +3 -0
  62. package/lib/tree/nodes/functions/sinNode.d.ts +2 -0
  63. package/lib/tree/nodes/functions/sinNode.d.ts.map +1 -1
  64. package/lib/tree/nodes/functions/sinNode.js +11 -1
  65. package/lib/tree/nodes/functions/sqrtNode.d.ts +1 -0
  66. package/lib/tree/nodes/functions/sqrtNode.d.ts.map +1 -1
  67. package/lib/tree/nodes/functions/sqrtNode.js +3 -0
  68. package/lib/tree/nodes/functions/tanNode.d.ts +2 -0
  69. package/lib/tree/nodes/functions/tanNode.d.ts.map +1 -1
  70. package/lib/tree/nodes/functions/tanNode.js +9 -1
  71. package/lib/tree/nodes/geometry/degree.d.ts +1 -0
  72. package/lib/tree/nodes/geometry/degree.d.ts.map +1 -1
  73. package/lib/tree/nodes/geometry/degree.js +3 -0
  74. package/lib/tree/nodes/geometry/lengthNode.d.ts +1 -0
  75. package/lib/tree/nodes/geometry/lengthNode.d.ts.map +1 -1
  76. package/lib/tree/nodes/geometry/lengthNode.js +3 -0
  77. package/lib/tree/nodes/node.d.ts +1 -0
  78. package/lib/tree/nodes/node.d.ts.map +1 -1
  79. package/lib/tree/nodes/nodeConstructor.d.ts +3 -0
  80. package/lib/tree/nodes/nodeConstructor.d.ts.map +1 -1
  81. package/lib/tree/nodes/nodeConstructor.js +5 -1
  82. package/lib/tree/nodes/numbers/constantNode.d.ts +2 -0
  83. package/lib/tree/nodes/numbers/constantNode.d.ts.map +1 -1
  84. package/lib/tree/nodes/numbers/constantNode.js +10 -1
  85. package/lib/tree/nodes/numbers/infiniteNode.d.ts +0 -2
  86. package/lib/tree/nodes/numbers/infiniteNode.d.ts.map +1 -1
  87. package/lib/tree/nodes/numbers/infiniteNode.js +1 -6
  88. package/lib/tree/nodes/numbers/numberNode.d.ts +1 -0
  89. package/lib/tree/nodes/numbers/numberNode.d.ts.map +1 -1
  90. package/lib/tree/nodes/numbers/numberNode.js +3 -0
  91. package/lib/tree/nodes/operators/addNode.d.ts +1 -0
  92. package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
  93. package/lib/tree/nodes/operators/addNode.js +3 -0
  94. package/lib/tree/nodes/operators/binomialCoefficientNode.d.ts +1 -0
  95. package/lib/tree/nodes/operators/binomialCoefficientNode.d.ts.map +1 -1
  96. package/lib/tree/nodes/operators/binomialCoefficientNode.js +3 -0
  97. package/lib/tree/nodes/operators/divideNode.d.ts +4 -1
  98. package/lib/tree/nodes/operators/divideNode.d.ts.map +1 -1
  99. package/lib/tree/nodes/operators/divideNode.js +17 -2
  100. package/lib/tree/nodes/operators/fractionNode.d.ts +1 -0
  101. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  102. package/lib/tree/nodes/operators/fractionNode.js +9 -1
  103. package/lib/tree/nodes/operators/limitNode.d.ts +1 -0
  104. package/lib/tree/nodes/operators/limitNode.d.ts.map +1 -1
  105. package/lib/tree/nodes/operators/limitNode.js +3 -0
  106. package/lib/tree/nodes/operators/multiplyNode.d.ts +1 -0
  107. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  108. package/lib/tree/nodes/operators/multiplyNode.js +10 -2
  109. package/lib/tree/nodes/operators/powerNode.d.ts +1 -0
  110. package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
  111. package/lib/tree/nodes/operators/powerNode.js +6 -0
  112. package/lib/tree/nodes/operators/substractNode.d.ts +4 -2
  113. package/lib/tree/nodes/operators/substractNode.d.ts.map +1 -1
  114. package/lib/tree/nodes/operators/substractNode.js +9 -2
  115. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  116. package/lib/tree/nodes/sets/intervalNode.js +8 -8
  117. package/lib/tree/nodes/variables/variableNode.d.ts +1 -0
  118. package/lib/tree/nodes/variables/variableNode.d.ts.map +1 -1
  119. package/lib/tree/nodes/variables/variableNode.js +7 -0
  120. package/lib/tree/parsers/rationalParser.d.ts +1 -1
  121. package/lib/tree/parsers/rationalParser.d.ts.map +1 -1
  122. package/lib/tree/parsers/rationalParser.js +1 -0
  123. package/package.json +1 -1
@@ -1,10 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GeneralAffine = void 0;
3
+ exports.GeneralAffine = exports.GeneralAffineConstructor = void 0;
4
4
  const oppositeNode_1 = require("../../tree/nodes/functions/oppositeNode");
5
+ const nodeConstructor_1 = require("../../tree/nodes/nodeConstructor");
5
6
  const addNode_1 = require("../../tree/nodes/operators/addNode");
6
7
  const fractionNode_1 = require("../../tree/nodes/operators/fractionNode");
7
8
  const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
9
+ const substractNode_1 = require("../../tree/nodes/operators/substractNode");
10
+ class GeneralAffineConstructor {
11
+ static fromIdentifiers(identifiers) {
12
+ return new GeneralAffine((0, nodeConstructor_1.reifyAlgebraic)(identifiers.a), (0, nodeConstructor_1.reifyAlgebraic)(identifiers.b));
13
+ }
14
+ }
15
+ exports.GeneralAffineConstructor = GeneralAffineConstructor;
8
16
  class GeneralAffine {
9
17
  constructor(a, b, variable = "x") {
10
18
  if (typeof a === "number")
@@ -19,6 +27,14 @@ class GeneralAffine {
19
27
  this.b = b;
20
28
  this.variable = variable;
21
29
  }
30
+ toIdentifiers() {
31
+ return {
32
+ id: "affine",
33
+ a: this.a.toIdentifiers(),
34
+ b: this.b.toIdentifiers(),
35
+ variable: this.variable !== "x" ? this.variable : undefined,
36
+ };
37
+ }
22
38
  getRoot() {
23
39
  return (0, fractionNode_1.frac)((0, oppositeNode_1.opposite)(this.b), this.a).simplify();
24
40
  }
@@ -28,5 +44,13 @@ class GeneralAffine {
28
44
  return monom;
29
45
  return (0, addNode_1.add)(monom, this.b);
30
46
  }
47
+ xIntersect(aff) {
48
+ if (aff.a.evaluate() === this.a.evaluate())
49
+ return undefined;
50
+ return (0, fractionNode_1.frac)((0, substractNode_1.substract)(aff.b, this.b), (0, substractNode_1.substract)(this.a, aff.a)).simplify();
51
+ }
52
+ opposite() {
53
+ return new GeneralAffine((0, oppositeNode_1.opposite)(this.a), (0, oppositeNode_1.opposite)(this.b));
54
+ }
31
55
  }
32
56
  exports.GeneralAffine = GeneralAffine;
@@ -1 +1 @@
1
- {"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../src/playground.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,UAAU,YAEtB,CAAC"}
1
+ {"version":3,"file":"playground.d.ts","sourceRoot":"","sources":["../src/playground.ts"],"names":[],"mappings":"AA8CA,eAAO,MAAM,UAAU,YAMtB,CAAC"}
package/lib/playground.js CHANGED
@@ -2,9 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.playground = void 0;
4
4
  const nodeConstructor_1 = require("./tree/nodes/nodeConstructor");
5
- const affineParser_1 = require("./tree/parsers/affineParser");
5
+ const fractionNode_1 = require("./tree/nodes/operators/fractionNode");
6
+ const oppositeNode_1 = require("./tree/nodes/functions/oppositeNode");
6
7
  const playground = () => {
7
- console.log((0, affineParser_1.affineParser)("8"));
8
+ const fraction = (0, fractionNode_1.frac)((0, oppositeNode_1.opposite)(-6), (0, oppositeNode_1.opposite)(4)).toSimplificationString();
9
+ console.log(fraction);
10
+ console.log((0, fractionNode_1.frac)((0, oppositeNode_1.opposite)(-6), 4).toTex());
11
+ console.log((0, oppositeNode_1.opposite)(-6).toTex());
8
12
  };
9
13
  exports.playground = playground;
10
14
  const logIdentifiers = () => {
@@ -14,6 +14,7 @@ export interface AlgebraicNode extends Node {
14
14
  simplify: (opts?: SimplifyOptions) => AlgebraicNode;
15
15
  equals: (node: AlgebraicNode) => boolean;
16
16
  isNumeric: boolean;
17
+ derivative: (varName?: string) => AlgebraicNode;
17
18
  }
18
19
  export declare const isAlgebraicNode: (node: Node) => node is AlgebraicNode;
19
20
  //# sourceMappingURL=algebraicNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"algebraicNode.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/algebraicNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AACF,MAAM,WAAW,aAAc,SAAQ,IAAI;IACzC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;IACpD,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,aAAa,CAAC;IAC7E,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,aAAa,EAAE,CAAC;IAC3D,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,KAAK,aAAa,CAAC;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,SAAU,IAAI,0BACA,CAAC"}
1
+ {"version":3,"file":"algebraicNode.d.ts","sourceRoot":"","sources":["../../../src/tree/nodes/algebraicNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AACF,MAAM,WAAW,aAAc,SAAQ,IAAI;IACzC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;IACpD,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,aAAa,CAAC;IAC7E,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,aAAa,EAAE,CAAC;IAC3D,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,KAAK,aAAa,CAAC;IACpD,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,aAAa,CAAC;CACjD;AAED,eAAO,MAAM,eAAe,SAAU,IAAI,0BACA,CAAC"}
@@ -2,6 +2,7 @@ import { Node, NodeIds, NodeType } from "../node";
2
2
  import { FunctionNode, FunctionsIds } from "./functionNode";
3
3
  import { AlgebraicNode } from "../algebraicNode";
4
4
  export declare function isAbsNode(a: Node): a is AbsNode;
5
+ export declare const abs: (a: AlgebraicNode | number | string) => AbsNode;
5
6
  export declare class AbsNode implements FunctionNode {
6
7
  id: FunctionsIds;
7
8
  child: AlgebraicNode;
@@ -22,5 +23,6 @@ export declare class AbsNode implements FunctionNode {
22
23
  evaluate(vars?: Record<string, number>): number;
23
24
  equals(node: AlgebraicNode): boolean;
24
25
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): AbsNode;
26
+ derivative(varName?: string | undefined): import("../operators/multiplyNode").MultiplyNode;
25
27
  }
26
28
  //# sourceMappingURL=absNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"absNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/absNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AACD,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAOf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAG1B,QAAQ;IAUR,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,MAAM,CAAC,IAAI,EAAE,aAAa;IAI1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"absNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/absNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AACD,eAAO,MAAM,GAAG,MAAO,aAAa,GAAG,MAAM,GAAG,MAAM,YAIrD,CAAC;AACF,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAOf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAG1B,QAAQ;IAUR,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,MAAM,CAAC,IAAI,EAAE,aAAa;IAI1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAKxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS;CAIxC"}
@@ -1,15 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AbsNode = exports.isAbsNode = void 0;
3
+ exports.AbsNode = exports.abs = exports.isAbsNode = void 0;
4
4
  // import { abs } from "mathjs";
5
5
  const node_1 = require("../node");
6
6
  const functionNode_1 = require("./functionNode");
7
7
  const numberNode_1 = require("../numbers/numberNode");
8
8
  const oppositeNode_1 = require("./oppositeNode");
9
+ const fractionNode_1 = require("../operators/fractionNode");
10
+ const multiplyNode_1 = require("../operators/multiplyNode");
9
11
  function isAbsNode(a) {
10
12
  return (0, functionNode_1.isFunctionNode)(a) && a.id === functionNode_1.FunctionsIds.abs;
11
13
  }
12
14
  exports.isAbsNode = isAbsNode;
15
+ const abs = (a) => {
16
+ const nodeA = typeof a === "number" ? a.toTree() : typeof a === "string" ? a.toTree() : a;
17
+ return new AbsNode(nodeA);
18
+ };
19
+ exports.abs = abs;
13
20
  class AbsNode {
14
21
  constructor(child) {
15
22
  this.id = functionNode_1.FunctionsIds.abs;
@@ -61,5 +68,10 @@ class AbsNode {
61
68
  toDetailedEvaluation(vars) {
62
69
  return new AbsNode(this.child.toDetailedEvaluation(vars));
63
70
  }
71
+ //|u|' = (u/|u|)*u'
72
+ derivative(varName) {
73
+ const variable = varName ?? "x";
74
+ return (0, multiplyNode_1.multiply)((0, fractionNode_1.frac)(this.child, this), this.child.derivative(variable));
75
+ }
64
76
  }
65
77
  exports.AbsNode = AbsNode;
@@ -22,5 +22,6 @@ export declare class ArcsinNode implements FunctionNode {
22
22
  evaluate(vars?: Record<string, number>): number;
23
23
  equals(node: AlgebraicNode): boolean;
24
24
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): ArcsinNode;
25
+ derivative(varName?: string | undefined): AlgebraicNode;
25
26
  }
26
27
  //# sourceMappingURL=arcSinNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arcSinNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/arcSinNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AAED,qBAAa,UAAW,YAAW,YAAY;IAC7C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,IAAI,aAAa;IAiBzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"arcSinNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/arcSinNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AAED,qBAAa,UAAW,YAAW,YAAY;IAC7C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,IAAI,aAAa;IAiBzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAIxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -65,5 +65,8 @@ class ArcsinNode {
65
65
  toDetailedEvaluation(vars) {
66
66
  return new ArcsinNode(this.child.toDetailedEvaluation(vars));
67
67
  }
68
+ derivative(varName) {
69
+ throw new Error("unimplemented derivative");
70
+ }
68
71
  }
69
72
  exports.ArcsinNode = ArcsinNode;
@@ -22,5 +22,6 @@ export declare class ArccosNode implements FunctionNode {
22
22
  evaluate(vars?: Record<string, number>): number;
23
23
  equals(node: AlgebraicNode): boolean;
24
24
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): ArccosNode;
25
+ derivative(varName?: string | undefined): AlgebraicNode;
25
26
  }
26
27
  //# sourceMappingURL=arccosNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arccosNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/arccosNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AAED,qBAAa,UAAW,YAAW,YAAY;IAC7C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,IAAI,aAAa;IAkBzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"arccosNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/arccosNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AAED,qBAAa,UAAW,YAAW,YAAY;IAC7C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,IAAI,aAAa;IAkBzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAIxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -66,5 +66,8 @@ class ArccosNode {
66
66
  toDetailedEvaluation(vars) {
67
67
  return new ArccosNode(this.child.toDetailedEvaluation(vars));
68
68
  }
69
+ derivative(varName) {
70
+ throw new Error("unimplemented derivative");
71
+ }
69
72
  }
70
73
  exports.ArccosNode = ArccosNode;
@@ -22,5 +22,6 @@ export declare class ArctanNode implements FunctionNode {
22
22
  evaluate(vars?: Record<string, number>): number;
23
23
  equals(node: AlgebraicNode): boolean;
24
24
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): ArctanNode;
25
+ derivative(varName?: string | undefined): AlgebraicNode;
25
26
  }
26
27
  //# sourceMappingURL=arctanNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arctanNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/arctanNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AAED,qBAAa,UAAW,YAAW,YAAY;IAC7C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,IAAI,aAAa;IAkBzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"arctanNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/arctanNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AAED,qBAAa,UAAW,YAAW,YAAY;IAC7C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,IAAI,aAAa;IAkBzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -66,5 +66,8 @@ class ArctanNode {
66
66
  toDetailedEvaluation(vars) {
67
67
  return new ArctanNode(this.child.toDetailedEvaluation(vars));
68
68
  }
69
+ derivative(varName) {
70
+ throw new Error("unimplemented derivative");
71
+ }
69
72
  }
70
73
  exports.ArctanNode = ArctanNode;
@@ -2,6 +2,7 @@ import { Node, NodeIds, NodeType } from "../node";
2
2
  import { FunctionNode, FunctionsIds } from "./functionNode";
3
3
  import { AlgebraicNode, SimplifyOptions } from "../algebraicNode";
4
4
  export declare function isCosNode(a: Node): a is CosNode;
5
+ export declare const cos: (a: AlgebraicNode | number | string) => CosNode;
5
6
  export declare class CosNode implements FunctionNode {
6
7
  id: FunctionsIds;
7
8
  child: AlgebraicNode;
@@ -22,5 +23,6 @@ export declare class CosNode implements FunctionNode {
22
23
  evaluate(vars?: Record<string, number>): number;
23
24
  equals(node: AlgebraicNode): boolean;
24
25
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): CosNode;
26
+ derivative(varName?: string | undefined): AlgebraicNode;
25
27
  }
26
28
  //# sourceMappingURL=cosNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cosNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/cosNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIlE,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AAED,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,aAAa;IAsBnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"cosNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/cosNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIlE,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AAED,eAAO,MAAM,GAAG,MAAO,aAAa,GAAG,MAAM,GAAG,MAAM,YAIrD,CAAC;AAEF,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,aAAa;IAsBnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CosNode = exports.isCosNode = void 0;
3
+ exports.CosNode = exports.cos = exports.isCosNode = void 0;
4
4
  const node_1 = require("../node");
5
5
  const functionNode_1 = require("./functionNode");
6
6
  const remarkableValues_1 = require("../../../math/trigonometry/remarkableValues");
@@ -9,6 +9,11 @@ function isCosNode(a) {
9
9
  return (0, functionNode_1.isFunctionNode)(a) && a.id === functionNode_1.FunctionsIds.cos;
10
10
  }
11
11
  exports.isCosNode = isCosNode;
12
+ const cos = (a) => {
13
+ const nodeA = typeof a === "number" ? a.toTree() : typeof a === "string" ? a.toTree() : a;
14
+ return new CosNode(nodeA);
15
+ };
16
+ exports.cos = cos;
12
17
  class CosNode {
13
18
  constructor(child) {
14
19
  this.id = functionNode_1.FunctionsIds.cos;
@@ -70,5 +75,8 @@ class CosNode {
70
75
  toDetailedEvaluation(vars) {
71
76
  return new CosNode(this.child.toDetailedEvaluation(vars));
72
77
  }
78
+ derivative(varName) {
79
+ throw new Error("unimplemented derivative");
80
+ }
73
81
  }
74
82
  exports.CosNode = CosNode;
@@ -1,6 +1,7 @@
1
1
  import { Node, NodeIds, NodeOptions, NodeType } from "../node";
2
2
  import { FunctionNode, FunctionsIds } from "./functionNode";
3
3
  import { AlgebraicNode } from "../algebraicNode";
4
+ export declare const exp: (a: AlgebraicNode | number | string) => ExpNode;
4
5
  export declare function isExpNode(a: Node): a is ExpNode;
5
6
  export declare class ExpNode implements FunctionNode {
6
7
  opts?: NodeOptions;
@@ -23,5 +24,6 @@ export declare class ExpNode implements FunctionNode {
23
24
  evaluate(vars?: Record<string, number>): number;
24
25
  equals(node: AlgebraicNode): boolean;
25
26
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): ExpNode;
27
+ derivative(varName?: string | undefined): import("../operators/multiplyNode").MultiplyNode;
26
28
  }
27
29
  //# sourceMappingURL=expNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/expNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AACD,qBAAa,OAAQ,YAAW,YAAY;IAC1C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAOpD,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAmBf,iBAAiB,IAAI,aAAa,EAAE;IAUpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,IAAI,aAAa;IAOzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"expNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/expNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjD,eAAO,MAAM,GAAG,MAAO,aAAa,GAAG,MAAM,GAAG,MAAM,YAIrD,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AACD,qBAAa,OAAQ,YAAW,YAAY;IAC1C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAOpD,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAmBf,iBAAiB,IAAI,aAAa,EAAE;IAUpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,IAAI,aAAa;IAOzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS;CAGxC"}
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExpNode = exports.isExpNode = void 0;
3
+ exports.ExpNode = exports.isExpNode = exports.exp = void 0;
4
4
  // import { exp } from "mathjs";
5
5
  const node_1 = require("../node");
6
6
  const functionNode_1 = require("./functionNode");
7
7
  const numberNode_1 = require("../numbers/numberNode");
8
8
  const logNode_1 = require("./logNode");
9
+ const multiplyNode_1 = require("../operators/multiplyNode");
10
+ const exp = (a) => {
11
+ const nodeA = typeof a === "number" ? a.toTree() : typeof a === "string" ? a.toTree() : a;
12
+ return new ExpNode(nodeA);
13
+ };
14
+ exports.exp = exp;
9
15
  function isExpNode(a) {
10
16
  return (0, functionNode_1.isFunctionNode)(a) && a.id === functionNode_1.FunctionsIds.exp;
11
17
  }
@@ -75,5 +81,8 @@ class ExpNode {
75
81
  toDetailedEvaluation(vars) {
76
82
  return new ExpNode(this.child.toDetailedEvaluation(vars));
77
83
  }
84
+ derivative(varName) {
85
+ return (0, multiplyNode_1.multiply)(this.child.derivative(varName), this);
86
+ }
78
87
  }
79
88
  exports.ExpNode = ExpNode;
@@ -23,5 +23,6 @@ export declare class Log10Node implements FunctionNode {
23
23
  evaluate(vars?: Record<string, number>): number;
24
24
  equals(node: AlgebraicNode): boolean;
25
25
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): Log10Node;
26
+ derivative(varName?: string | undefined): AlgebraicNode;
26
27
  }
27
28
  //# sourceMappingURL=log10Node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"log10Node.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/log10Node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQjD,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,SAAS,CAEnD;AACD,qBAAa,SAAU,YAAW,YAAY;IAC5C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAOpD,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAaf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAG1B,QAAQ,IAAI,aAAa;IAgCzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"log10Node.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/log10Node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQjD,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,SAAS,CAEnD;AACD,qBAAa,SAAU,YAAW,YAAY;IAC5C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAOpD,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAaf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAG1B,QAAQ,IAAI,aAAa;IAgCzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -94,5 +94,8 @@ class Log10Node {
94
94
  toDetailedEvaluation(vars) {
95
95
  return new Log10Node(this.child.toDetailedEvaluation(vars));
96
96
  }
97
+ derivative(varName) {
98
+ throw new Error("unimplemented derivative");
99
+ }
97
100
  }
98
101
  exports.Log10Node = Log10Node;
@@ -23,5 +23,6 @@ export declare class LogNode implements FunctionNode {
23
23
  evaluate(vars?: Record<string, number>): number;
24
24
  equals(node: AlgebraicNode): boolean;
25
25
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): LogNode;
26
+ derivative(varName?: string | undefined): AlgebraicNode;
26
27
  }
27
28
  //# sourceMappingURL=logNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/logNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQjD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AACD,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAOpD,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAaf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAG1B,QAAQ,IAAI,aAAa;IAmCzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"logNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/logNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQjD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AACD,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAOpD,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAaf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAG1B,QAAQ,IAAI,aAAa;IAmCzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -98,5 +98,8 @@ class LogNode {
98
98
  toDetailedEvaluation(vars) {
99
99
  return new LogNode(this.child.toDetailedEvaluation(vars));
100
100
  }
101
+ derivative(varName) {
102
+ throw new Error("unimplemented derivative");
103
+ }
101
104
  }
102
105
  exports.LogNode = LogNode;
@@ -30,5 +30,6 @@ export declare class OppositeNode implements FunctionNode {
30
30
  simplify(opts?: SimplifyOptions): AlgebraicNode | NumberNode;
31
31
  equals(node: AlgebraicNode): boolean;
32
32
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): OppositeNode;
33
+ derivative(varName?: string | undefined): AlgebraicNode;
33
34
  }
34
35
  //# sourceMappingURL=oppositeNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oppositeNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/oppositeNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAM/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAgB,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMlE,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,eAAO,MAAM,QAAQ,MAAO,aAAa,GAAG,MAAM,GAAG,MAAM,iBAI1D,CAAC;AAGF,qBAAa,YAAa,YAAW,YAAY;IAC/C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAOpD,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAef,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAgCtD;;;;OAIG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAQ5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe;IAI/B,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"oppositeNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/oppositeNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAM/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAgB,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMlE,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,YAAY,CAEzD;AAED,eAAO,MAAM,QAAQ,MAAO,aAAa,GAAG,MAAM,GAAG,MAAM,iBAI1D,CAAC;AAGF,qBAAa,YAAa,YAAW,YAAY;IAC/C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAOpD,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAef,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAgCtD;;;;OAIG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAQ5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe;IAI/B,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -92,5 +92,8 @@ class OppositeNode {
92
92
  toDetailedEvaluation(vars) {
93
93
  return new OppositeNode(this.child.toDetailedEvaluation(vars));
94
94
  }
95
+ derivative(varName) {
96
+ return (0, exports.opposite)(this.child.derivative(varName));
97
+ }
95
98
  }
96
99
  exports.OppositeNode = OppositeNode;
@@ -2,6 +2,7 @@ import { Node, NodeIds, NodeType } from "../node";
2
2
  import { FunctionNode, FunctionsIds } from "./functionNode";
3
3
  import { AlgebraicNode, SimplifyOptions } from "../algebraicNode";
4
4
  export declare function isSinNode(a: Node): a is SinNode;
5
+ export declare const sin: (a: AlgebraicNode | number | string) => SinNode;
5
6
  export declare class SinNode implements FunctionNode {
6
7
  id: FunctionsIds;
7
8
  child: AlgebraicNode;
@@ -22,5 +23,6 @@ export declare class SinNode implements FunctionNode {
22
23
  evaluate(vars?: Record<string, number>): number;
23
24
  equals(node: AlgebraicNode): boolean;
24
25
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): SinNode;
26
+ derivative(varName?: string | undefined): AlgebraicNode;
25
27
  }
26
28
  //# sourceMappingURL=sinNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sinNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/sinNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIlE,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AAED,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,aAAa;IAsBnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"sinNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/sinNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMlE,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AAED,eAAO,MAAM,GAAG,MAAO,aAAa,GAAG,MAAM,GAAG,MAAM,YAIrD,CAAC;AAEF,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,aAAa;IAsBnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -1,14 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SinNode = exports.isSinNode = void 0;
3
+ exports.SinNode = exports.sin = exports.isSinNode = void 0;
4
4
  const node_1 = require("../node");
5
5
  const functionNode_1 = require("./functionNode");
6
6
  const remarkableValues_1 = require("../../../math/trigonometry/remarkableValues");
7
7
  const hasVariableNode_1 = require("../hasVariableNode");
8
+ const multiplyNode_1 = require("../operators/multiplyNode");
9
+ const cosNode_1 = require("./cosNode");
8
10
  function isSinNode(a) {
9
11
  return (0, functionNode_1.isFunctionNode)(a) && a.id === functionNode_1.FunctionsIds.sin;
10
12
  }
11
13
  exports.isSinNode = isSinNode;
14
+ const sin = (a) => {
15
+ const nodeA = typeof a === "number" ? a.toTree() : typeof a === "string" ? a.toTree() : a;
16
+ return new SinNode(nodeA);
17
+ };
18
+ exports.sin = sin;
12
19
  class SinNode {
13
20
  constructor(child) {
14
21
  this.id = functionNode_1.FunctionsIds.sin;
@@ -70,5 +77,8 @@ class SinNode {
70
77
  toDetailedEvaluation(vars) {
71
78
  return new SinNode(this.child.toDetailedEvaluation(vars));
72
79
  }
80
+ derivative(varName) {
81
+ return (0, multiplyNode_1.multiply)(this.child.derivative(varName), (0, cosNode_1.cos)(this.child));
82
+ }
73
83
  }
74
84
  exports.SinNode = SinNode;
@@ -24,5 +24,6 @@ export declare class SqrtNode implements FunctionNode {
24
24
  simplify(opts?: SimplifyOptions): AlgebraicNode;
25
25
  equals(node: AlgebraicNode): boolean;
26
26
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): SqrtNode;
27
+ derivative(varName?: string | undefined): AlgebraicNode;
27
28
  }
28
29
  //# sourceMappingURL=sqrtNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqrtNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/sqrtNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAK5E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMlE,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,QAAQ,CAEjD;AAED,eAAO,MAAM,IAAI,MAAO,aAAa,GAAG,MAAM,GAAG,MAAM,aAItD,CAAC;AAEF,qBAAa,QAAS,YAAW,YAAY;IAC3C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAOpD,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAMtB,KAAK,IAAI,MAAM;IAIf,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAwBtD,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAG5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe;IAyC/B,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"sqrtNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/sqrtNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAK5E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMlE,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,QAAQ,CAEjD;AAED,eAAO,MAAM,IAAI,MAAO,aAAa,GAAG,MAAM,GAAG,MAAM,aAItD,CAAC;AAEF,qBAAa,QAAS,YAAW,YAAY;IAC3C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,WAAW;IAOpD,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAMtB,KAAK,IAAI,MAAM;IAIf,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,EAAE;IAwBtD,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAG5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe;IAyC/B,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -117,5 +117,8 @@ class SqrtNode {
117
117
  toDetailedEvaluation(vars) {
118
118
  return new SqrtNode(this.child.toDetailedEvaluation(vars));
119
119
  }
120
+ derivative(varName) {
121
+ throw new Error("unimplemented derivative");
122
+ }
120
123
  }
121
124
  exports.SqrtNode = SqrtNode;
@@ -1,6 +1,7 @@
1
1
  import { Node, NodeIds, NodeType } from "../node";
2
2
  import { FunctionNode, FunctionsIds } from "./functionNode";
3
3
  import { AlgebraicNode, SimplifyOptions } from "../algebraicNode";
4
+ export declare const tan: (a: AlgebraicNode | number | string) => TanNode;
4
5
  export declare function isTanNode(a: Node): a is TanNode;
5
6
  export declare class TanNode implements FunctionNode {
6
7
  id: FunctionsIds;
@@ -22,5 +23,6 @@ export declare class TanNode implements FunctionNode {
22
23
  evaluate(vars?: Record<string, number>): number;
23
24
  equals(node: AlgebraicNode): boolean;
24
25
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): TanNode;
26
+ derivative(varName?: string | undefined): AlgebraicNode;
25
27
  }
26
28
  //# sourceMappingURL=tanNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tanNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/tanNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIlE,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AAED,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,aAAa;IAsBnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"tanNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/functions/tanNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIlE,eAAO,MAAM,GAAG,MAAO,aAAa,GAAG,MAAM,GAAG,MAAM,YAIrD,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAE/C;AAED,qBAAa,OAAQ,YAAW,YAAY;IAC1C,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBAEP,KAAK,EAAE,aAAa;IAMhC,aAAa;;;;;;IAMb,YAAY,IAAI,MAAM;IAItB,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,aAAa,EAAE;IASpC,cAAc,IAAI,MAAM,EAAE;IAI1B,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,aAAa;IAsBnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAItC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAGpC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TanNode = exports.isTanNode = void 0;
3
+ exports.TanNode = exports.isTanNode = exports.tan = void 0;
4
4
  const node_1 = require("../node");
5
5
  const functionNode_1 = require("./functionNode");
6
6
  const remarkableValues_1 = require("../../../math/trigonometry/remarkableValues");
7
7
  const hasVariableNode_1 = require("../hasVariableNode");
8
+ const tan = (a) => {
9
+ const nodeA = typeof a === "number" ? a.toTree() : typeof a === "string" ? a.toTree() : a;
10
+ return new TanNode(nodeA);
11
+ };
12
+ exports.tan = tan;
8
13
  function isTanNode(a) {
9
14
  return (0, functionNode_1.isFunctionNode)(a) && a.id === functionNode_1.FunctionsIds.tan;
10
15
  }
@@ -70,5 +75,8 @@ class TanNode {
70
75
  toDetailedEvaluation(vars) {
71
76
  return new TanNode(this.child.toDetailedEvaluation(vars));
72
77
  }
78
+ derivative(varName) {
79
+ throw new Error("unimplemented derivative");
80
+ }
73
81
  }
74
82
  exports.TanNode = TanNode;
@@ -21,5 +21,6 @@ export declare class DegreeNode implements AlgebraicNode {
21
21
  simplify(): this;
22
22
  equals(node: AlgebraicNode): boolean;
23
23
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): this;
24
+ derivative(varName?: string | undefined): AlgebraicNode;
24
25
  }
25
26
  //# sourceMappingURL=degree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"degree.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/geometry/degree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AAED,qBAAa,UAAW,YAAW,aAAa;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAmB;IACjC,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAO5D,aAAa;;;;IAMb,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAGf,QAAQ;IAGR,cAAc;IAQd,iBAAiB;IAGjB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,QAAQ;IAGR,MAAM,CAAC,IAAI,EAAE,aAAa;IAG1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"degree.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/geometry/degree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AAED,qBAAa,UAAW,YAAW,aAAa;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAmB;IACjC,SAAS,EAAE,OAAO,CAAC;gBACP,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAO5D,aAAa;;;;IAMb,YAAY,IAAI,MAAM;IAGtB,KAAK,IAAI,MAAM;IAGf,QAAQ;IAGR,cAAc;IAQd,iBAAiB;IAGjB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGtC,QAAQ;IAGR,MAAM,CAAC,IAAI,EAAE,aAAa;IAG1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -54,5 +54,8 @@ class DegreeNode {
54
54
  toDetailedEvaluation(vars) {
55
55
  return this;
56
56
  }
57
+ derivative(varName) {
58
+ throw new Error("unimplemented derivative");
59
+ }
57
60
  }
58
61
  exports.DegreeNode = DegreeNode;
@@ -20,5 +20,6 @@ export declare class LengthNode implements AlgebraicNode {
20
20
  simplify(): this;
21
21
  equals(node: AlgebraicNode): boolean;
22
22
  toDetailedEvaluation(vars: Record<string, AlgebraicNode>): this;
23
+ derivative(varName?: string | undefined): AlgebraicNode;
23
24
  }
24
25
  //# sourceMappingURL=lengthNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lengthNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/geometry/lengthNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AACD,qBAAa,UAAW,YAAW,aAAa;IAC9C,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBACP,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW;IAUnD,cAAc;IAGd,aAAa;;;;IAMb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAOpC,YAAY;IAGZ,QAAQ;IAIR,KAAK;IAIL,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQtC,QAAQ;IAGR,MAAM,CAAC,IAAI,EAAE,aAAa;IAG1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAGzD"}
1
+ {"version":3,"file":"lengthNode.d.ts","sourceRoot":"","sources":["../../../../src/tree/nodes/geometry/lengthNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,UAAU,CAErD;AACD,qBAAa,UAAW,YAAW,aAAa;IAC9C,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;gBACP,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW;IAUnD,cAAc;IAGd,aAAa;;;;IAMb,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;IAOpC,YAAY;IAGZ,QAAQ;IAIR,KAAK;IAIL,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQtC,QAAQ;IAGR,MAAM,CAAC,IAAI,EAAE,aAAa;IAG1B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAGxD,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;CAGxD"}
@@ -56,5 +56,8 @@ class LengthNode {
56
56
  toDetailedEvaluation(vars) {
57
57
  return this;
58
58
  }
59
+ derivative(varName) {
60
+ throw new Error("unimplemented derivative");
61
+ }
59
62
  }
60
63
  exports.LengthNode = LengthNode;
@@ -31,6 +31,7 @@ export type NodeOptions = {
31
31
  export type ToTexOptions = {
32
32
  displayStyle?: boolean;
33
33
  forceDotSign?: boolean;
34
+ forceTimesSign?: boolean;
34
35
  scientific?: number;
35
36
  hideUnit?: boolean;
36
37
  notScientific?: boolean;