X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;ds=sidebyside;f=doc%2Frrdgraph_rpn.pod;h=dfc9a0bda903e77d6538fa7cffe38eb079a4376e;hb=e9fb580fcf041573054e5bcf2184fa7811f9dd59;hp=16c5996c4de33405d6317ade27eee328529f105f;hpb=4b4a568a4322288a7ec2e4b63e4596f76d65b76f;p=rrdtool.git diff --git a/doc/rrdgraph_rpn.pod b/doc/rrdgraph_rpn.pod index 16c5996..dfc9a0b 100644 --- a/doc/rrdgraph_rpn.pod +++ b/doc/rrdgraph_rpn.pod @@ -1,21 +1,10 @@ =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,14 +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 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. Note, that currently B instructions only support a limited +list of functions. -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 will set variable "maximum" which you now can use in the rest +of your RRD script. Example: C @@ -43,7 +38,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 +48,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 @@ -81,11 +70,12 @@ Z<> =item Comparing values -B +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,15 +99,69 @@ B<+, -, *, /, %> Add, subtract, multiply, divide, modulo -B +B + +Sine and cosine (input in radians), log and exp (natural logarithm), +square root. + +B -Sine, cosine (input in radians), log, exp (natural logarithm) +Arctangent (output in radians). + +B + +Arctangent of y,x components (output in radians). +This pops one element from the stack, the x (cosine) component, and then +a second, which is the y (sine) component. +It then pushes the arctangent of their ratio, resolving the ambiguity between +quadrants. + +Example: C will convert C +components into an angle in degrees. B -Round down,up to the nearest integer +Round down or up to the nearest integer. -Z<> +B + +Convert angle in degrees to radians, or radians to degrees. + +=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 @@ -138,47 +182,39 @@ 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 +B -Time inside RRDtool is measured in seconds since the epoch. This -epoch is defined to be S>. +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. -Z<> +B -=over 4 +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. -=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