lee@unmvax.UUCP (06/22/84)
Subject: 4.2 fortran can't handle large, negative floating constants Index: /usr/lib/f77pass1 4.2BSD Fix Description: If one uses large, negative floating (not double!) constants the error message "data value too large" appears and the compilation bombs, even though the constant may be easily handled by the VAX floating instructions. Repeat-By: Cut this out and compile it with f77 (doesn't matter whether the optimizer is on or off, for once). -------------------------------------------------------- program test real x data x/-1.7e+38/ write (6,*) x stop end ---------------------------------------------------------- Fix: The constants given were REAL weird for dminreal. I could not figure out why it was this way. At first I thought about just swapping the long words and then thought, "oh well" and changed it to be the same unsigned number as dmaxreal. Can't see anything this would break but I do not profess to know this compiler inside-out. Here is a diff of /usr/src/usr.bin/f77/src/f77pass1/conv.c RCS file: RCS/conv.c,v retrieving revision 1.1 diff -c -r1.1 conv.c *** /tmp/,RCSt1022729 Thu Jun 21 17:35:16 1984 --- conv.c Thu Jun 21 17:20:17 1984 *************** *** 21,27 LOCAL long dminint[] = { 0x0000d000, 0xffff00ff }; LOCAL long dmaxreal[] = { 0xffff7fff, 0xffff7fff }; ! LOCAL long dminreal[] = { 0x0000f800, 0xffffffff }; --- 21,27 ----- LOCAL long dminint[] = { 0x0000d000, 0xffff00ff }; LOCAL long dmaxreal[] = { 0xffff7fff, 0xffff7fff }; ! LOCAL long dminreal[] = { 0xffffffff, 0xffff7fff }; -- --Lee (Ward) {ucbvax,convex,gatech,pur-ee}!unmvax!lee