^ecUnlcuL ^iote 92o. 203

BOUMAC

A MACRO-PROGRAMMING SYSTEM

FOR SCIENTIFIC COMPUTATION

JOHN H. DEVENNEY AND JOHN J. SOPKA

U. S. DEPARTMENT OF COMMERCE

NATIONAL BUREAU OF STANDARDS
U. S. DEPARTMENT OF COMMERCE

Luther H. Hodges, Secretary

NATIONAL BUREAU OF STANDARDS

A. V. Astin, Director

THE NATIONAL BUREAU OF STANDARDS

Functions and Activities

The functions of the National Bureau of Standards include the development and maintenance of the national standards of measurement and the provision of means and methods for making measure

ments consistent with these standards; the determination of physical constants and properties of materials; the development of methods and instruments for testing materials, devices, and structures; advisory services to government agencies on scientific and technical problems; invention

and development of devices to serve special needs of the Government; and the development of standard practices, codes, and specifications, including assistance to industry, business and con- sumers in the development and acceptance of commercial standards and simplified trade practice

recommendations. The work includes basic and applied research, development, engineering, instru- mentation, testing, evaluation, calibration services, and various consultation and information services. Research projects are also performed for other government agencies when the work relates

to and supplements the basic program of the Bureau or when the Bureau's unique competence is required. The scope of activities is suggested by the listing of divisions and sections on the inside

of the back cover.

Publications

The results of the Bureau's research are published either in the Bureau's own series of publications or in the journals of professional and scientific societies. The Bureau itself publishes

three periodicals available from the Government Printing Office: The Journal of Research, published in four separate sections, presents complete scientific and technical papers; theTechnical

News Bulletin presents summary and preliminary reports on work in progress; and Central Radio

Propagation Laboratory Ionospheric Predictions provides data for determining the best frequencies

to use for radio communications throughout the world. There are also seven series of nonperiodical publications: Monographs, Applied Mathematics Series, Handbooks, Miscellaneous Publications, Technical Notes, Commercial Standards, and Simplified Practice Recommendations.

A complete listing of the Bureau's publications can be found in National Bureau of Standards

Circular 460, Publications of the National Bureau of Standards, 1901 to June 1947 ($1.25), and the Supplement to National Bureau of Standards Circular 460, July 1947 to June 1957 (SI .50), and Miscellaneous Publication 240, July 1957 to June 1960 (includes Titles of Papers Published in Outside Journals 1950 to 1959) ($2.25); available from the Superintendent of Documents, Government

Printing Office, Washington, D.C., 20402.
NATIONAL BUREAU OF STANDARDS

technical ^ote 203

Issued December 18, 1963

BOUMAC

A MACRO-PROGRAMMING SYSTEM

FOR SCIENTIFIC COMPOTATION

John H. Devenney and John J. Sopka

National Bureau of Standards

Boulder, Colorado

NBS Technical Notes are designed to supplement the Bureau's regular publications program. They provide a means for making available scientific data that are of transient or limited interest. Technical Notes may be

listed or referred to in the open literature.

For sale by the Superintendent of Documents, U. S. Government Printing Office Washington, D.C. 20402

Price 30*

CONTENTS

PAGE

ABSTRACT

1. INTRODUCTION

2. INSTRUCTIONS 3

3

DATA FORMS 10

k. SYSTEM OUTPUT 13

5

RESTRICTIONS lh

6. APPENDIX LIST 1 15

7. APPENDIX 2 16

8. APPENDIX 3 2?

9. APPENDIX^ 29

10. APPENDIX 5 3^

11. REFERENCES 37

iii

BOUMAC

A Macro-Rrogramming System

for Scientific Computation

John H. Devenney

John J. Sopka

The BOUMAC computing system will allow a scientist

having no programming knowledge to perform the more

commonly used macro computations such as matrix operations,

solution of linear equations, numerical integrations, curve

fitting, statistical analyses, etc., using a high-speed

electronic computer. The scientist needs only to know

the various mathematical operations which are required to

obtain the information he wants from the data and to learn

to use a simple code with which to specify these mathematical operations

1. IMRODUCTION

The purpose of this system is to allow a scientist having no programming knowledge to perform one, or a sequence, of standard

mathematical operations on sets of data using a high speed electronic

computer. This system is designed to eliminate the task of programming the computer and hence eliminate the necessity of the

scientist to learn computer programming.

As an example, with two lines of simple instructions, the user

can solve a set of simultaneous equations (solve the matrix equation

Ax = b) and then multiply the solution vector x by the original

matrix A to obtain the original constant vector b as a check. Or

with one instruction, he could multiply the original matrix by the

inverse matrix to obtain the identity matrix. In short, with a very

few macro- instructions, the user can perform a number of macroscopic

mathematical and statistical operations, provided the operations are specified in Appendix List 1 of this paper.

In general, this macro-system, called BOUMAC, is an attempt to

use a canonical format for the more commonly used macro computations

such as matrix addition, multiplication, inversion, solution of
linear equations, eigenvalue calculations, etc. It is expected to

include numerical integrations, determination of means and standard

deviations, linear or multilinear and polynomial least squares

