|
Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript |
c++ - Using the fldpi instruction for PI (3.1415...)
/*
If anyone has been trying to get the cool tip for using pi
using the fldpi instruction rather than defining it as
a constant from the May 2003 C++ User Journal on DMC, here
is the trick. You need to declare x as static below. Enjoy!
I don't know if there is any advantage to getting pi this way,
but it's interesting.
*/
#include <stdio.h>
class CPi
{
public:
operator double () const
{
static double x; // the "static" is necessary for DMC!
// otherwise, the asm block seems to do nothing.
asm
{
fldpi; // push the constant pi to the x87 stack
fst x; // store to x
}
return x;
}
};
static CPi PI;
main()
{
double x;
printf("Hello \n");
x = PI; // cool. Looks like a constant, but it's a function call.
printf("Pi = %f\n", x);
}
Apr 06 2003
|