Generates mutually orthogonal Latin squares (I. Wakeling & R.W. Payne).

### Options

`PRINT` = string token |
Controls printed output (`design` , `squares` , `list` ); if unset in an interactive run `AGLATIN` will ask whether the design is to be printed, in a batch run the default is not to print anything |
---|---|

`ANALYSE` = string token |
Controls whether or not to analyse the design, and produce a skeleton analysis-of-variance table using `ANOVA` (`no` , `yes` ); default is to ask if this is unset in an interactive run, and not to analyse if it is unset in a batch run |

### Parameters

`NROWS` = scalars |
Specifies the number of rows (and columns) in each square |
---|---|

`NSQUARES` = scalars |
Number of squares to form (i.e. number of treatment factors to generate) |

`SEED` = scalars |
Seed to be used to randomize each design; a negative value implies no randomization |

`TREATMENTFACTORS` = pointers |
Pointer to identifiers for the treatment factors |

`ROWS` = factors |
Identifier for the row factor |

`COLUMNS` = factors |
Identifier for the column factor |

`MAXNSQUARES` = scalars |
Returns the maximum number of squares available with the specified number of rows and columns |

`STATEMENT` = texts |
Saves a command to recreate each design (useful if the design information has been specified in response to questions from `AGLATIN` ) |

### Description

`AGLATIN`

generates a set of orthogonal Latin squares, or a single square. It is easiest to use interactively. All the information required to generate the squares is then obtained by (clearly explained) questions. You need set the parameters only if you wish to anticipate some of the questions, or if you wish to use `AGLATIN`

in batch. If, however, you wish to recreate the same design later, the `STATEMENT`

parameter allows you to save a Genstat text structure containing a command specifying the same information.

The size of the squares (i.e. the number of rows and columns) can be specified by the `NROWS`

option, and the number of squares (i.e. the number of treatment factors to be generated) can be specified by the `NSQUARES`

option. The `MAXNSQUARES`

parameter can be used to ascertain how many squares are available. If this is set but `NSQUARES`

is not set, the procedure then stops. Otherwise, when `AGLATIN`

is being used interactively, if `NSQUARES`

is unset you will be asked how many squares you want.

The squares are represented as a row factor, a column factor and `NSQUARES`

treatment factors all of length `NROWS**2`

. The `ROWS`

and `COLUMNS`

parameters can supply identifiers for the row and column factors, so that they are accessible outside the procedure. The `TREATMENTFACTORS`

parameter can specify a pointer to supply identifiers for the treatment factors. For example, if there are two factors you could define their identifiers to be `A`

and `B`

by forming the pointer `Tf`

(say) with the statement

`POINTER [VALUES=A,B] Tf`

and then setting `TREATMENTFACTORS=Tf`

. Alternatively, and more succinctly, you could put `TREATMENTFACTORS=!p(A,B)`

, where `!p(A,B)`

is an unnamed pointer containing the required two identifiers.

The `SEED`

parameter allows you to specify a seed to randomize the design. In a batch run, this has a default of -1, to suppress randomization. If `SEED`

is unset in an interactive run, you will be asked to provide a seed (and again a negative value will leave the design unrandomized).

The `PRINT`

option controls whether `AGLATIN`

prints the design. The setting `design`

prints it as a square table of treatment factors tabulated by the row and column factors, `squares`

prints each treatment factor separately (again tabulated by rows and columns), and `list`

prints row, column and treatment factor values as a list. By default, if you are running Genstat in batch, the nothing is printed. If you do not set `PRINT`

when running interactively, `AGLATIN`

will ask what you want to print. Similarly the `ANALYSE`

option governs whether or not `AGLATIN`

produces a skeleton analysis-of-variance table (containing just source of variation, degrees of freedom and efficiency factors). Again `AGLATIN`

assumes that this is not required if `ANALYSE`

is unset in a batch run, and asks whether it is required if `ANALYSE`

is unset in an interactive run.

Options: `PRINT`

, `ANALYSE`

.

Parameters: `NROWS`

, `NSQUARES`

, `SEED`

, `TREATMENTFACTORS`

, `ROWS`

, `COLUMNS`

, `MAXNSQUARES`

, `STATEMENT`

.

### Method

If the order of squares required is prime or any integer power of a prime number, the approach is to call `GALOIS`

to obtain the multiplication table for the field GF[`NROWS`

] and then cyclically develop the columns from the multiplication table to give the squares.

If the parameter `NROWS`

is a composite number and, when decomposed into prime powers has a smallest prime power (*f* = *p ^{n}*) greater than or equal to 3, then it is possible to construct

*f*-1 orthogonal squares using the MacNeish-Mann method (Raghavarao 1971, p. 34). In the event that the smallest prime power is 2, it is possible to generate a single Latin square using the same approach. Essentially this process consists of embedding Galois fields one inside another. For each distinct prime factor the multiplication and addition tables from the corresponding fields are obtained by calling the procedure

`GALOIS`

. Note that while this method is general, it does not guarantee to find the maximum possible number of mutually orthogonal squares of any given order. For example, the following list details the number of squares generated for orders up to and including 40.Order Number of squares generated

12 2

15 2

20 3

21 2

24 2

28 3

33 2

35 4

39 2

40 4

For the orders 10, 14, 18 and 22, the procedure uses self-orthogonal squares (Franklin 1984) to give pairs of orthogonal Latin squares. The first rows of a square one order less than required are defined inside the procedure, these are developed by replacement of one of the broken diagonals with a new symbol and the addition of another row and column to produce a bordered cyclic Latin square. The second square in the pair is simply the transpose of the first.

### References

Franklin, M.F. (1984). Cyclic generation of self-orthogonal Latin squares. *Utilitas Mathematica*, 25, 135-146.

MacNeish, H.F. (1922). Euler’s squares. *Annals of Mathematics*, 23, 221-227

Mann, H.B. (1942). The construction of orthogonal Latin squares. *Annals of Mathematical Statistics*, 13, 418-423.

Raghavarao, D. (1971). *Constructions and Combinatorial Problems in Design of Experiments*. John Wiley, New York.

### See also

Procedures: `AGCROSSOVERLATIN`

, `AGSEMILATIN`

, `AGQLATIN`

, `GALOIS`

.

Commands for: Design of experiments, Analysis of variance.

### Example

CAPTION 'AGLATIN example','This generates a Graeco-Latin square of size 12.';\ STYLE=meta,plain AGLATIN [PRINT=design; ANALYSE=yes] 12; NSQUARES=2;\ TREATMENTFACTORS=!p(Latin,Graeco); ROWS=Rows; COLUMNS=Columns;\ SEED=-1