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

class SinusApp
{
   public static Double scanDouble( Scanner in )
   {
	   return ( ( in.hasNextDouble() ) ? in.nextDouble() : null );
   }
   
   public static double pow2( double x ) //вторая степень
   {
      return x*x;
   }
   
   public static void main( String[] args )
   {
      // рабочие переменные
      double x, e, d, r;
      long n, nMax = Long.MAX_VALUE; // лимит числа итераций чтобы избежать бесконечного цикла
     
     
      // ввод данных - аргумента функции и заданной погрешности
      Scanner in = new Scanner(System.in);
      
      x = scanDouble( in );
      e = scanDouble( in );
   
      in.close(); 
   
      for( d = 0, r = x, n = 2; n < nMax; n++ ) // основной цикл вычислений
      {
         r = r * ( 1 - pow2( x ) / ( pow2( n - 1 ) * pow2( Math.PI ) ) );
         d = Math.sin( x ) - r ;  
         if( Math.abs( d ) <= Math.abs( e ) ) break;
      }      
      
      // вывод результата
      System.out.printf("sin(x) = %f\n", Math.sin( x ) );
      System.out.printf("calculated sinus = %f\n", r );
      System.out.printf("inaccuracy = %f\n", d );
      System.out.printf("number of iterations: %d\n", n );

   }
}
