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