Clearer explanation on which paths are permitted when -B is supplied -- kevin
[rrdtool.git] / doc / rrdgraph_rpn.pod
index 1aaef65..aabd738 100644 (file)
@@ -15,11 +15,12 @@ takes as many elements from the stack as needed. Pushing is done
 implicitly, so whenever you specify a number or a variable, it gets
 pushed onto the stack 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<vname>.  For B<CDEF> instructions,
-the stack is processed for each data point on the graph. B<VDEF>
-instructions work on an entire data set in one run.
+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<vname>.  For B<CDEF> instructions, the stack is processed for each
+data point on the graph. B<VDEF> instructions work on an entire data set in
+one run. Note, that currently B<VDEF> instructions only support a limited
+list of functions.
 
 Example: C<VDEF:maximum=mydata,MAXIMUM>
 
 
 Example: C<VDEF:maximum=mydata,MAXIMUM>
 
@@ -29,7 +30,7 @@ of your RRD script.
 Example: C<CDEF:mydatabits=mydata,8,*>
 
 This means:  push variable I<mydata>, push the number 8, execute
 Example: C<CDEF:mydatabits=mydata,8,*>
 
 This means:  push variable I<mydata>, push the number 8, execute
-the operator I<+>. The operator needs two elements and uses those
+the operator I<*>. The operator needs two elements and uses those
 to return one value.  This value is then stored in I<mydatabits>.
 As you may have guessed, this instruction means nothing more than
 I<mydatabits = mydata * 8>.  The real power of B<RPN> lies in the
 to return one value.  This value is then stored in I<mydatabits>.
 As you may have guessed, this instruction means nothing more than
 I<mydatabits = mydata * 8>.  The real power of B<RPN> lies in the
@@ -98,6 +99,11 @@ B<+, -, *, /, %>
 
 Add, subtract, multiply, divide, modulo
 
 
 Add, subtract, multiply, divide, modulo
 
+B<ADDNAN>
+
+NAN-safe addition. If one parameter is NAN/UNKNOWN it'll be treated as
+zero. If both parameters are NAN/UNKNOWN, NAN/UNKNOWN will be returned.
+
 B<SIN, COS, LOG, EXP, SQRT>
 
 Sine and cosine (input in radians), log and exp (natural logarithm),
 B<SIN, COS, LOG, EXP, SQRT>
 
 Sine and cosine (input in radians), log and exp (natural logarithm),
@@ -126,6 +132,10 @@ B<DEG2RAD, RAD2DEG>
 
 Convert angle in degrees to radians, or radians to degrees.
 
 
 Convert angle in degrees to radians, or radians to degrees.
 
+B<ABS>
+
+Take the absolute value.
+
 =item Set Operations
 
 B<SORT, REV>
 =item Set Operations
 
 B<SORT, REV>
@@ -138,7 +148,14 @@ Example: C<CDEF:x=v1,v2,v3,v4,v5,v6,6,SORT,POP,5,REV,POP,+,+,+,4,/> will
 compute the average of the values v1 to v6 after removing the smallest and
 largest.
 
 compute the average of the values v1 to v6 after removing the smallest and
 largest.
 
-B<TREND>
+B<AVG>
+
+Pop one element (I<count>) from the stack. Now pop I<count> elements and build the
+average, ignoring all UNKNOWN values in the process.
+
+Example: C<CDEF:x=a,b,c,d,4,AVG>
+
+B<TREND, TRENDNAN>
 
 Create a "sliding window" average of another data series.
 
 
 Create a "sliding window" average of another data series.
 
@@ -162,6 +179,12 @@ average is essentially computed as shown here:
      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)
 
      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)
 
+TRENDNAN is - in contrast to TREND - NAN-safe. If you use TREND and one 
+source value is NAN the complete sliding window is affected. The TRENDNAN 
+operation ignores all NAN-values in a sliding window and computes the 
+average of the remaining values.
+
+
 =item Special values
 
 B<UNKN>
 =item Special values
 
 B<UNKN>
@@ -195,8 +218,6 @@ 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<VDEF> instructions.
 
 you to make calculations based on the position of the value within
 the data set. This function cannot be used in B<VDEF> instructions.
 
-Z<>
-
 =item Time
 
 Time inside RRDtool is measured in seconds since the epoch. The
 =item Time
 
 Time inside RRDtool is measured in seconds since the epoch. The
@@ -230,7 +251,7 @@ Z<>
 
 =head1 VARIABLES
 
 
 =head1 VARIABLES
 
-These operators work only on B<VDEF> statements.
+These operators work only on B<VDEF> statements. Note that currently ONLY these work for B<VDEF>.
 
 =over 4
 
 
 =over 4
 
@@ -241,6 +262,12 @@ the first occurrence of that value in the time component.
 
 Example: C<VDEF:avg=mydata,AVERAGE>
 
 
 Example: C<VDEF:avg=mydata,AVERAGE>
 
+=item STDEV
+
+Returns the standard deviation of the values.
+
+Example: C<VDEF:stdev=mydata,STDEV>
+
 =item LAST, FIRST
 
 Return the last/first value including its time.  The time for
 =item LAST, FIRST
 
 Return the last/first value including its time.  The time for
@@ -297,6 +324,6 @@ Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
 
 =head1 AUTHOR
 
 
 =head1 AUTHOR
 
-Program by Tobias Oetiker E<lt>oetiker@ee.ethz.chE<gt>
+Program by Tobias Oetiker E<lt>tobi@oetiker.chE<gt>
 
 This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
 
 This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>