Associated Topics || Dr. Math Home || Search Dr. Math

### Algorithm for Simple Fractional Exponents

```
Date: 03/14/2002 at 08:00:04
From: Matthew Rae Loutner
Subject: Need Algorithm for Resolving Simple Fractional Exponents.

Dr. Math,

I hope you can help. I am writing a computer program with a
programming language that cannot do higher math. How can I explain to
my program how to resolve simple fractional exponents using only
addition, subtraction, multiplication, division, square, and square
root? (I can put repetitive loops in the program, so repetition is
not a problem.)

The problem will be in the form of X = 1.49^1/2 up to say,
X = 1.73^1/30.

I just need to solve these for X.

I know there is a common algorithm that is used for this, but I can't
locate it anywhere. I haven't even seen the problem addressed.

Thanks.
Matthew
```

```
Date: 03/14/2002 at 08:34:37
From: Doctor Jerry
Subject: Re: Need Algorithm for Resolving Simple Fractional Exponents.

Hi Matthew,

One way of calculating a^{1/n} is to set

x = a^{1/n}

x^n = a

and so x will be a root of the equation

f(x) = x^n-a.

So, one way is to apply Newton's method. This uses the idea of
derivative from calculus. You also need a half-way decent first
approximation to the root.

Another way is to use logs and exponentials.

x = a^{1/n}

ln(x) = (1/n)*ln(a)

After calculating log(a), you can do ln(a)/n = N. Then you will need
to exponentiate each side:

e^{ln(x)} = e^N

So if you use this way, you will need to have an algorithm to
calculate ln and exp.

For this you can use the CORDIC algorithm.  Here's something I wrote a
while back. For more detail see

How Do Calculators Calculate?
http://www.math.utep.edu/Faculty/helmut/cordic/wcordic.html

Calculators use what is called the CORDIC method.

TI and HP use several stored constants and calculate the values of
several sequences of numbers, using only addition and multiplication.
They continue the calculation until sufficient accuracy is obtained.

The algorithm looks like this:  I'll use x_k to mean x sub k and
x_{k+1} to mean x sub k+1, and so on.

Let

x_{k+1} = x_k - d_k*y_k*2^(-k)
y_{k+1} = y_k + d_k*x_k*2^(-k)
z_{k+1} = z_k - d_k*s_k

The numbers d_k are equal to the sign of z_k (if z_k >= 0, d_k = 1; if
z_k<0, then d_k = -1). Also, s_k = arctan(2^(-k)). The numbers s_k are
permanently stored in the calculator, maybe up to k = 50 or so.

Starting values for the calculation are calculated.  If z_0 = t is
given, where t is a given angle (in radians), then y_0 = 0 and
x_0 = cos(s_0)*cos(s_1)*...*cos(s_{47}).

As k increases, x_k approaches cos(t) and y_k approaches sin(t).

- Doctor Jerry, The Math Forum
http://mathforum.org/dr.math/
```
Associated Topics:
High School Calculators, Computers
High School Exponents

Search the Dr. Math Library:

 Find items containing (put spaces between keywords):   Click only once for faster results: [ Choose "whole words" when searching for a word like age.] all keywords, in any order at least one, that exact phrase parts of words whole words

Submit your own question to Dr. Math
Math Forum Home || Math Library || Quick Reference || Math Forum Search

Ask Dr. MathTM
© 1994- The Math Forum at NCTM. All rights reserved.
http://mathforum.org/dr.math/