I hope I am not telling you things you already know. If so, I apologize in advance.

There are several C-library addons available to try to deal with the problem that comparisons of floating point numbers can be unpredictable. I think your example with the greater than sign would not be a source of the trouble, but if you ended it with a comparison like

if (xmax == 10.7)

then you would be in trouble because the internal representation of the float xmax might not be precisely equal to 10.7.

Until I hear otherwise, I am thinking that ordinal comparisons like (x > xmax) are accurate, but that equality comparisons like (x==xmax) are not.

Here's one of the C library projects dealing with the subject:

http://fcmp.sourceforge.net/

The author of that library, Ted Belding, did this paper, "Numerical Replication of Computer Simulations: Some Pitfalls...", which is informative (IMHO):
http://alife.ccp14.ac.uk/ftp-mirror/alife/zooland/pub/research/ci/EC/GA/papers/gecco2000.ps.gz


Also check this web page, which I bookmarked:
http://vision.eng.shu.ac.uk/C++/c/c-faq/cfaq14.html#r14.6

I know I've seen more, but can't remember where.

Ted Harding wrote:

For instance,
in C-speak, to find the maximum of an array of double x[], of
length n, something like the following code could be written:

 xmax=x[1];
 for(i=1;i<n;i++) if(x[i+1]>x[i]) xmax=x[i+1];

Regardless of the accuracy of the comparison, each assignment
xmax = ... should make xmax an internally exact copy of the
thing on the righthand side. However, your reply suggests that this
may not happen, as a result of "unpredictable use of 10-byte wide
floating point registers on Intel chips".




--
Paul E. Johnson email: [EMAIL PROTECTED]
Dept. of Political Science http://lark.cc.ku.edu/~pauljohn
1541 Lilac Lane, Rm 504 University of Kansas Office: (785) 864-9086
Lawrence, Kansas 66044-3177 FAX: (785) 864-5700


______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to