module RPNCalc;

import std.stdio;
import std.string;
import std.conv;

alias char[] mstring;

void operator(mstring s, ref float[] stack) {
	switch (s) {
		case "+":	stack[$-2] += stack[$-1];
					break;
		case "-":	stack[$-2] -= stack[$-1];
					break;
		case "*":	stack[$-2] *= stack[$-1];
					break;
		case "/":	stack[$-2] /= stack[$-1];
					break;
		default:
					stack ~= to!(float)(s);
					return;
	}
	stack.length = stack.length -1;
}

void main() {
	float[] stack;
	
	while (true) {
		mstring data;
		readln(data);
		data = data.dup;
		mstring s;
		
		while ((s = munch(data, "-0123456789.+*/")) != "") {
			data = cast(mstring)strip(cast(string)data);
			operator(s, stack);
		}
		if (data.length > 0) {
			operator(data, stack);
		}
		writefln(stack);
		stack.length = 0;
	}
}
