Skip to content

Commit

Permalink
extra test cases and general cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
codeplea committed Oct 2, 2020
1 parent 0028d03 commit a8f9bd9
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 8 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
CC = gcc
CCFLAGS = -ansi -Wall -Wshadow -O2
LFLAGS = -lm

Expand Down
13 changes: 12 additions & 1 deletion benchmark.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand All @@ -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);
Expand Down
25 changes: 21 additions & 4 deletions test.c
Original file line number Diff line number Diff line change
@@ -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
*
Expand Down Expand Up @@ -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

Expand All @@ -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);
Expand Down
5 changes: 3 additions & 2 deletions tinyexpr.c
Original file line number Diff line number Diff line change
@@ -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
*
Expand Down Expand Up @@ -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];
Expand All @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion tinyexpr.h
Original file line number Diff line number Diff line change
@@ -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
*
Expand Down

0 comments on commit a8f9bd9

Please sign in to comment.