Inefficiency of `mod'

Prof A Olowofoyeku (The African Chief) chief at greatchief.plus.com
Mon Oct 25 12:13:09 CEST 2010


On 25 Oct 2010 at 11:21, Jonas Maebe wrote:

> 
> On 25 Oct 2010, at 11:10, Jonas Maebe wrote:
> 
> > On 25 Oct 2010, at 10:43, Rugxulo wrote:
> >
> >> In all
> >> seriousness, I would doubt the FPC answer would ever be considered
> >> correct in this context (heh, 9 gazillion from "-2 shr 1"? highly
> >> unlikely). I'm sure they'll be glad for a test case / bug report.
> >
> > Yes, that's definitely a compiler bug. Kylix also returns the same 
> > results as GPC.
> 
> Actually, it's rather strange: "shr" is a logical shift right (both in 
> FPC and Borland Pascal, and I assume also in GPC) as opposed to an 
> arithmetic shift right. So I guess that Kylix and GPC also perform a  64
> bit logical shift right on the value, but then unlike FPC truncate  the
> result back to 32 bits. Otherwise I'm not sure where the "-1"  comes
> from when doing "(-2)shr 1".

I don't much understand what all this is about, but for what it's 
worth, here are my results with Delphi (3, 4, and 7) and BP 7.0.

program unary; 
begin 
   writeln( -1 ); { -1 } 
   writeln( 2 shr 1 ); { 1 } 
   writeln((-2)shr 1 ); { -1; BP7=2147483647 } 
   writeln(-(2 shr 1)); { -1 } 
   writeln( -2 shr 1 ); { -1; BP7=2147483647 } 
   writeln( -2 div 2 ); { -1 } 
end. 

Best regards, The Chief
--------
Prof. Abimbola A. Olowofoyeku (The African Chief) 
web:  http://www.greatchief.plus.com/






More information about the Gpc mailing list