#include #define useregister 0 double MachEps2() // definitly wrong coded ;-) { double eps; eps=0.5; while ((1.0 + eps) != 1.0) { eps=0.5*eps; } return 2.0*eps; } double MachEps() { #if useregister == 1 register double eps,EinsPlusEps; #else double eps,EinsPlusEps; #endif eps=0.5; EinsPlusEps=1.5; while (EinsPlusEps != 1.0) { eps=0.5*eps; EinsPlusEps=1.0+eps; } return 2.0*eps; } void main() { double deps; float feps; deps = MachEps(); feps = (float) deps; printf("\n\n%s%14.7E\n\n","MachEsp (double precision) = ",deps); printf( "%s%14.7E\n\n","MachEsp (single precision) = ",feps); deps = MachEps2(); feps = (float) deps; printf("\n\n%s%14.7E\n\n","MachEps2 (double precision) = ",deps); printf( "%s%14.7E\n\n","MachEps2 (single precision) = ",feps); }