Author: Gerd Isenberg
Date: 06:51:46 03/19/05
Go up one level in this thread
On March 19, 2005 at 04:41:26, Thomas Gaksch wrote: >On March 19, 2005 at 04:22:58, Thomas Gaksch wrote: > >>sorry, i never used the makefile or an other compiler than vc. i always build >>the code with microsoft visual c++ 6.0. with visual c++ 6.0 it works with only >>including #include <math.h> >>but math.h is only needed for the abs function. you also could write a macro for >>the abs function. >>thomas > >sorry, i forgot the example for an abs macro: >#define ABS(x) ((x)<0?-(x):(x)) > >bye >thomas Hi Thomas, with good predictable data pattern the macro, producing a conditional jump is fine. Trying to outperform the compiler with arithmetic shift right to force branchless code is often worse, ... long abs(long x) { long y; y = x >> 31; return (x ^ y) - y; } ... until compiler is smart enough to produce this x86 code which seems shortest and fastest abs() at least for random data. And iirr this is the code of msc6 abs-intrinsic: 99 cdq 33 C2 xor eax,edx 2B C2 sub eax,edx See http://chessprogramming.org/cccsearch/ccc.php?art_id=304882 or use CCC-Search-Engine with Subject "Implementation of the abs() function" to find further details. Cheers, Gerd
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.