fitting, and others to be added. E^ch such macro-computation re- quires a single one line instruction written "by the user and

followed "by the data. Instructions and Data are written ("by the

user) in a standard format on BOTJMAC Instruction and Data Forms, as described later.

The user need only take his completed Instruction and Data

sheets to the computer facility for processing. Key punching of

standard BOUMAC Instruction and Data cards and assembly of the deck

will be handled by computer facility personnel. The program can then

be run and results submitted to the user in standard output format.

If desired, the BOTJMAC cards may be taken by the user for future

direct use, thus eliminating re-keypunching.

BOUMAC was written to operate with the IBM 7090/709O FORTRAN

System in use at the National Bureau of Standards, Boulder laboratories, Boulder, Colorado. This FORTRAN system consists of a monitor, the FORTRAN compiler, a symbolic machine language assembly

program called FAP, and is essentially the distributed IBM system.

Necessary control cards (instructions) for BOUMAC are described in

Appendix k. It is hoped that installations with the same IBM

system can employ the BOUMAC computing system with little modification

of control instructions. Installations that do not have this system

will have greater difficulty using BOUMAC, but perhaps the idea of

this type of macro system will be of value.
2 . INSTRUCTIONS

The general format of the Instruction Form is shown in figure 1.

The first two lines are merely control information, and the user

need he concerned with only three portions . At the Boulder Laboratories,

the XXXXX in line one is the project number to be charged and must be

inserted by the user. Also, the user T s telephone extension can be

inserted in columns k2-k-5 • Columns 50-72 are reserved for the user's

name. The second line, columns 8 through 72, is for comments. The

user may write any desired information up to 65 characters (including

spaces), which will in turn be printed on his output.

The type of operation desired is named in columns 8 through 13

of lines 3A> etc., using the exact name given in Appendix List 1.

Starting in column l6 of each such line will be what we shall refer

to as an argument string. The argument string will contain names of

data (ARRAYS) to be operated on and the amount of information to be

processed. The last item of each argument string is a FLAG, which

will be described shortly. The last line with the word "END" in

columns 8-10 can be disregarded by the user as may any information in

columns 73-80 of all lines

The user is cautioned that all information written on the instruction forms should be printed clearly and legibly to eliminate the

chance of errors in processing.

At the Boulder Laboratories, National Bureau of Standards, the

following conventions are adopted:

The letter is written

The number is written (J) The letter I is written I

The number 1 is written | The letter Z is written 2

The number 2 is written 2
B" 15"

BOUMAC INSTRUCTION — FOEM — 52 IP7 50" 73 * D(XXXXX,

COMMENTS

OPER1

OPER3

BOUMAC, JHD, P, 1, 1^) EXT SSS NAME

ARRAY1, Nl, ARRAY2 , N2 , FLAG

AERAY3 , N3 , ARRAYS , N4, FLAG

MACRl^W

OPERN

END

ARRAYN,NN,FLAG

MACROEND

Figure 1
As an example, suppose it is desired to solve a set of simultaneous equations, i.e., solve the matrix equation Ax = b where A is a non- singular n x n matrix and Ms a constant vector of n elements. The

required Instruction Form is shown in figure 2.

In this example, line 1 carries the Project Number 79000* Line 2

is the comment, line 3 is the instruction in which

SIMEQU is the operation to he performed,

ALPHA is the name of the matrix,

N is the order of the matrix,

BETA is the name of the constant vector,

FLAG is either the integral number or 1.

Each item in the argument string must be separated by

a comma. No punctuation should follow the flag.

Notice that "ALPHA" and "BETA" are names of the information to he

processed and may be written as any combination of 1 through 6

characters. "A" and "B" could just as well have been used. "N"

is an integral number. If the matrix had had dimensions 20 x 20,

then 20 would be written after the name "ALPHA". "FLAG" is an output

option.

It is also possible to chain together a sequence of such operations on the same data. Intermediate results in a sequence of

operations often need not be printed at the end of each operation.

If f= 0, printing is not suppressed

FLAG J

I = 1, printing is suppressed

Assume we wish to multiply matrices A and B together, i.e., A x B = C.

The dimensions of A are 5x8; B is 8x5; C is 5 x 5. Then, suppose

we wanted to add matrix C to matrix D, i.e., C + D = E, suppress

print-out, and, finally, obtain the inverse of matrix E. The required

Instruction Form is shown in figure 3 • Line 1 of figure 3 carries

Project Number 79^46 and the Programmer's Name and Extension. A

description of the Instructions is as follows:
Instruction 1.

MATMPY is the operation of matrix multiplication.

A and B are the names of the matrices to "be multiplied.

C is the name of the product matrix.

5 is the number of rows of the A matrix (equals the number of rows of

the C matrix)

.

8 is the number of rows of the B matrix (equals the number of columns

of the A matrix).

5 is the number of rows of the C matrix (equals the number of columns

of the B matrix).

(J) is to print out results

.

Instruction 2 . MATADD is the operation of matrix addition.

C,D, and E are the names of the matrices.

5 is the row-column dimension of the matrices.

1 is to suppress print-out.

Instruction 3 « INVERT is the operation of matrix inversion.

E is the name of the matrix to be inverted.

