예제 #1
0
        public Operand Solve(Operand p1, Operand p2)
        {
            p1 = p1.Simplify();
            p2 = p2.Simplify();

            return(Operand.Create(p1.Numerator * p2.Numerator, p1.Denominator * p2.Denominator));
        }
예제 #2
0
        protected override Operand GetParameter(string parameter)
        {
            var v = Json.JsonValue[parameter];

            if (v != null)
            {
                if (v.IsString)
                {
                    return(Operand.Create(v.StringValue));
                }
                if (v.IsBoolean)
                {
                    return(Operand.Create(v.BooleanValue));
                }
                if (v.IsDouble)
                {
                    return(Operand.Create(v.NumberValue));
                }
                if (v.IsObject)
                {
                    return(Operand.Create(v));
                }
                if (v.IsArray)
                {
                    return(Operand.Create(v));
                }
                if (v.IsNull)
                {
                    return(Operand.CreateNull());
                }
                return(Operand.Create(v));
            }
            return(base.GetParameter(parameter));
        }
        private static void GetOperand(CodeTerm[] arguments, out Operand operand)
        {
            Debug.Assert(arguments.Length == 1);

            CodeValue argValue = (CodeValue)arguments[0];

            operand = Operand.Create(argValue.Object);
        }
        private static void GetOperands(CodeTerm[] arguments, out Operand lhs, out Operand rhs)
        {
            Debug.Assert(arguments.Length == 2);

            CodeValue argValue0 = (CodeValue)arguments[0];
            CodeValue argValue1 = (CodeValue)arguments[1];

            lhs = Operand.Create(argValue0.Object);
            rhs = Operand.Create(argValue1.Object);
        }
예제 #5
0
        public Operand Solve(Operand p1, Operand p2)
        {
            p1 = p1.Simplify();
            p2 = p2.Simplify();

            if (p1.Denominator == p2.Denominator)
            {
                return(Operand.Create(p1.Numerator + p2.Numerator, p1.Denominator));
            }

            var denominator1 = p1.Denominator;
            var denominator2 = p2.Denominator;

            var newOperand1 = Operand.Create(denominator2 * p1.Numerator, denominator2 * p1.Denominator);
            var newOperand2 = Operand.Create(denominator1 * p2.Numerator, denominator1 * p2.Denominator);

            Debug.Assert(newOperand1.Denominator == newOperand2.Denominator);
            return(Operand.Create(newOperand1.Numerator + newOperand2.Numerator, newOperand1.Denominator));
        }