Hi,

Kazushige Goto and myself, we are now releasing a first version 0.10 of

free fast math routines to eventually replace/complement libm. These

routines are based on work I did years ago for another RISC CPU, but

those now use different (*better* !) approximations and some other ideas

that grew in the meantime. Kazushige Goto did a great job in optimizing

the assembler code, "vectorizing" polynomial evaluation code and

improving instruction scheduling to get the code so fast as it is now

!

Some of the routines seem to run even nearly twice as fast as the

already fast "Cray" routine I ported some weeks ago, at comparable

accuracy.

This first version 0.10 of libffm only includes the common trig and

inverse trig functions and does not yet contain checking for invalid

arguments. That will be added soon, as also log, exp and sqrt will

follow shortly (and others later) (time permitting

!).

It is basically released already now to show that work on a free fast

Alpha math lib is continuing and to help find possible bugs and other

problems as soon as possible. However, the routines should be pretty

stable and usable already

now.

Further modification could be (besides the argument checking) the

fine-tuning of the last bits of the constants used and of the order of

evaluation to minimize or compensate the effect of rounding

errors.

In the preliminary versions, till the whole lib has stabilized, we would

like to keep the copyright on the routines to us. However, in the end,

this code will become full GPL. However, in the moment the routines can

be freely used in your programs. See file README in the archive for more

details.

The routines can be downloaded

at

http://people.frankfurt.netsurf.de/Joachim.Wesner/libffm.0.10.tar.gz

See file README for further instructions and

details.

Approximate running times in us in a tight loop for random arguments

0..10 (0..1 for asin/acos) on a 533MHz LX

21164

libffm libfm

libm

sin 0.12 0.22

0.45

cos 0.19 0.22

0.46

tan 0.13 0.27

0.63

asin 0.32 ----

1.39

acos 0.29 ----

1.31

atan 0.20 ----

0.69

atan2 0.23 ----

0.86

Have Fun !!!

Joachim