Bill Kendrick wrote:
A number of areas in Tux Paint rely heavily on floating-point math.
This is great in terms of the quality of the effects, but makes parts of
Tux Paint nearly unusable on platforms that lack dedicated FPUs.
(The Sharp Zaurus PDA and Nokia N770 and 800 internet tablets, for example.)

Is there a library, or perhaps source-mangling tool, that can convert
floating math in C program to fixed point?  I'd like to keep the float stuff
in the main codebase, if at all possible...  both to keep the code
human-readable, and to continue to take advantage of the real floating point
math on systems with FPUs.  (Arguably, most systems running Tux Paint, since
most users are on Windows, Mac OS X and Linux, systems, respectively[*].)

I'd obviously prefer something common (e.g., in Ubuntu and Debian), so that
other developers can continue working on Tux Paint with the least fuss... :)

Thanks!

[*] From what I can tell from downloads.

I think you are hoping for too much.  Software floating point is not slow
because the coders like it that way... it is tough to do it both right
and fast.  Fixed point math is a completely different animal than
floating point... so it is not possible to drop it in in place of
a floating point library.

To be more specific... fixed point math is really integer math with
specific scaling values (a "binary point" instead of a "decimal point")
for each variable.  Traditionally the scaling gets encoded into the
program each place the variable is used, leaving only integer data
with various bitshifts to keep magnitudes in line.  This can be
implemented with C++ templates to make it easier to do, but it still
isn't interchangeable with real floating point math because the
scaling factors must be declared by the programmer and tested
to avoid overflows or underflows.

If you really want to support non-FPU environments with fixed point
math, I think you will need to rewrite the codebase to never use
floating point.  This will probably result in a speed up on more
powerful hardware as well, but coding will be tougher overall...
very much so if you want to use pure C.

--
---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<[EMAIL PROTECTED]>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
---------------------------------------------------------------------------
_______________________________________________
vox-tech mailing list
[email protected]
http://lists.lugod.org/mailman/listinfo/vox-tech

Reply via email to