Annotation of researchv10no/cmd/f2c/doc/st, revision 1.1

1.1     ! root        1: .EQ
        !             2: delim $$
        !             3: define f2c % "f\|2c" %
        !             4: define F2c % "F\^2c" %
        !             5: define libF77 % "libF77" %
        !             6: define libI77 % "libI77" %
        !             7: define LibF77 % "LibF77" %
        !             8: define LibI77 % "LibI77" %
        !             9: .EN
        !            10: .nr PS 24
        !            11: .nr VS 30
        !            12: .nr PO .5i
        !            13: .nr LL 7.5i
        !            14: .LP
        !            15: .ds CH "\s8\(hy \\n(PN \(hy\s0
        !            16: .ce
        !            17: $f2c$ (Stu Feldman, Mark Maimone, Norm Schryer)
        !            18: 
        !            19: .nf
        !            20: .ta .5i .8i 1.1i
        !            21: Convert Fortran 77 to C
        !            22: .sp . 5
        !            23:        \(**    Portably mix C and Fortran
        !            24:        \(**    Use Fortran source in C environments
        !            25: 
        !            26: .fi
        !            27: \s20From cs.purdue.edu!peb Mon Jan 29 15:35:20 EST 1990\s0
        !            28: .sp .5
        !            29: BTW, I think f2c has the potential to be the best idea since sliced bread.
        !            30: I have tons of Fortran code, but my collaborators use C, now
        !            31: we can stop arguing about what language to use and get some work done.
        !            32: .sp 1.5
        !            33: .nf
        !            34: Seek binary compatibility with VAX f77
        !            35:                \(bu    big help in testing
        !            36:                \(bu    helped find bugs in $f2c$, $lcc$, $nCC$
        !            37: 
        !            38: Useful test cases:
        !            39:                \(bu NBS tests
        !            40:                \(bu PORT3
        !            41: .bp
        !            42: Netlib's "execute f2c" taught us much
        !            43:                        (starting 19 Nov. 1989):
        !            44: 
        !            45: .ce
        !            46: \s22\f(CW{echo execute f2c; cat *.f} | mail netlib\fR\s0
        !            47: 
        !            48:                \(bu    bugs
        !            49:                \(bu    \f(CW-z\fR (no implicit \f(CWdouble complex\fR)
        !            50:                \(bu    longer names
        !            51:                \(bu    better error messages (as late as today)
        !            52:                \(bu    args on main
        !            53:                \(bu    \f(CWblock data\fR initializing vars not in \f(CWcommon\fR
        !            54:                \(bu    \f(CWdo ... enddo\fR
        !            55:                \(bu    \f(CW!\fR comments
        !            56:                \(bu    \f(CWnamelist\fR
        !            57: 
        !            58: 
        !            59:        \(bx COMMON
        !            60: 
        !            61:        \(bx constants (preserved until operated on)
        !            62: 
        !            63:        \(bx prototypes
        !            64: .bp
        !            65: Namelist example:
        !            66: .ft CW
        !            67: .sp p.5
        !            68:                integer m(8)
        !            69:                real x(10,10)
        !            70:                namelist /xx/ m, x
        !            71:                \&. . .
        !            72:                read(*,xx)
        !            73: 
        !            74: \fRcould read\fP
        !            75: 
        !            76:                &xx x(1,1) = 2,
        !            77:                        x(1:3,8:10:2) = 1,2,3,4,5,6
        !            78:                        m(7:8) = 9,10/
        !            79: 
        !            80: .ft R
        !            81: Recent lesson: many vendors expect non-8x syntax:
        !            82: 
        !            83: .EQ
        !            84: delim off
        !            85: .EN
        !            86: .ft CW
        !            87:                $xx x(1,1) = 2,
        !            88:                        x(1:3,8:10:2) = 1,2,3,4,5,6
        !            89:                        m(7:8) = 9,10 $end
        !            90: .ft R
        !            91: .EQ
        !            92: delim $$
        !            93: .EN
        !            94: .bp
        !            95: Prototypes:
        !            96: .sp .5
        !            97:                \f(CWf2c -P foo.f\fR
        !            98: .sp .5
        !            99: creates both \f(CWfoo.c\fR and \f(CWfoo.P\fR .
        !           100: 
        !           101: Examples of PORT3 prototypes:
        !           102: 
        !           103: .ft CW
        !           104:        extern C_f cdotc_(complex *ret_val,
        !           105:                        integer *n, complex *dx,
        !           106:                        integer *incx, complex *dy,
        !           107:                        integer *incy);
        !           108: 
        !           109:        extern C_f mullr_(complex *ret_val,
        !           110:                        C_fp f, complex *z1,
        !           111:                        complex *z2, complex *z3,
        !           112:                        real *epsz, real *epsf,
        !           113:                        integer *maxitr, integer *iter);
        !           114: 
        !           115: 
        !           116: f2c.h \fRcontains\f(CW typedef\fRs.
        !           117: .bp
        !           118: Special comments for \f(CWcommon\fR lengths (read by $f2c$):
        !           119: 
        !           120: .ft CW
        !           121:        /* comlen a0desp_ 4 */
        !           122:        /* comlen a10der_ 36 */
        !           123:        /* comlen a10dey_ 480 */
        !           124: .ft R
        !           125: 
        !           126: 
        !           127: Special comments for references:
        !           128: .ft CW
        !           129: .ps 16
        !           130:        /*:ref: odes1_ 10 11 200 4 3 4 4 4 208 4 210 8 8 */
        !           131:        /*:ref: l4ags_ 10 14 4 3 3 3 210 3 4 4 4 3 3 3 3 4 */
        !           132:        /* Rerunning f2c -P may change prototypes or declarations. */
        !           133: .ps 24
        !           134: .ft R
        !           135: 
        !           136: 
        !           137: Untyped \f(CWexternal\fRs
        !           138:                        \(=> need to update prototypes:
        !           139: 
        !           140: .EQ
        !           141: delim off
        !           142: .EN
        !           143: .ft CW
        !           144:        while :; do
        !           145:                        f2c -Ps f.[fP]
        !           146:                        case $? in 4) ;; *) break;; esac
        !           147:                        done
        !           148: .ft R
        !           149: 
        !           150: \(bx Several PORT3 bugs found.
        !           151: .bp
        !           152: Can't always infer types correctly:
        !           153: 
        !           154: .ft CW
        !           155:        subroutine grok(f,g,h)
        !           156:        external f, g, h
        !           157:        logical g
        !           158:        call foo(1,g)
        !           159:        call foo(2,f)
        !           160:        call zap(1,f)
        !           161:        call zap(2,h)
        !           162:        call zot(f(3))
        !           163:        end
        !           164: .ft R
        !           165: 
        !           166: Infer \f(CWf_\fR and \f(CWh_ to be \f(CWlogical\fR,
        !           167: then find \f(CWf_\fR must be \f(CWreal\fR.
        !           168: \f(CW-!it\fR turns such inferences off.
        !           169: .bp
        !           170: .ft CW
        !           171:        subroutine zap(n,f)
        !           172:        external f
        !           173:        if (n .le. 1) call zap1(f)
        !           174:        if (n .ge. 2) call zap2(f)
        !           175:        end
        !           176: .ft R
        !           177: 
        !           178: 
        !           179: 
        !           180: 
        !           181: 9 Jan. 1990 \- 30 Jan. 1990 (13:00):
        !           182: 
        !           183: 
        !           184:        210 requests from 184 people
        !           185:                for ``\f(CWall from f2c/src\fR''
        !           186:                        9 copies today
        !           187: 
        !           188: 
        !           189:        695 requests from 627 people
        !           190:                for ``\f(CWindex from f2c\fR''
        !           191:                        22 copies today

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.