#include<iostream>
#include<cstdio>
#include<string>
#include<stack>

using namespace std;

double s_d(string a){
	double b=0;
	double zy=0.1;
	bool hu=false;
	bool dot=false;
	for(int i=0;i<a.size();i++){
		if(dot){
			b+=zy*(a[i]-'0');
			zy*=0.1;
		}
		else if(a[i]=='-') hu=true;
		else if(a[i]=='.'){
			dot=true;
		}
		else{
			b*=10;
			b+=a[i]-'0';
		}
	}

	if(hu) b*=-1;
	return b;
}

int main(){

	stack<string> siki;
	stack<double> bnum;
	string nums="";
	double a,b,c;
	char in;

	while(cin>>nums){
		siki.push(nums);
		nums="";
		while(1){
			in=getchar();
			if(in=='*'||in=='-'||in=='/'||in=='+'){
				if(siki.top()=="?"){
					b=bnum.top();
					bnum.pop();
					siki.pop();
				}
				else{
					b=s_d(siki.top());
					siki.pop();
				}
				if(siki.top()=="?"){
					a=bnum.top();
					bnum.pop();
					siki.pop();
				}
				else{
					a=s_d(siki.top());
					siki.pop();
				}
				if(in=='*') c=a*b;
				else if(in=='+') c=a+b;
				else if(in=='-') c=a-b;
				else if(in=='/') c=a/b;
				siki.push("?");
				bnum.push(c);
			}
			else if(in==' '){
				if(!nums.empty()){
					siki.push(nums);
					nums="";
				}
			}
			else if(in=='\n'){
				break;
			}
			else{
				nums+=in;
			}
		}
		if(bnum.empty()){
			cout<<siki.top()<<endl;
		}
		else{
			printf("%.6f\n",bnum.top());
		}
	}

	return 0;
}