Thread overview
Extraordinary C++
Jun 12, 2007
Walter Bright
Jun 12, 2007
Bill Baxter
Jun 12, 2007
Walter Bright
Jun 24, 2007
Craig Black
Jun 24, 2007
Bill Baxter
Jun 29, 2007
Craig Black
June 12, 2007
The Astoria Seminar presents Extraordinary C++, a seminar for advanced C++ programming. The seminar will be in Astoria, Oregon, from Sep. 23 to Sep. 26. The speakers are:

Walter Bright
Scott Meyers
Andrei Alexandrescu
Dave Abrahams
Eric Niebler

The seminar will be very small (only 55 people), so register early.

http://www.astoriaseminar.com/
June 12, 2007
Walter Bright wrote:
> The Astoria Seminar presents Extraordinary C++, a seminar for advanced C++ programming. The seminar will be in Astoria, Oregon, from Sep. 23 to Sep. 26. The speakers are:
> 
> Walter Bright
> Scott Meyers
> Andrei Alexandrescu
> Dave Abrahams
> Eric Niebler
> 
> The seminar will be very small (only 55 people), so register early.
> 
> http://www.astoriaseminar.com/

From the overview:
"""This presentation will explore numerous techniques for speeding up the code. Areas covered include ... replacing floating point with fixed point"""
    --- http://www.astoriaseminar.com/astoria_seminar_sessions.html

Does using fixed point still help in anything but embedded systems these days?  I thought things had gotten to the point that most modern procs could do fp as fast or faster than integer math.

--bb
June 12, 2007
Bill Baxter wrote:
>  From the overview:
> """This presentation will explore numerous techniques for speeding up the code. Areas covered include ... replacing floating point with fixed point"""
>     --- http://www.astoriaseminar.com/astoria_seminar_sessions.html
> 
> Does using fixed point still help in anything but embedded systems these days?  I thought things had gotten to the point that most modern procs could do fp as fast or faster than integer math.

It varies depending on the CPU. Also, some systems still use CPUs for embedded systems that have no FPU, and so using fixed point will head off the need for a (very slow) emulator.
June 24, 2007
Fixed point math is also used in GPU programming occasionally. One example with the GeForce 6800+ is a zero cost fog computation.

-Craig


June 24, 2007
Craig Black wrote:
> Fixed point math is also used in GPU programming occasionally. One example
> with the GeForce 6800+ is a zero cost fog computation.
> 
> -Craig

We can program GPUs directly in C++ now?

Actually I do think fixed point is rather under-appreciated.  And not because of optimization.  For some things it just makes more sense to use fixed point.  For instance when storing coordinates, floating point gives you insane precision around zero, which degrades to downright lousy precision as you go far away from zero.  With a 64bit int you can have nice even precision over your whole world.  Works out that you can have something like sub-nanometer precision everywhere for a region as big as our solar system.  If you know how big your domain is, and zero is not special, then fixed point makes a lot of sense.

--bb
June 29, 2007
> We can program GPUs directly in C++ now?

Not without a shading language.  But as you probably know, they are not that hard to use, and they are becoming more friendly for general purpose computation.

> Actually I do think fixed point is rather under-appreciated.  And not because of optimization.  For some things it just makes more sense to use fixed point.  For instance when storing coordinates, floating point gives you insane precision around zero, which degrades to downright lousy precision as you go far away from zero.  With a 64bit int you can have nice even precision over your whole world.  Works out that you can have something like sub-nanometer precision everywhere for a region as big as our solar system.  If you know how big your domain is, and zero is not special, then fixed point makes a lot of sense.

Integer math is simpler and inherently faster.  However, for some reason on modern intel CPU's integer division is very slow.  Even slower than floating point division.  SSE instructions provide support for both floating-point and integral math, so using fixed point where appropriate is probably a good thing.  Division, as always, should be avoided as much as possible.