1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

Is it a Bug in g++ compiler`s -O flag??

Discussion in 'C++' started by nikhil_dokania, Oct 16, 2006.

  1. nikhil_dokania

    nikhil_dokania New Member

    Joined:
    Oct 16, 2006
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    0
    The output is different for the following two codes when compiled as : "g++ -O foo.cpp"
    1st COde :
    Code:
    #include<iostream.h>
    #include<math.h>
    int main(){
    	double d=log(8)/log(2);
    	cout<<"d="<<d<<"\t floor(d)="<<floor(d);        //<<"\t"<<floor(10.0)<<"\n";
    	return 0;
    }
    ------------------------------------------------------------------------------------------------------------------
    2nd COde :
    Code:
    #include<iostream.h>
    #include<math.h>
    int main(){
    	double d=log(8)/log(2);
    	cout<<"d="<<d<<"\t floor(d)="<<floor(d)<<"\t"<<floor(10.0)<<"\n";
    	return 0;
    }
    ---------------------------------------------------------------------------------------------------------------

    Expected output : d=3 floor(d)=3 10
    But The First code give : d=3 floor(d)=2 10
    while the second gives the right output.
    Could nyone plz explain whats going wrong!!

    Nikhil
     
    Last edited by a moderator: Oct 17, 2006
  2. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,276
    Likes Received:
    364
    Trophy Points:
    83
    Nope. Its should be d=3 floor(d)=2 10 because log(8)/log(2) = 2.999999..... and so floor should be 2.

    I guess the difference in output should be a bug as far as I think.
     
  3. nikhil_dokania

    nikhil_dokania New Member

    Joined:
    Oct 16, 2006
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    0

Share This Page