Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Implementation of the abs() function [o.t.]

Author: Russell Reagan

Date: 21:14:29 07/07/03

Go up one level in this thread


I looked in a book I have titled "Hacker's Delight", and it had a few good
absolute value functions in it. hd1 and hd2 did very well.

int hd1_abs (int x) {
    int y = x >> 31;
    return (x ^ y) - y;
}

int hd2_abs (int x) {
    int y = x >> 31;
    return (x + y) ^ y;
}

int hd3_abs (int x) {
    int y = x >> 31;
    return x - ((x + x) & y);
}

int hd4_abs (int x) {
    int y = x >> 31;
    return x - ((x << 1) & y);
}

int hd5_abs (int x) {
    return ((x >> 30) | 1) * x;
}

                          | best  | average
                          | time  | time
       nothing 4238830751 | 0.981 | 0.991
     hd2_abs() 1977337213 | 1.201 | 1.2072 <--
         abs() 1977337213 | 1.202 | 1.210
     hd1_abs() 1977337213 | 1.202 | 1.208  <--
    omid_abs() 1977337213 | 1.202 | 1.210
     cdq_abs() 1977337213 | 1.252 | 1.252
   cmovl_abs() 1977337213 | 1.252 | 1.258
   cmovs_abs() 1977337213 | 1.252 | 1.258
     hd3_abs() 1977337213 | 1.301 | 1.3078
     hd4_abs() 1977337213 | 1.302 | 1.312
     sbb_abs() 1977337213 | 1.302 | 1.310
     hd5_abs() 1977337213 | 1.412 | 1.414
     sar_abs() 1977337213 | 1.502 | 1.51
  simple_abs() 1977337213 | 1.922 | 1.926
    fish_abs() 1977337213 | 2.343 | 2.343



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.