#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define MAXOP 100
#define NUMBER '0'

int getop(char []);
void push(double);
double pop(void);

int main(){
	int type;
	double op2;
	char S[MAXOP];

	while((type = getop(S)) != EOF) {
		switch (type) {
		case NUMBER:
			push(atof(S));
			break;
		case '+':
			push(pop() + pop());
			break;
		case '*':
			push(pop() * pop());
			break;
		case '-':
			op2 = pop();
			push(pop() - op2);
			break;
		case '/':
			op2 = pop();
			if (op2 != 0.0)
				push(pop() / op2);
			else
			break;
		case '\n':
			printf("%g\n", pop());
			break;
		default:
			break;
		}
	}
	return 0;
}

#define MAXVAL 100

int sp = 0;
double val[MAXVAL];


void push(double f){
	if (sp < MAXVAL)
		val[sp++] = f;
}

double pop(void){
	if (sp > 0)
		return val[--sp];
	else {
		return 0.0;
	}
}

#include <ctype.h>

int getch(void);
void ungetch(int);
int getop(char s[]){
	int i, c;

	while ((s[0]= c = getch()) == ' ' || c == '\t')
		;
	s[1] = '\0';
	if (!isdigit(c) && c != '.')
		return c;
	i = 0;
	if (isdigit(c)) 
		while (isdigit(s[++i] = c = getch()))
			;
	if (c == '.') 
		while (isdigit(s[++i] = c = getch()))
			;
	s[i] = '\0';
	if (c != EOF)
		ungetch(c);
	return NUMBER;
}

#define BUFsIZE 100

char buf[BUFsIZE];
int bufp =0;

int getch(void) {
	return (bufp > 0) ? buf[--bufp] : getchar();
}

void ungetch(int c) {
	if (bufp >= BUFsIZE)
		printf("ungetch\n");
	else
		buf[bufp++] = c;
}