Mike Slifcak <slif with bellsouth.net> many rrdtool-1.1.x fixes
Oleg Cherevko <olwi with icyb.kiev.ua>
Otmar Lendl <O.Lendl with Austria.EU.net> (lots of bugfixes)
+Pablo Sanchez <pablo at blueoakdb.com> (CDEF vs VDEF)
Patrick Cherry <patrick with bytemark.co.uk>
Paul Joslin <Paul.Joslin with sdrc.com>
Peter Speck <speck with vitality.dk> eps/svg/pdf file format code in rrdtool-1.x
Example: C<CDEF:mydatabits=mydata,8,*>
+=head1 About CDEF versus VDEF
+
+At some point in processing, B<RRDtool> has gathered an array of rates
+ready to display.
+
+B<CDEF> works on such an array. For example, I<CDEF:new=ds0,8,*>
+would multiply each of the array members by eight (probably
+transforming bytes into bits). The result is an array containing the
+new values.
+
+B<VDEF> also works on such an array but in a different way. For
+example, I<VDEF:max=ds0,MAXIMUM> would scan each of the array members
+and store the maximum value.
+
+=head2 When do you use B<VDEF> versus B<CDEF>?
+
+Use B<CDEF> to transform your data prior to graphing. In the above
+example, we'd use a B<CDEF> to transform bytes to bits before
+graphing the bits.
+
+You use a B<VDEF> if you want I<max(1,5,3,2,4)> to return five which
+would be displayed in the graph's legend (to answer, what was the
+maximum value during the graph period).
+
+If you want to apply 'complex' operations to the result of a VDEF you have
+to use a CDEF again since VDEFs only look like RPN expressions, they aren't
+realy.
+
=head1 SEE ALSO
L<rrdgraph> gives an overview of how B<rrdtool graph> works.