public void CalculateNonVariableLayers()
        {
            CalculateChildren();

            NumberLayer newNumber = new NumberLayer(1);
            for (int i = 0; i < factors.Count; i++)
            {
                if (!Double.IsNaN(factors[i].Calculate(null)))
                {
                    newNumber.Value *= factors[i].Calculate(null);
                    factors.RemoveAt(i);
                    i--;
                }
            }
            for (int i = 0; i < divisors.Count; i++)
            {
                if (!Double.IsNaN(divisors[i].Calculate(null)))
                {
                    newNumber.Value /= divisors[i].Calculate(null);
                    divisors.RemoveAt(i);
                    i--;
                }
            }
            if(newNumber.Value != 1) factors.Add(newNumber);
        }
        public void CalculateNonVariableLayers()
        {
            CalculateChildren();

            NumberLayer newNumber = new NumberLayer(0);
            for (int i = 0; i < additions.Count; i++)
            {
                if (!Double.IsNaN(additions[i].Calculate(null)))
                {
                    newNumber.Value += additions[i].Calculate(null);
                    additions.RemoveAt(i);
                    i--;
                }
            }
            for (int i = 0; i < subtractions.Count; i++)
            {
                if (!Double.IsNaN(subtractions[i].Calculate(null)))
                {
                    newNumber.Value -= subtractions[i].Calculate(null);
                    subtractions.RemoveAt(i);
                    i--;
                }
            }
            if (newNumber.Value > 0) additions.Add(newNumber);
            if (newNumber.Value < 0)
            {
                newNumber.Value = -newNumber.Value;
                subtractions.Add(newNumber);
            }
        }