Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Macros versus Inline - correction

Author: Gerd Isenberg

Date: 13:36:14 09/26/03

Go up one level in this thread


An int-cast forces signed shift in any case:

>#define minusMask(a)  ((a)>>(sizeof(int)*8-1))
                           ^^

#define minusMask(a)  ((int)(a)>>(sizeof(int)*8-1))

>#define ifLessZero(a) ((a) & minusMask(a))


for abs, to avoid overflow to sign bit - it is better to write:

>__forceinline int _abs(int a)        {return a - ifLessZero(a+a);}
                                                            ^^^
__forceinline int _abs(int a)        {return a - 2*ifLessZero(a);}





This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.