#include <iostream> 
#include <math.h> 
int  main( )  
{ 
	double  E, x, dife, left, right =  0.0 , u =  1.0  ;  int  n =  0 ; //Описание переменных для хранения входных данных.// 
	scanf ( "%lf %lf" , & x, & E) ;  //Чтение из стандартного потока ввода.//  
	left =  (  pow  ( M_E , x)  +  pow  ( M_E , - x)  )  /  2 ;  //Расчет левой части равенства. 
	if  ( E ! =  0 )  //Критерий, при котором программа может быть выполнена// 
	{ 	
		do  //Цикл программы (для подсчета правой части равенства). 
		{ 	
			n ++ ; 
			right + =  u ; 
		 	u * =   x *  x /  (  ( 2  *  n -  1 )  *  2  *  n ) ; 
			dife =  left -  right;  //Вычисление разности значения левой части и правой части// 
		} 
		while ( dife >  fabs ( E) ) ;  //Конечный критерий, при котором цикл останавливается// 
		//Вывод окончательных результатов на экран// 
		printf ( "Левая часть равна = %.10lf \n Правая часть равна = %.10lf \n " ,left,right) ; 
		printf ( "После n=%d исследуемое выражение отличается от левой части менее, чем на %.10lf, " ,n,fabs ( E) ) ;  
		printf ( "а именно на %.10lf \n " ,fabs ( dife) ) ; 
	} 
	else 
	{ 	//Вывод оповещения о неправильном вводе данных (при несоответствии начальному критерию).// 
		if  ( fabs ( E)  ==  0 ) 
		{ 
			printf ( "Погрешность равна 0, тогда правая часть стремится к левой %.10lf (n=бесконечность)" ,left) ; 
		} 
	} 
	return  0 ; 
} 
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWF0aC5oPgppbnQgbWFpbigpIAp7Cglkb3VibGUgRSwgeCwgZGlmZSwgbGVmdCwgcmlnaHQgPSAwLjAsIHUgPSAxLjAgOyBpbnQgbiA9IDA7Ly/QntC/0LjRgdCw0L3QuNC1INC/0LXRgNC10LzQtdC90L3Ri9GFINC00LvRjyDRhdGA0LDQvdC10L3QuNGPINCy0YXQvtC00L3Ri9GFINC00LDQvdC90YvRhS4vLwoJc2NhbmYoIiVsZiAlbGYiLCAmeCwgJkUpOyAvL9Cn0YLQtdC90LjQtSDQuNC3INGB0YLQsNC90LTQsNGA0YLQvdC+0LPQviDQv9C+0YLQvtC60LAg0LLQstC+0LTQsC4vLyAKCWxlZnQgPSAoIHBvdyAoTV9FICwgeCkgKyBwb3cgKE1fRSAsIC14KSApIC8gMjsgLy/QoNCw0YHRh9C10YIg0LvQtdCy0L7QuSDRh9Cw0YHRgtC4INGA0LDQstC10L3RgdGC0LLQsC4KCWlmIChFICE9IDApIC8v0JrRgNC40YLQtdGA0LjQuSwg0L/RgNC4INC60L7RgtC+0YDQvtC8INC/0YDQvtCz0YDQsNC80LzQsCDQvNC+0LbQtdGCINCx0YvRgtGMINCy0YvQv9C+0LvQvdC10L3QsC8vCgl7CQoJCWRvIC8v0KbQuNC60Lsg0L/RgNC+0LPRgNCw0LzQvNGLICjQtNC70Y8g0L/QvtC00YHRh9C10YLQsCDQv9GA0LDQstC+0Lkg0YfQsNGB0YLQuCDRgNCw0LLQtdC90YHRgtCy0LApLgoJCXsJCgkJCW4gKys7CgkJCXJpZ2h0ICs9IHUgOwoJCSAJdSAqPSAgeCAqIHggLyAoICgyICogbiAtIDEpICogMiAqIG4gKTsKCQkJZGlmZSA9IGxlZnQgLSByaWdodDsgLy/QktGL0YfQuNGB0LvQtdC90LjQtSDRgNCw0LfQvdC+0YHRgtC4INC30L3QsNGH0LXQvdC40Y8g0LvQtdCy0L7QuSDRh9Cw0YHRgtC4INC4INC/0YDQsNCy0L7QuSDRh9Cw0YHRgtC4Ly8KCQl9CgkJd2hpbGUoZGlmZSA+IGZhYnMoRSkpOyAvL9Ca0L7QvdC10YfQvdGL0Lkg0LrRgNC40YLQtdGA0LjQuSwg0L/RgNC4INC60L7RgtC+0YDQvtC8INGG0LjQutC7INC+0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGC0YHRjy8vCgkJLy/QktGL0LLQvtC0INC+0LrQvtC90YfQsNGC0LXQu9GM0L3Ri9GFINGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0L3QsCDRjdC60YDQsNC9Ly8KCQlwcmludGYoItCb0LXQstCw0Y8g0YfQsNGB0YLRjCDRgNCw0LLQvdCwID0gJS4xMGxmIFxu0J/RgNCw0LLQsNGPINGH0LDRgdGC0Ywg0YDQsNCy0L3QsCA9ICUuMTBsZiBcbiIsbGVmdCxyaWdodCk7CgkJcHJpbnRmKCLQn9C+0YHQu9C1IG49JWQg0LjRgdGB0LvQtdC00YPQtdC80L7QtSDQstGL0YDQsNC20LXQvdC40LUg0L7RgtC70LjRh9Cw0LXRgtGB0Y8g0L7RgiDQu9C10LLQvtC5INGH0LDRgdGC0Lgg0LzQtdC90LXQtSwg0YfQtdC8INC90LAgJS4xMGxmLCAiLG4sZmFicyhFKSk7IAoJCXByaW50Zigi0LAg0LjQvNC10L3QvdC+INC90LAgJS4xMGxmIFxuIixmYWJzKGRpZmUpKTsKCX0KCWVsc2UKCXsJLy/QktGL0LLQvtC0INC+0L/QvtCy0LXRidC10L3QuNGPINC+INC90LXQv9GA0LDQstC40LvRjNC90L7QvCDQstCy0L7QtNC1INC00LDQvdC90YvRhSAo0L/RgNC4INC90LXRgdC+0L7RgtCy0LXRgtGB0YLQstC40Lgg0L3QsNGH0LDQu9GM0L3QvtC80YMg0LrRgNC40YLQtdGA0LjRjikuLy8KCQlpZiAoZmFicyhFKSA9PSAwKQoJCXsKCQkJcHJpbnRmKCLQn9C+0LPRgNC10YjQvdC+0YHRgtGMINGA0LDQstC90LAgMCwg0YLQvtCz0LTQsCDQv9GA0LDQstCw0Y8g0YfQsNGB0YLRjCDRgdGC0YDQtdC80LjRgtGB0Y8g0Log0LvQtdCy0L7QuSAlLjEwbGYgKG490LHQtdGB0LrQvtC90LXRh9C90L7RgdGC0YwpIixsZWZ0KTsKCQl9Cgl9CglyZXR1cm4gMDsKfQ==