version 1.264, 2020/10/06 07:36:42 |
version 1.265, 2020/11/02 08:21:30 |
|
|
int use_fp = 0; |
int use_fp = 0; |
u_int prec = 0; |
u_int prec = 0; |
double mleft, mright, result; |
double mleft, mright, result; |
enum { ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULUS } operator; |
enum { ADD, |
|
SUBTRACT, |
|
MULTIPLY, |
|
DIVIDE, |
|
MODULUS, |
|
EQUAL, |
|
NOT_EQUAL, |
|
GREATER_THAN, |
|
GREATER_THAN_EQUAL, |
|
LESS_THAN, |
|
LESS_THAN_EQUAL } operator; |
|
|
if (strcmp(mexp->argv[0], "+") == 0) |
if (strcmp(mexp->argv[0], "+") == 0) |
operator = ADD; |
operator = ADD; |
|
|
else if (strcmp(mexp->argv[0], "%") == 0 || |
else if (strcmp(mexp->argv[0], "%") == 0 || |
strcmp(mexp->argv[0], "m") == 0) |
strcmp(mexp->argv[0], "m") == 0) |
operator = MODULUS; |
operator = MODULUS; |
|
else if (strcmp(mexp->argv[0], "==") == 0) |
|
operator = EQUAL; |
|
else if (strcmp(mexp->argv[0], "!=") == 0) |
|
operator = NOT_EQUAL; |
|
else if (strcmp(mexp->argv[0], ">") == 0) |
|
operator = GREATER_THAN; |
|
else if (strcmp(mexp->argv[0], "<") == 0) |
|
operator = LESS_THAN; |
|
else if (strcmp(mexp->argv[0], ">=") == 0) |
|
operator = GREATER_THAN_EQUAL; |
|
else if (strcmp(mexp->argv[0], "<=") == 0) |
|
operator = LESS_THAN_EQUAL; |
else { |
else { |
format_log(es, "expression has no valid operator: '%s'", |
format_log(es, "expression has no valid operator: '%s'", |
mexp->argv[0]); |
mexp->argv[0]); |
|
|
break; |
break; |
case MODULUS: |
case MODULUS: |
result = fmod(mleft, mright); |
result = fmod(mleft, mright); |
|
break; |
|
case EQUAL: |
|
result = fabs(mleft - mright) < 1e-9; |
|
break; |
|
case NOT_EQUAL: |
|
result = fabs(mleft - mright) > 1e-9; |
|
break; |
|
case GREATER_THAN: |
|
result = (mleft > mright); |
|
break; |
|
case GREATER_THAN_EQUAL: |
|
result = (mleft >= mright); |
|
break; |
|
case LESS_THAN: |
|
result = (mleft < mright); |
|
break; |
|
case LESS_THAN_EQUAL: |
|
result = (mleft > mright); |
break; |
break; |
} |
} |
if (use_fp) |
if (use_fp) |