* Previous contents of gcc/f/runtime moved into toplevel

"libf2c" directory.

From-SVN: r17568
This commit is contained in:
Jeff Law 1998-01-31 18:37:08 -07:00
parent 0dfb6849ef
commit 81fea2b1d1
246 changed files with 23836 additions and 0 deletions

787
libf2c/ChangeLog Normal file
View File

@ -0,0 +1,787 @@
Tue Sep 30 00:41:39 1997 Craig Burley <burley@gnu.ai.mit.edu>
Do a better job of printing the offending FORMAT string
when producing a diagnostic:
* libI77/err.c (f__fmtlen): New variable to hold operating
length of format string.
(f__fatal): Use new variable to limit length of printed string.
* libI77/fmt.c (f_s): Don't skip spaces after closing paren,
so nicer message results (and nested case already skips them).
(pars_f): Record operating length of format string as indicated
by a successful call to f_s, or ad-hoc-calculate it if failure,
limiting the length to 80 characters (and stopping at NUL).
(do_fio): Use new variable to limit length of printed string.
* libI77/fmt.h (f__fmtlen): Declare new variable.
* libI77/lread.c (c_le): Set new variable to known length.
Mon Sep 29 16:30:31 1997 Craig Burley <burley@gnu.ai.mit.edu>
Update to Netlib version of 1997-09-23:
* libF77/dtime_.c (dtime_), libF77/etime_.c (dtime_):
Return `double' instead of `float' (these are not used
in g77's version of libf2c).
* libI77/fmt.c, libI77/fmt.h, libI77/rdfmt.c, libI77/wrtfmt.c:
Support machines with 64-bit pointers and 32-bit ints (e.g.
Linux on DEC Alpha).
1997-09-19 Dave Love <d.love@dl.ac.uk>
* libU77/dtime_.c (G77_dtime_0): Fix types in HAVE_GETRUSAGE case
so as not to truncate results to integer values.
Tue Sep 9 00:33:24 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Version 0.5.21 released.
Mon Sep 8 19:39:01 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libI77/close.c (f_exit): Fix thinko, inverted test
of whether initialization done, so exiting now closes
open units again.
Tue Aug 26 01:42:21 1997 Craig Burley <burley@gnu.ai.mit.edu>
From Jim Wilson:
* configure.in: Make sure RANLIB_TEST is set also.
From Robert Lipe <robertl@dgii.com>:
* libU77/getcwd_.c, libU77/hostnm_.c, libU77/lstat_.c:
Also #include <errno.h>, to define ENOSYS.
Tue Aug 26 01:25:58 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Makefile.in (stamp-lib): Put all f2cext.c objects in
a temp directory named libE77, then `ar' them all at
once into libf2c.a, to get the job done a bit faster.
Still remove the objects (and libE77 directory) afterward.
Sun Aug 24 05:04:35 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libU77/rand_.c (G77_rand_0), libU77/dtime_.c (G77_dtime_0),
libU77/etime_.c (G77_etime_0), libU77/secnds_.c (G77_secnds_0),
libU77/second_.c (G77_second_0): Really return `double', not
`doublereal', since the result is cast to `float'.
* f2cext.c: (rand_, dtime_, etime_, secnds_, second_): Ditto.
(erf_, erfc_, besj0_, besj1_, besjn_, besy0_, besy1_,
besyn_, dbesj0_, dbesj1_, dbesjn_, dbesy0_, dbesy1_,
dbesyn_): All of these return `double', not `doublereal',
as they either have `float' or `double' results.
* libU77/bes.c (besj0_, besj1_, besjn_, besy0_, besy1_,
besyn_): Ditto.
* libU77/dbes.c (dbesj0_, dbesj1_, dbesjn_, dbesy0_, dbesy1_,
dbesyn_): Ditto.
Update to Netlib version of 1997-08-16:
* libI77/iio.c: Fix bug in internal writes to an array
of character strings.
* Makefile.in (UOBJ): Restore fixes made by Dan Pettet I
lost, which included the addition of mclock_.o already noted
below, plus adding symlnk_.o.
Thu Aug 21 03:58:34 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Makefile.in (UOBJ): Add mclock_.o, thanks to Mumit Khan!
1997-08-21 Dave Love <d.love@dl.ac.uk>
* libU77/alarm_.c: Fix return type: `integer'.
Mon Aug 11 20:12:42 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Makefile.in ($(lib), stamp-lib): Ensure that library
gets fully updated even if updating was aborted earlier.
* libU77/hostnm_.c (G77_hostnm_0): Return ENOSYS and stuff
in errno if system has no gethostname() function.
* libU77/lstat_.c (G77_lstat_0): Return ENOSYS and stuff
in errno if system has no lstat() function.
* libU77/getcwd_.c (G77_getcwd_0): Return ENOSYS and stuff
in errno if system has no getcwd() or getwd() function.
Test HAVE_GETCWD properly.
* libU77/symlnk_.c (G77_symlink_0): Return ENOSYS and stuff
in errno if system has no symlink() function.
* libU77/mclock_.c (G77_mclock_0): Return -1 if system
has no clock() function.
Mon Aug 11 01:55:36 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Makefile.in (F2CEXT): Add `alarm' to this list.
* f2cext.c (alarm_): Fix some typos in this function.
Delete third `status' argument.
* libU77/alarm_.c: Delete third `status' argument,
as caller gets this from function result; return
status value as function result for caller.
* configure.in: Rename `ac_cv_struct_FILE' to
`g77_cv_struct_FILE' according to 1997-06-26 change.
1997-08-06 Dave Love <d.love@dl.ac.uk>
* libU77/vxtidate_.c: Correct day/month argument order.
* f2cext.c: Likewise.
1997-07-07 Dave Love <d.love@dl.ac.uk>
* f2cext.c: Add alarm_.
* Makefile.in, libU77/Makefile.in: Add alarm_.
* libU77/alarm_.c: New file.
1997-06-26 Dave Love <d.love@dl.ac.uk>
* configure.in: Generally use prefix `g77_' for cached values
we've invented, not `ac_'.
Tue Jun 24 18:50:06 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libI77/ilnw.c (s_wsni): Call f_init() here.
(s_wsli): Ditto.
(e_wsli): Turn off "doing I/O" flag here.
1997-06-20 Dave Love <d.love@dl.ac.uk>
* runtime/configure.in: Check for cygwin32 after Mumit Khan (but
differently); if cygwin32 define NON_UNIX_STDIO and don't define
NON_ANSI_RW_MODES.
Tue Jun 01 06:26:29 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libI77/rsne.c (nl_init): Don't call f_init() here,
since s_rsne() already does.
(c_lir): Call f_init() here instead.
* libI77/rsli.c (e_rsli): Turn off "doing I/O" flag here.
* libI77/sue.c (e_rsue): Ditto.
Sun Jun 22 23:27:22 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libI77/fio.h (err): Mark I/O as no longer in progress
before returning a non-zero error indicator (since
that tells the caller to jump over the remaining I/O
calls, including the corresponding `e_whatever' call).
* libI77/err.c (endif): Ditto.
* libI77/sfe.c (e_wsfe): Ditto.
* libI77/lread.c (ERR): Ditto.
* libI77/lread.c (l_read): Ditto by having quad case
use ERR, not return, to return non-zero error code.
Sat Jun 21 12:31:28 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libI77/open.c (fk_open): Temporarily turn off
"doing I/O" flag during f_open() call to avoid recursive
I/O error.
Tue Jun 17 22:40:47 1997 Craig Burley <burley@gnu.ai.mit.edu>
* err.c, close.c, rewind.c, inquire.c, backspace.c, endfile.c,
iio.c, open.c, Version.c, sfe.c, wsle.c, rsne.c, sue.c, rsfe.c,
lread.c, wsfe.c, fio.h, due.c, dfe.c: Change f__init from
`flag' to `int' and to signal not just whether initialization
has happened (bit 0), but also whether I/O is in progress
already (bit 1). Consistently produce a clear diagnostic
in cases of recursive I/O. Avoid infinite recursion in
f__fatal, in case sig_die triggers another error. Don't
output info on internals if not initialized in f__fatal. Don't
bother closing units in f_exit if initialization hasn't
happened.
Tue Jun 10 12:57:44 1997 Craig Burley <burley@gnu.ai.mit.edu>
Update to Netlib version of 1997-06-09:
* libI77/err.c, libI77/lread.c, libI77/rdfmt.c,
libI77/wref.c: Move some #include's around.
Mon Jun 9 18:11:56 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libU77/kill_.c (kill_): KR_headers version needed
`*' in front of args in decls.
Sun May 25 03:16:53 1997 Craig Burley <burley@gnu.ai.mit.edu>
Update to Netlib version of 1997-05-24:
* libF77/README, libF77/Version.c, libF77/main.c,
libF77/makefile, libF77/s_paus.c, libF77/signal1.h,
libF77/signal_.c, libF77/z_div.c, libI77/Notice,
libI77/README, libI77/Version.c, libI77/dfe.c,
libI77/err.c, libI77/fmt.c, libI77/makefile,
libI77/rawio.h: Apply many, but not all, of the changes
made to libf2c since last update.
* libF77/Makefile.in (MISC), Makefile.in (MISC): Rename
exit.o to exit_.o to go along with Netlib.
* libF77/signal.c: Make the prologue much simpler than
Netlib has it.
Sun May 18 20:56:02 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libU77/unlink_.c, libU77/stat_.c, libU77/symlnk_.c,
libU77/chmod_.c: g_char first arg is const.
* libU77/chmod_.c: s_cat expects ftnlen[], not int[] or
integer[], change types of array and variables
accordingly.
May 7 1997 Daniel Pettet <dan.pettet@bchydro.bc.ca>
* libU77/dbes_.c: Commented out the code in the
same way the bes* routines are commented out. This
was done because corresponding C routines are referenced
directly in com-rt.def.
Mon May 5 13:56:02 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libU77/stat_.c: Reverse KR/ANSI decls of g_char().
Apr 18 1997 Daniel Pettet <dan.pettet@bchydro.bc.ca>
* libF77/F77_aloc.c, libF77/abort_.c, libF77/derf_.c,
libF77/derfc_.c, libF77/ef1asc_.c, libF77/ef1cmc_.c,
libF77/erf_.c, libF77/erfc_.c, libF77/exit.c,
libF77/getarg_.c, libF77/getenv_.c, libF77/iargc_.c,
libF77/s_cat.c, libF77/signal_.c, libF77/system_.c,
libI77/close.c, libI77/ftell_.c, libU77/access_.c,
libU77/bes.c, libU77/chdir_.c, libU77/chmod_.c, libU77/ctime_.c,
libU77/date_.c, libU77/dbes.c, libU77/dtime_.c, libU77/etime_.c,
libU77/fdate_.c, libU77/fgetc_.c, libU77/flush1_.c,
libU77/fnum_.c, libU77/fputc_.c, libU77/fstat_.c,
libU77/gerror_.c, libU77/getcwd_.c, libU77/getgid_.c,
libU77/getlog_.c, libU77/getpid_.c, libU77/getuid_.c,
libU77/gmtime_.c, libU77/hostnm_.c, libU77/idate_.c,
libU77/ierrno_.c, libU77/irand_.c, libU77/isatty_.c,
libU77/itime_.c, libU77/kill_.c, libU77/link_.c,
libU77/lnblnk_.c, libU77/ltime_.c, libU77/mclock_.c,
libU77/perror_.c, libU77/rand_.c, libU77/rename_.c,
libU77/secnds_.c, libU77/second_.c, libU77/sleep_.c,
libU77/srand_.c, libU77/stat_.c, libU77/symlnk_.c,
libU77/system_clock_.c, libU77/time_.c, libU77/ttynam_.c,
libU77/umask_.c, libU77/unlink_.c, libU77/vxtidate_.c,
libU77/vxttime_.c: Completed renaming routines that are directly
callable from g77 to internal names of the form
G77_xxxx_0 that are known as intrinsics by g77.
Apr 8 1997 Daniel Pettet <dan.pettet@bchydro.bc.ca>
* Makefile.in: Add libU77/mclock_.o and libU77/symlnk_.o to UOBJ.
* libU77/Makefile.in: Add mclock_.c to SRCS.
Add mclock_.o and symlnk_.o to OBJS.
Add mclock_.o dependency.
Apr 8 1997 Daniel Pettet <dan.pettet@bchydro.bc.ca>
* libU77/symlnk_.c: Added a couple of (char*) casts to malloc
to silence the compiler.
1997-03-17 Dave Love <d.love@dl.ac.uk>
* libU77/access_.c, libU77/chdir_.c, libU77/chmod_.c,
libU77/link_.c, libU77/lstat_.c, libU77/rename_.c, libU77/stat_.c,
libU77/symlnk_.c, libU77/u77-test.f, libU77/unlink_.c: Strip
trailing blanks from file names for consistency with other
implementations (notably Sun's).
* libU77/chmod_.c: Quote the file name given to the shell.
Mon Mar 10 00:19:17 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libI77/uio.c (do_ud) [PAD_UDread]: Add semicolon to err()
invocation when macro not defined (from Mumit Khan
<khan@xraylith.wisc.edu>).
Fri Feb 28 13:16:50 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Version 0.5.20 released.
Wed Feb 26 20:28:53 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Makefile.in: $(MAKE) invocations now explicitly
specify `-f Makefile', just in case the `makefile's
from the netlib distribution would get used instead.
Mon Feb 24 16:43:39 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libU77/Makefile.in (check): Specify driver, and
don't bother enabling already-enabled intrinsic groups.
Also, get the $(srcdir) version of u77-test.f.
Sat Feb 22 14:08:42 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libU77/u77-test.f: Explicitly declare intrinsics, get
rid of useless CHARACTER declarations on intrinsics (maybe
someday appropriate to implement meaning of that in g77
and restore them?).
Add spin loop just to fatten up the timings a bit.
Clarify ETIME output as having three fields.
Call TIME with CHARACTER*8, not CHARACTER*6, argument.
Call new SECOND intrinsic subroutine, after calling
new DUMDUM subroutine just to ensure the correct value
doesn't get left around in a register or something.
Thu Feb 20 15:22:42 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libU77/bes.c: Comment out all the code, as g77 avoids actually
calling it, going directly to the system's library instead.
Mon Feb 17 02:27:41 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libU77/fgetc_.c (fgetc_): Allow return value to be
CHARACTER*(*), properly handle CHARACTER*0 and blank-pad
CHARACTER*n where n>1.
Tue Feb 11 14:12:19 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Makefile.in: Clarify role of $(srcdir) here. Fix
various targets accordingly. Don't rely at all on
gcc/f/include/ being a link to gcc/include/ -- just
use it directly.
(${srcdir}/configure, ${srcdir}/libU77/configure):
Remove the config.cache files in build directory before
cd'ing to source directory as well.
* libF77/Makefile.in, libI77/Makefile.in (ALL_CFLAGS):
Include `-I.' to pick up build directory.
Use gcc/include/ directly.
* libU77/Makefile.in (ALL_CFLAGS): Include `-I$(srcdir)'
to pick up source directory.
(OBJS): Fix typo in `chmod_.o' (was `chmod.o').
Mon Feb 10 12:54:47 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Makefile.in (UOBJ), libU77/Makefile.in (OBJS): Add
libU77/chmod_.o to list of objects.
* libU77/chmod_.c: Fix up headers.
Fix implementation to not prematurely truncate command
string and make room for trailing null.
* libU77/ctime_.c: Incoming xstime argument is now longint.
* libU77/mclock_.c: Now returns longint.
* libU77/time_.c: Now returns longint.
1997-02-10 Dave Love <d.love@dl.ac.uk>
* etime_.c, dtime_.c: Typo rounded times to seconds.
* date_.c: Add missing return.
* hostnm_.c: #include unistd.h.
Sat Feb 8 03:30:19 1997 Craig Burley <burley@gnu.ai.mit.edu>
INTEGER*8 support built in to f2c.h and libf2c (since
gcc will be used to compile relevant code anyway):
* Makefile.in, libF77/Makefile.in: Add pow_qq.o,
qbitbits.o, and qbitshft.o to $POW and $F90BIT macros,
as appropriate.
* f2c.h.in: Define appropriate types and macros.
Place #error directive correctly.
* configure.in: Determine appropriate types for long
integer (F2C_LONGINT).
Meanwhile, quote strings in #error, for consistency.
Fix restoring of ac_cpp macro.
* configure: Regenerated using autoconf-2.12.
* libF77/Version.c, libI77/Version.c, libU77/Version.c:
Update version numbers.
Change names and code for g77-specific version-printing
routines (shorter names should be safer to link on
weird, 8-char systems).
* libF77/c_cos.c, libF77/c_div.c, libF77/c_exp.c,
libF77/c_log.c, libF77/c_sin.c, libF77/c_sqrt.c,
libF77/d_cnjg.c, libF77/pow_zi.c, libF77/r_cnjg.c,
libF77/z_cos.c, libF77/z_div.c, libF77/z_exp.c,
libF77/z_log.c, libF77/z_sin.c, libF77/z_sqrt.c:
Changed to work properly even when result is aliased
with any inputs.
* libF77/makefile, libI77/makefile: Leave these in
the g77 distribution, so it is easier to track changes
to official libf2c.
* libF77/signal_.c: Eliminate redundant `return 0;'.
* libI77/fio.h (err, errfl): Fix these so they work
(and must be expressed) as statements.
Fix up many users of err() to include trailing semicolon.
* Incorporate changes by Bell Labs to libf2c through 1997-02-07.
1997-02-06 Dave Love <d.love@dl.ac.uk>
* libU77/etime_.c, libU77/dtime_.c: Fix getrusage stuff.
* libU77/config.h.in: Regenerate for HAVE_GETRUSAGE.
* libU77/Makefile.in, libI77/Makefile.in, libF77/Makefile.in:
Redo *clean targets; distclean and maintainer-clean remove the stage?
and include links. This probably want looking at further.
Wed Feb 5 00:21:23 1997 Craig Burley <burley@gnu.ai.mit.edu>
Add libU77 library from Dave Love <d.love@dl.ac.uk>:
* Makefile.in: Add libU77 directory, rules, etc.
* configure.in: New libU77 directory, Makefile, etc.
* Makefile.in, libF77/Makefile.in, libI77/Makefile.in,
libU77/Makefile.in: Reorganize these so $(AR) commands
handled by the top-level Makefile instead of the
subordinates. This permits it to do $(AR) only when
one or more object files actually change, instead of
having to force-update it as was necessary before.
And that had the disadvantage of requiring, e.g., user
root to have access to $(AR) to the library simply to
install g77, which might be problematic on an NFS setup.
(mostlyclean, clean, distclean, maintainer-clean):
Properly handle these rules.
* Makefile.in: Don't invoke config.status here -- let
compiler-level stuff handle all that.
* err.c [MISSING_FILE_ELEMS]: Declare malloc in this case
too, so it doesn't end up as an integer.
Sat Feb 1 02:43:48 1997 Craig Burley <burley@gnu.ai.mit.edu>
* libF77/Makefile.in: More fixup for $(F90BIT) -- wasn't
in list for ar command, and it wasn't correctly listed
in the list of things depending on f2c.h.
* f2c.h.in: Fix up #error directive.
1997-01-31 Dave Love <d.love@dl.ac.uk>
* libF77/Makefile.in ($(lib)): Add $(F90BIT); shouldn't exclude
stuff f2c needs so we can share the library.
Sat Jan 18 19:39:03 1997 Craig Burley <burley@gnu.ai.mit.edu>
* configure.in: No longer define ALWAYS_FLUSH, the
resulting performance is too low.
Wed Dec 18 12:06:02 1996 Craig Burley <burley@gnu.ai.mit.edu>
Patch from Mumit Khan <khan@xraylith.wisc.edu>:
* libF77/s_paus.c: Add __CYGWIN32__ to list of macros
controlling how to pause.
Sun Dec 1 21:25:27 1996 Craig Burley <burley@gnu.ai.mit.edu>
* configure: Regenerated using autoconf-2.12.
Mon Nov 25 21:16:15 1996 Craig Burley <burley@gnu.ai.mit.edu>
* configure: Regenerated using autoconf-2.11.
1996-11-19 Dave Love <d.love@dl.ac.uk>
* libI77/backspace.c: Include sys/types.h for size_t.
Wed Nov 6 14:17:27 1996 Craig Burley <burley@gnu.ai.mit.edu>
* f2c.h.in: Properly comment out the unsupported stuff so
we don't get build-time errors.
* libF77/Version.c, libI77/Version.c: Restore macro definition
of version information.
* libI77/Makefile.in (OBJ): Add ftell_.o to list of objects.
* libI77/uio.c (do_ud): Fix up casts in PAD_UDread case just
like they were fixed in the other case.
Thu Oct 31 22:27:45 1996 Craig Burley <burley@gnu.ai.mit.edu>
* libI77/ftell_.c (fseek_): Map incoming whence argument to
system's actual SEEK_CUR, SEEK_SET, or SEEK_END macro for
fseek(), and crash (gracefully) if the argument is invalid.
1996-10-19 Dave Love <d.love@dl.ac.uk>
* configure.in: Add check that we have the tools to cross-compile
if appropriate.
(NO_EOF_CHAR_CHECK,Skip_f2c_Undefs): Define.
* libF77/Makefile.in (F90BIT): New routines from Netlib.
* f2c.h.in:
Use more sanitary #error (indented for K&R compliance if necessary) if
f2c_i2 defined.
Sync with Netlib: Add `uninteger'. (Commented out) integer*8 stuff.
bit_{test,clear,set} macros.
1996-10-19 Dave Love <d.love@dl.ac.uk>
Update to Netlib version of 1996-09-26.
* libI77/Version.c: Use <stdio.h>, not "stdio.h".
* libF77/Version.c: Likewise.
Wed Aug 28 13:25:29 1996 Dave Love <d.love@dl.ac.uk>
* libI77/rsne.c (x_rsne): Use size_t instead of int.
* libI77/endfile.c (copy): Use size_t in place of int.
Wed Aug 28 13:22:20 1996 Dave Love <d.love@dl.ac.uk>
* libI77/backspace.c (f_back): Cast fread arg to size_t.
Tue Aug 27 19:11:30 1996 Dave Love <d.love@dl.ac.uk>
* libI77/Version.c: Supply */ to avoid apparent nested comment.
Tue Aug 20 09:21:43 1996 Dave Love <d.love@dl.ac.uk>
* libF77/Makefile.in (ALL_CFLAGS): Fix missing ../ for include.
* libI77/Makefile.in (ALL_CFLAGS): Likewise.
Sat Aug 17 13:00:47 1996 Dave Love <d.love@dl.ac.uk>
* (libF77/qbitshft.c, libF77/qbitbits.c, libF77/lbitshft.c,
libF77/lbitbits.c): New file from Netlib. qbit... not currently
compiled.
Sun Jul 7 18:06:33 1996 Dave Love <d.love@dl.ac.uk>
* libF77/z_sqrt.c, libF77/z_sin.c, libF77/z_exp.c, libF77/z_log.c,
libF77/system_.c, libF77/z_cos.c, libF77/signal_.c,
libF77/s_stop.c, libF77/sig_die.c, libF77/s_paus.c,
libF77/s_rnge.c, libF77/s_cat.c, libF77/r_tan.c, libF77/r_tanh.c,
libF77/r_sinh.c, libF77/r_sqrt.c, libF77/r_sin.c, libF77/r_mod.c,
libF77/r_nint.c, libF77/r_lg10.c, libF77/r_log.c, libF77/r_exp.c,
libF77/r_int.c, libF77/r_cosh.c, libF77/r_atn2.c, libF77/r_cos.c,
libF77/r_asin.c, libF77/r_atan.c, libF77/r_acos.c,
libF77/pow_dd.c, libF77/pow_zz.c, libF77/main.c, libF77/i_dnnt.c,
libF77/i_nint.c, libF77/h_dnnt.c, libF77/h_nint.c, libF77/exit.c,
libF77/d_tan.c, libF77/d_tanh.c, libF77/d_sqrt.c, libF77/d_sin.c,
libF77/d_sinh.c, libF77/d_mod.c, libF77/d_nint.c, libF77/d_log.c,
libF77/d_int.c, libF77/d_lg10.c, libF77/d_cosh.c, libF77/d_exp.c,
libF77/d_atn2.c, libF77/d_cos.c, libF77/d_atan.c, libF77/d_acos.c,
libF77/d_asin.c, libF77/c_sqrt.c, libF77/cabs.c, libF77/c_sin.c,
libF77/c_exp.c, libF77/c_log.c, libF77/c_cos.c, libF77/F77_aloc.c,
libF77/abort_.c, libI77/xwsne.c, libI77/wref.c, libI77/util.c,
libI77/uio.c, libI77/rsne.c, libI77/rdfmt.c, libI77/rawio.h,
libI77/open.c, libI77/lread.c, libI77/inquire.c, libI77/fio.h,
libI77/err.c, libI77/endfile.c, libI77/close.c:
Use #include <...>, not #include "..." for mkdeps
Sat Jul 6 21:39:21 1996 Dave Love <d.love@dl.ac.uk>
* libI77/ftell_.c: Added from Netlib distribution.
Sat Mar 30 20:57:24 1996 Dave Love <d.love@dl.ac.uk>
* configure.in: Eliminate explicit use of
{RANLIB,AR}_FOR_TARGET.
* Makefile.in: Likewise.
* libF77/Makefile.in: Likewise.
* libI77/Makefile.in: Likewise.
* configure: Regenerated.
Sat Mar 30 21:02:03 1996 Dave Love <d.love@dl.ac.uk>
* Makefile.in: Eliminate explicit use of
{RANLIB,AR}_FOR_TARGET.
Tue Mar 26 23:39:59 1996 Dave Love <d.love@dl.ac.uk>
* Makefile.in: Remove hardwired RANLIB and RANLIB_TEST (unnoted
change).
Mon Mar 25 21:04:56 1996 Craig Burley <burley@gnu.ai.mit.edu>
* Incorporate changes by Bell Labs to libf2c through 1996-03-23,
including changes to dmg and netlib email addresses.
Tue Mar 19 13:10:02 1996 Craig Burley <burley@gnu.ai.mit.edu>
* Incorporate changes by AT&T/Bellcore to libf2c through 1996-03-19.
* Makefile.in (rebuilt): New target.
* lib[FI]77/Makefile.in: Use $AR_FOR_TARGET, not $AR.
Tue Mar 19 12:53:19 1996 Dave Love <d.love@dl.ac.uk>
* configure.in (ac_cpp): #include <stdio.h> instead
of <features.h>.
Tue Mar 19 12:52:09 1996 Mumit Khan <khan@xraylith.wisc.edu>
* configure.in (ac_cpp): For f2c integer type,
add -I$srcdir/../.. to make it work on mips-ultrix4.2.
Sat Mar 9 17:37:15 1996 Craig Burley <burley@gnu.ai.mit.edu>
* libI77/Makefile.in (.c.o): Add -DAllow_TYQUAD, to enable
I/O support for INTEGER*8.
* f2c.h.in: Turn on longint type.
Fri Dec 29 18:22:01 1995 Craig Burley <burley@gnu.ai.mit.edu>
* Makefile.in: Reorganize the *clean rules to more closely
parallel gcc's.
* lib[FI]77/Makefile.in: Ignore error from $(AR) command,
in case just doing an install and installer has no write
access to library (this is a kludge fix -- perhaps install
targets should never try updating anything?).
Sat Nov 18 19:37:22 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.17 released.
Thu Nov 16 07:20:35 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Incorporate changes by AT&T/Bellcore to libf2c through 1995-11-15.
Fri Sep 22 02:19:59 1995 Craig Burley (burley@gnu.ai.mit.edu)
* libI77/backspace.c, libI77/close.c, libI77/endfile.c,
libI77/fio.h, libI77/inquire.c, libI77/rawio.h,
libF77/s_paus.c: Not an MSDOS system if GO32
is defined, in the sense that the run-time environment
is thus more UNIX-like.
Wed Sep 20 02:24:51 1995 Craig Burley (burley@gnu.ai.mit.edu)
* libF77/Makefile.in, libI77/Makefile.in: Comment out `ld -r -x'
and `mv' line pairs, since `-x' isn't supported on systems
such as Solaris, and these lines don't seem to do anything
useful after all.
Wed Aug 30 15:58:35 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.16 released.
* Incorporate changes by AT&T/Bellcore to libf2c through 950829.
Mon Aug 28 12:50:34 1995 Craig Burley (burley@gnu.ai.mit.edu)
* libF77/Makefile.in, libI77/Makefile.in ($(lib)): Force ar'ing
and ranlib'ing of libf2c.a, else after rm'ing libf2c.a and
doing a make, only libI77 or libF77 would be added to
the newly created archive.
Also, instead of `$?' list all targets explicitly so all
objects are updated in libf2c.a even if only one actually
needs recompiling, for similar reason -- we can't easily tell
if a given object is really up-to-date in libf2c.a, or even
present there.
Sun Aug 27 14:54:24 1995 Craig Burley (burley@gnu.ai.mit.edu)
* libF77/Makefile.in, libI77/Makefile.in: Fix spacing so
initial tabs are present in all appropriate places.
Move identical $(AR) commands in if then/else clauses
to single command preceding if.
(.c.o, Version[FI].o): Use $@ instead of $* because AIX (RS/6000)
says $@ means source, not object, basename, and $@ seems to work
everywhere.
Wed Aug 23 15:44:25 1995 Craig Burley (burley@gnu.ai.mit.edu)
* libF77/system_.c (system_): Declare as returning `ftnint',
consistent with signal_, instead of defaulting to `int'.
Hope dmg@research.att.com agrees, else probably will
change to whatever he determines is correct (and change
g77 accordingly).
Thu Aug 17 08:46:17 1995 Craig Burley (burley@gnu.ai.mit.edu)
* libI77/rsne.c (s_rsne): Call f_init if not already done.
Thu Aug 17 04:35:28 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Incorporate changes by Bellcore to libf2c through 950817.
And this text is for EMACS: (foo at bar).
Wed Aug 16 17:33:06 1995 Craig Burley (burley@gnu.ai.mit.edu)
* libF77/Makefile.in, libI77/Makefile.in (CFLAGS): Put -g1
after configured CFLAGS but before GCC_CFLAGS, so by default
the libraries are built with minimal debugging information.
Fri Jul 28 10:30:15 1995 Dave Love <d.love@dl.ac.uk>
* libI77/open.c (f_open): Call f_init if not already done.
Sat Jul 1 19:31:56 1995 Craig Burley (burley@gnu.ai.mit.edu)
* libF77/system_.c (system_): Make buff one byte bigger so
following byte doesn't get overwritten by call with large
string.
Tue Jun 27 23:28:16 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Incorporate changes by Bellcore to libf2c through 950613.
* libF77/Version.c (__G77_LIBF77_VERSION__): Add this string
to track g77 mods to libf2c.
* libI77/Version.c (__G77_LIBI77_VERSION__): Add this string
to track g77 mods to libf2c.
* libI77/rawio.h: #include <rawio.h> only conditionally,
using macro intended for that purpose.
Fri May 19 11:20:00 1995 Craig Burley (burley@gnu.ai.mit.edu)
* configure.in: Incorporate change made by d.love,
* configure: Regenerated.
Wed Apr 26 21:08:57 BST 1995 Dave Love <d.love@dl.ac.uk>
* configure.in: Fix quoting problem in atexit check.
* configure: Regenerated (with current autoconf).
Wed Mar 15 12:49:58 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Incorporate changes by Bellcore to libf2c through 950315.
Sun Mar 5 18:54:29 1995 Craig Burley (burley@gnu.ai.mit.edu)
* README: Tell people not to read lib[fi]77/README.
Wed Feb 15 14:30:58 1995 Craig Burley (burley@gnu.ai.mit.edu)
* configure.in: Update copyright notice at top of file.
* f2c.h.in (f2c_i2): Make sure defining this crashes compilations.
* libI77/Makefile.in (F2C_H): Fix typo in definition of this
symbol (was FF2C_H=...).
Sun Feb 12 13:39:36 1995 Craig Burley (burley@gnu.ai.mit.edu)
* README: Remove some obsolete items.
Add date.
* TODO: Add date.
Sat Feb 11 22:07:54 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Makefile.in (libf77, libi77): Add rules to .PHONY list.
* f2c.h.in (flag): Make same type as friends.
* libF77/Makefile.in (libf77): Rename to $(lib), remove from
.PHONY list. Fix some typos.
* libI77/Makefile.in (libi77): Rename to $(lib), remove from
.PHONY list. Fix some typos.
Thu Feb 2 12:22:41 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Makefile.in (libF77/Makefile): Fix typos in this rule's name
and dependencies.
* libF77/Makefile.in (libf77): Add rule to .PHONY list.
* libI77/Makefile.in (libi77): Add rule to .PHONY list.

108
libf2c/ChangeLog.egcs Normal file
View File

@ -0,0 +1,108 @@
Sun Feb 1 02:36:33 1998 Richard Henderson <rth@cygnus.com>
* Previous contents of gcc/f/runtime moved into toplevel
"libf2c" directory.
Sun Feb 1 01:42:47 1998 Mumit Khan <khan@xraylith.wisc.edu>
* libU77/configure.in (getlogin,getgid,getuid, kill,link,ttyname):
Check.
* libU77/config.h.in (HAVE_GETLOGIN, HAVE_GETGID, HAVE_GETUID,
HAVE_KILL, HAVE_LINK, HAVE_TTYNAME): New defs.
* libU77/getlog_.c: Conditionalize for target platform. Set errno
to ENOSYS if target libc doesn't have the function.
* libU77/getgid_.c: Likewise.
* libU77/getuid_.c: Likewise.
* libU77/kill_.c: Likewise.
* libU77/link_.c: Likewise.
* libU77/ttynam_.c: Likewise.
Sun Jan 18 20:01:37 1998 Toon Moene <toon@moene.indiv.nluug.nl>
* libI77/backspace.c: (f_back): Use type `uiolen' to determine size
of record length specifier.
Sat Jan 17 22:40:31 1998 Mumit Khan <khan@xraylith.wisc.edu>
* libU77/configure.in (sys/param.h,sys/times.h): Check.
(times,alarm): Likewise.
* libU77/config.h.in (HAVE_SYS_PARAM_H, HAVE_SYS_TIMES_H,
HAVE_ALARM, HAVE_TIMES): New defs.
* libU77/alarm_.c: Conditionalize for target platform. Set errno
to ENOSYS if target libc doesn't have the function.
* libU77/dtime_.c: Likewise.
* libU77/etime_.c: Likewise.
* libU77/sys_clock_.c: Likewise.
* configure.in (NON_UNIX_STDIO): Define if MINGW32.
(NON_ANSI_RW_MODE): Do not define for CYGWIN32 or MINGW32.
* libI77/rawio.h: Don't providing conflicting declarations for
read() and write(). MINGW32 header files use "const" quals.
* libF77/s_paus.c: _WIN32 does not have pause().
Tue Nov 18 09:49:04 1997 Mumit Khan (khan@xraylith.wisc.edu)
* libI77/close.c (f_exit): Reset f__init so that f_clos does not
(incorrectly) think there is an I/O recursion when program is
interrupted.
Sat Nov 1 18:03:42 1997 Jeffrey A Law (law@cygnus.com)
* libF77/signal_.c: Undo last change until we can fix it right.
Wed Oct 15 10:06:29 1997 Richard Henderson <rth@cygnus.com>
* libF77/signal_.c (G77_signal_0): Make return type sig_pf as well.
* libI77/fio.h: Include <string.h> if STDC_HEADERS.
* libU77/chmod_.c: Likewise.
Tue Oct 7 18:22:10 1997 Richard Henderson <rth@cygnus.com>
* Makefile.in (CGFLAGS): Don't force -g0.
* libF77/Makefile.in, libI77/Makefile.in, libU77/Makefile.in: Likewise.
Mon Oct 6 14:16:46 1997 Jeffrey A Law (law@cygnus.com)
* Makefile.in (distclean): Do a better job at cleaning up.
Wed Oct 1 01:46:16 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
* libU77/sys_clock_.c: File renamed from system_clock_.c.
libU77/Makefile.in, Makefile.in : Reference sys_clock_.*, not
system_clock_.*.
* libU77/dtime_.c (clk_tck): Try also HZ macro.
* libU77/access.c (G77_access_0): Check malloc return value against 0,
not NULL.
libU77/getlog_.c, libU77/ttynam_.c, libU77/chdir_.c: Ditto.
libU77/chmod_.c, libU77/rename_.c: Ditto.
1997-09-19 Dave Love <d.love@dl.ac.uk>
* libU77/dtime_.c (G77_dtime_0): Fix types in HAVE_GETRUSAGE case
so as not to truncate results to integer values.
* libU77/Version.c: Bump.
Thu Sep 18 16:58:46 1997 Jeffrey A Law (law@cygnus.com)
* Makefile.in (stamp-lib): Don't use '$?', explicitly
list the variables containing the object files to include
in libf2c.a
Fri Sep 5 00:18:17 1997 Jeffrey A Law (law@cygnus.com)
* Makefile.in (clean): Don't remove config.cache.
(distclean): Do it here instead.
Tue Aug 26 20:14:08 1997 Robert Lipe (robertl@dgii.com)
* hostnm_.c: Include errno.h
Mon Aug 25 23:26:05 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
* Makefile.in (mostlyclean, clean): Check if Makefile exists
before using it. Remove stamp-*.
(stamp-libi77, stamp-libf77, stamp-libu77): New.
(stamp-lib): Only depend on stamp-libi77 stamp-libf77
stamp-libu77

228
libf2c/Makefile.in Normal file
View File

@ -0,0 +1,228 @@
# Makefile for GNU F77 compiler runtime.
# Copyright (C) 1995-1997 Free Software Foundation, Inc.
# Contributed by Dave Love (d.love@dl.ac.uk).
#
#This file is part of GNU Fortran.
#
#GNU Fortran is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2, or (at your option)
#any later version.
#
#GNU Fortran is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with GNU Fortran; see the file COPYING. If not, write to
#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#02111-1307, USA.
SHELL = /bin/sh
#### Start of system configuration section. ####
srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = $(exec_prefix)/bin
libdir = $(exec_prefix)/lib
datadir = $(prefix)/lib
mandir = $(prefix)/man
infodir = $(prefix)/info
includedir = $(prefix)/include
docdir = $(datadir)/doc
TO_TOPDIR = ..
INSTALL = $(srcdir)/$(TO_TOPDIR)/install-sh -c
INSTALL_PROGRAM = $(INSTALL)
INSTALL_DATA = $(INSTALL)
AR = `if test -f $(TO_TOPDIR)/binutils/ar; then \
echo $(TO_TOPDIR)/binutils/ar; else echo ar; fi`
AR_FLAGS = rc
RANLIB = `if test -f $(TO_TOPDIR)/binutils/ranlib; then \
echo $(TO_TOPDIR)/binutils/ranlib; else echo ranlib; fi`
MAKEINFO = `if test -f $(TO_TOPDIR)/texinfo/C/makeinfo; then \
echo $(TO_TOPDIR)/texinfo/C/makeinfo; else echo makeinfo; fi`
CC = gcc
CFLAGS = -g
LIBCFLAGS = $(CFLAGS)
# List of variables to pass to sub-makes. This should not be needed'
# by GNU make or Sun make (both of which pass command-line variable'
# overrides thouh $(MAKE)) but may be needed by older versions.'
FLAGS_TO_PASS= \
"SHELL=$(SHELL)" \
"INSTALL=$(INSTALL)" \
"INSTALL_DATA=$(INSTALL_DATA)" \
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
"prefix=$(prefix)" \
"exec_prefix=$(exec_prefix)" \
"tooldir=$(tooldir)" \
"AR=$(AR)" \
"AR_FLAGS=$(AR_FLAGS)" \
"CC=$(CC)" \
"CFLAGS=$(CFLAGS)" \
"RANLIB=$(RANLIB)" \
"LIBCFLAGS=$(LIBCFLAGS)" \
"PICFLAG=$(PICFLAG)" \
"RUNTESTFLAGS=$(RUNTESTFLAGS)"
lib = libf2c.a
MISC = libF77/F77_aloc.o libF77/VersionF.o libF77/main.o libF77/s_rnge.o \
libF77/abort_.o libF77/getarg_.o libF77/iargc_.o libF77/getenv_.o \
libF77/signal_.o libF77/s_stop.o libF77/s_paus.o libF77/system_.o \
libF77/cabs.o libF77/derf_.o libF77/derfc_.o libF77/erf_.o \
libF77/erfc_.o libF77/sig_die.o libF77/exit_.o
POW = libF77/pow_ci.o libF77/pow_dd.o libF77/pow_di.o libF77/pow_hh.o \
libF77/pow_ii.o libF77/pow_ri.o libF77/pow_zi.o libF77/pow_zz.o \
libF77/pow_qq.o
CX = libF77/c_abs.o libF77/c_cos.o libF77/c_div.o libF77/c_exp.o \
libF77/c_log.o libF77/c_sin.o libF77/c_sqrt.o
DCX = libF77/z_abs.o libF77/z_cos.o libF77/z_div.o libF77/z_exp.o \
libF77/z_log.o libF77/z_sin.o libF77/z_sqrt.o
REAL = libF77/r_abs.o libF77/r_acos.o libF77/r_asin.o libF77/r_atan.o \
libF77/r_atn2.o libF77/r_cnjg.o libF77/r_cos.o libF77/r_cosh.o \
libF77/r_dim.o libF77/r_exp.o libF77/r_imag.o libF77/r_int.o \
libF77/r_lg10.o libF77/r_log.o libF77/r_mod.o libF77/r_nint.o \
libF77/r_sign.o libF77/r_sin.o libF77/r_sinh.o libF77/r_sqrt.o \
libF77/r_tan.o libF77/r_tanh.o
DBL = libF77/d_abs.o libF77/d_acos.o libF77/d_asin.o libF77/d_atan.o \
libF77/d_atn2.o libF77/d_cnjg.o libF77/d_cos.o libF77/d_cosh.o \
libF77/d_dim.o libF77/d_exp.o libF77/d_imag.o libF77/d_int.o \
libF77/d_lg10.o libF77/d_log.o libF77/d_mod.o libF77/d_nint.o \
libF77/d_prod.o libF77/d_sign.o libF77/d_sin.o libF77/d_sinh.o \
libF77/d_sqrt.o libF77/d_tan.o libF77/d_tanh.o
INT = libF77/i_abs.o libF77/i_dim.o libF77/i_dnnt.o libF77/i_indx.o \
libF77/i_len.o libF77/i_mod.o libF77/i_nint.o libF77/i_sign.o
HALF = libF77/h_abs.o libF77/h_dim.o libF77/h_dnnt.o libF77/h_indx.o \
libF77/h_len.o libF77/h_mod.o libF77/h_nint.o libF77/h_sign.o
CMP = libF77/l_ge.o libF77/l_gt.o libF77/l_le.o libF77/l_lt.o \
libF77/hl_ge.o libF77/hl_gt.o libF77/hl_le.o libF77/hl_lt.o
EFL = libF77/ef1asc_.o libF77/ef1cmc_.o
CHAR = libF77/s_cat.o libF77/s_cmp.o libF77/s_copy.o
F90BIT = libF77/lbitbits.o libF77/lbitshft.o libF77/qbitbits.o \
libF77/qbitshft.o
FOBJ = $(MISC) $(POW) $(CX) $(DCX) $(REAL) $(DBL) $(INT) $(HALF) $(CMP) \
$(EFL) $(CHAR) $(F90BIT)
IOBJ = libI77/VersionI.o libI77/backspace.o libI77/close.o libI77/dfe.o \
libI77/dolio.o libI77/due.o libI77/endfile.o libI77/err.o \
libI77/fmt.o libI77/fmtlib.o libI77/iio.o libI77/ilnw.o \
libI77/inquire.o libI77/lread.o libI77/lwrite.o libI77/open.o \
libI77/rdfmt.o libI77/rewind.o libI77/rsfe.o libI77/rsli.o \
libI77/rsne.o libI77/sfe.o libI77/sue.o libI77/typesize.o \
libI77/uio.o libI77/util.o libI77/wref.o libI77/wrtfmt.o \
libI77/wsfe.o libI77/wsle.o libI77/wsne.o libI77/xwsne.o \
libI77/ftell_.o
UOBJ = libU77/VersionU.o libU77/gerror_.o libU77/perror_.o libU77/ierrno_.o \
libU77/itime_.o libU77/time_.o libU77/unlink_.o libU77/fnum_.o \
libU77/getpid_.o libU77/getuid_.o libU77/getgid_.o libU77/kill_.o \
libU77/rand_.o libU77/srand_.o libU77/irand_.o libU77/sleep_.o \
libU77/idate_.o libU77/ctime_.o libU77/etime_.o libU77/dtime_.o \
libU77/isatty_.o libU77/ltime_.o libU77/fstat_.o libU77/stat_.o \
libU77/lstat_.o libU77/access_.o libU77/link_.o libU77/getlog_.o \
libU77/ttynam_.o libU77/getcwd_.o libU77/vxttime_.o \
libU77/vxtidate_.o libU77/gmtime_.o libU77/fdate_.o libU77/secnds_.o \
libU77/bes.o libU77/dbes.o libU77/chdir_.o libU77/chmod_.o \
libU77/lnblnk_.o libU77/hostnm_.o libU77/rename_.o libU77/fgetc_.o \
libU77/fputc_.o libU77/umask_.o libU77/sys_clock_.o libU77/date_.o \
libU77/second_.o libU77/flush1_.o libU77/alarm_.o libU77/mclock_.o \
libU77/symlnk_.o
F2CEXT = abort derf derfc ef1asc ef1cmc erf erfc exit getarg getenv iargc \
signal system flush ftell fseek access besj0 besj1 besjn besy0 besy1 \
besyn chdir chmod ctime date dbesj0 dbesj1 dbesjn dbesy0 dbesy1 dbesyn \
dtime etime fdate fgetc fget flush1 fnum fputc fput fstat gerror \
getcwd getgid getlog getpid getuid gmtime hostnm idate ierrno irand \
isatty itime kill link lnblnk lstat ltime mclock perror rand rename \
secnds second sleep srand stat symlnk sclock time ttynam umask unlink \
vxtidt vxttim alarm
all: f2c.h $(lib)
$(lib): stamp-libf77 stamp-libi77 stamp-libu77 stamp-libe77
rm -f $(lib)
$(AR) $(AR_FLAGS) $(lib) $(FOBJ) $(IOBJ) $(UOBJ) $(F2CEXT:%=libE77/L%.o)
$(RANLIB) $(lib)
stamp-libi77: libI77/Makefile
rm -f stamp-libi77
cd libI77; $(MAKE) -f Makefile $(FLAGS_TO_PASS) all
touch stamp-libi77
stamp-libf77: libF77/Makefile
rm -f stamp-libf77
cd libF77; $(MAKE) -f Makefile $(FLAGS_TO_PASS) all
touch stamp-libf77
stamp-libu77: libU77/Makefile
rm -f stamp-libu77
cd libU77; $(MAKE) -f Makefile $(FLAGS_TO_PASS) all
touch stamp-libu77
stamp-libe77: $(srcdir)/f2cext.c
rm -fr libE77
mkdir libE77
for name in $(F2CEXT); \
do \
echo $${name}; \
$(CC) -c -I. -I$(srcdir) -I../../include $(CPPFLAGS) $(CFLAGS) \
$(CGFLAGS) -DL$${name} $(srcdir)/f2cext.c \
-o libE77/L$${name}.o; \
if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
done
touch stamp-libe77
${srcdir}/configure: ${srcdir}/configure.in
rm -f config.cache && cd ${srcdir} && autoconf && rm -f config.cache
${srcdir}/libU77/configure: ${srcdir}/libU77/configure.in
rm -f libU77/config.cache && cd ${srcdir}/libU77 && autoconf && rm -f config.cache
f2c.h: $(srcdir)/f2c.h.in
install:
$(INSTALL_DATA) $(lib) $(libdir)/$(lib).n
( cd $(libdir) ; $(RANLIB) $(lib).n )
mv -f $(libdir)/$(lib).n $(libdir)/$(lib)
$(INSTALL_DATA) f2c.h $(includedir)/f2c.h
mostlyclean:
-rm -f stamp-*
for i in libI77 libF77 libU77; do \
if [ -f $$i/Makefile ]; then \
cd $$i; $(MAKE) -f Makefile mostlyclean; cd ..; \
fi; \
done
rm -fr libE77
clean:
-rm -f config.log stamp-*
for i in libI77 libF77 libU77; do \
if [ -f $$i/Makefile ]; then \
cd $$i; $(MAKE) -f Makefile clean; cd ..; \
fi; \
done
rm -fr libE77
distclean: clean
-rm -f Makefile config.cache lib?77/Makefile config.status lib?77/config.status lib?77/config.cache lib?77/config.h f2c.h
maintainer-clean: distclean
-rm -f $(srcdir)/configure $(srcdir)/libU77/configure
rebuilt: ${srcdir}/configure ${srcdir}/libU77/configure
.PHONY: libf77 libi77 libu77 rebuilt mostlyclean clean distclean \
maintainer-clean all

46
libf2c/README Normal file
View File

@ -0,0 +1,46 @@
970811
This directory contains the f2c library packaged for use with g77 to configure
and build automatically (in principle!) as part of the top-level configure and
make steps. This depends on the makefile and configure fragments in ../f.
Some small changes have been made to the f2c distributions of lib[FI]77 which
come from <ftp:bell-labs.com/netlib/f2c/> and are maintained (excellently) by
David M. Gay <dmg@bell-labs.com>. See the Notice files for copyright
information. I'll try to get the changes rolled into the f2c distribution.
Files that come directly from netlib are either maintained in the
gcc/f/runtime/ directory under their original names or, if they
are not pertinent for g77's version of libf2c, under their original
names with `.netlib' appended. For example, gcc/f/runtime/permissions.netlib
is a copy of f2c's top-level`permissions' file in the netlib distribution.
In this case, it applies only to the relevant portions of the libF77/ and
libI77/ directories; it does not apply to the libU77/ directory, which is
distributed under different licensing arrangements. Similarly,
the `makefile.netlib' files in libF77/ and libI77/ are copies of
the respective `makefile' files in the netlib distribution, but
are not used when building g77's version of libf2c.
The `README.netlib' files in libF77/ and libI77/ thus might be
interesting, but should not be taken as guidelines for how to
configure and build libf2c in g77's distribution.
The packaging for auto-configuration was done by Dave Love <d.love@dl.ac.uk>.
Minor changes have been made by James Craig Burley <burley@gnu.ai.mit.edu>,
who probably broke things Dave had working. :-)
Among the user-visible changes (choices) g77 makes in its
version of libf2c:
- f2c.h configured to default to padding unformatted direct reads
(#define Pad_UDread), because that's the behavior most users
expect.
- f2c.h configured to default to outputting leading zeros before
decimal points in formatted and list-directed output, to be compatible
with many other compilers (#define WANT_LEAD_0). Either way is
standard-conforming, however, and you should try to avoid writing
code that assumes one format or another.
- dtime_() and etime_() are from Dave Love's libU77, not from
netlib's libF77.

17
libf2c/TODO Normal file
View File

@ -0,0 +1,17 @@
970811
TODO list for the g77 library
* `Makefile.in's should be brought up to standard; I'm not sure they
have a complete set of targets at present.
* Investigate building shared libraries on systems we know about
(probably in 0.5.22, using libtool-1.0 from the FSF, which looks
quite useful).
* Test cases.
* Allow the library to be stripped to save space.
* An interface to IEEE maths functions from libc where this makes
sense.

2850
libf2c/changes.netlib Normal file

File diff suppressed because it is too large Load Diff

2197
libf2c/configure vendored Executable file

File diff suppressed because it is too large Load Diff

391
libf2c/configure.in Normal file
View File

@ -0,0 +1,391 @@
# Process this file with autoconf to produce a configure script.
# Copyright (C) 1995, 1997 Free Software Foundation, Inc.
# Contributed by Dave Love (d.love@dl.ac.uk).
#
#This file is part of GNU Fortran.
#
#GNU Fortran is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2, or (at your option)
#any later version.
#
#GNU Fortran is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with GNU Fortran; see the file COPYING. If not, write to
#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#02111-1307, USA.
AC_INIT(libF77/Version.c)
AC_REVISION(1.10)
dnl Checks for programs.
# For g77 we'll set CC to point at the built gcc, but this will get it into
# the makefiles
AC_PROG_CC
dnl AC_C_CROSS
dnl Gives misleading `(cached)' message from the check.
if test "$CROSS";then
ac_cv_c_cross=yes
else
ac_cv_c_cross=no
fi
dnl These should be inherited in the recursive make, but ensure they are
dnl defined:
test "$AR" || AR=ar
AC_SUBST(AR)
if test "$RANLIB"; then :
AC_SUBST(RANLIB)
dnl Make sure that RANLIB_TEST is set also.
if test -z "$RANLIB_TEST"; then
RANLIB_TEST=true
fi
else
RANLIB_TEST=true
AC_PROG_RANLIB
fi
AC_SUBST(RANLIB_TEST)
dnl not needed for g77?
dnl AC_PROG_MAKE_SET
dnl Checks for libraries.
dnl Checks for header files.
# Sanity check for the cross-compilation case:
AC_CHECK_HEADER(stdio.h,:,
[AC_MSG_ERROR([Can't find stdio.h.
You must have a usable C system for the target already installed, at least
including headers and, preferably, the library, before you can configure
the G77 runtime system. If necessary, install gcc now with \`LANGUAGES=c',
then the target library, then build with \`LANGUAGES=f77'.])])
AC_HEADER_STDC
dnl We could do this if we didn't know we were using gcc
dnl AC_MSG_CHECKING(for prototype-savvy compiler)
dnl AC_CACHE_VAL(g77_cv_sys_proto,
dnl [AC_TRY_LINK(,
dnl dnl looks screwy because TRY_LINK expects a function body
dnl [return 0;} int foo (int * bar) {],
dnl g77_cv_sys_proto=yes,
dnl [g77_cv_sys_proto=no
dnl AC_DEFINE(KR_headers)])])
dnl AC_MSG_RESULT($g77_cv_sys_proto)
dnl for U77
dnl AC_CHECK_HEADERS(unistd.h)
AC_MSG_CHECKING(for posix)
AC_CACHE_VAL(g77_cv_header_posix,
AC_EGREP_CPP(yes,
[#include <sys/types.h>
#include <unistd.h>
#ifdef _POSIX_VERSION
yes
#endif
],
g77_cv_header_posix=yes,
g77_cv_header_posix=no))
AC_MSG_RESULT($g77_cv_header_posix)
# We can rely on the GNU library being posix-ish. I guess checking the
# header isn't actually like checking the functions, though...
AC_MSG_CHECKING(for GNU library)
AC_CACHE_VAL(g77_cv_lib_gnu,
AC_EGREP_CPP(yes,
[#include <stdio.h>
#ifdef __GNU_LIBRARY__
yes
#endif
],
g77_cv_lib_gnu=yes, g77_cv_lib_gnu=no))
AC_MSG_RESULT($g77_cv_lib_gnu)
# Apparently cygwin needs to be special-cased.
AC_MSG_CHECKING([for cyg\`win'32])
AC_CACHE_VAL(g77_cv_sys_cygwin32,
AC_EGREP_CPP(yes,
[#ifdef __CYGWIN32__
yes
#endif
],
g77_cv_sys_cygwin32=yes,
g77_cv_sys_cygwin32=no))
AC_MSG_RESULT($g77_cv_sys_cygwin32)
# ditto for mingw32.
AC_MSG_CHECKING([for mingw32])
AC_CACHE_VAL(g77_cv_sys_mingw32,
AC_EGREP_CPP(yes,
[#ifdef __MINGW32__
yes
#endif
],
g77_cv_sys_mingw32=yes,
g77_cv_sys_mingw32=no))
AC_MSG_RESULT($g77_cv_sys_mingw32)
AC_CHECK_HEADER(fcntl.h,
test $g77_cv_header_posix = yes && AC_DEFINE(_POSIX_SOURCE),
AC_DEFINE(NO_FCNTL) AC_DEFINE(OPEN_DECL))
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
dnl Checks for library functions.
AC_TYPE_SIGNAL
# we'll get atexit by default
if test $ac_cv_header_stdc != yes; then
AC_CHECK_FUNC(atexit,
AC_DEFINE(onexit,atexit),dnl just in case
[AC_DEFINE(NO_ONEXIT)
AC_CHECK_FUNC(onexit,,
[AC_CHECK_FUNC(on_exit,
AC_DEFINE(onexit,on_exit),)])])
else true
fi
# This should always succeed on unix.
# Apparently positive result on cygwin loses re. NON_UNIX_STDIO
# (as of cygwin b18). Likewise on mingw.
AC_CHECK_FUNC(fstat)
AC_MSG_CHECKING([need for NON_UNIX_STDIO])
if test $g77_cv_sys_cygwin32 = yes \
|| test $g77_cv_sys_mingw32 = yes \
|| test $ac_cv_func_fstat = no; then
AC_MSG_RESULT(yes)
AC_DEFINE(NON_UNIX_STDIO)
else
AC_MSG_RESULT(no)
fi
# This is necessary for e.g. Linux:
AC_MSG_CHECKING([for necessary members of struct FILE])
AC_CACHE_VAL(g77_cv_struct_FILE,
[AC_TRY_COMPILE([#include <stdio.h>],
[FILE s; s._ptr; s._base; s._flag;],g77_cv_struct_FILE=yes,
g77_cv_struct_FILE=no)])dnl
AC_MSG_RESULT($g77_cv_struct_FILE)
if test $g77_cv_struct_FILE = no; then
AC_DEFINE(MISSING_FILE_ELEMS)
fi
dnl perhaps should check also for remainder
dnl Unfortunately, the message implies we're just checking for -lm...
AC_CHECK_LIB(m,drem,AC_DEFINE(IEEE_drem))
dnl for U77:
dnl AC_CHECK_FUNCS(symlink getcwd lstat)
dnl test $ac_cv_func_symlink = yes && SYMLNK=symlnk_.o
dnl test $ac_cv_func_lstat = yes && SYMLNK="$SYMLNK lstat_.o"
dnl AC_SUBST(SYMLNK)
# posix will guarantee the right behaviour for sprintf, else we can't be
# sure; HEADER_STDC wouldn't be the right check in sunos4, for instance.
# However, on my sunos4/gcc setup unistd.h leads us wrongly to believe
# we're posix-conformant, so always do the test.
AC_MSG_CHECKING(for ansi/posix sprintf result)
dnl This loses if included as an argument to AC_CACHE_VAL because the
dnl changequote doesn't take effect and the [] vanish.
dnl fixme: use cached value
AC_TRY_RUN(changequote(<<, >>)dnl
<<#include <stdio.h>
/* does sprintf return the number of chars transferred? */
main () {char foo[2]; (sprintf(foo, "1") == 1) ? exit(0) : exit(1);}
>>changequote([, ]),
g77_cv_sys_sprintf_ansi=yes,
g77_cv_sys_sprintf_ansi=no,
g77_cv_sys_sprintf_ansi=no)
AC_CACHE_VAL(g77_cv_sys_sprintf_ansi,
g77_cv_sys_sprintf_ansi=$g77_cv_sys_sprintf_ansi)
dnl We get a misleading `(cached)' message...
if test $ac_cv_c_cross = no; then
AC_MSG_RESULT($g77_cv_sys_sprintf_ansi)
else
AC_MSG_RESULT([can't tell -- assuming no])
fi
# The cygwin patch takes steps to avoid defining USE_STRLEN here -- I don't
# understand why.
if test $g77_cv_sys_sprintf_ansi != yes; then
AC_DEFINE(USE_STRLEN)
fi
# define NON_ANSI_RW_MODES on unix (can't hurt)
AC_MSG_CHECKING(NON_ANSI_RW_MODES)
AC_EGREP_CPP(yes,
[#ifdef unix
yes
#endif
#ifdef __unix
yes
#endif
#ifdef __unix__
yes
#endif
], is_unix=yes, is_unix=no)
if test $g77_cv_sys_cygwin32 = yes || test $g77_cv_sys_mingw32 = yes; then
AC_MSG_RESULT(no)
else
if test $is_unix = yes; then
AC_DEFINE(NON_ANSI_RW_MODES)
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
fi
# We have to firkle with the info in hconfig.h to figure out suitable types
# (via com.h). proj.h and com.h are in $srcdir/.., config.h which they need
# is in ../.. and the config files are in $srcdir/../../config.
AC_MSG_CHECKING(f2c integer type)
late_ac_cpp=$ac_cpp
ac_cpp="$late_ac_cpp -I$srcdir/.. -I../.. -I$srcdir/../.. -I$srcdir/../../config"
AC_CACHE_VAL(g77_cv_sys_f2cinteger,
AC_EGREP_CPP(F2C_INTEGER=long int,
[#include "proj.h"
#define FFECOM_DETERMINE_TYPES 1
#include "com.h"
#if FFECOM_f2cINTEGER == FFECOM_f2ccodeLONG
F2C_INTEGER=long int
#elif FFECOM_f2cINTEGER == FFECOM_f2ccodeINT
F2C_INTEGER=int
#else
# error "Cannot find a suitable type for F2C_INTEGER"
#endif
],
g77_cv_sys_f2cinteger="long int",)
if test "$g77_cv_sys_f2cinteger" = ""; then
AC_EGREP_CPP(F2C_INTEGER=int,
[#include "proj.h"
#define FFECOM_DETERMINE_TYPES 1
#include "com.h"
#if FFECOM_f2cINTEGER == FFECOM_f2ccodeLONG
F2C_INTEGER=long int
#elif FFECOM_f2cINTEGER == FFECOM_f2ccodeINT
F2C_INTEGER=int
#else
# error "Cannot find a suitable type for F2C_INTEGER"
#endif
],
g77_cv_sys_f2cinteger=int,)
fi
if test "$g77_cv_sys_f2cinteger" = ""; then
AC_MSG_RESULT("")
AC_MSG_ERROR([Can't determine type for f2c integer; config.log may help.])
fi
)
AC_MSG_RESULT($g77_cv_sys_f2cinteger)
F2C_INTEGER=$g77_cv_sys_f2cinteger
ac_cpp=$late_ac_cpp
AC_SUBST(F2C_INTEGER)
AC_MSG_CHECKING(f2c long int type)
late_ac_cpp=$ac_cpp
ac_cpp="$late_ac_cpp -I$srcdir/.. -I../.. -I$srcdir/../.. -I$srcdir/../../config"
AC_CACHE_VAL(g77_cv_sys_f2clongint,
AC_EGREP_CPP(F2C_LONGINT=long int,
[#include "proj.h"
#define FFECOM_DETERMINE_TYPES 1
#include "com.h"
#if FFECOM_f2cLONGINT == FFECOM_f2ccodeLONG
F2C_LONGINT=long int
#elif FFECOM_f2cLONGINT == FFECOM_f2ccodeLONGLONG
F2C_LONGINT=long long int
#else
# error "Cannot find a suitable type for F2C_LONGINT"
#endif
],
g77_cv_sys_f2clongint="long int",)
if test "$g77_cv_sys_f2clongint" = ""; then
AC_EGREP_CPP(F2C_LONGINT=long long int,
[#include "proj.h"
#define FFECOM_DETERMINE_TYPES 1
#include "com.h"
#if FFECOM_f2cLONGINT == FFECOM_f2ccodeLONG
F2C_LONGINT=long int
#elif FFECOM_f2cLONGINT == FFECOM_f2ccodeLONGLONG
F2C_LONGINT=long long int
#else
# error "Cannot find a suitable type for F2C_LONGINT"
#endif
],
g77_cv_sys_f2clongint="long long int",)
fi
if test "$g77_cv_sys_f2clongint" = ""; then
AC_MSG_RESULT("")
AC_MSG_ERROR([Can't determine type for f2c long int; config.log may help.])
fi
)
AC_MSG_RESULT($g77_cv_sys_f2clongint)
F2C_LONGINT=$g77_cv_sys_f2clongint
ac_cpp=$late_ac_cpp
AC_SUBST(F2C_LONGINT)
dnl maybe check for drem/remainder
AC_SUBST(CROSS)
# This EOF_CHAR is a misfeature on unix.
AC_DEFINE(NO_EOF_CHAR_CHECK)
AC_DEFINE(Skip_f2c_Undefs)
dnl Craig had these in f2c.h, but they're only relevant for building libf2c
dnl anyway.
dnl For GNU Fortran (g77), we always enable the following behaviors for
dnl libf2c, to make things easy on the programmer. The alternate
dnl behaviors have their uses, and g77 might provide them as compiler,
dnl rather than library, options, so only a single copy of a shared libf2c
dnl need be built for a system.
dnl This makes unformatted I/O more consistent in relation to other
dnl systems. It is not required by the F77 standard.
AC_DEFINE(Pad_UDread)
dnl This makes ERR= and IOSTAT= returns work properly in disk-full
dnl situations, making things work more as expected. It slows things
dnl down, so g77 will probably someday choose the original implementation
dnl on a case-by-case basis when it can be shown to not be necessary
dnl (e.g. no ERR= or IOSTAT=) or when it is given the appropriate
dnl compile-time option or, perhaps, source-code directive.
dnl AC_DEFINE(ALWAYS_FLUSH)
dnl Most Fortran implementations do this, so to make it easier
dnl to compare the output of g77-compiled programs to those compiled
dnl by most other compilers, tell libf2c to put leading zeros in
dnl appropriate places on output
AC_DEFINE(WANT_LEAD_0)
# avoid confusion in case the `makefile's from the f2c distribution have
# got put here
test -f libF77/makefile && mv libF77/makefile libF77/makefile.ori
test -f libI77/makefile && mv libI77/makefile libI77/makefile.ori
test -f libU77/makefile && mv libU77/makefile libU77/makefile.ori
AC_CONFIG_SUBDIRS(libU77)
AC_OUTPUT(Makefile f2c.h libI77/Makefile libF77/Makefile)
dnl We might have configuration options to:
dnl * allow non-standard string concatenation (use libF77 s_catow.o,
dnl not s_cat.o)
dnl * change unit preconnexion in libI77/err.c (f_init.c)
dnl * -DALWAYS_FLUSH in libI77
dnl * -DOMIT_BLANK_CC in libI77
dnl Local Variables:
dnl comment-start: "dnl "
dnl comment-end: ""
dnl comment-start-skip: "\\bdnl\\b\\s *"
dnl End:

15
libf2c/disclaimer.netlib Normal file
View File

@ -0,0 +1,15 @@
f2c is a Fortran to C converter under development since 1990 by
David M. Gay (then AT&T Bell Labs, now Bell Labs, Lucent Technologies)
Stu Feldman (then at Bellcore, now at IBM)
Mark Maimone (Carnegie-Mellon University)
Norm Schryer (then AT&T Bell Labs, now AT&T Labs)
Please send bug reports to dmg@research.bell-labs.com .
AT&T, Bellcore and Lucent disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall AT&T, Bellcore or Lucent be liable for
any special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.

227
libf2c/f2c.h.in Normal file
View File

@ -0,0 +1,227 @@
/* f2c.h -- Standard Fortran to C header file */
/** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed."
- From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
#ifndef F2C_INCLUDE
#define F2C_INCLUDE
/* F2C_INTEGER will normally be `int' but would be `long' on 16-bit systems */
/* we assume short, float are OK */
typedef @F2C_INTEGER@ /* long int */ integer;
typedef unsigned @F2C_INTEGER@ /* long */ 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 @F2C_INTEGER@ /* long int */ logical;
typedef short int shortlogical;
typedef char logical1;
typedef char integer1;
typedef @F2C_LONGINT@ /* long long */ longint; /* system-dependent */
typedef unsigned @F2C_LONGINT@ /* long long */ ulongint; /* system-dependent */
#define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b)))
#define qbit_set(a,b) ((a) | ((ulongint)1 << (b)))
#define TRUE_ (1)
#define FALSE_ (0)
/* Extern is for use with -E */
#ifndef Extern
#define Extern extern
#endif
/* I/O stuff */
#ifdef f2c_i2
#error "f2c_i2 will not work with g77!!!!"
/* for -i2 */
typedef short flag;
typedef short ftnlen;
typedef short ftnint;
#else
typedef @F2C_INTEGER@ /* long int */ flag;
typedef @F2C_INTEGER@ /* long int */ ftnlen;
typedef @F2C_INTEGER@ /* long int */ ftnint;
#endif
/*external read, write*/
typedef struct
{ flag cierr;
ftnint ciunit;
flag ciend;
char *cifmt;
ftnint cirec;
} cilist;
/*internal read, write*/
typedef struct
{ flag icierr;
char *iciunit;
flag iciend;
char *icifmt;
ftnint icirlen;
ftnint icirnum;
} icilist;
/*open*/
typedef struct
{ flag oerr;
ftnint ounit;
char *ofnm;
ftnlen ofnmlen;
char *osta;
char *oacc;
char *ofm;
ftnint orl;
char *oblnk;
} olist;
/*close*/
typedef struct
{ flag cerr;
ftnint cunit;
char *csta;
} cllist;
/*rewind, backspace, endfile*/
typedef struct
{ flag aerr;
ftnint aunit;
} alist;
/* inquire */
typedef struct
{ flag inerr;
ftnint inunit;
char *infile;
ftnlen infilen;
ftnint *inex; /*parameters in standard's order*/
ftnint *inopen;
ftnint *innum;
ftnint *innamed;
char *inname;
ftnlen innamlen;
char *inacc;
ftnlen inacclen;
char *inseq;
ftnlen inseqlen;
char *indir;
ftnlen indirlen;
char *infmt;
ftnlen infmtlen;
char *inform;
ftnint informlen;
char *inunf;
ftnlen inunflen;
ftnint *inrecl;
ftnint *innrec;
char *inblank;
ftnlen inblanklen;
} inlist;
#define VOID void
union Multitype { /* for multiple entry points */
integer1 g;
shortint h;
integer i;
/* longint j; */
real r;
doublereal d;
complex c;
doublecomplex z;
};
typedef union Multitype Multitype;
/*typedef long int Long;*/ /* No longer used; formerly in Namelist */
struct Vardesc { /* for Namelist */
char *name;
char *addr;
ftnlen *dims;
int type;
};
typedef struct Vardesc Vardesc;
struct Namelist {
char *name;
Vardesc **vars;
int nvars;
};
typedef struct Namelist Namelist;
#define abs(x) ((x) >= 0 ? (x) : -(x))
#define dabs(x) (doublereal)abs(x)
#define min(a,b) ((a) <= (b) ? (a) : (b))
#define max(a,b) ((a) >= (b) ? (a) : (b))
#define dmin(a,b) (doublereal)min(a,b)
#define dmax(a,b) (doublereal)max(a,b)
#define bit_test(a,b) ((a) >> (b) & 1)
#define bit_clear(a,b) ((a) & ~((uinteger)1 << (b)))
#define bit_set(a,b) ((a) | ((uinteger)1 << (b)))
/* procedure parameter types for -A and -C++ */
#define F2C_proc_par_types 1
#ifdef __cplusplus
typedef int /* Unknown procedure type */ (*U_fp)(...);
typedef shortint (*J_fp)(...);
typedef integer (*I_fp)(...);
typedef real (*R_fp)(...);
typedef doublereal (*D_fp)(...), (*E_fp)(...);
typedef /* Complex */ VOID (*C_fp)(...);
typedef /* Double Complex */ VOID (*Z_fp)(...);
typedef logical (*L_fp)(...);
typedef shortlogical (*K_fp)(...);
typedef /* Character */ VOID (*H_fp)(...);
typedef /* Subroutine */ int (*S_fp)(...);
#else
typedef int /* Unknown procedure type */ (*U_fp)();
typedef shortint (*J_fp)();
typedef integer (*I_fp)();
typedef real (*R_fp)();
typedef doublereal (*D_fp)(), (*E_fp)();
typedef /* Complex */ VOID (*C_fp)();
typedef /* Double Complex */ VOID (*Z_fp)();
typedef logical (*L_fp)();
typedef shortlogical (*K_fp)();
typedef /* Character */ VOID (*H_fp)();
typedef /* Subroutine */ int (*S_fp)();
#endif
/* E_fp is for real functions when -R is not specified */
typedef VOID C_f; /* complex function */
typedef VOID H_f; /* character function */
typedef VOID Z_f; /* double complex function */
typedef doublereal E_f; /* real function with -R not specified */
/* undef any lower-case symbols that your C compiler predefines, e.g.: */
#ifndef Skip_f2c_Undefs
/* (No such symbols should be defined in a strict ANSI C compiler.
We can avoid trouble with f2c-translated code by using
gcc -ansi [-traditional].) */
#undef cray
#undef gcos
#undef mc68010
#undef mc68020
#undef mips
#undef pdp11
#undef sgi
#undef sparc
#undef sun
#undef sun2
#undef sun3
#undef sun4
#undef u370
#undef u3b
#undef u3b2
#undef u3b5
#undef unix
#undef vax
#endif
#endif

562
libf2c/f2cext.c Normal file
View File

@ -0,0 +1,562 @@
/* Copyright (C) 1997 Free Software Foundation, Inc.
This file is part of GNU Fortran run-time library.
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
by the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
GNU Fortran is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with GNU Fortran; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <f2c.h>
typedef int (*sig_proc)(int);
#ifdef Labort
int abort_ (void) {
extern int G77_abort_0 (void);
return G77_abort_0 ();
}
#endif
#ifdef Lderf
double derf_ (doublereal *x) {
extern double G77_derf_0 (doublereal *x);
return G77_derf_0 (x);
}
#endif
#ifdef Lderfc
double derfc_ (doublereal *x) {
extern double G77_derfc_0 (doublereal *x);
return G77_derfc_0 (x);
}
#endif
#ifdef Lef1asc
int ef1asc_ (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb) {
extern int G77_ef1asc_0 (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb);
return G77_ef1asc_0 (a, la, b, lb);
}
#endif
#ifdef Lef1cmc
integer ef1cmc_ (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb) {
extern integer G77_ef1cmc_0 (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb);
return G77_ef1cmc_0 (a, la, b, lb);
}
#endif
#ifdef Lerf
double erf_ (real *x) {
extern double G77_erf_0 (real *x);
return G77_erf_0 (x);
}
#endif
#ifdef Lerfc
double erfc_ (real *x) {
extern double G77_erfc_0 (real *x);
return G77_erfc_0 (x);
}
#endif
#ifdef Lexit
void exit_ (integer *rc) {
extern void G77_exit_0 (integer *rc);
G77_exit_0 (rc);
}
#endif
#ifdef Lgetarg
void getarg_ (ftnint *n, char *s, ftnlen ls) {
extern void G77_getarg_0 (ftnint *n, char *s, ftnlen ls);
G77_getarg_0 (n, s, ls);
}
#endif
#ifdef Lgetenv
void getenv_ (char *fname, char *value, ftnlen flen, ftnlen vlen) {
extern void G77_getenv_0 (char *fname, char *value, ftnlen flen, ftnlen vlen);
G77_getenv_0 (fname, value, flen, vlen);
}
#endif
#ifdef Liargc
ftnint iargc_ (void) {
extern ftnint G77_iargc_0 (void);
return G77_iargc_0 ();
}
#endif
#ifdef Lsignal
ftnint signal_ (integer *sigp, sig_proc proc) {
extern ftnint G77_signal_0 (integer *sigp, sig_proc proc);
return G77_signal_0 (sigp, proc);
}
#endif
#ifdef Lsystem
integer system_ (char *s, ftnlen n) {
extern integer G77_system_0 (char *s, ftnlen n);
return G77_system_0 (s, n);
}
#endif
#ifdef Lflush
int flush_ (void) {
extern int G77_flush_0 (void);
return G77_flush_0 ();
}
#endif
#ifdef Lftell
integer ftell_ (integer *Unit) {
extern integer G77_ftell_0 (integer *Unit);
return G77_ftell_0 (Unit);
}
#endif
#ifdef Lfseek
integer fseek_ (integer *Unit, integer *offset, integer *xwhence) {
extern integer G77_fseek_0 (integer *Unit, integer *offset, integer *xwhence);
return G77_fseek_0 (Unit, offset, xwhence);
}
#endif
#ifdef Laccess
integer access_ (const char *name, const char *mode, ftnlen Lname, ftnlen Lmode) {
extern integer G77_access_0 (const char *name, const char *mode, ftnlen Lname, ftnlen Lmode);
return G77_access_0 (name, mode, Lname, Lmode);
}
#endif
#ifdef Lalarm
integer alarm_ (integer *seconds, sig_proc proc, integer *status) {
extern integer G77_alarm_0 (integer *seconds, sig_proc proc);
return G77_alarm_0 (seconds, proc);
}
#endif
#ifdef Lbesj0
double besj0_ (const real *x) {
return j0 (*x);
}
#endif
#ifdef Lbesj1
double besj1_ (const real *x) {
return j1 (*x);
}
#endif
#ifdef Lbesjn
double besjn_ (const integer *n, real *x) {
return jn (*n, *x);
}
#endif
#ifdef Lbesy0
double besy0_ (const real *x) {
return y0 (*x);
}
#endif
#ifdef Lbesy1
double besy1_ (const real *x) {
return y1 (*x);
}
#endif
#ifdef Lbesyn
double besyn_ (const integer *n, real *x) {
return yn (*n, *x);
}
#endif
#ifdef Lchdir
integer chdir_ (const char *name, const ftnlen Lname) {
extern integer G77_chdir_0 (const char *name, const ftnlen Lname);
return G77_chdir_0 (name, Lname);
}
#endif
#ifdef Lchmod
integer chmod_ (const char *name, const char *mode, const ftnlen Lname, const ftnlen Lmode) {
extern integer G77_chmod_0 (const char *name, const char *mode, const ftnlen Lname, const ftnlen Lmode);
return G77_chmod_0 (name, mode, Lname, Lmode);
}
#endif
#ifdef Lctime
void ctime_ (char *chtime, const ftnlen Lchtime, longint *xstime) {
extern void G77_ctime_0 (char *chtime, const ftnlen Lchtime, longint *xstime);
G77_ctime_0 (chtime, Lchtime, xstime);
}
#endif
#ifdef Ldate
int date_ (char *buf, ftnlen buf_len) {
extern int G77_date_0 (char *buf, ftnlen buf_len);
return G77_date_0 (buf, buf_len);
}
#endif
#ifdef Ldbesj0
double dbesj0_ (const double *x) {
return j0 (*x);
}
#endif
#ifdef Ldbesj1
double dbesj1_ (const double *x) {
return j1 (*x);
}
#endif
#ifdef Ldbesjn
double dbesjn_ (const integer *n, double *x) {
return jn (*n, *x);
}
#endif
#ifdef Ldbesy0
double dbesy0_ (const double *x) {
return y0 (*x);
}
#endif
#ifdef Ldbesy1
double dbesy1_ (const double *x) {
return y1 (*x);
}
#endif
#ifdef Ldbesyn
double dbesyn_ (const integer *n, double *x) {
return yn (*n, *x);
}
#endif
#ifdef Ldtime
double dtime_ (real tarray[2]) {
extern double G77_dtime_0 (real tarray[2]);
return G77_dtime_0 (tarray);
}
#endif
#ifdef Letime
double etime_ (real tarray[2]) {
extern double G77_etime_0 (real tarray[2]);
return G77_etime_0 (tarray);
}
#endif
#ifdef Lfdate
void fdate_ (char *ret_val, ftnlen ret_val_len) {
extern void G77_fdate_0 (char *ret_val, ftnlen ret_val_len);
G77_fdate_0 (ret_val, ret_val_len);
}
#endif
#ifdef Lfgetc
integer fgetc_ (const integer *lunit, char *c, ftnlen Lc) {
extern integer G77_fgetc_0 (const integer *lunit, char *c, ftnlen Lc);
return G77_fgetc_0 (lunit, c, Lc);
}
#endif
#ifdef Lfget
integer fget_ (char *c, const ftnlen Lc) {
extern integer G77_fget_0 (char *c, const ftnlen Lc);
return G77_fget_0 (c, Lc);
}
#endif
#ifdef Lflush1
int flush1_ (const integer *lunit) {
extern int G77_flush1_0 (const integer *lunit);
return G77_flush1_0 (lunit);
}
#endif
#ifdef Lfnum
integer fnum_ (integer *lunit) {
extern integer G77_fnum_0 (integer *lunit);
return G77_fnum_0 (lunit);
}
#endif
#ifdef Lfputc
integer fputc_ (const integer *lunit, const char *c, const ftnlen Lc) {
extern integer G77_fputc_0 (const integer *lunit, const char *c, const ftnlen Lc);
return G77_fputc_0 (lunit, c, Lc);
}
#endif
#ifdef Lfput
integer fput_ (const char *c, const ftnlen Lc) {
extern integer G77_fput_0 (const char *c, const ftnlen Lc);
return G77_fput_0 (c, Lc);
}
#endif
#ifdef Lfstat
integer fstat_ (const integer *lunit, integer statb[13]) {
extern integer G77_fstat_0 (const integer *lunit, integer statb[13]);
return G77_fstat_0 (lunit, statb);
}
#endif
#ifdef Lgerror
int gerror_ (char *str, ftnlen Lstr) {
extern int G77_gerror_0 (char *str, ftnlen Lstr);
return G77_gerror_0 (str, Lstr);
}
#endif
#ifdef Lgetcwd
integer getcwd_ (char *str, const ftnlen Lstr) {
extern integer G77_getcwd_0 (char *str, const ftnlen Lstr);
return G77_getcwd_0 (str, Lstr);
}
#endif
#ifdef Lgetgid
integer getgid_ (void) {
extern integer G77_getgid_0 (void);
return G77_getgid_0 ();
}
#endif
#ifdef Lgetlog
int getlog_ (char *str, const ftnlen Lstr) {
extern int G77_getlog_0 (char *str, const ftnlen Lstr);
return G77_getlog_0 (str, Lstr);
}
#endif
#ifdef Lgetpid
integer getpid_ (void) {
extern integer G77_getpid_0 (void);
return G77_getpid_0 ();
}
#endif
#ifdef Lgetuid
integer getuid_ (void) {
extern integer G77_getuid_0 (void);
return G77_getuid_0 ();
}
#endif
#ifdef Lgmtime
int gmtime_ (const integer *stime, integer tarray[9]) {
extern int G77_gmtime_0 (const integer *stime, integer tarray[9]);
return G77_gmtime_0 (stime, tarray);
}
#endif
#ifdef Lhostnm
integer hostnm_ (char *name, ftnlen Lname) {
extern integer G77_hostnm_0 (char *name, ftnlen Lname);
return G77_hostnm_0 (name, Lname);
}
#endif
#ifdef Lidate
int idate_ (int iarray[3]) {
extern int G77_idate_0 (int iarray[3]);
return G77_idate_0 (iarray);
}
#endif
#ifdef Lierrno
integer ierrno_ (void) {
extern integer G77_ierrno_0 (void);
return G77_ierrno_0 ();
}
#endif
#ifdef Lirand
integer irand_ (integer *flag) {
extern integer G77_irand_0 (integer *flag);
return G77_irand_0 (flag);
}
#endif
#ifdef Lisatty
logical isatty_ (integer *lunit) {
extern logical G77_isatty_0 (integer *lunit);
return G77_isatty_0 (lunit);
}
#endif
#ifdef Litime
int itime_ (integer tarray[3]) {
extern int G77_itime_0 (integer tarray[3]);
return G77_itime_0 (tarray);
}
#endif
#ifdef Lkill
integer kill_ (const integer *pid, const integer *signum) {
extern integer G77_kill_0 (const integer *pid, const integer *signum);
return G77_kill_0 (pid, signum);
}
#endif
#ifdef Llink
integer link_ (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2) {
extern integer G77_link_0 (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2);
return G77_link_0 (path1, path2, Lpath1, Lpath2);
}
#endif
#ifdef Llnblnk
integer lnblnk_ (char *str, ftnlen str_len) {
extern integer G77_lnblnk_0 (char *str, ftnlen str_len);
return G77_lnblnk_0 (str, str_len);
}
#endif
#ifdef Llstat
integer lstat_ (const char *name, integer statb[13], const ftnlen Lname) {
extern integer G77_lstat_0 (const char *name, integer statb[13], const ftnlen Lname);
return G77_lstat_0 (name, statb, Lname);
}
#endif
#ifdef Lltime
int ltime_ (const integer *stime, integer tarray[9]) {
extern int G77_ltime_0 (const integer *stime, integer tarray[9]);
return G77_ltime_0 (stime, tarray);
}
#endif
#ifdef Lmclock
longint mclock_ (void) {
extern longint G77_mclock_0 (void);
return G77_mclock_0 ();
}
#endif
#ifdef Lperror
int perror_ (const char *str, const ftnlen Lstr) {
extern int G77_perror_0 (const char *str, const ftnlen Lstr);
return G77_perror_0 (str, Lstr);
}
#endif
#ifdef Lrand
double rand_ (integer *flag) {
extern double G77_rand_0 (integer *flag);
return G77_rand_0 (flag);
}
#endif
#ifdef Lrename
integer rename_ (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2) {
extern integer G77_rename_0 (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2);
return G77_rename_0 (path1, path2, Lpath1, Lpath2);
}
#endif
#ifdef Lsecnds
double secnds_ (real *r) {
extern double G77_secnds_0 (real *r);
return G77_secnds_0 (r);
}
#endif
#ifdef Lsecond
double second_ () {
extern double G77_second_0 ();
return G77_second_0 ();
}
#endif
#ifdef Lsleep
int sleep_ (const integer *seconds) {
extern int G77_sleep_0 (const integer *seconds);
return G77_sleep_0 (seconds);
}
#endif
#ifdef Lsrand
int srand_ (const integer *seed) {
extern int G77_srand_0 (const integer *seed);
return G77_srand_0 (seed);
}
#endif
#ifdef Lstat
integer stat_ (const char *name, integer statb[13], const ftnlen Lname) {
extern integer G77_stat_0 (const char *name, integer statb[13], const ftnlen Lname);
return G77_stat_0 (name, statb, Lname);
}
#endif
#ifdef Lsymlnk
integer symlnk_ (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2) {
extern integer G77_symlnk_0 (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2);
return G77_symlnk_0 (path1, path2, Lpath1, Lpath2);
}
#endif
#ifdef Lsclock
int system_clock_ (integer *count, integer *count_rate, integer *count_max) {
extern int G77_system_clock_0 (integer *count, integer *count_rate, integer *count_max);
return G77_system_clock_0 (count, count_rate, count_max);
}
#endif
#ifdef Ltime
longint time_ (void) {
extern longint G77_time_0 (void);
return G77_time_0 ();
}
#endif
#ifdef Lttynam
void ttynam_ (char *ret_val, ftnlen ret_val_len, integer *lunit) {
extern void G77_ttynam_0 (char *ret_val, ftnlen ret_val_len, integer *lunit);
G77_ttynam_0 (ret_val, ret_val_len, lunit);
}
#endif
#ifdef Lumask
integer umask_ (integer *mask) {
extern integer G77_umask_0 (integer *mask);
return G77_umask_0 (mask);
}
#endif
#ifdef Lunlink
integer unlink_ (const char *str, const ftnlen Lstr) {
extern integer G77_unlink_0 (const char *str, const ftnlen Lstr);
return G77_unlink_0 (str, Lstr);
}
#endif
#ifdef Lvxtidt
int vxtidate_ (integer *m, integer *d, integer *y) {
extern int G77_vxtidate_0 (integer *m, integer *d, integer *y);
return G77_vxtidate_0 (m, d, y);
}
#endif
#ifdef Lvxttim
void vxttime_ (char chtime[8], const ftnlen Lchtime) {
extern void G77_vxttime_0 (char chtime[8], const ftnlen Lchtime);
G77_vxttime_0 (chtime, Lchtime);
}
#endif

32
libf2c/libF77/F77_aloc.c Normal file
View File

@ -0,0 +1,32 @@
#include "f2c.h"
#undef abs
#undef min
#undef max
#include <stdio.h>
static integer memfailure = 3;
#ifdef KR_headers
extern char *malloc();
extern void G77_exit_0 ();
char *
F77_aloc(Len, whence) integer Len; char *whence;
#else
#include <stdlib.h>
extern void G77_exit_0 (integer*);
char *
F77_aloc(integer Len, char *whence)
#endif
{
char *rv;
unsigned int uLen = (unsigned int) Len; /* for K&R C */
if (!(rv = (char*)malloc(uLen))) {
fprintf(stderr, "malloc(%u) failure in %s\n",
uLen, whence);
G77_exit_0 (&memfailure);
}
return rv;
}

76
libf2c/libF77/Makefile.in Normal file
View File

@ -0,0 +1,76 @@
# Makefile for GNU F77 compiler runtime.
# Copyright 1990 - 1994 by AT&T Bell Laboratories and Bellcore (see the
# file `Notice').
# Portions of this file Copyright (C) 1995, 1996 Free Software Foundation, Inc.
# Contributed by Dave Love (d.love@dl.ac.uk).
#
#This file is part of GNU Fortran.
#
#GNU Fortran is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2, or (at your option)
#any later version.
#
#GNU Fortran is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with GNU Fortran; see the file COPYING. If not, write to
#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#02111-1307, USA.
SHELL = /bin/sh
srcdir = @srcdir@
VPATH = @srcdir@
#### Start of system configuration section. ####
.c.o:
$(CC) -c -DSkip_f2c_Undefs -I../ $(CFLAGS) $<
MISC = F77_aloc.o VersionF.o main.o s_rnge.o abort_.o getarg_.o iargc_.o\
getenv_.o signal_.o s_stop.o s_paus.o system_.o cabs.o\
derf_.o derfc_.o erf_.o erfc_.o sig_die.o exit_.o
POW = pow_ci.o pow_dd.o pow_di.o pow_hh.o pow_ii.o pow_ri.o pow_zi.o pow_zz.o \
pow_qq.o
CX = c_abs.o c_cos.o c_div.o c_exp.o c_log.o c_sin.o c_sqrt.o
DCX = z_abs.o z_cos.o z_div.o z_exp.o z_log.o z_sin.o z_sqrt.o
REAL = r_abs.o r_acos.o r_asin.o r_atan.o r_atn2.o r_cnjg.o r_cos.o\
r_cosh.o r_dim.o r_exp.o r_imag.o r_int.o\
r_lg10.o r_log.o r_mod.o r_nint.o r_sign.o\
r_sin.o r_sinh.o r_sqrt.o r_tan.o r_tanh.o
DBL = d_abs.o d_acos.o d_asin.o d_atan.o d_atn2.o\
d_cnjg.o d_cos.o d_cosh.o d_dim.o d_exp.o\
d_imag.o d_int.o d_lg10.o d_log.o d_mod.o\
d_nint.o d_prod.o d_sign.o d_sin.o d_sinh.o\
d_sqrt.o d_tan.o d_tanh.o
INT = i_abs.o i_dim.o i_dnnt.o i_indx.o i_len.o i_mod.o i_nint.o i_sign.o
HALF = h_abs.o h_dim.o h_dnnt.o h_indx.o h_len.o h_mod.o h_nint.o h_sign.o
CMP = l_ge.o l_gt.o l_le.o l_lt.o hl_ge.o hl_gt.o hl_le.o hl_lt.o
EFL = ef1asc_.o ef1cmc_.o
CHAR = s_cat.o s_cmp.o s_copy.o
F90BIT = lbitbits.o lbitshft.o qbitbits.o qbitshft.o
F2C_H = ../f2c.h
all: $(MISC) $(POW) $(CX) $(DCX) $(REAL) $(DBL) $(INT) \
$(HALF) $(CMP) $(EFL) $(CHAR) $(F90BIT)
VersionF.o: Version.c
$(CC) -c $(CFLAGS) -o $@ $(srcdir)/Version.c
mostlyclean clean:
-rm -f *.o
distclean maintainer-clean: clean
-rm -f stage? include Makefile
# Not quite all these actually do depend on f2c.h...
$(MISC) $(POW) $(CX) $(DCX) $(REAL) $(DBL) $(INT) \
$(HALF) $(CMP) $(EFL) $(CHAR) $(F90BIT): $(F2C_H)
.PHONY: mostlyclean clean distclean maintainer-clean all

23
libf2c/libF77/Notice Normal file
View File

@ -0,0 +1,23 @@
/****************************************************************
Copyright 1990 - 1997 by AT&T, Lucent Technologies and Bellcore.
Permission to use, copy, modify, and distribute this software
and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all
copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the names of AT&T, Bell Laboratories,
Lucent or Bellcore or any of their entities not be used in
advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
AT&T, Lucent and Bellcore disclaim all warranties with regard to
this software, including all implied warranties of
merchantability and fitness. In no event shall AT&T, Lucent or
Bellcore be liable for any special, indirect or consequential
damages or any damages whatsoever resulting from loss of use,
data or profits, whether in an action of contract, negligence or
other tortious action, arising out of or in connection with the
use or performance of this software.
****************************************************************/

108
libf2c/libF77/README.netlib Normal file
View File

@ -0,0 +1,108 @@
If your compiler does not recognize ANSI C headers,
compile with KR_headers defined: either add -DKR_headers
to the definition of CFLAGS in the makefile, or insert
#define KR_headers
at the top of f2c.h , cabs.c , main.c , and sig_die.c .
Under MS-DOS, compile s_paus.c with -DMSDOS.
If you have a really ancient K&R C compiler that does not understand
void, add -Dvoid=int to the definition of CFLAGS in the makefile.
If you use a C++ compiler, first create a local f2c.h by appending
f2ch.add to the usual f2c.h, e.g., by issuing the command
make f2c.h
which assumes f2c.h is installed in /usr/include .
If your system lacks onexit() and you are not using an ANSI C
compiler, then you should compile main.c, s_paus.c, s_stop.c, and
sig_die.c with NO_ONEXIT defined. See the comments about onexit in
the makefile.
If your system has a double drem() function such that drem(a,b)
is the IEEE remainder function (with double a, b), then you may
wish to compile r_mod.c and d_mod.c with IEEE_drem defined.
On some systems, you may also need to compile with -Ddrem=remainder .
To check for transmission errors, issue the command
make check
This assumes you have the xsum program whose source, xsum.c,
is distributed as part of "all from f2c/src". If you do not
have xsum, you can obtain xsum.c by sending the following E-mail
message to netlib@netlib.bell-labs.com
send xsum.c from f2c/src
The makefile assumes you have installed f2c.h in a standard
place (and does not cause recompilation when f2c.h is changed);
f2c.h comes with "all from f2c" (the source for f2c) and is
available separately ("f2c.h from f2c").
Most of the routines in libF77 are support routines for Fortran
intrinsic functions or for operations that f2c chooses not
to do "in line". There are a few exceptions, summarized below --
functions and subroutines that appear to your program as ordinary
external Fortran routines.
1. CALL ABORT prints a message and causes a core dump.
2. ERF(r) and DERF(d) and the REAL and DOUBLE PRECISION
error functions (with x REAL and d DOUBLE PRECISION);
DERF must be declared DOUBLE PRECISION in your program.
Both ERF and DERF assume your C library provides the
underlying erf() function (which not all systems do).
3. ERFC(r) and DERFC(d) are the complementary error functions:
ERFC(r) = 1 - ERF(r) and DERFC(d) = 1.d0 - DERFC(d)
(except that their results may be more accurate than
explicitly evaluating the above formulae would give).
Again, ERFC and r are REAL, and DERFC and d are DOUBLE
PRECISION (and must be declared as such in your program),
and ERFC and DERFC rely on your system's erfc().
4. CALL GETARG(n,s), where n is an INTEGER and s is a CHARACTER
variable, sets s to the n-th command-line argument (or to
all blanks if there are fewer than n command-line arguments);
CALL GETARG(0,s) sets s to the name of the program (on systems
that support this feature). See IARGC below.
5. CALL GETENV(name, value), where name and value are of type
CHARACTER, sets value to the environment value, $name, of
name (or to blanks if $name has not been set).
6. NARGS = IARGC() sets NARGS to the number of command-line
arguments (an INTEGER value).
7. CALL SIGNAL(n,func), where n is an INTEGER and func is an
EXTERNAL procedure, arranges for func to be invoked when
signal n occurs (on systems where this makes sense).
8. CALL SYSTEM(cmd), where cmd is of type CHARACTER, passes
cmd to the system's command processor (on systems where
this can be done).
The makefile does not attempt to compile pow_qq.c, qbitbits.c,
and qbitshft.c, which are meant for use with INTEGER*8. To use
INTEGER*8, you must modify f2c.h to declare longint and ulongint
appropriately; then add pow_qq.o to the POW = line in the makefile,
and add " qbitbits.o qbitshft.o" to the makefile's F90BIT = line.
Following Fortran 90, s_cat.c and s_copy.c allow the target of a
(character string) assignment to be appear on its right-hand, at
the cost of some extra overhead for all run-time concatenations.
If you prefer the extra efficiency that comes with the Fortran 77
requirement that the left-hand side of a character assignment not
be involved in the right-hand side, compile s_cat.c and s_copy.c
with -DNO_OVERWRITE .
If your system lacks a ranlib command, you don't need it.
Either comment out the makefile's ranlib invocation, or install
a harmless "ranlib" command somewhere in your PATH, such as the
one-line shell script
exit 0
or (on some systems)
exec /usr/bin/ar lts $1 >/dev/null

67
libf2c/libF77/Version.c Normal file
View File

@ -0,0 +1,67 @@
static char junk[] = "\n@(#)LIBF77 VERSION 19970919\n";
/*
*/
char __G77_LIBF77_VERSION__[] = "0.5.21";
/*
2.00 11 June 1980. File version.c added to library.
2.01 31 May 1988. s_paus() flushes stderr; names of hl_* fixed
[ d]erf[c ] added
8 Aug. 1989: #ifdefs for f2c -i2 added to s_cat.c
29 Nov. 1989: s_cmp returns long (for f2c)
30 Nov. 1989: arg types from f2c.h
12 Dec. 1989: s_rnge allows long names
19 Dec. 1989: getenv_ allows unsorted environment
28 Mar. 1990: add exit(0) to end of main()
2 Oct. 1990: test signal(...) == SIG_IGN rather than & 01 in main
17 Oct. 1990: abort() calls changed to sig_die(...,1)
22 Oct. 1990: separate sig_die from main
25 Apr. 1991: minor, theoretically invisible tweaks to s_cat, sig_die
31 May 1991: make system_ return status
18 Dec. 1991: change long to ftnlen (for -i2) many places
28 Feb. 1992: repair z_sqrt.c (scribbled on input, gave wrong answer)
18 July 1992: for n < 0, repair handling of 0**n in pow_[dr]i.c
and m**n in pow_hh.c and pow_ii.c;
catch SIGTRAP in main() for error msg before abort
23 July 1992: switch to ANSI prototypes unless KR_headers is #defined
23 Oct. 1992: fix botch in signal_.c (erroneous deref of 2nd arg);
change Cabs to f__cabs.
12 March 1993: various tweaks for C++
2 June 1994: adjust so abnormal terminations invoke f_exit just once
16 Sept. 1994: s_cmp: treat characters as unsigned in comparisons.
19 Sept. 1994: s_paus: flush after end of PAUSE; add -DMSDOS
12 Jan. 1995: pow_[dhiqrz][hiq]: adjust x**i to work on machines
that sign-extend right shifts when i is the most
negative integer.
26 Jan. 1995: adjust s_cat.c, s_copy.c to permit the left-hand side
of character assignments to appear on the right-hand
side (unless compiled with -DNO_OVERWRITE).
27 Jan. 1995: minor tweak to s_copy.c: copy forward whenever
possible (for better cache behavior).
30 May 1995: added subroutine exit(rc) integer rc. Version not changed.
29 Aug. 1995: add F77_aloc.c; use it in s_cat.c and system_.c.
6 Sept. 1995: fix return type of system_ under -DKR_headers.
19 Dec. 1995: s_cat.c: fix bug when 2nd or later arg overlaps lhs.
19 Mar. 1996: s_cat.c: supply missing break after overlap detection.
13 May 1996: add [lq]bitbits.c and [lq]bitshft.c (f90 bit intrinsics).
19 June 1996: add casts to unsigned in [lq]bitshft.c.
26 Feb. 1997: adjust functions with a complex output argument
to permit aliasing it with input arguments.
(For now, at least, this is just for possible
benefit of g77.)
4 April 1997: [cz]_div.c: tweaks invisible on most systems (that may
affect systems using gratuitous extra precision).
19 Sept. 1997: [de]time_.c (Unix systems only): change return
type to double.
*/
#include <stdio.h>
void
g77__fvers__ ()
{
fprintf (stderr, "__G77_LIBF77_VERSION__: %s", __G77_LIBF77_VERSION__);
fputs (junk, stderr);
}

18
libf2c/libF77/abort_.c Normal file
View File

@ -0,0 +1,18 @@
#include <stdio.h>
#include "f2c.h"
#ifdef KR_headers
extern VOID sig_die();
int G77_abort_0 ()
#else
extern void sig_die(char*,int);
int G77_abort_0 (void)
#endif
{
sig_die("Fortran abort routine called", 1);
#ifdef __cplusplus
return 0;
#endif
}

14
libf2c/libF77/c_abs.c Normal file
View File

@ -0,0 +1,14 @@
#include "f2c.h"
#ifdef KR_headers
extern double f__cabs();
double c_abs(z) complex *z;
#else
extern double f__cabs(double, double);
double c_abs(complex *z)
#endif
{
return( f__cabs( z->r, z->i ) );
}

21
libf2c/libF77/c_cos.c Normal file
View File

@ -0,0 +1,21 @@
#include "f2c.h"
#ifdef KR_headers
extern double sin(), cos(), sinh(), cosh();
VOID c_cos(resx, z) complex *resx, *z;
#else
#undef abs
#include <math.h>
void c_cos(complex *resx, complex *z)
#endif
{
complex res;
res.r = cos(z->r) * cosh(z->i);
res.i = - sin(z->r) * sinh(z->i);
resx->r = res.r;
resx->i = res.i;
}

40
libf2c/libF77/c_div.c Normal file
View File

@ -0,0 +1,40 @@
#include "f2c.h"
#ifdef KR_headers
extern VOID sig_die();
VOID c_div(resx, a, b)
complex *a, *b, *resx;
#else
extern void sig_die(char*,int);
void c_div(complex *resx, complex *a, complex *b)
#endif
{
double ratio, den;
double abr, abi;
complex res;
if( (abr = b->r) < 0.)
abr = - abr;
if( (abi = b->i) < 0.)
abi = - abi;
if( abr <= abi )
{
if(abi == 0)
sig_die("complex division by zero", 1);
ratio = (double)b->r / b->i ;
den = b->i * (1 + ratio*ratio);
res.r = (a->r*ratio + a->i) / den;
res.i = (a->i*ratio - a->r) / den;
}
else
{
ratio = (double)b->i / b->r ;
den = b->r * (1 + ratio*ratio);
res.r = (a->r + a->i*ratio) / den;
res.i = (a->i - a->r*ratio) / den;
}
resx->r = res.r;
resx->i = res.i;
}

23
libf2c/libF77/c_exp.c Normal file
View File

@ -0,0 +1,23 @@
#include "f2c.h"
#ifdef KR_headers
extern double exp(), cos(), sin();
VOID c_exp(resx, z) complex *resx, *z;
#else
#undef abs
#include <math.h>
void c_exp(complex *resx, complex *z)
#endif
{
double expx;
complex res;
expx = exp(z->r);
res.r = expx * cos(z->i);
res.i = expx * sin(z->i);
resx->r = res.r;
resx->i = res.i;
}

21
libf2c/libF77/c_log.c Normal file
View File

@ -0,0 +1,21 @@
#include "f2c.h"
#ifdef KR_headers
extern double log(), f__cabs(), atan2();
VOID c_log(resx, z) complex *resx, *z;
#else
#undef abs
#include <math.h>
extern double f__cabs(double, double);
void c_log(complex *resx, complex *z)
#endif
{
complex res;
res.i = atan2(z->i, z->r);
res.r = log( f__cabs(z->r, z->i) );
resx->r = res.r;
resx->i = res.i;
}

21
libf2c/libF77/c_sin.c Normal file
View File

@ -0,0 +1,21 @@
#include "f2c.h"
#ifdef KR_headers
extern double sin(), cos(), sinh(), cosh();
VOID c_sin(resx, z) complex *resx, *z;
#else
#undef abs
#include <math.h>
void c_sin(complex *resx, complex *z)
#endif
{
complex res;
res.r = sin(z->r) * cosh(z->i);
res.i = cos(z->r) * sinh(z->i);
resx->r = res.r;
resx->i = res.i;
}

38
libf2c/libF77/c_sqrt.c Normal file
View File

@ -0,0 +1,38 @@
#include "f2c.h"
#ifdef KR_headers
extern double sqrt(), f__cabs();
VOID c_sqrt(resx, z) complex *resx, *z;
#else
#undef abs
#include <math.h>
extern double f__cabs(double, double);
void c_sqrt(complex *resx, complex *z)
#endif
{
double mag, t;
complex res;
if( (mag = f__cabs(z->r, z->i)) == 0.)
res.r = res.i = 0.;
else if(z->r > 0)
{
res.r = t = sqrt(0.5 * (mag + z->r) );
t = z->i / t;
res.i = 0.5 * t;
}
else
{
t = sqrt(0.5 * (mag - z->r) );
if(z->i < 0)
t = -t;
res.i = t;
t = z->i / t;
res.r = 0.5 * t;
}
resx->r = res.r;
resx->i = res.i;
}

27
libf2c/libF77/cabs.c Normal file
View File

@ -0,0 +1,27 @@
#ifdef KR_headers
extern double sqrt();
double f__cabs(real, imag) double real, imag;
#else
#undef abs
#include <math.h>
double f__cabs(double real, double imag)
#endif
{
double temp;
if(real < 0)
real = -real;
if(imag < 0)
imag = -imag;
if(imag > real){
temp = real;
real = imag;
imag = temp;
}
if((real+imag) == real)
return(real);
temp = imag/real;
temp = real*sqrt(1.0 + temp*temp); /*overflow!!*/
return(temp);
}

12
libf2c/libF77/d_abs.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
double d_abs(x) doublereal *x;
#else
double d_abs(doublereal *x)
#endif
{
if(*x >= 0)
return(*x);
return(- *x);
}

13
libf2c/libF77/d_acos.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double acos();
double d_acos(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_acos(doublereal *x)
#endif
{
return( acos(*x) );
}

13
libf2c/libF77/d_asin.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double asin();
double d_asin(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_asin(doublereal *x)
#endif
{
return( asin(*x) );
}

13
libf2c/libF77/d_atan.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double atan();
double d_atan(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_atan(doublereal *x)
#endif
{
return( atan(*x) );
}

13
libf2c/libF77/d_atn2.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double atan2();
double d_atn2(x,y) doublereal *x, *y;
#else
#undef abs
#include <math.h>
double d_atn2(doublereal *x, doublereal *y)
#endif
{
return( atan2(*x,*y) );
}

17
libf2c/libF77/d_cnjg.c Normal file
View File

@ -0,0 +1,17 @@
#include "f2c.h"
VOID
#ifdef KR_headers
d_cnjg(resx, z) doublecomplex *resx, *z;
#else
d_cnjg(doublecomplex *resx, doublecomplex *z)
#endif
{
doublecomplex res;
res.r = z->r;
res.i = - z->i;
resx->r = res.r;
resx->i = res.i;
}

13
libf2c/libF77/d_cos.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double cos();
double d_cos(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_cos(doublereal *x)
#endif
{
return( cos(*x) );
}

13
libf2c/libF77/d_cosh.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double cosh();
double d_cosh(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_cosh(doublereal *x)
#endif
{
return( cosh(*x) );
}

10
libf2c/libF77/d_dim.c Normal file
View File

@ -0,0 +1,10 @@
#include "f2c.h"
#ifdef KR_headers
double d_dim(a,b) doublereal *a, *b;
#else
double d_dim(doublereal *a, doublereal *b)
#endif
{
return( *a > *b ? *a - *b : 0);
}

13
libf2c/libF77/d_exp.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double exp();
double d_exp(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_exp(doublereal *x)
#endif
{
return( exp(*x) );
}

10
libf2c/libF77/d_imag.c Normal file
View File

@ -0,0 +1,10 @@
#include "f2c.h"
#ifdef KR_headers
double d_imag(z) doublecomplex *z;
#else
double d_imag(doublecomplex *z)
#endif
{
return(z->i);
}

13
libf2c/libF77/d_int.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double floor();
double d_int(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_int(doublereal *x)
#endif
{
return( (*x>0) ? floor(*x) : -floor(- *x) );
}

15
libf2c/libF77/d_lg10.c Normal file
View File

@ -0,0 +1,15 @@
#include "f2c.h"
#define log10e 0.43429448190325182765
#ifdef KR_headers
double log();
double d_lg10(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_lg10(doublereal *x)
#endif
{
return( log10e * log(*x) );
}

13
libf2c/libF77/d_log.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double log();
double d_log(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_log(doublereal *x)
#endif
{
return( log(*x) );
}

40
libf2c/libF77/d_mod.c Normal file
View File

@ -0,0 +1,40 @@
#include "f2c.h"
#ifdef KR_headers
#ifdef IEEE_drem
double drem();
#else
double floor();
#endif
double d_mod(x,y) doublereal *x, *y;
#else
#ifdef IEEE_drem
double drem(double, double);
#else
#undef abs
#include <math.h>
#endif
double d_mod(doublereal *x, doublereal *y)
#endif
{
#ifdef IEEE_drem
double xa, ya, z;
if ((ya = *y) < 0.)
ya = -ya;
z = drem(xa = *x, ya);
if (xa > 0) {
if (z < 0)
z += ya;
}
else if (z > 0)
z -= ya;
return z;
#else
double quotient;
if( (quotient = *x / *y) >= 0)
quotient = floor(quotient);
else
quotient = -floor(-quotient);
return(*x - (*y) * quotient );
#endif
}

14
libf2c/libF77/d_nint.c Normal file
View File

@ -0,0 +1,14 @@
#include "f2c.h"
#ifdef KR_headers
double floor();
double d_nint(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_nint(doublereal *x)
#endif
{
return( (*x)>=0 ?
floor(*x + .5) : -floor(.5 - *x) );
}

10
libf2c/libF77/d_prod.c Normal file
View File

@ -0,0 +1,10 @@
#include "f2c.h"
#ifdef KR_headers
double d_prod(x,y) real *x, *y;
#else
double d_prod(real *x, real *y)
#endif
{
return( (*x) * (*y) );
}

12
libf2c/libF77/d_sign.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
double d_sign(a,b) doublereal *a, *b;
#else
double d_sign(doublereal *a, doublereal *b)
#endif
{
double x;
x = (*a >= 0 ? *a : - *a);
return( *b >= 0 ? x : -x);
}

13
libf2c/libF77/d_sin.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double sin();
double d_sin(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_sin(doublereal *x)
#endif
{
return( sin(*x) );
}

13
libf2c/libF77/d_sinh.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double sinh();
double d_sinh(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_sinh(doublereal *x)
#endif
{
return( sinh(*x) );
}

13
libf2c/libF77/d_sqrt.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double sqrt();
double d_sqrt(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_sqrt(doublereal *x)
#endif
{
return( sqrt(*x) );
}

13
libf2c/libF77/d_tan.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double tan();
double d_tan(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_tan(doublereal *x)
#endif
{
return( tan(*x) );
}

13
libf2c/libF77/d_tanh.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double tanh();
double d_tanh(x) doublereal *x;
#else
#undef abs
#include <math.h>
double d_tanh(doublereal *x)
#endif
{
return( tanh(*x) );
}

12
libf2c/libF77/derf_.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
double erf();
double G77_derf_0 (x) doublereal *x;
#else
extern double erf(double);
double G77_derf_0 (doublereal *x)
#endif
{
return( erf(*x) );
}

14
libf2c/libF77/derfc_.c Normal file
View File

@ -0,0 +1,14 @@
#include "f2c.h"
#ifdef KR_headers
extern double erfc();
double G77_derfc_0 (x) doublereal *x;
#else
extern double erfc(double);
double G77_derfc_0 (doublereal *x)
#endif
{
return( erfc(*x) );
}

45
libf2c/libF77/dtime_.c Normal file
View File

@ -0,0 +1,45 @@
#include "time.h"
#ifndef USE_CLOCK
#include "sys/types.h"
#include "sys/times.h"
#endif
#undef Hz
#ifdef CLK_TCK
#define Hz CLK_TCK
#else
#ifdef HZ
#define Hz HZ
#else
#define Hz 60
#endif
#endif
double
#ifdef KR_headers
dtime_(tarray) float *tarray;
#else
dtime_(float *tarray)
#endif
{
#ifdef USE_CLOCK
#ifndef CLOCKS_PER_SECOND
#define CLOCKS_PER_SECOND Hz
#endif
static double t0;
double t = clock();
tarray[1] = 0;
tarray[0] = (t - t0) / CLOCKS_PER_SECOND;
t0 = t;
return tarray[0];
#else
struct tms t;
static struct tms t0;
times(&t);
tarray[0] = (t.tms_utime - t0.tms_utime) / Hz;
tarray[1] = (t.tms_stime - t0.tms_stime) / Hz;
t0 = t;
return tarray[0] + tarray[1];
#endif
}

21
libf2c/libF77/ef1asc_.c Normal file
View File

@ -0,0 +1,21 @@
/* EFL support routine to copy string b to string a */
#include "f2c.h"
#define M ( (long) (sizeof(long) - 1) )
#define EVEN(x) ( ( (x)+ M) & (~M) )
#ifdef KR_headers
extern VOID s_copy();
G77_ef1asc_0 (a, la, b, lb) ftnint *a, *b; ftnlen *la, *lb;
#else
extern void s_copy(char*,char*,ftnlen,ftnlen);
int G77_ef1asc_0 (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb)
#endif
{
s_copy( (char *)a, (char *)b, EVEN(*la), *lb );
#ifdef __cplusplus
return 0;
#endif
}

14
libf2c/libF77/ef1cmc_.c Normal file
View File

@ -0,0 +1,14 @@
/* EFL support routine to compare two character strings */
#include "f2c.h"
#ifdef KR_headers
extern integer s_cmp();
integer G77_ef1cmc_0 (a, la, b, lb) ftnint *a, *b; ftnlen *la, *lb;
#else
extern integer s_cmp(char*,char*,ftnlen,ftnlen);
integer G77_ef1cmc_0 (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb)
#endif
{
return( s_cmp( (char *)a, (char *)b, *la, *lb) );
}

12
libf2c/libF77/erf_.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
double erf();
double G77_erf_0 (x) real *x;
#else
extern double erf(double);
double G77_erf_0 (real *x)
#endif
{
return( erf(*x) );
}

12
libf2c/libF77/erfc_.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
double erfc();
double G77_erfc_0 (x) real *x;
#else
extern double erfc(double);
double G77_erfc_0 (real *x)
#endif
{
return( erfc(*x) );
}

38
libf2c/libF77/etime_.c Normal file
View File

@ -0,0 +1,38 @@
#include "time.h"
#ifndef USE_CLOCK
#include "sys/types.h"
#include "sys/times.h"
#endif
#undef Hz
#ifdef CLK_TCK
#define Hz CLK_TCK
#else
#ifdef HZ
#define Hz HZ
#else
#define Hz 60
#endif
#endif
double
#ifdef KR_headers
etime_(tarray) float *tarray;
#else
etime_(float *tarray)
#endif
{
#ifdef USE_CLOCK
#ifndef CLOCKS_PER_SECOND
#define CLOCKS_PER_SECOND Hz
#endif
double t = clock();
tarray[1] = 0;
return tarray[0] = t / CLOCKS_PER_SECOND;
#else
struct tms t;
times(&t);
return (tarray[0] = t.tms_utime/Hz) + (tarray[1] = t.tms_stime/Hz);
#endif
}

37
libf2c/libF77/exit_.c Normal file
View File

@ -0,0 +1,37 @@
/* This gives the effect of
subroutine exit(rc)
integer*4 rc
stop
end
* with the added side effect of supplying rc as the program's exit code.
*/
#include "f2c.h"
#undef abs
#undef min
#undef max
#ifndef KR_headers
#include <stdlib.h>
#ifdef __cplusplus
extern "C" {
#endif
extern void f_exit(void);
#endif
void
#ifdef KR_headers
G77_exit_0 (rc) integer *rc;
#else
G77_exit_0 (integer *rc)
#endif
{
#ifdef NO_ONEXIT
f_exit();
#endif
exit(*rc);
}
#ifdef __cplusplus
}
#endif

162
libf2c/libF77/f2ch.add Normal file
View File

@ -0,0 +1,162 @@
/* If you are using a C++ compiler, append the following to f2c.h
for compiling libF77 and libI77. */
#ifdef __cplusplus
extern "C" {
extern int abort_(void);
extern double c_abs(complex *);
extern void c_cos(complex *, complex *);
extern void c_div(complex *, complex *, complex *);
extern void c_exp(complex *, complex *);
extern void c_log(complex *, complex *);
extern void c_sin(complex *, complex *);
extern void c_sqrt(complex *, complex *);
extern double d_abs(double *);
extern double d_acos(double *);
extern double d_asin(double *);
extern double d_atan(double *);
extern double d_atn2(double *, double *);
extern void d_cnjg(doublecomplex *, doublecomplex *);
extern double d_cos(double *);
extern double d_cosh(double *);
extern double d_dim(double *, double *);
extern double d_exp(double *);
extern double d_imag(doublecomplex *);
extern double d_int(double *);
extern double d_lg10(double *);
extern double d_log(double *);
extern double d_mod(double *, double *);
extern double d_nint(double *);
extern double d_prod(float *, float *);
extern double d_sign(double *, double *);
extern double d_sin(double *);
extern double d_sinh(double *);
extern double d_sqrt(double *);
extern double d_tan(double *);
extern double d_tanh(double *);
extern double derf_(double *);
extern double derfc_(double *);
extern integer do_fio(ftnint *, char *, ftnlen);
extern integer do_lio(ftnint *, ftnint *, char *, ftnlen);
extern integer do_uio(ftnint *, char *, ftnlen);
extern integer e_rdfe(void);
extern integer e_rdue(void);
extern integer e_rsfe(void);
extern integer e_rsfi(void);
extern integer e_rsle(void);
extern integer e_rsli(void);
extern integer e_rsue(void);
extern integer e_wdfe(void);
extern integer e_wdue(void);
extern integer e_wsfe(void);
extern integer e_wsfi(void);
extern integer e_wsle(void);
extern integer e_wsli(void);
extern integer e_wsue(void);
extern int ef1asc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
extern integer ef1cmc_(ftnint *, ftnlen *, ftnint *, ftnlen *);
extern double erf(double);
extern double erf_(float *);
extern double erfc(double);
extern double erfc_(float *);
extern integer f_back(alist *);
extern integer f_clos(cllist *);
extern integer f_end(alist *);
extern void f_exit(void);
extern integer f_inqu(inlist *);
extern integer f_open(olist *);
extern integer f_rew(alist *);
extern int flush_(void);
extern void getarg_(integer *, char *, ftnlen);
extern void getenv_(char *, char *, ftnlen, ftnlen);
extern short h_abs(short *);
extern short h_dim(short *, short *);
extern short h_dnnt(double *);
extern short h_indx(char *, char *, ftnlen, ftnlen);
extern short h_len(char *, ftnlen);
extern short h_mod(short *, short *);
extern short h_nint(float *);
extern short h_sign(short *, short *);
extern short hl_ge(char *, char *, ftnlen, ftnlen);
extern short hl_gt(char *, char *, ftnlen, ftnlen);
extern short hl_le(char *, char *, ftnlen, ftnlen);
extern short hl_lt(char *, char *, ftnlen, ftnlen);
extern integer i_abs(integer *);
extern integer i_dim(integer *, integer *);
extern integer i_dnnt(double *);
extern integer i_indx(char *, char *, ftnlen, ftnlen);
extern integer i_len(char *, ftnlen);
extern integer i_mod(integer *, integer *);
extern integer i_nint(float *);
extern integer i_sign(integer *, integer *);
extern integer iargc_(void);
extern ftnlen l_ge(char *, char *, ftnlen, ftnlen);
extern ftnlen l_gt(char *, char *, ftnlen, ftnlen);
extern ftnlen l_le(char *, char *, ftnlen, ftnlen);
extern ftnlen l_lt(char *, char *, ftnlen, ftnlen);
extern void pow_ci(complex *, complex *, integer *);
extern double pow_dd(double *, double *);
extern double pow_di(double *, integer *);
extern short pow_hh(short *, shortint *);
extern integer pow_ii(integer *, integer *);
extern double pow_ri(float *, integer *);
extern void pow_zi(doublecomplex *, doublecomplex *, integer *);
extern void pow_zz(doublecomplex *, doublecomplex *, doublecomplex *);
extern double r_abs(float *);
extern double r_acos(float *);
extern double r_asin(float *);
extern double r_atan(float *);
extern double r_atn2(float *, float *);
extern void r_cnjg(complex *, complex *);
extern double r_cos(float *);
extern double r_cosh(float *);
extern double r_dim(float *, float *);
extern double r_exp(float *);
extern double r_imag(complex *);
extern double r_int(float *);
extern double r_lg10(float *);
extern double r_log(float *);
extern double r_mod(float *, float *);
extern double r_nint(float *);
extern double r_sign(float *, float *);
extern double r_sin(float *);
extern double r_sinh(float *);
extern double r_sqrt(float *);
extern double r_tan(float *);
extern double r_tanh(float *);
extern void s_cat(char *, char **, integer *, integer *, ftnlen);
extern integer s_cmp(char *, char *, ftnlen, ftnlen);
extern void s_copy(char *, char *, ftnlen, ftnlen);
extern int s_paus(char *, ftnlen);
extern integer s_rdfe(cilist *);
extern integer s_rdue(cilist *);
extern integer s_rnge(char *, integer, char *, integer);
extern integer s_rsfe(cilist *);
extern integer s_rsfi(icilist *);
extern integer s_rsle(cilist *);
extern integer s_rsli(icilist *);
extern integer s_rsne(cilist *);
extern integer s_rsni(icilist *);
extern integer s_rsue(cilist *);
extern int s_stop(char *, ftnlen);
extern integer s_wdfe(cilist *);
extern integer s_wdue(cilist *);
extern integer s_wsfe(cilist *);
extern integer s_wsfi(icilist *);
extern integer s_wsle(cilist *);
extern integer s_wsli(icilist *);
extern integer s_wsne(cilist *);
extern integer s_wsni(icilist *);
extern integer s_wsue(cilist *);
extern void sig_die(char *, int);
extern integer signal_(integer *, void (*)(int));
extern integer system_(char *, ftnlen);
extern double z_abs(doublecomplex *);
extern void z_cos(doublecomplex *, doublecomplex *);
extern void z_div(doublecomplex *, doublecomplex *, doublecomplex *);
extern void z_exp(doublecomplex *, doublecomplex *);
extern void z_log(doublecomplex *, doublecomplex *);
extern void z_sin(doublecomplex *, doublecomplex *);
extern void z_sqrt(doublecomplex *, doublecomplex *);
}
#endif

28
libf2c/libF77/getarg_.c Normal file
View File

@ -0,0 +1,28 @@
#include "f2c.h"
/*
* subroutine getarg(k, c)
* returns the kth unix command argument in fortran character
* variable argument c
*/
#ifdef KR_headers
VOID G77_getarg_0 (n, s, ls) ftnint *n; register char *s; ftnlen ls;
#else
void G77_getarg_0 (ftnint *n, register char *s, ftnlen ls)
#endif
{
extern int xargc;
extern char **xargv;
register char *t;
register int i;
if(*n>=0 && *n<xargc)
t = xargv[*n];
else
t = "";
for(i = 0; i<ls && *t!='\0' ; ++i)
*s++ = *t++;
for( ; i<ls ; ++i)
*s++ = ' ';
}

51
libf2c/libF77/getenv_.c Normal file
View File

@ -0,0 +1,51 @@
#include "f2c.h"
/*
* getenv - f77 subroutine to return environment variables
*
* called by:
* call getenv (ENV_NAME, char_var)
* where:
* ENV_NAME is the name of an environment variable
* char_var is a character variable which will receive
* the current value of ENV_NAME, or all blanks
* if ENV_NAME is not defined
*/
#ifdef KR_headers
VOID G77_getenv_0 (fname, value, flen, vlen) char *value, *fname; ftnlen vlen, flen;
#else
void G77_getenv_0 (char *fname, char *value, ftnlen flen, ftnlen vlen)
#endif
{
extern char **environ;
register char *ep, *fp, *flast;
register char **env = environ;
flast = fname + flen;
for(fp = fname ; fp < flast ; ++fp)
if(*fp == ' ')
{
flast = fp;
break;
}
while (ep = *env++)
{
for(fp = fname; fp<flast ; )
if(*fp++ != *ep++)
goto endloop;
if(*ep++ == '=') { /* copy right hand side */
while( *ep && --vlen>=0 )
*value++ = *ep++;
goto blank;
}
endloop: ;
}
blank:
while( --vlen >= 0 )
*value++ = ' ';
}

12
libf2c/libF77/h_abs.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
shortint h_abs(x) shortint *x;
#else
shortint h_abs(shortint *x)
#endif
{
if(*x >= 0)
return(*x);
return(- *x);
}

10
libf2c/libF77/h_dim.c Normal file
View File

@ -0,0 +1,10 @@
#include "f2c.h"
#ifdef KR_headers
shortint h_dim(a,b) shortint *a, *b;
#else
shortint h_dim(shortint *a, shortint *b)
#endif
{
return( *a > *b ? *a - *b : 0);
}

14
libf2c/libF77/h_dnnt.c Normal file
View File

@ -0,0 +1,14 @@
#include "f2c.h"
#ifdef KR_headers
double floor();
shortint h_dnnt(x) doublereal *x;
#else
#undef abs
#include <math.h>
shortint h_dnnt(doublereal *x)
#endif
{
return( (*x)>=0 ?
floor(*x + .5) : -floor(.5 - *x) );
}

26
libf2c/libF77/h_indx.c Normal file
View File

@ -0,0 +1,26 @@
#include "f2c.h"
#ifdef KR_headers
shortint h_indx(a, b, la, lb) char *a, *b; ftnlen la, lb;
#else
shortint h_indx(char *a, char *b, ftnlen la, ftnlen lb)
#endif
{
ftnlen i, n;
char *s, *t, *bend;
n = la - lb + 1;
bend = b + lb;
for(i = 0 ; i < n ; ++i)
{
s = a + i;
t = b;
while(t < bend)
if(*s++ != *t++)
goto no;
return((shortint)i+1);
no: ;
}
return(0);
}

10
libf2c/libF77/h_len.c Normal file
View File

@ -0,0 +1,10 @@
#include "f2c.h"
#ifdef KR_headers
shortint h_len(s, n) char *s; ftnlen n;
#else
shortint h_len(char *s, ftnlen n)
#endif
{
return(n);
}

10
libf2c/libF77/h_mod.c Normal file
View File

@ -0,0 +1,10 @@
#include "f2c.h"
#ifdef KR_headers
shortint h_mod(a,b) short *a, *b;
#else
shortint h_mod(short *a, short *b)
#endif
{
return( *a % *b);
}

14
libf2c/libF77/h_nint.c Normal file
View File

@ -0,0 +1,14 @@
#include "f2c.h"
#ifdef KR_headers
double floor();
shortint h_nint(x) real *x;
#else
#undef abs
#include <math.h>
shortint h_nint(real *x)
#endif
{
return( (*x)>=0 ?
floor(*x + .5) : -floor(.5 - *x) );
}

12
libf2c/libF77/h_sign.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
shortint h_sign(a,b) shortint *a, *b;
#else
shortint h_sign(shortint *a, shortint *b)
#endif
{
shortint x;
x = (*a >= 0 ? *a : - *a);
return( *b >= 0 ? x : -x);
}

12
libf2c/libF77/hl_ge.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
extern integer s_cmp();
shortlogical hl_ge(a,b,la,lb) char *a, *b; ftnlen la, lb;
#else
extern integer s_cmp(char *, char *, ftnlen, ftnlen);
shortlogical hl_ge(char *a, char *b, ftnlen la, ftnlen lb)
#endif
{
return(s_cmp(a,b,la,lb) >= 0);
}

12
libf2c/libF77/hl_gt.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
extern integer s_cmp();
shortlogical hl_gt(a,b,la,lb) char *a, *b; ftnlen la, lb;
#else
extern integer s_cmp(char *, char *, ftnlen, ftnlen);
shortlogical hl_gt(char *a, char *b, ftnlen la, ftnlen lb)
#endif
{
return(s_cmp(a,b,la,lb) > 0);
}

12
libf2c/libF77/hl_le.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
extern integer s_cmp();
shortlogical hl_le(a,b,la,lb) char *a, *b; ftnlen la, lb;
#else
extern integer s_cmp(char *, char *, ftnlen, ftnlen);
shortlogical hl_le(char *a, char *b, ftnlen la, ftnlen lb)
#endif
{
return(s_cmp(a,b,la,lb) <= 0);
}

12
libf2c/libF77/hl_lt.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
extern integer s_cmp();
shortlogical hl_lt(a,b,la,lb) char *a, *b; ftnlen la, lb;
#else
extern integer s_cmp(char *, char *, ftnlen, ftnlen);
shortlogical hl_lt(char *a, char *b, ftnlen la, ftnlen lb)
#endif
{
return(s_cmp(a,b,la,lb) < 0);
}

12
libf2c/libF77/i_abs.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
integer i_abs(x) integer *x;
#else
integer i_abs(integer *x)
#endif
{
if(*x >= 0)
return(*x);
return(- *x);
}

10
libf2c/libF77/i_dim.c Normal file
View File

@ -0,0 +1,10 @@
#include "f2c.h"
#ifdef KR_headers
integer i_dim(a,b) integer *a, *b;
#else
integer i_dim(integer *a, integer *b)
#endif
{
return( *a > *b ? *a - *b : 0);
}

14
libf2c/libF77/i_dnnt.c Normal file
View File

@ -0,0 +1,14 @@
#include "f2c.h"
#ifdef KR_headers
double floor();
integer i_dnnt(x) doublereal *x;
#else
#undef abs
#include <math.h>
integer i_dnnt(doublereal *x)
#endif
{
return( (*x)>=0 ?
floor(*x + .5) : -floor(.5 - *x) );
}

26
libf2c/libF77/i_indx.c Normal file
View File

@ -0,0 +1,26 @@
#include "f2c.h"
#ifdef KR_headers
integer i_indx(a, b, la, lb) char *a, *b; ftnlen la, lb;
#else
integer i_indx(char *a, char *b, ftnlen la, ftnlen lb)
#endif
{
ftnlen i, n;
char *s, *t, *bend;
n = la - lb + 1;
bend = b + lb;
for(i = 0 ; i < n ; ++i)
{
s = a + i;
t = b;
while(t < bend)
if(*s++ != *t++)
goto no;
return(i+1);
no: ;
}
return(0);
}

10
libf2c/libF77/i_len.c Normal file
View File

@ -0,0 +1,10 @@
#include "f2c.h"
#ifdef KR_headers
integer i_len(s, n) char *s; ftnlen n;
#else
integer i_len(char *s, ftnlen n)
#endif
{
return(n);
}

10
libf2c/libF77/i_mod.c Normal file
View File

@ -0,0 +1,10 @@
#include "f2c.h"
#ifdef KR_headers
integer i_mod(a,b) integer *a, *b;
#else
integer i_mod(integer *a, integer *b)
#endif
{
return( *a % *b);
}

14
libf2c/libF77/i_nint.c Normal file
View File

@ -0,0 +1,14 @@
#include "f2c.h"
#ifdef KR_headers
double floor();
integer i_nint(x) real *x;
#else
#undef abs
#include <math.h>
integer i_nint(real *x)
#endif
{
return( (*x)>=0 ?
floor(*x + .5) : -floor(.5 - *x) );
}

12
libf2c/libF77/i_sign.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
integer i_sign(a,b) integer *a, *b;
#else
integer i_sign(integer *a, integer *b)
#endif
{
integer x;
x = (*a >= 0 ? *a : - *a);
return( *b >= 0 ? x : -x);
}

11
libf2c/libF77/iargc_.c Normal file
View File

@ -0,0 +1,11 @@
#include "f2c.h"
#ifdef KR_headers
ftnint G77_iargc_0 ()
#else
ftnint G77_iargc_0 (void)
#endif
{
extern int xargc;
return ( xargc - 1 );
}

12
libf2c/libF77/l_ge.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
extern integer s_cmp();
logical l_ge(a,b,la,lb) char *a, *b; ftnlen la, lb;
#else
extern integer s_cmp(char *, char *, ftnlen, ftnlen);
logical l_ge(char *a, char *b, ftnlen la, ftnlen lb)
#endif
{
return(s_cmp(a,b,la,lb) >= 0);
}

12
libf2c/libF77/l_gt.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
extern integer s_cmp();
logical l_gt(a,b,la,lb) char *a, *b; ftnlen la, lb;
#else
extern integer s_cmp(char *, char *, ftnlen, ftnlen);
logical l_gt(char *a, char *b, ftnlen la, ftnlen lb)
#endif
{
return(s_cmp(a,b,la,lb) > 0);
}

12
libf2c/libF77/l_le.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
extern integer s_cmp();
logical l_le(a,b,la,lb) char *a, *b; ftnlen la, lb;
#else
extern integer s_cmp(char *, char *, ftnlen, ftnlen);
logical l_le(char *a, char *b, ftnlen la, ftnlen lb)
#endif
{
return(s_cmp(a,b,la,lb) <= 0);
}

12
libf2c/libF77/l_lt.c Normal file
View File

@ -0,0 +1,12 @@
#include "f2c.h"
#ifdef KR_headers
extern integer s_cmp();
logical l_lt(a,b,la,lb) char *a, *b; ftnlen la, lb;
#else
extern integer s_cmp(char *, char *, ftnlen, ftnlen);
logical l_lt(char *a, char *b, ftnlen la, ftnlen lb)
#endif
{
return(s_cmp(a,b,la,lb) < 0);
}

62
libf2c/libF77/lbitbits.c Normal file
View File

@ -0,0 +1,62 @@
#include "f2c.h"
#ifndef LONGBITS
#define LONGBITS 32
#endif
integer
#ifdef KR_headers
lbit_bits(a, b, len) integer a, b, len;
#else
lbit_bits(integer a, integer b, integer len)
#endif
{
/* Assume 2's complement arithmetic */
unsigned long x, y;
x = (unsigned long) a;
y = (unsigned long)-1L;
x >>= b;
y <<= len;
return (integer)(x & ~y);
}
integer
#ifdef KR_headers
lbit_cshift(a, b, len) integer a, b, len;
#else
lbit_cshift(integer a, integer b, integer len)
#endif
{
unsigned long x, y, z;
x = (unsigned long)a;
if (len <= 0) {
if (len == 0)
return 0;
goto full_len;
}
if (len >= LONGBITS) {
full_len:
if (b >= 0) {
b %= LONGBITS;
return (integer)(x << b | x >> LONGBITS -b );
}
b = -b;
b %= LONGBITS;
return (integer)(x << LONGBITS - b | x >> b);
}
y = z = (unsigned long)-1;
y <<= len;
z &= ~y;
y &= x;
x &= z;
if (b >= 0) {
b %= len;
return (integer)(y | z & (x << b | x >> len - b));
}
b = -b;
b %= len;
return (integer)(y | z & (x >> b | x << len - b));
}

11
libf2c/libF77/lbitshft.c Normal file
View File

@ -0,0 +1,11 @@
#include "f2c.h"
integer
#ifdef KR_headers
lbit_shift(a, b) integer a; integer b;
#else
lbit_shift(integer a, integer b)
#endif
{
return b >= 0 ? a << b : (integer)((uinteger)a >> -b);
}

135
libf2c/libF77/main.c Normal file
View File

@ -0,0 +1,135 @@
/* STARTUP PROCEDURE FOR UNIX FORTRAN PROGRAMS */
#include <stdio.h>
#include "signal1.h"
#ifndef SIGIOT
#ifdef SIGABRT
#define SIGIOT SIGABRT
#endif
#endif
#ifndef KR_headers
#undef VOID
#include <stdlib.h>
#endif
#ifndef VOID
#define VOID void
#endif
#ifdef __cplusplus
extern "C" {
#endif
#ifdef NO__STDC
#define ONEXIT onexit
extern VOID f_exit();
#else
#ifndef KR_headers
extern void f_exit(void);
#ifndef NO_ONEXIT
#define ONEXIT atexit
extern int atexit(void (*)(void));
#endif
#else
#ifndef NO_ONEXIT
#define ONEXIT onexit
extern VOID f_exit();
#endif
#endif
#endif
#ifdef KR_headers
extern VOID f_init(), sig_die();
extern int MAIN__();
#define Int /* int */
#else
extern void f_init(void), sig_die(char*, int);
extern int MAIN__(void);
#define Int int
#endif
static VOID sigfdie(Int n)
{
sig_die("Floating Exception", 1);
}
static VOID sigidie(Int n)
{
sig_die("IOT Trap", 1);
}
#ifdef SIGQUIT
static VOID sigqdie(Int n)
{
sig_die("Quit signal", 1);
}
#endif
static VOID sigindie(Int n)
{
sig_die("Interrupt", 0);
}
static VOID sigtdie(Int n)
{
sig_die("Killed", 0);
}
#ifdef SIGTRAP
static VOID sigtrdie(Int n)
{
sig_die("Trace trap", 1);
}
#endif
int xargc;
char **xargv;
#ifdef __cplusplus
}
#endif
#ifdef KR_headers
main(argc, argv) int argc; char **argv;
#else
main(int argc, char **argv)
#endif
{
xargc = argc;
xargv = argv;
signal1(SIGFPE, sigfdie); /* ignore underflow, enable overflow */
#ifdef SIGIOT
signal1(SIGIOT, sigidie);
#endif
#ifdef SIGTRAP
signal1(SIGTRAP, sigtrdie);
#endif
#ifdef SIGQUIT
if(signal1(SIGQUIT,sigqdie) == SIG_IGN)
signal1(SIGQUIT, SIG_IGN);
#endif
if(signal1(SIGINT, sigindie) == SIG_IGN)
signal1(SIGINT, SIG_IGN);
signal1(SIGTERM,sigtdie);
#ifdef pdp11
ldfps(01200); /* detect overflow as an exception */
#endif
f_init();
#ifndef NO_ONEXIT
ONEXIT(f_exit);
#endif
MAIN__();
#ifdef NO_ONEXIT
f_exit();
#endif
exit(0); /* exit(0) rather than return(0) to bypass Cray bug */
return 0; /* For compilers that complain of missing return values; */
/* others will complain that this is unreachable code. */
}

View File

@ -0,0 +1,103 @@
.SUFFIXES: .c .o
CC = cc
SHELL = /bin/sh
CFLAGS = -O
# If your system lacks onexit() and you are not using an
# ANSI C compiler, then you should add -DNO_ONEXIT to CFLAGS,
# e.g., by changing the above "CFLAGS =" line to
# CFLAGS = -O -DNO_ONEXIT
# On at least some Sun systems, it is more appropriate to change the
# "CFLAGS =" line to
# CFLAGS = -O -Donexit=on_exit
# compile, then strip unnecessary symbols
.c.o:
$(CC) -c -DSkip_f2c_Undefs $(CFLAGS) $*.c
ld -r -x -o $*.xxx $*.o
mv $*.xxx $*.o
## Under Solaris (and other systems that do not understand ld -x),
## omit -x in the ld line above.
## If your system does not have the ld command, comment out
## or remove both the ld and mv lines above.
MISC = F77_aloc.o Version.o main.o s_rnge.o abort_.o getarg_.o iargc_.o \
getenv_.o signal_.o s_stop.o s_paus.o system_.o cabs.o\
derf_.o derfc_.o erf_.o erfc_.o sig_die.o exit_.o
POW = pow_ci.o pow_dd.o pow_di.o pow_hh.o pow_ii.o pow_ri.o pow_zi.o pow_zz.o
CX = c_abs.o c_cos.o c_div.o c_exp.o c_log.o c_sin.o c_sqrt.o
DCX = z_abs.o z_cos.o z_div.o z_exp.o z_log.o z_sin.o z_sqrt.o
REAL = r_abs.o r_acos.o r_asin.o r_atan.o r_atn2.o r_cnjg.o r_cos.o\
r_cosh.o r_dim.o r_exp.o r_imag.o r_int.o\
r_lg10.o r_log.o r_mod.o r_nint.o r_sign.o\
r_sin.o r_sinh.o r_sqrt.o r_tan.o r_tanh.o
DBL = d_abs.o d_acos.o d_asin.o d_atan.o d_atn2.o\
d_cnjg.o d_cos.o d_cosh.o d_dim.o d_exp.o\
d_imag.o d_int.o d_lg10.o d_log.o d_mod.o\
d_nint.o d_prod.o d_sign.o d_sin.o d_sinh.o\
d_sqrt.o d_tan.o d_tanh.o
INT = i_abs.o i_dim.o i_dnnt.o i_indx.o i_len.o i_mod.o i_nint.o i_sign.o
HALF = h_abs.o h_dim.o h_dnnt.o h_indx.o h_len.o h_mod.o h_nint.o h_sign.o
CMP = l_ge.o l_gt.o l_le.o l_lt.o hl_ge.o hl_gt.o hl_le.o hl_lt.o
EFL = ef1asc_.o ef1cmc_.o
CHAR = F77_aloc.o s_cat.o s_cmp.o s_copy.o
F90BIT = lbitbits.o lbitshft.o
QINT = pow_qq.o qbitbits.o qbitshft.o
TIME = dtime_.o etime_.o
all: signal1.h libF77.a
# You may need to adjust signal1.h suitably for your system...
signal1.h: signal1.h0
cp signal1.h0 signal1.h
# If you get an error compiling dtime_.c or etime_.c, try adding
# -DUSE_CLOCK to the CFLAGS assignment above; if that does not work,
# omit $(TIME) from the dependency list for libF77.a below.
# For INTEGER*8 support (which requires system-dependent adjustments to
# f2c.h), add $(QINT) to the libf2c.a dependency list below...
libF77.a : $(MISC) $(POW) $(CX) $(DCX) $(REAL) $(DBL) $(INT) \
$(HALF) $(CMP) $(EFL) $(CHAR) $(F90BIT) $(TIME)
ar r libF77.a $?
-ranlib libF77.a
### If your system lacks ranlib, you don't need it; see README.
Version.o: Version.c
$(CC) -c Version.c
# To compile with C++, first "make f2c.h"
f2c.h: f2ch.add
cat /usr/include/f2c.h f2ch.add >f2c.h
install: libF77.a
mv libF77.a /usr/lib
ranlib /usr/lib/libF77.a
clean:
rm -f libF77.a *.o
check:
xsum F77_aloc.c Notice README Version.c abort_.c c_abs.c c_cos.c \
c_div.c c_exp.c c_log.c c_sin.c c_sqrt.c cabs.c d_abs.c d_acos.c \
d_asin.c d_atan.c d_atn2.c d_cnjg.c d_cos.c d_cosh.c d_dim.c \
d_exp.c d_imag.c d_int.c d_lg10.c d_log.c d_mod.c d_nint.c \
d_prod.c d_sign.c d_sin.c d_sinh.c d_sqrt.c d_tan.c d_tanh.c \
derf_.c derfc_.c dtime_.c \
ef1asc_.c ef1cmc_.c erf_.c erfc_.c etime_.c exit_.c f2ch.add \
getarg_.c getenv_.c h_abs.c h_dim.c h_dnnt.c h_indx.c h_len.c \
h_mod.c h_nint.c h_sign.c hl_ge.c hl_gt.c hl_le.c hl_lt.c \
i_abs.c i_dim.c i_dnnt.c i_indx.c i_len.c i_mod.c i_nint.c \
i_sign.c iargc_.c l_ge.c l_gt.c l_le.c l_lt.c lbitbits.c lbitshft.c \
main.c makefile pow_ci.c pow_dd.c pow_di.c pow_hh.c pow_ii.c \
pow_qq.c pow_ri.c pow_zi.c pow_zz.c qbitbits.c qbitshft.c \
r_abs.c r_acos.c r_asin.c r_atan.c r_atn2.c \
r_cnjg.c r_cos.c r_cosh.c r_dim.c r_exp.c r_imag.c r_int.c r_lg10.c \
r_log.c r_mod.c r_nint.c r_sign.c r_sin.c r_sinh.c r_sqrt.c \
r_tan.c r_tanh.c s_cat.c s_cmp.c s_copy.c \
s_paus.c s_rnge.c s_stop.c sig_die.c signal1.h0 signal_.c system_.c \
z_abs.c z_cos.c z_div.c z_exp.c z_log.c z_sin.c z_sqrt.c >zap
cmp zap libF77.xsum && rm zap || diff libF77.xsum zap

20
libf2c/libF77/pow_ci.c Normal file
View File

@ -0,0 +1,20 @@
#include "f2c.h"
#ifdef KR_headers
VOID pow_ci(p, a, b) /* p = a**b */
complex *p, *a; integer *b;
#else
extern void pow_zi(doublecomplex*, doublecomplex*, integer*);
void pow_ci(complex *p, complex *a, integer *b) /* p = a**b */
#endif
{
doublecomplex p1, a1;
a1.r = a->r;
a1.i = a->i;
pow_zi(&p1, &a1, b);
p->r = p1.r;
p->i = p1.i;
}

13
libf2c/libF77/pow_dd.c Normal file
View File

@ -0,0 +1,13 @@
#include "f2c.h"
#ifdef KR_headers
double pow();
double pow_dd(ap, bp) doublereal *ap, *bp;
#else
#undef abs
#include <math.h>
double pow_dd(doublereal *ap, doublereal *bp)
#endif
{
return(pow(*ap, *bp) );
}

35
libf2c/libF77/pow_di.c Normal file
View File

@ -0,0 +1,35 @@
#include "f2c.h"
#ifdef KR_headers
double pow_di(ap, bp) doublereal *ap; integer *bp;
#else
double pow_di(doublereal *ap, integer *bp)
#endif
{
double pow, x;
integer n;
unsigned long u;
pow = 1;
x = *ap;
n = *bp;
if(n != 0)
{
if(n < 0)
{
n = -n;
x = 1/x;
}
for(u = n; ; )
{
if(u & 01)
pow *= x;
if(u >>= 1)
x *= x;
else
break;
}
}
return(pow);
}

33
libf2c/libF77/pow_hh.c Normal file
View File

@ -0,0 +1,33 @@
#include "f2c.h"
#ifdef KR_headers
shortint pow_hh(ap, bp) shortint *ap, *bp;
#else
shortint pow_hh(shortint *ap, shortint *bp)
#endif
{
shortint pow, x, n;
unsigned u;
x = *ap;
n = *bp;
if (n <= 0) {
if (n == 0 || x == 1)
return 1;
if (x != -1)
return x == 0 ? 1/x : 0;
n = -n;
}
u = n;
for(pow = 1; ; )
{
if(u & 01)
pow *= x;
if(u >>= 1)
x *= x;
else
break;
}
return(pow);
}

33
libf2c/libF77/pow_ii.c Normal file
View File

@ -0,0 +1,33 @@
#include "f2c.h"
#ifdef KR_headers
integer pow_ii(ap, bp) integer *ap, *bp;
#else
integer pow_ii(integer *ap, integer *bp)
#endif
{
integer pow, x, n;
unsigned long u;
x = *ap;
n = *bp;
if (n <= 0) {
if (n == 0 || x == 1)
return 1;
if (x != -1)
return x == 0 ? 1/x : 0;
n = -n;
}
u = n;
for(pow = 1; ; )
{
if(u & 01)
pow *= x;
if(u >>= 1)
x *= x;
else
break;
}
return(pow);
}

33
libf2c/libF77/pow_qq.c Normal file
View File

@ -0,0 +1,33 @@
#include "f2c.h"
#ifdef KR_headers
longint pow_qq(ap, bp) longint *ap, *bp;
#else
longint pow_qq(longint *ap, longint *bp)
#endif
{
longint pow, x, n;
unsigned long long u; /* system-dependent */
x = *ap;
n = *bp;
if (n <= 0) {
if (n == 0 || x == 1)
return 1;
if (x != -1)
return x == 0 ? 1/x : 0;
n = -n;
}
u = n;
for(pow = 1; ; )
{
if(u & 01)
pow *= x;
if(u >>= 1)
x *= x;
else
break;
}
return(pow);
}

35
libf2c/libF77/pow_ri.c Normal file
View File

@ -0,0 +1,35 @@
#include "f2c.h"
#ifdef KR_headers
double pow_ri(ap, bp) real *ap; integer *bp;
#else
double pow_ri(real *ap, integer *bp)
#endif
{
double pow, x;
integer n;
unsigned long u;
pow = 1;
x = *ap;
n = *bp;
if(n != 0)
{
if(n < 0)
{
n = -n;
x = 1/x;
}
for(u = n; ; )
{
if(u & 01)
pow *= x;
if(u >>= 1)
x *= x;
else
break;
}
}
return(pow);
}

61
libf2c/libF77/pow_zi.c Normal file
View File

@ -0,0 +1,61 @@
#include "f2c.h"
#ifdef KR_headers
VOID pow_zi(resx, a, b) /* p = a**b */
doublecomplex *resx, *a; integer *b;
#else
extern void z_div(doublecomplex*, doublecomplex*, doublecomplex*);
void pow_zi(doublecomplex *resx, doublecomplex *a, integer *b) /* p = a**b */
#endif
{
integer n;
unsigned long u;
double t;
doublecomplex x;
doublecomplex res;
static doublecomplex one = {1.0, 0.0};
n = *b;
if(n == 0)
{
resx->r = 1;
resx->i = 0;
return;
}
res.r = 1;
res.i = 0;
if(n < 0)
{
n = -n;
z_div(&x, &one, a);
}
else
{
x.r = a->r;
x.i = a->i;
}
for(u = n; ; )
{
if(u & 01)
{
t = res.r * x.r - res.i * x.i;
res.i = res.r * x.i + res.i * x.r;
res.r = t;
}
if(u >>= 1)
{
t = x.r * x.r - x.i * x.i;
x.i = 2 * x.r * x.i;
x.r = t;
}
else
break;
}
resx->r = res.r;
resx->i = res.i;
}

23
libf2c/libF77/pow_zz.c Normal file
View File

@ -0,0 +1,23 @@
#include "f2c.h"
#ifdef KR_headers
double log(), exp(), cos(), sin(), atan2(), f__cabs();
VOID pow_zz(r,a,b) doublecomplex *r, *a, *b;
#else
#undef abs
#include <math.h>
extern double f__cabs(double,double);
void pow_zz(doublecomplex *r, doublecomplex *a, doublecomplex *b)
#endif
{
double logr, logi, x, y;
logr = log( f__cabs(a->r, a->i) );
logi = atan2(a->i, a->r);
x = exp( logr * b->r - logi * b->i );
y = logr * b->i + logi * b->r;
r->r = x * cos(y);
r->i = x * sin(y);
}

66
libf2c/libF77/qbitbits.c Normal file
View File

@ -0,0 +1,66 @@
#include "f2c.h"
#ifndef LONGBITS
#define LONGBITS 32
#endif
#ifndef LONG8BITS
#define LONG8BITS (2*LONGBITS)
#endif
integer
#ifdef KR_headers
qbit_bits(a, b, len) longint a; integer b, len;
#else
qbit_bits(longint a, integer b, integer len)
#endif
{
/* Assume 2's complement arithmetic */
ulongint x, y;
x = (ulongint) a;
y = (ulongint)-1L;
x >>= b;
y <<= len;
return (longint)(x & y);
}
longint
#ifdef KR_headers
qbit_cshift(a, b, len) longint a; integer b, len;
#else
qbit_cshift(longint a, integer b, integer len)
#endif
{
ulongint x, y, z;
x = (ulongint)a;
if (len <= 0) {
if (len == 0)
return 0;
goto full_len;
}
if (len >= LONG8BITS) {
full_len:
if (b >= 0) {
b %= LONG8BITS;
return (longint)(x << b | x >> LONG8BITS - b );
}
b = -b;
b %= LONG8BITS;
return (longint)(x << LONG8BITS - b | x >> b);
}
y = z = (unsigned long)-1;
y <<= len;
z &= ~y;
y &= x;
x &= z;
if (b >= 0) {
b %= len;
return (longint)(y | z & (x << b | x >> len - b));
}
b = -b;
b %= len;
return (longint)(y | z & (x >> b | x << len - b));
}

11
libf2c/libF77/qbitshft.c Normal file
View File

@ -0,0 +1,11 @@
#include "f2c.h"
longint
#ifdef KR_headers
qbit_shift(a, b) longint a; integer b;
#else
qbit_shift(longint a, integer b)
#endif
{
return b >= 0 ? a << b : (longint)((ulongint)a >> -b);
}

Some files were not shown because too many files have changed in this diff Show More