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
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
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
Currently research OpenGL
It's sqrt for doubles, sqrtf for a double and sqrtl for a long double...
And they reside in the "cmath" header.
Compilers can produce warnings - make the compiler programmers happy: Use them!
Please don't PM me for help - and no, I don't do help over instant messengers.
or for obvious reasons just use the ready sqrt() in math.h which handles double, long double and float http://www.cplusplus.com/reference/c...math/sqrt.htmlCode: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; }
or...
which is far faster than calling the sqrt() functionCode:double Number; __asm { FLD Number FSQRT Number FSTP Number }
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.
both the functions are in cmath header file.
to find the squre root
to find the squareCode:cout<<sqrt(variable);
Code:cout<<pow(a,2);
I would rather be hated for who I am than be loved for who I am not!
Sorry, a little OOT. After some thorough browsing, I found this snippet:
FYI, it is Quake's inverse square root. But I sure can't understand it clearly. Especially the " i = 0x5f3759df - (i>>1);" part. I think it's much faster than the cmath's version.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; }
EDIT: My mistake. You needed square and square root. Not inverse square root.
ERROR: Brain not found. Please insert a new brain!
“Do nothing which is of no use.” - Miyamoto Musashi.
0x5F3759DFBut I sure can't understand it clearly. Especially the " i = 0x5f3759df - (i>>1);"
That was very insightful, and surprising to me.
Very interesting, Bob. Where on earth did you dig that up from?
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.
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).
All the buzzt!
CornedBee
"There is not now, nor has there ever been, nor will there ever be, any programming language in which it is the least bit difficult to write bad code."
- Flon's Law