Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
Square.cs
1using System;
2using System.Collections.Generic;
7
9{
14 {
24 {
25 }
26
34 {
35 if (Operand.AssociatedObjectValue is double d)
36 return new DoubleNumber(d * d);
37
38 if (Operand is IRingElement E)
39 return Multiply.EvaluateMultiplication(E, E, this);
40
41 if (Operand.IsScalar)
42 throw new ScriptRuntimeException("Scalar operands must be double values or ring elements.", this);
43
44 LinkedList<IElement> Result = new LinkedList<IElement>();
45
46 foreach (IElement Child in Operand.ChildElements)
47 Result.AddLast(this.Evaluate(Child, Variables));
48
49 return Operand.Encapsulate(Result, this);
50 }
51
58 public ScriptNode Differentiate(string VariableName, Variables Variables)
59 {
60 int Start = this.Start;
61 int Len = this.Length;
63
64 return this.DifferentiationChainRule(VariableName, Variables, this.op,
65 new Multiply(
67 this.op,
68 Start, Len, Expression));
69 }
70
71 }
72}
Class managing a script expression.
Definition: Expression.cs:39
Represents a constant element value.
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
ScriptNode DifferentiationChainRule(string VariableName, Variables Variables, ScriptNode Argument, ScriptNode Differentiation)
Implements the differentiation chain rule, by differentiating the argument and multiplying it to the ...
Definition: ScriptNode.cs:195
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
Base class for all unary operators.
static readonly DoubleNumber TwoElement
2
Definition: DoubleNumber.cs:26
static IElement EvaluateMultiplication(IElement Left, IElement Right, ScriptNode Node)
Multiplies two operands.
Definition: Multiply.cs:69
ScriptNode Differentiate(string VariableName, Variables Variables)
Differentiates a script node, if possible.
Definition: Square.cs:58
Square(ScriptNode Operand, int Start, int Length, Expression Expression)
Square operator.
Definition: Square.cs:22
override IElement Evaluate(IElement Operand, Variables Variables)
Evaluates the node, using the variables provided in the Variables collection.
Definition: Square.cs:33
Collection of variables.
Definition: Variables.cs:25
Basic interface for all types of elements.
Definition: IElement.cs:20
Basic interface for all types of ring elements.
Definition: IRingElement.cs:10
Base interface for lambda expressions.