/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Brovko
{
	public static void main (String[] args) throws java.lang.Exception
	{
	int n=0;
	double x, E, left, right=0.0, differ; 				//начальные переменные.
		Scanner in = new Scanner(System.in); 			//ввод аргумента и погрешности.
		x=in.nextDouble();
		E=in.nextDouble();
	if(Math.abs(x)>1)										//Модуль аргумента не должен превышать единицу.
	{
		System.out.printf("Некорректно задан аргумент x (|x|<1)");
	}
	else
	{
		left=(Math.pow(Math.PI,2)/8)-((Math.PI/4)*Math.abs(x));		//вычисление левой части.
		if (E!=0)
		{
			do
			{
				right+=Math.cos((2*n+1)*x)/((4*n*n)+4*n+1);	//вычисление правой части.
				n++;
				differ=right-Math.abs(left);				//разность левой и правой части.
			}
			while (differ>E);							//условие, при котором цикл останавливается.
			System.out.printf("Левая часть равна = %.10f \nПравая часть равна = %.10f \n",left,right);
			System.out.printf("После n=%d правая часть исследуемого выражения отличается от левой части более, чем на %.10f,", n, E); 
			System.out.printf("а именно на %.10f \n",Math.abs(differ));
		}	
		else
		{
			System.out.printf("Погрешность равна 0, тогда правая часть стремится к левой, и равняется %.10f, тогда n стремится в бесконечность",left);
		}
	}
}
}