| 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. |