X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=doc%2Frrdgraph_rpn.src;fp=doc%2Frrdgraph_rpn.src;h=3278f84179cad1740956f1a8bf53682d9d0ebefc;hp=0000000000000000000000000000000000000000;hb=b7c278771851b0dfad0daf1c817fbc93316ef96e;hpb=ffbbe12c9849a0750836c30fdb7306e83107dec4 diff --git a/doc/rrdgraph_rpn.src b/doc/rrdgraph_rpn.src new file mode 100644 index 0000000..3278f84 --- /dev/null +++ b/doc/rrdgraph_rpn.src @@ -0,0 +1,219 @@ +=include name + +=head1 SYNOPSYS + +IRPN expressionE> := +IvnameE>|IoperatorE>|IvalueE> +[ , IRPN expressionE>] + +=head1 DESCRIPTION + +If you have ever used a traditional HP calculator you already know +B. The idea behind B is that you have a stack and push +your data onto this stack. Whenever you execute an operation, it +takes as many elements from the stack as needed. Pushing is done +implicit so whenever you specify a number or a variable, it gets +pushed automatically. + +At the end of the calculation there should be one and exactly one +value left on the stack. This is the outcome of the function and +this is what is put into the I. For B instructions, +the stack is processed for each data point on the graph. B +instructions work on an entire data set in one run. + +Example: C + +This means: push variable I, push the number 8, execute +the operator I<+>. The operator needs two elements and uses those +to return one value. This value is then stored in I. +As you may have guessed, this instruction means nothing more than +I. The real power of B lies in the +fact that it is always clear in which order to process the input. +For expressions like C you need to multiply 3 with +5 first before you add I to get I. However, with parentheses +you could change this order: C. In B, you +would do C and need no parentheses. + +=head1 OPERATORS + +=over 4 + +=item Boolean operators + +B + +I + +Pop two elements from the stack, compare them for the selected condition +and return 1 for true or 0 for false. Comparing an I or an +I value will always result in 0 (false). + +B + +I + +Pop one element from the stack, compare this to I respectively +to I. Returns 1 for true or 0 for false. + +B + +Pops three elements from the stack. If the last element is 0 (false), +the first value is pushed back onto the stack, otherwise the second +popped value is pushed back. This does, indeed, mean that any value +other than 0 is considered true. +I + +Example: C should be read as C + +Z<> + +=item Comparing values + +B + +Pops two elements from the stack and returns the lesser or larger. +The two numbers shouldn't be I or I, if they are +that value is pushed back onto the stack as the result. + +B + +Pops two elements from the stack and uses them to define a range. +Then it pops another element and if it falls inside the range, it +is pushed back. If not, an I is pushed. + +The range defined includes the two boundaries (so: a number equal +to one of the boundaries will be pushed back). If any of the three +numbers involved is either I or I this function +will always return an I + +Example: C will return I if +alpha is lower than 0 or if it is higher than 100. + +Z<> + +=item Arithmetics + +B<+, -, *, /, %> + +Add, subtract, multiply, divide, modulo + +B + +Sine, cosine (input in radians), log, exp (natural logarithm) + +B + +Round down,up to the nearest integer + +Z<> + +=item Special values + +B + +Pushes an unknown value on the stack + +B + +Pushes a positive or negative infinite value on the stack. When +such a value is graphed, it appears at the top or bottom of the +graph, no matter what the actual value on the y-axis is. + +B + +Pushes an I value if this is the first value of a data +set or otherwise the result of this B at the previous time +step. This allows you to do calculations across the data. This +function cannot be used in B instructions. + +Z<> + +=item Time + +Time inside RRDtool is measured in seconds since the epoch. This +epoch is defined to be S>. + +Z<> + +=over 4 + +=item NOW + +Pushes the current time on the stack. + +Z<> + +=item TIME + +Pushes the time the currently processed value was taken onto the stack. + +Z<> + +=item LTIME + +Takes the time as defined by B