public static RPN.Node increaseExponent(RPN.Node node) { node.Replace(node[0], new RPN.Node(1)); node.Replace(node[1, 0], new RPN.Node(node[1, 0].GetNumber() + 1)); return(node); }
public static RPN.Node GCD(RPN.Node node) { double num1 = node.Children[0].GetNumber(); double num2 = node.Children[1].GetNumber(); double gcd = RPN.DoFunctions.Gcd(new double[] { num1, num2 }); node.Replace(node.Children[0], new RPN.Node((num1 / gcd))); node.Replace(node.Children[1], new RPN.Node((num2 / gcd))); return(node); }
public static RPN.Node increaseExponentTwo(RPN.Node node) { RPN.Node temp = node.Children[0].Children[0]; temp.Replace(temp.GetNumber() + 1); node.Children[1].Children[0].Remove(new RPN.Node(1)); return(node); }
public static RPN.Node AdditionSwap(RPN.Node node) { node[1, 1].Replace(1); node.Swap(0, 1); node.Replace(new RPN.Token("-", 2, RPN.Type.Operator)); return(node); }
public static RPN.Node dualNodeMultiplication(RPN.Node node) { double num1 = node[0, 1].GetNumber(); double num2 = node[1].GetNumber(); node[0].Replace(node[0, 1], new RPN.Node(1)); node.Replace(node[1], new RPN.Node(num1 * num2)); return(node); }
public static RPN.Node constantTimesNegative(RPN.Node node) { node.Replace(node[1], new RPN.Node(1)); node.Replace(node[0], new RPN.Node(node[0].GetNumber() * -1)); return(node); }
public static RPN.Node complexNegativeNegative(RPN.Node node) { node.Replace(node[0, 1], new RPN.Node(System.Math.Abs(node[0, 1].GetNumber()))); node.Replace(node[1], new RPN.Node(System.Math.Abs(node[1].GetNumber()))); return(node); }
public static RPN.Node AdditionToSubtractionRuleOne(RPN.Node node) { node.Replace("-"); node[0].Replace(node[0, 1], new RPN.Node(1)); return(node); }
public static RPN.Node AdditionToSubtractionRuleTwo(RPN.Node node) { node.Replace("-"); node.Replace(node[0], new RPN.Node(System.Math.Abs(node[0].GetNumber()))); return(node); }
public static RPN.Node AbsRaisedToPowerofTwo(RPN.Node node) { node.Replace(node[1], node[1, 0]); return(node); }
public static RPN.Node NegativeConstantRaisedToAPowerOfTwo(RPN.Node node) { node.Replace(node[1], new RPN.Node(-1 * node[1].GetNumber())); return(node); }
public static RPN.Node Propagation(RPN.Node node) { RPN.Node sum = new RPN.Node(new RPN.Node[] { node[0].Clone(), node[1].Clone(), node[2].Clone(), node[3, 1].Clone() }, _sum); node.Replace(node[3], node[3, 0]); //This saves a simplification step later return(new Add(node.Clone(), sum)); }
public static RPN.Node CoefficientOneReduction(RPN.Node node) { node.Replace(node[0], new RPN.Node(0)); node[1].Replace(node[1, 1], new RPN.Node(node[1, 1].GetNumber() - 1)); return(node); }
public static RPN.Node FunctionToAddition(RPN.Node node) { node[0, 1].Replace(node[0, 1].GetNumber() * -1); node.Replace(new RPN.Token("+", 2, RPN.Type.Operator)); return(node); }