
double Epsilon;

double store;


int main(int argc, char *argv[]) {

Epsilon = 1;

do {

Epsilon /= 2; //Variable value is halved until the smallest

//value of 'e' is found while meeting the

//required condition

store = Epsilon/2;

} while (store != 0);//If the smallest, then Epsilon/2 == 0 as Epsilon/2 approches 0.


cout << "The smallest normalized number is: " << Epsilon << endl;


system("PAUSE");

return EXIT_SUCCESS;

}

As suggested in the reply to your topic at 'http://www.physicsforums.com/showthread.php?t=210044', you must cast Epsilon as a double rather than single floating point number. This is because doubles can represent numbers smaller than floatingpoint numbers (see wikipedia, I say =D).
Epsilon approaches 0 when repeatedly divided, and indeed meets 0 at the lowest normalized number. The variable "store" is used to identify where this lowest point occurs without changing the value of Epsilon to 0. Interestingly, my computer produced a result ~ 4.94066 e324 (or something like that), which implies either your produced limit is wrong, or I have incorrectly coded the solution, because a limit is a limit is a limit. I can't speculate as to why this might occur.