Thursday, January 7, 2016

IEEE754 representation of pi number in C



 #include <stdio.h>  
 #include <math.h>  
 int main(void) {  
      // your code goes here  
      int i,j,k;  
      double pi = atan(1.0)*4;  
      //pi=3.14;  
      //printf("%.50lf",pi);  
      double mant = pi / 2.0;  
      mant = mant -1.0;  
      double expon = log2(2.0);  
      expon = expon + 127.0;  
      expon = log2(expon);  
      int expon_arr[8];  
      for(i=0;i<8;i++)  
      {  
           if(i==expon)  
           {  
                expon_arr[i] = 1;  
           }  
           else  
           {  
                expon_arr[i] = 0;  
           }  
      }  
      double temp,diff=0,acc=0;  
      double mant_coef[21];  
      int mant_bin[21];  
      mant_coef[0]=0;  
      for(i=1;i<21;i++)  
      {  
           mant_coef[i]=(double)(1.0/pow(2.0,i));  
           //printf("%lf",mant_coef[i]);  
      }  
      for(i=0;i<21;i++)  
      {  
           diff= (mant_coef[i+1] - mant_coef[i]);  
           if(diff<0)  
           {  
                diff = diff * (-1.0);  
           }  
           if(diff<mant)  
           {  
                mant_bin[i]=1;  
                mant = mant - diff;  
           }  
           else  
           {  
                mant_bin[i]=0;  
           }  
   //printf("%d,,,%lf,,,%lf,,,%lf\r\n",i,diff,mant,mant_coef[i]);  
      }  
      //printf("%lf\r\n",expon);  
      printf("binary rep. of pi:");  
      for(i=7;i>=0;i--)  
      {  
        printf("%d",expon_arr[i]);  
      }  
      printf(".");  
           for(i=0;i<21;i++)  
      {  
           printf("%d",mant_bin[i]);  
      }  
      return 0;  
 }  

Terminal Output eklenecek


No comments:

Post a Comment