5 is the order (dimension) of the matrix.

<P is to print out results

.

A word of caution at this point. Many mathematical routines

destroy the original information during processing. For instance,

in the INVERT Instruction of the preceeding example, the original

matrix E is destroyed during the matrix inversion process. Hence,

if the matrix is to be used again in other Instructions, it must "be preserved before using the INVERT Instruction. The system provides

this function with the Instruction shown in figure k.
Where

SAVE is the operation to preserve information , AR1 is the name of the information to "be preserved.

N is the number of rows of the array (N = 1 if the array is one dimensioned).

M is the number of columns of the array.

AR2 is the name of the preserved information

Again, note that AR1 and AE2 are merely names and may "be any combination of 1-6 alphanumeric characters . In the example above, SAVE E,

5, F, 5> k inserted between MATADD and INVERT would preserve matrix

E as matrix F and print F.

A complete description of the available Instructions appears

in Appendix 2. The write-up for each routine that destroys original

information will indicate which information is destroyed.
BOUMAC INSTRUCTION FORM

1 8 16 42 47 50 73 * I D(79000, BOUMAC, JED,P,1,1<|)) EXT SSS NAME

THIS IS A SAMPLE BOUMAC INSTRUCTION MACR1(|)H

SIMEQU ALPHA, N, BETA, FLAG

END MACROEND

Figure 2

BOUMAC INSTRUCTION FORM

- 1 8 16 ' 42 47 50 73 * I D(79646, BOUMAC, JHD, ?,!,!$) EXT SSS JOHN DOE

ANOTHER BOUMAC EXAMPLE MA.CPO.iW

MATMPY A,5,B,8,C,5,J

MATADD C,5-,D,5,E,1

INVERT E,5,t

END MACROEND

Figure 3

8
BOUMAC INSTRUCTION FORM

1 6 16 73

SAVE AR1,N,AR2,M,FLAG

Figure 4

BOUMAC DATA FORM

1 7 11 21 31 41 51 61 71

# DATA

Figure 5

BOUMAC DATA FORM

1 7 11 21 31 4i 51 6i 71

# DATA

1. l. -1. 2. 2. 3- -2. l.

4. 2. 3- 4>. -3- 2. 4. 3-

3. -5- 6. J>.

Figure 6
3. DATA FOEMS

The general format of the Data Form is shown in figure 5 • The

first line will contain an asterisk in Column 1 and the word "DATA"

in Columns 7-10* This is a control signal to the system, and the

user need not he concerned with it. The user should start recording

data on line 2. There can he up to and including eight pieces of

data on each lineywith a width of ten columns per piece of data. The

data can he written anywhere within the ten columns . The decimal

point must clearly he indicated (it will require one column).

The reader who is familiar with FORTRAN is referred to Appendix

3 for a disucssion of data input format which allows even greater

flexibility than described here.

Again the user is cautioned that all information written on the

data forms must be printed clearly and legibly.

All data (for 2 dimensional arrays) must be written in a continuous row-sequence on the data forms,with each new array of data

starting on a new line, e.g., inAxB = C, data in A and B must

start new lines. As an illustrative example, suppose we wish to

solve a set of simultaneous equations with k equations and h unknowns.

-1

-2

3

\ h

1 1

2 3

k 2

-3 2

The data must be written row-wise in a continuous sequence. Figure 6

illustrates the data form.

If information required by the next Instruction to be processed

is not in the computer memory, the system will initiate input from

the cards punched by the Computer Facility personnel, the cards

being punched from the BOUMAC Data Forms. That is, if the name of an

10
array is encountered for the first time in an Instruction, the data

for that particular array will he read in at that time. Hence, the

data must he written on the forms in the order it is to he processed.

To illustrate, suppose the Instruction sequence as shown in figure 7

is executed. The Instruction "SAVE" will store the array ALPHA at

GAMMA f since ALPHA is destroyed during execution of the "SIMEQU"

Instruction. There are l6 elements saved (a h x k matrix). The

"SIMEQU" Instruction will solve a k x 4 set of simultaneous equations

where ALPHA is the original matrix and BETA is the original constant

vector. When this Instruction is completed, the inverse matrix will

be located at ALPHA and the solution vector will he located at BETA.

The "MATMPY" Instruction will multiply the original matrix (GAMMA)

by its inverse (ALPHA) to obtain the identity matrix (DELTA) . The

read in of data for the ALPHA array is initiated by the SAVE Instruction since the name ALPHA has not been previously encountered,

and, by the same token, the data for BETA is read in by the "SIMEQU"

Instruction. Hence, the data must be written on the data forms in

that sequence.

11
BOUMAC INSTRUCTION FORM

1 8 16 I3__

SAVE

SIMEQU

MATMPY

ALPHA, k, GAMMA, k, FLAG

ALPHA, 4, BETA, FLAG

GAMMA, ^, ALPHA, k, DELTA, k, FLAG

___— -]

Figure 7

INVERSE MATRIX (PRINTED ROWWISE)

Rov

No.

1 1 x

l

2 X

2

3 X

3

k x

k

5 X

5

2 1 x

6

2 *7 3 x

8

k X

9

5 x

lO

3 1 x

ll

