mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 10:54:07 +08:00
libf2c: Removed.
2004-07-15 Toon Moene <toon@moene.indiv.nluug.nl> * libf2c: Removed. * gcc/gccbug.in: Updated because of libf2c removal. * maintainer-scripts/gcc_release: Ditto. From-SVN: r84759
This commit is contained in:
parent
48b456474c
commit
3e4035f833
@ -1,3 +1,9 @@
|
||||
2004-07-15 Toon Moene <toon@moene.indiv.nluug.nl>
|
||||
|
||||
* libf2c: Removed.
|
||||
* gcc/gccbug.in: Updated because of libf2c removal.
|
||||
* maintainer-scripts/gcc_release: Ditto.
|
||||
|
||||
2004-07-09 Loren J. Rittle <ljrittle@acm.org>
|
||||
|
||||
* configure.in: Build libmudflap by default on FreeBSD.
|
||||
|
@ -198,7 +198,7 @@ EOF
|
||||
done
|
||||
|
||||
# spam does not need to be listed here
|
||||
CATEGORIES="ada bootstrap c++ c debug driver fortran inline-asm java libf2c libgcj libobjc libstdc++ middle-end objc other pch preprocessor rtl-optimization target tree-optimization web"
|
||||
CATEGORIES="ada bootstrap c++ c debug driver fortran inline-asm java libgcj libobjc libstdc++ middle-end objc other pch preprocessor rtl-optimization target tree-optimization web"
|
||||
|
||||
case "$FORMAT" in
|
||||
lisp) echo "$CATEGORIES" | \
|
||||
|
2423
libf2c/ChangeLog
2423
libf2c/ChangeLog
File diff suppressed because it is too large
Load Diff
@ -1,276 +0,0 @@
|
||||
# Makefile for GNU F77 compiler runtime.
|
||||
# Copyright (C) 1995-1998, 2001, 2002, 2003 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 = @SHELL@
|
||||
PWD_COMMAND = $${PWDCMD-pwd}
|
||||
MAKEOVERRIDES=
|
||||
.NOEXPORTS:
|
||||
|
||||
#### Start of system configuration section. ####
|
||||
|
||||
srcdir = @glibcpp_srcdir@
|
||||
VPATH = @glibcpp_srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
target_alias = @target_alias@
|
||||
gcc_version = @gcc_version@
|
||||
gcc_version_trigger = @gcc_version_trigger@
|
||||
top_srcdir = @top_srcdir@
|
||||
toplevel_srcdir = @toplevel_srcdir@
|
||||
toolexecdir = @glibcpp_toolexecdir@
|
||||
glibcpp_toolexecdir = @glibcpp_toolexecdir@
|
||||
glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@
|
||||
|
||||
top_builddir = .
|
||||
|
||||
libdir = $(exec_prefix)/lib
|
||||
libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)
|
||||
#
|
||||
# Versions should start at 0:0:0 - See libtool manual.
|
||||
VERSION_MAJOR=0
|
||||
VERSION_MINOR=0
|
||||
VERSION_SUB=0
|
||||
|
||||
# Multilib support variables.
|
||||
MULTISRCTOP =
|
||||
MULTIBUILDTOP =
|
||||
MULTIDIRS =
|
||||
MULTISUBDIR =
|
||||
MULTIDO = true
|
||||
MULTICLEAN = true
|
||||
|
||||
# Not configured per top-level version, since that doesn't get passed
|
||||
# Versions should start at 0:0:0 - See libtool manual.
|
||||
# down at configure time, but overrridden by the top-level install
|
||||
# target.
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
|
||||
LIBTOOL = @LIBTOOL@
|
||||
CC = @CC@
|
||||
WARN_CFLAGS = -W -Wall
|
||||
CFLAGS = @CFLAGS@
|
||||
AR = @AR@
|
||||
RANLIB = @RANLIB@
|
||||
|
||||
# List of variables to pass to sub-makes.
|
||||
# Quote this way so that it can be used to set shell variables too.
|
||||
FLAGS_TO_PASS= \
|
||||
CC='$(CC)' \
|
||||
LD='$(LD)' \
|
||||
LIBTOOL='$(LIBTOOL)' \
|
||||
WARN_CFLAGS='$(WARN_CFLAGS)' \
|
||||
CFLAGS='$(CFLAGS)' \
|
||||
CPPFLAGS='$(CPPFLAGS)' \
|
||||
DESTDIR='$(DESTDIR)' \
|
||||
AR='$(AR)' \
|
||||
RANLIB='$(RANLIB)' \
|
||||
prefix='$(prefix)' \
|
||||
exec_prefix='$(exec_prefix)' \
|
||||
libdir='$(libdir)' \
|
||||
libsubdir='$(libsubdir)' \
|
||||
tooldir='$(tooldir)'
|
||||
|
||||
LIBG2C_BASE = libg2c
|
||||
LIBG2C = $(LIBG2C_BASE).la
|
||||
|
||||
SUBDIRS = libI77 libF77 libU77
|
||||
|
||||
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 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 time ttynam umask unlink \
|
||||
vxttim alarm \
|
||||
date_y2kbuggy date_y2kbug vxtidt_y2kbuggy vxtidt_y2kbug
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
# The logic here is partly dictated by the desire to keep the lib?77
|
||||
# subdirs for compatibility with the Netlib version and because libU77
|
||||
# has a different copyright; then the libe77 bit (EXTERNALly-callable
|
||||
# versions) is funny. Given that, as well as keeping things as simple
|
||||
# as possible we want (at least) the following:
|
||||
# * Allow make to be run at the top level (all-target-libf2c), at this
|
||||
# level, or the subdirs of this level. In the latter case we only
|
||||
# compile, rather than updating libg2c.a;
|
||||
# * A robust set of dependencies, so that we rebuild (as little as
|
||||
# possible) if a configuration file, g2c.h or any lib?77/*.c file
|
||||
# changes;
|
||||
# * Avoid unnecessary running of ar and ranlib;
|
||||
# * Expose parallelism where reasonable, but not as a priority.
|
||||
|
||||
# The intended top-level target here does a non-multilib build (via
|
||||
# the dependency) and then (perhaps) builds multilibs.
|
||||
|
||||
all: all-unilib
|
||||
: $(MAKE) ; exec $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="all-unilib"
|
||||
|
||||
# `all-unilib' is the overall target in the absence of multilibs,
|
||||
# meant to be invoked via multi-do for multilibs.
|
||||
|
||||
# Its dependencies can be satisfied in parallel. The [fiu]77 targets
|
||||
# update stamp files (object file lists, actually, see the subdir
|
||||
# makefiles) on which the $(LIBG2C) depends. The stamp files
|
||||
# s-lib[fiu]77 are intentionally not targets, since we're only meant
|
||||
# to come in at the level of this target. The [fiu]77 targets always
|
||||
# invoke sub makes to check dependencies in the subdirs, else we'd
|
||||
# have to maintain them at this level; we live with the overhead of
|
||||
# some recursive makes which may do nothing.
|
||||
|
||||
all-unilib: i77 f77 u77 s-libe77
|
||||
$(MAKE) $(FLAGS_TO_PASS) $(LIBG2C)
|
||||
|
||||
i77 f77 u77: g2c.h
|
||||
|
||||
# This target should normally only get invoked via `all-unilib' --
|
||||
# after all's well in the subdirs -- actually to assemble the library.
|
||||
# The stamp files contain the object lists of each component of the
|
||||
# library. The point of breaking them up is to avoid command-line
|
||||
# length limitations.
|
||||
|
||||
$(LIBG2C): s-libi77 s-libf77 s-libu77 s-libe77
|
||||
$(LIBTOOL) --mode=link $(CC) -o $@ \
|
||||
-version-info $(VERSION_MAJOR):$(VERSION_MINOR):$(VERSION_SUB) \
|
||||
-rpath $(glibcpp_toolexeclibdir) \
|
||||
-objectlist s-libe77 \
|
||||
-objectlist s-libf77 \
|
||||
-objectlist s-libi77 \
|
||||
-objectlist s-libu77 \
|
||||
-lm
|
||||
|
||||
i77:
|
||||
cd libI77; $(MAKE) $(FLAGS_TO_PASS) all
|
||||
|
||||
f77:
|
||||
cd libF77; $(MAKE) $(FLAGS_TO_PASS) all
|
||||
|
||||
u77:
|
||||
cd libU77; $(MAKE) $(FLAGS_TO_PASS) all
|
||||
|
||||
s-libe77: f2cext.c
|
||||
if [ -d libE77 ]; then rm -f libE77/*.o libE77/*.lo; else mkdir libE77; fi
|
||||
-rm -f $@.T $@
|
||||
for name in $(F2CEXT); \
|
||||
do \
|
||||
echo $${name}; \
|
||||
$(LIBTOOL) --mode=compile $(CC) -c -I. -I$(srcdir) -I../../include \
|
||||
$(CPPFLAGS) $(WARN_CFLAGS) $(CFLAGS) -DL$${name} $(srcdir)/f2cext.c \
|
||||
-o libE77/L$${name}.lo ; \
|
||||
if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
|
||||
echo libE77/L$${name}.lo >> $@.T; \
|
||||
done
|
||||
mv $@.T $@
|
||||
|
||||
f2cext.c: g2c.h
|
||||
|
||||
${srcdir}/configure: configure.in
|
||||
rm -f config.cache
|
||||
cd $(srcdir) && autoconf
|
||||
|
||||
# Dependence on Makefile serializes for parallel make.
|
||||
g2c.h: g2c.hin config.status Makefile
|
||||
# Might try to avoid rebuilding everything if Makefile or configure
|
||||
# changes and g2c.h doesn't; see also the Makefile rule. Should
|
||||
# depend on another stamp file rather than using the commented-out
|
||||
# lines below, since g2c.h isn't necessarily brought up to date.
|
||||
# mv g2c.h g2c.x
|
||||
$(SHELL) config.status
|
||||
# $(SHELL) $(srcdir)/../move-if-change g2c.h g2c.x && mv g2c.x g2c.h
|
||||
|
||||
Makefile: Makefile.in config.status
|
||||
# Autoconf doc uses `./config.status'. Is there a good reason to use $(SHELL)?
|
||||
$(SHELL) config.status
|
||||
|
||||
config.status: configure $(gcc_version_trigger)
|
||||
# Make sure we don't pick up a site config file and that configure
|
||||
# gets run with correct values of variables such as CC.
|
||||
CONFIG_SITE=no-such-file $(FLAGS_TO_PASS) \
|
||||
$(SHELL) config.status --recheck
|
||||
|
||||
info install-info clean-info dvi TAGS dist installcheck installdirs:
|
||||
|
||||
check:
|
||||
cd libU77; $(MAKE) G77DIR=../../../gcc/ check
|
||||
|
||||
install: all
|
||||
$(SHELL) $(toplevel_srcdir)/mkinstalldirs $(DESTDIR)$(glibcpp_toolexeclibdir)
|
||||
$(LIBTOOL) --mode=install $(INSTALL) $(LIBG2C) $(DESTDIR)$(glibcpp_toolexeclibdir)
|
||||
$(INSTALL_DATA) libfrtbegin.a $(DESTDIR)$(glibcpp_toolexeclibdir)
|
||||
$(RANLIB) $(DESTDIR)$(glibcpp_toolexeclibdir)/libfrtbegin.a
|
||||
$(INSTALL_DATA) g2c.h $(DESTDIR)$(libsubdir)/include/g2c.h
|
||||
$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@"
|
||||
@-$(LIBTOOL) --mode=finish $(DESTDIR)$(glibcpp_toolexeclibdir)
|
||||
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
|
||||
|
||||
uninstall:
|
||||
rm -f $(DESTDIR)$(libsubdir)/include/g2c.h
|
||||
rm -f $(DESTDIR)$(glibcpp_toolexeclibdir)/libfrtbegin.a
|
||||
$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(glibcpp_toolexeclibdir)$(LIBG2C_BASE).la
|
||||
$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@"
|
||||
|
||||
mostlyclean:
|
||||
rm -f $(LIBG2C) objlist
|
||||
$(MAKE) DO=$@ DODIRS="$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do; \
|
||||
$(MULTICLEAN) multi-clean DO=$@
|
||||
rm -fr libE77 s-libe77
|
||||
|
||||
clean: mostlyclean
|
||||
rm -f config.log
|
||||
$(MAKE) DO=$@ DODIRS="$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do; \
|
||||
$(MULTICLEAN) multi-clean DO=$@
|
||||
rm -rf .libs
|
||||
|
||||
distclean: clean
|
||||
rm -f g2c.h s-libe77
|
||||
$(MAKE) DO=$@ DODIRS="$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do; \
|
||||
$(MULTICLEAN) multi-clean DO=distclean
|
||||
rm -f config.cache config.status Makefile
|
||||
|
||||
maintainer-clean:
|
||||
|
||||
rebuilt: configure
|
||||
|
||||
.PHONY: rebuilt mostlyclean clean distclean maintainer-clean all \
|
||||
i77 f77 u77 check uninstall install-strip dist \
|
||||
installcheck installdirs all-unilib
|
||||
|
||||
subdir_do:
|
||||
@rootpre=`${PWD_COMMAND}`/; export rootpre; \
|
||||
srcrootpre=`cd $(srcdir); ${PWD_COMMAND}`/; export srcrootpre; \
|
||||
for i in .. $(DODIRS); do \
|
||||
if [ x$$i != x.. ]; then \
|
||||
if [ -f ./$$i/Makefile ]; then \
|
||||
if (cd ./$$i; $(MAKE) $(FLAGS_TO_PASS) $(DO)); then \
|
||||
true; \
|
||||
else \
|
||||
exit 1; \
|
||||
fi; \
|
||||
else true; fi; \
|
||||
else true; fi; \
|
||||
done
|
||||
|
||||
# multidoings may be added here by configure.
|
109
libf2c/README
109
libf2c/README
@ -1,109 +0,0 @@
|
||||
1998-08-11
|
||||
|
||||
This directory contains the libf2c library packaged for use with g77
|
||||
to configure and build automatically (in principle!) as part of the
|
||||
top-level configure and make steps. g77 names this library `libg2c'
|
||||
to avoid conflicts with existing copies of `libf2c' on a system.
|
||||
|
||||
Some small changes have been made vis-a-vis the netlib distribution of
|
||||
libf2c, which comes from <ftp:bell-labs.com/netlib/f2c/> and is maintained
|
||||
(excellently) by David M. Gay <dmg@bell-labs.com>. See the Notice files
|
||||
for copyright information. We usually try to get g77-specific changes
|
||||
rolled back into the libf2c distribution.
|
||||
|
||||
Files that come directly from netlib are either maintained in the
|
||||
libf2c 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, 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 the libF77/ and libI77/ subdirectories 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.
|
||||
|
||||
* Read permissions.netlib for licensing conditions that apply to
|
||||
distributing programs containing portions of code in the libF77/ and
|
||||
libI77/ subdirectories. Also read disclaimer.netlib.
|
||||
|
||||
* Read libU77/COPYING.LIB for licensing conditions that apply to
|
||||
distributing programs containing portions of code in the libU77/
|
||||
subdirectory.
|
||||
|
||||
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.
|
||||
|
||||
- Routines that are intended to be called directly via user code
|
||||
(as in `CALL EXIT', but not the support routines for `OPEN')
|
||||
have been renamed from `<name>' to `G77_<name>_0'. This, in
|
||||
combination with g77 recognizing these names as intrinsics and
|
||||
calling them directly by those names, reduces the likelihood of
|
||||
interface mismatches occurring due to use of compiler options
|
||||
that change code generation, and permits use of these names as
|
||||
both intrinsics and user-supplied routines in applications (as
|
||||
required by the Fortran standards). f2cext.c contains "jacket"
|
||||
routines named `<name>' that call `G77_<name>_0', to support
|
||||
code that relies on calling the relevant routines as `EXTERNAL'
|
||||
routines.
|
||||
|
||||
Note that the `_0' in the name denotes version 0 of the *interface*,
|
||||
not the *implementation*, of a routine. The interface of a
|
||||
given routine *must not change* -- instead, introduce a new copy
|
||||
of the code, with an increment (e.g. `_1') suffix, having the
|
||||
new interface. Whether the previous interface is maintained is
|
||||
not as important as ensuring the routine implementing the new
|
||||
interface is never successfully linked to a call in existing,
|
||||
e.g. previously compiled, code that expects the old interface.
|
||||
|
||||
- Version.c in the subdirectories contains g77-specific version
|
||||
information and a routine (per subdirectory) to print both the
|
||||
netlib and g77 version information when called. The `g77 -v'
|
||||
command is designed to trigger this, by compiling, linking, and
|
||||
running a small program that calls the routines in sequence.
|
||||
|
||||
- libF77/main.c no longer contains the actual code to copy the
|
||||
argc and argv values into globals or to set up the signal-handling
|
||||
environment. These have been removed to libF77/setarg.c and
|
||||
libF77/setsig.c, respectively. libF77/main.c contains procedure
|
||||
calls to the new code in place of the code itself. This should
|
||||
simplify linking executables with a main() function other than
|
||||
that in libF77/main.c (such as one written by the user in C or
|
||||
C++). See the g77 documentation for more information.
|
||||
|
||||
- Complex-arithmetic support routines in libF77/ take a different approach
|
||||
to avoiding problems resulting from aliased input and output arguments,
|
||||
which should avoid particularly unusual alias problems that netlib
|
||||
libf2c might suffer from.
|
||||
|
||||
- libF77/signal_.c supports systems with 64-bit pointers and 32-bit
|
||||
integers.
|
||||
|
||||
- I/O routines in libI77/ have code to detect attempts to do recursive
|
||||
I/O more "directly", mainly to lead to a clearer diagnostic than
|
||||
typically occurs under such conditions.
|
||||
|
||||
- Formatted-I/O routines in libI77/ have code to pretty-print a FORMAT
|
||||
string when printing a fatal diagnostic involving formatted I/O.
|
||||
|
||||
- libI77/open.c supports a more robust, perhaps more secure, method
|
||||
of naming temporary files on some systems.
|
||||
|
||||
- Some g77-specific handling of building under Microsoft operating
|
||||
systems exists, mainly in libI77/.
|
14
libf2c/TODO
14
libf2c/TODO
@ -1,14 +0,0 @@
|
||||
980709
|
||||
|
||||
TODO list for the g77 library
|
||||
|
||||
* Investigate building shared libraries on systems we know about
|
||||
(probably using libtool).
|
||||
|
||||
* Better test cases.
|
||||
|
||||
* Allow the library to be stripped to save space. (The install-strip
|
||||
makefile target now allows this, should it be easily invocable.)
|
||||
|
||||
* An interface to IEEE maths functions from libc where this makes
|
||||
sense.
|
236
libf2c/aclocal.m4
vendored
236
libf2c/aclocal.m4
vendored
@ -1,236 +0,0 @@
|
||||
dnl Copyright (C) 1994, 1995-8, 1999, 2001, 2002 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl This program is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
dnl PARTICULAR PURPOSE.
|
||||
|
||||
dnl
|
||||
dnl Initialize configure bits.
|
||||
dnl
|
||||
dnl GLIBCPP_TOPREL_CONFIGURE
|
||||
AC_DEFUN(GLIBCPP_TOPREL_CONFIGURE, [
|
||||
dnl Default to --enable-multilib
|
||||
AC_ARG_ENABLE(multilib,
|
||||
[ --enable-multilib build hella library versions (default)],
|
||||
[case "${enableval}" in
|
||||
yes) multilib=yes ;;
|
||||
no) multilib=no ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
|
||||
esac], [multilib=yes])dnl
|
||||
|
||||
# When building with srcdir == objdir, links to the source files will
|
||||
# be created in directories within the target_subdir. We have to
|
||||
# adjust toplevel_srcdir accordingly, so that configure finds
|
||||
# install-sh and other auxiliary files that live in the top-level
|
||||
# source directory.
|
||||
if test "${srcdir}" = "."; then
|
||||
if test -z "${with_target_subdir}"; then
|
||||
toprel=".."
|
||||
else
|
||||
if test "${with_target_subdir}" != "."; then
|
||||
toprel="${with_multisrctop}../.."
|
||||
else
|
||||
toprel="${with_multisrctop}.."
|
||||
fi
|
||||
fi
|
||||
else
|
||||
toprel=".."
|
||||
fi
|
||||
AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
|
||||
toplevel_srcdir=\${top_srcdir}/$toprel
|
||||
AC_SUBST(toplevel_srcdir)
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl Initialize configure bits.
|
||||
dnl
|
||||
dnl GLIBCPP_CONFIGURE
|
||||
AC_DEFUN(GLIBCPP_CONFIGURE, [
|
||||
# Export build and source directories.
|
||||
# These need to be absolute paths, yet at the same time need to
|
||||
# canonicalize only relative paths, because then amd will not unmount
|
||||
# drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
|
||||
glibcpp_builddir=`${PWDCMD-pwd}`
|
||||
case $srcdir in
|
||||
[\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
|
||||
*) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
|
||||
esac
|
||||
AC_SUBST(glibcpp_builddir)
|
||||
AC_SUBST(glibcpp_srcdir)
|
||||
|
||||
dnl This is here just to satisfy automake.
|
||||
ifelse(not,equal,[AC_CONFIG_AUX_DIR(..)])
|
||||
|
||||
# Will set LN_S to either 'ln -s' or 'ln'. With autoconf 2.50+, can also
|
||||
# be 'cp -p' if linking isn't available.
|
||||
#ac_cv_prog_LN_S='cp -p'
|
||||
AC_PROG_LN_S
|
||||
|
||||
# We use these options to decide which functions to include.
|
||||
AC_ARG_WITH(target-subdir,
|
||||
[ --with-target-subdir=SUBDIR
|
||||
configuring in a subdirectory])
|
||||
AC_ARG_WITH(cross-host,
|
||||
[ --with-cross-host=HOST configuring with a cross compiler])
|
||||
|
||||
# Never versions of autoconf add an underscore to these functions.
|
||||
# Prevent future problems ...
|
||||
ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
|
||||
ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
|
||||
ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
|
||||
ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
|
||||
|
||||
# AC_PROG_CC
|
||||
|
||||
# FIXME: We temporarily define our own version of AC_PROG_CC. This is
|
||||
# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
|
||||
# are probably using a cross compiler, which will not be able to fully
|
||||
# link an executable. This should really be fixed in autoconf
|
||||
# itself.
|
||||
|
||||
AC_DEFUN(LIB_AC_PROG_CC,
|
||||
[AC_BEFORE([$0], [AC_PROG_CPP])dnl
|
||||
dnl Fool anybody using AC_PROG_CC.
|
||||
AC_PROVIDE([AC_PROG_CC])
|
||||
AC_CHECK_PROG(CC, gcc, gcc)
|
||||
if test -z "$CC"; then
|
||||
AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
|
||||
test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
|
||||
fi
|
||||
|
||||
AC_PROG_CC_GNU
|
||||
|
||||
if test $ac_cv_prog_gcc = yes; then
|
||||
GCC=yes
|
||||
dnl Check whether -g works, even if CFLAGS is set, in case the package
|
||||
dnl plays around with CFLAGS (such as to build both debugging and
|
||||
dnl normal versions of a library), tasteless as that idea is.
|
||||
ac_test_CFLAGS="${CFLAGS+set}"
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS=
|
||||
AC_PROG_CC_G
|
||||
if test "$ac_test_CFLAGS" = set; then
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
elif test $ac_cv_prog_cc_g = yes; then
|
||||
CFLAGS="-g -O2"
|
||||
else
|
||||
CFLAGS="-O2"
|
||||
fi
|
||||
else
|
||||
GCC=
|
||||
test "${CFLAGS+set}" = set || CFLAGS="-g"
|
||||
fi
|
||||
])
|
||||
|
||||
LIB_AC_PROG_CC
|
||||
|
||||
AC_CHECK_TOOL(AS, as)
|
||||
AC_CHECK_TOOL(AR, ar)
|
||||
AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
|
||||
AC_PROG_INSTALL
|
||||
|
||||
# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
|
||||
# at least currently, we never actually build a program, so we never
|
||||
# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
|
||||
# fails, because we are probably configuring with a cross compiler
|
||||
# which can't create executables. So we include AC_EXEEXT to keep
|
||||
# automake happy, but we don't execute it, since we don't care about
|
||||
# the result.
|
||||
if false; then
|
||||
# autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
|
||||
# to nothing, so nothing would remain between `then' and `fi' if it
|
||||
# were not for the `:' below.
|
||||
:
|
||||
AC_EXEEXT
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
dnl
|
||||
dnl GLIBCPP_EXPORT_INSTALL_INFO
|
||||
dnl calculates gxx_install_dir
|
||||
dnl exports glibcpp_toolexecdir
|
||||
dnl exports glibcpp_toolexeclibdir
|
||||
dnl exports glibcpp_prefixdir
|
||||
dnl
|
||||
dnl Assumes cross_compiling bits already done, and with_cross_host in
|
||||
dnl particular
|
||||
dnl
|
||||
dnl GLIBCPP_EXPORT_INSTALL_INFO
|
||||
AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
|
||||
# Assumes glibcpp_builddir, glibcpp_srcdir are alreay set up and
|
||||
# exported correctly in GLIBCPP_CONFIGURE.
|
||||
glibcpp_toolexecdir=no
|
||||
glibcpp_toolexeclibdir=no
|
||||
glibcpp_prefixdir=${prefix}
|
||||
|
||||
AC_MSG_CHECKING([for interface version number])
|
||||
libstdcxx_interface=$INTERFACE
|
||||
AC_MSG_RESULT($libstdcxx_interface)
|
||||
|
||||
# Process the option "--enable-version-specific-runtime-libs"
|
||||
AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
|
||||
AC_ARG_ENABLE(version-specific-runtime-libs,
|
||||
[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
|
||||
[case "$enableval" in
|
||||
yes) version_specific_libs=yes ;;
|
||||
no) version_specific_libs=no ;;
|
||||
*) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
|
||||
esac],
|
||||
version_specific_libs=no)dnl
|
||||
# Option set, now we can test it.
|
||||
AC_MSG_RESULT($version_specific_libs)
|
||||
|
||||
gcc_version_trigger=${toplevel_srcdir}/gcc/version.c
|
||||
gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([[^ \"]]*\)[[ \"]].*/\1/'`
|
||||
gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
|
||||
AC_SUBST(gcc_version)
|
||||
AC_SUBST(gcc_version_trigger)
|
||||
|
||||
if test $version_specific_libs = yes; then
|
||||
# Need the gcc compiler version to know where to install libraries
|
||||
# and header files if --enable-version-specific-runtime-libs option
|
||||
# is selected. FIXME: "toolexecdir" is a misnomer, there are no
|
||||
# executables installed there.
|
||||
changequote(,)dnl
|
||||
glibcpp_toolexecdir='$(libdir)/gcc/$(target_alias)'
|
||||
glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
|
||||
changequote([,])dnl
|
||||
fi
|
||||
|
||||
# Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
|
||||
# Install a library built with a cross compiler in tooldir, not libdir.
|
||||
if test x"$glibcpp_toolexecdir" = x"no"; then
|
||||
if test -n "$with_cross_host" &&
|
||||
test x"$with_cross_host" != x"no"; then
|
||||
glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
|
||||
glibcpp_toolexeclibdir='$(toolexecdir)/lib'
|
||||
else
|
||||
glibcpp_toolexecdir='$(libdir)/gcc/$(target_alias)'
|
||||
glibcpp_toolexeclibdir='$(libdir)'
|
||||
fi
|
||||
multi_os_directory=`$CC -print-multi-os-directory`
|
||||
case $multi_os_directory in
|
||||
.) ;; # Avoid trailing /.
|
||||
*) glibcpp_toolexeclibdir=$glibcpp_toolexeclibdir/$multi_os_directory ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
AC_SUBST(glibcpp_prefixdir)
|
||||
AC_SUBST(glibcpp_toolexecdir)
|
||||
AC_SUBST(glibcpp_toolexeclibdir)
|
||||
])
|
||||
|
||||
sinclude(../libtool.m4)
|
||||
dnl The lines below arrange for aclocal not to bring an installed
|
||||
dnl libtool.m4 into aclocal.m4, while still arranging for automake to
|
||||
dnl add a definition of LIBTOOL to Makefile.in.
|
||||
ifelse(,,,[AC_SUBST(LIBTOOL)
|
||||
AC_DEFUN([AM_PROG_LIBTOOL])
|
||||
AC_DEFUN([AC_LIBTOOL_DLOPEN])
|
||||
AC_DEFUN([AC_PROG_LD])
|
||||
])
|
File diff suppressed because it is too large
Load Diff
@ -1,121 +0,0 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
# Copyright (C) 1995, 1997, 1998, 1999, 2002, 2003
|
||||
# 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_PREREQ(2.13)
|
||||
AC_INIT(libF77/Version.c)
|
||||
|
||||
# This works around the fact that libtool configuration may change LD
|
||||
# for this particular configuration, but some shells, instead of
|
||||
# keeping the changes in LD private, export them just because LD is
|
||||
# exported.
|
||||
ORIGINAL_LD_FOR_MULTILIBS=$LD
|
||||
|
||||
GLIBCPP_TOPREL_CONFIGURE
|
||||
|
||||
AC_CANONICAL_SYSTEM
|
||||
target_alias=${target_alias-$target}
|
||||
AC_SUBST(target_alias)
|
||||
|
||||
GLIBCPP_CONFIGURE(.)
|
||||
GLIBCPP_EXPORT_INSTALL_INFO
|
||||
|
||||
dnl Checks for programs.
|
||||
|
||||
AM_PROG_LIBTOOL
|
||||
|
||||
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)
|
||||
else
|
||||
AC_PROG_RANLIB
|
||||
fi
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_MAKE_SET
|
||||
|
||||
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'.])])
|
||||
|
||||
dnl Checks for g77 integer types built into gcc's C front end.
|
||||
AC_MSG_CHECKING(for built-in g77 integer types)
|
||||
AC_CACHE_VAL(libf2c_cv_has_g77_builtin_types,
|
||||
[AC_TRY_COMPILE(,
|
||||
[__g77_integer g77i;
|
||||
__g77_uinteger g77ui;
|
||||
__g77_longint g77l;
|
||||
__g77_ulongint g77ul;],
|
||||
libf2c_cv_has_g77_builtin_types=yes,
|
||||
libf2c_cv_has_g77_builtin_types=no)])
|
||||
AC_MSG_RESULT($libf2c_cv_has_g77_builtin_types)
|
||||
if test $libf2c_cv_has_g77_builtin_types = no; then
|
||||
AC_MSG_ERROR([gcc doesn't define all of the built in types __g77_integer,
|
||||
__g77_uinteger, __g77_longint, and __g77_ulongint. You may not be using
|
||||
a new enough version of gcc, or your target may not have type sizes which
|
||||
accommodate those types.])
|
||||
fi
|
||||
|
||||
# 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 libI77 libF77)
|
||||
# Do Makefile first since g2c.h depends on it and shouldn't get an
|
||||
# earlier timestamp. Of course, it does when the multilib gunk below
|
||||
# edits Makefile, sigh; see additional touch below.
|
||||
AC_OUTPUT(Makefile g2c.h:g2c.hin,
|
||||
[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
|
||||
if test -n "$CONFIG_FILES"; then
|
||||
LD="${ORIGINAL_LD_FOR_MULTILIBS}"
|
||||
if test -n "${with_target_subdir}"; then
|
||||
# FIXME: We shouldn't need to set ac_file
|
||||
ac_file=Makefile
|
||||
. ${toplevel_srcdir}/config-ml.in
|
||||
touch g2c.h # to keep it more recent than Makefile
|
||||
fi
|
||||
fi],
|
||||
srcdir=${srcdir}
|
||||
host=${host}
|
||||
target=${target}
|
||||
with_target_subdir=${with_target_subdir}
|
||||
with_multisubdir=${with_multisubdir}
|
||||
ac_configure_args="--enable-multilib ${ac_configure_args}"
|
||||
toplevel_srcdir=${toplevel_srcdir}
|
||||
CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
|
||||
ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
|
||||
)
|
||||
|
||||
|
||||
dnl Local Variables:
|
||||
dnl comment-start: "dnl "
|
||||
dnl comment-end: ""
|
||||
dnl comment-start-skip: "\\bdnl\\b\\s *"
|
||||
dnl End:
|
@ -1,15 +0,0 @@
|
||||
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.
|
64
libf2c/f2c.h
64
libf2c/f2c.h
@ -1,64 +0,0 @@
|
||||
/* f2c.h file for GNU Fortran run-time library
|
||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
Contributed by James Craig Burley.
|
||||
|
||||
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. */
|
||||
|
||||
/* This file currently is just a stub through which g77's copy
|
||||
of netlib's libf2c, which g77 builds and installs as libg2c.a
|
||||
(to avoid conflict), #include's g77's version of f2c.h, named
|
||||
g2c.h. That file is, in turn, produced via g77's library
|
||||
configuration process from g2c.h.in.
|
||||
|
||||
By going through this extra "hoop", it is easy to provide for
|
||||
libg2c-specific configuration and typedefs that aren't appropriate
|
||||
in g2c.h itself (since that is intended to be installed so it can
|
||||
be shared with f2c users), without changing the libf2c (libg2c)
|
||||
routines themselves. (They continue to #include "f2c.h", just
|
||||
like they do in netlib's version.) */
|
||||
|
||||
#include "g2c.h"
|
||||
|
||||
/* For GNU Fortran (g77), we always enable the following behaviors for
|
||||
libf2c, to make things easy on the programmer. The alternate
|
||||
behaviors have their uses, and g77 might provide them as compiler,
|
||||
rather than library, options, so only a single copy of a shared libf2c
|
||||
need be built for a system. */
|
||||
|
||||
/* This makes unformatted I/O more consistent in relation to other
|
||||
systems. It is not required by the F77 standard. */
|
||||
|
||||
#define Pad_UDread
|
||||
|
||||
/* This makes ERR= and IOSTAT= returns work properly in disk-full
|
||||
situations, making things work more as expected. It slows things
|
||||
down, so g77 will probably someday choose the original implementation
|
||||
on a case-by-case basis when it can be shown to not be necessary
|
||||
(e.g. no ERR= or IOSTAT=) or when it is given the appropriate
|
||||
compile-time option or, perhaps, source-code directive.
|
||||
|
||||
(No longer defined, since it really slows down NFS access too much.) */
|
||||
|
||||
/* #define ALWAYS_FLUSH */
|
||||
|
||||
/* Most Fortran implementations do this, so to make it easier
|
||||
to compare the output of g77-compiled programs to those compiled
|
||||
by most other compilers, tell libf2c to put leading zeros in
|
||||
appropriate places on output. */
|
||||
|
||||
#define WANT_LEAD_0
|
582
libf2c/f2cext.c
582
libf2c/f2cext.c
@ -1,582 +0,0 @@
|
||||
/* 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 <math.h> /* for j0 et al */
|
||||
#include <f2c.h>
|
||||
typedef void *sig_proc; /* For now, this will have to do. */
|
||||
|
||||
#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
|
||||
void *signal_ (integer *sigp, sig_proc proc) {
|
||||
extern void *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 __attribute__ ((__unused__))) {
|
||||
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_y2kbuggy
|
||||
int date_ (char *buf, ftnlen buf_len) {
|
||||
/* Fail to link, so user sees attempt to invoke non-Y2K-compliant
|
||||
routine. */
|
||||
extern int G77_date_y2kbuggy_0 (char *buf, ftnlen buf_len);
|
||||
return G77_date_y2kbuggy_0 (buf, buf_len);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef Ldate_y2kbug
|
||||
int date_y2kbug__ (char *buf, ftnlen buf_len) {
|
||||
/* If user wants to invoke the non-Y2K-compliant routine via
|
||||
an `EXTERNAL' interface, avoiding the warning via g77's
|
||||
`INTRINSIC' interface, force coding of "y2kbug" string in
|
||||
user's program. */
|
||||
extern int G77_date_y2kbug_0 (char *buf, ftnlen buf_len);
|
||||
return G77_date_y2kbug_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 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_y2kbuggy
|
||||
int vxtidate_ (integer *m, integer *d, integer *y) {
|
||||
/* Fail to link, so user sees attempt to invoke non-Y2K-compliant
|
||||
routine. */
|
||||
extern int G77_vxtidate_y2kbuggy_0 (integer *m, integer *d, integer *y);
|
||||
return G77_vxtidate_y2kbuggy_0 (m, d, y);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef Lvxtidt_y2kbug
|
||||
int vxtidate_y2kbug__ (integer *m, integer *d, integer *y) {
|
||||
/* If user wants to invoke the non-Y2K-compliant routine via
|
||||
an `EXTERNAL' interface, avoiding the warning via g77's
|
||||
`INTRINSIC' interface, force coding of "y2kbug" string in
|
||||
user's program. */
|
||||
extern int G77_vxtidate_y2kbug_0 (integer *m, integer *d, integer *y);
|
||||
return G77_vxtidate_y2kbug_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
|
234
libf2c/g2c.hin
234
libf2c/g2c.hin
@ -1,234 +0,0 @@
|
||||
/* g2c.h -- g77 version of f2c (Standard Fortran to C header file) */
|
||||
|
||||
/* This file is generated by the g77 libg2c configuration process from a
|
||||
file named g2c.hin. This process sets up the appropriate types,
|
||||
defines the appropriate macros, and so on. The resulting g2c.h file
|
||||
is used to build g77's copy of libf2c, named libg2c, and also can
|
||||
be used when compiling C code produced by f2c to link the resulting
|
||||
object file(s) with those produced by the same version of g77 that
|
||||
produced this file, allowing inter-operability of f2c-compiled and
|
||||
g77-compiled code. */
|
||||
|
||||
/** 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 __g77_integer integer;
|
||||
typedef __g77_uinteger 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 __g77_integer logical;
|
||||
typedef short int shortlogical;
|
||||
typedef char logical1;
|
||||
typedef char integer1;
|
||||
typedef __g77_longint longint; /* system-dependent */
|
||||
typedef __g77_ulongint 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 __g77_integer flag;
|
||||
typedef __g77_integer ftnlen;
|
||||
typedef __g77_integer 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;
|
||||
|
||||
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
|
@ -1,24 +0,0 @@
|
||||
#include "f2c.h"
|
||||
#undef abs
|
||||
#undef min
|
||||
#undef max
|
||||
#include <stdio.h>
|
||||
|
||||
static integer memfailure = 3;
|
||||
|
||||
#include <stdlib.h>
|
||||
extern void G77_exit_0 (integer *);
|
||||
|
||||
char *
|
||||
F77_aloc (integer Len, char *whence)
|
||||
{
|
||||
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;
|
||||
}
|
@ -1,255 +0,0 @@
|
||||
# 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-1998, 2001 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.
|
||||
|
||||
#### Start of system configuration section. ####
|
||||
|
||||
# $(srcdir) must be set to the g77 runtime libF77 source directory.
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
# configure sets this to all the -D options appropriate for the
|
||||
# configuration.
|
||||
DEFS = @DEFS@
|
||||
|
||||
F2C_H_DIR = @srcdir@/..
|
||||
G2C_H_DIR = ..
|
||||
CC = @CC@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
AR = @AR@
|
||||
ARFLAGS = rc
|
||||
RANLIB = @RANLIB@
|
||||
@SET_MAKE@
|
||||
|
||||
SHELL = @SHELL@
|
||||
|
||||
#### End of system configuration section. ####
|
||||
|
||||
ALL_CFLAGS = -I. -I$(srcdir) -I$(G2C_H_DIR) -I$(F2C_H_DIR) $(CPPFLAGS) $(DEFS) $(WARN_CFLAGS) $(CFLAGS)
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo
|
||||
|
||||
.c.lo:
|
||||
@LIBTOOL@ --mode=compile $(CC) -c -DSkip_f2c_Undefs $(ALL_CFLAGS) $<
|
||||
|
||||
MISC = F77_aloc.lo VersionF.lo s_rnge.lo abort_.lo getarg_.lo iargc_.lo\
|
||||
getenv_.lo signal_.lo s_stop.lo s_paus.lo system_.lo cabs.lo\
|
||||
derf_.lo derfc_.lo erf_.lo erfc_.lo sig_die.lo exit_.lo setarg.lo setsig.lo
|
||||
POW = pow_ci.lo pow_dd.lo pow_di.lo pow_hh.lo pow_ii.lo pow_ri.lo pow_zi.lo pow_zz.lo \
|
||||
pow_qq.lo
|
||||
CX = c_abs.lo c_cos.lo c_div.lo c_exp.lo c_log.lo c_sin.lo c_sqrt.lo
|
||||
DCX = z_abs.lo z_cos.lo z_div.lo z_exp.lo z_log.lo z_sin.lo z_sqrt.lo
|
||||
REAL = r_abs.lo r_acos.lo r_asin.lo r_atan.lo r_atn2.lo r_cnjg.lo r_cos.lo\
|
||||
r_cosh.lo r_dim.lo r_exp.lo r_imag.lo r_int.lo\
|
||||
r_lg10.lo r_log.lo r_mod.lo r_nint.lo r_sign.lo\
|
||||
r_sin.lo r_sinh.lo r_sqrt.lo r_tan.lo r_tanh.lo
|
||||
DBL = d_abs.lo d_acos.lo d_asin.lo d_atan.lo d_atn2.lo\
|
||||
d_cnjg.lo d_cos.lo d_cosh.lo d_dim.lo d_exp.lo\
|
||||
d_imag.lo d_int.lo d_lg10.lo d_log.lo d_mod.lo\
|
||||
d_nint.lo d_prod.lo d_sign.lo d_sin.lo d_sinh.lo\
|
||||
d_sqrt.lo d_tan.lo d_tanh.lo
|
||||
INT = i_abs.lo i_dim.lo i_dnnt.lo i_indx.lo i_len.lo i_mod.lo i_nint.lo i_sign.lo
|
||||
HALF = h_abs.lo h_dim.lo h_dnnt.lo h_indx.lo h_len.lo h_mod.lo h_nint.lo h_sign.lo
|
||||
CMP = l_ge.lo l_gt.lo l_le.lo l_lt.lo hl_ge.lo hl_gt.lo hl_le.lo hl_lt.lo
|
||||
EFL = ef1asc_.lo ef1cmc_.lo
|
||||
CHAR = s_cat.lo s_cmp.lo s_copy.lo
|
||||
F90BIT = lbitbits.lo lbitshft.lo qbitbits.lo qbitshft.lo
|
||||
|
||||
OBJS = $(MISC) $(POW) $(CX) $(DCX) $(REAL) $(DBL) $(INT) \
|
||||
$(HALF) $(CMP) $(EFL) $(CHAR) $(F90BIT)
|
||||
|
||||
all: ../s-libf77 ../libfrtbegin.a
|
||||
|
||||
../s-libf77: $(OBJS)
|
||||
-rm -f $@.T $@
|
||||
objs='$(OBJS)'; for name in $$objs; do \
|
||||
echo libF77/$${name} >> $@.T; done
|
||||
mv $@.T $@
|
||||
|
||||
Makefile: Makefile.in config.status
|
||||
$(SHELL) config.status
|
||||
|
||||
config.status: configure
|
||||
rm -f config.cache
|
||||
CONFIG_SITE=no-such-file CC='$(CC)' AR='$(AR)' CFLAGS='$(CFLAGS)' \
|
||||
CPPFLAGS='$(CPPFLAGS)' $(SHELL) config.status --recheck
|
||||
|
||||
${srcdir}/configure: configure.in
|
||||
rm -f config.cache
|
||||
cd ${srcdir} && autoconf
|
||||
|
||||
VersionF.lo: Version.c
|
||||
@LIBTOOL@ --mode=compile $(CC) -c $(ALL_CFLAGS) $(srcdir)/Version.c -o $@
|
||||
|
||||
frtbegin.o : main.c
|
||||
$(CC) -c $(ALL_CFLAGS) $(srcdir)/main.c -o $@
|
||||
|
||||
../libfrtbegin.a: frtbegin.o
|
||||
-rm -f $@
|
||||
$(AR) $(ARFLAGS) $@ frtbegin.o
|
||||
$(RANLIB) $@
|
||||
|
||||
F77_aloc.lo: F77_aloc.c
|
||||
s_rnge.lo: s_rnge.c
|
||||
abort_.lo: abort_.c
|
||||
getarg_.lo: getarg_.c
|
||||
iargc_.lo: iargc_.c
|
||||
getenv_.lo: getenv_.c
|
||||
signal_.lo: signal_.c
|
||||
s_stop.lo: s_stop.c
|
||||
s_paus.lo: s_paus.c
|
||||
system_.lo: system_.c
|
||||
cabs.lo: cabs.c
|
||||
derf_.lo: derf_.c
|
||||
derfc_.lo: derfc_.c
|
||||
erf_.lo: erf_.c
|
||||
erfc_.lo: erfc_.c
|
||||
sig_die.lo: sig_die.c
|
||||
exit_.lo: exit_.c
|
||||
setarg.lo: setarg.c
|
||||
setsig.lo: setsig.c
|
||||
pow_ci.lo: pow_ci.c
|
||||
pow_dd.lo: pow_dd.c
|
||||
pow_di.lo: pow_di.c
|
||||
pow_hh.lo: pow_hh.c
|
||||
pow_ii.lo: pow_ii.c
|
||||
pow_ri.lo: pow_ri.c
|
||||
pow_zi.lo: pow_zi.c
|
||||
pow_zz.lo: pow_zz.c
|
||||
pow_qq.lo: pow_qq.c
|
||||
c_abs.lo: c_abs.c
|
||||
c_cos.lo: c_cos.c
|
||||
c_div.lo: c_div.c
|
||||
c_exp.lo: c_exp.c
|
||||
c_log.lo: c_log.c
|
||||
c_sin.lo: c_sin.c
|
||||
c_sqrt.lo: c_sqrt.c
|
||||
z_abs.lo: z_abs.c
|
||||
z_cos.lo: z_cos.c
|
||||
z_div.lo: z_div.c
|
||||
z_exp.lo: z_exp.c
|
||||
z_log.lo: z_log.c
|
||||
@LIBTOOL@ --mode=compile $(CC) -c -DSkip_f2c_Undefs $(ALL_CFLAGS) -ffloat-store $(srcdir)/z_log.c
|
||||
z_sin.lo: z_sin.c
|
||||
z_sqrt.lo: z_sqrt.c
|
||||
r_abs.lo: r_abs.c
|
||||
r_acos.lo: r_acos.c
|
||||
r_asin.lo: r_asin.c
|
||||
r_atan.lo: r_atan.c
|
||||
r_atn2.lo: r_atn2.c
|
||||
r_cnjg.lo: r_cnjg.c
|
||||
r_cos.lo: r_cos.c
|
||||
r_cosh.lo: r_cosh.c
|
||||
r_dim.lo: r_dim.c
|
||||
r_exp.lo: r_exp.c
|
||||
r_imag.lo: r_imag.c
|
||||
r_int.lo: r_int.c
|
||||
r_lg10.lo: r_lg10.c
|
||||
r_log.lo: r_log.c
|
||||
r_mod.lo: r_mod.c
|
||||
r_nint.lo: r_nint.c
|
||||
r_sign.lo: r_sign.c
|
||||
r_sin.lo: r_sin.c
|
||||
r_sinh.lo: r_sinh.c
|
||||
r_sqrt.lo: r_sqrt.c
|
||||
r_tan.lo: r_tan.c
|
||||
r_tanh.lo: r_tanh.c
|
||||
d_abs.lo: d_abs.c
|
||||
d_acos.lo: d_acos.c
|
||||
d_asin.lo: d_asin.c
|
||||
d_atan.lo: d_atan.c
|
||||
d_atn2.lo: d_atn2.c
|
||||
d_cnjg.lo: d_cnjg.c
|
||||
d_cos.lo: d_cos.c
|
||||
d_cosh.lo: d_cosh.c
|
||||
d_dim.lo: d_dim.c
|
||||
d_exp.lo: d_exp.c
|
||||
d_imag.lo: d_imag.c
|
||||
d_int.lo: d_int.c
|
||||
d_lg10.lo: d_lg10.c
|
||||
d_log.lo: d_log.c
|
||||
d_mod.lo: d_mod.c
|
||||
d_nint.lo: d_nint.c
|
||||
d_prod.lo: d_prod.c
|
||||
d_sign.lo: d_sign.c
|
||||
d_sin.lo: d_sin.c
|
||||
d_sinh.lo: d_sinh.c
|
||||
d_sqrt.lo: d_sqrt.c
|
||||
d_tan.lo: d_tan.c
|
||||
d_tanh.lo: d_tanh.c
|
||||
i_abs.lo: i_abs.c
|
||||
i_dim.lo: i_dim.c
|
||||
i_dnnt.lo: i_dnnt.c
|
||||
i_indx.lo: i_indx.c
|
||||
i_len.lo: i_len.c
|
||||
i_mod.lo: i_mod.c
|
||||
i_nint.lo: i_nint.c
|
||||
i_sign.lo: i_sign.c
|
||||
h_abs.lo: h_abs.c
|
||||
h_dim.lo: h_dim.c
|
||||
h_dnnt.lo: h_dnnt.c
|
||||
h_indx.lo: h_indx.c
|
||||
h_len.lo: h_len.c
|
||||
h_mod.lo: h_mod.c
|
||||
h_nint.lo: h_nint.c
|
||||
h_sign.lo: h_sign.c
|
||||
l_ge.lo: l_ge.c
|
||||
l_gt.lo: l_gt.c
|
||||
l_le.lo: l_le.c
|
||||
l_lt.lo: l_lt.c
|
||||
hl_ge.lo: hl_ge.c
|
||||
hl_gt.lo: hl_gt.c
|
||||
hl_le.lo: hl_le.c
|
||||
hl_lt.lo: hl_lt.c
|
||||
ef1asc_.lo: ef1asc_.c
|
||||
ef1cmc_.lo: ef1cmc_.c
|
||||
s_cat.lo: s_cat.c
|
||||
s_cmp.lo: s_cmp.c
|
||||
s_copy.lo: s_copy.c
|
||||
lbitbits.lo: lbitbits.c
|
||||
lbitshft.lo: lbitshft.c
|
||||
qbitbits.lo: qbitbits.c
|
||||
qbitshft.lo: qbitshft.c
|
||||
|
||||
# Not quite all these actually do depend on f2c.h...
|
||||
$(MISC) $(POW) $(CX) $(DCX) $(REAL) $(DBL) $(INT) $(HALF) $(CMP) $(EFL) \
|
||||
$(CHAR) $(F90BIT): $(F2C_H_DIR)/f2c.h $(G2C_H_DIR)/g2c.h
|
||||
|
||||
check install uninstall install-strip dist installcheck installdirs:
|
||||
|
||||
mostlyclean:
|
||||
rm -f *.o *.lo ../libfrtbegin.a
|
||||
rm -rf .libs
|
||||
|
||||
clean: mostlyclean
|
||||
rm -f config.log
|
||||
rm -f ../s-libf77
|
||||
|
||||
distclean: clean
|
||||
rm -f config.cache config.status Makefile ../s-libf77 configure
|
||||
|
||||
maintainer-clean:
|
||||
|
||||
.PHONY: mostlyclean clean distclean maintainer-clean all check uninstall \
|
||||
install-strip dist installcheck installdirs archive
|
@ -1,23 +0,0 @@
|
||||
/****************************************************************
|
||||
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.
|
||||
****************************************************************/
|
||||
|
@ -1,112 +0,0 @@
|
||||
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
|
||||
|
||||
If your compiler complains about the signal calls in main.c, s_paus.c,
|
||||
and signal_.c, you may need to adjust signal1.h suitably. See the
|
||||
comments in signal1.h.
|
@ -1,94 +0,0 @@
|
||||
const char __LIBF77_VERSION__[] = "@(#) LIBF77 VERSION 20000929\n";
|
||||
extern const char __LIBI77_VERSION__[];
|
||||
extern const char __LIBU77_VERSION__[];
|
||||
|
||||
/*
|
||||
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.
|
||||
2 May 1999: getenv_.c: omit environ in favor of getenv().
|
||||
c_cos.c, c_exp.c, c_sin.c, d_cnjg.c, r_cnjg.c,
|
||||
z_cos.c, z_exp.c, z_log.c, z_sin.c: cope fully with
|
||||
overlapping arguments caused by equivalence.
|
||||
3 May 1999: "invisible" tweaks to omit compiler warnings in
|
||||
abort_.c, ef1asc_.c, s_rnge.c, s_stop.c.
|
||||
7 Sept. 1999: [cz]_div.c: arrange for compilation under
|
||||
-DIEEE_COMPLEX_DIVIDE to make these routines
|
||||
avoid calling sig_die when the denominator
|
||||
vanishes; instead, they return pairs of NaNs
|
||||
or Infinities, depending whether the numerator
|
||||
also vanishes or not. VERSION not changed.
|
||||
15 Nov. 1999: s_rnge.c: add casts for the case of
|
||||
sizeof(ftnint) == sizeof(int) < sizeof(long).
|
||||
10 March 2000: z_log.c: improve accuracy of Real(log(z)) for, e.g.,
|
||||
z near (+-1,eps) with |eps| small. For the old
|
||||
evaluation, compile with -DPre20000310 .
|
||||
20 April 2000: s_cat.c: tweak argument types to accord with
|
||||
calls by f2c when ftnint and ftnlen are of
|
||||
different sizes (different numbers of bits).
|
||||
4 July 2000: adjustments to permit compilation by C++ compilers;
|
||||
VERSION string remains unchanged. NOT APPLIED FOR G77.
|
||||
29 Sept. 2000: dtime_.c, etime_.c: use floating-point divide.
|
||||
dtime_.d, erf_.c, erfc_.c, etime.c: for use with
|
||||
"f2c -R", compile with -DREAL=float.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
void
|
||||
g77__fvers__ ()
|
||||
{
|
||||
fputs ("GNU Fortran library.\n", stderr);
|
||||
#if defined __GNUC__ && defined __VERSION__
|
||||
fprintf (stderr, "Compiled by GCC %s\n", __VERSION__);
|
||||
#endif
|
||||
fputs (__LIBF77_VERSION__, stderr);
|
||||
fputs (__LIBI77_VERSION__, stderr);
|
||||
fputs (__LIBU77_VERSION__, stderr);
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include "f2c.h"
|
||||
|
||||
extern void sig_die (char *, int);
|
||||
|
||||
int
|
||||
G77_abort_0 (void)
|
||||
{
|
||||
sig_die ("Fortran abort routine called", 1);
|
||||
return 0; /* not reached */
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern double f__cabs (double, double);
|
||||
|
||||
double
|
||||
c_abs (complex * z)
|
||||
{
|
||||
return (f__cabs (z->r, z->i));
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include "math.h"
|
||||
|
||||
void
|
||||
c_cos (complex * r, complex * z)
|
||||
{
|
||||
double zi = z->i, zr = z->r;
|
||||
r->r = cos (zr) * cosh (zi);
|
||||
r->i = -sin (zr) * sinh (zi);
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern void sig_die (char *, int);
|
||||
void
|
||||
c_div (complex * c, complex * a, complex * b)
|
||||
{
|
||||
double ratio, den;
|
||||
double abr, abi, cr;
|
||||
|
||||
if ((abr = b->r) < 0.)
|
||||
abr = -abr;
|
||||
if ((abi = b->i) < 0.)
|
||||
abi = -abi;
|
||||
if (abr <= abi)
|
||||
{
|
||||
if (abi == 0)
|
||||
{
|
||||
#ifdef IEEE_COMPLEX_DIVIDE
|
||||
float af, bf;
|
||||
af = bf = abr;
|
||||
if (a->i != 0 || a->r != 0)
|
||||
af = 1.;
|
||||
c->i = c->r = af / bf;
|
||||
return;
|
||||
#else
|
||||
sig_die ("complex division by zero", 1);
|
||||
#endif
|
||||
}
|
||||
ratio = (double) b->r / b->i;
|
||||
den = b->i * (1 + ratio * ratio);
|
||||
cr = (a->r * ratio + a->i) / den;
|
||||
c->i = (a->i * ratio - a->r) / den;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
ratio = (double) b->i / b->r;
|
||||
den = b->r * (1 + ratio * ratio);
|
||||
cr = (a->r + a->i * ratio) / den;
|
||||
c->i = (a->i - a->r * ratio) / den;
|
||||
}
|
||||
c->r = cr;
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include "math.h"
|
||||
|
||||
void
|
||||
c_exp (complex * r, complex * z)
|
||||
{
|
||||
double expx, zi = z->i;
|
||||
|
||||
expx = exp (z->r);
|
||||
r->r = expx * cos (zi);
|
||||
r->i = expx * sin (zi);
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include "math.h"
|
||||
extern double f__cabs (double, double);
|
||||
|
||||
void
|
||||
c_log (complex * r, complex * z)
|
||||
{
|
||||
double zi, zr;
|
||||
r->i = atan2 (zi = z->i, zr = z->r);
|
||||
r->r = log (f__cabs (zr, zi));
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include "math.h"
|
||||
|
||||
void
|
||||
c_sin (complex * r, complex * z)
|
||||
{
|
||||
double zi = z->i, zr = z->r;
|
||||
r->r = sin (zr) * cosh (zi);
|
||||
r->i = cos (zr) * sinh (zi);
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include "math.h"
|
||||
extern double f__cabs (double, double);
|
||||
|
||||
void
|
||||
c_sqrt (complex * r, complex * z)
|
||||
{
|
||||
double mag, t;
|
||||
double zi = z->i, zr = z->r;
|
||||
|
||||
if ((mag = f__cabs (zr, zi)) == 0.)
|
||||
r->r = r->i = 0.;
|
||||
else if (zr > 0)
|
||||
{
|
||||
r->r = t = sqrt (0.5 * (mag + zr));
|
||||
t = zi / t;
|
||||
r->i = 0.5 * t;
|
||||
}
|
||||
else
|
||||
{
|
||||
t = sqrt (0.5 * (mag - zr));
|
||||
if (zi < 0)
|
||||
t = -t;
|
||||
r->i = t;
|
||||
t = zi / t;
|
||||
r->r = 0.5 * t;
|
||||
}
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
f__cabs (double real, double imag)
|
||||
{
|
||||
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);
|
||||
}
|
@ -1,111 +0,0 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
# Copyright (C) 1995, 1997, 1998, 2001 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_PREREQ(2.13)
|
||||
AC_INIT(getarg_.c)
|
||||
|
||||
dnl Checks for programs.
|
||||
|
||||
dnl FIXME AC_PROG_CC wants CC to be able to link things, but it may
|
||||
dnl not be able to.
|
||||
define([AC_PROG_CC_WORKS],[])
|
||||
|
||||
# For g77 we'll set CC to point at the built gcc, but this will get it into
|
||||
# the makefiles
|
||||
AC_PROG_CC
|
||||
|
||||
LIBTOOL='$(SHELL) ../libtool'
|
||||
AC_SUBST(LIBTOOL)
|
||||
|
||||
test "$AR" || AR=ar
|
||||
AC_SUBST(AR)
|
||||
if test "$RANLIB"; then :
|
||||
AC_SUBST(RANLIB)
|
||||
else
|
||||
AC_PROG_RANLIB
|
||||
fi
|
||||
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
|
||||
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)
|
||||
|
||||
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
|
||||
|
||||
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))
|
||||
|
||||
AC_DEFINE(Skip_f2c_Undefs)
|
||||
AC_DEFINE(IEEE_COMPLEX_DIVIDE)
|
||||
|
||||
AC_OUTPUT(Makefile)
|
||||
|
||||
dnl Local Variables:
|
||||
dnl comment-start: "dnl "
|
||||
dnl comment-end: ""
|
||||
dnl comment-start-skip: "\\bdnl\\b\\s *"
|
||||
dnl End:
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
double
|
||||
d_abs (doublereal * x)
|
||||
{
|
||||
if (*x >= 0)
|
||||
return (*x);
|
||||
return (-*x);
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_acos (doublereal * x)
|
||||
{
|
||||
return (acos (*x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_asin (doublereal * x)
|
||||
{
|
||||
return (asin (*x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_atan (doublereal * x)
|
||||
{
|
||||
return (atan (*x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_atn2 (doublereal * x, doublereal * y)
|
||||
{
|
||||
return (atan2 (*x, *y));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
void
|
||||
d_cnjg (doublecomplex * r, doublecomplex * z)
|
||||
{
|
||||
doublereal zi = z->i;
|
||||
r->r = z->r;
|
||||
r->i = -zi;
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_cos (doublereal * x)
|
||||
{
|
||||
return (cos (*x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_cosh (doublereal * x)
|
||||
{
|
||||
return (cosh (*x));
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
double
|
||||
d_dim (doublereal * a, doublereal * b)
|
||||
{
|
||||
return (*a > *b ? *a - *b : 0);
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_exp (doublereal * x)
|
||||
{
|
||||
return (exp (*x));
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
double
|
||||
d_imag (doublecomplex * z)
|
||||
{
|
||||
return (z->i);
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_int (doublereal * x)
|
||||
{
|
||||
return ((*x > 0) ? floor (*x) : -floor (-*x));
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#define log10e 0.43429448190325182765
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_lg10 (doublereal * x)
|
||||
{
|
||||
return (log10e * log (*x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_log (doublereal * x)
|
||||
{
|
||||
return (log (*x));
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#ifdef IEEE_drem
|
||||
double drem (double, double);
|
||||
#else
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
#endif
|
||||
double
|
||||
d_mod (doublereal * x, doublereal * y)
|
||||
{
|
||||
#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
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_nint (doublereal * x)
|
||||
{
|
||||
return ((*x) >= 0 ? floor (*x + .5) : -floor (.5 - *x));
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
double
|
||||
d_prod (real * x, real * y)
|
||||
{
|
||||
return ((*x) * (*y));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
double
|
||||
d_sign (doublereal * a, doublereal * b)
|
||||
{
|
||||
double x;
|
||||
x = (*a >= 0 ? *a : -*a);
|
||||
return (*b >= 0 ? x : -x);
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_sin (doublereal * x)
|
||||
{
|
||||
return (sin (*x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_sinh (doublereal * x)
|
||||
{
|
||||
return (sinh (*x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_sqrt (doublereal * x)
|
||||
{
|
||||
return (sqrt (*x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_tan (doublereal * x)
|
||||
{
|
||||
return (tan (*x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
d_tanh (doublereal * x)
|
||||
{
|
||||
return (tanh (*x));
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern double erf (double);
|
||||
double
|
||||
G77_derf_0 (doublereal * x)
|
||||
{
|
||||
return (erf (*x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern double erfc (double);
|
||||
|
||||
double
|
||||
G77_derfc_0 (doublereal * x)
|
||||
{
|
||||
return (erfc (*x));
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
#include "time.h"
|
||||
|
||||
#ifdef MSDOS
|
||||
#undef USE_CLOCK
|
||||
#define USE_CLOCK
|
||||
#endif
|
||||
|
||||
#ifndef USE_CLOCK
|
||||
#define _INCLUDE_POSIX_SOURCE /* for HP-UX */
|
||||
#define _INCLUDE_XOPEN_SOURCE /* for HP-UX */
|
||||
#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
|
||||
dtime_ (float *tarray)
|
||||
{
|
||||
#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] = (double) (t.tms_utime - t0.tms_utime) / Hz;
|
||||
tarray[1] = (double) (t.tms_stime - t0.tms_stime) / Hz;
|
||||
t0 = t;
|
||||
return tarray[0] + tarray[1];
|
||||
#endif
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
/* 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) )
|
||||
|
||||
extern void s_copy (char *, char *, ftnlen, ftnlen);
|
||||
int
|
||||
G77_ef1asc_0 (ftnint * a, ftnlen * la, ftnint * b, ftnlen * lb)
|
||||
{
|
||||
s_copy ((char *) a, (char *) b, EVEN (*la), *lb);
|
||||
return 0; /* ignored return value */
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
/* EFL support routine to compare two character strings */
|
||||
|
||||
#include "f2c.h"
|
||||
|
||||
extern integer s_cmp (char *, char *, ftnlen, ftnlen);
|
||||
integer
|
||||
G77_ef1cmc_0 (ftnint * a, ftnlen * la, ftnint * b, ftnlen * lb)
|
||||
{
|
||||
return (s_cmp ((char *) a, (char *) b, *la, *lb));
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern double erf (double);
|
||||
double
|
||||
G77_erf_0 (real * x)
|
||||
{
|
||||
return (erf (*x));
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern double erfc (double);
|
||||
double
|
||||
G77_erfc_0 (real * x)
|
||||
{
|
||||
return (erfc (*x));
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
#include "time.h"
|
||||
|
||||
#ifdef MSDOS
|
||||
#undef USE_CLOCK
|
||||
#define USE_CLOCK
|
||||
#endif
|
||||
|
||||
#ifndef USE_CLOCK
|
||||
#define _INCLUDE_POSIX_SOURCE /* for HP-UX */
|
||||
#define _INCLUDE_XOPEN_SOURCE /* for HP-UX */
|
||||
#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
|
||||
etime_ (float *tarray)
|
||||
{
|
||||
#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] = (double) t.tms_utime / Hz)
|
||||
+ (tarray[1] = (double) t.tms_stime / Hz);
|
||||
#endif
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
/* 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
|
||||
#include <stdlib.h>
|
||||
extern void f_exit (void);
|
||||
|
||||
void
|
||||
G77_exit_0 (integer * rc)
|
||||
{
|
||||
#ifdef NO_ONEXIT
|
||||
f_exit ();
|
||||
#endif
|
||||
exit (*rc);
|
||||
}
|
@ -1,163 +0,0 @@
|
||||
/* 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
|
@ -1,25 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
/*
|
||||
* subroutine getarg(k, c)
|
||||
* returns the kth unix command argument in fortran character
|
||||
* variable argument c
|
||||
*/
|
||||
|
||||
void
|
||||
G77_getarg_0 (ftnint * n, register char *s, ftnlen ls)
|
||||
{
|
||||
extern int f__xargc;
|
||||
extern char **f__xargv;
|
||||
register char *t;
|
||||
register int i;
|
||||
|
||||
if (*n >= 0 && *n < f__xargc)
|
||||
t = f__xargv[*n];
|
||||
else
|
||||
t = "";
|
||||
for (i = 0; i < ls && *t != '\0'; ++i)
|
||||
*s++ = *t++;
|
||||
for (; i < ls; ++i)
|
||||
*s++ = ' ';
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
#include "f2c.h"
|
||||
#undef abs
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
extern char *F77_aloc (ftnlen, char *);
|
||||
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
void
|
||||
G77_getenv_0 (char *fname, char *value, ftnlen flen, ftnlen vlen)
|
||||
{
|
||||
char buf[256], *ep, *fp;
|
||||
integer i;
|
||||
|
||||
if (flen <= 0)
|
||||
goto add_blanks;
|
||||
for (i = 0; i < (integer) sizeof (buf); i++)
|
||||
{
|
||||
if (i == flen || (buf[i] = fname[i]) == ' ')
|
||||
{
|
||||
buf[i] = 0;
|
||||
ep = getenv (buf);
|
||||
goto have_ep;
|
||||
}
|
||||
}
|
||||
while (i < flen && fname[i] != ' ')
|
||||
i++;
|
||||
strncpy (fp = F77_aloc (i + 1, "getenv_"), fname, (int) i);
|
||||
fp[i] = 0;
|
||||
ep = getenv (fp);
|
||||
free (fp);
|
||||
have_ep:
|
||||
if (ep)
|
||||
while (*ep && vlen-- > 0)
|
||||
*value++ = *ep++;
|
||||
add_blanks:
|
||||
while (vlen-- > 0)
|
||||
*value++ = ' ';
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
shortint
|
||||
h_abs (shortint * x)
|
||||
{
|
||||
if (*x >= 0)
|
||||
return (*x);
|
||||
return (-*x);
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
shortint
|
||||
h_dim (shortint * a, shortint * b)
|
||||
{
|
||||
return (*a > *b ? *a - *b : 0);
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
shortint
|
||||
h_dnnt (doublereal * x)
|
||||
{
|
||||
return (shortint) (*x >= 0. ? floor (*x + .5) : -floor (.5 - *x));
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
shortint
|
||||
h_indx (char *a, char *b, ftnlen la, ftnlen lb)
|
||||
{
|
||||
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);
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
shortint
|
||||
h_len (char *s __attribute__ ((__unused__)), ftnlen n)
|
||||
{
|
||||
return (n);
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
shortint
|
||||
h_mod (short *a, short *b)
|
||||
{
|
||||
return (*a % *b);
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
shortint
|
||||
h_nint (real * x)
|
||||
{
|
||||
return (shortint) (*x >= 0 ? floor (*x + .5) : -floor (.5 - *x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
shortint
|
||||
h_sign (shortint * a, shortint * b)
|
||||
{
|
||||
shortint x;
|
||||
x = (*a >= 0 ? *a : -*a);
|
||||
return (*b >= 0 ? x : -x);
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern integer s_cmp (char *, char *, ftnlen, ftnlen);
|
||||
shortlogical
|
||||
hl_ge (char *a, char *b, ftnlen la, ftnlen lb)
|
||||
{
|
||||
return (s_cmp (a, b, la, lb) >= 0);
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern integer s_cmp (char *, char *, ftnlen, ftnlen);
|
||||
shortlogical
|
||||
hl_gt (char *a, char *b, ftnlen la, ftnlen lb)
|
||||
{
|
||||
return (s_cmp (a, b, la, lb) > 0);
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern integer s_cmp (char *, char *, ftnlen, ftnlen);
|
||||
shortlogical
|
||||
hl_le (char *a, char *b, ftnlen la, ftnlen lb)
|
||||
{
|
||||
return (s_cmp (a, b, la, lb) <= 0);
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern integer s_cmp (char *, char *, ftnlen, ftnlen);
|
||||
shortlogical
|
||||
hl_lt (char *a, char *b, ftnlen la, ftnlen lb)
|
||||
{
|
||||
return (s_cmp (a, b, la, lb) < 0);
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
integer
|
||||
i_abs (integer * x)
|
||||
{
|
||||
if (*x >= 0)
|
||||
return (*x);
|
||||
return (-*x);
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
integer
|
||||
i_dim (integer * a, integer * b)
|
||||
{
|
||||
return (*a > *b ? *a - *b : 0);
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
integer
|
||||
i_dnnt (doublereal * x)
|
||||
{
|
||||
return (integer) (*x >= 0. ? floor (*x + .5) : -floor (.5 - *x));
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
integer
|
||||
i_indx (char *a, char *b, ftnlen la, ftnlen lb)
|
||||
{
|
||||
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);
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
integer
|
||||
i_len (char *s __attribute__ ((__unused__)), ftnlen n)
|
||||
{
|
||||
return (n);
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
integer
|
||||
i_mod (integer * a, integer * b)
|
||||
{
|
||||
return (*a % *b);
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
integer
|
||||
i_nint (real * x)
|
||||
{
|
||||
return (integer) (*x >= 0 ? floor (*x + .5) : -floor (.5 - *x));
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
integer
|
||||
i_sign (integer * a, integer * b)
|
||||
{
|
||||
integer x;
|
||||
x = (*a >= 0 ? *a : -*a);
|
||||
return (*b >= 0 ? x : -x);
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
ftnint
|
||||
G77_iargc_0 (void)
|
||||
{
|
||||
extern int f__xargc;
|
||||
return (f__xargc - 1);
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern integer s_cmp (char *, char *, ftnlen, ftnlen);
|
||||
logical
|
||||
l_ge (char *a, char *b, ftnlen la, ftnlen lb)
|
||||
{
|
||||
return (s_cmp (a, b, la, lb) >= 0);
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern integer s_cmp (char *, char *, ftnlen, ftnlen);
|
||||
logical
|
||||
l_gt (char *a, char *b, ftnlen la, ftnlen lb)
|
||||
{
|
||||
return (s_cmp (a, b, la, lb) > 0);
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern integer s_cmp (char *, char *, ftnlen, ftnlen);
|
||||
logical
|
||||
l_le (char *a, char *b, ftnlen la, ftnlen lb)
|
||||
{
|
||||
return (s_cmp (a, b, la, lb) <= 0);
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern integer s_cmp (char *, char *, ftnlen, ftnlen);
|
||||
logical
|
||||
l_lt (char *a, char *b, ftnlen la, ftnlen lb)
|
||||
{
|
||||
return (s_cmp (a, b, la, lb) < 0);
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#ifndef LONGBITS
|
||||
#define LONGBITS 32
|
||||
#endif
|
||||
|
||||
integer
|
||||
lbit_bits (integer a, integer b, integer len)
|
||||
{
|
||||
/* 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
|
||||
lbit_cshift (integer a, integer b, integer len)
|
||||
{
|
||||
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))));
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
integer
|
||||
lbit_shift (integer a, integer b)
|
||||
{
|
||||
return b >= 0 ? a << b : (integer) ((uinteger) a >> -b);
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
/* STARTUP PROCEDURE FOR UNIX FORTRAN PROGRAMS */
|
||||
|
||||
#include <stdio.h>
|
||||
#include "signal1.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
extern void f_exit (void);
|
||||
#ifndef NO_ONEXIT
|
||||
#define ONEXIT atexit
|
||||
extern int atexit (void (*)(void));
|
||||
#endif
|
||||
|
||||
extern void f_init (void);
|
||||
extern int MAIN__ (void);
|
||||
extern void f_setarg (int, char **);
|
||||
extern void f_setsig (void);
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
f_setarg (argc, argv);
|
||||
f_setsig ();
|
||||
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. */
|
||||
}
|
@ -1,103 +0,0 @@
|
||||
.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
|
@ -1,16 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern void pow_zi (doublecomplex *, doublecomplex *, integer *);
|
||||
void
|
||||
pow_ci (complex * p, complex * a, integer * b) /* p = a**b */
|
||||
{
|
||||
doublecomplex p1, a1;
|
||||
|
||||
a1.r = a->r;
|
||||
a1.i = a->i;
|
||||
|
||||
pow_zi (&p1, &a1, b);
|
||||
|
||||
p->r = p1.r;
|
||||
p->i = p1.i;
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
#undef abs
|
||||
#include <math.h>
|
||||
double
|
||||
pow_dd (doublereal * ap, doublereal * bp)
|
||||
{
|
||||
return (pow (*ap, *bp));
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
double
|
||||
pow_di (doublereal * ap, integer * bp)
|
||||
{
|
||||
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);
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
shortint
|
||||
pow_hh (shortint * ap, shortint * bp)
|
||||
{
|
||||
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);
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
integer
|
||||
pow_ii (integer * ap, integer * bp)
|
||||
{
|
||||
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);
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
longint
|
||||
pow_qq (longint * ap, longint * bp)
|
||||
{
|
||||
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);
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
double
|
||||
pow_ri (real * ap, integer * bp)
|
||||
{
|
||||
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);
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
#include "f2c.h"
|
||||
|
||||
extern void z_div (doublecomplex *, doublecomplex *, doublecomplex *);
|
||||
void
|
||||
pow_zi (doublecomplex * p, doublecomplex * a, integer * b) /* p = a**b */
|
||||
{
|
||||
integer n;
|
||||
unsigned long u;
|
||||
double t;
|
||||
doublecomplex q, x;
|
||||
static doublecomplex one = { 1.0, 0.0 };
|
||||
|
||||
n = *b;
|
||||
q.r = 1;
|
||||
q.i = 0;
|
||||
|
||||
if (n == 0)
|
||||
goto done;
|
||||
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 = q.r * x.r - q.i * x.i;
|
||||
q.i = q.r * x.i + q.i * x.r;
|
||||
q.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;
|
||||
}
|
||||
done:
|
||||
p->i = q.i;
|
||||
p->r = q.r;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user