Mail Archives: djgpp/2001/03/17/02:47:01
James W Sager Iii wrote:
>
> Excerpts from netnews.comp.os.msdos.djgpp: 17-Mar-101 RE: Whats up with
> sqrt? by Prashant Ramachandra AT wil
> >
> > On Saturday, March 17, 2001 10:49 AM, James W Sager Iii
> > [SMTP:sager+@andrew.cmu.edu] wrote:
> > | For me, the function sqrt() which obviously returns a square root
> > | is
> > | messing up for me on moderately large numbers.
> > |
> > | anything below 10,000 and it gives me about the right answer, but at
> > | like:
> > |
> > | range = sqrt(300,000)
> > |
> > | I get a 0 as a return value? I tried doing:
> >
> > Don't use commas while sending parameters. It's giving you the square root
> > of the second parameter, i.e. 0.
> >
> > range = sqrt (300000.0);
> >
> > is the right way to do it.
>
> I'm sorry, I wasn't using commas... but at the same time I wasn't using
> 0. so perhaps it was being type casted wrong.
>
> but I tested it
> a=sqrt(10001.0);
>
> returns 100516
>
> Ok, that makes no sense what so ever
> well at least I have my own function to do it no biggie
Frankly, I don't believe you about the behavior you claim. Since you
don't post the misbehaving code, we can only guess what you are doing wrong.
(My guess is failure to include appropriate headers and failure to enable
reasonable warnings.) Notice the following:
#include <math.h>
int main(void)
{
double a;
a = sqrt(300000);
printf("sqrt(300000) returned as %g;\n"
" %g*%g=%g\n", a, a, a, a * a);
a = sqrt(10001);
printf("sqrt(10001) returned as %g;\n"
" %g*%g=%g\n", a, a, a, a * a);
return 0;
}
sqrt(300000) returned as 547.723;
547.723*547.723=300000
sqrt(10001) returned as 100.005;
100.005*100.005=10001
- Raw text -