#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>

using namespace std;

#define rep(i,n) for(int i=0; i<(n); i++)
#define repc(i,s,e) for(int i=(s); i<(e); i++)
#define pb(n) push_back((n))
#define mp(n,m) make_pair((n),(m))
#define all(r) r.begin(),r.end()
#define fi first
#define se second

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vii;
typedef vector<ll> vl;
typedef vector<vl> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;



vector<string> split(const string &s, char c) {
	vector<string> ret;
	string t;
	stringstream ss(s);
	while (getline(ss, t, c)) {
		ret.push_back(t);
	}
	return ret;
}


int main() {
	string s;
	while (getline(cin, s)) {
		vector<string> vs = split(s, ' ');
		stack<double> t;
		double a, b;
		for (int i = 0; i < vs.size(); i++) {
			if (vs[i][0] == '+') {
				a = t.top();
				t.pop();
				b = t.top();
				t.pop();
				t.push(a + b);
			}
			else if (vs[i][0] == '-') {
				a = t.top();
				t.pop();
				b = t.top();
				t.pop();
				t.push(b - a);
			}
			else if (vs[i][0] == '*') {
				a = t.top();
				t.pop();
				b = t.top();
				t.pop();
				t.push(a*b);
			}
			else if (vs[i][0]=='/')
			{
				a = t.top();
				t.pop();
				b = t.top();
				t.pop();
				t.push((double)b / a);
			}
			else {
				t.push(atof(vs[i].c_str()));
			}
		}
		printf("%.15lf\n", t.top());
	}
}