2 X

12 3 X

13

k x

lk 5 X

15

h 1 x

l6

2 X

17 3 x

l8

k X

19 5 x

20

5 1 x

21

2 X

22 3 X

23

k x

2h 5 X

25

Figure 8

12
k. SYSTEM OUTPUT

The first sheet of output will contain a list of the Instructions

written "by the user. The data output of each separate operation will

begin on a new page with a self-explanatory heading printed in the

center of the page. To conserve space and print-out time, information

will he printed across the page with ample information for proper

interpretation. For example, using the INVERT Instruction to invert

a 5 x 5 matrix will produce the output, as shown in figure 8, where

the x's are the elements of the inverse matrix and the integer values

indicate the row and column number.

13
5 . RESTRICTIONS

The memory of the computer can "be exceeded in two ways. One is

that the size of the information "being processed is too large (e.g.,

it would he impossible to invert a 200 x 200 matrix using only

core storage), and the other is using too many Instructions at one time which would cause the memory of the computer to become overfilled. When the memory is exceeded, the following message is

printed:

CORE STORAGE EXCEEDED

JOB FLUSHED

Ik
6. APPENDIX LIST 1

List of Available Instructions and Operation Code*

Solution of Simultaneous Equations

Matrix Inversion

Determinant Evaluation

Matrix Multiplication

Matrix Transposition

Matrix Addition

Matrix Subtraction

Scalar-Matrix Multiplication

Scalar-Matrix Division

Data Preservation

Variable- Input Format

Mean, Variance, Standard Deviation

Linear Correlation

Polynomial Root Finder

Multiple Regression

Auto-correlation

SLMEQU

INVERT

DETERM

MATMPY

MATRAN

MATADD

MATSUB

SCMMPY

SCMDIV

SAVE

READIN

STAT1

CORLAT

PLROOT

MULREG

AUTOCR

This Appendix List 1 will be continuously updated with the

addition of new macro- operat ions . Suggestions for such additions will

be appreciated.

* Refer to Appendix 2 for a detailed discussion of each Instruction.

15
7. APPENDIX 2

Available Operations and Instruction Description

SIMEQU - Solution of Simultaneous Equations

This Instruction solves the matrix equation Ax = b, where A is a real non-singular square coefficient matrix and b is a vector of

constant elements. A and b are destroyed during the operation.

SIMEQU

16

AIPHA , N, BETA, FLAG

73

where ALPHA is any name of the matrix A,

BETA is any name of the constant vector b^. N is the number of equations to be solved,

FLAG is the print out option.

NOTE: The inverse matrix A is located at ALPHA and the solution

vector x is located at BETA upon completion.

INVERT - Matrix Inversion

The Instruction inverts a real non-singular square matrix. The

matrix is destroyed during the inversion process

.

INVERT

16

GAMMA, N, FLAG

where GAMMA, is any name of the matrix to be inverted,

N is the order of the matrix f FLAG is the print out option

.

Note: the inverse matrix is located at GAMMA upon completion.

16
DETERM - Determinant Evaluation,

This Instruction calculates the determinant of a given real

matrix A. A is destroyed during the evaluation.

8

DETERM

16

AMATRX, N, DET, FLAG

73

where AMATRX is any. name of the given matrix

,

DET is any name of the determinant,

N is the order of the matrix,

FLAG is the print out option . Note: the inverse matrix is located at AMATRX and the determinant

is located at DET upon completion.

MATMPY - Matrix Multiplication

This Instruction multiplies two real matrices, i.e., A.B = C,

where A is an nxm matrix, B is mxl, and C is nxl.

where A,B,C are any names of the matrices,

N is the number of rows of the A matrix,

M is the number of rows of the B matrix,

L is the number of columns of the C matrix,

FLAG is the print out option.

The product matrix is located at C upon completion.

MATRAN - Matrix Transposition

This Instruction computes the transpose of a real matrix

A(i.e. A = B) with dimensions nxm.

8 16

MATRAN AJia B_1 M l FLAG

73

17
where A is any name of the matrix to be transposed,

B is any name of the transposed matrix

N is the number of rows of A

,

M is the number of columns of A , FLAG is the print out option.

The transposed matrix, A , is located at B upon completion.

MATADD - Matrix Addition

This Instruction adds two nxm real matrices , I.e., A + B = C

16

A,N,B,M,C,FLAG

73

where A and B are any names of the matrices to be added,

C is any name of the matrix sum

N is the number of rows of the matrices,

M is the number of columns of the matrices,

FLAG is the print- out option.

The sum is located at C-upon completion.

MATSUB - Matrix Subtraction

Given two real nxm matrices, A and B, this instruction subtracts

B from A, i.e., A - B = C.

8

MATSUB

16

A,N,B,M,C,FLAG

73

where A and B are any names of the matrices indicated in the equation

above.

C is any name of the matrix difference.

N is the number of rows of the matrices.

M is the number of columns of the matrices.

FLAG is the print out option . The difference is located at C upon completion.

18
SCMMFY - Scalar-Matrix Multiplication

This Instruction solves the equation B = kA,where A and B are real nxm matrices and k is a real scalar.

where A and B are any names of the matrices,

