[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libmoto PowerPC-optimized math library?



My housemate was discussing compiler performance on the Darwin
list yesterday, and wrote a couple of quick programs (in C) to get
some numbers.  (Someone had asked about the performance of code
compiled with -O3 optimization under gcc versus code compiled with
CodeWarrior.)

We were surprised that the performance of our two PowerPC machines
(a 132 MHz 604e PowerCenter and a 225 MHz 604e PowerTower Pro) was
amazingly bad compared with that of our dual-Pentium 133 MHz
machine (usually it's just the opposite).

My housemate then did a search for ``PowerPC math library
Motorola'', and found libmoto.a, an optimized math library created
by Motorola back in 1996, and released under a free-as-in-beer
license (only as object code, and with license restrictions on
redistribution).

With that library, the sample code ran in something like 1/10 the
time.

So it seems that being able to have the libmoto functions might be
a good thing for people writing code that uses any of the
following mathematical operations:

		   atan        exp         pow
		   atan2       log         sin
		   cos         log10       sqrt

The problem for Debian, of course, is the license and the lack of
source code.  Things have changed a lot since 1996, and I wonder
if Motorola might be more sympathetic to the idea of opening up
the source code for the libmoto.  Ideally, the Motorola code could
be integrated into the glibc math library, replacing the old,
unoptimized functions.
        
   CMC

+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
 Behind the counter a boy with a shaven head stared vacantly into space, 
 a dozen spikes of microsoft protruding from the socket behind his ear.
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
   C.M. Connelly               c@eskimo.com                   SHC, DS
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 



Reply to: