/// <summary> /// 파서의 변수를 초기화. /// 전역변수로 선언된 변수는 다시 재 초기화 해서 사용할수 있게 /// </summary> private void ClearCalculateVar() { m_Term.ClearVars(); // foreach (var key in m_Dictionary_EquationInfo.Keys) // { // var splitedtext = key.Split(':'); // if (splitedtext[0].Contains("전역변수")) // { // foreach (var vdata in m_Dictionary_EquationInfo[key].m_Dictionary_Equation.Values) // { // m_Term.SetVar(vdata.Name, vdata.Value); // } // } // } foreach (var staticdata in MainForm.Static_Variable_Dictionary) { m_Term.SetVar(staticdata.Key, staticdata.Value); } }
public void UnitTest() { // Assert("2+3*5", 2+3*5); // Assert("2+3*5^2", 2+3*Math.Pow(5,2)); // Assert("2+3*5/2*2", 2d+3d*5d/2d*2d); // Assert("2pi", 2d*Math.PI); // Assert("2pi2", 2d*Math.PI*2d); // Assert("3(3+2)(2*5)", 3 * (3 + 2) * (2 * 5)); // Assert("100^-1", Math.Pow(100, -1)); // Assert("3^2+3*3-18", 0); // Assert("4^2+3*4-18", 10); // // m_term.SetVar("x", -2); // Assert("(2x+4)/(x^2-7)", 0); // // m_term.SetVar("a", 5); // m_term.SetVar("b", 5); // Assert("2aba", 250); // Assert("2abs(-10)", 20); // Assert("sqrt(10^2)", 10); // // Assert("sin(0)", 0); // Assert("sin(pi/2)", 1); // Assert("sin(pi/4)", Math.Sin(Math.PI / 4)); // Assert("sin((45/180)pi)", Math.Sin((45d/180d)*Math.PI)); // Assert("tan(pi/2)", Math.Tan(Math.PI/2)); // // m_term.SetVar("ans", 5); // Assert("ans+2", 7); // // m_term.SetVar("ans", 16); // Assert("sqrt(ans)+2", 6); // // m_term.SetVar("ans", 10); // Assert("2*-ans", -20); // // m_term.SetVar("ans", 10); // m_term.SetVar("a", 2); // m_term.SetVar("n", 3); // Assert("a n ans", 60); // // Assert("2 * e", 2 * Math.E); // Assert("2e", 2 * Math.E); // Assert("2e10", (double)2e10); // Assert("5.0805263425E-5 * 2", 2 * (double)5.0805263425E-5); // Assert("4.35718618402138E+21*2", ((double)4.35718618402138E+21)*2); // Assert("10E10*2", ((double)10E10)*2); // // Assert("ln(3^e)", Math.Log(Math.Pow(3, Math.E), Math.E/*3*/)); // // Assert("Log(1000)", 3); // Assert("Log(27, 3)", 3); // Assert("Log(4^4, 4)", 4); // Assert("-sin(-4)", -Math.Sin(-4)); // Assert("max(3+2,3+3)", 6); // // Assert("min(10,3) - max(0,3)", 0); // Assert("min(cos(0.04), sin(0.2) )", Math.Min(Math.Cos(0.04), Math.Sin(0.2))); // Assert("max(cos(0.04), 0.3 )", Math.Max(Math.Cos(0.04), 0.4)); // Assert("cos(2min(pi(1/2), 3.14/2))", Math.Cos(2*Math.Min(Math.PI/2, 3.14/2))); // // m_term.SetVar("x", "2pi"); // Assert("2x", Math.PI*8); // // Assert("2^2^3", Math.Pow(2, Math.Pow(2,3))); // Assert("(2^2)^3", Math.Pow(Math.Pow(2, 2),3)); // // Assert("-(-1)^2", -1); // Assert("-1^2", -1); // Assert("(-1)^2", 1); m_term.SetVar("x", 0); Assert("-(x-1)^2+4", 3); m_term.SetVar("theta", 45); m_term.SetVar("TCH", 5); m_term.removeVar("x"); Assert("(500-TCH)/tan( (theta*pi/180) )", 495.00000000000006); var strings = m_term.GetUsedVars(); foreach (var str in strings) { //MainForm.m_LogWindow.WriteLog("usedvar:" + str); } }