www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/08/13/00:00:16

Xref: news2.mv.net comp.os.msdos.djgpp:7149
From: jhvogel AT me DOT umn DOT edu (Jeff Vogel)
Newsgroups: comp.os.msdos.djgpp
Subject: math addition error?
Date: 12 Aug 1996 15:26:34 -0500
Organization: me.umn.edu -- UMN Mechanical Engineering
Lines: 44
Message-ID: <jhvogel.839880522@me.umn.edu>
NNTP-Posting-Host: ena.me.umn.edu
Keywords: math bug
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

I have recently encountered some strange behavior from a djgpp
compiled program, and I would appreciate any advice on what to do.

I traced an error in a program to what appeared to be an addition
error, and I was able to reproduce the error in a simple program
that only adds the numbers and prints the result:

#include <stdio.h>
main()
{
double x=3.6053320875, y=3.6053320870;
printf( "%lf\n", x-y );
}

I compile the code as follows:

gcc -ojunk junk.c

and run it with the following results:

go32 junk

-3.9999999995000

I get a similar answer (not identical, though) for a small range of
number pairs around the ones I've shown here, but if the numbers
are different from these by more than about 1e-10, I get the right
answer.

My machine is a 486SX (no co-processor) 25MHz (I think - one piece
of info I have suggests it might actually be a 33 MHz clock). I
compiled and ran the code in native MSDOS using gcc v 2.67.
When I tried to reproduce
this error on a pentium 90, I did not get an error.

Because I can't reproduce this error on another machine, I'm not
optimistic about solving it, but any suggestions would be much appreciated.

	Jeff Vogel
	jhvogel AT me DOT umn DOT edu

-- 
	Jeff Vogel
	jhvogel AT me DOT umn DOT edu

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019