RRD Manager  RRD Collector 
RPN expressions items are used to create new item in a RRD graph that are the result of a mathematical rpn expression applied on data source items. For example, instead of having two items in a graph, one representing an incoming traffic and another representing an outgoing traffic, you might generate an rpn expression item that sums both values and graph it.
The RRD mathematical expressions are written in Reverse Polish Notation (RPN). If you have ever used a traditional HP calculator you already know RPN. The idea behind RPN notation is, that you have a stack and push your data onto this stack. When ever you execute an operation, it takes as many data values from the stack as needed. The pushing of data is implicit, so when ever you specify a number or a variable, it gets pushed automatically.
To create rpn expression items, you should have first defined the Data Source Items that will be used in the expression. Select the Expression Items tab to access the list of expressions items below.
Click on the Add button. The rpn expression editor is displayed.
Define a name for your rpn expression and a description.
Next you should define the expression itself. If you already known how to create the rpn expression then simply enter the expression in the rpn expression field.
If no, you can use the set of buttons to create the expression. Each time that you click on a button the new operator will be added onto the stack (left table).
For example, the expression 4,5,+ adds 4 to 5.
The expression 4,5,6,+,/ adds 4 to 5 and divide the result by 6.
To create this expression click successively on the following button :
4 ENTER 5 ENTER 6 ENTER + /
You should get this result in the Stack :
And get the rpn expression 4,5,6,+,/
This is example rpn expression should contain at least one Data Source Item else they will not be interpreted and no graph will be created.
Below more explanations on the role of each button:
A keyboard that allow you to enter Integer value, the value is push onto the stack when the Enter button is clicked. 

Arithmetic operators


Boolean operators


Functions 

SIN 
Sinus 

LOG 
Logarithm 

COS 
Cosines 

EXP 
Exponential 

FLOOR 
The floor functions round a floating point number to the nearest integer below. 

CEIL 
The ceiling functions round a floating point number to the nearest integer above. 

Stack manipulation 

dup 
Duplicate the last element on the stack 

exc 
Exchange (swap) the last two elements of the stack 

pop 
Remove the last element 

un 
Remove the last element if it is unknown 

unkn 
Add the UNKOWN element onton the stack 

prev 
Push *UNKNOWN* if it is the first value of a data set otherwise push the value of this data source at the previous time step. This allows you to perform calculations across the data counter for example. 

MIN 
Select the minimum value among two values (ex : 24,34,MIN retourne 24) 

MAX 
Select the maximum value among two values (ex : 24,34,MAX return 34) 

LIMIT 
Replace the value with *UNKNOWN* if it is outside the limits specified by the two values above it on the stack. (ex : DS2,20,30,LIMIT set the value to UNKNOW if DS2 is lower than 20 or greater than 30) 

INF 
Push a positive infinite (oo) value onto the stack. When drawing an infinite number it appears right at the top edge of the graph. 

NEGINF 
Push a negative infinite (oo) value onto the stack. When drawing an infinite number it appears right at the bottom edge of the graph. 

Curent Time  NOW 
Push the current (real world) time onto the stack. 

Sample Time  TIME 
Push the time the current sample was taken onto the stack. This is the number of nonskip seconds since 0:00:00 January 1, 1970. 

UTC Offset  LTIME 
This is like TIME + current timezone offset in seconds. The current offset takes daylight saving time into account, given your OS supports this. If you were looking at a sample, in Zurich, in summer, the offset would be 2*3600 seconds, as Zurich at that time of year is 2 hours ahead of UTC. Note that the timezone offset is always calculated for the time the current sample was taken at. It has nothing to do with the time you are doing the calculation. 
The stack element can be manage with the DEL UP DOWN CLEAR buttons.
DEL : clear the selected line
UP : move one line up the selected line
DOWN : move one line down the selected line
CLEAR : clear the all stack
Examples of rpn expressions
In this first example the Data Source is the temperature of a sensor collected in Celsius degrees. We want to have two items in the graph one in Celcius the other in Fahrenheit.
The Data Source Item is named TempCel and the rpn expression Item is called TempFar
After configuration we get a similar expression item edition screen
Second example of rpn expression
This example demonstrates the syntax for using IF and UN to set *UNKNOWN* values to 0. This technique is useful if you are aggregating interface data where the start dates of the data sets doesn't match. Assuming that idat1 has no data value (UNKNOWN), the CDEF expression idat1,UN,0,idat1,IF leaves us with a stack with contents of 1,0,NaN and the IF function will pop off the 3 values and replace them with 0. If idat1 had a real value like 7942099, then the stack would have 0,0,7942099 and the real value would be the replacement.
Then the same test is realize on idat2, both result are summed and multiply by 8 to get results in bits/second.
