public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/27561]  New: i386-pc-mingw32 version incorrect error
@ 2006-05-11 17:18 dir at lanl dot gov
  2006-05-30 13:12 ` [Bug fortran/27561] [mingw32] floating-point extreme values are wrong fxcoudert at gcc dot gnu dot org
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: dir at lanl dot gov @ 2006-05-11 17:18 UTC (permalink / raw)
  To: gcc-bugs

The i386-pc-mingw32 version errors incorrectly on this program fragment -

rantad@XP-RANTAD /d/Docume~1/rantad/mydocu~1/tests
$ gfortran -c  eps.f90
 In file eps.f90:10

        xmax1 = min ( xx, ONE / epsilon ( xx ) )
                            1
Error: Division by zero at (1)

rantad@XP-RANTAD /d/Docume~1/rantad/mydocu~1/tests
$ cat eps.f90
      module test
      implicit none
      integer, parameter :: REAL8 = SELECTED_REAL_KIND(12)
      real(REAL8), parameter :: ONE      = 1.0_REAL8
      contains
      real(REAL8) function digamma (xx)
        real(REAL8), intent(in) :: xx
        real(REAL8) :: xmax1

        xmax1 = min ( xx, ONE / epsilon ( xx ) )
        digamma=xmax1;
      end function digamma
      end module test



rantad@XP-RANTAD /d/Docume~1/rantad/mydocu~1/tests
$ gfortran --v
Using built-in specs.
Target: i386-pc-mingw32
Configured with: ../gcc/configure --prefix=/mingw --enable-languages=c,fortran
--with-gmp=/home/coudert/local --disable-nls --with-ld=/mingw/bin/ld
--with-as=/mingw/bin/as --disable-werror --enable-bootstrap
--enable-threads=win32 --with-win32-nlsapi=unicode --host=i386-pc-mingw32
Thread model: win32
gcc version 4.2.0 20060504 (experimental)


-- 
           Summary: i386-pc-mingw32 version incorrect error
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dir at lanl dot gov
  GCC host triplet: i386-pc-mingw32


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27561


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/27561] [mingw32] floating-point extreme values are wrong
  2006-05-11 17:18 [Bug fortran/27561] New: i386-pc-mingw32 version incorrect error dir at lanl dot gov
@ 2006-05-30 13:12 ` fxcoudert at gcc dot gnu dot org
  2006-05-30 13:17 ` fxcoudert at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-05-30 13:12 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from fxcoudert at gcc dot gnu dot org  2006-05-30 13:11 -------
Confirmed, with the same version of compiler. I'm updating to current svn to
see if this changes, but I don't have much hope...


-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fxcoudert at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-05-30 13:11:58
               date|                            |
            Summary|i386-pc-mingw32 version     |[mingw32] floating-point
                   |incorrect error             |extreme values are wrong


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27561


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/27561] [mingw32] floating-point extreme values are wrong
  2006-05-11 17:18 [Bug fortran/27561] New: i386-pc-mingw32 version incorrect error dir at lanl dot gov
  2006-05-30 13:12 ` [Bug fortran/27561] [mingw32] floating-point extreme values are wrong fxcoudert at gcc dot gnu dot org
@ 2006-05-30 13:17 ` fxcoudert at gcc dot gnu dot org
  2006-05-30 13:59 ` fxcoudert at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-05-30 13:17 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from fxcoudert at gcc dot gnu dot org  2006-05-30 13:16 -------
Lots of things are going badly here:

$ cat dale.f90 
      real(4) :: x4
      real(8) :: x8

      print *, " ** REAL(KIND=4) tests ** "
      write(*,*) digits(x4), maxexponent(x4), minexponent(x4), &
                 precision(x4), radix(x4), range(x4)
      write(*,"(80(G40.20))") epsilon(x4), huge(x4), tiny(x4)
      if (epsilon(x4) == 0.0_4) print *, "EPSILON is wrong"
      if (tiny(x4) == 0.0_4) print *, "TINY is wrong"

      print *, " ** REAL(KIND=8) tests ** "
      write(*,*) digits(x8), maxexponent(x8), minexponent(x8), &
                 precision(x8), radix(x8), range(x8)
      write(*,"(80(G40.20))") epsilon(x8), huge(x8), tiny(x8)
      if (epsilon(x8) == 0.0_8) print *, "EPSILON is wrong"
      if (tiny(x8) == 0.0_8) print *, "TINY is wrong"

      end

