/* epslon.f -- translated by f2c (version of 16 May 1991 13:06:06). You must link the resulting object file with the libraries: -link f2c.lib (in that order) */ #include "f2c.h" doublereal epslon_(x) doublereal *x; { /* System generated locals */ doublereal ret_val, d__1; /* Local variables */ static doublereal a, b, c, eps; /* estimate unit roundoff in quantities of size x. */ /* this program should function properly on all systems */ /* satisfying the following two assumptions, */ /* 1. the base used in representing floating point */ /* numbers is not a power of three. */ /* 2. the quantity a in statement 10 is represented to */ /* the accuracy used in floating point variables */ /* that are stored in memory. */ /* the statement number 10 and the go to 10 are intended to */ /* force optimizing compilers to generate code satisfying */ /* assumption 2. */ /* under these assumptions, it should be true that, */ /* a is not exactly equal to four-thirds, */ /* b has a zero for its last bit or digit, */ /* c is not exactly equal to one, */ /* eps measures the separation of 1.0 from */ /* the next larger floating point number. */ /* the developers of eispack would appreciate being informed */ /* about any systems where these assumptions do not hold. */ /* this version dated 4/6/83. */ a = 1.3333333333333333; L10: b = a - 1.; c = b + b + b; eps = (d__1 = c - 1., abs(d__1)); if (eps == 0.) { goto L10; } ret_val = eps * abs(*x); return ret_val; } /* epslon_ */