#include <iostream>
#include<stack>
#include<string>
using namespace std;

double operation(double x, double y, char op) { //计算,注意结果有小数
    double res=0;
    if (op == '/') res= x / y;
    else if (op == '*') res= x * y;
    else if (op == '-') res=x - y;
    else res= x + y;
    return res;
}

int main() {
    string str;
    stack<double>digit; //数字栈
    stack<char>op;  //运算栈
    while (cin >> str) {
        int i = 0;
        double res = 0;
        while (i < str.size()) {
            if ('0' <= str[i] && str[i] <= '9') {   //获取数字
                res = (str[i] - '0') + res * 10;
            } else {
                digit.push(res);        //当前数字入栈,res归0
                res = 0;
                if (str[i] == '*' || str[i] == '/') {   //若是乘除,将运算栈顶所有乘除法出栈运算
                    while (!op.empty() && (op.top() == '*' || op.top() == '/')) {
                        double y = digit.top();
                        digit.pop();
                        double x = digit.top();
                        digit.pop();
                        digit.push(operation(x, y, op.top()));
                        op.pop();
                    }
                } else {    //若是加减,清空运算栈
                    while (!op.empty()) {
                        double y = digit.top();
                        digit.pop();
                        double x = digit.top();
                        digit.pop();
                        digit.push(operation(x, y, op.top()));
                        op.pop();
                    }
                }
                op.push(str[i]);
            }
            i++;
        }
        digit.push(res);        //将余下的运算符出栈计算
        while (!op.empty()) {
            double y = digit.top();
            digit.pop();
            double x = digit.top();
            digit.pop();
            digit.push(operation(x, y, op.top()));
            op.pop();
        }
        cout<<digit.top();
    }
}