C++ Mathematical Expression Library (ExprTk) https://www.partow.net/programming/exprtk/index.html

This commit is contained in:
Arash Partow 2016-09-16 09:30:36 +10:00
parent 6aa4e5917e
commit 99d4430d33
4 changed files with 557 additions and 150 deletions

File diff suppressed because it is too large Load Diff

View File

@ -8060,3 +8060,37 @@ equal(if(x > y){z+2;z;} else if (x > y) w; == null,true)
equal(if(x < y){z+2;z;} else if (x < y) {w+2;w;} == z,true)
equal(if(x > y){z+2;z;} else if (x < y) {w+2;w;} == w,true)
equal(if(x > y){z+2;z;} else if (x > y) {w+2;w;} == null,true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; xx := yy; (xx[0] == 1) and (xx[1] == 2) and (xx[2] == 3) and (xx[3] == 0)},true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; xx := (yy + 1); (xx[0] == 2) and (xx[1] == 3) and (xx[2] == 4) and (xx[3] == 0)},true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; xx := (1 + yy); (xx[0] == 2) and (xx[1] == 3) and (xx[2] == 4) and (xx[3] == 0)},true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; xx := 2*(yy + 1); (xx[0] == 4) and (xx[1] == 6) and (xx[2] == 8) and (xx[3] == 0)},true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; xx := (yy + 1)*2; (xx[0] == 4) and (xx[1] == 6) and (xx[2] == 8) and (xx[3] == 0)},true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; var zz[2] := {1,2}; xx := (yy + zz); (xx[0] == 2) and (xx[1] == 4) and (xx[2] == 0) and (xx[3] == 0)},true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; var zz[2] := {1,2}; xx := 2 * (yy + zz); (xx[0] == 4) and (xx[1] == 8) and (xx[2] == 0) and (xx[3] == 0)},true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; var zz[2] := {1,2}; xx := (yy + zz) * 2; (xx[0] == 4) and (xx[1] == 8) and (xx[2] == 0) and (xx[3] == 0)},true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; var zz[2] := {1,2}; xx := ((1 + yy) + (1 + zz)); (xx[0] == 4) and (xx[1] == 6) and (xx[2] == 0) and (xx[3] == 0)},true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; var zz[2] := {1,2}; xx := ((yy + 1) + (zz + 1)); (xx[0] == 4) and (xx[1] == 6) and (xx[2] == 0) and (xx[3] == 0)},true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; var zz[2] := {1,2}; xx := ((1 + yy) + (zz + 1)); (xx[0] == 4) and (xx[1] == 6) and (xx[2] == 0) and (xx[3] == 0)},true)
equal(~{var xx[4] := {}; var yy[3] := {1,2,3}; var zz[2] := {1,2}; xx := ((yy + 1) + (1 + zz)); (xx[0] == 4) and (xx[1] == 6) and (xx[2] == 0) and (xx[3] == 0)},true)
equal(~{var xx[10^5] := [-3]; xx := abs(xx); sum(xx) == (10^5 * 3)},true)
equal(~{var xx[10^5] := [-3]; xx := abs(xx + 1); sum(xx) == (10^5 * 2)},true)
equal(~{var xx[10^5] := [-3]; xx := abs(1 + xx); sum(xx) == (10^5 * 2)},true)
equal(~{var xx[10^5] := [-3]; xx := abs(xx) + 1; sum(xx) == (10^5 * 4)},true)
equal(~{var xx[10^5] := [-3]; xx := 1 + abs(xx); sum(xx) == (10^5 * 4)},true)
equal(~{var xx[10^5] := [-3]; xx := 2 * abs(xx + 1); sum(xx) == (10^5 * 4)},true)
equal(~{var xx[10^5] := [-3]; xx := abs(1 + xx) * 2; sum(xx) == (10^5 * 4)},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := abs(xx + yy); sum(xx) == (10^5 * 7)},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := abs(xx + yy) + 1; sum(xx) == (10^5 * 8)},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := 1 + abs(xx + yy); sum(xx) == (10^5 * 8)},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := abs((xx + 1) + (yy + 1)); sum(xx) == (10^5 * 5)},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := abs((1 + xx) + (1 + yy)); sum(xx) == (10^5 * 5)},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := abs((xx + 1) + (1 + yy)); sum(xx) == (10^5 * 5)},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := abs((1 + xx) + (yy + 1)); sum(xx) == (10^5 * 5)},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := 2 * abs((xx + 1) + (yy + 1)); sum(xx) == 10^6},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := 2 * abs((1 + xx) + (1 + yy)); sum(xx) == 10^6},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := 2 * abs((xx + 1) + (1 + yy)); sum(xx) == 10^6},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := 2 * abs((1 + xx) + (yy + 1)); sum(xx) == 10^6},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := abs((xx + 1) + (yy + 1)) * 2; sum(xx) == 10^6},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := abs((1 + xx) + (1 + yy)) * 2; sum(xx) == 10^6},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := abs((xx + 1) + (1 + yy)) * 2; sum(xx) == 10^6},true)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := abs((1 + xx) + (yy + 1)) * 2; sum(xx) == 10^6},true)

View File

@ -24,6 +24,8 @@
template <typename T>
struct myfunc : public exprtk::ifunction<T>
{
using exprtk::ifunction<T>::operator();
myfunc()
: exprtk::ifunction<T>(2)
{}

View File

@ -27,6 +27,8 @@
template <typename T>
struct rnd_01 : public exprtk::ifunction<T>
{
using exprtk::ifunction<T>::operator();
rnd_01() : exprtk::ifunction<T>(0)
{ ::srand(static_cast<unsigned int>(time(NULL))); }