示例#1
0
        //Multiply two Noms
        public static Nom MultiplyNoms(Nom input1, Nom input2)
        {
            var result = new Nom();

            result.Constant = input1.Constant * input2.Constant;
            result.HasX     = input1.HasX || input2.HasX;
            result.Power    = input1.Power + input2.Power;
            return(result);
        }
示例#2
0
        //Multiple all input Noms by multipler
        public static List <Nom> MultiplyAcrossNoms(List <Nom> input, Nom multiplier)
        {
            var result = new List <Nom>();

            foreach (var n in input)
            {
                result.Add(MultiplyNoms(n, multiplier));
            }
            return(result);
        }
示例#3
0
        //Divide two Noms
        public static Nom DivideNoms(Nom numerator, Nom denominator)
        {
            var result = new Nom();

            result.HasX = numerator.HasX;
            if (numerator.HasX && denominator.HasX)
            {
                result.Power = numerator.Power - denominator.Power;
            }
            result.Constant = numerator.Constant / denominator.Constant;
            return(result);
        }
示例#4
0
        //Subtract Nom
        public static Nom SubtractNom(Nom top, Nom bottom)
        {
            if (top.Power != bottom.Power)
            {
                throw new InvalidOperationException("Cannot get difference of different powers");
            }

            var result = new Nom();

            result.Constant = top.Constant - bottom.Constant;
            result.HasX     = top.HasX && bottom.HasX;
            result.Power    = top.Power;
            return(result);
        }
示例#5
0
        //Build a Nom based on input. DOES NOT SET THE SIGN
        public static Nom ParseNom(string input)
        {
            var result = new Nom();

            if (input.Contains("x"))
            {
                var power    = input.Substring(input.IndexOf("x") + 1, input.Length - input.IndexOf("x") - 1);
                var constant = input.Substring(0, input.IndexOf("x"));

                result.Power    = (power == string.Empty) ? 1 : int.Parse(power);
                result.Constant = (constant == string.Empty) ? 1 : int.Parse(constant);
                result.HasX     = true;
            }
            else
            {
                result.Constant = int.Parse(input);
                result.Power    = 0;
                result.HasX     = false;
            }

            return(result);
        }