projects
/
rrdtool.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
new operator ABS added --
[rrdtool.git]
/
src
/
rrd_rpncalc.c
diff --git
a/src/rrd_rpncalc.c
b/src/rrd_rpncalc.c
index
f8759f8
..
972f486
100644
(file)
--- a/
src/rrd_rpncalc.c
+++ b/
src/rrd_rpncalc.c
@@
-162,6
+162,7
@@
void rpn_compact2str(rpn_cdefds_t *rpnc,ds_def_t *ds_def,char **str)
add_op(OP_RAD2DEG,RAD2DEG)
add_op(OP_DEG2RAD,DEG2RAD)
add_op(OP_AVG,AVG)
add_op(OP_RAD2DEG,RAD2DEG)
add_op(OP_DEG2RAD,DEG2RAD)
add_op(OP_AVG,AVG)
+ add_op(OP_ABS,ABS)
#undef add_op
}
(*str)[offset] = '\0';
#undef add_op
}
(*str)[offset] = '\0';
@@
-340,6
+341,7
@@
rpn_parse(void *key_hash,const char *const expr_const,long (*lookup)(void *,char
match_op(OP_RAD2DEG,RAD2DEG)
match_op(OP_DEG2RAD,DEG2RAD)
match_op(OP_AVG,AVG)
match_op(OP_RAD2DEG,RAD2DEG)
match_op(OP_DEG2RAD,DEG2RAD)
match_op(OP_AVG,AVG)
+ match_op(OP_ABS,ABS)
#undef match_op
#undef match_op
@@
-771,7
+773,7
@@
rpn_calc(rpnp_t *rpnp, rpnstack_t *rpnstack, long data_idx,
count++;
sum+=val;
}
count++;
sum+=val;
}
- /
/ now push the result bavk on stack
+ /
* now push the result back on stack */
if (count>0) {
rpnstack -> s[++stptr]=sum/count;
} else {
if (count>0) {
rpnstack -> s[++stptr]=sum/count;
} else {
@@
-779,6
+781,10
@@
rpn_calc(rpnp_t *rpnp, rpnstack_t *rpnstack, long data_idx,
}
}
break;
}
}
break;
+ case OP_ABS:
+ stackunderflow(0);
+ rpnstack -> s[stptr] = fabs(rpnstack -> s[stptr]);
+ break;
case OP_END:
break;
}
case OP_END:
break;
}