예제 #1
0
        public static void OPERATOR_MOD(MathContext m)
        {
            double b = m.STK.Pop();
            double a = m.STK.Pop();

            m.STK.Push(a % b);
        }
예제 #2
0
        static MathContext CalcInternal(List <MathOperation> mops, Dictionary <string, Tuple <int, Action <MathContext> > > functions)
        {
            MathContext math = new MathContext()
            {
                STK       = new Stack <double>(),
                Functions = functions
            };

            for (int i = 0; i < mops.Count; i++)
            {
                if (mops[i].OpValue == MathOp.LDN)
                {
                    math.STK.Push(mops[i].NumericValue);
                }
                else if (mops[i].OpValue == MathOp.FNC)
                {
                    functions[mops[i].FunctionValue].Item2(math);
                }
                else
                {
                    Operators[(int)mops[i].OpValue](math);
                }
            }
            return(math);
        }
예제 #3
0
        public static void OPERATOR_EXP(MathContext m)
        {
            double b = m.STK.Pop();
            double a = m.STK.Pop();

            m.STK.Push(Math.Pow(a, b));
        }
예제 #4
0
        public static void FUNCTION_SIN(MathContext m)
        {
            double a = m.STK.Pop();

            m.STK.Push(Math.Sin(a));
        }