I'm a newbie and I'm writing a program preform Pythagoras’ theorem but I cant work out the code to square a number.

If anyone out there knows it please help me.

Thanks

Printable View

- 11-03-2008CODY21code to find th square root of a number
I'm a newbie and I'm writing a program preform Pythagoras’ theorem but I cant work out the code to square a number.

If anyone out there knows it please help me.

Thanks - 11-03-2008Akkernight
Ehh... I think it's in math.h header, and I think it was something like... sqroot(), but probably not, try searching "Square Root in C++" or something on Google ;)

- 11-03-2008EVOEx
It's sqrt for doubles, sqrtf for a double and sqrtl for a long double...

And they reside in the "cmath" header. - 11-03-2008matsp
- 11-03-2008C_ntuaCode:
`template<class T)`

class T mySqrt(T x, double precision)

{

if (x <= 0) return 0;

T r = x;

while (x - x/r > precision)

r = (r + x/r) / 2;

return r;

}

- 11-03-2008abachler
or...

Code:`double Number;`

__asm {

FLD Number

FSQRT Number

FSTP Number

}

- 11-03-2008master5001
I find the hypot() function useful. By the way, depending on what you are doing, its usually optimal to NOT square root your result and just always work with (x^2). It makes collision detection algorithms work oh so much faster.

- 11-05-2008Saimadhav
both the functions are in cmath header file.

to find the squre root

Code:`cout<<sqrt(variable);`

Code:`cout<<pow(a,2);`

- 11-05-2008g4j31a5
Sorry, a little OOT. After some thorough browsing, I found this snippet:

Code:`float InvSqrt (float x)`

{

float xhalf = 0.5f*x;

int i = *(int*)&x;

i = 0x5f3759df - (i>>1);

x = *(float*)&i;

x = x*(1.5f - xhalf*x*x);

return x;

}

**i = 0x5f3759df - (i>>1);**" part. I think it's much faster than the cmath's version.

EDIT: My mistake. You needed square and square root. Not inverse square root. :D - 11-05-2008BobS0327Quote:

But I sure can't understand it clearly. Especially the " i = 0x5f3759df - (i>>1);"

- 11-05-2008Raigne
That was very insightful, and surprising to me.

- 11-05-2008master5001
Very interesting, Bob. Where on earth did you dig that up from?

- 11-05-2008BobS0327

From Chris Lomont's home page. Unfortunately, the link to his papers from his home page has some isues at times. So, I linked directly to the PDF. - 11-05-2008CornedBee
And far less portable. Not to mention that, with the right switches (e.g. -ffast-math in GCC), your compiler might just optimize the sqrt call to the FSQRT instruction anyway. Which wouldn't break the compiler's register management code like the ASM snippet does. Or, in a loop, the compiler might parallelize a sqrt algorithm into a SIMD implementation with four times the throughput of the x87 (and a non-braindead architecture).

- 11-05-2008g4j31a5