delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
X-SWARE-Spam-Status: | No, hits=-0.5 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,T_RP_MATCHES_RCVD,T_TO_NO_BRKTS_FREEMAIL |
X-Spam-Check-By: | sourceware.org |
Message-ID: | <4C1390E8.4020002@aol.com> |
Date: | Sat, 12 Jun 2010 06:51:36 -0700 |
From: | Tim Prince <n8tm AT aol DOT com> |
Reply-To: | tprince AT computer DOT org |
User-Agent: | Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4 |
MIME-Version: | 1.0 |
To: | cygwin AT cygwin DOT com |
Subject: | Re: bug in NINT() in gfortran |
References: | <7E93C5822639AC4B917B413898A805AA7769505D37 AT ADM-EXMBX0CD DOT adm DOT c DOT sdu DOT dk> |
In-Reply-To: | <7E93C5822639AC4B917B413898A805AA7769505D37@ADM-EXMBX0CD.adm.c.sdu.dk> |
x-aol-global-disposition: | G |
X-AOL-SCOLL-SCORE: | 0:2:355761312:93952408 |
X-AOL-SCOLL-URL_COUNT: | 0 |
x-aol-sid: | 3039ac1d33864c1390e92653 |
X-AOL-IP: | 99.13.231.72 |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
On 6/12/2010 12:07 AM, Hans Jørgen Aagaard Jensen wrote: > The NINT() intrinsic in current gfortran under cygwin has a bug. Below follows: > 1) small test program > 2) output from this program > 3) output from "gfortran -v" > > (I am not submitting this to the gcc bugzilla, because the test worked OK on all the linux systems I tested.) > (I found the error becaus our quantum chemistry softward dirac (http://dirac.chem.sdu.dk) failed a few of the internal tests.) > > -- Hans Jørgen Aa. Jensen > > ======= 1) small test program ============ > program test > double precision xval > xval = 132843.61283756854D0 > do i = 1,7 > ipoint = nint(xval) > write (6,*), xval, ipoint > xval = 10.0d0*xval > end do > return > end > ======= 1) output ============= > 132843.61283756854 132844 > 1328436.1283756853 -1596096578 > > Try the following replacement for nint(): ipoint = xval+.5 which leads me to believe the lround function from newlib is buggy. If you wished to handle negative as well as positive, the work-around ipoint = xval+sign(.5,xval) would take it a little further. This short-cuts the distinction between ieee_nearest and legacy Fortran rounding style, but I don't see that gfortran was making the distinction. -- Tim Prince -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |