Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
PowerElementWise.cs
1using System;
7
9{
14 {
24 : base(Left, Right, Start, Length, Expression)
25 {
26 }
27
36 {
37 return Power.EvaluatePower(Left, Right, this);
38 }
39
46 public override IElement Evaluate(double Left, double Right)
47 {
48 return new DoubleNumber(Math.Pow(Left, Right));
49 }
50
57 public ScriptNode Differentiate(string VariableName, Variables Variables)
58 {
59 if (this.left is IDifferentiable Left &&
60 this.right is IDifferentiable Right)
61 {
62 int Start = this.Start;
63 int Len = this.Length;
65
66 return new MultiplyElementWise(
67 this,
68 new Add(
70 Left.Differentiate(VariableName, Variables),
71 new Divide(this.right, this.left, Start, Len, Expression),
72 Start, Len, Expression),
74 Right.Differentiate(VariableName, Variables),
75 new Ln(this.left, Start, Len, Expression),
76 Start, Len, Expression),
77 Start, Len, Expression),
78 Start, Len, Expression);
79 }
80 else
81 throw new ScriptRuntimeException("Operands not differentiable.", this);
82 }
83
84 }
85}
Class managing a script expression.
Definition: Expression.cs:39
Base class for binary element-wise double operators.
ScriptNode right
Right operand.
ScriptNode left
Left operand.
Base class for all nodes in a parsed script tree.
Definition: ScriptNode.cs:69
int Length
Length of expression covered by node.
Definition: ScriptNode.cs:101
Expression Expression
Expression of which the node is a part.
Definition: ScriptNode.cs:177
int Start
Start position in script expression.
Definition: ScriptNode.cs:92
PowerElementWise(ScriptNode Left, ScriptNode Right, int Start, int Length, Expression Expression)
Element-wise Power operator.
override IElement EvaluateScalar(IElement Left, IElement Right, Variables Variables)
Evaluates the operator on scalar operands.
ScriptNode Differentiate(string VariableName, Variables Variables)
Differentiates a script node, if possible.
override IElement Evaluate(double Left, double Right)
Evaluates the double operator.
static IElement EvaluatePower(IElement Left, IElement Right, ScriptNode Node)
Calculates Left ^ Right.
Definition: Power.cs:66
Collection of variables.
Definition: Variables.cs:25
Basic interface for all types of elements.
Definition: IElement.cs:20
Base interface for lambda expressions.