l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
January 6: Social gathering
Next Installfest:
TBD
Latest News:
Nov. 18: Club officer elections
Page last updated:
2007 Jan 26 11:35

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] location of DBL_EPSILON definition
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] location of DBL_EPSILON definition



on my machine (fedora core 5) there are definitions in

./usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/float.h

/* Difference between 1.0 and the minimum double greater than 1.0 */
#undef DBL_EPSILON
#define DBL_EPSILON 2.2204460492503131e-16



but not in

./usr/lib/gcc/i386-redhat-linux/4.1.0/include/float.h

where it appears as:

/* The difference between 1 and the least value greater than 1 that is
representable in the given floating point type, b**1-p. */
#undef FLT_EPSILON
#undef DBL_EPSILON
#undef LDBL_EPSILON
#define FLT_EPSILON __FLT_EPSILON__
#define DBL_EPSILON __DBL_EPSILON__
#define LDBL_EPSILON __LDBL_EPSILON__


You can also calculate them yourself:

//##############################################################################
double d_macheps()
{
double eps = 1.0;
int counter = 1;
while ( ((double) 1.0 + eps) > ((double) 1.0) )
{
eps = eps/2.0;
counter++;
// ::printf("eps = %.16e counter = %7d \n",eps,counter);
}
eps = eps*2.0;
counter--;
// ::printf("\n double macheps = %.20e at counter = %d \n",eps,counter);

return eps;
}



Of course on x86 machines all floats, doubles and long doubles get promoted to long double (inside the CPU) so from the above calculation you will get macheps for long double. This might be OK , but one has to be carefull....

Boris




Peter Jay Salzman wrote:
Where is DBL_EPSILON defined?  I thought it was in float.h.  But I've looked
at float.h in:

   /usr/lib/gcc-lib/i486-linux-gnu/3.3.6/include
   /usr/lib/gcc/i486-linux-gnu/3.4.6/include

and neither one actually defined it.

Where is the numerical value held?
_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech

_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech



LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
O'Reilly and Associates
For numerous book donations.