public static void OPERATOR_MOD(MathContext m) { double b = m.STK.Pop(); double a = m.STK.Pop(); m.STK.Push(a % b); }
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); }
public static void OPERATOR_EXP(MathContext m) { double b = m.STK.Pop(); double a = m.STK.Pop(); m.STK.Push(Math.Pow(a, b)); }
public static void FUNCTION_SIN(MathContext m) { double a = m.STK.Pop(); m.STK.Push(Math.Sin(a)); }