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

This commit is contained in:
Arash Partow
2021-01-01 00:00:00 +00:00
committed by ArashPartow
parent 93a9f44f99
commit 17ba4d15e2
26 changed files with 4516 additions and 3259 deletions

View File

@ -8093,4 +8093,214 @@ equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := 2 * abs((1 + xx) + (yy
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)
equal(~{var xx[10^5] := [-3]; var yy[10^5] := [-4]; xx := abs((1 + xx) + (yy + 1)) * 2; sum(xx) == 10^6},true)
equal('abcd' like 'abcd*' ,true )
equal('abcd' like 'abc*' ,true )
equal('abcd' like 'ab*' ,true )
equal('abcd' like 'a*' ,true )
equal('abcd' like 'abc?' ,true )
equal('a' like 'a*' ,true )
equal('ab' like 'a*' ,true )
equal('abcd' like 'abcd*' ,true )
equal('' like '' ,true )
equal('abcd' like 'abcd' ,true )
equal('abcd' like 'abc*' ,true )
equal('abcd' like '*bcd' ,true )
equal('abcd' like 'abc?' ,true )
equal('abcd' like '?bcd' ,true )
equal('abcd' like 'ab?d' ,true )
equal('abcd' like 'ab*d' ,true )
equal('abcd' like 'a?cd' ,true )
equal('abcd' like 'a*cd' ,true )
equal('abcd' like 'a??d' ,true )
equal('abcd' like 'a*?d' ,true )
equal('abcd' like '*bc*' ,true )
equal('abcd' like '?bc?' ,true )
equal('abcd' like '????' ,true )
equal('abcd' like 'a???' ,true )
equal('abcd' like 'ab??' ,true )
equal('abcd' like 'abc?' ,true )
equal('abcd' like '???d' ,true )
equal('abcd' like '??cd' ,true )
equal('abcd' like '?bcd' ,true )
equal('abcd' like '?b?d' ,true )
equal('abcd' like 'a?c?' ,true )
equal('abcd' like 'a??d' ,true )
equal('abcd' like '?bc?' ,true )
equal('abcd' like 'ab**' ,true )
equal('abcd' like 'ab*?' ,true )
equal('abcd' like 'a***' ,true )
equal('abcd' like '**cd' ,true )
equal('abcd' like '*?cd' ,true )
equal('abcd' like '***d' ,true )
equal('abcd' like '?*?d' ,true )
equal('abcd' like '?*?d' ,true )
equal('abcd' like '*bc*' ,true )
equal('abcd' like '*bc?' ,true )
equal('abcd' like '*b??' ,true )
equal('abcd' like '?bc*' ,true )
equal('abcd' like '??c*' ,true )
equal('abcd' like '*b?*' ,true )
equal('abcd' like '*b*d' ,true )
equal('abcd' like 'a*c*' ,true )
equal('abcd' like '?*cd' ,true )
equal('abcd' like 'ab?*' ,true )
equal('abcd' like 'ab*?' ,true )
equal('abcd' like 'a?*d' ,true )
equal('ab' like 'a*' ,true )
equal('ab' like 'a?' ,true )
equal('a' like 'a*' ,true )
equal('xalabcd' like '*abcd*' ,true )
equal('xablabcd' like '*abcd*' ,true )
equal('xabclabcd' like '*abcd*' ,true )
equal('aaaaa' like '*aa?' ,true )
equal('abcd' ilike 'abcd*' ,true )
equal('abcd' ilike 'abc*' ,true )
equal('abcd' ilike 'ab*' ,true )
equal('abcd' ilike 'a*' ,true )
equal('abcd' ilike 'abc?' ,true )
equal('a' ilike 'a*' ,true )
equal('ab' ilike 'a*' ,true )
equal('abcd' ilike 'abcd*' ,true )
equal('' ilike '' ,true )
equal('abcd' ilike 'abcd' ,true )
equal('abcd' ilike 'abc*' ,true )
equal('abcd' ilike '*bcd' ,true )
equal('abcd' ilike 'abc?' ,true )
equal('abcd' ilike '?bcd' ,true )
equal('abcd' ilike 'ab?d' ,true )
equal('abcd' ilike 'ab*d' ,true )
equal('abcd' ilike 'a?cd' ,true )
equal('abcd' ilike 'a*cd' ,true )
equal('abcd' ilike 'a??d' ,true )
equal('abcd' ilike 'a*?d' ,true )
equal('abcd' ilike '*bc*' ,true )
equal('abcd' ilike '?bc?' ,true )
equal('abcd' ilike '????' ,true )
equal('abcd' ilike 'a???' ,true )
equal('abcd' ilike 'ab??' ,true )
equal('abcd' ilike 'abc?' ,true )
equal('abcd' ilike '???d' ,true )
equal('abcd' ilike '??cd' ,true )
equal('abcd' ilike '?bcd' ,true )
equal('abcd' ilike '?b?d' ,true )
equal('abcd' ilike 'a?c?' ,true )
equal('abcd' ilike 'a??d' ,true )
equal('abcd' ilike '?bc?' ,true )
equal('abcd' ilike 'ab**' ,true )
equal('abcd' ilike 'ab*?' ,true )
equal('abcd' ilike 'a***' ,true )
equal('abcd' ilike '**cd' ,true )
equal('abcd' ilike '*?cd' ,true )
equal('abcd' ilike '***d' ,true )
equal('abcd' ilike '?*?d' ,true )
equal('abcd' ilike '?*?d' ,true )
equal('abcd' ilike '*bc*' ,true )
equal('abcd' ilike '*bc?' ,true )
equal('abcd' ilike '*b??' ,true )
equal('abcd' ilike '?bc*' ,true )
equal('abcd' ilike '??c*' ,true )
equal('abcd' ilike '*b?*' ,true )
equal('abcd' ilike '*b*d' ,true )
equal('abcd' ilike 'a*c*' ,true )
equal('abcd' ilike '?*cd' ,true )
equal('abcd' ilike 'ab?*' ,true )
equal('abcd' ilike 'ab*?' ,true )
equal('abcd' ilike 'a?*d' ,true )
equal('ab' ilike 'a*' ,true )
equal('ab' ilike 'a?' ,true )
equal('a' ilike 'a*' ,true )
equal('xalabcd' ilike '*abcd*',true )
equal('xablabcd' ilike '*abcd*',true )
equal('xabclabcd' ilike '*abcd*',true )
equal('aaaaa' ilike '*aa?' ,true )
equal('abcd' like 'abcd?' ,false)
equal('abcd' like 'abc??' ,false)
equal('abcd' like 'ab???' ,false)
equal('abcd' like 'a????' ,false)
equal('abcd' like '?????' ,false)
equal('a' like 'a?' ,false)
equal('abcd' like 'xyzw' ,false)
equal('abcd' like 'xyz' ,false)
equal('abc' like 'xyzw' ,false)
equal('abcd' like 'ab?' ,false)
equal('abcd' like 'a?' ,false)
equal('abcd' ilike 'abcd?' ,false)
equal('abcd' ilike 'abc??' ,false)
equal('abcd' ilike 'ab???' ,false)
equal('abcd' ilike 'a????' ,false)
equal('abcd' ilike '?????' ,false)
equal('a' ilike 'a?' ,false)
equal('abcd' ilike 'xyzw' ,false)
equal('abcd' ilike 'xyz' ,false)
equal('abc' ilike 'xyzw' ,false)
equal('abcd' ilike 'ab?' ,false)
equal('abcd' ilike 'a?' ,false)
equal(true, ~{var s := ~{var n := 1; var m := 2; if (n < m) 'n < m'; else 'n >= m'; }; (s == 'n < m')})
equal(true, ~{var s := ~{var n := 1; var m := 2; if (n > m) 'n <= m'; else 'n > m'; }; (s == 'n > m')})
equal(true, ~{var s := ~{var n := 1; var m := 2; if (n < m) 'n < m'; else 'n >' + '= m'; }; (s == 'n < m')})
equal(true, ~{var s := ~{var n := 1; var m := 2; if (n < m) 'n ' + '< m'; else 'n >= m'; }; (s == 'n < m')})
equal(true, ~{var s := ~{var n := 1; var m := 2; if (n > m) 'n <= m'; else 'n ' + '> m'; }; (s == 'n > m')})
equal(true, ~{var s := ~{var n := 1; var m := 2; if (n > m) 'n <' + '= m'; else 'n > m'; }; (s == 'n > m')})
equal(true, ~{var s := ~{var n := 1; var m := 2; var r0 := 'n < m'; var r1 := 'n >= m'; if (n < m) r0; else r1; }; (s == 'n < m')})
equal(true, ~{var s := ~{var n := 1; var m := 2; var r0 := 'n < m'; var r1 := 'n >= m'; if (n < m) r0 + ''; else r1 + ''; }; (s == 'n < m')})
equal(true, ~{var s := ~{var n := 1; var m := 2; var r0 := 'n < m'; var r1 := 'n >= m'; if (n < m) '' + r0; else '' + r1; }; (s == 'n < m')})
equal(111,~{var n:=1; switch { case n > 0: 111; default: 222; }})
equal(222,~{var n:=0; switch { case n > 0: 111; default: 222; }})
equal(111,~{var n:=0; switch { case true : 111; default: 222; }})
equal(222,~{var n:=0; switch { case false: 111; default: 222; }})
equal(111,~{var n:=1; switch { default: 222; case n > 0: 111; }})
equal(222,~{var n:=0; switch { default: 222; case n > 0: 111; }})
equal(111,~{var n:=0; switch { default: 222; case true : 111; }})
equal(222,~{var n:=0; switch { default: 222; case false: 111; }})
equal(111,~{var n:=1; switch { case n == 1: 111; case n == 2: 222; default: 333; }})
equal(111,~{var n:=1; switch { case n == 1: 111; default: 333; case n == 2: 222; }})
equal(111,~{var n:=1; switch { default: 333; case n == 1: 111; case n == 2: 222; }})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; if (1 < 2, v0, v1) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; if (1 > 2, v0, v1) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; if (1 < 2, v0 - v1, v1 - v0) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; if (1 > 2, v0 - v1, v1 - v0) == (v1 - v0)})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; if (x_ < y_, v0, v1) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; if (x_ > y_, v0, v1) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; if (x_ < y_, v0 - v1, v1 - v0) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; if (x_ > y_, v0 - v1, v1 - v0) == (v1 - v0)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; if (1 < 2, v0, v1) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; if (1 > 2, v0, v1) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; if (1 < 2, v0 - v1, v1 - v0) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; if (1 > 2, v0 - v1, v1 - v0) == (v1 - v0)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; if (x_ < y_, v0, v1) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; if (x_ > y_, v0, v1) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; if (x_ < y_, v0 - v1, v1 - v0) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; if (x_ > y_, v0 - v1, v1 - v0) == (v1 - v0)})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; (if (1 < 2) v0; else v1;) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; (if (1 > 2) v0; else v1;) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; (if (1 < 2) v0 - v1; else v1 - v0;) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; (if (1 > 2) v0 - v1; else v1 - v0;) == (v1 - v0)})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; (if (x_ < y_) v0; else v1;) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; (if (x_ > y_) v0; else v1;) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; (if (x_ < y_) v0 - v1; else v1 - v0;) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; (if (x_ > y_) v0 - v1; else v1 - v0;) == (v1 - v0)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; (if (1 < 2) v0; else v1;) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; (if (1 > 2) v0; else v1;) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; (if (1 < 2) v0 - v1; else v1 - v0;) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; (if (1 > 2) v0 - v1; else v1 - v0;) == (v1 - v0)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; (if (x_ < y_) v0; else v1;) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; (if (x_ > y_) v0; else v1;) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; (if (x_ < y_) v0 - v1; else v1 - v0;) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; (if (x_ > y_) v0 - v1; else v1 - v0;) == (v1 - v0)})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; ((1 < 2) ? v0 : v1) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; ((1 > 2) ? v0 : v1) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; ((1 < 2) ? v0 - v1 : v1 - v0) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; ((1 > 2) ? v0 - v1 : v1 - v0) == (v1 - v0)})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; ((x_ < y_) ? v0 : v1) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; ((x_ > y_) ? v0 : v1) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; ((x_ < y_) ? v0 - v1 : v1 - v0) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[3] := {7,8,9}; var x_ := 1; var y_ := 2; ((x_ > y_) ? v0 - v1 : v1 - v0) == (v1 - v0)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; ((1 < 2) ? v0 : v1) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; ((1 > 2) ? v0 : v1) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; ((1 < 2) ? v0 - v1 : v1 - v0) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; ((1 > 2) ? v0 - v1 : v1 - v0) == (v1 - v0)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; ((x_ < y_) ? v0 : v1) == v0})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; ((x_ > y_) ? v0 : v1) == v1})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; ((x_ < y_) ? v0 - v1 : v1 - v0) == (v0 - v1)})
equal(true,~{var v0[3] := {1,2,3}; var v1[4] := {6,7,8,9}; var x_ := 1; var y_ := 2; ((x_ > y_) ? v0 - v1 : v1 - v0) == (v1 - v0)})