K is the scalar (written with the decimal point),

N is the number of rows of the matrices,

M is the number of columns of the matrices , FIAG is the print out option

The resultant matrix is located at B upon completion . SCMDIV - Scalar-Matrix Division

This Instruction solves the equation D = — E,where D and E are real nxm matrices and c is a real scalar.

16

where D and E are any names of the matrices,

C is the scalar (written with the decimal point),

N is the number of rows of the matrices,

M is the number of columns of the matrices,

FLAG is the print out option

The resultant matrix is located at D upon completion.

SAVE - Preservation of arrays of information

This instruction will take the information at AKRAY1 and store

it at ARBAY2 for future use. This instruction is useful when inverting

matrices, evaluating determinants, solving simultaneous equations, etc.

1 8 73

SAVE ARRAY1, N, ARRAY2 , M, FLAG

"-"—

19
where ARRAY1 is any name of the information to he saved,

ARRAY2 is any name where the preserved information is to

he located,

N is the number of rows in the array,

M is the number of columns in the array.

Note: N = 1 for one dimensional arrays.

READIN - Variable Input Format

See Appendix 3 for complete description of this Instruction. A

word of caution - this Instruction is only for use by people having

a good tinderstanding of FORTRAN programming.

STAT1 - Mean, Variance, Standard Deviation

This instruction computes the mean, variance, and standard

deviation of a given set of data.

8

STAT1

16

X, N

73

where X is any name of the data-,

N is the number of elements in the set of data,

formulas are used:

The following

n

Mean = X = Z X.

i=l

n

z (x

±-x)

2

Variance = S = —=—= n-1

Standard Deviation = S = Variance

20
CORLAT - Linear Correlation

This Instruction computes the simple linear regression and

correlation coefficients of two given sets of data.

8

COKLAT

16

X, N, Y

73

where X is any name of the independent variable,

N is the number of observations in the two sets,

Y is any name of the dependent variable.

The following formula are used: Z X.Y. - §

n

X. Z Y. 11 . -, l . , l 1=1 1=1 1=1

n

b = regression coefficient = n n

