=head1 DESCRIPTION
If you have ever used a traditional HP calculator you already know
-B<RPN>. The idea behind B<RPN> is that you have a stack and push
+B<RPN> (Reverse Polish Notation).
+The idea behind B<RPN> 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
implicitly, so whenever you specify a number or a variable, it gets
Pop two elements from the stack, compare them for the selected condition
and return 1 for true or 0 for false. Comparing an I<unknown> or an
-I<infinite> value will always result in 0 (false).
+I<infinite> value will result in I<unknown> returned ... which will also be
+treated as false by the B<IF> call.
B<UN, ISINF>
Example: C<CDEF:x=a,b,c,d,4,AVG>
+B<MEDIAN>
+
+pop one element (I<count>) from the stack. Now pop I<count> elements and find
+the median, ignoring all UNKNOWN values in the process. If there are an even
+number of non-UNKNOWN values, the average of the middle two will be pushed on
+the stack.
+
+Example: C<CDEF:x=a,b,c,d,4,MEDIAN>
+
+
B<TREND, TRENDNAN>
Create a "sliding window" average of another data series.
TICK:exceeds#aa000080:1
Note: Experience has shown that a factor between 3 and 5 to scale sigma is a good
-discriminator to detect abnormal behaviour. This obviously depends also on the type
+discriminator to detect abnormal behavior. This obviously depends also on the type
of data and how "noisy" the data series is.
This prediction can only be used for short term extrapolations - say a few days into the future-
=item LAST, FIRST
-Return the last/first value including its time. The time for
-FIRST is actually the start of the corresponding interval, whereas
-LAST returns the end of the corresponding interval.
+Return the last/first non-nan or infinite value for the selected data
+stream, including its timestamp.
Example: C<VDEF:first=mydata,FIRST>
=item TOTAL
Returns the rate from each defined time slot multiplied with the
-step size. This can, for instance, return total bytes transfered
+step size. This can, for instance, return total bytes transferred
when you have logged bytes per second. The time component returns
the number of seconds.
Example: C<VDEF:total=mydata,TOTAL>
-=item PERCENT
+=item PERCENT, PERCENTNAN
This should follow a B<DEF> or B<CDEF> I<vname>. The I<vname> is popped,
another number is popped which is a certain percentage (0..100). The
data set is then sorted and the value returned is chosen such that
I<percentage> percent of the values is lower or equal than the result.
+For PERCENTNAN I<Unknown> values are ignored, but for PERCENT
I<Unknown> values are considered lower than any finite number for this
purpose so if this operator returns an I<unknown> you have quite a lot
of them in your data. B<Inf>inite numbers are lesser, or more, than the
(NaN E<lt> -INF E<lt> finite values E<lt> INF)
Example: C<VDEF:perc95=mydata,95,PERCENT>
+ C<VDEF:percnan95=mydata,95,PERCENTNAN>
=item LSLSLOPE, LSLINT, LSLCORREL
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@vandenbogaerdt.nlE<gt>
+with corrections and/or additions by several people