#include <cstdio>
#include <iostream>
#include <list>
#include <queue>
#include <cstring>
#include <stack>
#include <algorithm>
using namespace std;
double calc(double a,char op,double b){
if(op == '+')
return a + b;
if(op == '-')
return a - b;
if(op == '*')
return a * b;
if(op == '/')
return a / b;
}
int main(int argc, char const *argv[])
{
char s[100];
double x,y;
int priv[300];
priv['+'] = priv['-'] = 2;
priv['*'] = priv['/'] = 1;
priv['('] = 10;
while(scanf("%s",s) != EOF){
stack<double> num;
stack<char> oper;
int len = strlen(s);
char last = 0;
for(int i = 0;i < len;i++){
if(isdigit(s[i])){
num.push(atof(s + i));
for(;i + 1 < len && (isdigit(s[i + 1]) || s[i + 1] == '.');i++);
}else if(s[i] == '('){
oper.push(s[i]);
}else if(s[i] == ')'){
while(oper.top() != '('){
x = num.top();
num.pop();
y = num.top();
num.pop();
char op = oper.top();
num.push(calc(x,op,y));
}
oper.pop();
}else if(s[i] == '-' && (last == 0 || last == '(')){
num.push(0.0);
oper.push('-');
}else if(priv[s[i]] > 0){
while(oper.size() > 0 && priv[s[i]] >= priv[oper.top()]){
y = num.top();
num.pop();
x = num.top();
num.pop();
char op = oper.top();
oper.pop();
num.push(calc(x,op,y));
}
oper.push(s[i]);
}else
continue;
last = s[i];
}
while(oper.size() > 0){
y = num.top();
num.pop();
x = num.top();
num.pop();
char op = oper.top();
oper.pop();
num.push(calc(x,op,y));
}
cout << num.top() << endl;
}
return 0;
}