#include <iostream>
using namespace std;

double abs(double argument) {
	return argument >= 0 ? argument : -argument;
}

int ceil(double argument) {
	int result = (int) argument;
	if((double) result != argument && argument > 0) {
		result++;
	} else if((double) result == argument && argument < 0) {
		result++;
	}
	return result;
}

int determineOrderOfPolynomial(double argument, double accuracy) {
	int order = 1;
	double a = 2 * argument;
	while(abs(a) >= accuracy) {
		order++;
		a *= 2 * argument / (order + 1);
	}
	return order;
}

double function(double argument, double accuracy) {
	int order = determineOrderOfPolynomial(argument, accuracy);
	double summand = 2;
	double sum = summand;
	for(int k = 2; k <= ceil(order / 2.0); k++) {
		summand *= -4 * argument * argument / ((2 * k - 2) * (2 * k - 1));
		sum += summand;
	}
	return sum;
}

int main() {
	double argument, accuracy;
	cin >> argument >> accuracy;
	if(argument == 0) {
		cout << "empty set";
	} else {
		cout << function(argument, accuracy);
	}
	cout << endl;
	return 0;
}