High speed compilation of efficient object code
August 1965 - Vol. 8 No. 8
Features
A three-pass compiler with the following properties is briefly described: The last two passes scan an intermediate language produced by the preceding pass in essentially the reverse of the order in which it was generated, so that the first pass is the only one which has to read the relatively bulky problem-oriented input. The double scan, one in either direction, performed by the first two passes, allows the compiler to remove locally constant expressions and recursively calculable expressions from loops and to do the important part of common subexpression recognition. Optimization such as the effective use of index registers, although as important, is not discussed since the object code which would be most efficient is highly machine dependent. The discussion is in terms of a FORTRAN-like language, although the technique is applicable to most algebraic languages.
Symbolic derivatives without list processing, subroutines, or recursion
A routine has been developed which computes and prints out the symbolic derivative of an absolutely continuous elementary function of one or several variables. No use is made of list processing languages. The chain rule is applied and the result is edited to produce results as elegant and efficient as those obtained by hand computation. A subset may be imbedded in a formula translator to introduce a differentiation operator into an “algebraic” programming language.
Some techniques used in the ALCOR ILLINOIS 7090
An ALGOL compiler has been written by the ALCOR group for the IBM 7090. Some little known but significant techniques in compiler writing, together with organizational details of this compiler, are described. Timing estimates and an indication of compiler requirements are also given.
Some experiments in algebraic manipulation by computer
A set of subroutines to allow algebraic manipulations on the IBM 7094 computer has been written using a List Processor, SLIP.
A series of four problems of increasing difficulty were solved using these routines.
The use and implementation of two new FORTRAN format conversions are discussed. These format types give the FORTRAN programmer control of input/output specifications at execution time.
Nonlinear extrapolation and two-point boundary value problems
It is suggested that the convergence properties of the usual Picard successive approximation scheme may be improved through use of nonlinear extrapolation techniques. A numerical example is provided.
A method for storing strings is described which uses blocks of indefinite size, and is therefore completely dynamic. Its relation to similar schemes is discussed.
This note describes some FORTRAN subroutines to facilitate handling of tape files. They allow symbolic naming or information files, without violating the casual scientific programmer's idea of simplicity. Some comments on two years use of these subroutines are given.
Negative and zero subscripts in Fortran II programming for the IBM 1620
The requirement that subscripts be unsigned integers creates some inconvenience in FORTRAN programming for summarization of completed questionnaires in which the responses may be scaled beginning at zero.
Simulation of computer logic by Fortran arithmetic
During the preliminary logical design of the NEBULA computer for the Oregon State University Department of Mathematics, it was decided to simulate the logic equations on one of the computers available on campus. Thus most of the logic could be debugged prior to backwiring.
Remarks on simulation of Boolean functions
Recently M. Morris Mano presented a method for performing Boolean OR, AND and NOT operations by means of arithmetic and conditional transfer operations in a decimal computer lacking builtin logical instructions [1]. When A, B, C are variables whose defined value is 0 or 1 and a, b, c are the corresponding integer variables with values 0 or 1, his Boolean OR was defined by:
“The result of an OR operation of Boolean variables is the same as the arithmetic addition of the a, b, c integer variables after which the following test is made: (a) If the sum is equal to zero, the result is correct; (b) If the sum is larger than zero, the answer is 1.”
The self-judgment method of curve fitting
A computer-oriented method for processing and communicating numerical data is described. The Instrument Reliability Factors (IRF), which exactly define the limits of reliability of each measured item of information, are used to compute the Maximum Permitted Error (MPE) associated with each value of each ordinate. The Self-Judgment Principle (SJP) is used to discard wrong information and to compute mean values of the parameters and their MPE's in terms of the IRF. Data compatibility tests with any number of different equations can be made quickly. Otherwise intractable problems are easily solved, and the design of many experiments is greatly simplified.
The computational and mathematical techniques used to reduce bias in the SJP are discussed. Inadequacies in the statistical and graphical methods of curve fitting are noted.