Computer Chess Club Archives


Search

Terms

Messages

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

Author: Rafael Andrist

Date: 07:58:00 07/05/03

Go up one level in this thread


On July 05, 2003 at 10:17:38, Omid David Tabibi wrote:

>In Genesis I heavily use the abs() function, and so tried to optimize it.
>Instead of using the abs() function defined in <math.h>, I wrote the following
>fucntion:
>
>long abs(long x) {
>    long y;
>    y = x >> 31;
>    return (x ^ y) - y;
>}
>
>Testing it using a profiler, I found out that my implementation is about twice
>slower than the math.h implementation of abs(). I haven't looked at the
>implementation in math.h, but I can't see how a more optimized version of abs()
>can be written.
>
>Any ideas?

I also tried to optimize the abs() function and found out that the compiler
already optimized it the right way in most of the cases. The compiler usually
inlines the abs() function and generates the fastest code. You should look at
the asm code which may be different from case to case.

If you use abs() to measure (small) distances, you can also try a look-up-table

regards
Rafael B. Andrist



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.