From: "Matt Billenstein" <mbillens@mbillens.dyndns.org>
To: <joeja@mindspring.com>, <linux-kernel@vger.kernel.org>
Subject: Re: bug in float on Pentium
Date: Sun, 15 Apr 2001 02:02:04 -0400 [thread overview]
Message-ID: <004201c0c571$9c477940$0201a8c0@zed> (raw)
In-Reply-To: <3AD78A6C.F0F3CF5A@mindspring.com>
It's not that you found a new bug or that floats are inaccurate (they are
just less exact than doubles)... For example, if you make your program
print some more digits, you'll get:
5483.98999999999978172127157449722290039062500000000000
5483.99023437500000000000000000000000000000000000000000
#include <stdio.h>
int main() {
unsigned int *X;
unsigned int *Y;
double x = 5483.99;
float y = 5483.99;
X = (unsigned int *)&x;
Y = (unsigned int *)&y;
printf ("%60.50lf\n%60.50f\n", x, y);
printf("%lf %x%x %f %x\n", x, X[1], X[0], y, *Y);
return 0;
}
which you can verify by hand:
5483.990000 40b56bfd70a3d70a
0 10000001011 1.0101 0110 1011 1111 1101 0111 0000 1010 0011 1101 0111 0000
1010
+ 2^12 * 1.3388647460937499467092948179925 =
5483.989999999999781721271574497222900390625
5483.990234 45ab5fec
0 10001011 1.010 1011 0101 1111 1110 1100
+ 2^12 * 1.338864803314208984375 = 5489.990234375
check out:
http://www.psc.edu/general/software/packages/ieee/ieee.html
l8r
m
Matt Billenstein
mbillens (at) one (dot) net
http://w3.one.net/~mbillens/
----- Original Message -----
From: "Joe" <joeja@mindspring.com>
To: <linux-kernel@vger.kernel.org>
Sent: Friday, April 13, 2001 7:23 PM
Subject: bug in float on Pentium
| Not sure but I think I found a NEW bug.
|
| I know that there have been some issues with pentiums and floating point
| arrithmatic, but this takes the cake...
|
| Linux Lserver.org 2.2.18 #43 SMP Fri Mar 9 14:19:41 EST 2001 i586
| unknown
|
| >kgcc --version
| egcs-2.91.66
|
| RH 6.2.x / 7.0
|
| try this program
|
| #include <stdio.h>
|
| int main() {
|
| char tmpx[100];
| char tmpy[100];
|
| double x = 5483.99;
| float y = 5483.99;
|
| sprintf (tmpx, "%f",x );
| sprintf (tmpy, "%f",y );
|
| printf ("%s\n%s\n", tmpx, tmpy);
| return 0;
| }
|
|
| I am getting the following as output
|
| joeja@Lserver$ ./testf
| 5483.990000
| 5483.990234
|
|
| what is with the .990234?? it should be .990000
|
| any ideas on this??
|
| --
| Joe Acosta ........
| home: joeja@mindspring.com
|
|
|
| -
| To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
| the body of a message to majordomo@vger.kernel.org
| More majordomo info at http://vger.kernel.org/majordomo-info.html
| Please read the FAQ at http://www.tux.org/lkml/
prev parent reply other threads:[~2001-04-15 6:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-04-13 23:23 bug in float on Pentium Joe
2001-04-14 2:57 ` Alan Cox
2001-04-14 3:01 ` Jakob Østergaard
2001-04-14 5:35 ` Jonathan Morton
2001-04-15 6:02 ` Matt Billenstein [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='004201c0c571$9c477940$0201a8c0@zed' \
--to=mbillens@mbillens.dyndns.org \
--cc=joeja@mindspring.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.