Velocity Reviews > Trouble calculating 5th root of a given number using C

# Trouble calculating 5th root of a given number using C

Kishor
Guest
Posts: n/a

 02-02-2004
Hi Friends

Please help me to write a C program to find the 5th (fifth) root of a given number.
Ex1) Input : 32
Output : 5th root of 32 is 2

Ex1) Input : 243
Output : 5th root of 243 is 3

Regards
Kishor

Allan Bruce
Guest
Posts: n/a

 02-02-2004

"Kishor" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) m...
> Hi Friends
>
> Please help me to write a C program to find the 5th (fifth) root of a

given number.
> Ex1) Input : 32
> Output : 5th root of 32 is 2
>
> Ex1) Input : 243
> Output : 5th root of 243 is 3
>

Strengths.
>
>
>
> Regards
> Kishor

Is one allowed to use the standard math.h ?
If so, then
double result = pow(32, 1/5);
should give you 2.0
Allan

nrk
Guest
Posts: n/a

 02-02-2004
Allan Bruce wrote:

>
> "Kishor" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed) m...
>> Hi Friends
>>
>> Please help me to write a C program to find the 5th (fifth) root of a

> given number.
>> Ex1) Input : 32
>> Output : 5th root of 32 is 2
>>
>> Ex1) Input : 243
>> Output : 5th root of 243 is 3
>>

> Strengths.
>>

I ran some of the code there through the DS9K, and now there are nasal
demons all over the place

>>
>>
>> Regards
>> Kishor

>
> Is one allowed to use the standard math.h ?
> If so, then
> double result = pow(32, 1/5);
> should give you 2.0

Fortunately, it gives me 1.0 as expected Perhaps you meant this?:

double result = pow(32, 1/5.);

-nrk.

> Allan

--
Remove devnull for email

P.J. Plauger
Guest
Posts: n/a

 02-02-2004
"Allan Bruce" <(E-Mail Removed)> wrote in message
news:bvltvf\$iks\$(E-Mail Removed)2surf.net...

> "Kishor" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed) m...
> > Hi Friends
> >
> > Please help me to write a C program to find the 5th (fifth) root of a

> given number.
> > Ex1) Input : 32
> > Output : 5th root of 32 is 2
> >
> > Ex1) Input : 243
> > Output : 5th root of 243 is 3
> >

> Strengths.
> >
> >
> >
> > Regards
> > Kishor

>
> Is one allowed to use the standard math.h ?
> If so, then
> double result = pow(32, 1/5);
> should give you 2.0

Or 1.0 at the very least. Try 1.0/5.0.

This approach is good enough for a homework assignment,
but not industrial strength.

P.J. Plauger
Dinkumware, Ltd.
http://www.dinkumware.com

osmium
Guest
Posts: n/a

 02-02-2004
P.J. Plauger writes:

> Or 1.0 at the very least. Try 1.0/5.0.
>
> This approach is good enough for a homework assignment,
> but not industrial strength.

I take it for granted that you are right. But what would you recommend for
someone who does not wish to make this a life's work?

Martin Ambuhl
Guest
Posts: n/a

 02-02-2004
Kishor wrote:

> Hi Friends
>
> Please help me to write a C program to find the 5th (fifth) root of a given number.
> Ex1) Input : 32
> Output : 5th root of 32 is 2
>
> Ex1) Input : 243
> Output : 5th root of 243 is 3

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <float.h>

inline double root(double x)
{
return pow(x, 0.2);
}
inline double original(double x)
{
return pow(x, 5.);
}

int main(void)
{
size_t pass;
const size_t maxpass = 10;
double x;
const double upperlimit = 1000.;
srand((unsigned) time(0));
for (pass = 0; pass < maxpass; pass++) {
x = upperlimit * rand() / (1. + RAND_MAX);
printf("number: %.*g\n", DBL_DIG, x);
printf("5th root: %.*g\n", DBL_DIG, x = root(x));
printf("root to 5th power: %.*g\n\n", DBL_DIG, original(x));
}
return 0;
}

number: 349.126742687076
5th root: 3.22549685893672
root to 5th power: 349.126742687076

number: 933.513863012195
5th root: 3.92666773917324
root to 5th power: 933.513863012195

number: 337.094322778285
5th root: 3.20295094809955
root to 5th power: 337.094322778285

number: 921.04862164706
5th root: 3.91612469036527
root to 5th power: 921.04862164706

number: 193.956033326685
5th root: 2.86774584184895
root to 5th power: 193.956033326685

number: 536.526418756694
5th root: 3.51494247913713
root to 5th power: 536.526418756694

number: 769.721171818674
5th root: 3.77804117237769
root to 5th power: 769.721171818674

number: 245.490406174213
5th root: 3.00612409691297
root to 5th power: 245.490406174213

number: 818.889678921551
5th root: 3.82512013459173
root to 5th power: 818.889678921551

number: 422.267477028072
5th root: 3.35056098160768
root to 5th power: 422.267477028072

--
Martin Ambuhl

Martin Ambuhl
Guest
Posts: n/a

 02-02-2004
Allan Bruce wrote:

> Is one allowed to use the standard math.h ?
> If so, then
> double result = pow(32, 1/5);
> should give you 2.0

Bullshit. It yields 1.0

--
Martin Ambuhl

Lew Pitcher
Guest
Posts: n/a

 02-02-2004
On Mon, 02 Feb 2004 18:45:09 GMT, Martin Ambuhl <(E-Mail Removed)> wrote:

>Allan Bruce wrote:
>
>
>> Is one allowed to use the standard math.h ?
>> If so, then
>> double result = pow(32, 1/5);
>> should give you 2.0

>
>Bullshit. It yields 1.0

Forgive me if I misunderstand, but could someone explain to me what value 32^0
is? If I read the statement
>> double result = pow(32, 1/5);

correctly, that's what the statement is computing.

--
Lew Pitcher
IT Consultant, Enterprise Technology Solutions
Toronto Dominion Bank Financial Group

(Opinions expressed are my own, not my employers')

Christopher Benson-Manica
Guest
Posts: n/a

 02-02-2004
Lew Pitcher <(E-Mail Removed)> spoke thus:

> Forgive me if I misunderstand, but could someone explain to me what value 32^0
> is? If I read the statement
>>> double result = pow(32, 1/5);

> correctly, that's what the statement is computing.

You're reading it correctly. 32 (or any number other than 0) raised
to the zero power gives 1.

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.

Allan Bruce
Guest
Posts: n/a

 02-02-2004

"Martin Ambuhl" <(E-Mail Removed)> wrote in message
news:VUwTb.7427\$(E-Mail Removed) ink.net...
> Allan Bruce wrote:
>
>
> > Is one allowed to use the standard math.h ?
> > If so, then
> > double result = pow(32, 1/5);
> > should give you 2.0

>
> Bullshit. It yields 1.0
>
>
>

double result = pow(32.0, 1/5.0);