mirror of
https://github.com/ArashPartow/exprtk.git
synced 2025-06-12 16:27:23 +00:00
C++ Mathematical Expression Library (ExprTk) http://www.partow.net/programming/exprtk/index.html
This commit is contained in:
137
exprtk_test.cpp
137
exprtk_test.cpp
@ -2026,7 +2026,16 @@ inline bool run_test02()
|
||||
test_ab<T>("('!@#$%^&*([{}])-=') == ('!@#$%^&*([{}])-=')","","",T(1.0)),
|
||||
test_ab<T>("{[('!@#$%^&*([{}])-=')]} == [{('!@#$%^&*([{}])-=')}]","","",T(1.0)),
|
||||
test_ab<T>("'1234\\\\abc\nxyz\r890\tqaz\\'567' == a","1234\\abc\nxyz\r890\tqaz'567","",T(1.0)),
|
||||
test_ab<T>("a == '1234\\\\abc\nxyz\r890\tqaz\\'567'","1234\\abc\nxyz\r890\tqaz'567","",T(1.0))
|
||||
test_ab<T>("a == '1234\\\\abc\nxyz\r890\tqaz\\'567'","1234\\abc\nxyz\r890\tqaz'567","",T(1.0)),
|
||||
test_ab<T>("'123'[] == 3" ,"","",T(1.0)),
|
||||
test_ab<T>("3 == '123'[]" ,"","",T(1.0)),
|
||||
test_ab<T>("'123'[] + '1234'[] == 7" ,"","",T(1.0)),
|
||||
test_ab<T>("abs('123'[] - '1234'[]) == 1" ,"","",T(1.0)),
|
||||
test_ab<T>("'1234'[] == a[]" ,"1234","",T(1.0)),
|
||||
test_ab<T>("'123'[] + a[] == 7" ,"1234","",T(1.0)),
|
||||
test_ab<T>("abs(a[] - '12345'[]) == 1" ,"1234","",T(1.0)),
|
||||
test_ab<T>("'1234'[] + '12345'[] == a[] + b[]" ,"1234","12345",T(1.0)),
|
||||
test_ab<T>("abs('123'[] - '1234'[]) == abs(a[] - b[])" ,"1234","12345",T(1.0))
|
||||
};
|
||||
|
||||
static const std::size_t test_list_size = sizeof(test_list) / sizeof(test_ab<T>);
|
||||
@ -2034,6 +2043,7 @@ inline bool run_test02()
|
||||
const std::size_t rounds = 50;
|
||||
for (std::size_t r = 0; r < rounds; ++r)
|
||||
{
|
||||
bool result = true;
|
||||
for (std::size_t i = 0; i < test_list_size; ++i)
|
||||
{
|
||||
test_ab<T>& test = const_cast<test_ab<T>&>(test_list[i]);
|
||||
@ -2079,10 +2089,12 @@ inline bool run_test02()
|
||||
test.expr.c_str(),
|
||||
(double)test.result,
|
||||
(double)result);
|
||||
return false;
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!result)
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -3293,6 +3305,124 @@ inline bool run_test10()
|
||||
"(~{ var x[3] := [1] } + ~{ var x[6] := {6,5,4,3,2,1}}) == 7",
|
||||
"(~{ var x[6] := {6,5,4,3,2,1} } + ~{ var x := 1 }) == 7",
|
||||
"(~{ var x := 1 } + ~{ var x[6] := {6,5,4,3,2,1} }) == 7",
|
||||
"var x[3] := {}; (x[0] == 0) and (x[1] == 0) and (x[2] == 0)",
|
||||
"var x[3] := {1,2}; (x[0] == 1) and (x[1] == 2) and (x[2] == 0)",
|
||||
"var x[3] := {1,2,3}; (x[0] == 1) and (x[1] == 2) and (x[2] == 3)",
|
||||
"var x[3] := [1]; (x[0] == 1) and (x[1] == 1) and (x[2] == 1)",
|
||||
"var v[3] := [1]; v += 1; (v[0] == v[1]) and (v[0] == v[2]) and (v[0] == 2)",
|
||||
"var v[3] := [1]; v -= 1; (v[0] == v[1]) and (v[0] == v[2]) and (v[0] == 0)",
|
||||
"var v[3] := [1]; v *= 2; (v[0] == v[1]) and (v[0] == v[2]) and (v[0] == 2)",
|
||||
"var v[3] := [3]; v /= 3; (v[0] == v[1]) and (v[0] == v[2]) and (v[0] == 1)",
|
||||
"var v[3] := {1,2, 3}; v += 1; (v[0] == 2) and (v[1] == 3) and (v[2] == 4)",
|
||||
"var v[3] := {1,2, 3}; v -= 1; (v[0] == 0) and (v[1] == 1) and (v[2] == 2)",
|
||||
"var v[3] := {1,2, 3}; v *= 2; (v[0] == 2) and (v[1] == 4) and (v[2] == 6)",
|
||||
"var v[3] := {3,9,15}; v /= 3; (v[0] == 1) and (v[1] == 3) and (v[2] == 5)",
|
||||
"var v0[3] := [1]; var v1[3] := [1]; v0 += v1; (v0[0] == v0[1]) and (v0[0] == v0[2]) and (v0[0] == 2)",
|
||||
"var v0[3] := [1]; var v1[3] := [1]; v0 -= v1; (v0[0] == v0[1]) and (v0[0] == v0[2]) and (v0[0] == 0)",
|
||||
"var v0[3] := [1]; var v1[3] := [2]; v0 *= v1; (v0[0] == v0[1]) and (v0[0] == v0[2]) and (v0[0] == 2)",
|
||||
"var v0[3] := [3]; var v1[3] := [3]; v0 /= v1; (v0[0] == v0[1]) and (v0[0] == v0[2]) and (v0[0] == 1)",
|
||||
"var v0[3] := {1,2, 3}; var v1[3] := {1,1,1}; v0 += v1; (v0[0] == 2) and (v0[1] == 3) and (v0[2] == 4)",
|
||||
"var v0[3] := {1,2, 3}; var v1[3] := {1,1,1}; v0 -= v1; (v0[0] == 0) and (v0[1] == 1) and (v0[2] == 2)",
|
||||
"var v0[3] := {1,2, 3}; var v1[3] := {2,2,2}; v0 *= v1; (v0[0] == 2) and (v0[1] == 4) and (v0[2] == 6)",
|
||||
"var v0[3] := {3,9,15}; var v1[3] := {3,3,3}; v0 /= v1; (v0[0] == 1) and (v0[1] == 3) and (v0[2] == 5)",
|
||||
"var x[3] := {}; var y[4] := {1,2,3,4}; x := y; (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == y[2])",
|
||||
"var x[3] := {}; var y[3] := {1,2,3}; x := y; (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == y[2])",
|
||||
"var x[3] := {}; var y[2] := {1,2}; x := y; (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == 0)",
|
||||
"var x[3] := {}; var y[1] := {1}; x := y; (x[0] == y[0]) and (x[1] == 0) and (x[2] == 0)",
|
||||
"var x[3] := {}; var y[4] := {1,2,3,4}; x := (y+=1); (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == y[2])",
|
||||
"var x[3] := {}; var y[3] := {1,2,3}; x := (y+=1); (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == y[2])",
|
||||
"var x[3] := {}; var y[2] := {1,2}; x := (y+=1); (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == 0)",
|
||||
"var x[3] := {}; var y[1] := {1}; x := (y+=1); (x[0] == y[0]) and (x[1] == 0) and (x[2] == 0)",
|
||||
"var x[3] := {}; var y[4] := {1,2,3,4}; x += (y+=1); (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == y[2])",
|
||||
"var x[3] := {}; var y[3] := {1,2,3}; x += (y+=1); (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == y[2])",
|
||||
"var x[3] := {}; var y[2] := {1,2}; x += (y+=1); (x[0] == y[0]) and (x[1] == y[1]) and (x[2] == 0)",
|
||||
"var x[3] := {}; var y[1] := {1}; x += (y+=1); (x[0] == y[0]) and (x[1] == 0) and (x[2] == 0)",
|
||||
"var x[3] := [9]; var y[4] := {1,2,3,4}; x <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 3)",
|
||||
"var x[3] := [9]; var y[3] := {1,2,3}; x <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 3)",
|
||||
"var x[3] := [9]; var y[2] := {1,2}; x <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 9)",
|
||||
"var x[3] := [9]; var y[1] := {1}; x <=> y; (x[0] == 1) and (x[1] == 9) and (x[2] == 9)",
|
||||
"var x[3] := [9]; var y[4] := {1,2,3,4}; x <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 4)",
|
||||
"var x[3] := [9]; var y[3] := {1,2,3}; x <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 4)",
|
||||
"var x[3] := [9]; var y[2] := {1,2}; x <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 9)",
|
||||
"var x[3] := [9]; var y[1] := {1}; x <=> (y += 1); (x[0] == 2) and (x[1] == 9) and (x[2] == 9)",
|
||||
"var x[3] := [8]; var y[4] := {1,2,3,4}; (x += 1) <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 3)",
|
||||
"var x[3] := [8]; var y[3] := {1,2,3}; (x += 1) <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 3)",
|
||||
"var x[3] := [8]; var y[2] := {1,2}; (x += 1) <=> y; (x[0] == 1) and (x[1] == 2) and (x[2] == 9)",
|
||||
"var x[3] := [8]; var y[1] := {1}; (x += 1) <=> y; (x[0] == 1) and (x[1] == 9) and (x[2] == 9)",
|
||||
"var x[3] := [8]; var y[4] := {1,2,3,4}; (x += 1) <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 4)",
|
||||
"var x[3] := [8]; var y[3] := {1,2,3}; (x += 1) <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 4)",
|
||||
"var x[3] := [8]; var y[2] := {1,2}; (x += 1) <=> (y += 1); (x[0] == 2) and (x[1] == 3) and (x[2] == 9)",
|
||||
"var x[3] := [8]; var y[1] := {1}; (x += 1) <=> (y += 1); (x[0] == 2) and (x[1] == 9) and (x[2] == 9)",
|
||||
"var x[3] := [0]; var y[4] := {1,2,3,4}; x < y",
|
||||
"var x[3] := [0]; var y[3] := {1,2,3}; x < y",
|
||||
"var x[3] := [0]; var y[2] := {1,2}; x < y",
|
||||
"var x[3] := [0]; var y[1] := {1}; x < y",
|
||||
"var x[3] := [0]; var y[4] := {1,2,3,4}; x <= y",
|
||||
"var x[3] := [0]; var y[3] := {1,2,3}; x <= y",
|
||||
"var x[3] := [0]; var y[2] := {1,2}; x <= y",
|
||||
"var x[3] := [0]; var y[1] := {1}; x <= y",
|
||||
"var x[3] := [5]; var y[4] := {1,2,3,4}; x > y",
|
||||
"var x[3] := [5]; var y[3] := {1,2,3}; x > y",
|
||||
"var x[3] := [5]; var y[2] := {1,2}; x > y",
|
||||
"var x[3] := [5]; var y[1] := {1}; x > y",
|
||||
"var x[3] := [5]; var y[4] := {1,2,3,4}; x >= y",
|
||||
"var x[3] := [5]; var y[3] := {1,2,3}; x >= y",
|
||||
"var x[3] := [5]; var y[2] := {1,2}; x >= y",
|
||||
"var x[3] := [5]; var y[1] := {1}; x >= y",
|
||||
"var x[3] := [1]; var y[4] := [1]; x == y",
|
||||
"var x[3] := [1]; var y[3] := [1]; x == y",
|
||||
"var x[3] := [1]; var y[2] := [1]; x == y",
|
||||
"var x[3] := [1]; var y[1] := [1]; x == y",
|
||||
"var x[3] := [1]; var y[4] := [2]; x != y",
|
||||
"var x[3] := [1]; var y[3] := [2]; x != y",
|
||||
"var x[3] := [1]; var y[2] := [2]; x != y",
|
||||
"var x[3] := [1]; var y[1] := [2]; x != y",
|
||||
"var x[3] := [0]; var y[4] := {5,6,7,8}; (x += 1) < y",
|
||||
"var x[3] := [0]; var y[3] := {5,6,7}; (x += 1) < y",
|
||||
"var x[3] := [0]; var y[2] := {5,6}; (x += 1) < y",
|
||||
"var x[3] := [0]; var y[1] := {5}; (x += 1) < y",
|
||||
"var x[3] := [0]; var y[4] := {1,2,3,4}; x < (y += 1)",
|
||||
"var x[3] := [0]; var y[3] := {1,2,3}; x < (y += 1)",
|
||||
"var x[3] := [0]; var y[2] := {1,2}; x < (y += 1)",
|
||||
"var x[3] := [0]; var y[1] := {1}; x < (y += 1)",
|
||||
"var x[3] := [0]; var y[4] := {5,6,7,8}; (x += 1) < (y += 1)",
|
||||
"var x[3] := [0]; var y[3] := {5,6,7}; (x += 1) < (y += 1)",
|
||||
"var x[3] := [0]; var y[2] := {5,6}; (x += 1) < (y += 1)",
|
||||
"var x[3] := [0]; var y[1] := {5}; (x += 1) < (y += 1)",
|
||||
"var x[3] := {1,2,3}; var y := 5; x < y ",
|
||||
"var x[3] := {1,2,3}; var y := 3; x < y + 1 ",
|
||||
"var x[3] := {1,2,3}; var y := 5; x <= y ",
|
||||
"var x[3] := {1,2,3}; var y := 3; x <= y + 1",
|
||||
"var x[3] := {1,1,1}; var y := 1; x == y ",
|
||||
"var x[3] := {1,1,1}; var y := 2; x == y - 1",
|
||||
"var x[3] := {1,2,3}; var y := 5; y > x ",
|
||||
"var x[3] := {1,2,3}; var y := 3; y >= x ",
|
||||
"var x[3] := {1,2,3}; var y := 5; y + 1 > x ",
|
||||
"var x[3] := {1,1,1}; var y := 1; y == x ",
|
||||
"var x[3] := {1,1,1}; var y := 2; y - 1 == x",
|
||||
"var x[3] := {1,2,3}; var y := 5; (x += 1) < y ",
|
||||
"var x[3] := {1,2,3}; var y := 3; (x -= 1) < y + 1 ",
|
||||
"var x[3] := {1,2,3}; var y := 5; (x -= 1) <= y ",
|
||||
"var x[3] := {2,2,2}; var y := 1; (x -= 1) == y ",
|
||||
"var x[3] := {1,2,3}; var y := 5; y > (x += 1) ",
|
||||
"var x[3] := {1,2,3}; var y := 5; y + 1 > (x += 1) ",
|
||||
"var x[3] := {2,2,2}; var y := 1; y == (x -= 1) ",
|
||||
"var x[3] := {2,2,2}; var y := 0; y + 1 == (x -= 1)",
|
||||
"var x[3] := [1]; var y[4] := {1,2,3,4}; var z[3] := [1]; z := (x + y); z == (x + y)",
|
||||
"var x[3] := [1]; var y[3] := {1,2,3}; var z[3] := [1]; z := (x - y); z == (x - y)",
|
||||
"var x[3] := [1]; var y[2] := {1,2}; var z[3] := [1]; z := (x / y); z == (x / y)",
|
||||
"var x[3] := [1]; var y[1] := {1}; var z[3] := [1]; z := (x * y); z == (x * y)",
|
||||
"var x[3] := [1]; var y[4] := {1,2,3,4}; var z[3] := [1]; z := 2(x + y); z == (x + y)2",
|
||||
"var x[3] := [1]; var y[3] := {1,2,3}; var z[3] := [1]; z := 2(x - y); z == (x - y)2",
|
||||
"var x[3] := [1]; var y[2] := {1,2}; var z[3] := [1]; z := 2(x / y); z == (x / y)2",
|
||||
"var x[3] := [1]; var y[1] := {1}; var z[3] := [1]; z := 2(x * y); z == (x * y)2",
|
||||
"var x[3] := [1]; var y[4] := {1,2,3,4}; var z[3] := [1]; z := 2(x + y)/3; z == 2(x + y)/3",
|
||||
"var x[3] := [1]; var y[3] := {1,2,3}; var z[3] := [1]; z := 2(x - y)/3; z == 2(x - y)/3",
|
||||
"var x[3] := [1]; var y[2] := {1,2}; var z[3] := [1]; z := 2(x / y)/3; z == 2(x / y)/3",
|
||||
"var x[3] := [1]; var y[1] := {1}; var z[3] := [1]; z := 2(x * y)/3; z == 2(x * y)/3",
|
||||
"var x[6] := {1,2,3,4,5,6}; equal(sqrt(sum([x - avg(x)]^2) / x[]),1.7078251277)",
|
||||
"var x[3] := {-1,-2,-3}; sum(abs(x) ) == 6",
|
||||
"var x[3] := {0.1,0.2,0.3}; sum(trunc(x)) == 0",
|
||||
|
||||
"var x := 2; (~{ for (i := 0; i < 10; i += 1) { for (j := 0; j <= i;"
|
||||
"j += 1) { var y := 3; if ((i + j + y + x) < 6) { y += x; continue; "
|
||||
@ -3322,7 +3452,7 @@ inline bool run_test10()
|
||||
|
||||
bool failed = false;
|
||||
|
||||
for (std::size_t r = 0; r < 100; ++r)
|
||||
for (std::size_t r = 0; r < 10; ++r)
|
||||
{
|
||||
for (std::size_t i = 0; i < expression_list_size; ++i)
|
||||
{
|
||||
@ -3346,7 +3476,6 @@ inline bool run_test10()
|
||||
{
|
||||
printf("run_test10() - swaps evaluation error Expression: %s\n",
|
||||
expression_list[i].c_str());
|
||||
|
||||
failed = true;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user