mirror of
https://github.com/eledio-devices/thirdparty-tinyexpr.git
synced 2025-10-30 16:15:41 +01:00
Merge pull request #65 from codeplea/temp
add test cases, general cleanup
This commit is contained in:
9
Makefile
9
Makefile
@@ -1,16 +1,17 @@
|
||||
CC = gcc
|
||||
CCFLAGS = -ansi -Wall -Wshadow -O2
|
||||
LFLAGS = -lm
|
||||
|
||||
.PHONY = all clean
|
||||
|
||||
all: test test_pr bench example example2 example3
|
||||
all: smoke smoke_pr bench example example2 example3
|
||||
|
||||
|
||||
test: test.c tinyexpr.c
|
||||
smoke: smoke.c tinyexpr.c
|
||||
$(CC) $(CCFLAGS) -o $@ $^ $(LFLAGS)
|
||||
./$@
|
||||
|
||||
test_pr: test.c tinyexpr.c
|
||||
smoke_pr: smoke.c tinyexpr.c
|
||||
$(CC) $(CCFLAGS) -DTE_POW_FROM_RIGHT -DTE_NAT_LOG -o $@ $^ $(LFLAGS)
|
||||
./$@
|
||||
|
||||
@@ -30,4 +31,4 @@ example3: example3.o tinyexpr.o
|
||||
$(CC) -c $(CCFLAGS) $< -o $@
|
||||
|
||||
clean:
|
||||
rm -f *.o *.exe example example2 example3 bench test_pr test
|
||||
rm -f *.o *.exe example example2 example3 bench smoke_pr smoke
|
||||
|
||||
13
benchmark.c
13
benchmark.c
@@ -96,6 +96,14 @@ double a5(double a) {
|
||||
return a+5;
|
||||
}
|
||||
|
||||
double a55(double a) {
|
||||
return 5+a+5;
|
||||
}
|
||||
|
||||
double a5abs(double a) {
|
||||
return fabs(a+5);
|
||||
}
|
||||
|
||||
double a52(double a) {
|
||||
return (a+5)*2;
|
||||
}
|
||||
@@ -115,8 +123,11 @@ double al(double a) {
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
|
||||
bench("sqrt(a^1.5+a^2.5)", as);
|
||||
bench("a+5", a5);
|
||||
bench("5+a+5", a55);
|
||||
bench("abs(a+5)", a5abs);
|
||||
|
||||
bench("sqrt(a^1.5+a^2.5)", as);
|
||||
bench("a+(5*2)", a10);
|
||||
bench("(a+5)*2", a52);
|
||||
bench("(1/(a+1)+2/(a+2)+3/(a+3))", al);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* TINYEXPR - Tiny recursive descent parser and evaluation engine in C
|
||||
*
|
||||
* Copyright (c) 2015, 2016 Lewis Van Winkle
|
||||
* Copyright (c) 2015-2020 Lewis Van Winkle
|
||||
*
|
||||
* http://CodePlea.com
|
||||
*
|
||||
@@ -578,23 +578,36 @@ void test_pow() {
|
||||
{"-2^2", "-(2^2)"},
|
||||
{"--2^2", "(2^2)"},
|
||||
{"---2^2", "-(2^2)"},
|
||||
{"-(2)^2", "-(2^2)"},
|
||||
{"-(2*1)^2", "-(2^2)"},
|
||||
{"-2^2", "-4"},
|
||||
{"2^1.1^1.2^1.3", "2^(1.1^(1.2^1.3))"},
|
||||
{"-a^b", "-(a^b)"},
|
||||
{"-a^-b", "-(a^-b)"}
|
||||
{"-a^-b", "-(a^-b)"},
|
||||
{"1^0", "1"},
|
||||
{"(1)^0", "1"},
|
||||
{"-(2)^2", "-(2^2)"}
|
||||
/* TODO POW FROM RIGHT IS STILL BUGGY
|
||||
{"(-2)^2", "4"},
|
||||
{"(-1)^0", "1"},
|
||||
{"(-5)^0", "1"},
|
||||
{"-2^-3^-4", "-(2^(-(3^-4)))"}*/
|
||||
};
|
||||
#else
|
||||
test_equ cases[] = {
|
||||
{"2^3^4", "(2^3)^4"},
|
||||
{"-2^2", "(-2)^2"},
|
||||
{"(-2)^2", "4"},
|
||||
{"--2^2", "2^2"},
|
||||
{"---2^2", "(-2)^2"},
|
||||
{"-2^2", "4"},
|
||||
{"2^1.1^1.2^1.3", "((2^1.1)^1.2)^1.3"},
|
||||
{"-a^b", "(-a)^b"},
|
||||
{"-a^-b", "(-a)^(-b)"}
|
||||
{"-a^-b", "(-a)^(-b)"},
|
||||
{"1^0", "1"},
|
||||
{"(1)^0", "1"},
|
||||
{"(-1)^0", "1"},
|
||||
{"(-5)^0", "1"},
|
||||
{"-2^-3^-4", "((-2)^(-3))^(-4)"}
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -620,7 +633,11 @@ void test_pow() {
|
||||
double r2 = te_eval(ex2);
|
||||
|
||||
fflush(stdout);
|
||||
const int olfail = lfails;
|
||||
lfequal(r1, r2);
|
||||
if (olfail != lfails) {
|
||||
printf("Failed expression: %s <> %s\n", expr1, expr2);
|
||||
}
|
||||
|
||||
te_free(ex1);
|
||||
te_free(ex2);
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* TINYEXPR - Tiny recursive descent parser and evaluation engine in C
|
||||
*
|
||||
* Copyright (c) 2015-2018 Lewis Van Winkle
|
||||
* Copyright (c) 2015-2020 Lewis Van Winkle
|
||||
*
|
||||
* http://CodePlea.com
|
||||
*
|
||||
@@ -418,7 +418,6 @@ static te_expr *factor(state *s) {
|
||||
te_expr *ret = power(s);
|
||||
|
||||
int neg = 0;
|
||||
te_expr *insertion = 0;
|
||||
|
||||
if (ret->type == (TE_FUNCTION1 | TE_FLAG_PURE) && ret->function == negate) {
|
||||
te_expr *se = ret->parameters[0];
|
||||
@@ -427,6 +426,8 @@ static te_expr *factor(state *s) {
|
||||
neg = 1;
|
||||
}
|
||||
|
||||
te_expr *insertion = 0;
|
||||
|
||||
while (s->type == TOK_INFIX && (s->function == pow)) {
|
||||
te_fun2 t = s->function;
|
||||
next_token(s);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* TINYEXPR - Tiny recursive descent parser and evaluation engine in C
|
||||
*
|
||||
* Copyright (c) 2015-2018 Lewis Van Winkle
|
||||
* Copyright (c) 2015-2020 Lewis Van Winkle
|
||||
*
|
||||
* http://CodePlea.com
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user