1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

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,285
    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