7X1 zx.- (z x.r . , 1 . , l' 1=1 1=1n

r = correlation coefficient =

n n n Z X.Y. - Z X. Z Y.

. n 11 . ., i . , l i=l i=l i=l n

n n Q n n _

[ ( Z 3C - (Z X.T) ( Z T. - (Z Y.r ] 1/2

i=l X i=l X i=l X i=l X n n

The instruction also computes a in the prediction equation

Y = a + bX from the equation a = Y - bX,vhere Y and X are the means

of the dependent and independent variable, respectively.

21
PLROOT - Polynomial Root Finder

This instruction finds the real and complex roots of a polynomial

of arbitrary degree with real coefficients.

8

PLROOT

16

AI,N,ROOTR, ROOTI, FLAG

73

where AI is any name of the array of coefficients. The coefficients must be ordered (on the data forms ) from the highest

degree to the lowest degree.

N is the degree of the polynomial .

.

ROOTR is any name of the array where the real parts of the

complex roots will be located.

ROOTI is any name of the array where the imaginary parts of

the complex roots will be located.

FLAG is the print out option

.

All arithmetic is performed in the complex mode. Therefore^ all

roots found have real and imaginary parts. Real roots will have

small imaginary parts in the order of seven decimal places less than

the real parts. The method of Mailer is used. See D. E. Muller,

"A Method for Solving Algebraic Equations Using an Automatic Computer,

in Mathematical Tables and other Aids to Computation, 1956, pages

208-215^

MULREG - Multiple Regression

This instruction incorporates all normal phases of statistical

regression analysis. The standard statistical coefficients, standard

errors, sums of squares, and averages are computed and printed.

Predictions and residual errors for each item in the data are computed

and printed.

22
The instruction also includes an optional feature of preparing a list of synthetic observations which are added to the list of observations used in fitting. The only requirement in setting up the

synthetic list is to set the independent variables at values at

which it is desired to test the variability of prediction. The

predicted value and the variance of individual prediction are computed for each synthetic observation in the set.

8 I?

MULREG X,N,M,MVP

where

X is any name of the data , N is the number of independent variables,

M is the number of observations per variable,

MVP is the number of synthetic observations used. MVP = if none is used.

The data are written on the data forms in the following manner.

The value of each independent variable per observation is written

on the data form in a row-wise sequence with the value of the dependent variable written last. For example, an equation with 3

independent variables and 5 observations would be written as shown

in figure 9> where the 1st subscript on the X's indicates the observation and the 2nd subscript indicates the variable. The Y's are the value of the dependent variable of each observation.

The data for the synthetic observations (if used) are written

on the data forms after the original data, and each observation set

must start on a new line. Hence, if we wish to compute

Y = A„ + A-X.. + ApX- + A_X_ for three synthetic observations of the

preceeding example, the data would appear after the original data

as shown in figure 10,where the X^s are the synthetic observations.

23
Information printed is identified by headings which are selfexplanatory except for the following abbreviations

DET = Determinant,

SSR = Unadjusted regression sum of squares,

SSE = Residual or error sum of squares,

ATSS = Total sum of squares adjusted for the mean,

ASSR = Regression sum of squares adjusted for the mean,

COR = Multiple correlation coefficient,

SDEV = Square root of residual variance,

RSDEV = Square root of variance of mean . Restrictions: A maximum of 500 observations with 2k or fewer independent variables may be used.

AUTOCR - Auto- correlation analysis

Given a series of values X, ,Xp, ... X , this instruction will

compute the serial correlation coefficients (auto- correlation) between successive terms, where the lag (k) goes from 0,1,2, ..., L.

where X is any name of the array of values,

N is the number of elements in the array,

L is the final lag value.

Information printed is identified by headings which are selfexplanatory except the column N-K. This is the number of pairs

entering into the correlation of lag K.

The only restriction imposed is that L be less than or equal

to 300.

2h
Reference

Kendall, M. G., The Advanced Theory of Statistics, Vo. II.

Ch. 30, Sec 12.

COV(X X ) r. = «!--*£ T-rr (VAR X.VAR X. . ) '

, n-k n-k n-k

where COV (X., X. ,. ) = -=j- 2 (X. X. . ) - -=— (S X.)(Z X. . ) J J+k n"k

j=l J J+k (n-k)

2

j=l J j=l J +k

n-k T n-k

VAH(X.) = =-=- E r - 5 ( Z X.)

J n-k

j=l J (n-k)

2

5=1 ^

1 n-k

x n-k

var(x. i1 )= =-=- z yr 5 ( s x. . ) j=l j+k (n-k) j=l °

and r = 1

r. = rn -k k

Appendix 2 will "be continuously updated with the addition of

new macro- operations. Suggestions for such additions will "be appreciated.

25
• BOUMAC DATA FORM

1 11 21 31 41 51 61 71

* DATA xu

X

12

X

13

Y

l

X

21

X

22

X

23

Y

2

X

31 ^2 X

33

Y

3 \l \2

X

^3 \

X

51

X

52

X

53

Y

5

Figure 9

BOUMAC DATA FORM

1 11 21 31 41 51 61 71

*DATA

X

ll

X

22

X

13

Y

l *21 X

22 X

23

Y

2

X

3l ^2 ^3 Y

3

X

4l X42 X

^3

Y

4

X

5l X

52

X

53

Y

5

4

yl ylxj

3

^21 ^2 *23

x

1

X

31 ' *32

yl

Figure 10

26
8. APPENDIX 3

For people who are familiar with FORTRAN programming

There is provided an optional method of data input which allows

more flexibility in format specification. This method uses a system

Instruction which will in turn generate instructions allowing a variable format. The general type of Instruction is shown in

Figure 11.

READIN is the input operation to be performed.

ARRAY is the name of the information to be read in.

N is the integral (base 1(f)) number of elements of information.

Using this Instruction requires that the first line written on

the data form before the data must be a recognizable 709/7090

FORTRAN II format. All eighty columns of the sheet can be used to

specify the format. Examples are (2613.I), (KL2.4, F10.6,3El6.8),

(3F9.2, 2Fl<t).3,El4.5), etc. Note that parentheses must enclose the

desired format. This method of input and the normal system method

may be used interchangeably, e.g., one array could be read in under

the standard system input (8FKp.li-) and the next array read in

under variable format or vice versa.

27
BOUMAC INSTRUCTION FORM

Figure 11

BOUMAC INSTRUCTION FORM

1 B~ 16 42 41 50" 73

# D(XXXXX,

THIS LINE

OPER1

0PER2

BOUMAC, JHD,P,1,1<|>) EXT SSS NAME

IS FOR COMMENTS BY THE USER

ARRAY!, Ml, AKRAY2 , N2 , FLAG

ARRAY3 , N3 , ARRAY4, M4, FLAG

MACR1

Figure 12

28
9. APPENDIX h

INSTRUCTIONS FOR PROCESSING BOUMAC INSTRUCTIONS

(Not for Users)

Introduction

The people using the BOUMAC system will bring two types of

forms to the Computer Facility scheduler for processing. This

processing consists of keypunching the information on cards and

assembly of the deck which will be run with the regular Fortran

stack. The procedure for the forms will now be described.

BOUMAC Instruction Forms

The general format of the Instruction Form is shown in figure 12.

All information on these sheets must be punched on 709 cards in the

columns indicated . After the cards are punched, the cards illustrated

in figure 13 (which can be gang-punched from originals ) must be

inserted immediately after the ID card.

If the user supplies more than one sheet to the scheduler, then

all of the indicated control cards need not be punched. The only

ones necessary are the first two lines of the first instruction sheet,

only one set of cards as shown in figure 13, and the "END" line on

the last instruction sheet.

BOUMAC Data Forms

The general format of the Data Form is shown in figure 14.

Here, all information written on the sheets can be punched on. plain

white cards or general data cards, whichever is easiest for keypunching. If more than one sheet is submitted by the user, only

the first "*DATA" card need be punched.

Deck Makeup

After completion of all keypunching, the deck is assembled for

processing as illustrated in figure 15

29
^—

-——

— ~^

1 7 8 16 50 73 * XEQ

* MOUNT MACRO SYSTEM TAPE ON B5 * PAUSE * FAP

UPDATE i*

Figure 13

BOUMAC DN.FA FORMS

1 7 11 21 31 41 51 61 71 * DATA

__

Figure ik

30
* NOTE: For the present, this system uses a Fortran "binary deck,

which must "be inserted just "before the "*DATA" card. In

the future, this "binary deck will be replaced "by a magnetic

tape file. After each job is processed, this "binary deck

must be removed from the deck. In the future, these

routines will be placed on the master tape file and the

scheduler will not have to be concerned with them. The

scheduler will have to fill out the white job submittal

card (necessary information can be obtained from ID card)

and place it at the front of the deck. Figure l6 indicates

this card.

31
DATA CASES

/

Z

* DATA

END MACROEND

ROTTMAO mSTRTJOTTON CARDS

A

E

/* COMMENTS CARD

/ UPDATE

MACRlW

10

FAP

* PAUSE

A MOUNT MACRO SYSTEM TAPE ON B5

A ID CARD

/ JOB STIHHZDTAL CARD

Figure 15

32
NAME

EXTENSION REMARKS

IS Compile and/or assemble

O Execute only

SPECIAL MAGNETIC TAPES USED

Logical

No. Dens Identification

Camp . Lab • Cat .No.

Output requires special

J-, attention. (Special

cards , paper, etc .

)

B5 High Macro System

Tape

C-288

Low

H

L

EXPECTED OUTPUT

g[ Printout

gj Binary Cards

Q BCD Cards

H

L

H

L

H

L

H

L

Figure l6

33
10. APPENDIX 5

"What Makes BOUMAC Tick"

The BOUMAC system is programmed for the IBM 7090, using "both

FORTRAN and FAP. The system is divided into two basic parts: the

subroutines that actually perform the various operations and the

part which sets up all necessary calling sequences to the subroutines.

Part 1 - The subroutines

Each subroutine is coded in FORTRAN. All two-dimensional arrays

have been written in terms of one dimensional arrays to allow

"packing" of data in storage. Also, whenever possible, all arrays

used "by a subroutine are placed in the argument list so, in essence,

they are dummy variables and need not explicitly be dimensioned. An

example will help clarify the situation. Consider the first three

statements of the FORTRAN subroutine used in solving simultaneous

equations

.

SUBROUTINE MATUW (A,N,B)

DIMENSION IPIVOT (lM), INDEXl (lW>

)

, INDEX2(lW),

PIVOT (l^), A(l), B(l).

COMMON IPIVOT, INDEXl, INDEX2, PIVOT.

In this example, the matrix A, the constant vector B, and the size of

the matrix N are in the argument list. Hence, A and B need only be

dimensioned with the subscript 1. The arrays IPIVOT, INDEXl, INDEX2,

and PIVOT are used internally by the subroutine and hence must be

dimensioned. Notice that they are placed in upper storage (COMMON)

above the starting location of the system. In this way, all data

transmitted to the subroutine will be sequentially located in storage.

Hence, we can make optimum use of the computer memory. The binary

deck of the Fortran subroutines is placed on the master tape and will

he called as needed. This deck could be inserted before the "DATA"

card and used in this manner.

3^
Fart 2 - The main program

As the name implies, the system utilizes the macro-operation

processor. The main program, consisting of FAP instructions, is

stored on the MACRO SYSTEM TAPE (magnetic) in the computer facilitytape storage area. The first location for storage starts at

66000 /qn. All elements in COMMON are stored above this location. If

this is not enough COMMON storage, the location can he lowered bychanging the LOCORG card in the main program. However, this will

necessitate either updating the BOUMAC system tape or changing the

FAP cards and rewriting the tape on the IBM 1^01 (or other similar

card-to-tape processor).

The main program begins with the FAP instruction START AXT J,l

and initializes tables. It also sets up the floating point trap

routine to indicate either an overflow or underflow occurred. The

program sets up three tables called NAME, LENGTH, and BEGIN. The

NAME table contains the BCD names of arrays usedj the LENGTH table

contains the integer number of elements in each array; and the BEGIN

table contains the starting address of the first element of each

array. As an example, suppose we referenced the array ALPHA which

consisted of twenty elements. Then, the three tables in memory

might appear as NAME LENGTH BEGIN

^52l^6256<|)6o M^mMM WWMt533lt

The system operates on this principle: the user inserts MACRO

Instructions (although he is not aware of this) at the appropriate

place in the program. The method will be explained shortly. As each

array is encountered, the program searches the NAME table to see if

it is there. If it isn't, the program places it in the table, sets

up necessary addresses, and continues with the processing of the

35
next array. If the name is found, then the other information is

obtained from the LENGTH and BEGIN Tables and utilized in the

processing. In either case, after the name has been found or placed

in the table, the necessary instructions are initiated to set up

calling sequences for the FORTRAN subroutines. This is accomplished

by the macro-generated sequence of instructions

.

As previously mentioned, the main program is on magnetic tape.

Each card is serialized in columns 73-80* The MACRO Instructions

are placed in the proper sequence by the UPDATE feature of the FAP

system. They will be placed after the J EQU l(p<{) card. The

serialization is used to make sure they are sequenced properly. The

FAP program is then assembled and executed.

Note that the J EQU 1$ card will allow for 1$ locations in

each table. Hence, l(J)(j) different arrays may be in storage at the

same time provided storage is not exceeded. If this is not sufficient, the size may be increased by changing this card. Again note

that there are two ways to change this card: by updating the tape

or re-writing it. In the same way, new instructions may be added

to the tape to allow for future expansion of the system.

36
11. REFERENCES

1. IBM 7090/709^ Programming Systems Manual — Fortran II

Programming — File N . 7090-20 Form C28-605U-3

2. IBM 709/7090 Programming Systems: FORTRAN Assembly Program(FAP)

Form C28-6235

37

THE NATIONAL BUREAU OF STANDARDS

The scope of activities of the National Bureau of Standards at its major laboratories in Washington, D.C.and

Boulder, Colorado, is suggested in the following listing of the divisions and sections engaged in technical work.

In general, each section carries out specialized research, development, and engineeringin the field indicated by

its title. A brief description of the activities, and of the resultant publications, appears on the inside of the

front cover.

WASHINGTON, DC.

Electricity. Resistance and Reactance. Electrochemistry. Electrical Instruments. Magnetic Measurements.

Dielectrics. High Voltage. Absolute Electrical Measurements.

Metrology. Photometry and Col orimetry. Refractometry. Photographic Research. Length. Engineering Metrology.

Mass and Volume.

Heat. Temperature Physics. Heat Measurements. Cryogenic Physics. Equation of Stale. Statistical Physics.

Radiation Physics. X-ray. Radioactivity. Radiation Theory. High Energy Radiation. Radiological Equipment.

Nucleonic Instrumentation. Neutron Physics.

Analytical and Inorganic Chemistry. Pure Substances. Spectrochemistry. Solution Chemistry. Standard Refer- ence Materials. Applied Analytical Research. Crystal Chemistry.

Mechanics. Sound. Pressure and Vacuum. Fluid Mechanics.. Engineering Mechanics. Rheology. Combustion

Controls. Polymers. Macromolecules: Synthesis and Structure. Polymer Chemistry. Polymer Physics. Polymer Characterization. Polymer Evaluation and Testing. Applied Polymer Standards and Research. Dental Research.

Metallurgy. Engineering Metallurgy. Metal Reactions. Metal Physics. Electrolysis and Metal Deposition.

Inorganic Solids. Engineering Ceramics. Glass. Solid State Chemistry. Crystal Growth. Physical Properties.

Crystallography.

Building Research. Structural Engineering. Fire Research. Mechanical Systems. Organic Building Materials. Codes and Safety Standards. Heat Transfer. Inorganic Building Materials. Metallic Building Materials. Applied Mathematics. Numerical Analysis. Computation. Statistical Engineering. Mathematical Physics. Operations Research. Data Processing Systems. Components and Techniques. Computer Technology. Measurements Automation.

Engineering Applications. Systems Anah

Atomic Physics. Spectroscopy. Infrared Spectroscopy. Far Ultraviolet Physics. Solid State Physics. Electron Physics. Atomic Physics. Pla*- troscopy. Instrumentation. Engineering Electrons iron Devices. Electronic Instrumentation. Mechanical Instru- ments. Basic Instrumentation. Physical Chemistry. Thermochemistry. Surface Chemistry. Organic Chemistry. Molecular Spectroscopy. Ele- mentary Processes. Mass Spectrometry. Photochemistry and Radiation Chemistry.

Office of Weights and Measures. BOULDKH, COLO.

CRYOGENIC ENGINEERING LABORATORY

Cryogenic Processes. Cryogenic Properties of Solids. Cryogenic Technical Services. Properties of Cryogenic

Fluids. CENTRAL RADIO PROPAGATION LABORATORY

Ionosphere Research and Propagation. Low Frequency and Very Low Frequency Research. Ionosphere Research. Prediction Services. Sun-Earth Relationships. Field Engineering. Radio Warning Services. Vertical Soundings Research.

Troposphere and Space Telecommunications. Data Reduction Instrumentation. Radio Noise. Tropospheric Measurements. Tropospheric Analysis. Spectrum I'til ization Research. Radio-Meteorology. Lower Atmosphere

Physi

Radio Systems. Applied Electromagnetic Theory. High Frequency and Very High Frequency Research. Fre- quency Utilization. Modulation Research. Antenna Research. Radiodetermination.

Upper Atmosphere and Space Physics. Upper Atmosphere and Plasma Physics. High Latitude Ionosphere

Physics. Ionosphere and Exosphere Scatter. Airglow and Aurora. Ionospheric Radio Astronomy.

RADIO STANDARDS LABORATORY

Radio Standards Physics. Frequency and Time Disseminations. Radio and Microwave Materials. Atomic Fre- quency and Time-Interval Standards. Radio Plasma. Microwave Physics.

Radio Standards Engineering. High Frequen. ical Standards. High Frequency Calibration Services. High

Frequency Impedance Standards. Microwave Calibration Services. Microwave Circuit Standards. Low Frequency

Calibration Servic Joint Institute for Laboratory Astrophysics -NBS Group (Univ. of Colo.).