suppamax <ma************@gmail.comwrites:

I'm writing a C program for a PIC18F microcontroller.

I need to calculate a power function, in which both base and exponent

are fixed point numbers (ex: 3.15^1.13).

Using pow() function is too expensive...

Is there another way to do that?

How are these fixed point numbers represented? Does your compiler

have special support for them? Standard C's only arithmetic types are

integer and floating-point.

If the exponent were always an integer, you could do it with repeated

multiplication; you could save a few multiplications with judicious

use of squaring. But with a non-integral exponent, you're going to

have to do something very similar to what the pow() function does.

I don't think you've given us enough information to help you. We need

a better idea of how the operands are represented, what values they

can have, how precise you need the result to be, and so forth.

It's possible that comp.programming might be a better place to ask;

the solution you're looking for is likely to be an algorithm rather

that something specific to C.

--

Keith Thompson (The_Other_Keith) <ks***@mib.org>

Nokia

"We must do something. This is something. Therefore, we must do this."

-- Antony Jay and Jonathan Lynn, "Yes Minister"