On i386-linux, we have:

$ gfortran dale.f90 && ./a.out
  ** REAL(KIND=4) tests ** 
          24         128        -125           6           2          37
              0.11920928955078125000E-06             
0.34028234663852885981E+39              0.11754943508222875080E-37
  ** REAL(KIND=8) tests ** 
          53        1024       -1021          15           2         307
              0.22204460492503130808E-15             
0.17976931348623157081+309              0.22250738585072013831-307


but on i386-mingw32, we get:

  ** REAL(KIND=4) tests ** 
          24         128        -125           6           2          38
               0.0000000000000000000                                  
+Infinity               0.0000000000000000000    
 EPSILON is wrong
 TINY is wrong
  ** REAL(KIND=8) tests ** 
          53        1024       -1021          15           2         308
               0.0000000000000000000                                  
+Infinity               0.0000000000000000000    
 EPSILON is wrong
 TINY is wrong


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27561


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/27561] [mingw32] floating-point extreme values are wrong
  2006-05-11 17:18 [Bug fortran/27561] New: i386-pc-mingw32 version incorrect error dir at lanl dot gov
  2006-05-30 13:12 ` [Bug fortran/27561] [mingw32] floating-point extreme values are wrong fxcoudert at gcc dot gnu dot org
  2006-05-30 13:17 ` fxcoudert at gcc dot gnu dot org
@ 2006-05-30 13:59 ` fxcoudert at gcc dot gnu dot org
  2006-05-30 15:06 ` fxcoudert at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-05-30 13:59 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from fxcoudert at gcc dot gnu dot org  2006-05-30 13:59 -------
OK, this still happens with current mainline. I also tried a different GMP/MPRF
combination, and it doesn't make it work. I'll be looking into this.


-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |fxcoudert at gcc dot gnu dot
                   |dot org                     |org
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2006-05-30 13:11:58         |2006-05-30 13:59:36
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27561


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/27561] [mingw32] floating-point extreme values are wrong
  2006-05-11 17:18 [Bug fortran/27561] New: i386-pc-mingw32 version incorrect error dir at lanl dot gov
                   ` (2 preceding siblings ...)
  2006-05-30 13:59 ` fxcoudert at gcc dot gnu dot org
@ 2006-05-30 15:06 ` fxcoudert at gcc dot gnu dot org
  2006-05-30 16:34 ` dir at lanl dot gov
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-05-30 15:06 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from fxcoudert at gcc dot gnu dot org  2006-05-30 15:05 -------
OK, I managed to reduce this to a GMP/MPFR bug on i386-pc-mingw32:

$ cat mpfr.c 
#include <stdio.h>
#include <gmp.h>
#include <mpfr.h>

int main (void)
{
  mpfr_t b;

  mpfr_init (b);
  mpfr_set_ui (b, 2, GMP_RNDN);
  mpfr_out_str (stdout, 10, 0, b, GMP_RNDN);
  fputs ("\n", stdout);
  mpfr_pow_si (b, b, -23, GMP_RNDN);
  mpfr_out_str (stdout, 10, 0, b, GMP_RNDN);
  fputs ("\n", stdout);
  return 0;
}
$ gcc mpfr.c -I$HOME/local/include -L$HOME/local/lib -lmpfr -lgmp && ./a.exe 
2.0000000000000000
0

while it should output (on i386-pc-linux):

$ gcc mpfr.c -lmpfr -lgmp && ./a.out
2.00000000000000
1.19209289550781e-7


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27561


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/27561] [mingw32] floating-point extreme values are wrong
  2006-05-11 17:18 [Bug fortran/27561] New: i386-pc-mingw32 version incorrect error dir at lanl dot gov
                   ` (3 preceding siblings ...)
  2006-05-30 15:06 ` fxcoudert at gcc dot gnu dot org
