#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <queue>
 
using namespace std;
 
#define pb(n)	push_back(n)
#define mp(n,m) make_pair(n,m)
#define fi 	first
#define se 	second
#define all(r) (r).begin(),(r).end()

#define rep(i,n) for(int i=0; i<(n); i++)
#define repc(i,a,b) for(int i=(a); i<(b); i++)

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
 
const int IMAX=((1<<30)-1)*2+1;
const double EPS=1e-10;
//int mod=1000000007;


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




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