private void CalculateMultiReturn()
      {
        double mult = 2 * Math.PI / 800;
        double r, g, b;
        int index = 0;

        // Assign the parser variables
        ParserVariable x = new ParserVariable(0);
        ParserVariable y = new ParserVariable(0);
        muParser.Parser p = new muParser.Parser(muParser.Parser.EBaseType.tpDOUBLE);
        p.DefineOprt("%", new Parser.Fun2Delegate(mod), 2);
        p.SetExpr(m_parserImg[0].GetExpr() + "," + m_parserImg[1].GetExpr() + "," + m_parserImg[2].GetExpr());
        p.DefineVar("x", x);
        p.DefineVar("y", y);

        for (int yi = 0; yi < pbImage.Height; ++yi)
        {
          y.Value = (yi - 400) * mult;
          for (int xi = 0; xi < pbImage.Width; ++xi)
          {
            x.Value = (xi - 400) * mult;

            int nNum;
            double[] ret = p.EvalMultiExpr();
            r = GetColorComponent(ret[0]);
            g = GetColorComponent(ret[1]);
            b = GetColorComponent(ret[2]);

            m_data[index] = (byte)(r * 255);
            m_data[index + 1] = (byte)(g * 255);
            m_data[index + 2] = (byte)(b * 255);
            index += 3;
          }
        }
      }
      private void Calc(String expr)
      {
        try
        {
          m_history.Add(expr);

          meHistory.SelectionColor = System.Drawing.Color.Blue;
          meHistory.AppendText(expr);
          meHistory.AppendText("\r\n");
          meHistory.SelectionColor = System.Drawing.Color.Black;

          m_parser.SetDecSep(cbDec.Text.ToCharArray()[0]); // default: "."
          m_parser.SetArgSep(cbArg.Text.ToCharArray()[0]); // default: ","
          m_parser.SetExpr(expr);
          m_ans.Value = m_parser.Eval();

          string result = Convert.ToString(m_ans.Value);
          meHistory.AppendText(String.Format("{0} = ", m_parser.GetExpr()));
          meHistory.AppendText(result);
          meHistory.AppendText("\r\n");
        }
        catch (ParserException exc)
        {
          DumpException(exc);
        }
      }