Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
Get a full dump of the dictionary:
List of Names
- Language type:
M - Mathematical or Simulation
FORMAC is a dialect of FORTRAN with an
extensive set of extensions for symbolic
computation and expression manipulation.
It was designed and implemented in the
1960s to support scientific and
engineering computing on
As a kind of symbolic dialect of FORTRAN IV,
the original FORMAC had syntax and overall
program structure similar to FORTRAN.
Data types supported included all the
FORTRAN numeric types, plus rational
arrays, and expressions.
FORMAC programs could include subroutines
and functions, and could use other FORTRAN
facilities like common areas.
FORMAC was originally implemented as a
preprocessor on top of FORTRAN; the
formulae and symbolic function calls
were transformed into calls to a
symbolic manipulation library.
For I/O, FORMAC could take advantage of
all the usual FORTRAN facilities, and
could also print its symbolic expressions.
In the late 1960s,
IBM researchers created a similar
proprocessor for PL/I,
imaginatively named PL/I-FORMAC.
Unlike later symbolic math systems, FORMAC
supported creation of expressions but not
meta-expressions (rules). This is
indicative of its early status in the
evolution of symbolic computation, and
despite its comparative lack of features
it was influential on the field on its
immediate successors (e.g. Reduce, Macsyma).
FORMAC was used up until the early 1990s.
Jean Sammet et al, IBM, 1964.
- See Also:
FORMAC was the first general
language. There had
been other attempts to apply computers to
symbol manipulation, but prior to FORMAC
all of them were libraries of procedures
and functions that had to be assembled
in the context of a conventional language.
Even after FORMAC and its cousin PL/I-FORMAC
were dropped as official IBM products,
they continued to be enhanced and used by
members of IBM's SHARE user group.
The name stands for FORmula MAnipulation
- Sample code:
C FORMAC program to find the symbolic roots of some
C quadratic equations. By J. Sammet from the HOPL-II
C paper on the history of FORMAC, typos corrected.
DIMENSION CASE(3), X1(3), x2(3)
LET CASE(1) = X**2 + 2*X*(Y+1) + (Y+1)**2
LET CASE(2) = 2 * X**2 - 4*X
LET CASE(3) = 3*X**2 + K*(X+X**2+1) +4
DO 88 I = 1,N
LET RVEXPR = EXPAND CASE(I)
LET A = COEFF RVEXPR,X**2
LET B = COEFF RVEXPR,X
LET C = COEFF RVEXPR,X**0
LET DISCRM = EXPAND B**2 - 4*A*C
LET X1(I) = EXPAND (-B + DISCRM**(1/2))/(2*A)
LET X2(I) = EXPAND (-B - DISCRM**(1/2))/(2*A)
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is firstname.lastname@example.org
[Ziring MicroWeb Home]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.