@ 2006-05-30 16:34 ` dir at lanl dot gov
  2006-05-30 17:01 ` dir at lanl dot gov
  2006-05-31 12:54 ` fxcoudert at gcc dot gnu dot org
  6 siblings, 0 replies; 8+ messages in thread
From: dir at lanl dot gov @ 2006-05-30 16:34 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from dir at lanl dot gov  2006-05-30 16:34 -------
It is strange - gfortran under cygwin does not seem to have the problem. I
wonder why GMP/MPFR is different under MSYS ? I also tried your test under MSYS
on my system and got the same answer (+one digit) that you got under linux -

$ gcc -o  mpfr  mpfr.c -lmpfr -lgmp

rantad@XP-RANTAD /d/Docume~1/rantad/mydocu~1/tests
$ mpfr
2.000000000000000
1.192092895507812e-7

rantad@XP-RANTAD /d/Docume~1/rantad/mydocu~1/tests
$ gcc --v
Reading specs from d:/MinGW/bin/../lib/gcc/mingw32/3.4.2/specs
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as
--host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls
--enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry
--disable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt
--without-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter
--enable-hash-synchronization --enable-libstdcxx-debug
Thread model: win32
gcc version 3.4.2 (mingw-special)

rantad@XP-RANTAD /d/Docume~1/rantad/mydocu~1/tests


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27561


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/27561] [mingw32] floating-point extreme values are wrong
  2006-05-11 17:18 [Bug fortran/27561] New: i386-pc-mingw32 version incorrect error dir at lanl dot gov
                   ` (4 preceding siblings ...)
  2006-05-30 16:34 ` dir at lanl dot gov
@ 2006-05-30 17:01 ` dir at lanl dot gov
  2006-05-31 12:54 ` fxcoudert at gcc dot gnu dot org
  6 siblings, 0 replies; 8+ messages in thread
From: dir at lanl dot gov @ 2006-05-30 17:01 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from dir at lanl dot gov  2006-05-30 17:01 -------
I also forced it to use the gcc that came with gfortran getting the same
result. I built with mpfr-2.1.2 and gmp-4.1.4 a while ago when I unsucessfully
tried to build gfortran on my PC. I noticed your MSYS version is printing 16
places (on the 2) after the decimal point where mine is printing 15 and linux
is doing 14.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27561


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Bug fortran/27561] [mingw32] floating-point extreme values are wrong
  2006-05-11 17:18 [Bug fortran/27561] New: i386-pc-mingw32 version incorrect error dir at lanl dot gov
                   ` (5 preceding siblings ...)
  2006-05-30 17:01 ` dir at lanl dot gov
@ 2006-05-31 12:54 ` fxcoudert at gcc dot gnu dot org
  6 siblings, 0 replies; 8+ messages in thread
From: fxcoudert at gcc dot gnu dot org @ 2006-05-31 12:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from fxcoudert at gcc dot gnu dot org  2006-05-31 12:53 -------
OK, I got the confirmation that it was a GMP/MPFR miscompilation with mainline
GCC. Downgrading to gcc-3.4.5 gives a working GMP/MPFR combination. I'll upload
new binaries in the next few days.

Longer story: I installed gcc-4.2.0 from 20050406 as my mingw system compiler
by error when I made that package, thus the problem. I'm currently reinstalling
mingw and msys (with newer binutils also), so it will take some time before my
environment is nicely set up again. Then, I'll work on the OpenMP stuff, which
was near completion when all this hell broke loose :)


-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |INVALID


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27561


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2006-05-31 12:54 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-05-11 17:18 [Bug fortran/27561] New: i386-pc-mingw32 version incorrect error dir at lanl dot gov
2006-05-30 13:12 ` [Bug fortran/27561] [mingw32] floating-point extreme values are wrong fxcoudert at gcc dot gnu dot org
2006-05-30 13:17 ` fxcoudert at gcc dot gnu dot org
2006-05-30 13:59 ` fxcoudert at gcc dot gnu dot org
2006-05-30 15:06 ` fxcoudert at gcc dot gnu dot org
2006-05-30 16:34 ` dir at lanl dot gov
2006-05-30 17:01 ` dir at lanl dot gov
2006-05-31 12:54 ` fxcoudert at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).