X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=doc%2Frrdgraph_rpn.pod;h=ff50865c77459c839b115154c58338695d180321;hb=22018fce4f2faa4e43d85f419ea48a7d6465d5f3;hp=16c5996c4de33405d6317ade27eee328529f105f;hpb=4b4a568a4322288a7ec2e4b63e4596f76d65b76f;p=rrdtool.git diff --git a/doc/rrdgraph_rpn.pod b/doc/rrdgraph_rpn.pod index 16c5996..ff50865 100644 --- a/doc/rrdgraph_rpn.pod +++ b/doc/rrdgraph_rpn.pod @@ -1,21 +1,10 @@ -=head1 NAME +=head1 NAME -rrdtool graph - Round Robin Database tool grapher functions +rrdgraph_rpn - About RPN Math in rrdtool graph -WARNING: This is for version 1.1.x which is B> software. -The software may contain serious bugs. Some of the items -described in here may not yet exist (although this should -be mentioned) or still be in the alpha stage. As with every -other RRDtool release: use at your own risk. In contrast with -the stable version of RRDtool, this release may contain bugs -known to the authors. It is highly recommended that you subscribe -to the mailing list. +=head1 SYNOPSIS -=head1 SYNOPSYS - -IRPN expressionE> := -IvnameE>|IoperatorE>|IvalueE> -[ , IRPN expressionE>] +I:=I|I|I[,I] =head1 DESCRIPTION @@ -23,15 +12,20 @@ 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. +implicitly, so whenever you specify a number or a variable, it gets +pushed onto the stack automatically. -At the end of the calculation there should be one and exactly one +At the end of the calculation there should be one and only 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 will set variable "maximum" which you now can use in the rest +of your RRD script. + Example: C This means: push variable I, push the number 8, execute @@ -43,7 +37,7 @@ 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. +would do C without the need for parentheses. =head1 OPERATORS @@ -53,27 +47,21 @@ would do C and need no parentheses. 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 +Pops three elements from the stack. If the element popped last is 0 +(false), the value popped first is pushed back onto the stack, +otherwise the value popped second is pushed back. This does, indeed, +mean that any value other than 0 is considered to be true. Example: C should be read as C @@ -83,9 +71,10 @@ Z<> 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. +Pops two elements from the stack and returns the smaller or larger, +respectively. Note that I is larger than anything else. +If one of the input numbers is I then the result of the operation will be +I too. B @@ -109,16 +98,57 @@ B<+, -, *, /, %> Add, subtract, multiply, divide, modulo -B +B + +Sine and cosine (input in radians), log and exp (natural logarithm), +square root. -Sine, cosine (input in radians), log, exp (natural logarithm) +B + +Arctangent (output in radians). B -Round down,up to the nearest integer +Round down or up to the nearest integer. Z<> +=item Set Operations + +B + +Pop one element from the stack. This is the I of items to be sorted +(or reversed). The top I of the remaining elements are then sorted +(or reversed) in place on the stack. + +Example: C will +compute the average of the values v1 to v6 after removing the smallest and +largest. + +B + +Create a "sliding window" average of another data series. + +Usage: +CDEF:smoothed=x,1800,TREND + +This will create a half-hour (1800 second) sliding window average of x. The +average is essentially computed as shown here: + + +---!---!---!---!---!---!---!---!---> + now + delay t0 + <---------------> + delay t1 + <---------------> + delay t2 + <---------------> + + + Value at sample (t0) will be the average between (t0-delay) and (t0) + Value at sample (t1) will be the average between (t1-delay) and (t1) + Value at sample (t2) will be the average between (t2-delay) and (t2) + =item Special values B @@ -138,47 +168,41 @@ 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<> +B -=item Time +Pushes an I value if this is the first value of a data +set or otherwise the result of the vname variable at the previous time +step. This allows you to do calculations across the data. This +function cannot be used in B instructions. -Time inside RRDtool is measured in seconds since the epoch. This -epoch is defined to be S>. +B -Z<> +Pushes the number 1 if this is the first value of the data set, the +number 2 if it is the second, and so on. This special value allows +you to make calculations based on the position of the value within +the data set. This function cannot be used in B instructions. -=over 4 +Z<> -=item NOW +=item Time -Pushes the current time on the stack. +Time inside RRDtool is measured in seconds since the epoch. The +epoch is defined to be S>. -Z<> +B -=item TIME +Pushes the current time on the stack. -Pushes the time the currently processed value was taken onto the stack. +B