Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Jan 1999 17:18:04 +0900
From:      Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
To:        cvs-committers@FreeBSD.ORG
Cc:        dfr@FreeBSD.ORG, sgk@troutmask.apl.washington.edu
Subject:   Re: cvs commit: src/usr.bin/f2c proc.c
Message-ID:  <19990118171804P.simokawa@sat.t.u-tokyo.ac.jp>
In-Reply-To: Your message of "Sun, 10 Jan 1999 11:50:03 -0800 (PST)" <199901101950.LAA03808@troutmask.apl.washington.edu>
References:  <199901101950.LAA03808@troutmask.apl.washington.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
From: Steve Kargl <sgk@troutmask.apl.washington.edu>
Subject: Re: cvs commit: src/usr.bin/f2c proc.c
Date: Sun, 10 Jan 1999 11:50:03 -0800 (PST)
Message-ID: <199901101950.LAA03808@troutmask.apl.washington.edu>

sgk> According to Doug Rabson:
sgk> > dfr         1999/01/10 09:22:51 PST
sgk> > 
sgk> >   Modified files:
sgk> >     usr.bin/f2c          proc.c 
sgk> >   Log:
sgk> >   From the submitter:
sgk> >   
sgk> >   I found the reason why f77 so offen dies on alpha. Here is a fix.
sgk> >   "Const" is a union of int and double.
sgk> >   If nelt->constblock.Const.ci > 0 then it trys to evaluate it as double
sgk> >   and floating point exception occurs.
sgk> >   
sgk> 
sgk> There may be worse problems with f2c on alpha machines.  My Alphastation
sgk> runs Digital Unix, so I haven't had a channce to FreeBSD/axp.
sgk> 
sgk> From http://www.netlib.org/f2c/readme:
sgk> 
sgk> 
sgk> NOTE:	f2c.h defines several types, e.g., real, integer, doublereal.
sgk> 	The definitions in f2c.h are suitable for most machines, but if
sgk> 	your machine has sizeof(double) > 2*sizeof(long), you may need
sgk> 	to adjust f2c.h appropriately.  f2c assumes
sgk> 		sizeof(doublecomplex) = 2*sizeof(doublereal)
sgk> 		sizeof(doublereal) = sizeof(complex)
sgk> 		sizeof(doublereal) = 2*sizeof(real)
sgk> 		sizeof(real) = sizeof(integer)
sgk> 		sizeof(real) = sizeof(logical)
sgk> 		sizeof(real) = 2*sizeof(shortint)
sgk> 	EQUIVALENCEs may not be translated correctly if these
sgk> 	assumptions are violated.
sgk> 
sgk> 	On machines, such as those using a DEC Alpha processor, on
sgk> 	which sizeof(short) == 2, sizeof(int) == sizeof(float) == 4,
sgk> 	and sizeof(long) == sizeof(double) == 8, it suffices to
sgk> 	modify f2c.h by removing the first occurrence of "long "
sgk> 	on each line containing "long ", e.g., by issuing the
sgk> 	commands
sgk> 		mv f2c.h f2c.h0
sgk> 		sed 's/long //' f2c.h0 >f2c.h
sgk> 	On such machines, one can enable INTEGER*8 by uncommenting
sgk> 	the typedef of longint in f2c.h, so it reads
sgk> 		typedef long longint;
sgk> 	by compiling libI77 with -DAllow_TYQUAD, and by adjusting
sgk> 	libF77/makefile as described in libF77/README.
sgk> 
sgk> 	Some machines may have sizeof(int) == 4, sizeof(float) == 8,
sgk> 	and sizeof(long long) == 8.  On such machines, adjust f2c.h
sgk> 	by changing "long int " to "long long ", e.g., by saying
sgk> 		mv f2c.h f2c.h0
sgk> 		sed 's/long int /long long /' f2c.h0 >f2c.h
sgk> 	One can enable INTEGER*8 on such machines as described
sgk> 	above, but with
sgk> 		typedef long long longint;
sgk> 
sgk> 
sgk> -- 
sgk> Steve
sgk> 
sgk> finger kargl@troutmask.apl.washington.edu
sgk> http://troutmask.apl.washington.edu/~clesceri/kargl.html
sgk> 

If nobody objects, I would like to commit following patch.
This patch should have no effect on i386, because 'long' == 'int'
on i386.

Index: f2c.h
===================================================================
RCS file: /pub/FreeBSD-CVS/src/usr.bin/f2c/f2c.h,v
retrieving revision 1.3
diff -u -r1.3 f2c.h
--- f2c.h	1997/04/13 01:12:42	1.3
+++ f2c.h	1999/01/13 05:40:05
@@ -7,15 +7,15 @@
 #ifndef F2C_INCLUDE
 #define F2C_INCLUDE
 
-typedef long int integer;
-typedef unsigned long uinteger;
+typedef int integer;
+typedef unsigned int uinteger;
 typedef char *address;
 typedef short int shortint;
 typedef float real;
 typedef double doublereal;
 typedef struct { real r, i; } complex;
 typedef struct { doublereal r, i; } doublecomplex;
-typedef long int logical;
+typedef int logical;
 typedef short int shortlogical;
 typedef char logical1;
 typedef char integer1;
@@ -42,9 +42,9 @@
 typedef short ftnlen;
 typedef short ftnint;
 #else
-typedef long int flag;
-typedef long int ftnlen;
-typedef long int ftnint;
+typedef int flag;
+typedef int ftnlen;
+typedef int ftnint;
 #endif
 
 /*external read, write*/


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19990118171804P.simokawa>