[comp.lang.fortran] Request help implementing Cody & Wait power algorithm

fsset@bach.lerc.nasa.gov (Scott E. Townsend) (01/16/91)

[ sorry if this is an inappropriate group, it seems the most likely one to me ]

I'm trying to implement the power (x ** y) function according to the
algorithm described in 'Software Manual for the Elementary Functions' by
Cody & Waite.  This is the book which introduced the ELEFUNT code on NETLIB.

Anyway, they describe an operation REDUCE(v) with a suggested implementation

[1]	FLOAT(INT(16.0*V)) * 0.0625

and later require

[2]	|V-REDUCE(V)| < 1/16

Now my problem is how does [1] imply [2] for large V?  REDUCE() is used on
the y operand in x**y, but I haven't found anyplace where y is made
reasonably small before REDUCE is invoked.  With a y of say 1.0e100 this
is a problem.

I realize this is a bit obcure, but I hope someone out there has run into
this before.  Thanks for any & all replies.

Scott

--
------------------------------------------------------------------------
Scott Townsend               |   Phone: 216-433-8101
NASA Lewis Research Center   |   Mail Stop: 5-11
Cleveland, Ohio  44135       |   Email: fsset@bach.lerc.nasa.gov
------------------------------------------------------------------------